@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Libre+Caslon+Display&display=swap');
@font-face{font-family:'Forma Lora';src:url('./assets/lora.ttf') format('truetype');font-display:swap}
@font-face{font-family:'Forma Nunito';src:url('./assets/nunito.ttf') format('truetype');font-display:swap}
@font-face{font-family:'Forma Kalam';src:url('./assets/kalam.ttf') format('truetype');font-display:swap}
@font-face{font-family:'Forma Patrick';src:url('./assets/patrickhand.ttf') format('truetype');font-display:swap}
@font-face{font-family:'Forma Handlee';src:url('./assets/handlee.ttf') format('truetype');font-display:swap}
@font-face{font-family:'Forma Dancing';src:url('./assets/dancingscript.ttf') format('truetype');font-display:swap}
.font-picker{position:relative;margin-bottom:15px}
.font-picker summary{list-style:none;display:flex;align-items:center;justify-content:space-between;padding:12px 13px;border:1px solid #dce1d5;border-radius:6px;background:#fff;cursor:pointer;font-size:17px;min-height:47px}
.font-picker summary::-webkit-details-marker{display:none}
.font-picker summary>span:last-child{font:14px Arial;color:#809273}
.font-picker[open] summary{border-color:#809673;border-radius:6px 6px 0 0}
.font-menu{position:absolute;top:100%;left:0;right:0;background:#fff;box-shadow:0 10px 24px #2b412721;border:1px solid #bccab2;border-radius:0 0 7px 7px;max-height:310px;overflow:auto;z-index:10;padding:5px}
.font-menu button{display:flex;width:100%;justify-content:space-between;align-items:center;text-align:left;padding:9px 10px;background:transparent;border-radius:5px}
.font-menu button:hover,.font-menu button[aria-pressed=true]{background:#eef3e8}
.font-menu button>span{font-size:20px;color:#354e35}
.font-menu i{display:block;font-style:normal;font-size:14px;color:#819474;margin-top:4px}
.font-menu small{font:8px 'DM Sans',sans-serif;color:#829077}
.artwork-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.artwork-card{border:1px solid #e1e5da;border-radius:7px;background:white;padding:6px;text-align:left;transition:border-color .2s,transform .2s,box-shadow .2s}
.artwork-card.selected{border-color:#718965;box-shadow:0 0 0 1px #718965}
.artwork-card:hover{transform:translateY(-2px);box-shadow:0 5px 12px #344e4212}
.artwork-card strong{display:block;font-size:9px;font-weight:500;margin:7px 2px 4px}
.artwork-card small{display:block;font-size:8px;color:#929b88;margin:0 2px 4px;line-height:1.5}
.art-thumb{height:104px;border-radius:4px;background-color:var(--cover);background-size:cover;background-position:center;display:grid;place-items:center}
.art-thumb span{background:#fffcf1e6;border:1px solid #d6dbc7;padding:9px 15px;font:17px Georgia;color:#59664a}
.art-meadow{background-size:85px}
.art-gingham{background-image:conic-gradient(var(--tab) 25%,var(--cover) 0 50%,#fafbf5 0 75%,var(--cover) 0);background-size:24px 24px}
.art-dots{background-image:radial-gradient(var(--accent) 1px,transparent 1px);background-size:12px 12px}
.font-status{height:18px;text-align:center;font-size:9px;color:#829177}
.workspace{position:relative}
@media(min-width:721px){.workspace{align-self:start;position:sticky;top:0;min-height:720px;height:min(960px,calc(100vh - 30px))}.preview-stage{min-height:420px!important}.studio{overflow:clip}}
@media(prefers-reduced-motion:reduce){.artwork-card:hover{transform:none}}
@keyframes arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes turn{to{transform:rotate(360deg)}}
@keyframes shimmer{from{background-position:180% 0}to{background-position:-80% 0}}
@keyframes settle{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes breathe{50%{box-shadow:0 0 0 4px #82977717}}
body:not(.app-loading) .intro{animation:arrive .65s both}
body:not(.app-loading) .studio{animation:arrive .75s .08s both}
.preset,.layout-card,.choice-row button{transition:transform .24s cubic-bezier(.2,.65,.3,1),box-shadow .24s,border-color .24s,background .24s}
.preset:hover,.layout-card:hover{transform:translateY(-3px);box-shadow:0 6px 16px #344e4210;border-color:#a6b69c}
.preset .mini-cover{transition:transform .4s cubic-bezier(.2,.65,.3,1),box-shadow .4s}
.preset:hover .mini-cover{transform:rotate(-4deg) translateY(-3px);box-shadow:5px 7px 9px #344e4225}
.primary{transition:transform .22s,box-shadow .22s,background .22s}
.primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 5px 12px #344e4220;background:#405e4e}
.primary:active:not(:disabled){transform:translateY(0)}
.text-button:hover{color:#6e8767}
nav b{transition:background .25s,box-shadow .25s,transform .25s}
nav button:hover b{transform:translateY(-2px);box-shadow:0 3px 7px #344e4212}
.live-dot{animation:breathe 3.5s ease-in-out infinite}
.view-switch button{transition:background .22s,box-shadow .22s,color .22s}
#paper svg [data-page] rect{transition:fill .22s}
#paper svg [data-page]:hover rect{fill:#7b906c1c}
#paper svg [data-page]:focus-visible rect{fill:#7b906c22;stroke:#647e56;stroke-width:1.5}
input,select{transition:border-color .2s,box-shadow .2s}
input:focus,select:focus{border-color:#8ba181;box-shadow:0 0 0 3px #8ba18115}
dialog[open]{animation:settle .3s cubic-bezier(.2,.65,.3,1)}
dialog[open]::backdrop{animation:arrive .22s}
.spinner{display:inline-block;width:14px;height:14px;border:1.5px solid currentColor;border-right-color:transparent;border-radius:50%;animation:turn .85s linear infinite;vertical-align:middle;flex-shrink:0}
.working{display:flex;align-items:center;justify-content:center;gap:10px;opacity:.85!important}
.paper-skeleton{aspect-ratio:612/792;background:linear-gradient(105deg,#e4e8dd 30%,#f5f7ef 48%,#e4e8dd 65%);background-size:230% 100%;animation:shimmer 1.8s ease-in-out infinite;display:flex;gap:10px;align-items:center;justify-content:center;color:#7d8e73;font-size:11px;border-radius:4px}
.progress-heading{display:flex;justify-content:space-between;font-size:9px;color:#7c8c70;margin:17px 0 9px}
#progressBar{height:5px;border-radius:10px;background:#e3e8db;overflow:hidden}
#progressFill{height:100%;width:0%;background:linear-gradient(90deg,#7c9572,#b9c8a8,#7c9572);background-size:200% 100%;border-radius:10px;transition:width .35s ease-out;animation:shimmer 2s linear infinite}
.complete #progressFill{animation:none;background:#6b865e}
.export-steps{display:flex;justify-content:space-between;font-size:8px;color:#94a087;margin-top:9px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.preset:hover,.layout-card:hover,.primary:hover,.preset:hover .mini-cover,nav button:hover b{transform:none!important}}
:root{--ink:#272e29;--muted:#85877f;--bg:#f8f7f3;--line:#e5e5dd;--green:#344e42}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px 'DM Sans',sans-serif}button,input,select{font:inherit}button,a,input,select{outline-offset:4px}button{cursor:pointer}button{border:1px solid transparent;transition:background .18s,transform .18s}button:hover{filter:brightness(.96)}button:active{transform:translateY(1px)}header{height:88px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 4.5%;gap:40px;background:#fbfaf7}.brand{font-size:35px;font-weight:600;text-decoration:none;color:var(--ink);letter-spacing:-2px}.brand span{font-size:30px;color:#6b8064;margin-left:3px}.header-note{font-size:10px;letter-spacing:2px;color:#898c83}.header-actions{margin-left:auto;display:flex;align-items:center;gap:22px}.header-actions>span{font-size:11px;color:var(--muted)}.primary{background:var(--green);color:white;border-radius:7px;padding:12px 18px;font-size:12px;font-weight:500}.primary span{margin-left:25px}.text-button{background:transparent;color:var(--ink);font-size:11px;padding:6px 0}main{max-width:1600px;margin:auto;padding:0 4.5%}.intro{display:flex;justify-content:space-between;align-items:center;padding:43px 0 32px}.eyebrow{font-size:9px;font-weight:650;letter-spacing:2px;display:flex;align-items:center;gap:8px}.green-dot,.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#829777}h1{font:62px 'Libre Caslon Display',Georgia,serif;letter-spacing:-1.7px;margin:12px 0 8px}h1 em{font-weight:400;color:#70836d}p{color:#85877f;font-size:12px;line-height:1.7}.intro p{margin:0}.intro-note{color:#7d8377;line-height:1.6;font:italic 18px Georgia;transform:rotate(-6deg);padding-right:35px;position:relative}.intro-note span{display:block;font:36px Georgia;margin-left:75px}.studio{display:grid;grid-template-columns:335px minmax(0,1fr);border:1px solid #dddfd6;border-radius:13px;overflow:hidden;background:white;min-height:720px;box-shadow:0 10px 28px #28352c04}aside{border-right:1px solid var(--line);display:flex;flex-direction:column;background:#fff}.panel-top{display:flex;align-items:center;justify-content:space-between;padding:21px 23px;border-bottom:1px solid var(--line)}.panel-top>span{font-size:9px;letter-spacing:1.6px;font-weight:600}.panel-top button{color:#92958c}nav{display:flex;padding:19px 17px 17px;border-bottom:1px solid var(--line);gap:6px}nav button{flex:1;background:transparent;padding:0;font-size:9px;color:#93968e}nav b{display:flex;border-radius:50%;border:1px solid #e4e5df;width:25px;height:25px;margin:0 auto 7px;align-items:center;justify-content:center;font-size:10px;font-weight:500}nav .active{color:#314b3c}nav .active b{background:#344e42;border-color:#344e42;color:white}#controls{padding:23px;flex:1}h2{font:30px 'Libre Caslon Display',Georgia;margin:0 0 7px}#controls>p{font-size:11px;margin:0 0 22px}.section-label{font-size:9px;letter-spacing:1.3px;font-weight:600;margin:23px 0 11px;display:block}.section-label:first-child{margin-top:0}.preset-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.preset{border:1px solid #e4e5df;padding:7px;background:white;border-radius:7px;text-align:left;position:relative}.preset.selected{border-color:#627963;box-shadow:0 0 0 1px #627963}.preset-art{height:77px;position:relative;border-radius:3px;display:flex;align-items:center;justify-content:center;overflow:hidden}.mini-cover{height:58px;width:43px;box-shadow:2px 3px 4px #0002;display:flex;align-items:center;justify-content:center;border-radius:1px;font:13px Georgia;position:relative}.mini-cover:before{content:'';position:absolute;inset:5px;border:1px solid currentColor;opacity:.3}.preset span{font-size:10px;display:block;margin:8px 2px 3px}.preset small{font-size:8px;color:#95988e;margin-left:2px}.check{position:absolute;right:10px;bottom:16px;font-size:10px!important;color:#4e6e51}.color-row{display:flex;gap:8px;align-items:center}.swatch{width:28px;height:28px;border-radius:50%;border:3px solid white;box-shadow:0 0 0 1px #ddd}.swatch.selected{box-shadow:0 0 0 1.5px #48634b}.palette-card{padding:13px;background:#f8f9f5;border-radius:6px;margin-top:19px;display:flex;justify-content:space-between;align-items:center}.palette-card span{font-size:10px}.palette-card small{display:block;color:#969b8e;font-size:9px;margin-top:3px}.palette-dots{display:flex}.palette-dots i{width:16px;height:16px;border:2px solid #f8f9f5;border-radius:50%;margin-left:-3px}.hint{background:#f7f5ee;border:1px solid #eeece3;border-radius:6px;padding:12px;font-size:10px;line-height:1.7;color:#888b7b;margin-top:19px}.panel-bottom{padding:18px 23px;display:flex;justify-content:space-between;border-top:1px solid var(--line)}.panel-bottom .primary{font-size:10px;padding:10px 13px}.workspace{background:#eeeee7;min-width:0;display:flex;flex-direction:column}.preview-top{display:flex;justify-content:space-between;padding:20px 25px;font-size:9px;letter-spacing:1.2px;align-items:center;color:#71796e}.live-dot{width:5px;height:5px;margin-right:6px}.preview-hint{letter-spacing:0;font-size:10px;color:#9b9e92;margin-left:15px}.history{display:flex;gap:10px;align-items:center;letter-spacing:0}.history button{background:transparent;color:#6d7667;padding:0;font-size:17px}.history>span:empty{height:13px;width:1px;background:#d5d8ce}.history button:disabled{opacity:.3}.preview-stage{flex:1;display:flex;align-items:center;justify-content:center;padding:20px 60px 32px;min-height:530px;overflow:auto;background-image:radial-gradient(#b8bdb12b .7px,transparent .7px);background-size:10px 10px}#paper{width:min(100%,390px);transition:width .2s;filter:drop-shadow(8px 12px 13px #29322522);flex-shrink:0}#paper svg{display:block;width:100%;height:auto;border-radius:3px}#paper svg [data-page]{cursor:pointer}#paper svg [data-page]:hover{opacity:.7}.preview-bottom{display:flex;justify-content:space-between;align-items:center;padding:8px 25px 18px}.view-switch{display:flex;background:#e3e5db;padding:3px;border-radius:6px;gap:2px}.view-switch button{background:transparent;color:#8a9082;font-size:10px;padding:7px 13px;border-radius:4px}.view-switch button.active{background:#fff;color:#354a38;box-shadow:0 1px 3px #0001}#pageCounter{font-size:9px;color:#92998b}.workspace-foot{border-top:1px solid #dddfd4;padding:15px 25px;display:flex;justify-content:space-between;color:#89917f;font-size:9px}.below{padding:28px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.below>span{font-size:9px;letter-spacing:1.6px;color:#909587}.below>div{display:flex;gap:55px}.below strong{font-size:10px;font-weight:400;color:#98a28c}.below strong span{color:#68745f;margin-left:12px}footer{display:flex;align-items:center;gap:20px;padding:22px 0}footer .brand{font-size:25px}footer .brand span{font-size:21px}footer>span{font-size:10px;color:#92988b}footer button{margin-left:auto;color:#92988b!important}label.field{display:block;font-size:10px;margin:15px 0 7px}.field input,.field select,select,input[type=text],input[type=number]{width:100%;border:1px solid #dedfd6;border-radius:5px;padding:10px;background:#fff;color:#424c3f;font-size:11px;margin-top:7px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choice-row{display:flex;gap:5px;flex-wrap:wrap}.choice-row button{flex:1;padding:10px 7px;border:1px solid #e0e3da;border-radius:5px;background:white;font-size:10px;color:#6f7769}.choice-row button.selected{border-color:#6e856b;background:#f0f4ec;color:#3f5e3d}.color-field{display:flex;justify-content:space-between;align-items:center;margin:12px 0;font-size:11px}.color-field input{width:29px;height:27px;border:0;background:none;padding:0;cursor:pointer}.toggle{display:flex;justify-content:space-between;align-items:center;font-size:11px;padding:13px 0;border-bottom:1px solid #f0f0ea}.toggle input{accent-color:#506c4c;width:16px;height:16px}.layout-card{display:block;text-align:left;width:100%;border:1px solid #e2e5dc;background:white;padding:12px;border-radius:5px;margin-bottom:7px;font-size:11px}.layout-card small{display:block;font-size:9px;color:#929a88;margin-top:5px}.layout-card.selected{border-color:#698463;background:#f5f8f1}.summary-row{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid #e5e8df;font-size:11px}.summary-row span{color:#929987}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:13px 22px;border-radius:7px;background:#304c3d;color:white;opacity:0;pointer-events:none;transition:opacity .2s;z-index:50;font-size:12px}#toast.show{opacity:1}dialog{max-width:460px;border:1px solid #dce1d6;border-radius:13px;padding:36px;background:#fbfcf7;color:var(--ink)}dialog::backdrop{background:#25322780;backdrop-filter:blur(5px)}dialog h2{font-size:37px;margin-top:18px}dialog .primary{width:100%;margin-top:18px}.close{position:absolute;right:16px;top:12px;font-size:25px;background:none;color:#7f8976}.compat{font-size:10px}#exportStatus{font-size:11px;color:#576d4c;margin-top:12px;line-height:1.6}button:disabled{cursor:default;opacity:.5}@media(min-width:1450px){.studio{grid-template-columns:365px minmax(0,1fr)}#paper{width:420px}.preview-stage{min-height:590px}}@media(max-width:1000px){.header-note,.header-actions>span,.intro-note,.preview-hint{display:none}.studio{grid-template-columns:300px minmax(0,1fr)}.preview-stage{padding:20px 25px}.workspace-foot span:last-child{display:none}.below>div{gap:20px}.below>span{display:none}.view-switch button{padding:7px}.preview-bottom{padding:12px}.preview-top{padding:18px 12px}}@media(max-width:720px){header{height:70px;padding:0 5%}.header-actions{gap:16px}.header-actions>.text-button{display:none}main{padding:0 5%}.intro{padding:30px 0 24px}h1{font-size:48px}.studio{display:flex;flex-direction:column}.workspace{order:-1}.preview-stage{min-height:350px;height:420px;padding:15px 45px}#paper{width:240px}.workspace-foot{display:none}aside{border-right:0;border-top:1px solid var(--line)}#controls{padding:22px}.preset-art{height:100px}.mini-cover{height:78px;width:58px}.below>div{width:100%;justify-content:space-between;gap:8px}.below strong{font-size:8px}.below strong span{margin-left:4px}footer>span{display:none}dialog{width:90%;padding:28px}nav{justify-content:space-around}#pageCounter{font-size:8px}.header-actions .primary{padding:10px 12px}.intro p{font-size:11px}}
@media(min-width:721px){.studio{height:860px;max-height:calc(100vh - 30px);overflow:hidden}aside{min-height:0}#controls{min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#c8d2bf transparent}.workspace{height:100%;min-height:0;position:relative;top:auto;align-self:stretch}.preview-stage{min-height:0!important}}

.site-terms{border-top:1px solid var(--line);padding:19px 0 26px;display:flex;gap:35px;align-items:flex-start;color:#7b8474}.site-terms>div{min-width:205px}.site-terms strong{font-weight:500}.site-terms>div strong{display:block;font-size:11px;color:#53634b}.site-terms>div span{display:block;margin-top:5px;font-size:9px;color:#92988b}.site-terms p{margin:0;font-size:10px;line-height:1.8;max-width:700px;color:#7b8474}.site-terms p strong{color:#53634b}@media(max-width:720px){.site-terms{display:block;padding-top:17px}.site-terms p{margin-top:12px;font-size:10px}}
