:root{--paper: #ece5d5;--paper-hi: #f7f3e9;--ink: #211d16;--ink-soft: #57503f;--line: rgba(33, 29, 22, .18);--line-strong: rgba(33, 29, 22, .55);--accent: #d2451e;--accent-ink: #b23411;--ok: #2c6b3f;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", monospace;--display: "Fraunces", "Iowan Old Style", georgia, serif}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--mono);font-size:13px;color:var(--ink);background:var(--paper)}#app{display:flex;height:100vh}.panel{width:320px;flex:none;overflow-y:auto;background:var(--paper-hi);border-right:2px solid var(--ink);display:flex;flex-direction:column}.masthead{padding:20px 18px 14px;border-bottom:2px solid var(--ink);background:repeating-linear-gradient(-45deg,transparent 0 10px,rgba(210,69,30,.06) 10px 11px)}.masthead h1{margin:0;font-family:var(--display);font-weight:700;font-size:34px;line-height:1;letter-spacing:-.5px}.masthead .sub{margin:7px 0 0;font-size:11px;text-transform:uppercase;letter-spacing:1.6px;color:var(--accent-ink)}.step{padding:14px 18px 16px;border-bottom:1px solid var(--line)}.step h2{margin:0 0 10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2px}.step h2 .no{display:inline-block;color:var(--accent);margin-right:6px}input[type=search],input[type=number],select{font:inherit;color:var(--ink);background:var(--paper-hi);border:1px solid var(--line-strong);border-radius:0;padding:6px 8px;width:100%}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.row{display:flex;align-items:center;gap:8px;margin-top:8px}.row label{flex:none;width:86px;font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.5px}.grid2{display:grid;grid-template-columns:1fr 1fr;column-gap:12px}.grid2 .row label{width:auto;min-width:62px}.grid2 .row input,.grid2 .row select{min-width:0}.checks{margin-top:12px;display:flex;flex-direction:column;gap:6px}.checks label{display:flex;gap:8px;align-items:center;cursor:pointer}.checks input{accent-color:var(--accent)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:stretch;justify-content:center;background:#211d168c;padding:24px}.modal[hidden]{display:none}.modal-frame{display:flex;flex-direction:column;width:min(1180px,100%);background:var(--paper-hi);border:2px solid var(--ink);box-shadow:8px 10px #211d1659}.modal-head{display:flex;align-items:center;gap:14px;padding:12px 18px;border-bottom:2px solid var(--ink);background:repeating-linear-gradient(-45deg,transparent 0 10px,rgba(210,69,30,.06) 10px 11px)}.modal-head h2{margin:0;font-family:var(--display);font-weight:700;font-size:24px;letter-spacing:-.3px}.modal-head input[type=search]{flex:1;max-width:340px}.modal-head .minor{margin-left:auto;white-space:nowrap}.modal-head .btn{width:auto;margin:0;padding:7px 18px}.cat-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;padding:16px 18px;align-content:start}.cat-card{display:flex;flex-direction:column;gap:4px;border:1px solid var(--line-strong);background:#fff;padding:6px 6px 5px;cursor:pointer;font:inherit;color:var(--ink);text-align:center;position:relative}.cat-card:hover{border-color:var(--accent)}.cat-card .thumb{width:100%;aspect-ratio:1;background-repeat:no-repeat;image-rendering:auto}.cat-card .thumb.blank{display:grid;place-items:center;font-family:var(--display);font-size:30px;color:var(--line-strong)}.cat-card .nom{font-size:10px;text-transform:uppercase;letter-spacing:.4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-card.on{border:2px solid var(--accent);padding:5px 5px 4px}.cat-card.on:after{content:"✓";position:absolute;top:2px;right:5px;color:var(--accent);font-weight:600}.modal-foot{border-top:1px solid var(--line-strong);padding:8px 18px;min-height:66px}.modal-foot .peek{margin-top:0;border:0;padding:0;display:flex;align-items:center;gap:12px}.modal-foot .peek canvas{width:auto;height:44px}.chips{display:flex;flex-direction:column;gap:4px;margin-top:8px}.chips:empty{display:none}.chip{display:flex;align-items:center;gap:6px;font-size:11px;border:1px solid var(--ink);background:var(--paper);padding:3px 5px 3px 8px}.chip .nom{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip input[type=number]{width:66px;padding:2px 4px;font-size:11px}.chip .fixed{color:var(--ink-soft)}.chip .x{border:0;background:none;font:inherit;color:var(--accent);cursor:pointer;padding:0 3px}.chip.loaded{border-color:var(--ok)}.chip.loaded .nom:after{content:" ✓";color:var(--ok)}.peek{margin-top:8px;border:1px solid var(--line-strong);background:#fff;padding:6px}.peek canvas{display:block;width:100%}.peek .minor{margin-top:4px}.sliders{margin-top:10px}.slider-row{display:flex;align-items:center;gap:8px;margin-top:4px}.slider-row label{flex:none;width:62px;font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.5px}.slider-row input[type=range]{flex:1;accent-color:var(--accent);min-width:0}.slider-row output{flex:none;width:34px;text-align:right;font-size:11px}.linkbtn{border:0;background:none;font:inherit;font-size:11px;color:var(--accent-ink);text-decoration:underline;cursor:pointer;padding:0;margin-top:6px}.check{display:flex;gap:8px;align-items:center;cursor:pointer;margin-top:10px}.check input{accent-color:var(--accent)}.btn{display:block;width:100%;margin-top:12px;font:inherit;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;padding:9px 10px;background:var(--paper-hi);color:var(--ink);border:1.5px solid var(--ink);box-shadow:3px 3px 0 var(--ink);cursor:pointer;transition:transform .06s ease,box-shadow .06s ease}.btn:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.btn:active:not(:disabled){transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.btn.primary{background:var(--accent);color:var(--paper-hi);border-color:var(--ink)}.btn:disabled{opacity:.4;box-shadow:none;cursor:not-allowed}.minor{margin-top:9px;font-size:11px;color:var(--ink-soft)}.filelink{color:var(--accent-ink);text-decoration:underline;cursor:pointer}.status{margin-top:8px;font-size:11px;line-height:1.5;color:var(--ink-soft);white-space:pre-line}.status.err{color:var(--accent-ink)}.dropzone{display:flex;align-items:center;justify-content:center;min-height:96px;border:1.5px dashed var(--line-strong);color:var(--ink-soft);text-align:center;font-size:11px;line-height:1.6;cursor:pointer;overflow:hidden}.dropzone:hover,.dropzone.over{border-color:var(--accent);color:var(--accent-ink)}.dropzone img{max-width:100%;max-height:150px;display:block}.progress{margin-top:10px}.bar{height:10px;border:1px solid var(--ink);background:var(--paper-hi);padding:1px}#progressBar{height:100%;width:0%;background:repeating-linear-gradient(-45deg,var(--accent) 0 6px,var(--accent-ink) 6px 12px);transition:width .15s ease}#progressLabel{margin-top:5px;font-size:11px;color:var(--ink-soft)}.colophon{margin-top:auto;padding:12px 18px 16px;font-size:10px;color:var(--ink-soft);border-top:1px solid var(--line)}.colophon a{color:var(--accent-ink)}.bed{flex:1;overflow:auto;position:relative;display:grid;place-items:center;padding:40px;background:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px),linear-gradient(rgba(33,29,22,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(33,29,22,.06) 1px,transparent 1px),var(--paper);background-size:120px 120px,120px 120px,24px 24px,24px 24px,auto}.sheet{background:#fff;padding:18px;box-shadow:0 1px 0 var(--line-strong),6px 8px #211d1638;animation:settle .35s ease}.sheet canvas{display:block}@keyframes settle{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.empty{text-align:center;color:var(--ink-soft);font-size:12px;letter-spacing:.5px;line-height:2;-webkit-user-select:none;user-select:none}.empty .reticle{width:64px;height:64px;margin:0 auto 18px;border:1.5px solid var(--line-strong);border-radius:50%;position:relative}.empty .reticle:before,.empty .reticle:after{content:"";position:absolute;background:var(--line-strong)}.empty .reticle:before{left:50%;top:-10px;bottom:-10px;width:1.5px}.empty .reticle:after{top:50%;left:-10px;right:-10px;height:1.5px}@media(max-width:760px){#app{flex-direction:column;height:auto}.panel{width:100%;border-right:0;border-bottom:2px solid var(--ink)}.bed{min-height:60vh}}
