*{box-sizing:border-box} [hidden]{display:none!important} :root{color-scheme:dark;--bg:#0d1413;--surface:#121c1a;--border:#2a3a34;--ink:#e6ece4;--muted:#9aafa4;--mint:#adf4ba;--mono:"IBM Plex Mono","Cascadia Mono",Consolas,monospace}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(ellipse at 50% 32%,#172821,#0d1413 72%);color:var(--ink);font-family:Inter,"Segoe UI",sans-serif}button,input,select{font:inherit}button{cursor:pointer;color:var(--ink);background:#17231f;border:1px solid var(--border);padding:10px 14px;border-radius:5px}button:hover{border-color:#88a599}button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--mint);outline-offset:3px}button:disabled{opacity:.5;cursor:default}.top,footer{padding:0 clamp(20px,4vw,70px);display:flex;align-items:center;justify-content:space-between;border-color:var(--border);background:#0f1815}.top{min-height:70px;border-bottom:1px solid var(--border);gap:12px}.brand,.actions,.controls,.shortcuts{display:flex;align-items:center;gap:9px}.brand{gap:12px}.brand strong,.brand small,.eyebrow,.status,.source-title span,.source-foot,.readout-head,footer,.shortcuts{font-family:var(--mono);letter-spacing:.09em}.brand strong,.brand small{display:block}.brand strong{font-size:15px}.brand small{font-size:9px;color:var(--muted);margin-top:4px}.actions button,.controls button{font-size:13px}main{width:min(100%,1440px);margin:auto;padding:34px clamp(20px,4vw,64px) 30px}.heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:22px}.eyebrow{color:var(--mint);font-size:11px;margin:0 0 9px}.eyebrow i{display:inline-block;height:1px;width:22px;background:var(--mint);vertical-align:middle;margin-right:6px}h1,h2{margin:0}h1{font-size:clamp(30px,4vw,62px);font-weight:580;letter-spacing:-.055em;line-height:1.04}.status{white-space:nowrap;color:var(--mint);font-size:11px;border:1px solid var(--border);padding:9px 11px;border-radius:4px}.stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(165px,.66fr) minmax(0,1fr);gap:12px}.source,.readout{border:1px solid var(--border);background:var(--surface);border-radius:7px;overflow:hidden;min-width:0}.source-title,.source-foot,.readout-head{padding:12px 14px}.source-title{display:flex;align-items:center;gap:9px}.source-title span{font-size:10px;color:var(--mint);padding:4px 5px;border:1px solid var(--border);border-radius:3px}.source-title h2{font-size:14px;font-weight:550}.source-foot,.readout-head{color:var(--muted);font-size:10px}.source-foot{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.viewport{position:relative;overflow:hidden;isolation:isolate;height:clamp(210px,49vh,575px);background:#28372f}.portrait,.overlay,.mesh,.scanline,.reticle{position:absolute;inset:0;pointer-events:none}.portrait{background-size:cover;background-position:center;filter:saturate(.73) contrast(1.08) brightness(.9)}.portrait.demo{background-image:var(--demo);background-size:max(200%, calc(150% * var(--demo-ratio, 1.4))) auto}.portrait.demo.left{background-position:0 center}.portrait.demo.right{background-position:100% center}.overlay{background:linear-gradient(0deg,#07100f70,transparent 34%,transparent 85%,#07100f44),repeating-linear-gradient(0deg,transparent 0 5px,#b2f4c00b 6px);z-index:1}.reticle{inset:12px;z-index:2;background:linear-gradient(var(--mint),var(--mint)) left top/19px 1px,linear-gradient(var(--mint),var(--mint)) left top/1px 19px,linear-gradient(var(--mint),var(--mint)) right top/19px 1px,linear-gradient(var(--mint),var(--mint)) right top/1px 19px,linear-gradient(var(--mint),var(--mint)) left bottom/19px 1px,linear-gradient(var(--mint),var(--mint)) left bottom/1px 19px,linear-gradient(var(--mint),var(--mint)) right bottom/19px 1px,linear-gradient(var(--mint),var(--mint)) right bottom/1px 19px;background-repeat:no-repeat;opacity:.62}.mesh{width:100%;height:100%;z-index:2;opacity:0;transition:opacity .35s}.mesh line,.mesh polyline{stroke:var(--mint);stroke-width:.38;fill:none}.mesh circle{fill:var(--mint)}.scanline{z-index:3;height:2px;top:6%;background:#c8ffd0;box-shadow:0 0 13px 3px #a9ffb1,0 -14px 29px 5px #b1ffbf88;opacity:0}.readout{display:flex;flex-direction:column;text-align:center}.readout-head{text-align:left;border-bottom:1px solid var(--border)}.core{display:grid;justify-items:center;align-content:center;flex:1;gap:8px;padding:12px 8px}.ring{position:relative;width:clamp(85px,13vw,155px);aspect-ratio:1;display:grid;place-items:center;margin:0 auto 7px}.ring svg{position:absolute;inset:0;width:100%;transform:rotate(-90deg)}.ring circle{fill:none;stroke:#30453b;stroke-width:2}.ring #arc{stroke:var(--mint);stroke-width:3;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset .12s linear}.ring strong{font-family:var(--mono);font-size:clamp(19px,3vw,38px);letter-spacing:-.07em}.core #verdict{font-weight:700;font-size:clamp(14px,1.8vw,25px);line-height:1.12}.core #detail{color:var(--muted);font:10px var(--mono)}.phases{padding:12px 16px;text-align:left;border-top:1px solid var(--border);color:var(--muted);display:grid;gap:8px;font:11px var(--mono)}.phases b{display:inline-block;width:6px;height:6px;border-radius:50%;background:#536b5e;margin-right:8px}.phases .active{color:var(--mint)}.phases .active b{background:var(--mint);box-shadow:0 0 8px var(--mint)}.phases .done b{background:var(--mint)}[data-phase="running"] .scanline{opacity:1;animation:sweep 2s ease-in-out infinite alternate}[data-phase="running"] .viewport[data-side="1"] .scanline{animation-direction:alternate-reverse}[data-phase="running"] .mesh.on,[data-phase="complete"] .mesh{opacity:.58}[data-phase="complete"] #verdict,[data-phase="complete"] .ring strong{color:var(--mint)}[data-phase="complete"][data-verdict="different"]{--mint:#ffa895}[data-phase="complete"][data-verdict="unclear"]{--mint:#ffd683}@keyframes sweep{from{top:6%}to{top:94%}}.controls{margin-top:14px;flex-wrap:wrap}.primary{background:var(--mint);color:#0c1911;border-color:var(--mint);font-weight:700}.primary:hover{filter:brightness(1.09)}.shortcuts{margin-left:auto;color:var(--muted);font-size:10px;letter-spacing:0}.shortcuts kbd{border:1px solid var(--border);border-radius:3px;padding:3px 5px;color:var(--mint)}footer{min-height:42px;border-top:1px solid var(--border);font-size:9px;color:var(--muted)}dialog{background:#14201b;color:var(--ink);border:1px solid #46584d;border-radius:10px;width:min(680px,94vw);max-height:90vh;padding:20px}dialog::backdrop{background:#050908b9;backdrop-filter:blur(5px)}.dialog-title,.dialog-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px}.close{font-size:22px;line-height:1}.upload-grid,.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.settings-grid{grid-template-columns:1.25fr 1fr 1fr}.upload-grid label,.settings-grid label{min-width:0;display:grid;gap:7px;color:var(--muted);font-size:12px}.upload-grid label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-grid input,.settings-grid input,.settings-grid select{min-width:0;width:100%;background:#0c1711;color:var(--ink);border:1px solid var(--border);border-radius:4px;padding:8px}.help{font-size:12px;color:var(--muted)}.adjust{margin:0;min-width:0;display:grid;gap:5px}.adjust .viewport{height:120px;border:1px solid var(--border);border-radius:4px;cursor:crosshair;touch-action:none}.adjust .mesh{opacity:1}.adjust input{padding:0}.adjust figcaption{font-size:11px;color:var(--muted)}body.clean .top,body.clean footer,body.clean .controls{display:none}body.clean main{padding-top:18px;padding-bottom:18px}body.clean .viewport{height:clamp(180px,64vh,780px)}@media(max-width:650px){.top{padding:0 12px}.actions{gap:4px}.actions button{padding:8px 6px}.brand small,.shortcuts{display:none}main{padding:20px 12px}.stage{grid-template-columns:1fr 1fr;gap:7px}.readout{grid-column:1/-1;grid-row:2}.readout-head,.phases{display:none}.core{min-height:135px}.ring{width:63px;margin-bottom:0}.viewport{height:clamp(145px,43vh,360px)}body.clean .viewport{height:clamp(145px,50vh,370px)}.source-title,.source-foot{padding:8px 6px}.source-title h2{font-size:11px}.status{font-size:8px}.settings-grid{grid-template-columns:1fr}footer{padding:0 12px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation-duration:0s!important}}
.adjust .viewport{height:auto;width:auto;min-height:80px;max-height:170px;justify-self:center;max-width:100%}
@media(max-height:600px) and (min-width:651px){main{padding-top:15px;padding-bottom:15px}.heading{margin-bottom:13px}.top{min-height:50px}body.clean .viewport{height:58vh}}

.comparison-chart{margin-top:12px;border:1px solid var(--border);border-radius:7px;padding:12px 15px;background:#121c1a}
.chart-heading{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:11px}
.chart-heading h2{font-size:13px;font-weight:600}.chart-heading span{font:10px var(--mono);color:var(--muted);text-align:right}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 23px}
.metric{display:grid;grid-template-columns:1fr auto;gap:6px;color:var(--muted);font:11px var(--mono)}
.metric output{color:var(--ink);min-width:4ch;text-align:right;font-variant-numeric:tabular-nums}
.meter{grid-column:1/-1;height:5px;background:repeating-linear-gradient(90deg,#31453a 0 calc(10% - 2px),transparent calc(10% - 2px) 10%);overflow:hidden;border-radius:1px}
.meter i{display:block;width:100%;height:100%;background:var(--mint);transform:scaleX(var(--fill,0));transform-origin:left;opacity:.85}
.viewport .scanline{top:var(--scan-y,0%);animation:none!important;opacity:0;height:2px}
[data-phase=running][data-step=acquire] .scanline{opacity:1}
.viewport .scanline::before{content:"";position:absolute;inset:-58px 0 0;background:linear-gradient(transparent,#a4ffc528);pointer-events:none}
.mesh .landmark{opacity:0}.mesh .landmark.locked{opacity:1}.mesh .wire{opacity:0;stroke-dasharray:2 1}
[data-step=compare] .mesh .wire,[data-step=resolve] .mesh .wire,[data-phase=complete] .mesh .wire{opacity:1}
.mesh .landmark.active{stroke:#f0fff3;stroke-width:.7;filter:drop-shadow(0 0 4px var(--mint))}
.viewport .overlay{transition:background-color .2s}.viewport .zone{position:absolute;z-index:2;left:0;right:0;top:var(--zone-y,50%);height:13%;transform:translateY(-50%);border-block:1px dashed #c6f8cb80;background:#92efa21a;opacity:0;pointer-events:none}
[data-step=compare] .zone{opacity:1}
[data-phase=complete] .core{animation:resolve .45s ease-out both}
@keyframes resolve{from{opacity:.72;transform:scale(.97)}to{opacity:1;transform:scale(1)}}
body.clean .viewport{height:clamp(135px,calc(100dvh - 265px),720px)}
body:not(.clean) #stage .viewport{height:clamp(160px,calc(100dvh - 420px),565px)}
@media(max-width:650px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}body.clean #stage .viewport{height:clamp(125px,calc(100dvh - 380px),400px)}}
@media(prefers-reduced-motion:reduce){.viewport .scanline,.viewport .zone{display:none}}
