:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#10141a;--bg-2:#171d26;--panel:#1c2430;--line:#e2c0892e;--ink:#f4efe6;--muted:#9aa4b2;--gold:#e2c089;--gold-deep:#b9894a;--felt:#1f6f5b;--confirmed:#3dcf8e;--uncertain:#e6c35c;--unknown:#e85d5d;--corrected:#6aa7ff;--shadow:0 24px 60px #00000059;background:var(--bg);color:var(--ink);font-family:Figtree,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(1200px 500px at 10% -10%, #1f6f5b47, transparent 50%), radial-gradient(900px 400px at 100% 0%, #b9894a29, transparent 42%), var(--bg)}button,input{font:inherit}h1,h2,h3{letter-spacing:-.02em;margin:0;font-family:Newsreader,Georgia,serif;font-weight:650}.app{width:min(1200px,100% - 32px);margin:0 auto;padding:28px 0 64px}.topbar{justify-content:space-between;align-items:end;gap:16px;margin-bottom:28px;display:flex}.eyebrow{color:var(--gold);letter-spacing:.16em;text-transform:uppercase;margin:0 0 4px;font-size:.78rem;font-weight:700}h1{font-size:clamp(2rem,4vw,3.1rem)}.uploader{margin-bottom:16px}.dropzone{border:1px dashed var(--gold);box-shadow:var(--shadow);cursor:pointer;background:linear-gradient(#1c2430eb,#10141aeb);border-radius:22px;gap:10px;padding:36px 28px;display:grid}.dropzone input{display:none}.dropzone-kicker,.dialog-kicker{color:var(--gold);letter-spacing:.14em;text-transform:uppercase;font-size:.78rem;font-weight:700}.dropzone strong{max-width:18ch;font-family:Newsreader,Georgia,serif;font-size:1.6rem;font-weight:650}.dropzone p,.banner,.dialog-meta,.decklist p{color:var(--muted);margin:0;line-height:1.5}.dropzone-cta,.button-secondary,.export-row button,.dialog-actions button,.add-suggestions button,.unresolved-list button{cursor:pointer;border:0;border-radius:999px;padding:10px 16px}.dropzone-cta{background:var(--gold);color:#1a140c;width:fit-content;font-weight:700}.upload-actions{flex-wrap:wrap;gap:10px;display:flex}.library-cta-mobile,.upload-camera-cta{display:none}@media (pointer:coarse){.library-cta-desktop{display:none}.library-cta-mobile{display:inline}.upload-camera-cta{display:inline-block}}.sample-picker{margin-top:18px}.sample-grid{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px;margin-top:10px;display:grid}.sample-card{border:1px solid var(--line);background:var(--panel);color:inherit;text-align:left;cursor:pointer;border-radius:16px;justify-items:start;gap:6px;padding:8px;display:grid}.sample-card:disabled{opacity:.55;cursor:not-allowed}.sample-card img,.sample-card-placeholder{aspect-ratio:4/3;object-fit:cover;background:#1b4332;border-radius:10px;width:100%}.sample-card-placeholder{background:linear-gradient(#f6efe314,#0000 42%),repeating-linear-gradient(90deg,#244c3a 0 18%,#1b4332 18% 22%);display:block}.sample-card strong{font-size:.95rem;font-weight:650}.sample-card span{color:var(--muted);font-size:.8rem;line-height:1.35}.banner{padding:0 8px}.banner.error{color:var(--unknown)}.processing-overlay{gap:20px;display:grid}.processing-stage{box-shadow:var(--shadow);background:#000;border-radius:18px;position:relative;overflow:hidden;transform:translateZ(0)}.processing-stage img{opacity:.42;width:100%;height:auto;display:block}.processing-dim{pointer-events:none;background:linear-gradient(#10141a40 0%,#10141a80 55%,#10141aa6 100%);position:absolute;inset:0}.processing-beam{will-change:transform;pointer-events:none;background:linear-gradient(#0000 0%,#e2c0890f 28%,#e2c08961 50%,#e2c0890f 72%,#0000 100%);height:20%;animation:2.6s ease-in-out infinite scan-beam;position:absolute;top:0;left:0;right:0;transform:translateY(-100%);box-shadow:0 0 48px #e2c08938}@keyframes scan-beam{0%,to{transform:translateY(-100%)}50%{transform:translateY(500%)}}.processing-status{gap:12px;padding:4px 2px 0;display:grid}.turn-phases{justify-content:space-between;gap:4px;margin:0;padding:0;list-style:none;display:flex}.turn-phase{text-align:center;flex:1;justify-items:center;gap:6px;min-width:0;display:grid}.turn-phase-dot{background:#e2c0892e;border-radius:50%;width:8px;height:8px;transition:background .25s,box-shadow .25s}.turn-phase-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.62rem;font-weight:700;line-height:1.2;transition:color .25s}.turn-phase.is-complete .turn-phase-dot{background:var(--gold-deep)}.turn-phase.is-complete .turn-phase-label{color:#e2c089b8}.turn-phase.is-current .turn-phase-dot{background:var(--gold);will-change:transform;animation:1.4s ease-in-out infinite phase-pulse;box-shadow:0 0 0 3px #e2c08938}.turn-phase.is-current .turn-phase-label{color:var(--gold)}@keyframes phase-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.45)}}.turn-progress-track{background:#e2c08924;border-radius:999px;height:4px;position:relative;overflow:hidden}.turn-progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--gold-deep), var(--gold));height:100%;transition:width .45s;position:relative;overflow:hidden}.turn-progress-fill:after{content:"";will-change:transform;background:linear-gradient(90deg,#0000,#ffffff6b,#0000);width:45%;animation:1.15s linear infinite progress-sheen;position:absolute;top:0;bottom:0}@keyframes progress-sheen{0%{transform:translate(-120%)}to{transform:translate(280%)}}.processing-quip{color:var(--ink);letter-spacing:-.01em;margin:0;font-family:Newsreader,Georgia,serif;font-size:1.35rem;font-weight:650}.processing-detail{color:var(--muted);margin:0;font-size:.92rem;line-height:1.45}@media (width<=640px){.turn-phase-label{font-size:0}.turn-phase.is-current .turn-phase-label{font-size:.62rem}.processing-quip{font-size:1.15rem}}.scanner{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:20px;display:grid}.stage-wrap{min-width:0}.stage{box-shadow:var(--shadow);background:#000;border-radius:18px;position:relative;overflow:hidden}.stage img,.overlay-root{width:100%;height:auto;display:block}.overlay-root{width:100%;height:100%;position:absolute;inset:0}.overlay-card{cursor:pointer}.overlay-card polygon{fill:#3dcf8e29;stroke:var(--confirmed);stroke-width:2px}.overlay-card.is-uncertain polygon{fill:#e6c35c29;stroke:var(--uncertain)}.overlay-card.is-unknown polygon{fill:#e85d5d29;stroke:var(--unknown)}.overlay-card.is-corrected polygon{fill:#6aa7ff29;stroke:var(--corrected)}.overlay-card.is-selected polygon{stroke-width:3.5px}.overlay-label-bg{fill:#10141ad1}.overlay-label{fill:var(--ink);font-family:Figtree,sans-serif;font-size:12px}.legend{color:var(--muted);flex-wrap:wrap;gap:12px 18px;margin:12px 0 0;padding:0;font-size:.9rem;list-style:none;display:flex}.swatch{border-radius:99px;width:10px;height:10px;margin-right:6px;display:inline-block}.swatch.confirmed{background:var(--confirmed)}.swatch.uncertain{background:var(--uncertain)}.swatch.unknown{background:var(--unknown)}.swatch.corrected{background:var(--corrected)}.decklist{border:1px solid var(--line);background:var(--panel);border-radius:18px;gap:16px;padding:18px;display:grid}.decklist h2{font-size:1.6rem}.decklist h3{margin-bottom:8px;font-size:1.05rem}.deck-lines,.unresolved-list,.candidate-list,.add-suggestions{margin:0;padding:0;list-style:none}.deck-lines{gap:8px;display:grid}.deck-lines li{grid-template-columns:28px 1fr;gap:8px;display:grid}.count{color:var(--gold);font-variant-numeric:tabular-nums}.unresolved-list button,.add-suggestions button,.candidate,.export-row button,.button-danger{text-align:left;background:var(--bg-2);width:100%;color:var(--ink)}.button-secondary{text-align:left;background:var(--bg-2);width:fit-content;color:var(--ink)}.export-row{gap:8px;display:grid}.count-stepper{gap:6px;margin:0 0 12px;display:grid}.count-stepper span{color:var(--muted);font-size:.85rem}.count-stepper-row{align-items:center;gap:10px;display:flex}.count-stepper-row button{background:var(--bg-2);width:36px;height:36px;color:var(--ink);cursor:pointer;border:0;border-radius:10px}.count-stepper-row strong{text-align:center;font-variant-numeric:tabular-nums;min-width:1.5ch}.search-field span,.add-card span{color:var(--muted);font-size:.85rem}input{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--ink);border-radius:12px;padding:10px 12px}.dialog-backdrop{z-index:10;background:#080a0e9e;place-items:end center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:var(--panel);width:min(520px,100%);box-shadow:var(--shadow);border-radius:20px 20px 12px 12px;gap:12px;padding:22px;display:grid}.candidate-list{gap:8px;max-height:280px;display:grid;overflow:auto}.candidate{cursor:pointer;border:0;border-radius:12px;justify-content:space-between;gap:12px;padding:12px;display:flex}.candidate em{color:var(--muted);font-style:normal}.candidate.is-current{outline:1px solid var(--corrected)}.dialog-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.dialog-actions button{width:100%}.button-danger{color:#ffd5d5;background:#e85d5d29}.empty-candidates{color:var(--muted)}@media (width>=800px){.dialog-backdrop{place-items:center}.dialog{border-radius:20px}}.scan-debug{border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:16px;margin-top:20px;padding:16px 18px}.scan-debug summary{cursor:pointer;color:var(--ink);font-weight:600}.scan-debug ul{gap:6px;margin:12px 0 0;padding:0;list-style:none;display:grid}.scan-debug .trace{gap:2px;font-size:.92rem;display:grid}.scan-debug .trace.is-matched strong{color:var(--confirmed)}.scan-debug .trace.is-not-detected strong{color:var(--unknown)}.scan-debug .trace.is-filtered strong,.scan-debug .trace.is-suppressed strong,.scan-debug .trace.is-ocr-unmatched strong,.scan-debug .trace.is-ocr-wrong-match strong{color:var(--uncertain)}.scan-debug em{color:var(--gold);font-style:normal}.scan-debug p{color:var(--gold);letter-spacing:.12em;text-transform:uppercase;margin:16px 0 0;font-size:.78rem}.training{width:100vw;margin-left:calc(50% - 50vw);padding:0 16px 32px}.training-toolbar{flex-wrap:wrap;align-items:center;gap:12px 18px;padding:10px 4px 14px;display:flex}.training-zoom{align-items:center;gap:8px;display:flex}.training-zoom button{background:var(--bg-2);width:34px;height:34px;color:var(--ink);cursor:pointer;border:0;border-radius:10px}.training-zoom button:last-child{width:auto;padding:0 12px}.training-zoom span{text-align:center;min-width:3.5ch;color:var(--muted);font-variant-numeric:tabular-nums}.training-hint{color:var(--muted);margin:0;font-size:.9rem}.training-restore-notice{color:var(--gold);margin:0;font-size:.88rem}.training-restore-notice strong{font-weight:650}.training-clear-saved{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;padding:10px 16px}.training-counts{gap:8px;margin-left:auto;display:flex}.training-counts .tag{background:var(--bg-2);color:var(--muted);border-radius:999px;padding:3px 10px;font-size:.82rem}.training-counts .tag.is-correct{color:var(--confirmed)}.training-counts .tag.is-corrected{color:var(--corrected)}.training-counts .tag.is-not-card{color:var(--unknown)}.training-counts .tag.is-added{color:var(--gold)}.training-continue{background:var(--gold);color:#1a140c;cursor:pointer;border:0;border-radius:999px;padding:10px 20px;font-weight:700}.training-stage{max-height:82vh;box-shadow:var(--shadow);background:#000;border-radius:14px;position:relative;overflow:auto}.training-canvas{position:relative}.training-canvas img{display:block}.training-overlay{width:100%;height:100%;position:absolute;inset:0}.training-surface{fill:#0000;cursor:crosshair}.training-box rect{fill:#f6efe30f;stroke:var(--muted);stroke-width:2px;cursor:pointer}.training-box.is-correct rect{stroke:var(--confirmed);fill:#3dcf8e24}.training-box.is-corrected rect{stroke:var(--corrected);fill:#6aa7ff29}.training-box.is-not-card rect{stroke:var(--unknown);fill:#e85d5d1f;stroke-dasharray:6 4}.training-box.is-added rect{stroke:var(--gold);fill:#e2c08929}.training-box.is-selected rect{stroke-width:4px}.training-draft{fill:#e2c0892e;stroke:var(--gold);stroke-width:2px;stroke-dasharray:5 4}.training-label-bg{fill:#10141ad9}.training-label{fill:var(--ink);font-family:Figtree,sans-serif;font-size:12px}.training-editor{border:1px solid var(--line);background:var(--panel);width:min(560px,100vw - 32px);box-shadow:var(--shadow);z-index:20;border-radius:16px;padding:14px 16px;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.training-editor-head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.training-editor-head strong{font-size:1.05rem}.training-close{background:var(--bg-2);width:28px;height:28px;color:var(--ink);cursor:pointer;border:0;border-radius:8px;margin-left:auto;font-size:1.1rem}.training-editor-form{gap:10px;display:grid}.training-editor-actions{flex-wrap:wrap;gap:8px;display:flex}.training-editor-actions button{background:var(--gold);color:#1a140c;cursor:pointer;border:0;border-radius:999px;padding:9px 16px;font-weight:600}.training-editor-actions button.is-correct{color:var(--confirmed);background:#3dcf8e33}.training-editor-actions button.is-not-card{color:#ffd5d5;background:#e85d5d2e}.training-report textarea{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--ink);resize:vertical;border-radius:12px;padding:12px;font-family:SF Mono,ui-monospace,monospace;font-size:.82rem}
