:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#15171a;--bg-2:#1d2024;--bg-3:#262a30;--line:#6e747c;--fg:#e8eaed;--fg-2:#a8adb5;--muted:#a3a9b3;--accent:#4da3ff;--pass:#3ddc84;--warn:#ffb547;--fail:#ff5d5d;--info:#8ab4ff;--focus:#8ec5ff;--font:14px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-small:13px;--font-pill:12px}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--fg);font:var(--font);margin:0}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.app{grid-template-columns:240px 1fr var(--panel-w,440px);grid-template-rows:40px 1fr minmax(56px,auto);grid-template-areas:"top top top""files viewer panel""bottom bottom bottom";height:100%;display:grid}.topbar{border-bottom:1px solid var(--line);background:var(--bg-2);grid-area:top;align-items:center;gap:12px;padding:0 12px;display:flex}.brand{font-weight:600}.muted{color:var(--muted)}.files{border-right:1px solid var(--line);background:var(--bg-2);grid-area:files;overflow:auto}.viewer{background:var(--bg);grid-area:viewer;position:relative;overflow:hidden}.panel{border-left:1px solid var(--line);background:var(--bg-2);grid-area:panel;grid-template-rows:1fr auto;padding-left:8px;display:grid;position:relative;overflow:hidden}.panel-body{min-height:0;overflow:auto}.panel-footer{border-top:1px solid var(--line);background:var(--bg-2);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;display:flex}.panel-status{min-width:0;font-size:var(--font-small);color:var(--fg-2);flex:1}.panel-resizer{z-index:2;cursor:col-resize;touch-action:none;width:8px;position:absolute;top:0;bottom:0;left:0}.panel-resizer:before{content:"";background:0 0;width:2px;position:absolute;top:0;bottom:0;left:3px}.panel-resizer:hover:before,.panel-resizer:focus-visible:before,.panel-resizer[data-dragging=true]:before{background:var(--accent)}.bottombar{border-top:1px solid var(--line);background:var(--bg-2);flex-wrap:wrap;grid-area:bottom;align-items:center;gap:6px 12px;padding:6px 12px;display:flex}.bottombar .ctl{grid-template-columns:auto auto}.bottombar input[type=color]{height:32px}.bottombar button{white-space:nowrap}.exportbar .error{color:var(--warn);font-size:var(--font-small)}.exportbar .skipped{font-size:var(--font-small)}button{font:inherit;color:var(--fg);background:var(--bg-3);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:6px 10px}button:hover{border-color:var(--accent)}button.primary,.btn-primary{background:var(--accent);color:#0b1220;border-color:var(--accent);font-weight:600}.btn-primary{min-height:36px}.btn-secondary{color:var(--fg);background:var(--bg-3);border:1px solid var(--line)}button:disabled{opacity:.5;cursor:default}input,select{font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:5px 8px}input[type=range]{width:100%;min-width:0;padding:0}.ctl>select{width:100%;min-width:0}button,select,input:not([type=checkbox]):not([type=color]){min-height:32px}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);margin:3px;padding:0}label{color:var(--fg-2)}.toggle{align-items:center;gap:8px;margin:4px 0;display:flex}.row{align-items:center;gap:8px;display:flex}.section{border-bottom:1px solid var(--line);padding:10px 12px}.section h3{font-size:var(--font-small);text-transform:uppercase;letter-spacing:.04em;color:var(--fg-2);margin:0}.section-head{margin:0 0 8px}.section-head h3{flex:1;min-width:0}.section-summary{align-items:center;gap:8px;min-width:0;display:inline-flex}.section-head:has(.section-summary) .section-toggle{justify-content:flex-end}.dot{background:var(--fg-2);border-radius:50%;flex:none;width:10px;height:10px}.dot.ok{background:var(--pass)}.dot.warn{background:var(--warn)}.dot.fail{background:var(--fail)}.dot.busy{background:var(--fg-2)}.section:has(.section-toggle[aria-expanded=false]) .section-head{margin-bottom:0}.section-toggle{width:100%;min-height:0;font:inherit;text-transform:inherit;letter-spacing:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:0;align-items:center;gap:6px;margin:0;padding:0;display:flex}.section-toggle:hover{color:var(--fg)}.section-toggle:before{content:"";border:4px solid #0000;border-top-color:currentColor;flex:none;width:0;height:0;margin-top:2px}.section-toggle[aria-expanded=false]:before{border-top-color:#0000;border-left-color:currentColor;margin-top:0;margin-left:2px}.pill{text-align:center;min-width:46px;font-size:var(--font-pill);border-radius:999px;padding:1px 6px;font-weight:600;display:inline-block}.pill.pass{color:var(--pass);background:#113d27}.pill.warn{color:var(--warn);background:#4a3210}.pill.fail{color:var(--fail);background:#4a1a1a}.pill.info{color:var(--info);background:#1c2c4a}.small{font-size:var(--font-small)}.right{margin-left:auto}.dropzone{flex-direction:column;height:100%;display:flex;position:relative}.dropzone.over{outline:2px dashed var(--accent);outline-offset:-6px}.drop-actions{border-bottom:1px solid var(--line);flex-direction:column;gap:6px;padding:12px;display:flex}.drop-overlay{pointer-events:none;background:#4da3ff1f;place-items:center;font-weight:600;display:grid;position:absolute;inset:0}.filelist{flex:1;overflow:auto}.file{border-bottom:1px solid var(--line);position:relative}.file.active{background:var(--bg-3);box-shadow:inset 3px 0 0 var(--accent)}.file-select{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:0;padding:8px 28px 8px 12px;display:block}.file-select:hover{background:#ffffff0a}.file-name{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.file-meta{display:block}.file .pill{margin-left:6px}.file-note{padding:0 28px 8px 12px}.file-note.fail{color:var(--fail)}.file-note.warn{color:var(--warn)}.file-close{width:24px;height:24px;min-height:24px;color:var(--fg-2);background:0 0;border:0;border-radius:6px;place-items:center;padding:0;display:grid;position:absolute;top:4px;right:4px}.file-close:hover{background:var(--bg-3);color:var(--fail)}.banner{z-index:20;color:var(--fail);border-bottom:1px solid var(--fail);background:#4a1a1a;padding:10px 14px;font-weight:600;position:fixed;top:0;left:0;right:0}.viewer-wrap{position:absolute;inset:0}.viewer-canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block}.viewer-hud{position:absolute;top:10px;left:12px;right:12px}.viewer-hud .row{border:1px solid var(--line);background:#1d2024e6;border-radius:8px;flex-wrap:wrap;gap:4px 8px;padding:6px 8px}.viewer-empty{color:var(--muted);pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.viewer-canvas:focus-visible{outline-offset:-3px}.undo-toast-region{z-index:40;pointer-events:none;position:absolute;bottom:12px;left:12px}.undo-toast{pointer-events:auto;max-width:min(520px,60vw);font-size:var(--font-small);color:var(--fg);border:1px solid var(--line);background:#1d2024f5;border-radius:8px;align-items:center;gap:8px;padding:6px 6px 6px 12px;display:flex;box-shadow:0 6px 20px #00000073}.undo-toast-btn{min-height:28px;color:var(--accent);border:1px solid var(--accent);background:0 0;padding:2px 10px;font-weight:600}.undo-toast-btn:hover{color:#0b1220;background:var(--accent)}.undo-toast-close{width:24px;height:24px;min-height:24px;color:var(--fg-2);background:0 0;border:0;border-radius:6px;place-items:center;padding:0;display:grid}.undo-toast-close:hover{background:var(--bg-3);color:var(--fg)}.step{border-bottom:1px dashed var(--line);padding:6px 0}.step.off{opacity:.6}.panel-notices{flex-direction:column;gap:4px;padding:10px 12px 0;display:flex}.check{border-bottom:1px dashed var(--line);grid-template-columns:auto 1fr auto auto;align-items:center;gap:6px 8px;padding:6px 0;display:grid}.check.on{background:#4da3ff14}.check-btn{cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;border:none;border-bottom:1px dashed var(--line);background:0 0;border-radius:0}.check-btn:hover{border-color:var(--accent)}.check-eye{white-space:nowrap;border:1px solid var(--line);border-radius:999px;align-items:center;gap:4px;padding:1px 8px;display:inline-flex}.check-btn:hover .check-eye{border-color:var(--accent)}.check-msg{grid-column:1/5}.ctl{grid-template-columns:110px 1fr 64px 28px;align-items:center;gap:6px;margin:4px 0;display:grid}.ctl-label{color:var(--fg-2)}.ctl-num{width:64px;padding:3px 6px}.mode-switch{gap:4px;display:flex}.sep-panel{flex-direction:column;display:flex}.ink-row{border-bottom:1px dashed var(--line);padding:6px 0}.ink-row .row{flex-wrap:wrap}.ink-swatch{width:28px;height:28px;padding:2px}.ink-more{padding:4px 0 4px 20px}.sep-status{font-size:var(--font-small);color:var(--fg-2)}.sep-status .error{color:var(--fail);font-weight:600}.viewer-hud select{max-width:220px;padding:5px 6px}.mockup-panel{flex-direction:column;display:flex}.mockup-status{font-size:var(--font-small);color:var(--fg-2)}.mockup-status .error{color:var(--fail);font-weight:600}.swatches{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.swatch{border:1px solid var(--line);border-radius:6px;width:24px;height:24px;min-height:0;padding:0}.swatch[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:1px}.swatch[aria-pressed=true]:focus-visible{outline-color:var(--focus);outline-offset:2px}.swatch.shown{box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #00000080}.swatch-wrap{margin:4px 4px 0 0;display:inline-block;position:relative}.chips{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.chip{font-size:var(--font-small);color:var(--fg);background:var(--bg-3);border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;padding:2px 2px 2px 8px;display:inline-flex}.chip.on-screen{outline:2px solid var(--accent);outline-offset:1px}.chip-dot{border:1px solid var(--line);border-radius:50%;flex:none;width:12px;height:12px}.chip-name{white-space:nowrap;text-overflow:ellipsis;max-width:160px;overflow:hidden}.chip-remove{width:24px;height:24px;min-height:24px;color:var(--fg-2);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.chip-remove:hover{background:var(--fail);color:#fff}.swatch-custom{flex-wrap:wrap}.swatch-custom input[type=color]{width:32px;height:28px;padding:2px}.extra-print+.extra-print{border-top:1px solid var(--line);margin-top:6px;padding-top:6px}.template-row{padding:3px 0}.template-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.error{color:var(--fail)}.warn-text{color:var(--warn)}.modal-backdrop{z-index:30;background:#0009;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.template-editor{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,auto) minmax(320px,360px);gap:16px;max-width:100%;max-height:100%;padding:14px;display:grid;overflow:hidden;box-shadow:0 12px 40px #00000080}.template-editor h2{margin:0;font-size:14px}.template-editor .section:last-child{border-bottom:0}.editor-photo{flex-direction:column;gap:8px;min-width:0;min-height:0;display:flex;overflow:auto}.editor-empty{border:1px dashed var(--line);border-radius:8px;place-items:center;width:320px;height:240px;display:grid}.editor-canvas-wrap{align-self:start;position:relative}.editor-canvas{border:1px solid var(--line);border-radius:6px;display:block}.editor-handles{touch-action:none;pointer-events:none;position:absolute;top:0;left:0}.quad-outline{fill:none;stroke:var(--accent);stroke-width:1px;stroke-dasharray:6 4}.area-outline{stroke:var(--muted)}.area-label{fill:var(--fg-2);font-size:var(--font-pill)}.quad-handle{pointer-events:auto;fill:#4da3ff59;stroke:var(--accent);stroke-width:2px;cursor:grab}.quad-handle:hover{fill:#4da3ffb3}.editor-areas{flex-direction:column;gap:4px;display:flex}.area-row{align-items:center;gap:6px;padding:3px 0;display:flex}.area-row+.area-row{border-top:1px solid var(--line)}.area-active{color:var(--fg-2);align-items:center;gap:4px;display:flex}.area-name{flex:1;min-width:80px}.editor-controls{min-height:0;overflow:auto}.editor-controls .ctl{grid-template-columns:110px 1fr 56px 24px}.editor-actions{border-top:1px solid var(--line);flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px;padding-top:10px;display:flex}
