:root{--ink: #142033;--ink-soft: #5a6b82;--paper: #fff;--canvas: #d5deeb;--stage: #c9d4e4;--header: #fff;--workshop: #eef3f9;--nav: #e4ebf4;--accent: #1e3a5f;--accent-deep: #142033;--accent-soft: #e4ebf5;--warm: #c2410c;--line: #c5d0de;--ok: #0d9f6e;--danger: #e11d48;--warn: #b45309;--surface: var(--paper);--surface-raised: var(--workshop);--text: var(--ink);--text-muted: var(--ink-soft);--border: var(--line);--accent-fg: var(--paper);--header-fg: var(--ink);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-8: 40px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-1: 0 4px 12px rgba(20, 32, 51, .1);--shadow-2: 0 16px 40px rgba(20, 32, 51, .18);--shadow: var(--shadow-2);--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.375rem;--line-tight: 1.25;--line-body: 1.35;--top-h: auto;--panel-h: clamp(300px, 42vh, 440px);--side-w: 360px;--side-col: 0px;--touch-target: 44px;--dur-fast: .12s;--dur-med: .22s;--ease: cubic-bezier(.2, .8, .2, 1);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Helvetica Neue,sans-serif;color:var(--text);background:var(--canvas);line-height:var(--line-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}:root[data-theme=dark]{--ink: #e8eef8;--ink-soft: #a8b8d0;--paper: #1a2332;--canvas: #0f1520;--stage: #141c2a;--header: #121a26;--workshop: #1e2a3d;--nav: #243044;--accent: #9bb4d4;--accent-deep: #c5d4e8;--accent-soft: #1e3058;--warm: #ea580c;--line: #3a4a62;--ok: #34d399;--danger: #fb7185;--warn: #fbbf24;--surface: var(--paper);--surface-raised: var(--workshop);--text: var(--ink);--text-muted: var(--ink-soft);--border: var(--line);--accent-fg: var(--paper);--header-fg: var(--ink);--shadow-1: 0 4px 12px rgba(0, 0, 0, .35);--shadow-2: 0 16px 40px rgba(0, 0, 0, .45)}@media (pointer: coarse){:root{font-size:var(--font-size-md)}}@media (prefers-reduced-motion: reduce){:root{--dur-fast: 0ms;--dur-med: 0ms}}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--canvas)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.app{height:100vh;height:100dvh;display:grid;grid-template-areas:"top top" "stage side" "bottom bottom";grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr) var(--side-col);overflow:hidden}.app[data-workspace=simple]{grid-template-rows:auto minmax(0,1fr) var(--panel-h)}.app[data-workspace=advanced][data-layout=desktop]{--side-col: auto;grid-template-rows:auto minmax(0,1fr) 0}.app[data-workspace=advanced][data-layout=compact]{grid-template-rows:auto minmax(0,1fr) auto}.topbar{grid-area:top}.stage{grid-area:stage}.app-bottom{grid-area:bottom;min-height:0}.side-panel{grid-area:side}.topbar{position:relative;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.5rem 1rem;background:var(--header);color:var(--header-fg);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:.7rem;min-width:0}.logo-mark{flex:0 0 auto;display:block;border-radius:10px}.brand .logo-poster{flex:0 0 auto;display:block;height:auto}.brand-copy{display:flex;flex-direction:column;line-height:1.1;min-width:0}.brand-title{display:inline-flex;align-items:center;gap:.4rem}.beta-tag{display:inline-flex;align-items:center;flex:0 0 auto;padding:.08rem .38rem;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink-soft);font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;line-height:1.2}.brand strong{font-size:1.05rem;letter-spacing:-.03em;font-weight:750}.brand-tagline{font-size:.72rem;color:var(--ink-soft)}.work-banner{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;padding:.35rem 1rem;background:var(--accent-soft);color:var(--ink);font-size:.85rem}.work-banner progress{width:8rem;height:.65rem}.offline-pill{display:inline-flex;align-items:center;margin:0;margin-left:.15rem;flex-shrink:0;max-width:100%;padding:.12rem .5rem;border-radius:999px;font-size:var(--font-size-xs);font-weight:650;line-height:var(--line-tight);letter-spacing:.01em;white-space:nowrap;color:var(--ink);background:var(--accent-soft)}.offline-pill-short{display:none}.desktop-actions{display:flex;gap:.4rem;align-items:center}.more-menu,.label-narrow{display:none}.top-actions,.icon-row{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.ghost,.primary,.stamp,.ghost-ink{border:0;border-radius:8px;padding:.42rem .8rem}.ghost{background:transparent;color:inherit;border:1px solid var(--line)}.ghost-ink{background:transparent;color:var(--ink);border:1px solid var(--line)}.topbar .ghost:hover,.topbar .text-btn:hover,.ghost-ink:hover,.file-pop button:hover{background:var(--accent-soft)}.ghost-ink:disabled,.ghost:disabled,.text-btn:disabled,.file-pop button:disabled{opacity:.4;cursor:not-allowed}.stamp{background:var(--ink);color:var(--accent-fg);font-weight:700;letter-spacing:.02em}.stamp:hover{background:var(--accent)}.stamp:disabled{opacity:.5;cursor:not-allowed}.file-menu{position:relative}.file-menu summary{list-style:none;cursor:pointer}.file-menu summary::-webkit-details-marker{display:none}.file-menu[open] .file-pop,.file-menu .file-pop{display:none}.file-menu[open] .file-pop{display:flex;flex-direction:column;position:absolute;right:0;top:calc(100% + 6px);background:var(--paper);color:var(--ink);min-width:11rem;padding:.35rem;border-radius:10px;box-shadow:var(--shadow);border:1px solid var(--line);z-index:12}.file-menu .file-pop button,.file-menu .file-pop a{text-align:left;background:transparent;border:0;padding:.4rem .55rem;border-radius:6px;color:inherit;text-decoration:none;display:block}.file-menu .file-pop{color:var(--ink)}.topbar a.text-btn{text-decoration:none;display:inline-flex;align-items:center}.stage{min-width:0;min-height:0;display:grid;grid-template-rows:auto 1fr auto;background:radial-gradient(1200px 400px at 50% -10%,rgba(255,255,255,.28),transparent 55%),var(--canvas)}.stage-bar,.status{display:flex;justify-content:space-between;gap:.6rem;align-items:center;flex-wrap:nowrap;padding:.4rem .9rem;color:var(--ink-soft);font-size:.8rem;overflow-x:auto}.stage-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;overflow:hidden}.stage-bar-left,.stage-bar-right{display:flex;align-items:center;gap:.35rem;flex-wrap:nowrap;min-width:0}.stage-bar-left{overflow-x:auto;scrollbar-width:thin}.stage-bar-right{flex-shrink:0}.status{border-top:1px solid var(--line)}.stage-meta{color:var(--ink-soft)}.view-toggle{display:flex;gap:.3rem}.seg{background:var(--paper);color:var(--ink);border:1px solid var(--line);padding:.28rem .55rem;font-size:.78rem;border-radius:999px}.seg[aria-pressed=true],.seg[aria-selected=true]{background:var(--ink);color:#fff;border-color:var(--ink);outline:none}.canvas-wrap{min-height:0;overflow:hidden;padding:.8rem 1.1rem;display:grid;place-items:center}.canvas-viewport{position:relative;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;touch-action:none;display:flex;align-items:center;justify-content:center}.zoom-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem}.zoom-readout{min-width:3.2rem;text-align:center;font-size:.78rem;font-variant-numeric:tabular-nums}.drawing{color:var(--ink-soft)}.sign-board{background:transparent;box-shadow:none;transform-origin:0 0;will-change:transform;width:100%;height:100%;display:grid;min-width:0;min-height:0}.sign-board>*{min-width:0;min-height:0;width:100%;height:100%}.sheet,.page-thumb{background:var(--paper);box-shadow:var(--shadow);border-radius:8px}.sheet{width:100%;height:100%;display:flex;align-items:center;justify-content:center;min-height:0}.sheet svg{display:block;width:100%;height:100%;max-width:100%;max-height:100%}.sign-board svg,.canvas-svg{display:block;width:100%;height:100%;max-width:100%;max-height:100%;min-width:0;min-height:0}.sign-board svg{border-radius:6px}.sign-board svg>rect:first-of-type{filter:drop-shadow(0 18px 36px rgb(15 23 40 / 14%))}@media (pointer: coarse){.sign-board svg,.canvas-svg{shape-rendering:optimizespeed}}.canvas-svg{touch-action:none;outline:none;overflow:visible}.artboard-frame{fill:none;stroke:#94a3b8;stroke-width:1.2;vector-effect:non-scaling-stroke}.overflow-flag{fill:#b45309;font-size:16px;font-family:inherit}.ruler-band{fill:#e8eef7;stroke:#94a3b8;stroke-width:1;vector-effect:non-scaling-stroke}.ruler-tick{stroke:#64748b;stroke-width:1;vector-effect:non-scaling-stroke}.ruler-label{fill:#475569;font-family:inherit}.guide-line{stroke:#c026d3;stroke-width:1.2;stroke-dasharray:5 4;vector-effect:non-scaling-stroke;pointer-events:none}.snap-line{stroke:#ea580c;stroke-width:1.4;vector-effect:non-scaling-stroke;pointer-events:none}.guide-list{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}.guide-item{display:grid;gap:.3rem}.canvas-svg:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.sel-box{fill:none;stroke:#2563ff;stroke-width:1.6;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.sel-box.secondary{stroke-dasharray:3 3;opacity:.72}.sel-marquee{fill:#2563ff1f;stroke:#2563ff;stroke-width:1.2;vector-effect:non-scaling-stroke}.handle{fill:#fff;stroke:#2563ff;stroke-width:1.6;vector-effect:non-scaling-stroke}.rotate-handle{fill:#dbe6ff}.curve-path{fill:none;stroke:#2563ff;stroke-width:1.4;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.curve-arm{stroke:#7ea2ff;stroke-width:1;vector-effect:non-scaling-stroke}.curve-handle.control{fill:#dbe6ff}.workshop.inspector{height:100%;max-height:none;display:flex;flex-direction:column;min-height:0;border-top:0;background:transparent}.workshop.inspector .inspector-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:0}.side-panel{display:flex;min-width:0;min-height:0;background:var(--workshop);border-left:1px solid var(--line)}.side-panel-body{flex:1;min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}.side-resizer{flex:0 0 8px;width:8px;cursor:col-resize;background:linear-gradient(90deg,transparent,var(--line),transparent);touch-action:none}.side-resizer:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.bottom-sheet{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0;background:var(--workshop);border-top:1px solid var(--line)}.bottom-sheet[data-snap=peek]{height:56px}.bottom-sheet[data-snap=half]{height:45vh;height:45dvh}.bottom-sheet[data-snap=full]{height:90vh;height:90dvh}.bottom-sheet-body{overflow:auto;min-height:0}.sheet-handle{width:100%;min-height:44px;border:0;background:var(--nav);cursor:ns-resize;touch-action:none;position:relative}.sheet-handle:before{content:"";display:block;width:2.5rem;height:.28rem;margin:.35rem auto;border-radius:999px;background:var(--line)}.inspector-tabs{display:flex;gap:0;border-bottom:1px solid var(--line);flex-shrink:0}.inspector-tab{flex:1;border:0;background:transparent;padding:.45rem .55rem;font-size:.78rem;font-weight:650;min-height:44px}.inspector-tab[aria-selected=true]{background:var(--accent-soft);box-shadow:inset 0 -2px 0 var(--accent)}.inspector-tabpanel{min-height:0;overflow:auto;padding:.55rem .75rem .65rem}.inspector-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.45rem .8rem;padding:.4rem 1rem;border-bottom:1px solid var(--line)}.inspector-head-summary{margin:0}.inspector-head-actions{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.inspector-body{display:grid;gap:.7rem}.inspector-layout{display:grid;grid-template-columns:minmax(12rem,16.5rem) minmax(0,1fr);gap:.85rem 1.1rem;align-items:start}.inspector-col{display:grid;gap:.55rem;min-width:0}.inspector-heading{margin:0;font-size:.72rem;font-weight:750;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.object-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem;max-height:12rem;overflow:auto}.object-item{display:flex;justify-content:space-between;gap:.5rem;width:100%;text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:.4rem .55rem;min-height:44px}.object-item[aria-selected=true]{border-color:var(--accent);background:var(--accent-soft)}.object-item small{color:var(--ink-soft)}.inspector-section{display:grid;gap:.55rem;padding-bottom:.75rem;border-bottom:1px solid var(--line);margin-bottom:.75rem}.inspector-section:last-child{border-bottom:none;margin-bottom:0}.object-item-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.25rem}.object-grip{min-width:44px;min-height:44px;border:none;background:transparent;cursor:grab;color:var(--ink-soft)}.object-item-icons{display:flex;gap:.15rem}.icon-btn{min-width:44px;min-height:44px;border:none;background:transparent;cursor:pointer}.object-rename{width:100%;min-height:36px}.object-drop-target{outline:2px dashed var(--accent);outline-offset:2px}.primary-badge{color:var(--accent)}.canvas-viewport{position:relative}.selection-toolbar{position:absolute;z-index:4;display:flex;flex-wrap:wrap;gap:.25rem;padding:.25rem;border-radius:.5rem;background:var(--panel);border:1px solid var(--line);box-shadow:0 4px 16px #0000001f}.selection-toolbar-btn{min-width:44px;min-height:44px;padding:.35rem .55rem;border:1px solid var(--line);border-radius:.35rem;background:var(--surface);cursor:pointer}.selection-toolbar-align{position:relative}.selection-toolbar-pop{position:absolute;top:calc(100% + 4px);left:0;z-index:5;min-width:10rem;padding:.25rem;border-radius:.35rem;background:var(--panel);border:1px solid var(--line);box-shadow:0 4px 16px #0000001f}.context-menu{z-index:60;min-width:11rem;padding:.25rem;border-radius:.35rem;background:var(--panel);border:1px solid var(--line);box-shadow:0 8px 24px #00000029}.context-menu-item{display:block;width:100%;min-height:44px;padding:.45rem .65rem;border:none;border-radius:.25rem;background:transparent;text-align:left;cursor:pointer}.context-menu-item[data-active]{background:var(--surface)}.context-menu-item:disabled{opacity:.45;cursor:not-allowed}.snap-gap{stroke:var(--accent);stroke-width:1;stroke-dasharray:4 3}.snap-label{fill:var(--accent);font-size:11px;pointer-events:none}.inline-text-editor{position:absolute;z-index:5;resize:none;border:2px solid var(--accent);background:#ffffffeb;padding:.15rem;transform-origin:top left}.coach-mark{position:absolute;right:1rem;bottom:1rem;z-index:6;max-width:18rem;padding:.85rem;border-radius:.5rem;background:var(--panel);border:1px solid var(--line);box-shadow:0 8px 24px #00000024}.coach-mark-actions{display:flex;gap:.5rem;margin-top:.65rem}.callout{padding:.65rem .75rem;border-radius:.45rem;background:var(--surface);border:1px solid var(--line)}.callout-actions{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.55rem}.shortcuts-dialog{display:grid;gap:1rem;max-height:min(70vh,28rem);overflow:auto}.shortcuts-list{display:grid;gap:.35rem;margin:0}.shortcuts-row{display:flex;justify-content:space-between;gap:1rem;align-items:center}.shortcuts-row kbd{font-family:inherit;padding:.15rem .4rem;border-radius:.25rem;border:1px solid var(--line);background:var(--surface)}.inspector-fields{display:grid;gap:.55rem}.layer-actions{display:flex;flex-wrap:wrap;gap:.3rem}.layer-actions .ghost-ink{min-height:36px;padding:.3rem .5rem}textarea#sign-text,textarea#object-text{width:100%;resize:vertical;min-height:4.2rem}input#sign-text{width:100%;min-height:2.8rem}.stage-bar .view-toggle+.view-toggle{margin-left:.2rem}.page-thumb svg{display:block;width:100%;height:auto;max-height:100%}.page-preview{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:.55rem;width:min(100%,1100px);height:100%;min-height:0}.page-preview-detail{display:grid;gap:.45rem;max-height:14rem;min-height:0;overflow:auto}.page-trim{margin:0;font-size:.85rem;color:var(--ink-soft)}.assembly-map{width:100%;max-height:6.5rem}.assembly-map svg{display:block;width:100%;height:auto;max-height:6.5rem}.ink-preview{width:100%;max-height:5.5rem;overflow:hidden;background:var(--paper);border:1px solid var(--line)}.ink-preview svg{display:block;width:100%;height:auto;max-height:5.5rem}.quality-review{padding-left:1.2rem;margin:.4rem 0 0;font-size:.9rem}.page-grid{display:grid;gap:.45rem;min-height:0;height:100%;overflow:auto;place-content:stretch center;justify-items:stretch;grid-auto-rows:minmax(0,1fr);margin-inline:auto}.page-thumb{border:2px solid transparent;padding:0;background:var(--paper);min-height:0;overflow:hidden;display:grid;place-items:center}.page-thumb[aria-current=true]{border-color:var(--accent)}.sheet{min-height:0;overflow:hidden;display:grid;place-items:center}.workshop{background:var(--workshop);border-top:1px solid var(--line);display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:var(--panel-h);min-height:0}.stepper{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border-bottom:1px solid var(--line);overflow-x:auto}.step-tab{display:flex;gap:.45rem;align-items:center;background:transparent;border:0;border-bottom:2px solid transparent;padding:.5rem .55rem;text-align:left;min-width:0}.step-tab[aria-selected=true]{background:var(--paper);border-bottom-color:var(--ink)}.step-num{flex:0 0 auto;width:1.35rem;height:1.35rem;border-radius:50%;background:var(--nav);color:var(--ink);font-size:.72rem;font-weight:700;display:grid;place-items:center}.step-tab[aria-selected=true] .step-num{background:var(--ink);color:var(--accent-fg)}.step-copy{display:flex;flex-direction:column;min-width:0;line-height:1.15}.step-copy strong{font-size:.78rem}.step-copy small{color:var(--ink-soft);font-size:.68rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workshop-body{overflow-x:hidden;overflow-y:auto;padding:.7rem 1rem .5rem}.workshop[data-step=size] .workshop-body{padding-top:.3rem;padding-bottom:.2rem}.workshop[data-step=size] .step-prompt{margin-bottom:.2rem}.step-prompt{margin:0 0 .55rem;font-size:1.02rem;font-weight:700;letter-spacing:-.02em}.workshop-nav{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.45rem 1rem .6rem;border-top:1px solid var(--line);background:var(--nav)}.workshop-progress{font-size:.78rem;color:var(--ink-soft)}.step-dots{display:flex;gap:.35rem;align-items:center}.step-dot{width:.45rem;height:.45rem;border-radius:50%;background:var(--line)}.step-dot.current{background:var(--accent)}.step-dot.done{background:var(--ink-soft)}.step-summary-mobile{display:none}.step-summary-desktop{display:inline}.step-body{display:grid;grid-template-columns:1fr;gap:.8rem}@media (width >= 900px){.step-body:not(.style-step){grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}}.step-primary,.step-secondary{min-width:0}.style-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;grid-column:1 / -1}.style-toolbar-actions{display:flex;gap:.35rem;flex-wrap:wrap}.style-step{display:block}.sheet-grid-wrap{margin:.25rem 0 0}.sheet-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:3px;max-width:12rem}.sheet-cell{aspect-ratio:8.5 / 11;min-height:24px;border:1px solid var(--line);background:var(--paper);padding:0;border-radius:2px}.sheet-cell.active{background:var(--accent-soft)}.sheet-cell.selected{background:var(--accent);border-color:var(--accent-deep)}.size-top{display:flex;flex-wrap:wrap;align-items:end;gap:.45rem .85rem}.size-counts{display:grid;gap:.25rem;min-width:0;align-content:start;justify-items:start}.size-counts .row{display:grid;grid-template-columns:auto auto;gap:.45rem .65rem;width:max-content}.size-counts .quiet{margin-top:.1rem}.size-step{align-items:start}.size-step .step-primary,.size-step .step-secondary{display:flex;flex-direction:column;gap:.25rem;align-items:start}.size-inline-field{display:flex;flex-wrap:wrap;align-items:start;gap:.3rem .5rem;width:100%}.size-inline-field .field-label{margin:0;line-height:2rem}.size-step .paper-pick,.size-step .size-sheet-tools{flex:1 1 12rem;min-width:0;margin:0}.size-step .sheet-grid-wrap,.size-step .quiet{margin:0}.size-step .size-fine-tune{width:max-content;max-width:100%;margin:.1rem 0 0;border:none;background:transparent;padding:0;border-radius:0}.size-step .size-fine-tune>summary{min-height:0;display:list-item;padding:.1rem 0;font-size:.82rem;font-weight:600;color:var(--ink-soft);list-style:none;cursor:pointer}.size-step .size-fine-tune>summary::marker{content:none}.size-step .size-fine-tune>summary::-webkit-details-marker{display:none}.size-step .size-fine-tune>summary:after{content:" ▸";font-size:.7em}.size-step .size-fine-tune[open]{width:100%}.size-step .size-fine-tune[open]>summary:after{content:" ▾"}.paper-pick{display:flex;flex-wrap:wrap;gap:.3rem;margin:.35rem 0}.font-toolbar{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.5rem}.font-search input{width:100%;padding:.35rem .5rem;border:1px solid var(--line);border-radius:8px}.font-chips{display:flex;flex-wrap:wrap;gap:.25rem}.chip{border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:.2rem .45rem;font-size:.72rem}.chip[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}.font-card-wrap{content-visibility:auto;contain-intrinsic-size:4.5rem 4rem}.color-mode-row{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.5rem}.color-mode-card{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:.5rem;text-align:left;display:flex;flex-direction:column;gap:.25rem;min-height:44px}.color-mode-card[aria-pressed=true]{outline:2px solid var(--accent);background:var(--accent-soft)}.switch-row{margin:.35rem 0}.switch{display:flex;align-items:center;gap:.4rem;font-size:.82rem}.add-menu{position:relative}.add-menu-pop{position:absolute;right:0;top:calc(100% + 4px);z-index:20;background:var(--paper);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);min-width:10rem;display:flex;flex-direction:column}.add-menu-pop button{text-align:left;padding:.45rem .65rem;border:0;background:transparent;min-height:44px}.surprise-me{position:relative}.surprise-pop{position:absolute;right:0;top:calc(100% + 4px);z-index:20;background:var(--paper);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:.5rem;width:min(20rem,90vw)}.print-thumbs .print-step-grid{margin-bottom:.5rem}.print-sheet-detail .sheet{max-height:8rem}.direction-preview{display:block;color:var(--ink)}.toast{position:fixed;bottom:calc(var(--panel-h) + .75rem);left:50%;transform:translate(-50%);z-index:40;background:var(--ink);color:#fff;padding:.55rem .75rem;border-radius:10px;display:flex;align-items:center;gap:.5rem;max-width:min(24rem,92vw);box-shadow:var(--shadow)}.toast .ghost-ink{color:#fff;border-color:#ffffff59}.font-notice{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.35rem .9rem;background:#fff7ed;color:var(--warn);font-size:.78rem;border-bottom:1px solid var(--line)}.skeleton-stage{display:grid;place-items:center;height:100%;padding:1rem}.skeleton-banner{width:min(100%,28rem);max-height:70%;background:linear-gradient(90deg,#c5ceda 25%,#dde4ee,#c5ceda 75%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease infinite;border-radius:12px}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.orient-btn .landscape-icon,.orient-btn .portrait-icon,.orient-btn .auto-icon{display:inline-block;width:.85rem;height:1.1rem;border:1px solid currentcolor;border-radius:1px;margin-right:.25rem;vertical-align:-.15rem}.orient-btn .landscape-icon{width:1.1rem;height:.85rem}.workshop-body label,.field-label{display:block;font-size:.78rem;margin:.2rem 0 .15rem;color:var(--ink-soft)}.workshop-body input[type=text],.workshop-body input[type=number],.workshop-body select{width:100%;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:.4rem .5rem}.workshop-body input[type=text]:focus,.workshop-body input[type=number]:focus,.workshop-body select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.workshop-body .size-counts input[type=number]{width:4.25rem;max-width:4.25rem;padding:.22rem .35rem}.step-grid{display:grid;grid-template-columns:2fr 1fr;gap:.8rem}.text-layout{display:grid;gap:.5rem}.text-layout .banner-pick{margin-bottom:.1rem}.letter-path{margin-top:.15rem}.step-main input[type=text]{font-size:1.15rem;padding:.55rem .65rem}.text-emoji-row{display:grid;grid-template-columns:1fr auto;gap:.4rem;align-items:center}.emoji-picker{position:relative}.emoji-toggle{min-width:2.6rem;min-height:2.6rem;border:1px solid var(--line);background:var(--paper);border-radius:8px;font-size:1.2rem;line-height:1}.emoji-toggle[aria-expanded=true]{outline:2px solid var(--accent);outline-offset:1px}.emoji-pop{position:fixed;z-index:30;width:min(22rem,70vw);max-height:14rem;overflow:auto;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:.45rem .55rem .6rem}.emoji-group{margin-bottom:.35rem}.emoji-group-label{margin:0 0 .2rem;font-size:.68rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}.emoji-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:.15rem}.emoji-cell{border:0;background:transparent;border-radius:6px;min-height:1.85rem;font-size:1.15rem;line-height:1}.emoji-cell:hover,.emoji-cell:focus-visible{background:var(--accent-soft)}.font-cat{margin:.35rem 0 .25rem;font-size:.72rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}.font-group+.font-group{margin-top:.15rem}.font-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.4rem;margin-bottom:.55rem}.font-card{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:.35rem .45rem .4rem;text-align:left;min-height:3.4rem}.font-card[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:1px;background:var(--accent-soft)}.font-sample{display:block;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.font-meta{display:flex;justify-content:space-between;gap:.35rem;font-size:.68rem;color:var(--ink-soft)}.font-meta small{opacity:.8}.font-card-wrap{position:relative}.font-fav{position:absolute;top:.15rem;right:.15rem;border:0;background:transparent;color:var(--ink-soft);padding:.15rem .3rem;min-width:1.6rem;min-height:1.6rem;line-height:1}.font-fav[aria-pressed=true]{color:var(--accent)}.font-miss{display:block;color:var(--warn);font-size:.65rem}.shape-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.4rem;margin-bottom:.45rem}.shape-card{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:.35rem .3rem;display:flex;flex-direction:column;align-items:center;gap:.15rem;font-size:.72rem;min-height:44px;min-width:0;overflow:hidden;text-align:center}.shape-card svg{display:block;width:100%;max-width:100%;height:32px}.shape-card[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:1px;background:var(--accent-soft)}.style-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.4rem,1fr));gap:.4rem;margin:.35rem 0 .7rem}.style-card{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:.35rem .4rem .4rem;text-align:left;min-height:44px;display:flex;flex-direction:column;gap:.2rem}.style-card[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:1px;background:var(--accent-soft)}.style-sample{display:block;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.style-meta{display:flex;flex-direction:column;gap:.05rem;font-size:.72rem}.style-meta small{color:var(--ink-soft)}.optional-controls{margin:.4rem 0 .15rem;border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:0 .65rem .4rem}.optional-controls>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600}.message-overflow{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:.25rem 0 .4rem}.message-overflow .error{margin:0}.size-layout,.look-layout,.print-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:1rem}.banner-pick{display:grid;grid-template-columns:1fr;gap:.45rem;margin-bottom:.5rem;min-width:0}@media (width < 900px){.banner-pick{grid-template-columns:1fr 1fr}}.banner-card{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:.4rem .55rem;display:flex;align-items:center;gap:.55rem;text-align:left;min-width:0;min-height:3.4rem;overflow:hidden}.banner-card[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:1px;background:var(--accent-soft)}.banner-card strong{display:block;font-size:.86rem}.banner-card small{display:block;color:var(--ink-soft);font-size:.7rem}.banner-glyph{flex:0 0 auto}.size-paper{display:grid;grid-template-columns:1fr 1.2fr;gap:.5rem;margin:.45rem 0 .25rem}.orient-pick{display:flex;flex-wrap:wrap;gap:.3rem}.size-sheet-tools{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .55rem}.print-layout{grid-template-columns:1.1fr 1fr auto;align-items:start}.print-cta{display:flex;flex-direction:column;gap:.4rem;justify-content:center}.stretch-col,.look-details{min-width:0}.row{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.4rem}.error{color:var(--danger);font-size:.8rem;margin:.25rem 0 0}.warn{color:var(--warn);font-size:.78rem;margin:.25rem 0 0}.quiet{font-size:.75rem;color:var(--ink-soft);margin:.4rem 0 0}.swatches,.looks{display:flex;flex-wrap:wrap;gap:.35rem}.swatch,.look{border:1px solid var(--line);background:var(--paper);border-radius:8px;min-height:2rem}.swatch{width:1.7rem;height:1.7rem;padding:0}.look{padding:.28rem .5rem;font-size:.78rem}.swatch[aria-pressed=true],.look[aria-pressed=true],.font-card[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:1px}.check{display:flex;align-items:center;gap:.35rem;margin:.35rem 0}.effect-toggles{display:flex;flex-wrap:wrap;gap:.15rem .85rem;margin:.35rem 0 .2rem}.effect-styles{border:0;margin:.4rem 0 .15rem;padding:0}.effect-styles legend{font-size:.82rem;font-weight:650;margin-bottom:.2rem}.shuffle-panel{margin:.55rem 0 .15rem;padding:.5rem .65rem .6rem;border:1px solid var(--line);border-radius:10px;background:var(--paper)}.shuffle-locks{display:flex;flex-wrap:wrap;gap:.15rem .75rem;margin:.3rem 0 .45rem}.shuffle-lock{min-height:44px;margin:0}.shuffle-panel .primary{min-height:44px;min-width:44px;padding:.35rem .9rem}.slider{margin:.25rem 0 .15rem}.slider-head{display:flex;justify-content:space-between;font-size:.75rem;color:var(--ink-soft)}.slider-row{display:grid;grid-template-columns:1fr 4.4rem;gap:.4rem;align-items:center}input[type=range]{width:100%;accent-color:var(--accent)}.dialog-backdrop{position:fixed;inset:0;background:#0f172873;display:grid;place-items:center;padding:1rem;z-index:20}.dialog{background:var(--paper);color:var(--ink);width:min(640px,100%);max-height:90vh;overflow:auto;padding:1.2rem 1.3rem 1.4rem;border-radius:16px;box-shadow:var(--shadow)}.dialog h2{margin-top:0;letter-spacing:-.03em}.dialog h3{margin:1.15rem 0 .4rem;font-size:1.02rem}.dialog ol{padding-left:1.2rem}.dialog-actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end;margin-top:1rem}.dialog progress{width:100%;height:.7rem;accent-color:var(--accent)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pen-preview{display:block;width:100%;max-height:8rem;background:#fff;border:1px solid var(--line);border-radius:8px;margin:.5rem 0}.pen-mat-preview{display:block;width:100%;max-height:5.5rem;background:#e8edf5;border:1px solid var(--line);border-radius:8px;margin:.45rem 0}.pen-mat-board{fill:#c5d0e2;stroke:#5b6d88;stroke-width:.12}.pen-mat-sheet{fill:#fff;stroke:#2563ff;stroke-width:.1}.pen-mat-usable{fill:none;stroke:#0d9f6e;stroke-width:.08;stroke-dasharray:.25 .18}.pen-stats{display:grid;grid-template-columns:1fr 1fr;gap:.2rem .75rem;font-size:.8rem;margin:.4rem 0}.pen-stats div{display:flex;justify-content:space-between;gap:.5rem}.pen-stats dt{color:var(--ink-soft)}.pen-stats dd{margin:0;font-variant-numeric:tabular-nums}.pen-table{width:100%;font-size:.85rem;border-collapse:collapse;margin:.5rem 0}.pen-table caption{text-align:left;font-weight:600;margin-bottom:.3rem}.job-review{list-style:none;margin:.5rem 0;padding:0;display:grid;gap:.35rem}.job-review li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.35rem;border:1px solid var(--line);border-radius:8px;padding:.35rem .5rem}.job-review small{display:block;color:var(--ink-soft)}.pen-table th,.pen-table td{text-align:left;padding:.25rem .35rem;vertical-align:middle}.pen-swatch{width:1.1rem;height:1.1rem;border:1px solid var(--line);display:inline-block;vertical-align:middle;margin-right:.35rem}.primary{background:var(--ink);color:var(--accent-fg);border-radius:8px}.primary:hover{background:var(--accent)}.text-btn{background:transparent;border:0;color:inherit;padding:.35rem .5rem;border-radius:8px}.privacy{font-size:.75rem;color:var(--ink-soft);margin-top:1.2rem}.mobile-note{display:none;padding:.45rem .9rem;background:var(--accent-soft);color:var(--ink);font-size:.82rem}.field-error{border-color:var(--danger)!important}.art-picker{margin:.6rem 0 .2rem;display:grid;gap:.45rem}.art-picker input[type=search]{width:100%;margin-top:.2rem}.art-filters{display:flex;flex-wrap:wrap;gap:.35rem}.art-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.6rem,1fr));gap:.4rem}.art-thumb{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:.3rem;display:flex;flex-direction:column;gap:.2rem;min-width:44px;min-height:44px}.art-thumb-svg{display:block;width:100%;aspect-ratio:1}.art-thumb-svg svg{width:100%;height:100%;display:block}.art-thumb-ph{background:var(--workshop);border-radius:8px}.art-thumb small{color:var(--ink-soft);font-size:.68rem}.help-figure{background:#f8fafc;border:1px dashed var(--line);padding:.6rem;margin:.6rem 0 1rem;border-radius:10px}@media (width <= 1100px){.step-copy small{display:none}.size-layout,.look-layout,.print-layout{grid-template-columns:1fr}.shape-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width <= 800px){.banner-card small{display:none}.step-prompt{font-size:.92rem;margin-bottom:.4rem}.desktop-actions{display:none}.more-menu{display:block}.label-wide{display:none}.label-narrow{display:inline}.brand-tagline,.offline-pill-full{display:none}.offline-pill-short{display:inline}.brand strong{font-size:.95rem}.logo-mark{width:30px;height:30px}.brand .logo-poster{width:42px;height:auto}.stage-meta,.status-hint{display:none}.status{font-size:.72rem}.step-grid{grid-template-columns:1fr}.canvas-wrap{padding:.5rem .65rem}.print-cta{display:none}.sheet-cell{min-height:44px}.workshop-nav .ghost-ink,.workshop-nav .primary,.workshop-nav .stamp{min-height:44px;min-width:4.5rem}.step-tab{min-height:44px;justify-content:center;padding:.35rem .2rem}.font-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-thumb svg{max-height:100%}}@media (width <= 640px){.step-copy{display:none}.stepper{grid-template-columns:repeat(4,minmax(0,1fr))}.step-summary-mobile{display:inline;max-width:6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.step-summary-desktop,.step-dots{display:none}.topbar{padding:.4rem .65rem;gap:.45rem}.page-preview .sheet{display:none}.size-paper{grid-template-columns:1fr 1fr}.banner-card{min-height:2.6rem;padding:.25rem .35rem;gap:.35rem}}@media (width <= 400px){.style-grid,.shape-grid,.font-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.step-tab{min-width:44px;min-height:44px;padding:.3rem .05rem}.optional-controls>summary{min-height:44px}.style-card,.look,.banner-card,.shuffle-lock,.shuffle-panel .primary{min-height:44px}}@media (width <= 720px){.inspector-tabpanel .inspector-layout{grid-template-columns:1fr}}@media (width <= 1023px){.side-resizer{min-width:44px}}@media (width <= 360px){.topbar{flex-wrap:wrap}.dialog{width:min(100%,360px);padding:.9rem}.ghost,.primary,.stamp,.ghost-ink{min-height:44px}}@media (width <= 320px){html,body{overflow-x:hidden}.app{overflow:hidden;height:100dvh;min-height:100dvh}.topbar{flex-wrap:wrap;gap:.35rem}.stepper{grid-template-columns:repeat(4,minmax(0,1fr))}.step-tab{min-width:44px;min-height:44px}.workshop-body{padding:.55rem .65rem}.workshop-nav{flex-wrap:wrap}.slider-row,.size-layout,.look-layout,.print-layout,.size-paper{grid-template-columns:1fr}.dialog{width:100%;max-width:320px}.dialog-actions{flex-direction:column;align-items:stretch}.dialog-actions button{min-height:44px;width:100%}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
