:root{--bg: #121214;--panel: #1a1a1f;--line: #2b2b33;--text: #e8e8ee;--muted: #8d8d9a;--accent: #3dd6a3;--accent-ink: #062b1f;--warn: #f5b84a;--front: #3dd6a3;--back: #6aa8ff;font-family:Segoe UI,system-ui,-apple-system,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}h1,h2{margin:0}button,input,select{font:inherit;color:inherit}.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.5rem;border-bottom:1px solid var(--line);background:#0e0e10}.brand{display:flex;align-items:center;gap:.75rem}.brand h1{font-size:1.1rem;letter-spacing:.02em}.brand p{margin:0;color:var(--muted);font-size:.8rem}.logo{font-size:1.6rem;color:var(--accent)}.status{font-size:.85rem;color:var(--muted);padding:.4rem .8rem;border:1px solid var(--line);border-radius:999px;max-width:55%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status.ok{color:var(--accent);border-color:#1f5e49}.status.err{color:#ff7b7b;border-color:#6b2a2a}.status.busy{color:var(--warn);border-color:#6b5220}.layout{display:grid;grid-template-columns:340px 1fr;gap:1rem;padding:1rem}@media(max-width:900px){.layout{grid-template-columns:1fr}}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px}.controls{padding:1rem;display:flex;flex-direction:column;gap:1.25rem;align-self:start}.controls section{display:flex;flex-direction:column;gap:.5rem}.controls h2,.source h2{font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.hint{margin:0;font-size:.78rem;color:var(--muted);line-height:1.4}.row{display:flex;gap:.5rem}.row>*{flex:1;min-width:0}input,select{background:#111115;border:1px solid var(--line);border-radius:8px;padding:.55rem .65rem;width:100%}input:focus,select:focus{outline:2px solid #1f5e49;border-color:var(--accent)}button{border-radius:8px;padding:.55rem .7rem;cursor:pointer;border:1px solid var(--line);background:#22222a;font-size:.85rem;transition:background .15s,border-color .15s}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600;padding:.75rem}button.ghost{background:transparent}button.active{border-color:var(--warn);color:var(--warn)}.drop{display:flex;flex-direction:column;gap:.3rem;align-items:center;text-align:center;padding:1.4rem 1rem;border:1.5px dashed #3a3a46;border-radius:10px;cursor:pointer}.drop:hover,.drop.over{border-color:var(--accent);background:#15201c}.drop input{display:none}.drop span{font-size:.78rem;color:var(--muted)}.workspace{display:flex;flex-direction:column;gap:1rem;min-width:0}.viewport{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:700px){.viewport{grid-template-columns:1fr}}.card-frame{margin:0;display:flex;flex-direction:column;gap:.4rem}.card-frame figcaption{font-size:.72rem;letter-spacing:.2em;color:var(--muted)}.frame{aspect-ratio:1012 / 638;border:2px dashed #3a3a46;border-radius:14px;display:grid;place-items:center;overflow:hidden;background:#0d0d10}#front-frame.filled{border-color:var(--front)}#back-frame.filled{border-color:var(--back)}.frame img{width:100%;height:100%;object-fit:contain;image-rendering:auto}.empty{color:#555561;font-size:.85rem}.source{padding:1rem}.source-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.badge{font-size:.78rem;color:var(--warn);border:1px solid #6b5220;padding:.2rem .6rem;border-radius:999px}.hidden{display:none}.pages{display:flex;flex-wrap:wrap;gap:1rem}.page{position:relative;max-width:100%}.page canvas{display:block;max-width:100%;height:auto;border-radius:6px;background:#fff}.page.picking canvas{cursor:crosshair;outline:2px solid var(--warn)}.page-label{font-size:.72rem;color:var(--muted);margin-bottom:.3rem}#print-root{display:none}@media print{html,body{background:#fff!important;margin:0!important;padding:0!important}#app{display:none!important}#print-root{display:block!important}.print-card{width:85.6mm;height:54mm;overflow:hidden;break-after:page;page-break-after:always}.print-card:last-child{break-after:auto;page-break-after:auto}.print-card img{width:85.6mm;height:54mm;display:block}.print-sheet{display:flex;gap:6mm;padding:15mm 12mm}.print-sheet img{width:85.6mm;height:54mm;display:block;outline:.2mm dashed #999}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
