:root{--bg:#ede9e6;--bg-2:#ddd6d0;--paper:#f7f4f0;--ink:#5c4f4a;--ink-2:#7a6b65;--muted:#9a8e88;--line:#5c4f4a29;--line-2:#5c4f4a12;--accent:#c9996b;--accent-soft:#c9996b2e;--sage:#5c766d;--serif:"Instrument Serif", ui-serif, Georgia, serif;--sans:"Space Grotesk", ui-sans-serif, system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--hand:"Caveat", cursive}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;min-height:100vh}::selection{background:var(--accent);color:var(--paper)}.hidden{display:none!important}.grain:before{content:"";pointer-events:none;z-index:1;mix-blend-mode:multiply;opacity:.5;background-image:radial-gradient(#00000006 1px,#0000 1px),radial-gradient(#ffffff08 1px,#0000 1px);background-position:0 0,1px 2px;background-size:3px 3px,5px 5px;position:fixed;inset:0}.mono{font-family:var(--mono)}.serif{font-family:var(--serif)}.hand{font-family:var(--hand)}.intro{grid-template-rows:auto 1fr auto;padding:28px 40px;display:grid;position:fixed;inset:0}.topbar{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:center;font-size:11px;display:flex}.topbar .brand{color:var(--ink);font-weight:500}.brand-logo{vertical-align:middle;flex-shrink:0;width:24px;height:24px;margin-right:8px;display:inline-block}.topbar .dot{background:var(--sage);vertical-align:1px;border-radius:99px;width:6px;height:6px;margin-right:8px;display:inline-block}.intro-grid{grid-template-columns:1.15fr .85fr;align-items:center;gap:60px;min-height:0;display:grid}.intro-left h1{font-family:var(--serif);letter-spacing:-.02em;color:var(--ink);text-wrap:balance;margin:0 0 24px;font-size:clamp(56px,7.2vw,132px);font-weight:400;line-height:.95}.intro-left h1 em{color:var(--sage);font-style:normal}.intro-left h1 .ww{font-family:var(--hand);color:var(--sage);letter-spacing:0;font-size:.85em;font-style:normal;font-weight:500;display:inline-block;transform:translateY(.06em)rotate(-2deg)}.intro-left .lede{color:var(--ink-2);max-width:46ch;margin:0 0 36px;font-size:17px;line-height:1.5}.intro-left .lede b{color:var(--ink);font-weight:600}.step-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.lang-drop-toggle{appearance:none;background:var(--paper);border:1px solid var(--line);font:inherit;color:var(--ink);cursor:pointer;border-radius:999px;align-items:center;gap:10px;padding:12px 18px;font-size:13px;transition:border-color .15s;display:inline-flex}.lang-drop-toggle:hover{border-color:var(--ink)}.lang-drop-arrow{opacity:.7;font-size:11px}.ipad-note{font-family:var(--mono);color:var(--ink-2);letter-spacing:.02em;align-items:center;gap:10px;margin:18px 0 0;font-size:12px;display:flex}.ipad-note .dot-sage{background:var(--sage);border-radius:99px;width:7px;height:7px;display:inline-block;box-shadow:0 0 0 4px #5c766d2e}.upload-lang-row{font-family:var(--mono);letter-spacing:.04em;color:var(--muted);flex-wrap:wrap;align-items:center;gap:12px;margin-top:18px;font-size:11px;display:flex}.upload-lang-row .lang-select{padding:8px 32px 8px 14px;font-size:12px}.upload-lang-hint{color:var(--sage);font-family:var(--mono);font-size:11px}.btn{appearance:none;cursor:pointer;font:inherit;letter-spacing:.005em;-webkit-user-select:none;user-select:none;border:0;border-radius:999px;align-items:center;gap:10px;padding:14px 22px;font-size:14px;font-weight:500;transition:transform .15s,background .15s,color .15s,box-shadow .15s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:#3d3431}.btn-ghost{color:var(--ink);border:1px solid var(--line);background:0 0}.btn-ghost:hover{border-color:var(--ink)}.btn-accent{background:var(--accent);color:var(--paper)}.btn-sm{padding:10px 16px;font-size:13px}.btn .arrow{font-family:var(--mono);opacity:.8;font-size:13px}.btn .badge{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;background:#ffffff2e;border-radius:99px;padding:2px 7px;font-size:11px}.btn-ghost .badge{color:var(--muted);background:#0000000f}.btn-drop{display:inline-flex;position:relative}.btn-drop-menu{background:var(--paper);border:1px solid var(--line);z-index:100;border-radius:8px;min-width:100%;animation:.15s fadeIn;position:absolute;top:calc(100% + 8px);left:0;overflow:hidden;box-shadow:0 8px 28px #00000024}.btn-drop-menu button{width:100%;font:inherit;cursor:pointer;text-align:left;color:var(--ink);white-space:nowrap;background:0 0;border:0;align-items:center;gap:10px;padding:12px 16px;font-size:14px;font-weight:500;display:flex}.btn-drop-menu button:hover{background:var(--bg)}.btn-drop-menu button+button{border-top:1px solid var(--line)}.btn-drop-menu .badge{font-family:var(--mono);background:var(--bg-2);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;border-radius:99px;padding:2px 7px;font-size:10px}.steps{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:0;margin-top:48px;display:grid}.step{border-right:1px solid var(--line);padding:18px 20px 0 18px}.step:last-child{border-right:0}.step .n{font-family:var(--mono);color:var(--sage);letter-spacing:.08em;text-transform:uppercase;font-size:11px}.step h4{font-family:var(--serif);letter-spacing:-.005em;margin:6px 0;font-size:22px;font-weight:400}.step p{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.template-card{aspect-ratio:8.5/11;background:var(--paper);border-radius:2px;place-self:center;width:min(100%,460px);padding:30px 28px 28px;transition:transform .4s cubic-bezier(.2,.8,.2,1);position:relative;overflow:hidden;transform:rotate(-1.6deg);box-shadow:inset 0 1px #ffffffb3,0 1px 2px #0000000a,0 30px 60px -20px #5c4f4a40,0 12px 24px -12px #5c4f4a2e}.template-card:hover{transform:rotate(0)scale(1.01)}.tpl-head{border-bottom:1px solid var(--ink);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);justify-content:space-between;align-items:flex-end;margin-bottom:14px;padding-bottom:10px;font-size:9px;display:flex}.tpl-head .ttl{font-family:var(--serif);text-transform:none;letter-spacing:0;font-size:18px}.tpl-grid{grid-template-columns:repeat(8,1fr);gap:6px;display:grid}.tpl-cell{aspect-ratio:1;background:0 0;border:1px dashed #5c4f4a47;border-radius:2px;place-items:center;display:grid;position:relative}.tpl-cell .lbl{font-family:var(--mono);color:#5c4f4a73;font-size:8px;position:absolute;top:3px;left:5px}.tpl-cell .gly{font-family:var(--hand);color:var(--ink);font-size:42px;line-height:1;transform:translateY(2px)}.tpl-foot{font-family:var(--mono);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;margin-top:14px;font-size:8.5px;display:flex}.tape{background:#c9996b47;border:1px solid #c9996b73;width:90px;height:22px;position:absolute;box-shadow:0 1px 4px #0000000f}.tape.t1{top:-10px;left:30px;transform:rotate(-6deg)}.tape.t2{top:-10px;right:30px;transform:rotate(4deg)}.footer-meta{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding-top:18px;font-size:10.5px;display:flex}.scrim{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:50;background:#14120e8c;place-items:center;animation:.25s fadeIn;display:grid;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--paper);border-radius:6px;width:min(560px,92vw);padding:36px 36px 28px;position:relative;box-shadow:0 30px 80px #00000059}.modal h3{font-family:var(--serif);letter-spacing:-.01em;margin:0 0 6px;font-size:36px;font-weight:400}.modal p.sub{color:var(--muted);margin:0 0 22px;font-size:14px;line-height:1.5}.drop{border:1.5px dashed var(--line);text-align:center;background:var(--bg);cursor:pointer;border-radius:6px;padding:34px 22px;transition:border-color .2s,background .2s;display:block}.drop:hover,.drop.dragover{border-color:var(--ink);background:var(--bg-2)}body.body-dragover:after{content:"Drop file anywhere";border:3px dashed var(--accent);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);pointer-events:none;z-index:9999;background:#5c4f4a14;border-radius:12px;place-items:center;margin:12px;font-size:14px;display:grid;position:fixed;inset:0}.drop .ic{font-family:var(--serif);margin-bottom:8px;font-size:46px;line-height:1;display:block}.drop .t{font-size:14px;font-weight:500}.drop .h{font-family:var(--mono);color:var(--muted);letter-spacing:.04em;margin-top:6px;font-size:11px}.proc{padding:8px 4px}.proc .label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:14px;font-size:11px}.proc .bar{background:var(--bg-2);border-radius:99px;height:3px;margin-bottom:18px;overflow:hidden}.proc .bar i{background:var(--accent);width:0%;height:100%;transition:width .35s;display:block}.proc .step-list{color:var(--muted);font-size:13px;font-family:var(--mono);flex-direction:column;gap:8px;display:flex}.proc .step-list .ok{color:var(--ink)}.proc .step-list .ok:before{content:"✓ ";color:var(--sage);margin-right:4px}.proc .step-list .pending:before{content:"○ ";opacity:.5;margin-right:4px}.proc .step-list .active{color:var(--ink)}.proc .step-list .active:before{content:"▸ ";color:var(--accent);margin-right:4px}.x-close{cursor:pointer;width:30px;height:30px;color:var(--muted);background:0 0;border:0;border-radius:6px;font-size:18px;line-height:1;position:absolute;top:12px;right:12px}.x-close:hover{background:var(--bg);color:var(--ink)}.editor{grid-template-rows:auto 1fr auto;grid-template-columns:1fr;display:grid;position:fixed;inset:0}.ed-top{border-bottom:1px solid var(--line);background:var(--bg);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px;padding:18px 28px;display:flex}.ed-top .lhs{align-items:center;gap:18px;display:flex}.ed-top .crumb{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px}.ed-top .crumb .sep{opacity:.5;margin:0 10px}.ed-top .crumb .now{color:var(--sage);font-weight:500}.ed-top h2{font-family:var(--serif);letter-spacing:-.005em;align-items:baseline;gap:10px;margin:0;font-size:26px;font-weight:400;display:flex}.ed-top h2 em{color:var(--sage);font-style:normal}.ed-top h2 .meta{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:99px;padding:3px 8px;font-size:10px;font-style:normal}.meta-input{border:1px solid var(--line);background:var(--paper);font:inherit;color:var(--ink);border-radius:99px;outline:none;min-width:140px;padding:8px 12px;font-size:12px}.meta-input:focus{border-color:var(--ink)}.ed-main{grid-template-columns:1fr 360px;min-height:0;display:grid}.grid-pane{scrollbar-gutter:stable;padding:22px 28px 30px;overflow:auto}.grid-pane .gp-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.gp-title{font-family:var(--serif);letter-spacing:-.005em;margin:0;font-size:30px;font-weight:400}.gp-title em{color:var(--sage);font-style:normal}.gp-sub{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:3px;font-size:11px}.filter-tabs{background:var(--bg-2);border-radius:99px;gap:4px;padding:4px;display:flex}.filter-tabs button{appearance:none;font:inherit;cursor:pointer;font-family:var(--mono);letter-spacing:.04em;color:var(--muted);background:0 0;border:0;border-radius:99px;padding:6px 14px;font-size:11px}.filter-tabs button.on{background:var(--ink);color:var(--paper)}.glyph-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;display:grid}.gcell{aspect-ratio:4/5;background:var(--paper);border:1px solid var(--line);cursor:pointer;border-radius:4px;place-items:center;transition:border-color .15s,background .15s,transform .15s;display:grid;position:relative;overflow:hidden}.gcell:hover{border-color:var(--ink-2)}.gcell.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 8px 22px -10px #c9996b80;background:var(--paper)}.gcell .lbl{font-family:var(--mono);color:var(--muted);font-size:9px;position:absolute;top:5px;left:7px}.gcell .num{font-family:var(--mono);color:#5c4f4a66;font-size:9px;position:absolute;bottom:5px;right:7px}.gcell .editflag{background:var(--accent);border-radius:99px;width:6px;height:6px;position:absolute;top:5px;right:7px}.gcell canvas{width:88%;height:88%}.side{border-left:1px solid var(--line);background:var(--bg);flex-direction:column;min-height:0;display:flex;overflow:hidden}.side-tabs{border-bottom:1px solid var(--line);display:flex}.side-tabs button{appearance:none;font:inherit;cursor:pointer;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:0 0;border:0;flex:1;padding:14px 16px;font-size:11px;position:relative}.side-tabs button.on{color:var(--ink)}.side-tabs button.on:after{content:"";background:var(--accent);height:2px;position:absolute;bottom:-1px;left:14px;right:14px}.side-body{flex-direction:column;flex:1;gap:22px;padding:22px 22px 28px;display:flex;overflow:auto}.panel-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.panel-head .kicker{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:10px}.panel-head h3{font-family:var(--serif);letter-spacing:-.005em;margin:2px 0 0;font-size:28px;font-weight:400}.panel-head h3 em{color:var(--sage);font-style:normal}.panel-head-stack{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.panel-swatch{aspect-ratio:1.15;background:var(--paper);border:1px solid var(--line);border-radius:6px;place-items:center;width:100%;margin-bottom:4px;display:grid;position:relative;overflow:hidden}.panel-swatch canvas{max-width:80%;max-height:80%}.panel-swatch .corner{font-family:var(--mono);letter-spacing:.06em;color:var(--muted);text-transform:uppercase;cursor:default;font-size:10px;position:absolute}.panel-swatch .c-tl{top:10px;left:12px}.panel-swatch .c-tr{top:10px;right:12px}.panel-swatch .c-bl{bottom:10px;left:12px}.panel-swatch .c-br{bottom:10px;right:12px}.panel-swatch .c-tr.click,.panel-swatch .c-bl.click{cursor:pointer}.panel-swatch .c-tr.click:hover,.panel-swatch .c-bl.click:hover{color:var(--sage)}.ctrl{flex-direction:column;gap:6px;display:flex}.ctrl-h{font-family:var(--mono);letter-spacing:.04em;color:var(--ink-2);justify-content:space-between;align-items:baseline;font-size:11px;display:flex}.ctrl-h .v{color:var(--muted);font-variant-numeric:tabular-nums}.ctrl input[type=range]{appearance:none;cursor:pointer;background:0 0;width:100%;height:18px}.ctrl input[type=range]::-webkit-slider-runnable-track{background:var(--line);border-radius:99px;height:2px}.ctrl input[type=range]::-moz-range-track{background:var(--line);border-radius:99px;height:2px}.ctrl input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--ink);border:2px solid var(--paper);width:14px;height:14px;box-shadow:0 0 0 1px var(--ink);cursor:grab;border-radius:99px;margin-top:-6px}.ctrl input[type=range]::-moz-range-thumb{background:var(--ink);border:2px solid var(--paper);width:14px;height:14px;box-shadow:0 0 0 1px var(--ink);cursor:grab;border-radius:99px}.ctrl input[type=range].dirty::-webkit-slider-thumb{background:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ctrl input[type=range].dirty::-moz-range-thumb{background:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ctrl-pair{grid-template-columns:1fr 1fr;gap:14px;display:grid}.reset{appearance:none;font:inherit;cursor:pointer;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:left;background:0 0;border:0;padding:4px 0;font-size:10px}.reset:hover{color:var(--sage)}.divider{background:var(--line);height:1px;margin:2px 0}.sect-label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:baseline;margin-bottom:10px;font-size:10px;display:flex}.sect-label .pill{font-family:var(--mono);letter-spacing:.06em;background:var(--bg-2);color:var(--ink-2);text-transform:uppercase;border-radius:99px;padding:2px 7px;font-size:9px}.sect-label .pill.edited{background:var(--accent-soft);color:var(--accent)}.preview-wrap{border-top:1px solid var(--line);background:var(--paper);position:relative}.pv-meta{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);pointer-events:none;font-size:10px;position:absolute;top:12px;left:28px}.preview{grid-template-columns:1fr auto;align-items:end;gap:20px;padding:36px 28px 22px;display:grid}.pv-text{resize:none;width:100%;font-family:"CustomFontPreview", var(--hand);color:#000;letter-spacing:0;min-height:1em;caret-color:var(--sage);background:0 0;border:0;outline:0;padding:0;font-size:72px;line-height:1.18}.pv-side{flex-direction:column;align-items:flex-end;gap:14px;min-width:220px;display:flex}.pv-row{font-family:var(--mono);letter-spacing:.04em;color:var(--muted);align-items:center;gap:10px;font-size:11px;display:flex}.pv-row input[type=range]{appearance:none;cursor:pointer;background:0 0;width:140px;height:18px}.pv-row input[type=range]::-webkit-slider-runnable-track{background:var(--line);border-radius:99px;height:2px}.pv-row input[type=range]::-moz-range-track{background:var(--line);border-radius:99px;height:2px}.pv-row input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--sage);border:2px solid var(--paper);width:14px;height:14px;box-shadow:0 0 0 1px var(--sage);cursor:grab;border-radius:99px;margin-top:-6px}.pv-row input[type=range]::-moz-range-thumb{background:var(--sage);border:2px solid var(--paper);width:14px;height:14px;box-shadow:0 0 0 1px var(--sage);cursor:grab;border-radius:99px}.pv-row .num{color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;min-width:44px}.pv-presets{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.pv-presets button{appearance:none;border:1px solid var(--line);font:inherit;cursor:pointer;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:0 0;border-radius:99px;padding:5px 10px;font-size:10px}.pv-presets button:hover{border-color:var(--ink);color:var(--ink)}.pv-presets button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.kbd{font-family:var(--mono);background:var(--bg-2);color:var(--ink-2);border:1px solid var(--line);border-radius:4px;padding:2px 6px;font-size:10px}.pulse{background:var(--sage);border-radius:99px;width:7px;height:7px;animation:1.6s ease-in-out infinite pulse;display:inline-block}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.6)}}.toast{background:var(--ink);color:var(--paper);font-family:var(--mono);letter-spacing:.02em;z-index:200;border-radius:8px;align-items:center;gap:12px;max-width:min(520px,90vw);padding:14px 18px;font-size:13px;animation:.22s cubic-bezier(.2,.8,.2,1) toastIn;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)translateY(0);box-shadow:0 8px 32px #00000047}.toast.hidden{display:none!important}.toast.toast-error{background:#5c2a2a;border:1px solid #ff646440}.toast.toast-success{background:var(--sage)}.toast-icon{width:22px;height:22px;font-size:16px;font-weight:700;font-family:var(--sans);background:#ffffff2e;border-radius:99px;flex-shrink:0;place-items:center;display:grid}.toast-msg{flex:1;line-height:1.4}.toast-close{appearance:none;color:inherit;cursor:pointer;opacity:.6;background:0 0;border:0;flex-shrink:0;padding:0 2px;font-size:18px}.toast-close:hover{opacity:1}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(10px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.confirm-modal{max-width:400px}.assign-modal{max-width:320px}.assign-char-input{width:100%;font-family:var(--serif);text-align:center;border:2px solid var(--line);background:var(--paper);color:var(--ink);box-sizing:border-box;border-radius:6px;outline:none;padding:10px;font-size:52px}.assign-char-input:focus{border-color:var(--accent)}.assign-error{font-family:var(--mono);color:#c0392b;text-align:center;margin:-8px 0 0;font-size:11px}.assign-error.hidden{display:none}.btn-assign-char{appearance:none;border:1px solid var(--line);font:inherit;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:4px;align-self:flex-start;padding:3px 8px;font-size:10px}.btn-assign-char:hover{background:var(--bg);border-color:var(--ink-2);color:var(--ink)}.btn-assign-char.unassign{color:var(--muted);border-color:#0000;margin-top:2px}.btn-assign-char.unassign:hover{color:#c0392b;border-color:currentColor}.gcell.unassigned{background:var(--bg);border-style:dashed}.gcell.unassigned:hover{border-style:dashed}.gcell .char-lbl{font-family:var(--mono);color:#5c4f4a66;font-size:9px;position:absolute;bottom:5px;left:7px}.btn-start-over{appearance:none;font:inherit;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:6px 0;font-size:11px}.btn-start-over:hover{color:var(--ink)}.autocrop-modal{max-width:400px}.autocrop-fields{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px;display:grid}.autocrop-field{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);flex-direction:column;gap:8px;font-size:11px;display:flex}.autocrop-input-row{align-items:center;gap:6px;display:flex}.autocrop-field input[type=number]{border:1px solid var(--line);background:var(--bg);width:100%;font:inherit;font-family:var(--mono);color:var(--ink);border-radius:8px;outline:none;padding:9px 12px;font-size:14px}.autocrop-field input[type=number]:focus{border-color:var(--ink)}.autocrop-unit{font-family:var(--mono);color:var(--muted);flex-shrink:0;font-size:11px}.autocrop-warn{color:var(--ink-2);font-size:12px;line-height:1.5;font-family:var(--mono);background:#c9996b1f;border:1px solid #c9996b59;border-radius:6px;align-items:flex-start;gap:8px;margin-bottom:18px;padding:10px 12px;display:flex}.autocrop-warn span:first-child{color:var(--accent);flex-shrink:0}.error-modal{max-width:480px}.error-header{align-items:center;gap:12px;margin-bottom:14px;display:flex}.error-badge{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#f7c5c5;background:#5c2a2a;border-radius:99px;flex-shrink:0;padding:3px 9px;font-size:10px}.error-modal h3{font-family:var(--serif);letter-spacing:-.01em;margin:0;font-size:26px;font-weight:400}.error-detail{color:var(--ink-2);margin:0 0 20px;font-size:14px;line-height:1.6}.error-trace{font-family:var(--mono);margin:0 0 20px;font-size:11px}.error-trace summary{cursor:pointer;color:var(--muted);letter-spacing:.04em;margin-bottom:8px}.error-trace pre{background:var(--bg-2);color:var(--ink-2);white-space:pre-wrap;word-break:break-all;border-radius:4px;margin:0;padding:12px;line-height:1.5;overflow-x:auto}.confirm-msg{color:var(--ink);margin:0 0 24px;font-size:15px;line-height:1.5}.confirm-btns{justify-content:flex-end;gap:10px;display:flex}.scrim-small{z-index:9999}.small-screen-modal{text-align:center}.small-screen-modal .sub{margin-bottom:0}.small-screen-icon{opacity:.4;margin-bottom:18px;font-size:32px;line-height:1}@media (width<=980px){.intro{grid-template-rows:auto auto auto;height:auto;min-height:100dvh;position:relative;overflow:visible}.ed-main{grid-template-rows:1fr auto;grid-template-columns:1fr}.side{border-left:0;border-top:1px solid var(--line);max-height:46vh}.intro-grid{grid-template-columns:1fr}.template-card{display:none}}@media (width<=600px){.intro{padding:16px 20px}.steps{grid-template-columns:1fr;margin-top:32px}.step{border-right:0;border-bottom:1px solid var(--line);padding:14px 0}.step:last-child{border-bottom:0}.step-row{flex-direction:column;align-items:stretch}.step-row .btn-drop,.step-row>.btn{width:100%}.step-row .btn-drop-toggle,.step-row .btn-drop>.btn{justify-content:center;width:100%}.lang-drop-toggle{justify-content:space-between;width:100%}.ed-top{gap:10px;padding:10px 16px}.ed-top h2{display:none}.ed-top>div:last-child{flex-wrap:wrap;width:100%}.meta-input{flex:1;min-width:0}.grid-pane{padding:14px 16px 20px}.glyph-grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr))}.filter-tabs{border-radius:8px;flex-wrap:wrap}.filter-tabs button{padding:10px 12px}.side{max-height:50vh}.preview{grid-template-columns:1fr;gap:16px;padding:28px 16px 16px}.pv-side{align-items:flex-start;width:100%;min-width:0}.pv-presets{justify-content:flex-start}.pv-presets button{padding:10px 12px}#custom-preview{width:100%}.modal{padding:24px 20px 20px}.modal h3{font-size:28px}}
