:root{--bg: #0f1115;--surface: #171a21;--surface-2: #1f232c;--line: #2b303b;--text: #e8eaf0;--muted: #99a1b3;--accent: #6ea8fe;--accent-ink: #0f1115;--good: #4ec9a5;--warn: #e0b341;--bad: #f0796a;color-scheme:dark}@media (prefers-color-scheme: light){:root{--bg: #f6f7fa;--surface: #ffffff;--surface-2: #eef1f6;--line: #d9dee8;--text: #16181d;--muted: #5c6474;--accent: #2563eb;--accent-ink: #ffffff;--good: #0f8a68;--warn: #9a6a00;--bad: #c4382a;color-scheme:light}}:root{--control-h: 44px;--control-h-small: 36px;--control-h-compact: 40px;--control-font: 15px;--control-font-small: 13px;--tap: 44px}*{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100svh;background:var(--bg);color:var(--text);font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.app{max-width:640px;margin:0 auto;padding:20px 16px calc(40px + env(safe-area-inset-bottom))}.top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}h1{font-size:22px;margin:0;line-height:1.2;letter-spacing:-.02em}.logo{width:1.15em;height:1.15em;margin-right:8px;vertical-align:-.2em}.lede{color:var(--muted);margin:8px 0 20px}.dropzone{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:14px;text-align:center}.preview{max-height:220px;max-width:100%;border-radius:10px;margin-bottom:16px;display:block;margin-inline:auto}.drop-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.drop-actions>*{flex:1;min-width:120px}button,.button{font:inherit;font-size:var(--control-font);border:1px solid var(--line);background:var(--surface-2);color:var(--text);border-radius:10px;min-height:var(--control-h);padding:0 16px;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer}button:hover:not(:disabled),.button:hover{border-color:var(--accent)}button:disabled{opacity:.4;cursor:not-allowed}button.button:disabled:hover{border-color:var(--line)}.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.ghost{background:transparent}.small{min-height:var(--control-h-small);padding:0 12px;font-size:var(--control-font-small);position:relative}.small:after{content:"";position:absolute;inset:calc((var(--tap) - 100%) / -2) 0;min-height:var(--tap)}.row{display:flex;gap:8px}.row input{flex:1;min-width:0}.universal{resize:vertical;text-align:left;margin:12px 0}.dropzone.dragging{border-color:var(--accent);background:var(--surface-2)}input,select,textarea{font:inherit;width:100%;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:10px 12px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px}input:disabled{opacity:.5}label:not(.button):not(.checkbox):not(.pick-wrap){display:block;font-size:13px;color:var(--muted);margin-top:12px}label>input,label>textarea,label>.row{margin-top:4px}.method{margin:16px 0 0;padding:0;border:0}.method legend{padding:0;font-size:13px;color:var(--muted)}label.choice{display:flex;align-items:flex-start;gap:10px;margin-top:8px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;color:var(--text);font-size:14px;cursor:pointer}label.choice:has(input:checked){border-color:var(--accent)}label.choice:has(input:disabled){opacity:.55;cursor:default}label.choice input{width:18px;height:18px;margin:2px 0 0;flex:none}label.choice span{display:block;min-width:0}label.choice strong{display:block;font-weight:600}label.choice em{display:block;margin-top:2px;font-style:normal;font-size:12.5px;color:var(--muted)}label.checkbox{display:flex;align-items:center;gap:8px;margin-top:12px;color:var(--text);font-size:var(--control-font)}label.checkbox input{width:20px}details summary{cursor:pointer;color:var(--muted)}details textarea{margin:10px 0}.muted{color:var(--muted);font-size:13px}.hint{color:var(--muted);font-size:13px;margin:4px 0 0}.hint.build{margin-top:18px;font-size:11px;opacity:.7}.diagnose{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}.variants{display:grid;gap:6px;margin-top:10px}.variants .button{text-align:left;font-family:ui-monospace,monospace}.report{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px;margin:10px 0;font-size:11px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;overflow:auto}.status,.error{margin-top:16px;padding:10px 14px;border-radius:10px;background:var(--surface);border:1px solid var(--line)}.error{border-color:var(--bad);color:var(--bad);white-space:pre-line;font-size:14px}.spinner{display:inline-block;width:12px;height:12px;border:2px solid var(--muted);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite;margin-right:6px;vertical-align:-1px}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation:none}}.bulk{margin-top:24px;padding:14px 16px 16px;background:var(--surface);border:1px solid var(--line);border-radius:14px}.bulk-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:14px;color:var(--muted)}.bulk .card-actions{margin-top:12px}.status{display:flex;align-items:center;margin-top:20px}.results{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-top:24px}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;transition:opacity .15s ease}.card.deselected{opacity:.45}input[type=checkbox]{width:20px;height:20px;min-width:20px;padding:0;accent-color:var(--accent)}.pick-wrap{display:inline-flex;padding:12px;margin:-12px 0 -12px -12px;vertical-align:-10px;cursor:pointer}.pick{margin:0}.card.attention{border-color:var(--warn)}.summary h2{margin:0;font-size:17px;line-height:1.35;letter-spacing:-.01em}.when{margin:6px 0 0;font-size:15px}.repeat{color:var(--accent)}.quote{margin:8px 0 0;font-size:13px;color:var(--muted);font-style:italic;overflow-wrap:anywhere}.editor{margin-top:12px;padding-top:4px;border-top:1px solid var(--line)}.note{display:flex;align-items:flex-start;gap:8px;background:var(--surface-2);border-radius:8px;padding:8px 10px;font-size:13px;margin:12px 0 0}.note>span{flex:1;min-width:0}.note-done{flex:0 0 auto;margin:-4px -4px 0 0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:0 12px}.card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px}a.button{text-decoration:none;display:inline-flex}.foot{color:var(--muted);font-size:12px;margin-top:40px;text-align:center}.sheet-backdrop{position:fixed;inset:0;z-index:20;background:#0000008c;display:flex;align-items:flex-end;justify-content:center;padding:16px;overflow:auto}.sheet{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px;width:min(520px,100%);margin:auto}.sheet h2{margin:0;font-size:18px}.sheet-actions{display:flex;align-items:center;gap:10px;margin-top:20px}.sheet-actions .spacer{flex:1}.camera{margin-bottom:14px}.camera.off{display:flex;justify-content:center;padding:6px 0 2px}.stage{--stage-h: var(--room, min(52svh, max(140px, calc(100svh - 400px) )));--stage-w: max( min( calc(100vw - 60px) , 180px), min( calc(100vw - 60px) , 612px, calc(var(--stage-h) * var(--ar, 1.3333))) );position:relative;width:var(--stage-w);height:calc(var(--stage-w) / var(--ar, 1.3333));margin-inline:auto;border-radius:12px;overflow:hidden;background:#000}.stage video{width:100%;height:100%;object-fit:contain;display:block}.frame-guide{position:absolute;inset:8%;border:2px solid rgba(255,255,255,.55);border-radius:10px;pointer-events:none}.stage-top{position:absolute;top:8px;left:8px;right:8px;display:flex;justify-content:flex-end;gap:8px}.vf-chip{background:#0000008c;color:#fff;border:1px solid rgba(255,255,255,.25);border-radius:999px;min-height:var(--control-h-small);padding:0 12px;font-size:var(--control-font-small);position:relative}.vf-chip:after{content:"";position:absolute;inset:calc((var(--tap) - 100%) / -2) -2px}.stage-error{position:absolute;inset:auto 12px 12px;margin:0;padding:10px 12px;border-radius:8px;background:#000000b3;color:#fff;font-size:13px}.shutter-row{display:flex;justify-content:center;align-items:center;margin-top:12px}.shutter{width:64px;height:64px;flex:0 0 auto;border-radius:50%;background:transparent;border:3px solid var(--text);padding:0;display:grid;place-items:center}.shutter span{width:48px;height:48px;border-radius:50%;background:var(--accent);transition:transform .1s ease}.shutter:active span{transform:scale(.88)}.shutter:disabled{opacity:.4}.clipboard{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 12px;margin-bottom:12px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px}.clipboard.ask{justify-content:center}.clip-icon{flex:0 0 auto;font-size:15px}.clip-thumb{flex:0 0 auto;height:34px;width:34px;object-fit:cover;border-radius:5px}.clip-text{flex:1;min-width:0;font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clip-go{flex:0 0 auto;font-size:13px;font-weight:600;color:var(--accent)}.or{display:flex;align-items:center;gap:10px;margin:16px 0 12px;color:var(--muted);font-size:12px}.or:before,.or:after{content:"";flex:1;height:1px;background:var(--line)}.dropzone.working{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;justify-items:center;text-align:left}.work-row{display:flex;align-items:center;gap:14px;width:100%;min-width:0}.work-thumb{width:64px;height:64px;flex:0 0 auto;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:var(--surface-2)}.work-thumb.glyph{display:grid;place-items:center;font-size:26px}.work-what{min-width:0;flex:1}.work-stage{margin:0;display:flex;align-items:center;font-weight:600}.work-glimpse{margin:4px 0 0;max-width:100%;font-size:14px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.work-steps{display:flex;gap:8px;align-items:center;list-style:none;margin:0;padding:0;width:100%;font-size:12px;color:var(--muted)}.work-steps li{flex:1;border-top:3px solid var(--line);padding-top:6px;text-align:center}.work-steps li.done{border-top-color:var(--accent);color:var(--text)}.work-steps li.now{border-top-color:var(--accent);color:var(--text);font-weight:600}.work-steps li.now{animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.55}}@media (prefers-reduced-motion: reduce){.work-steps li.now{animation:none}}@media (max-height: 640px){.foot{display:none}.or{margin:6px 0}}.drop-actions>*{font-size:var(--control-font);background:var(--surface-2);color:var(--text)}.where{margin:4px 0 0;font-size:14px;color:var(--muted)}.when{font-variant-numeric:tabular-nums}.dropzone.again{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px}.dropzone.again .clipboard.ask.tight,.dropzone.again .drop-actions.tight>*{flex:1 1 auto}@media (max-width: 380px){.dropzone.again{display:grid;grid-template-columns:1fr 1fr}.dropzone.again .camera.off,.dropzone.again .clipboard.ask.tight,.dropzone.again .drop-actions.tight>*{width:100%;min-width:0}}.dropzone.again .camera.off{flex:1 1 auto;margin:0;padding:0;min-height:var(--control-h-compact)}.dropzone.again .drop-actions.tight{display:contents}.dropzone.again .camera.off .button,.dropzone.again .clipboard.ask.tight,.dropzone.again .drop-actions.tight>*{flex:0 1 auto;width:auto;min-width:0;margin:0;font-size:var(--control-font-small);min-height:var(--control-h-compact);padding:0 12px}.dropzone.again .camera.off .button{width:100%}button:focus-visible,.button:focus-visible,a.button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:active:not(:disabled),.button:active{transform:translateY(1px)}@media (prefers-reduced-motion: reduce){button:active:not(:disabled),.button:active{transform:none}}.app.scanning{padding:0;max-width:none;height:100svh}.app.scanning .dropzone{position:fixed;top:0;left:0;right:0;height:100svh;z-index:1;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:0;background:#000}.app.scanning .camera{margin:0;width:100%;height:100%}.app.scanning .stage{width:100%;height:100%;border-radius:0}.app.scanning .stage video{object-fit:contain}.app.scanning .top{position:fixed;top:0;left:0;right:0;z-index:3;margin:0;padding:calc(10px + env(safe-area-inset-top)) 14px 22px;color:#fff;background:linear-gradient(#0000004d,#0000);pointer-events:none}.app.scanning .top>*{pointer-events:auto}.app.scanning h1{font-size:18px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.6)}.app.scanning .top .ghost.small,.app.scanning .vf-chip,.app.scanning .clipboard,.app.scanning .drop-actions>*{background:#000000ad;border-color:#fff6;color:#fff}.app.scanning .shutter-row{position:absolute;left:0;right:0;bottom:calc(18px + env(safe-area-inset-bottom));z-index:3;gap:12px;padding:0 16px;margin:0}.app.scanning .shutter{border-color:#fff}.app.scanning .or{display:none}.app.scanning .clipboard,.app.scanning .drop-actions{position:absolute;z-index:3;bottom:calc(96px + env(safe-area-inset-bottom));margin:0}.app.scanning .clipboard{left:16px;width:auto;max-width:55vw;font-size:var(--control-font-small);min-height:var(--control-h-small);padding:0 12px}.app.scanning .clip-text{color:#fff;opacity:.85;max-width:34vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app.scanning .clip-go{display:none}.app.scanning .drop-actions{right:16px;width:auto;gap:8px}.app.scanning .drop-actions>*{flex:0 0 auto;min-width:0;font-size:var(--control-font-small);min-height:var(--control-h-small);padding:0 12px}.app.scanning .foot,.app.scanning .results,.app.scanning .bulk,.app.scanning .clipboard .clip-thumb{display:none}.app.scanning .stage-top{top:calc(60px + env(safe-area-inset-top));z-index:3}.app.scanning .frame-guide{display:none}.toasts{position:fixed;top:calc(12px + env(safe-area-inset-top));left:12px;right:12px;z-index:10;display:grid;gap:8px;max-width:560px;margin:0 auto;pointer-events:none}.app.scanning .toasts{top:calc(116px + env(safe-area-inset-top))}.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:8px;margin:0;padding:10px 6px 10px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--line);color:var(--text);font-size:14px;box-shadow:0 8px 24px #00000059;max-height:45svh;overflow:auto}.toast p{flex:1;min-width:0;margin:0;padding-top:6px;white-space:pre-line;overflow-wrap:anywhere}.toast.error{border-color:var(--bad);border-left-width:4px}.toast.hint-toast{border-color:var(--warn);border-left-width:4px;font-size:13px}.toast-close{flex:0 0 auto;width:var(--tap);min-height:var(--tap);padding:0;background:transparent;border-color:transparent;color:var(--muted)}.app.scanning .stage-error{inset:calc(116px + env(safe-area-inset-top)) 12px auto;z-index:3}.card-actions .ghost.small{flex:0 0 auto}.split{position:relative;display:flex;flex:1 1 180px;min-width:0}.split-main{flex:1;min-width:0;white-space:nowrap}.card-actions>.split-main{flex:1 1 180px}.split-main:not(:only-child){border-top-right-radius:0;border-bottom-right-radius:0}.split-more,.split-more:hover:not(:disabled){border-left-color:color-mix(in srgb,var(--accent-ink) 25%,transparent)}.split-more{flex:0 0 auto;width:var(--tap);padding:0;border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid color-mix(in srgb,var(--accent-ink) 25%,transparent)}.split-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:5;display:grid;padding:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px #00000059}.split-menu button{justify-content:flex-start;background:transparent;border-color:transparent;width:100%}.split-menu button:hover:not(:disabled){background:var(--surface);border-color:transparent}.caveat{margin:8px 2px 0}.camera.off{flex-direction:column;align-items:center}.camera-error{margin:0 0 8px;color:var(--bad);font-size:13px;text-align:center}.toast.adding-toast{border-color:var(--accent);border-left-width:4px}.toast-action{display:flex;margin-top:8px;margin-left:-12px;color:var(--accent)}.icon{flex:0 0 auto;display:block}.icon-button,.vf-chip{padding:0;aspect-ratio:1;justify-content:center}.card-actions .icon-button{min-width:var(--control-h-small)}.vf-chip{min-height:var(--tap);width:var(--tap)}.vf-chip[aria-pressed=true]{color:#ffd25e;border-color:#ffd25e99}.top .icon-button{width:var(--tap);min-height:var(--tap)}.top .icon-button{border-radius:999px}.app.scanning .stage-top{left:14px;right:14px}.clip-icon .icon{width:18px;height:18px}.bulk-tools{display:flex;gap:8px}.stage video{transition:opacity .15s ease}.stage video.waiting{opacity:0}.hint.warn{color:var(--warn)}.checks{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px;font-size:13px}.checks li{padding-left:1.4em;text-indent:-1.4em}.checks li.ok span{color:var(--good)}.checks li.fail span{color:var(--bad)}.checks li.warn span{color:var(--warn)}.checks li.skip{color:var(--muted)}.app.scanning{--chips: 1}.app.scanning:has(.stage-top .vf-chip+.vf-chip){--chips: 2}.app.scanning .top{padding-left:calc(14px + env(safe-area-inset-left));padding-right:calc(14px + env(safe-area-inset-right))}.app.scanning .top .icon-button{margin-right:calc(var(--chips) * (var(--tap) + 8px))}.app.scanning .stage-top{position:fixed;top:calc(10px + env(safe-area-inset-top));left:auto;right:calc(14px + env(safe-area-inset-right));z-index:4}.app.scanning .dropzone{align-items:flex-end;gap:8px;padding-bottom:calc(96px + env(safe-area-inset-bottom))}.app.scanning .camera{position:absolute;inset:0}.app.scanning .clipboard,.app.scanning .drop-actions{position:relative;left:auto;right:auto;bottom:auto}.app.scanning .toasts{top:calc(64px + env(safe-area-inset-top))}.app.scanning:is(.home-left,.home-right) .dropzone{padding-bottom:calc(14px + env(safe-area-inset-bottom))}.app.scanning:is(.home-left,.home-right) .shutter-row{inset:50% auto auto;padding:0;transform:translateY(-50%)}.app.scanning.home-right .shutter-row{right:calc(18px + env(safe-area-inset-right))}.app.scanning.home-left .shutter-row{left:calc(18px + env(safe-area-inset-left))}.model-field{position:relative;margin-top:12px}.model-field>label{margin-top:0}.model-field>.row{margin-top:4px}.model-field .row input{flex:1 1 auto;min-width:0}.model-toggle{flex:0 0 auto;width:var(--tap);padding:0;justify-content:center}.model-list{position:absolute;top:100%;left:0;right:0;z-index:5;margin:4px 0 0;padding:4px;list-style:none;max-height:240px;overflow-y:auto;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #00000059}.model-list button{display:block;width:100%;min-height:var(--control-h-small);padding:0 10px;text-align:left;font-size:14px;background:transparent;border:0;border-radius:6px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-list button.active,.model-list button:hover{background:var(--surface)}.model-list button.chosen{color:var(--accent);font-weight:600}
