:root{font-family:Manrope,'Noto Sans SC',sans-serif;background:#071321;color:#ebf5f4;--mint:#91efd6;--muted:#9aafba;--line:#29404e;--panel:#0d2030}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(#0b1b2b,#071321 650px)}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}[hidden]{display:none!important}.bar{height:80px;border-bottom:1px solid #ffffff1b;display:flex;align-items:center;justify-content:space-between;padding:0 max(4vw,22px);position:relative;z-index:2}.logo{display:flex;gap:12px;align-items:center;font-size:22px;font-weight:800;letter-spacing:-.05em;line-height:1}.logo span span{color:var(--mint)}.logo small{display:block;font:9px 'DM Mono',monospace;letter-spacing:.18em;margin-top:5px;color:#81b3b7}.logo-icon{font-size:34px;color:var(--mint);font-weight:400}.bar-right{display:flex;gap:25px;align-items:center;font-size:12px;color:#c0d0d6}.bar-right a:hover{color:var(--mint)}.live,.eyebrow,.section-label,.step-label,.list-heading,.result-label,.info-line b{font:10px 'DM Mono',monospace;letter-spacing:.13em}.live{display:flex;gap:10px;color:var(--mint);align-items:center}.live i{width:6px;height:6px;background:var(--mint);border-radius:50%;box-shadow:0 0 12px var(--mint)}.ghost,.danger{border:1px solid #648187;background:none;color:#c6dddf;padding:9px 14px;font-size:11px}.ghost:hover{border-color:var(--mint);color:var(--mint)}main{max-width:1320px;margin:auto;padding:0 max(4vw,22px) 100px}.page-intro{height:430px;position:relative;overflow:hidden;border-bottom:1px solid #3d5b63}.page-intro:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#0b1b2b 15%,transparent 76%);pointer-events:none}.intro-content{position:relative;z-index:1;padding:60px 0}.eyebrow,.section-label{color:var(--mint)}.page-intro h1{font-size:clamp(50px,5vw,72px);line-height:1.2;letter-spacing:-.075em;margin:24px 0 18px}.page-intro h1 span{color:var(--mint)}.page-intro h1 i{font-style:normal;color:#f5b789}.page-intro p{font-size:14px;color:#b8cbd0;line-height:1.8;max-width:550px}.intro-meta{display:flex;gap:0;margin-top:26px}.intro-meta div{display:flex;gap:13px;align-items:center;border-right:1px solid #52717a;padding:0 24px}.intro-meta div:first-child{padding-left:0}.intro-meta div:last-child{border:0}.intro-meta strong{color:var(--mint);font:14px 'DM Mono',monospace}.intro-meta span{color:#9eb5bc;font-size:11px}.intro-orb{position:absolute;right:11%;top:0;width:460px;height:460px;border-radius:50%;border:1px solid #81e8d54d;box-shadow:inset 0 0 80px #34c3b026,0 0 100px #28c4ac33;background:radial-gradient(circle at 45% 48%,#d2fff6 0,#8de5cf 5%,#2993a4 15%,#10374f 29%,#0b2138 54%,transparent 65%)}.intro-orb:before,.intro-orb:after{content:"";position:absolute;inset:-50px;border:1px dashed #8fe6d164;border-radius:50%;transform:rotate(-23deg)}.intro-orb:after{inset:74px -70px;transform:rotate(55deg);border-style:solid;border-color:#7bd0ca82}.auth-layout{display:grid;grid-template-columns:1fr 420px;gap:70px;padding:58px 0}.info-panel{padding:36px 0}.info-panel h2{font-size:clamp(30px,3vw,45px);letter-spacing:-.06em;line-height:1.35;margin:24px 0}.info-panel h2 span{color:var(--mint)}.info-panel p{max-width:600px;color:#aabfc6;line-height:2;font-size:14px;margin-bottom:46px}.info-line{border-top:1px solid #3e5962;max-width:600px;display:flex;justify-content:space-between;padding:18px 0;font-size:12px;color:#b4ccd0;gap:20px}.info-line b{color:#75bebd}.auth-card{background:linear-gradient(150deg,#142c3d,#0b1d2e);border:1px solid #4a777b;padding:31px 34px 27px;box-shadow:0 25px 80px #0004}.auth-tabs{display:flex;border-bottom:1px solid #41606a;gap:30px}.auth-tabs button{border:0;background:none;padding:0 0 14px;color:#95b2ba;font-size:13px;font-weight:700;position:relative}.auth-tabs button.active{color:var(--mint)}.auth-tabs button.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--mint)}.auth-card h2{font-size:25px;letter-spacing:-.05em;margin:27px 0 6px}.auth-card>p{font-size:12px;color:#91aeba}.auth-card form{margin-top:30px}.auth-card label{display:block;font-size:12px;font-weight:700;margin-bottom:19px}.auth-card input{display:block;margin-top:10px;width:100%;height:44px;background:#081b29;border:1px solid #3c5c68;border-radius:0;padding:0 13px;color:#e9faf8;outline:none}.auth-card input:focus,.setting input:focus{border-color:var(--mint)}.auth-card input::placeholder{color:#617f8b}.primary,.secondary{border:0;background:var(--mint);color:#092333;padding:14px 20px;display:inline-flex;align-items:center;justify-content:space-between;gap:26px;font-weight:800;font-size:12px;min-width:158px}.primary:hover:not(:disabled){background:#b3ffe9}.auth-card .primary{width:100%;margin-top:3px}.primary span,.secondary span{font-size:18px;font-weight:400}.auth-card .auth-note{line-height:1.7;font-size:10px;color:#839ca5;margin-top:19px}.error{min-height:17px;color:#ffb69f;font-size:12px;line-height:1.6}.workspace{padding:51px 0}.workspace-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.workspace-top h2{margin:12px 0 6px;font-size:30px;letter-spacing:-.05em}.workspace-top p{color:#95b0ba;font-size:12px}.workspace-body{display:grid;grid-template-columns:260px 1fr;min-height:600px;border:1px solid #355560;background:#0b1b2b}.project-list{border-right:1px solid #355560;padding:24px 16px;display:flex;flex-direction:column}.list-heading{color:#87c9c7;display:flex;justify-content:space-between;padding:3px 10px 20px}.project-row{display:block;width:100%;text-align:left;padding:16px 13px;background:none;border:1px solid transparent;color:#dcecea;margin-bottom:5px}.project-row.selected{background:#143947;border-color:#5dc9b56b}.project-row:hover{background:#143443}.project-row strong,.project-row small{display:block}.project-row strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-row small{font-size:10px;color:#8faeb6;margin-top:7px}.aside-note{margin-top:auto;border-top:1px solid #385562;padding:19px 10px 5px;color:#87a2aa;line-height:1.7;font-size:10px}.project-detail{padding:27px 31px;min-width:0}.empty-state{text-align:center;padding:130px 20px}.empty-glyph{font-size:92px;color:#78d9c5;line-height:1}.empty-state h3{font-size:23px}.empty-state p{font-size:12px;color:#90a9b4}.detail-head{display:flex;align-items:start;justify-content:space-between;border-bottom:1px solid #395864;padding-bottom:19px;gap:20px}.detail-head h3{font-size:27px;margin:12px 0 6px;letter-spacing:-.05em}.detail-head p{color:#97b2bc;font-size:11px;margin:0}.danger{border-color:#985d62;color:#ffbcb6}.danger:hover:not(:disabled){background:#6f3a4528}.step-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}.step-card{border:1px solid #365762;background:#102737;padding:22px;min-width:0}.step-label{display:flex;align-items:center;gap:14px;color:#8fcacb}.step-label b{font-size:16px;color:var(--mint)}.step-card h4{font-size:18px;margin:21px 0 8px}.step-card p{font-size:11px;color:#92afb8;line-height:1.8;min-height:42px}.drop-zone{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:8px;height:125px;margin:20px 0 12px;border:1px dashed #64ada7;background:#0b202f;color:#a8ded1;cursor:pointer;text-align:center;padding:10px}.drop-zone.dragging{background:#1c5157}.drop-zone input{display:none}.drop-zone>span{font-size:25px;line-height:1}.drop-zone strong{font-size:11px}.drop-zone small{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;color:#83abb1}.secondary{background:transparent;color:var(--mint);border:1px solid #74cdbb;min-width:0}.secondary:hover:not(:disabled){background:#7cdbca1a}.step-card .secondary,.step-card .primary{width:100%;margin-top:3px}.setting{display:block;font-size:11px;color:#c0d5d6;margin:20px 0 5px}.setting span{float:right;color:var(--mint)}.setting input{display:block;width:100%;height:41px;margin-top:10px;background:#0a1b2b;border:1px solid #43626c;color:#e6f4f0;padding:0 12px;outline:0}.setting-help{display:block;color:#83a2ac;font-size:10px;line-height:1.6;min-height:47px}.results{margin-top:32px;padding-top:24px;border-top:1px solid #395864}.results-title{display:flex;justify-content:space-between;align-items:end}.results-title h4{font-size:21px;margin:8px 0 18px}.results-title>span{font:10px 'DM Mono',monospace;color:var(--mint);padding-bottom:20px}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.result-card{border:1px solid #365762;background:#081c2a;min-width:0}.result-label{color:#88c9c7;padding:14px 15px;border-bottom:1px solid #365762;font-size:9px}.result-card img{width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;background:#071522;display:block}.result-stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #365762;border-right:0;margin-top:14px}.result-stats>div{padding:15px;border-right:1px solid #365762}.result-stats small,.result-stats strong{display:block}.result-stats small{font-size:10px;color:#8facb5}.result-stats strong{font-size:14px;margin-top:8px}.result-caveat{color:#e5b989;font-size:11px;line-height:1.7;margin:15px 0}.downloads{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.downloads .secondary{font-size:11px;padding:10px 13px}.subtle-link{font-size:11px;color:#9edaca;margin-left:auto}.subtle-link:hover{color:#fff}footer{max-width:1320px;margin:auto;border-top:1px solid #29404e;padding:24px max(4vw,22px) 33px;display:flex;justify-content:space-between;color:#7296a2;font-size:10px}footer a{color:var(--mint)}
.role-badge{font:10px 'DM Mono',monospace;letter-spacing:.05em;color:#102b30;background:var(--mint);padding:6px 9px;vertical-align:middle;white-space:nowrap}.admin-overview{margin:-5px 0 24px;padding:15px 19px;border:1px solid #72ccb978;background:#17403e83;color:#a7ead6;font:12px 'DM Mono','Noto Sans SC',sans-serif}
@media(max-width:950px){.auth-layout{grid-template-columns:1fr;gap:10px}.info-panel{padding:20px 0}.auth-card{max-width:500px}.workspace-body{grid-template-columns:210px 1fr}.step-grid{grid-template-columns:1fr}.step-card p{min-height:0}.intro-orb{right:-100px;opacity:.65}}
@media(max-width:650px){.bar{height:67px}.live{display:none}.bar-right{gap:12px}.bar-right a{display:none}.page-intro{height:365px}.intro-content{padding:48px 0}.page-intro h1{font-size:48px}.page-intro p{font-size:12px}.intro-meta{gap:0}.intro-meta div{padding:0 8px;display:block}.intro-meta span{display:block;margin-top:5px;font-size:9px}.intro-orb{right:-225px;top:50px;opacity:.5}.auth-layout{padding-top:25px}.auth-card{padding:26px 24px}.info-panel h2{font-size:32px}.info-line{display:block}.info-line span{display:block;margin-top:8px}.workspace-top{align-items:end;gap:10px}.workspace-top h2{font-size:24px}.workspace-top .primary{min-width:0;padding:11px;font-size:11px}.workspace-body{display:block}.project-list{border-right:0;border-bottom:1px solid #355560;padding:12px;max-height:210px;overflow:auto}.aside-note{display:none}.project-detail{padding:22px 15px}.detail-head h3{font-size:23px}.detail-head .danger{padding:8px;font-size:10px}.result-grid{grid-template-columns:1fr}.result-stats{grid-template-columns:1fr 1fr}.downloads .secondary{width:100%}.subtle-link{margin-left:0}footer span:nth-child(2){display:none}}
#upload-progress {display:flex;align-items:center;gap:12px;margin:12px 0;grid-column:1/-1} #upload-progress[hidden]{display:none} #upload-meter {width:65%;height:10px;accent-color:#b4e4da} #upload-status {font-size:14px} .detail-head[hidden]{display:none!important}
#workflow-dialog #upload-progress{position:sticky;bottom:0;z-index:1;display:grid;grid-template-columns:1fr;gap:10px;padding:18px 20px;margin:4px 0;border:1px solid #9ee3d561;border-radius:16px;background:linear-gradient(135deg,#15322f,#0d1a1d);box-shadow:0 10px 28px #0005}
#workflow-dialog #upload-progress[hidden]{display:none}
#workflow-dialog #upload-meter{width:100%;height:13px;accent-color:#99ecd1}
#workflow-dialog #upload-status{font-size:16px;font-weight:600;color:#effff9;font-variant-numeric:tabular-nums}
.upload-banner{position:fixed;right:20px;bottom:20px;z-index:30;max-width:min(440px,calc(100vw - 40px));padding:14px 20px;border:1px solid #9ee3d581;border-radius:14px;background:#15322ff0;box-shadow:0 16px 42px #0009;color:#effff9;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;pointer-events:none}
.upload-banner[hidden]{display:none}
#workflow-dialog .step-card{gap:16px 20px}
#workflow-dialog .step-card .setting{display:grid;align-content:start;gap:8px;margin:0;font-size:14px;line-height:1.4;color:#d7e7e5}
#workflow-dialog .step-card .setting input:not([type=checkbox]):not([type=file]),#workflow-dialog .step-card .setting select{width:100%;height:44px;min-height:44px;margin:0;padding:0 12px;border:1px solid #ffffff34;border-radius:10px;background:#091214;color:#f3fbf8;font-size:15px;outline:none}
#workflow-dialog .step-card .setting input:focus-visible,#workflow-dialog .step-card .setting select:focus-visible{border-color:#92e3cf;box-shadow:0 0 0 3px #7ee4cb21}
#workflow-dialog .step-card .setting:has(> input[type=checkbox]){display:flex;align-items:center;gap:10px;min-height:44px;align-self:end;cursor:pointer}
#workflow-dialog .step-card .setting:has(#dt-ns){display:block}
#workflow-dialog .step-card .setting:has(#dt-ns) input{margin-top:8px!important}
#workflow-dialog .step-card .setting input[type=checkbox],#workflow-dialog .irf-settings input[type=checkbox]{appearance:auto;display:inline-block;flex:none;width:18px;height:18px;min-width:18px;min-height:18px;margin:0;accent-color:#93e7d0;vertical-align:middle}
#workflow-dialog .step-card input[type=file]{width:100%;height:auto;min-height:43px;padding:8px;border:1px solid #ffffff30;border-radius:10px;background:#0a1518;color:#bcd1cf;font-size:13px}
#workflow-dialog .step-card input[type=file]::file-selector-button{margin-right:12px;padding:7px 12px;border:1px solid #7da99f70;border-radius:8px;background:#1a302e;color:#edf8f3;font:inherit;cursor:pointer}
#workflow-dialog .input-source-grid{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0}
#workflow-dialog .input-source-grid h3{margin:0 0 2px;padding:0 0 8px;border-bottom:1px solid #ffffff24}
#workflow-dialog .input-source-row,#workflow-dialog #input-panel .drop-zone{display:grid;grid-template-columns:130px minmax(0,1fr) 78px;align-items:center;gap:8px;min-width:0;height:44px;min-height:44px;margin:0;padding:0 5px;border:0;border-bottom:1px solid #ffffff1c;border-radius:0;background:transparent;color:#d7e7e5;text-align:left}
#workflow-dialog .input-source-row .input-file-label,#workflow-dialog #input-panel .drop-zone .input-file-label{font-size:13px;font-weight:600;white-space:nowrap}
#workflow-dialog .input-source-row .input-file-name,#workflow-dialog #input-panel .drop-zone .input-file-name{display:block;min-width:0;height:38px;padding:0 12px;overflow:hidden;border:1px solid #ffffff30;border-radius:5px;background:#252a30;color:#b9c9c8;font-size:13px;line-height:36px;text-overflow:ellipsis;white-space:nowrap}
#workflow-dialog .input-file-browse{height:38px;padding:0 12px;border:1px solid #ffffff30;border-radius:5px;background:#42474d;color:#eff5f2;font-size:13px}
#workflow-dialog .input-file-browse:hover{border-color:#93e7d0;color:#fff}
#workflow-dialog #input-panel .drop-zone:hover{background:#ffffff08}
#workflow-dialog #input-panel .drop-zone.dragging{background:#153a3b}
#workflow-dialog #input-panel .drop-zone>span:not(.input-file-label),#workflow-dialog #input-panel .drop-zone strong{display:none}
#workflow-dialog #input-panel .drop-zone input[type=file],#workflow-dialog .input-source-row input[type=file]{display:none}
#workflow-dialog .input-metadata-setting{max-width:340px;margin:4px 0 0;font-size:12px}
#workflow-dialog .input-metadata-setting input[type=file]{margin-top:7px}
#workflow-dialog .import-acquisition-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 14px}
#workflow-dialog #import-time-channels{background:#252a30!important;color:#b7c2c1}
#workflow-dialog #upload-btn{min-width:132px;justify-content:center}
#workflow-dialog #upload-btn[hidden]{display:none!important}
#workflow-dialog .fit-parameters{grid-column:1/-1;padding:14px 16px;border:1px solid #ffffff27;border-radius:14px;background:#101c1e}
#workflow-dialog .fit-parameter-heading{margin:0;color:#e1f1ed;font-size:15px;font-weight:650}
#workflow-dialog .fit-parameter-scroll{max-width:100%;overflow:auto;margin:14px 0 12px}
#workflow-dialog .fit-parameters table{width:100%;min-width:560px;border-collapse:separate;border-spacing:0 5px;font-size:13px}
#workflow-dialog .fit-parameters th{text-align:left;font-weight:600;color:#d9eae6}
#workflow-dialog .fit-parameters thead th{padding:0 6px 6px;font-size:12px;color:#9fbbb5}
#workflow-dialog .fit-parameters tbody th,#workflow-dialog .fit-parameters td{padding:2px 6px}
#workflow-dialog .fit-parameters input[type=number]{width:100%;height:36px;min-height:36px;padding:0 8px;border:1px solid #ffffff30;border-radius:8px;background:#091214;color:#effaf6;font:inherit;font-variant-numeric:tabular-nums}
#workflow-dialog .fit-parameters input[type=checkbox]{width:18px;height:18px;min-height:18px;margin:0;accent-color:#93e7d0}
#workflow-dialog .fit-parameters .fit-reset{width:auto;min-width:112px;padding:8px 13px;font-size:13px}
#workflow-dialog .fit-readiness{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 14px;padding:13px 16px;border:1px solid #ffffff27;border-radius:14px;background:#101c1e;min-width:0}
#workflow-dialog .fit-readiness h3{margin:0;color:#e1f1ed;font-size:15px;font-weight:650}
#workflow-dialog .fit-readiness-state{justify-self:end;color:#91efd6;font-size:13px;font-weight:700}
#workflow-dialog .fit-readiness-state[data-state=error]{color:#ffae9d}
#workflow-dialog .fit-readiness-state[data-state=waiting],#workflow-dialog .fit-readiness-state[data-state=checking]{color:#adc4c0}
#workflow-dialog .fit-readiness-issue{grid-column:1/-1;color:#ffae9d;font-size:12px;line-height:1.5;overflow-wrap:anywhere}
#workflow-dialog .fit-readiness-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px 14px}
#workflow-dialog .fit-readiness-item{display:grid;gap:3px;min-width:0}
#workflow-dialog .fit-readiness-item small{color:#91aaa5;font-size:11px}
#workflow-dialog .fit-readiness-item span{color:#dcece8;font-size:12px;line-height:1.45;overflow-wrap:anywhere}
#workflow-dialog .postprocess-card{min-height:280px}
#workflow-dialog .postprocess-card .postprocess-actions{grid-column:1/-1;display:flex;gap:10px;margin-top:12px}
#workflow-dialog .postprocess-card .postprocess-actions button{flex:1;min-height:44px;border-radius:12px;font-size:14px}
#workflow-dialog .postprocess-card #post-status{grid-column:1/-1;min-height:20px;color:#b6d4ce;font-size:13px;line-height:1.5}
#workflow-dialog .parameter-group{grid-column:1/-1;min-width:0}
#workflow-dialog .parameter-group h3{margin:0 0 12px;color:#dcece8;font-size:15px;font-weight:650}
#workflow-dialog .parameter-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px;align-items:end}
#workflow-dialog .parameter-fields>.setting{min-width:0}
#workflow-dialog .fit-model-fields{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:12px}
#workflow-dialog .fit-time-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:700px){#workflow-dialog .parameter-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}#workflow-dialog .fit-readiness-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#workflow-dialog .fit-parameters table{min-width:500px}#workflow-dialog .input-source-grid{grid-template-columns:1fr}#workflow-dialog .input-source-row,#workflow-dialog #input-panel .drop-zone{grid-template-columns:92px minmax(0,1fr) 68px;gap:5px;padding:0}#workflow-dialog .import-acquisition-fields{grid-template-columns:repeat(2,minmax(0,1fr))}#workflow-dialog .fit-model-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
.irf-warning-dialog{width:min(500px,calc(100vw - 32px));padding:24px;border:1px solid #82bcae;border-radius:16px;background:#111c1d;color:#e9f4f0;box-shadow:0 24px 80px #000a}
.irf-warning-dialog::backdrop{background:#020708b8;backdrop-filter:blur(3px)}
.irf-warning-dialog h2{margin:0 0 12px;font-size:18px}
.irf-warning-dialog p{margin:0;color:#b8c9c5;font-size:14px;line-height:1.7}
.irf-warning-actions{display:flex;justify-content:flex-end;margin-top:22px}

.desktop-stack figure[hidden],.desktop-stack .result-card[hidden]{display:none!important}

#project-panel .desktop-stage[data-strip=collapsed]{grid-template-columns:minmax(0,1fr) 32px}
#project-panel .desktop-stage[data-strip=collapsed][data-side-empty=true]{grid-template-columns:minmax(0,1fr)}
#project-panel .desktop-stage[data-strip=collapsed] .desktop-stack{display:none}
#project-panel .desktop-stage[data-strip=collapsed]:not([data-side-empty=true]) .desktop-strip-toggle-rail{display:flex}
#project-panel .desktop-stage[data-side-empty=true] .desktop-strip-toggle-rail{display:none}
#project-panel .desktop-strip-toggle-rail{display:none;min-width:32px;align-items:center;justify-content:center}
#project-panel .deck-strip-toggle{display:grid;place-items:center;flex:none;width:28px;height:28px;margin-left:auto;padding:0;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--ui-secondary);font-size:20px;line-height:1;cursor:pointer}
#project-panel .deck-strip-toggle:hover,#project-panel .deck-strip-toggle:focus-visible{border-color:var(--ui-border-hover);background:#ffffff10;color:var(--ui-text);outline:0}
#project-panel .desktop-strip-toggle-rail .deck-strip-toggle{width:30px;height:58px;margin:0;border-color:var(--ui-border);border-radius:10px;background:var(--ui-surface);color:var(--ui-accent)}
@media(max-width:800px){#project-panel .desktop-stage[data-strip=collapsed]{grid-template-columns:minmax(0,1fr) 32px}#project-panel .desktop-stage[data-strip=collapsed][data-side-empty=true]{grid-template-columns:minmax(0,1fr)}}

.desktop-main .result-card{position:relative}.desktop-main .result-card img{cursor:crosshair}.pixel-marker{position:absolute;width:18px;height:18px;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 2px #0009,0 0 12px #fff9;transform:translate(-50%,-50%);pointer-events:none}.pixel-marker[hidden]{display:none!important}

.auth-card .password-field{display:block;position:relative;margin-top:10px}.auth-card .password-field input{margin-top:0;padding-right:50px}.password-field button{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:#95a9ad}.password-field button:hover,.password-field button:focus-visible{background:#ffffff13;color:#eefaf8;outline:0}.password-field button:not(.is-visible) .eye-slash{display:none}
#phasor-chart.phasor-interactive{cursor:grab;touch-action:none}#phasor-chart.phasor-interactive:active{cursor:grabbing}

#workflow-dialog .analysis-roi-panel{padding:14px 16px;border:1px solid #ffffff27;border-radius:14px;background:#101c1e}
#workflow-dialog .analysis-roi-panel h3{margin:0 0 10px}
#workflow-dialog .analysis-roi-full,#workflow-dialog .analysis-roi-current{display:flex;align-items:center;gap:9px;min-height:32px;color:#dcece8;font-size:13px;cursor:pointer}
#workflow-dialog .analysis-roi-panel input[type=checkbox]{appearance:auto;width:17px;height:17px;min-width:17px;min-height:17px;margin:0;accent-color:#93e7d0}
#workflow-dialog .analysis-roi-list{max-height:150px;overflow:auto;margin-top:4px;border-top:1px solid #ffffff20}
#workflow-dialog .analysis-roi-item{display:grid;grid-template-columns:18px 10px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:34px;padding:4px 8px;color:#dcece8;font-size:12px;cursor:pointer}
#workflow-dialog .analysis-roi-item:hover{background:#ffffff08}
#workflow-dialog .analysis-roi-item input{appearance:auto;width:17px;height:17px;min-width:17px;min-height:17px;margin:0;accent-color:#93e7d0}
#workflow-dialog .analysis-roi-swatch{width:8px;height:8px;border-radius:50%;box-shadow:0 0 0 1px #ffffff40}
#workflow-dialog .analysis-roi-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#workflow-dialog .analysis-roi-item small{color:#9fb7b3;font-size:11px;white-space:nowrap}
#workflow-dialog .analysis-roi-status{display:block;margin-top:7px;color:#ffae9d;font-size:12px;line-height:1.45}
#workflow-dialog .fit-parameters input[aria-invalid=true]{border-color:#ff8579;box-shadow:0 0 0 1px #ff857933}
#workflow-dialog .analysis-mode-tabs{grid-column:1/-1;display:flex;align-items:end;gap:2px;margin:-2px 0 2px;border-bottom:1px solid #ffffff26}#workflow-dialog .analysis-mode-tabs button{min-width:132px;padding:10px 16px;border:0;border-bottom:2px solid transparent;background:#ffffff08;color:#aabdb9;font-size:13px;text-align:left}#workflow-dialog .analysis-mode-tabs button.active{border-bottom-color:#93e7d0;background:#173532;color:#effff8;font-weight:700}#workflow-dialog .analysis-mode-tabs button:disabled{opacity:.55;cursor:default}


#workflow-dialog .postprocess-card{display:block;min-height:430px;padding:0;border:0;background:transparent}
#workflow-dialog .postprocess-tabs{display:flex;gap:0;margin:0 0 16px;border-bottom:1px solid #ffffff26}
#workflow-dialog .postprocess-tabs button{min-width:116px;padding:10px 16px;border:0;border-bottom:2px solid transparent;background:#ffffff08;color:#aabdb9;font-size:13px;text-align:left}
#workflow-dialog .postprocess-tabs button:hover{background:#ffffff10;color:#eefcf7}
#workflow-dialog .postprocess-tabs button.active{border-bottom-color:#93e7d0;background:#173532;color:#effff8;font-weight:700}
#workflow-dialog .postprocess-tab-panel{min-height:300px}
#workflow-dialog .postprocess-group{margin:0 0 14px;padding:14px 16px;border:1px solid #ffffff27;border-radius:14px;background:#101c1e}
#workflow-dialog .postprocess-group h3{margin:0 0 12px;color:#e1f1ed;font-size:15px;font-weight:650}
#workflow-dialog .postprocess-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px;align-items:end}
#workflow-dialog .postprocess-fields>.setting{min-width:0}
#workflow-dialog .postprocess-roi-fields{grid-template-columns:minmax(0,1fr) minmax(180px,1fr)}
#workflow-dialog .postprocess-roi-fields>.secondary{min-height:44px;margin:0}
#workflow-dialog .postprocess-preview{min-height:76px}
#workflow-dialog .postprocess-preview #post-status{display:block;min-height:22px;color:#b6d4ce;font-size:13px;line-height:1.5}
#workflow-dialog .postprocess-apply-fields{grid-template-columns:minmax(0,1fr)}
#workflow-dialog .postprocess-actions{display:flex;gap:10px;margin:0}
#workflow-dialog .postprocess-actions button{flex:1;min-height:44px;margin:0;border-radius:12px;font-size:14px}
#workflow-dialog .phasor-cluster-appearance-fields{grid-template-columns:repeat(3,minmax(0,1fr))}
#workflow-dialog .phasor-cluster-appearance-fields .color-setting input[type="color"]{display:block;width:100%;height:42px;margin-top:6px;padding:4px;border:1px solid #547772;border-radius:9px;background:#091315;cursor:pointer}
#workflow-dialog #phasor-cluster-image{display:block;max-width:min(100%,320px);max-height:220px;margin:12px auto 0;border:1px solid #ffffff22;border-radius:10px;background:#050809;image-rendering:auto}
#workflow-dialog .postprocess-unavailable{display:grid;place-items:center;min-height:300px;border:1px dashed #ffffff30;border-radius:14px;background:#101c1e;color:#9fb7b3;font-size:13px}
@media(max-width:700px){#workflow-dialog .postprocess-tabs{overflow:auto}#workflow-dialog .postprocess-tabs button{min-width:108px;padding:10px 12px}#workflow-dialog .postprocess-fields,#workflow-dialog .phasor-cluster-appearance-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}#workflow-dialog .postprocess-roi-fields,#workflow-dialog .postprocess-apply-fields{grid-template-columns:1fr}}


#workflow-dialog .export-workflow-card{display:block;min-height:370px;padding:0;border:0;background:transparent}
#workflow-dialog .export-workflow-card .legacy-export-link{display:none!important}
#workflow-dialog .export-group{margin:0 0 14px;padding:14px 16px;border:1px solid #ffffff27;border-radius:14px;background:#101c1e}
#workflow-dialog .export-group h3{margin:0 0 12px;color:#e1f1ed;font-size:15px;font-weight:650}
#workflow-dialog .export-plan-info{display:grid;gap:5px;min-height:45px;padding:10px 12px;border:1px solid #2da6bc;border-radius:8px;background:#073245;color:#effbf7}
#workflow-dialog .export-plan-info strong{font-size:14px}
#workflow-dialog .export-plan-info span{color:#b9ddd8;font-size:12px}
#workflow-dialog .export-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 14px}
#workflow-dialog .export-choice{display:flex;align-items:center;gap:9px;min-height:38px;color:#dcece8;font-size:13px;cursor:pointer}
#workflow-dialog .export-choice input{appearance:auto;flex:none;width:17px;height:17px;margin:0;accent-color:#93e7d0}
#workflow-dialog .export-choice:has(input:disabled){color:#829895;cursor:default}
#workflow-dialog #export-status{display:block;min-height:22px;margin:2px 2px 12px;color:#b6d4ce;font-size:13px;line-height:1.5}
#workflow-dialog .export-actions{display:flex;justify-content:flex-end}
#workflow-dialog .export-actions .primary{min-width:176px;min-height:44px;border-radius:12px}
@media(max-width:700px){#workflow-dialog .export-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#workflow-dialog .export-actions .primary{width:100%}}

#workflow-dialog .reconstruction-observation-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
#workflow-dialog .reconstruction-solver-fields{grid-template-columns:repeat(3,minmax(0,1fr))}
#workflow-dialog .reconstruction-run #post-reconstruction-status{grid-column:1/-1;min-height:20px;color:#b6d4ce;font-size:13px}
@media(max-width:700px){#workflow-dialog .reconstruction-observation-fields,#workflow-dialog .reconstruction-solver-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* 登录密码可见性：图标固定在输入框右侧，避免被输入框布局遮挡。 */
.auth-card .password-field { display:block; position:relative; margin-top:10px; width:100%; }
.auth-card .password-field #password { margin-top:0; padding-right:52px; }
.auth-card .password-field #toggle-password {
  position:absolute; z-index:2; right:8px; top:50%; transform:translateY(-50%);
  display:grid; place-items:center; width:38px; height:38px; min-width:38px; padding:0;
  border:0; border-radius:8px; background:transparent; color:#d5ece8; line-height:1;
}
.auth-card .password-field #toggle-password svg { display:block; width:20px; height:20px; pointer-events:none; }
.auth-card .password-field #toggle-password:hover { color:#d9f8f1; background:#ffffff12; }
.auth-card .password-field #toggle-password:focus-visible { color:var(--mint); outline:1px solid var(--mint); outline-offset:1px; }
.auth-card .password-field #toggle-password[aria-pressed="true"] { color:var(--mint); }

/* V6.3 Data tab: only multi-detector PTU sources expose the compact channel picker. */
.detector-channel-field{position:relative}.detector-channel-trigger{display:block;width:100%;min-height:38px;padding:8px 34px 8px 11px;overflow:hidden;border:1px solid #46605d;border-radius:6px;background:#182426;color:#e8f5f2;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.detector-channel-trigger::after{position:absolute;right:12px;top:34px;content:'⌄';color:#9fb5b0;font-size:15px;pointer-events:none}.detector-channel-trigger:disabled{cursor:wait;opacity:.7}.detector-channel-menu{position:absolute;z-index:18;top:100%;right:0;left:0;max-height:178px;margin-top:4px;overflow:auto;padding:6px;border:1px solid #5c8a83;border-radius:6px;background:#142225;box-shadow:0 10px 28px #0009}.detector-channel-menu label{display:block;padding:7px 8px;color:#e5efed;font-size:13px;cursor:pointer}.detector-channel-menu label:hover{background:#6fddd41a}.detector-channel-menu input{width:auto;margin:0 7px 0 0;accent-color:#76dfd0}


/* V6.3 Traditional Fit keeps execution controls in the dialog footer. */
#workflow-dialog .fit-footer-actions {
  display:flex; align-items:center; gap:8px; margin-left:auto;
}
#workflow-dialog .fit-footer-actions[hidden] { display:none!important; }
#workflow-dialog .fit-footer-actions button {
  width:auto; min-width:116px; min-height:40px; margin:0; padding:9px 14px;
  white-space:nowrap;
}
#workflow-dialog[data-step="analysis"] footer { gap:8px; }
@media(max-width:700px) {
  #workflow-dialog .fit-footer-actions { width:100%; order:-1; margin:0; }
  #workflow-dialog .fit-footer-actions button { flex:1; min-width:0; padding-inline:8px; }
}

/* V6.3 Traditional Fit dialog: compact instrument sections */
#workflow-dialog[data-step=analysis] .analysis-roi-panel,
#workflow-dialog[data-step=analysis] .fit-setup,
#workflow-dialog[data-step=analysis] .fit-readiness,
#workflow-dialog[data-step=analysis] .fit-parameters{padding:9px 10px 10px;border:1px solid #465057;border-radius:4px;background:#20262b;box-shadow:none}
#workflow-dialog[data-step=analysis] .parameter-group>h3,
#workflow-dialog[data-step=analysis] .fit-readiness h3,
#workflow-dialog[data-step=analysis] .fit-parameter-heading{display:flex;align-items:center;gap:9px;margin:0 0 8px;color:#f0f4f4;font-size:13px;font-weight:700;line-height:20px}
#workflow-dialog[data-step=analysis] .parameter-group>h3::before,
#workflow-dialog[data-step=analysis] .parameter-group>h3::after,
#workflow-dialog[data-step=analysis] .fit-readiness h3::before,
#workflow-dialog[data-step=analysis] .fit-readiness h3::after,
#workflow-dialog[data-step=analysis] .fit-parameter-heading::before,
#workflow-dialog[data-step=analysis] .fit-parameter-heading::after{content:'';flex:1;height:1px;background:#444e54}
#workflow-dialog[data-step=analysis] .fit-model-fields{margin-bottom:8px}
#workflow-dialog[data-step=analysis] .fit-readiness-grid{gap:5px 13px}
#workflow-dialog[data-step=analysis] .fit-readiness-item{gap:1px}
#workflow-dialog[data-step=analysis] .fit-readiness-item small{font-size:10px}
#workflow-dialog[data-step=analysis] .fit-readiness-item span{font-size:11px;line-height:1.35}
#workflow-dialog[data-step=analysis] .fit-parameters table{width:100%;min-width:520px;border-collapse:collapse;border-spacing:0;font-size:12px}
#workflow-dialog[data-step=analysis] .fit-parameters thead th{padding:0 6px 5px;border-bottom:1px solid #444e54;font-size:11px}
#workflow-dialog[data-step=analysis] .fit-parameters tbody th,#workflow-dialog[data-step=analysis] .fit-parameters td{padding:4px 6px;border-bottom:1px solid #354047}
#workflow-dialog[data-step=analysis] .fit-parameters tbody tr:last-child th,#workflow-dialog[data-step=analysis] .fit-parameters tbody tr:last-child td{border-bottom:0}
#workflow-dialog[data-step=analysis] .fit-parameters input[type=number]{height:30px;min-height:30px;padding:0 7px;border-color:#566167;border-radius:3px;background:#252a30;font-size:12px}
#workflow-dialog[data-step=analysis] .fit-parameters input[type=checkbox]{width:16px;height:16px;min-height:16px}
#workflow-dialog[data-step=analysis] .fit-parameters .fit-reset{min-width:0;margin-top:7px;padding:6px 11px;border-radius:3px;font-size:12px}

/* Model declarations share the fitting dialog; only the read-only grid differs. */
.dl-model-contract{display:grid;grid-template-columns:minmax(90px,130px) minmax(0,1fr);gap:10px 14px;font-size:13px}
.dl-model-contract dt{color:var(--ui-secondary)}
.dl-model-contract dd{margin:0;overflow-wrap:anywhere}
@media(max-width:600px){.dl-model-contract{grid-template-columns:minmax(70px,95px) minmax(0,1fr)}}
