:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#202b40;background:#f4f6fa;font-synthesis:none;font-weight:400;--bg:#f4f6fa;--surface:#fff;--border:#e6eaf1;--text:#202b40;--muted:#8590a3;--subtle:#f8f9fc;--blue:#3464e9;--shadow:0 3px 18px #25395c04}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #84a5ff;outline-offset:3px}button,a{transition:background .16s,color .16s,box-shadow .16s}button{border:0}a{text-decoration:none;color:inherit}h1,h2,h3,p{margin-top:0}h1{font-size:30px;letter-spacing:-1px;font-weight:650;margin-bottom:9px}h2{font-size:20px;font-weight:600}h3{font-size:15px;font-weight:600}p{line-height:1.6}.muted,small{color:var(--muted)}small{font-size:11px}svg{flex-shrink:0}input,select{width:100%;border:1px solid var(--border);border-radius:7px;min-height:42px;padding:10px 12px;background:var(--surface);color:var(--text);font-size:13px;outline:none}input:focus,select:focus{border-color:#6687ef}input[type=file]{font-size:11px;padding:9px;max-width:100%}label{display:block;font-size:12px;font-weight:550;margin-bottom:18px}label input,label select{margin-top:8px}label .optional{float:right;font-size:10px;color:var(--muted);font-weight:400}fieldset{border:0;margin:0;padding:0;min-width:0}.shell{display:flex;min-height:100vh}.sidebar{width:232px;flex-shrink:0;background:#151d30;color:#b3bdd0;padding:35px 18px 0;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;font-weight:750;font-size:22px;color:#fff;letter-spacing:1.4px}.sidebar .brand{margin:0 14px 51px}.brand-mark{display:grid;place-items:center;background:#416cf0;border-radius:9px;width:36px;height:40px}.brand-sub{display:block;font-size:9px;letter-spacing:5px;margin-top:2px;font-weight:400;color:#9eabc6}.nav-title{font-size:9px;letter-spacing:1.4px;margin:0 14px 16px;color:#64728d}nav{display:flex;flex-direction:column;gap:8px}nav button{display:flex;align-items:center;gap:13px;padding:14px 15px;background:none;color:#96a4bf;border-radius:7px;text-align:left;font-size:12px;font-weight:500}nav button:hover{background:#202c44}nav button.active{background:#2b3b5e;color:#fff;box-shadow:inset 3px 0 #6185ff}.sidebar-bottom{margin-top:auto}.local-note{border:1px solid #2a354b;border-radius:8px;padding:15px 12px;display:flex;align-items:flex-start;gap:9px;font-size:10px;color:#c1cbe0;margin:24px 0}.local-note svg{color:#819be4}.local-note small{display:block;font-size:9px;margin-top:7px;line-height:1.7;color:#7685a1}.profile{border-top:1px solid #2b3448;margin:0 -18px;padding:23px 18px;display:flex;align-items:center;gap:10px;font-size:11px;color:#dce3f2}.profile small{display:block;font-size:10px;margin-top:4px}.profile .icon-button{margin-left:auto;color:#71809b}.avatar{height:33px;width:33px;border-radius:9px;background:#e9effd;color:#4b68ac;display:grid;place-items:center;font-size:12px;font-weight:600}.profile .avatar{background:#2d3c59;color:#c4d3f4}main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:72px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 38px;background:var(--surface);font-size:11px;color:var(--muted)}.topbar>div{display:flex;gap:15px;align-items:center}.topbar strong{font-weight:500;color:var(--text)}.connection{display:flex;align-items:center;gap:7px;font-size:10px}.connection i,.tiny-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#9aa7bb;flex-shrink:0}.connection i{background:#39ae87;box-shadow:0 0 0 3px #39ae8710}.icon-button{background:transparent;color:var(--muted);padding:6px;display:inline-flex;align-items:center;justify-content:center;border-radius:5px}.icon-button:hover{background:#8590a31a}.workspace{padding:34px 38px 24px;flex:1}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.eyebrow{font-size:9px;letter-spacing:1.8px;color:#7283a3;font-weight:650;display:block;margin-bottom:12px}.page-heading p{font-size:12px;color:var(--muted);margin-bottom:0}.heading-dot{display:inline-block;height:7px;width:7px;background:#5a7ced;border-radius:50%;vertical-align:middle;margin-left:12px}.station-label{display:flex;align-items:center;gap:8px;color:var(--muted);border:1px solid var(--border);padding:8px 12px;border-radius:6px;font-size:10px}.operator-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:11px;box-shadow:var(--shadow);overflow:hidden}.panel-heading{min-height:60px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 21px;font-size:12px;font-weight:550}.panel-heading>span:first-child{display:flex;align-items:center;gap:10px}.panel-heading svg{color:#8392ad}.tag{font-size:9px;padding:5px 7px;border-radius:4px;color:#8390a5;background:var(--subtle);font-weight:500;letter-spacing:.4px}.image-panel{display:flex;flex-direction:column;min-height:550px}.image-stage{min-height:300px;flex:1;position:relative;display:flex;align-items:center;justify-content:center;background:#101827;padding:15px;overflow:hidden}.image-stage.empty{background-color:#f8fafd;background-image:radial-gradient(#c9d4e354 .8px,transparent .8px);background-size:15px 15px}.empty-frame{text-align:center;color:var(--text);padding:45px 15px}.scan-symbol{color:#6a87c5;margin:0 auto 26px;display:grid;place-items:center;background:#edf2fc;width:95px;height:95px;border-radius:24px;border:1px solid #e0e8f7}.empty-frame h2{font-size:18px;letter-spacing:-.3px;margin-bottom:12px}.empty-frame p{font-size:12px;color:var(--muted);line-height:1.9;margin-bottom:24px}.empty-frame small{display:block;margin-top:15px;font-size:9px}.secondary,.primary{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:11px 15px;font-size:12px;font-weight:550;border-radius:7px;white-space:nowrap}.secondary{background:var(--surface);border:1px solid var(--border);color:var(--text)}.secondary:hover{background:var(--subtle)}.primary{background:var(--blue);color:#fff;box-shadow:0 3px 7px #3464e91c}.primary:hover{background:#2853cd}.image-tools{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;font-size:10px;color:var(--muted);gap:10px}.image-tools>span{display:flex;align-items:center;gap:7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-tools>div{display:flex;align-items:center;gap:15px;flex-shrink:0}.text-button{display:inline-flex;align-items:center;gap:6px;background:transparent;color:#6a7eab;font-size:11px;font-weight:500;padding:5px 0}.text-button:hover{color:var(--blue)}.control-column{display:flex;flex-direction:column;gap:17px}.control-panel,.result-panel{padding:23px}.section-number{font-size:10px;color:#5972ad;letter-spacing:1.1px;font-weight:600;margin-bottom:24px;display:flex;gap:12px;align-items:center}.section-number span{color:var(--muted);font-size:9px;letter-spacing:1.1px}.reference-summary{display:flex;align-items:center;gap:10px;background:var(--subtle);border:1px solid var(--border);padding:12px;border-radius:7px;font-size:10px;margin:-5px 0 20px;color:#6980b1}.reference-summary small{display:block;margin-top:5px;font-size:9px}.inspect-button{width:100%;padding:15px 12px;font-size:13px;margin-top:2px}.inspect-button svg:last-child{margin-left:auto}.privacy-note{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:13px;font-size:9px;color:var(--muted)}.result-panel{flex:1;min-height:230px}.waiting-result{text-align:center;padding:2px 0 8px}.waiting-icon{color:#8a9bb9;margin:0 auto 13px;background:var(--subtle);border-radius:50%;height:53px;width:53px;display:grid;place-items:center}.waiting-result h3{font-size:14px;margin-bottom:8px}.waiting-result p{font-size:10px;color:var(--muted);margin-bottom:14px}.step-dots{display:flex;gap:5px;justify-content:center}.step-dots i{width:4px;height:4px;background:#c7d1e3;border-radius:50%}.operator-tip{display:flex;align-items:center;gap:10px;padding:0 6px;color:#8696b0}.operator-tip p{font-size:10px;line-height:1.7;margin:0}.pipeline{display:flex;align-items:center;justify-content:center;gap:18px;font-size:10px;color:#8896ad;padding:27px 0 7px}.pipeline span{display:flex;align-items:center;gap:8px}.pipeline>svg{width:12px;color:#bec8da}footer{display:flex;align-items:center;justify-content:space-between;font-size:9px;color:#9ba6b9;padding:17px 38px;border-top:1px solid var(--border)}footer b{font-size:8px;padding:3px 5px;background:#e8edf5;border-radius:3px;margin-left:5px;font-weight:500}.hint{font-size:11px;color:var(--muted);line-height:1.8}.image-stage video{width:100%;max-height:65vh;object-fit:contain}.image-overlay{position:relative;width:100%;max-height:100%;-webkit-user-select:none;user-select:none;margin:auto;overflow:hidden}.image-overlay img{width:100%;height:100%;display:block}.image-stage .image-overlay{max-height:65vh;width:auto;max-width:100%}.zone{position:absolute;border:2px solid #4b82ff;background:#4b82ff10;pointer-events:none}.zone span{position:absolute;top:-17px;left:-2px;background:#3464e9;color:#fff;font-size:9px;padding:2px 4px;white-space:nowrap}.zone.PASS{border-color:#35bb8c}.zone.PASS span{background:#29966f}.zone.FAIL{border-color:#ef5e63;background:#ef5e6322}.zone.FAIL span{background:#c93c4b}.zone.REVIEW{border-color:#eab347;background:#eab34722}.zone.REVIEW span{background:#a97a18}.editable{cursor:crosshair;touch-action:none}.processing{position:absolute;inset:0;background:#151d30bb;color:#fff;display:flex;align-items:center;justify-content:center;gap:12px;font-size:13px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.spinner{height:21px;width:21px;border:2px solid #ffffff40;border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.result-status{display:flex;align-items:center;gap:10px;padding:15px;border-radius:7px;font-size:15px;margin-bottom:16px}.PASS{color:#248665;background:#eaf8f1}.FAIL{color:#c24751;background:#fff0f0}.REVIEW{color:#a47722;background:#fff7e7}.tiny-dot.PASS{background:#35aa83}.tiny-dot.FAIL{background:#df626c}.tiny-dot.REVIEW{background:#dfad48}.tiny-dot.blue{background:#487bf1}.result-reasons{max-height:210px;overflow:auto}.result-reasons>p{font-size:11px;color:var(--muted);margin:0 0 8px}.zone-row{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.zone-row .tiny-dot{margin-top:5px}.zone-row strong{font-size:11px}.zone-row small{display:block;font-size:10px;margin-top:3px;line-height:1.6}.result-meta{display:flex;justify-content:space-between;gap:8px;font-size:9px;color:var(--muted);margin:15px 0 10px}.result-meta span{display:flex;align-items:center;gap:5px}.toolbar{display:flex;gap:12px;margin-bottom:22px}.toolbar input{max-width:340px}.toolbar select{max-width:230px}.toolbar a{margin-left:auto}.table-panel{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap}th{text-align:left;font-size:10px;font-weight:500;background:var(--subtle);color:var(--muted);padding:16px 20px}td{padding:17px 20px;border-bottom:1px solid var(--border)}td small{display:block;margin-top:6px}.status-pill{display:inline-block;padding:6px 9px;border-radius:5px;font-size:9px;font-weight:600}.empty-list{text-align:center;padding:65px 30px;color:var(--muted)}.empty-list svg{margin-bottom:20px;color:#869bc2}.empty-list h2,.empty-list h3{color:var(--text)}.empty-list p{font-size:12px}.table-note{font-size:10px;color:var(--muted);padding:16px 20px;margin:0}.modal-backdrop{position:fixed;inset:0;background:#0c152bbb;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;z-index:20;padding:30px}.modal{background:var(--surface);border-radius:12px;width:min(1100px,95vw);max-height:90vh;overflow:auto}.modal-content{padding:25px;display:grid;grid-template-columns:1fr 310px;gap:25px}.reference-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:24px}.reference-list{align-self:start}.reference-item{display:block;width:100%;background:transparent;text-align:left;padding:18px 20px;border-bottom:1px solid var(--border);color:var(--text)}.reference-item.chosen{background:#3464e910;box-shadow:inset 3px 0 var(--blue)}.reference-item strong{font-size:12px;display:flex;justify-content:space-between}.reference-item strong span{color:var(--muted);font-weight:400}.reference-item small{display:block;margin-top:7px}.new-reference{padding:23px}.new-reference h3{display:flex;align-items:center;gap:7px}.new-reference .primary{width:100%}.editor-content{padding:23px}.editor-image{max-width:780px;max-height:450px;overflow:auto;margin:20px 0;background:#111a2c;padding:14px;border-radius:8px}.zones-heading{display:flex;align-items:center;justify-content:space-between;margin:25px 0 15px}.zones-heading h3{margin:0}.zones-heading span{color:var(--muted);font-weight:400;margin-left:6px}.zones-editor{max-height:460px;overflow:auto;margin-bottom:18px}.zone-edit{display:grid;grid-template-columns:85px 140px 130px minmax(110px,1fr) 26px;gap:10px;padding:16px;background:var(--subtle);border:1px solid var(--border);border-radius:7px;margin-bottom:10px;align-items:start}.zone-edit label{margin:0;font-size:10px}.zone-edit input,.zone-edit select{padding:8px;min-height:35px;font-size:11px}.zone-edit>.icon-button{grid-column:5;grid-row:1}.coordinates{display:flex;gap:8px;grid-column:1/3}.coordinates label{flex:1;min-width:0}.checkbox{display:flex;align-items:center;gap:8px;font-size:11px;line-height:1.6;margin:16px 0;font-weight:400}.checkbox input{width:15px;height:15px;min-height:0;padding:0;margin:0;accent-color:var(--blue)}.zone-edit .checkbox{grid-column:3/5;align-self:center}.validation{border-top:1px solid var(--border);margin-top:28px;padding-top:25px}.validation-form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.validation-form label{margin:0}.validation-form button{align-self:end;min-height:42px}.evidence-list p{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);font-size:10px}.evidence-list{margin-top:20px}.success-text{color:#25936d}.notice{background:#edf3ff;color:#4766aa;padding:14px;border-radius:7px;font-size:11px;margin:20px 0 0}.error{color:#c34c57;background:#fff0f0;padding:12px;border-radius:7px;font-size:12px}.banner{display:flex;justify-content:space-between;align-items:center;margin:16px 38px 0}.diagnostic-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:25px}.diagnostic{padding:25px;position:relative}.diagnostic>span{font-size:11px;color:var(--muted)}.diagnostic>svg{position:absolute;right:24px;color:#8297bd}.diagnostic strong{display:block;font-size:22px;margin-top:18px;font-weight:550}.admin-section{margin-bottom:25px}.admin-columns{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;padding:25px}.user-row{display:flex;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid var(--border)}.user-row strong{font-size:12px}.user-row small{display:block;margin-top:5px}.user-row button{margin-left:auto}.login-page{display:grid;grid-template-columns:1fr 1fr;min-height:100vh;background:var(--surface)}.login-intro{background:#151d30;color:#fff;padding:55px 65px;display:flex;flex-direction:column;justify-content:space-between;position:relative;background-image:radial-gradient(ellipse at 50% 70%,#273e71 0,transparent 65%)}.login-intro .brand{font-size:23px}.login-intro .brand span{font-size:14px;font-weight:350;color:#94a9d2}.login-intro h1{font-size:54px;line-height:1.15;letter-spacing:-2px;margin:25px 0}.login-intro p{color:#a4b2d0;font-size:14px;line-height:1.9}.login-intro small{color:#687b9f}.login-form{width:360px;align-self:center;justify-self:center;padding:30px 0}.login-form h2{font-size:27px;margin-bottom:9px;letter-spacing:-.6px}.login-form>p{font-size:12px;margin-bottom:32px}.login-form>.primary{width:100%;justify-content:space-between;margin:5px 0 20px}.login-icon{display:grid;place-items:center;width:55px;height:55px;border:1px solid var(--border);border-radius:14px;background:var(--subtle);color:#5a7de0;margin-bottom:28px}.startup{height:100vh;display:flex;align-items:center;justify-content:center;gap:20px;color:#6c81b1;font-size:14px}.visually-hidden{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}.startup svg{animation:spin 4s linear infinite}[data-theme=dark]{--bg:#111827;--surface:#1a2436;--border:#2c374c;--text:#dae2f2;--muted:#8c9ab2;--subtle:#202c40;--blue:#4c77f2;color:var(--text);background:var(--bg)}[data-theme=dark] .image-stage.empty{background-color:#1b263a;background-image:radial-gradient(#5f73943d .8px,transparent .8px)}[data-theme=dark] .scan-symbol{background:#273958;border-color:#324666}[data-theme=dark] .PASS{background:#193d34;color:#66cba2}[data-theme=dark] .FAIL{background:#422b35;color:#f39299}[data-theme=dark] .REVIEW{background:#423b2d;color:#e9c478}[data-theme=dark] footer b{background:#2c374b}@media(min-width:1700px){.workspace{padding:34px 50px 24px}.operator-grid{grid-template-columns:minmax(0,1fr) 390px;gap:30px}.image-panel{min-height:640px}.control-panel,.result-panel{padding:26px}.topbar{padding:0 50px}.page-heading{margin-bottom:28px}.empty-frame h2{font-size:22px}.empty-frame p{font-size:14px}.result-panel{min-height:250px}.pipeline{padding-top:24px}}@media(max-width:1400px){.sidebar{width:205px;padding-left:14px;padding-right:14px}.sidebar .brand{margin-left:12px;margin-right:0}.profile{margin:0 -14px;padding:18px 14px}.workspace{padding:26px}.topbar{padding:0 26px;height:62px}.operator-grid{grid-template-columns:minmax(0,1fr) 310px;gap:18px}.control-panel,.result-panel{padding:20px}.page-heading{margin-bottom:22px}h1{font-size:27px}.image-panel{min-height:505px}.section-number{margin-bottom:20px}.pipeline{gap:12px;font-size:9px}.result-panel{min-height:205px}.operator-tip{display:none}.empty-frame{padding:30px 12px}.result-reasons{max-height:130px}.reference-layout{grid-template-columns:245px minmax(0,1fr)}.zone-edit{grid-template-columns:70px 120px minmax(100px,1fr) 26px}.zone-edit>.icon-button{grid-column:4}.zone-edit>label:nth-child(4){grid-column:1/3;grid-row:2}.coordinates{grid-column:3/5;grid-row:2}.zone-edit .checkbox{grid-column:1/4}.login-intro h1{font-size:44px}}@media(max-width:1000px){.sidebar{width:180px}.brand{font-size:19px}nav button{font-size:11px;padding:13px 10px;gap:9px}.operator-grid{grid-template-columns:1fr}.control-column{display:grid;grid-template-columns:1fr 1fr}.image-panel{min-height:430px}.pipeline{flex-wrap:wrap}.reference-layout{grid-template-columns:1fr}.reference-list{max-height:none}.reference-item{display:inline-block;width:50%}.new-reference{display:grid;grid-template-columns:1fr 1fr;gap:15px}.new-reference h3{grid-column:1/3}.new-reference label{margin:0}.new-reference .primary{align-self:end}.diagnostic-grid{gap:10px}.diagnostic{padding:18px}.diagnostic strong{font-size:17px}.modal-content{grid-template-columns:1fr}.login-intro{padding:40px}.login-intro h1{font-size:35px}.login-form{width:300px}.connection{display:none}}@media(max-width:700px){.sidebar{width:65px;padding:22px 8px}.sidebar .brand{margin:0 5px 30px}.brand-mark{width:36px}.sidebar .brand>span:last-child,.nav-title,.local-note,.profile,.sidebar nav button{font-size:0}.sidebar nav button{padding:15px;gap:0}.sidebar-bottom{display:none}.workspace{padding:20px 16px}.topbar{padding:0 16px;font-size:9px}.topbar>div{gap:6px}.station-label{display:none}h1{font-size:24px}.eyebrow{font-size:8px}.control-column{grid-template-columns:1fr}.image-tools{padding:0 12px;gap:6px}.image-tools>div{gap:8px}.image-tools .text-button{font-size:9px}.toolbar{flex-wrap:wrap}.toolbar a{margin-left:0}.diagnostic-grid{grid-template-columns:1fr}.admin-columns{grid-template-columns:1fr;gap:25px;padding:20px}.login-page{grid-template-columns:1fr}.login-intro{min-height:260px;padding:30px}.login-intro h1{font-size:29px;margin:15px 0}.login-intro p,.login-intro small,.login-intro .eyebrow{display:none}.login-form{width:calc(100% - 60px);max-width:360px}.modal-backdrop{padding:10px}footer{padding:15px;font-size:8px;gap:10px}.pipeline{display:none}.zone-edit{display:flex;flex-wrap:wrap}.zone-edit label{min-width:75px;flex:1}.coordinates{width:100%}.zone-edit .checkbox{width:100%;flex:auto}.validation-form{grid-template-columns:1fr}.editor-content{padding:15px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
