:root{--bg: #f4f5f2;--bg-grid: rgba(20, 30, 40, .035);--surface: #ffffff;--surface-2: #f7f8f6;--ink: #18212b;--ink-2: #4b5662;--ink-3: #7b8591;--line: #e2e5e0;--line-strong: #cdd2cb;--accent: #0f766e;--accent-ink: #ffffff;--accent-soft: #e2f3f0;--ok: #15803d;--ok-soft: #e6f4ea;--warn: #b45309;--warn-soft: #fdf1e1;--bad: #b91c1c;--bad-soft: #fde8e8;--band: #be185d;--shadow: 0 1px 2px rgba(16, 24, 32, .04), 0 8px 24px rgba(16, 24, 32, .06);--radius: 14px;--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;color-scheme:light;color:var(--ink);background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}@media(prefers-color-scheme:dark){:root{--bg: #0e1215;--bg-grid: rgba(255, 255, 255, .03);--surface: #161b1f;--surface-2: #1c2227;--ink: #e7ebee;--ink-2: #aab3bb;--ink-3: #7d8790;--line: #262e34;--line-strong: #36404a;--accent: #2dd4bf;--accent-ink: #062320;--accent-soft: rgba(45, 212, 191, .12);--ok: #4ade80;--ok-soft: rgba(74, 222, 128, .12);--warn: #fbbf24;--warn-soft: rgba(251, 191, 36, .12);--bad: #f87171;--bad-soft: rgba(248, 113, 113, .12);--band: #f472b6;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px rgba(0, 0, 0, .25);color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(var(--bg-grid) 1px,transparent 1px) 0 0 / 28px 28px,linear-gradient(90deg,var(--bg-grid) 1px,transparent 1px) 0 0 / 28px 28px,var(--bg)}h1,h2,h3,h4{margin:0;line-height:1.2;letter-spacing:-.01em}p{margin:0}a{color:var(--accent)}img{max-width:100%}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mono{font-family:var(--mono);font-size:.92em}.muted{color:var(--ink-3)}.shell{display:flex;flex-direction:column;min-height:100vh}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:12px clamp(16px,4vw,40px);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px)}.brand{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.brand__name{font-weight:700;font-family:var(--mono);font-size:.95rem}.brand__mark{display:inline-flex;gap:4px;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:var(--ink)}.brand__mark i{width:3px;height:14px;border-radius:2px;background:var(--band)}.brand__mark i+i{opacity:.45}.signout{display:inline-flex;align-items:center;gap:7px;padding:6px 12px 6px 10px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);color:var(--ink-2);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:color .14s ease,border-color .14s ease,background .14s ease}.signout svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.signout:hover{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent);background:var(--bad-soft)}.signout:active{transform:translateY(1px)}@media(max-width:420px){.signout{padding:7px}.signout span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}.tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);font-size:.72rem;font-weight:600;letter-spacing:.01em;white-space:nowrap;vertical-align:middle}.tag--warn{background:var(--warn-soft);border-color:transparent;color:var(--warn)}.tag--accent{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.app{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:clamp(24px,4vw,48px) clamp(16px,4vw,40px)}.hero{max-width:780px;margin-bottom:32px}.eyebrow{color:var(--accent);font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.hero h1{margin:10px 0 12px;font-size:clamp(1.9rem,4vw,2.9rem);font-weight:750;letter-spacing:-.025em}.hero__lead{color:var(--ink-2);font-size:1.05rem;max-width:680px}.workspace{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;align-items:start}@media(min-width:980px){.workspace{grid-template-columns:380px minmax(0,1fr)}.controls{position:sticky;top:76px;max-height:calc(100vh - 96px);overflow-y:auto}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.controls{padding:6px 20px}.step{padding:18px 0;display:grid;gap:12px}.step+.step{border-top:1px solid var(--line)}.step__title{display:flex;align-items:center;gap:10px;font-size:.95rem;font-weight:650}.step__num{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--ink);color:var(--surface);font-size:.72rem;font-weight:700}.dropzone{display:grid;justify-items:center;gap:10px;padding:28px 18px;border:1.5px dashed var(--line-strong);border-radius:12px;background:var(--surface-2);cursor:pointer;text-align:center;transition:border-color .14s ease,background .14s ease}.dropzone:hover,.dropzone--dragging{border-color:var(--accent);background:var(--accent-soft)}.dropzone--disabled{cursor:not-allowed;opacity:.6}.dropzone__icon{width:34px;height:34px;padding:7px;border-radius:10px;background:var(--surface);border:1px solid var(--line);fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.dropzone__text{display:grid;gap:2px;min-width:0}.dropzone__text strong{overflow-wrap:anywhere}.dropzone__text span{color:var(--ink-3);font-size:.85rem}.dropzone--compact{grid-template-columns:auto minmax(0,1fr);justify-items:start;align-items:center;padding:10px 12px;text-align:left}.dropzone--compact .dropzone__icon{width:30px;height:30px;padding:6px}.dropzone--compact .dropzone__text strong{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dropzone--compact .dropzone__text span{font-size:.78rem}.preview-block{display:grid;gap:8px}.preview-frame{position:relative;width:fit-content;max-width:100%;margin:0 auto;border-radius:10px;overflow:hidden;background:repeating-conic-gradient(var(--surface-2) 0 25%,var(--surface) 0 50%) 0 0 / 16px 16px;border:1px solid var(--line)}.preview{display:block;max-height:340px;object-fit:contain}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.overlay__poly{fill:#2dd4bf24;stroke:#2dd4bf;stroke-width:2}.overlay__poly--rejected{fill:#fbbf2424;stroke:#fbbf24}.overlay__poly--error{fill:#f8717129;stroke:#f87171}.overlay__label{position:absolute;transform:translateY(calc(-100% - 3px));padding:1px 6px;border-radius:4px;background:#0f766e;color:#fff;font:600 .68rem/1.4 var(--mono);pointer-events:none;white-space:nowrap}.overlay__label--rejected{background:#b45309}.overlay__label--error{background:#b91c1c}.meta{color:var(--ink-3);font-size:.78rem;text-align:center}.choices{display:grid;gap:8px}.choice{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:border-color .14s ease,background .14s ease}.choice:hover{border-color:var(--line-strong)}.choice--active{border-color:var(--accent);background:var(--accent-soft)}.choice input{margin:3px 0 0;accent-color:var(--accent)}.choice__body{display:grid;gap:3px}.choice__title{font-weight:600;font-size:.9rem}.choice__desc{color:var(--ink-2);font-size:.82rem}.consent{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:12px;border-radius:10px;background:var(--warn-soft);border:1px solid color-mix(in srgb,var(--warn) 30%,transparent);color:var(--ink-2);font-size:.82rem;cursor:pointer}.consent strong{color:var(--ink);font-weight:600}.consent input{margin:3px 0 0;accent-color:var(--accent)}.consent--given{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.run-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:13px 18px;border:none;border-radius:10px;background:var(--accent);color:var(--accent-ink);font:inherit;font-weight:700;cursor:pointer;transition:filter .14s ease,transform .14s ease}.run-button:hover:not(:disabled){filter:brightness(1.08)}.run-button:active:not(:disabled){transform:translateY(1px)}.run-button:disabled{cursor:not-allowed;background:var(--line-strong);color:var(--ink-3)}.hint{color:var(--ink-3);font-size:.8rem;text-align:center}.spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.output{display:grid;gap:20px;min-width:0}.error{display:grid;gap:2px;padding:14px 16px;border-radius:var(--radius);background:var(--bad-soft);border:1px solid color-mix(in srgb,var(--bad) 30%,transparent);color:var(--bad)}.error span{color:var(--ink)}.empty,.loading{padding:28px;display:grid;gap:14px}.empty h2,.loading h2{font-size:1.15rem}.flow{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 0;padding:0;counter-reset:flow}.flow li{counter-increment:flow;display:inline-flex;align-items:center;gap:6px;padding:6px 12px 6px 6px;border-radius:999px;border:1px solid var(--line);background:var(--surface-2);font-size:.82rem;font-weight:600}.flow li:before{content:counter(flow);display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:.7rem}.flow--muted li{opacity:.7}.progress{height:4px;border-radius:4px;background:var(--line);overflow:hidden}.progress span{display:block;width:35%;height:100%;border-radius:4px;background:var(--accent);animation:slide 1.3s ease-in-out infinite}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(290%)}}@media(prefers-reduced-motion:reduce){.spinner,.progress span{animation-duration:3s}}.result{display:grid;gap:24px}.summary{padding:22px;display:grid;gap:16px;border-top:3px solid var(--ok)}.summary--rejected{border-top-color:var(--warn)}.summary--error{border-top-color:var(--bad)}.summary__top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.summary h2{margin-top:4px;font-size:1.35rem}.interpretation{text-transform:capitalize;color:var(--ink-2)}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:.78rem;font-weight:650;text-transform:capitalize;white-space:nowrap}.badge__dot{width:7px;height:7px;border-radius:50%;background:currentColor}.badge--completed{background:var(--ok-soft);color:var(--ok)}.badge--rejected{background:var(--warn-soft);color:var(--warn)}.badge--error{background:var(--bad-soft);color:var(--bad)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--line)}.stats div{padding:10px 14px;background:var(--surface-2);min-width:0}.stats dt{color:var(--ink-3);font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.stats dd{margin:2px 0 0;font-weight:600;overflow-wrap:anywhere;display:flex;flex-wrap:wrap;gap:4px 10px}.count{font-size:.85rem}.count--completed{color:var(--ok)}.count--rejected{color:var(--warn)}.count--error{color:var(--bad)}.notice{padding:10px 12px;border-radius:8px;background:var(--surface-2);border-left:3px solid var(--warn);color:var(--ink-2);font-size:.85rem}.reason{color:var(--ink-2);font-size:.9rem}.warnings{margin:0;padding-left:18px;color:var(--warn);font-size:.85rem;display:grid;gap:4px}.section{display:grid;gap:12px}.section__title{font-size:1rem;display:flex;gap:8px;align-items:baseline}.windows{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr))}.window{padding:18px;display:grid;gap:12px;align-content:start;min-width:0}.window__head{display:flex;justify-content:space-between;align-items:center;gap:8px}.window__head h4{font-size:.95rem}.window__counts{font-size:.9rem;color:var(--ink-2)}.window__counts strong{color:var(--ink)}.fine{font-size:.78rem;color:var(--ink-3)}.strip-wrap{display:grid;gap:4px}.strip{position:relative;height:28px;border-radius:6px;background:linear-gradient(90deg,var(--surface-2),color-mix(in srgb,var(--surface-2) 70%,var(--line)),var(--surface-2));border:1px solid var(--line)}.strip__tick{position:absolute;top:3px;bottom:3px;width:4px;margin-left:-2px;border-radius:2px}.strip__tick--accepted{background:var(--band)}.strip__tick--discarded{background:transparent;border:1.5px dashed var(--ink-3)}.strip__axis{display:flex;justify-content:space-between;font-size:.7rem;color:var(--ink-3);font-family:var(--mono)}.plot,.thumb{margin:0;display:grid;gap:6px;min-width:0}.thumb__view{display:block;width:100%;padding:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff;cursor:zoom-in}.thumb__view img{display:block;width:100%;max-height:420px;object-fit:contain}.plot figcaption,.thumb figcaption{display:flex;justify-content:space-between;gap:8px;font-size:.76rem;color:var(--ink-3)}.plot figcaption{justify-content:flex-end}.plot a,.thumb a{font-weight:600;text-decoration:none}.candidates summary,.json summary{cursor:pointer;font-size:.85rem;font-weight:600;color:var(--ink-2)}.candidates table{width:100%;margin-top:8px;border-collapse:collapse;font-size:.8rem}.candidates th{text-align:left;color:var(--ink-3);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.candidates th,.candidates td{padding:6px 8px;border-bottom:1px solid var(--line)}.pill{display:inline-block;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:1px 8px;border-radius:999px;font-size:.72rem;font-weight:600;vertical-align:middle}.pill--accepted{background:color-mix(in srgb,var(--band) 14%,transparent);color:var(--band)}.pill--discarded{background:var(--surface-2);color:var(--ink-3);border:1px solid var(--line)}.timeline{padding:8px 18px 14px}.timeline__group{margin:14px 0 4px;color:var(--ink-3);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.stages{list-style:none;margin:0;padding:0}.stage{padding:10px 0;border-bottom:1px solid var(--line);display:grid;gap:8px;min-width:0}.stages:last-child .stage:last-child{border-bottom:none}.stage__head{display:grid;grid-template-columns:auto minmax(0,1fr) auto minmax(60px,140px) 64px;align-items:center;gap:10px}.stage__head h4{font-size:.88rem;font-family:var(--mono);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stage__dot{width:9px;height:9px;border-radius:50%;background:var(--ok)}.stage__dot--rejected{background:var(--warn)}.stage__dot--error{background:var(--bad)}.stage__status{font-size:.75rem;color:var(--ink-3)}.stage--rejected .stage__status{color:var(--warn)}.stage--error .stage__status{color:var(--bad)}.stage__bar{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}.stage__bar span{display:block;height:100%;border-radius:3px;background:color-mix(in srgb,var(--accent) 60%,transparent)}.stage__time{text-align:right;font-family:var(--mono);font-size:.78rem;color:var(--ink-2)}.stage__reason{margin-left:19px;font-size:.82rem;color:var(--ink-2)}.thumbs{margin-left:19px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr))}.thumbs .thumb__view img{height:180px}@media(max-width:560px){.stage__head{grid-template-columns:auto minmax(0,1fr) auto}.stage__bar,.stage__status{display:none}}.json{padding:14px 18px}.json pre{margin:12px 0 0;padding:14px;max-height:420px;overflow:auto;border-radius:8px;background:var(--surface-2);border:1px solid var(--line);font:.76rem/1.5 var(--mono)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:24px;background:#060a0ec7;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:zoom-out}.lightbox figure{margin:0;display:grid;gap:10px;max-width:min(1200px,100%);cursor:default}.lightbox img{max-height:calc(100vh - 120px);object-fit:contain;border-radius:8px;background:#fff}.lightbox figcaption{display:flex;align-items:center;gap:14px;color:#e7ebee;font-size:.85rem}.lightbox figcaption span{flex:1}.lightbox a{color:#5eead4;font-weight:600}.lightbox button{padding:6px 14px;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:transparent;color:#fff;font:inherit;cursor:pointer}.footer{padding:20px clamp(16px,4vw,40px);border-top:1px solid var(--line);color:var(--ink-3);font-size:.78rem;text-align:center}.auth-shell{min-height:100dvh;display:grid;place-items:center;padding:24px;background:#f3f5f7;color:#172b3a;font-family:system-ui,sans-serif}.auth-card{width:min(100%,420px);padding:28px;border:1px solid #d9e1e8;border-radius:16px;background:#fff;box-shadow:0 12px 40px #172b3a0d}.auth-brand{font-weight:700}.auth-card h1{font-size:28px;margin:12px 0}.auth-card p{font-size:14px;line-height:1.6}.auth-card label{display:block;font-size:14px;font-weight:600;margin:16px 0}.auth-card input{box-sizing:border-box;display:block;width:100%;padding:12px;margin-top:6px;border:1px solid #b8c6d1;border-radius:8px;background:#fff;color:#172b3a;font:inherit}.auth-card button{padding:12px 18px;border:0;border-radius:8px;background:#214b67;color:#fff;font:inherit;cursor:pointer}.auth-card button:disabled{opacity:.5;cursor:wait}.auth-card [role=alert]{color:#9d2436}.auth-card button[type=submit]{width:100%}
