:root{--primary:#2563eb;--on-primary:#fff;--primary-weak:#eaf1fe;--accent:#b45309;--accent-weak:#fdf3e3;--bg:#f8fafc;--fg:#0f172a;--card:#fff;--muted:#f1f5fd;--muted-fg:#475569;--faint-fg:#64748b;--line:#e4ecfc;--line-strong:#cbd8ef;--good:#15803d;--good-weak:#e8f6ec;--danger:#dc2626;--danger-weak:#fdecec;--warn:#b45309;--warn-weak:#fdf3e3;--ring:#2563eb;--grid:#0f172a08;--grid-major:#0f172a0e;--glass-bg:#ffffffb8;--glass-line:#0f172a17;--glass-lift:0 6px 24px #0f172a1a;--glass-fg:#475569;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--radius:12px;--radius-sm:8px;--radius-pill:999px;--tap:48px;--fast:.16s;--slow:.2s;--ease:cubic-bezier(.2, 0, .2, 1);--shell:680px;--font:"Inter", "Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, sans-serif;--mono:"JetBrains Mono", "Cascadia Mono", ui-monospace, "SF Mono", Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--primary:#60a5fa;--on-primary:#0b1220;--primary-weak:#17243c;--accent:#fbbf24;--accent-weak:#2a2114;--bg:#0f172a;--fg:#f8fafc;--card:#1b2336;--muted:#272f42;--muted-fg:#a8b4c8;--faint-fg:#8b98ad;--line:#2c3752;--line-strong:#3f4c6b;--good:#4ade80;--good-weak:#14291d;--danger:#f87171;--danger-weak:#2c1a1c;--warn:#fbbf24;--warn-weak:#2a2114;--ring:#93c5fd;--grid:#e2e8f00a;--grid-major:#e2e8f013;--glass-bg:#1b2336b8;--glass-line:#e2e8f01f;--glass-lift:0 6px 26px #0000006b;--glass-fg:#a8b4c8;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--primary:#60a5fa;--on-primary:#0b1220;--primary-weak:#17243c;--accent:#fbbf24;--accent-weak:#2a2114;--bg:#0f172a;--fg:#f8fafc;--card:#1b2336;--muted:#272f42;--muted-fg:#a8b4c8;--faint-fg:#8b98ad;--line:#2c3752;--line-strong:#3f4c6b;--good:#4ade80;--good-weak:#14291d;--danger:#f87171;--danger-weak:#2c1a1c;--warn:#fbbf24;--warn-weak:#2a2114;--ring:#93c5fd;--grid:#e2e8f00a;--grid-major:#e2e8f013;--glass-bg:#1b2336b8;--glass-line:#e2e8f01f;--glass-lift:0 6px 26px #0000006b;--glass-fg:#a8b4c8;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{min-height:100%;margin:0;padding:0}body{background-color:var(--bg);background-image:linear-gradient(var(--grid-major) 1px, transparent 1px), linear-gradient(90deg, var(--grid-major) 1px, transparent 1px), linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);color:var(--fg);font-family:var(--font);font-feature-settings:"cv02", "cv03", "cv04";-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;background-position:-1px -1px;background-size:96px 96px,96px 96px,16px 16px,16px 16px;background-attachment:fixed;font-size:16px;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:var(--radius-sm)}.num,.code,.ring-value,.pill,.eyebrow,.field.mono{font-variant-numeric:tabular-nums}.app{min-height:100vh;max-width:var(--shell);padding:0 var(--space-md) calc(var(--tap) + 44px + env(safe-area-inset-bottom));flex-direction:column;margin:0 auto;display:flex}.topbar{align-items:center;gap:var(--space-sm);padding:var(--space-lg) var(--space-xs) var(--space-md);display:flex}.brand{letter-spacing:-.015em;align-items:center;gap:10px;font-size:18px;font-weight:600;display:flex}.brand-mark{border-radius:var(--radius-sm);background:var(--primary);width:28px;height:28px;color:var(--on-primary);place-items:center;display:grid}.brand-mark svg{width:16px;height:16px}.spacer{flex:1}.mode-chip{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted-fg);background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);white-space:nowrap;padding:5px 10px;font-size:11px}.tabbar{z-index:30;max-width:var(--shell);padding:0 var(--space-md) calc(var(--space-sm) + env(safe-area-inset-bottom));pointer-events:none;justify-content:center;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.dock{pointer-events:auto;border:1px solid var(--glass-line);background:var(--glass-bg);-webkit-backdrop-filter:blur(20px)saturate(180%);backdrop-filter:blur(20px)saturate(180%);width:100%;box-shadow:var(--glass-lift);border-radius:22px;gap:2px;padding:5px;display:flex}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.dock{background:var(--card)}}.tab{min-height:46px;color:var(--glass-fg);letter-spacing:.01em;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color var(--fast) var(--ease), background var(--fast) var(--ease), transform .12s var(--ease);background:0 0;border:0;border-radius:17px;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:2px;font-size:10.5px;font-weight:500;display:flex}.tab-glyph{place-items:center;height:22px;display:grid}.tab svg{width:22px;height:22px}.tab:hover{color:var(--fg)}.tab:active{transform:scale(.94)}.tab[aria-selected=true]{color:var(--primary);background:var(--primary-weak);font-weight:600}h1{letter-spacing:-.02em;margin:var(--space-xs) var(--space-xs) 2px;text-wrap:balance;font-size:24px;font-weight:650;line-height:1.25}.sub{color:var(--muted-fg);margin:0 var(--space-xs) var(--space-lg);max-width:46ch;font-size:14px}.muted{color:var(--muted-fg);font-size:14px}.faint{color:var(--faint-fg);font-size:13px}.eyebrow{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint-fg);font-size:10.5px;font-weight:500}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-md)}.card+.card{margin-top:var(--space-sm)}.dropzone{border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--card);padding:var(--space-2xl) var(--space-lg);text-align:center;cursor:pointer;transition:border-color var(--fast) var(--ease), background var(--fast) var(--ease);position:relative}.dropzone:hover,.dropzone:focus-visible{border-color:var(--primary);background:var(--primary-weak)}.dropzone.hot{border-color:var(--primary);background:var(--primary-weak);border-style:solid}.dropzone:before,.dropzone:after{content:"";border:1px solid var(--line-strong);width:12px;height:12px;transition:border-color var(--fast) var(--ease);position:absolute}.dropzone:before{border-bottom:0;border-right:0;top:8px;left:8px}.dropzone:after{border-top:0;border-left:0;bottom:8px;right:8px}.dropzone:hover:before,.dropzone:hover:after,.dropzone.hot:before,.dropzone.hot:after{border-color:var(--primary)}.drop-icon{width:48px;height:48px;margin:0 auto var(--space-md);border-radius:var(--radius-sm);background:var(--primary-weak);color:var(--primary);place-items:center;display:grid}.drop-icon svg{width:22px;height:22px}.drop-title{letter-spacing:-.01em;font-size:16px;font-weight:600}.drop-hint{color:var(--muted-fg);margin-top:var(--space-xs);font-size:13.5px}.drag-veil{inset:var(--space-sm);border:2px solid var(--primary);border-radius:var(--radius);background:var(--primary-weak);z-index:60;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--primary);pointer-events:none;place-items:center;font-size:13px;display:grid;position:fixed}.filerow{align-items:center;gap:var(--space-md);border-bottom:1px solid var(--line);padding:10px 0;display:flex}.filerow:last-child{border-bottom:0}.fileicon{border-radius:var(--radius-sm);background:var(--muted);width:36px;height:36px;color:var(--muted-fg);flex:none;place-items:center;display:grid}.fileicon svg{width:18px;height:18px}.filename{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:550;overflow:hidden}.btn{min-height:var(--tap);padding:0 var(--space-md);border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--card);cursor:pointer;justify-content:center;align-items:center;gap:var(--space-sm);color:var(--fg);transition:background var(--fast) var(--ease), border-color var(--fast) var(--ease), color var(--fast) var(--ease);font-size:15px;font-weight:550;text-decoration:none;display:inline-flex}.btn svg{flex:none;width:17px;height:17px}.btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--primary-weak)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--primary);border-color:var(--primary);width:100%;color:var(--on-primary);font-size:16px;font-weight:600}.btn.primary:hover:not(:disabled){background:var(--primary);color:var(--on-primary);filter:brightness(1.06)}.btn.ghost{color:var(--muted-fg);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--muted);color:var(--fg);border-color:#0000}.btn.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 35%, var(--line))}.btn.danger:hover:not(:disabled){background:var(--danger-weak);border-color:var(--danger);color:var(--danger)}.btn.small{min-height:40px;padding:0 12px;font-size:13.5px}.row{gap:var(--space-sm);flex-wrap:wrap;align-items:center;display:flex}.field{width:100%;min-height:var(--tap);border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--bg);transition:border-color var(--fast) var(--ease), box-shadow var(--fast) var(--ease);outline:none;padding:0 14px}.field::placeholder{color:var(--faint-fg)}.field:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-weak)}.field.mono{font-family:var(--mono);letter-spacing:.01em;font-size:14px}label.stack{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint-fg);margin-bottom:var(--space-sm);font-size:10.5px;font-weight:500;display:block}.chips{gap:var(--space-sm);flex-wrap:wrap;display:flex}.chip{border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--card);cursor:pointer;font-variant-numeric:tabular-nums;min-height:40px;transition:background var(--fast) var(--ease), border-color var(--fast) var(--ease), color var(--fast) var(--ease);padding:0 14px;font-size:14px;font-weight:550}.chip:hover{border-color:var(--primary);color:var(--primary)}.chip[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.progress-wrap{align-items:center;gap:var(--space-sm);padding:var(--space-sm) 0 var(--space-xs);flex-direction:column;display:flex}.ring{--size:156px;width:var(--size);height:var(--size);place-items:center;display:grid;position:relative}.ring svg{position:absolute;inset:0;transform:rotate(-90deg)}.ring .track{stroke:var(--muted)}.ring .fill{stroke:var(--primary);stroke-linecap:butt;transition:stroke-dashoffset .4s var(--ease)}.ring-value{letter-spacing:-.03em;font-size:38px;font-weight:650;line-height:1}.ring-value small{color:var(--muted-fg);margin-left:1px;font-size:15px;font-weight:500}.status-line{font-size:15px;font-weight:550}.steps{align-items:center;gap:var(--space-sm);margin:var(--space-xs) 0 0;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint-fg);flex-wrap:wrap;justify-content:center;padding:0;font-size:10.5px;list-style:none;display:flex}.step{align-items:center;gap:var(--space-sm);display:flex}.step:before{content:"";border:1px solid var(--line-strong);width:6px;height:6px;transition:background var(--fast) var(--ease), border-color var(--fast) var(--ease);border-radius:50%}.step.past{color:var(--muted-fg)}.step.past:before{background:var(--muted-fg);border-color:var(--muted-fg)}.step.now{color:var(--primary);font-weight:600}.step.now:before{background:var(--primary);border-color:var(--primary)}.bar{border-radius:var(--radius-pill);background:var(--muted);height:6px;overflow:hidden}.bar>span{background:var(--primary);height:100%;transition:width .4s var(--ease);display:block}.bar.warn>span{background:var(--warn)}.bar.bad>span{background:var(--danger)}.codebox{border:1px solid var(--line-strong);border-radius:var(--radius);padding:var(--space-md);text-align:center;background:var(--bg)}.code{font-family:var(--mono);letter-spacing:.2em;text-indent:.2em;word-break:break-all;color:var(--fg);margin:var(--space-sm) 0 var(--space-md);-webkit-user-select:all;user-select:all;font-size:27px;font-weight:600}.qr{border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;padding:10px;line-height:0;display:inline-block}.qr img{width:156px;height:156px;image-rendering:pixelated;display:block}.note{border-radius:var(--radius-sm);border:1px solid #0000;border-left-width:3px;padding:12px 14px;font-size:14px}.note strong{margin-bottom:2px;font-weight:600;display:block}.note.info{background:var(--primary-weak);border-color:color-mix(in srgb, var(--primary) 22%, transparent);border-left-color:var(--primary)}.note.warn{background:var(--warn-weak);border-color:color-mix(in srgb, var(--warn) 25%, transparent);border-left-color:var(--warn)}.note.bad{background:var(--danger-weak);border-color:color-mix(in srgb, var(--danger) 25%, transparent);border-left-color:var(--danger)}.hist{align-items:center;gap:var(--space-md);border-bottom:1px solid var(--line);padding:12px 0;display:flex}.hist:last-child{border-bottom:0}.pill{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border-radius:var(--radius-sm);background:var(--muted);color:var(--muted-fg);white-space:nowrap;flex:none;padding:4px 8px;font-size:10.5px;font-weight:500}.pill.live{background:var(--good-weak);color:var(--good)}.pill.gone{background:var(--muted);color:var(--faint-fg)}.empty{text-align:center;padding:var(--space-xl) var(--space-md);color:var(--muted-fg)}.empty .drop-icon{background:var(--muted);color:var(--faint-fg)}.toasts{left:50%;bottom:calc(var(--tap) + 52px + env(safe-area-inset-bottom));z-index:80;gap:var(--space-sm);flex-direction:column;width:min(92vw,400px);display:flex;position:fixed;transform:translate(-50%)}.toast{background:var(--fg);color:var(--bg);border-radius:var(--radius-sm);animation:rise .2s var(--ease);padding:12px 14px;font-size:14px;font-weight:550}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.intro{margin:var(--space-md) 0 0;padding:0;list-style:none}.intro li{gap:var(--space-md);align-items:flex-start;display:flex}.intro li+li{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--line)}.intro-mark{border-radius:var(--radius-sm);background:var(--primary-weak);width:32px;height:32px;color:var(--primary);flex:none;place-items:center;display:grid}.intro-mark svg{width:17px;height:17px}.intro-title{margin-bottom:2px;font-weight:600}.scanbox{aspect-ratio:1;border-radius:var(--radius);background:var(--fg);width:100%;max-height:60vh;position:relative;overflow:hidden}.scanbox video{object-fit:cover;width:100%;height:100%;display:block}.scanframe{border:2px solid var(--on-primary);border-radius:var(--radius-sm);position:absolute;inset:18%;box-shadow:0 0 0 9999px #0f172a57}.thumb{border-radius:var(--radius-sm);border:1px solid var(--line);object-fit:cover;background:var(--muted);flex:none;width:44px;height:44px}.note-body{padding:var(--space-md);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--muted);color:var(--fg);font-family:var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;max-height:50vh;margin:0;font-size:13px;line-height:1.6;overflow-y:auto}.got{color:var(--good);align-items:center;gap:6px;margin-top:2px;font-size:12px;font-weight:500;display:flex}.got svg{stroke-width:2.4px;flex:none;width:14px;height:14px}.prose h2{margin:0 0 var(--space-sm);letter-spacing:-.01em;font-size:16px;font-weight:650}.prose p{margin:0 0 var(--space-sm);color:var(--muted-fg);line-height:1.65}.prose p:last-child{margin-bottom:0}.prose ul{color:var(--muted-fg);margin:0;padding-left:18px;line-height:1.65}.prose li+li{margin-top:var(--space-sm)}.prose strong,.prose em{color:var(--fg)}.prose em{border-bottom:1px solid var(--line-strong);font-style:normal}.pagefoot{margin:var(--space-lg) 0 var(--space-sm);text-align:center}.linklike{padding:var(--space-sm);color:var(--muted-fg);cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:3px;transition:color var(--fast) var(--ease);background:0 0;border:0;font-size:12px}.linklike:hover{color:var(--fg)}textarea.field{resize:vertical;min-height:84px;line-height:1.55}@media (min-width:760px){:root{--shell:720px}h1{font-size:28px}.tab{font-size:11px}.toasts{bottom:calc(var(--space-2xl) + 40px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
