:root{--bg:#12161c;--panel:#191f27;--panel-2:#1f2630;--line:#2b3440;--line-2:#364150;--text:#dfe6ee;--muted:#8794a3;--accent:#3d9bff;--accent-2:#2a7fd4;--good:#3ecf7a;--warn:#f2b33d;--bad:#ff5d5d;--radius:7px;color:var(--text);background:var(--bg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:var(--text);border:1px solid var(--line-2);background:#11151b;border-radius:5px;min-width:0;padding:5px 7px}input:focus,select:focus,textarea:focus{outline:1px solid var(--accent);border-color:var(--accent)}input[type=color]{cursor:pointer;background:0 0;border:none;width:18px;height:18px;padding:0}input[type=range]{accent-color:var(--accent);background:0 0;border:none;padding:0}textarea{resize:vertical;width:100%}.app{flex-direction:column;height:100%;display:flex}.topbar{border-bottom:1px solid var(--line);background:#0e1217;align-items:center;gap:16px;height:46px;padding:0 14px;display:flex}.brand{letter-spacing:.2px;align-items:center;gap:8px;font-size:14px;font-weight:700;display:flex}.logo{color:var(--accent);font-size:16px}.case-name{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.top-actions{gap:6px;display:flex}.tb{background:var(--panel-2);border:1px solid var(--line-2);border-radius:6px;padding:5px 12px}.tb:hover{border-color:var(--accent)}.workspace{flex:1;min-height:0;display:flex}.rail{border-right:1px solid var(--line);background:#0e1217;flex-direction:column;gap:2px;width:68px;padding:8px 0;display:flex}.rail-btn{color:var(--muted);background:0 0;border:none;border-left:3px solid #0000;flex-direction:column;align-items:center;gap:3px;padding:9px 0 8px;font-size:11px;display:flex}.rail-btn:hover{color:var(--text)}.rail-btn.on{color:#fff;border-left-color:var(--accent);background:#161c24}.rail-icon{font-size:18px;line-height:1}.panel{background:var(--panel);overflow:hidden auto}.panel.left{border-right:1px solid var(--line);width:340px}.panel.right{border-left:1px solid var(--line);width:260px;padding-bottom:20px}.panel-title{text-transform:uppercase;letter-spacing:.8px;color:var(--muted);margin:0;padding:14px 14px 8px;font-size:13px;font-weight:600}.sub-title{text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:16px 12px 6px;font-size:12px}.section{border-top:1px solid var(--line)}.section-head{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:9px 12px;display:flex}.section-head:hover{background:#1c232c}.section-title{flex:1;font-weight:600}.section-right{align-items:center;gap:6px;display:flex}.section-body{flex-direction:column;gap:8px;padding:2px 12px 12px;display:flex}.chev{color:var(--muted);font-size:10px;transition:transform .12s;display:inline-block}.chev.open{transform:rotate(90deg)}.row{align-items:center;gap:6px;display:flex}.row.wrap{flex-wrap:wrap}.btn{background:var(--panel-2);border:1px solid var(--line-2);white-space:nowrap;border-radius:6px;padding:6px 10px}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.small{padding:3px 8px;font-size:12px}.btn-primary{background:var(--accent-2);border-color:var(--accent-2);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent)}.btn-danger{color:#ff8f8f}.btn-danger:hover:not(:disabled){border-color:var(--bad)}.btn-ghost{background:0 0}.btn.active{border-color:var(--accent);color:#fff;box-shadow:inset 0 0 0 1px var(--accent);background:#12385f}.icon-btn{color:var(--muted);background:0 0;border:none;padding:2px 4px}.icon-btn:hover{color:var(--text)}.hint{color:var(--muted);margin:0;font-size:12px;line-height:1.45}.muted{color:var(--muted)}.small{font-size:11px}.check{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.axis-tag{width:18px;color:var(--muted);font-weight:700}.field{color:var(--muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.field input,.field select{color:var(--text);width:100%;font-size:12.5px}.form-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.form-grid.three{grid-template-columns:1fr 1fr 1fr}.slider{grid-template-columns:88px 1fr 54px 18px;align-items:center;gap:6px;font-size:12px;display:grid}.slider-label{color:var(--muted)}.slider-num{text-align:right;padding:2px 4px;font-size:12px}.slider-unit{color:var(--muted);font-size:11px}.stats{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.stat{border:1px solid var(--line);background:#141a21;border-radius:6px;flex-direction:column;gap:2px;min-width:0;padding:6px 8px;display:flex}.stat-label{color:var(--muted);font-size:10.5px;line-height:1.2}.stat-value{font-variant-numeric:tabular-nums;text-overflow:ellipsis;font-weight:600;overflow:hidden}.good{color:var(--good)}.warn{color:var(--warn)}.bad{color:var(--bad)}.card{border:1px solid var(--line);border-radius:var(--radius);background:#141a21;flex-direction:column;gap:7px;padding:10px;display:flex}.card-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.card-sub{color:#b5c0cc;font-size:12px}.card-sub.muted{color:var(--muted)}.gauge{border:1px solid var(--line);background:#0f1318;border-radius:4px;height:8px;position:relative}.gauge-band{background:#3ecf7a47;position:absolute;top:0;bottom:0}.gauge-ideal{background:var(--good);width:2px;position:absolute;top:-3px;bottom:-3px}.gauge-value{background:var(--accent);border-radius:3px;width:12px;height:14px;margin-left:-6px;position:absolute;top:-4px;box-shadow:0 0 0 2px #0e1217}.chart{flex-direction:column;gap:3px;padding-top:14px;display:flex;position:relative}.chart-side{color:var(--muted);justify-content:space-between;font-size:10px;display:flex;position:absolute;top:0;left:0;right:0}.chart-row{grid-template-columns:repeat(16,1fr);gap:2px;display:grid}.chart-divider{background:var(--line-2);height:1px;margin:2px 0}.tooth{border:1px solid var(--line-2);background:#141a21;border-radius:4px;flex-direction:column;align-items:center;min-width:0;padding:3px 0 2px;line-height:1.1;display:flex}.tooth:nth-child(8){margin-right:3px}.tooth-num{font-size:10.5px;font-weight:600}.tooth-sub{color:var(--muted);font-size:8.5px}.tooth:hover:not(:disabled){border-color:var(--accent)}.tooth:disabled{opacity:.3;cursor:default}.tooth.done{background:#12301f;border-color:#2b7a4a}.tooth.done .tooth-sub{color:#8fe0ad}.tooth.warn{background:#33280f;border-color:#8a6a1f}.tooth.missing{color:var(--muted);background:0 0;border-style:dashed}.tooth.selected{background:var(--accent-2);color:#fff;border-color:#9ccfff}.tooth.selected .tooth-sub{color:#e2f0ff}.seg{border:1px solid var(--line-2);border-radius:6px;display:inline-flex;overflow:hidden}.seg button{color:var(--muted);background:0 0;border:none;padding:2px 9px;font-size:12px}.seg button.on{background:var(--accent-2);color:#fff}.nudge{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px;font-size:12px;display:flex}.nudge>span{width:40px}.verdict{border:1px solid;border-radius:6px;padding:7px 10px;font-size:12.5px}.verdict.pass{color:#9ff0bf;background:#10301e;border-color:#2b7a4a}.verdict.borderline{color:#ffd98a;background:#33280f;border-color:#8a6a1f}.verdict.fail{color:#ffb0b0;background:#3a1416;border-color:#8a2a2f}.list{flex-direction:column;gap:4px;display:flex}.list-item{text-align:left;border:1px solid var(--line);background:#141a21;border-radius:6px;align-items:center;gap:8px;padding:6px 8px;display:flex}.list-item.on{border-color:var(--accent)}.list-item .push{font-variant-numeric:tabular-nums;margin-left:auto}.list-item.static{cursor:default}.findings{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.findings li{border-left:3px solid var(--muted);background:#141a21;border-radius:5px;padding:6px 8px 6px 10px;font-size:12px}.findings li.ok{border-left-color:var(--good)}.findings li.warn{border-left-color:var(--warn)}.findings li.error{border-left-color:var(--bad);background:#2a1416}.findings li b{margin-right:4px}.warning-box{color:#f3d58c;background:#2d250f;border:1px solid #6b5420;border-radius:6px;padding:8px 10px;font-size:12px;line-height:1.45}.layer-group{border-top:1px solid var(--line)}.group-head{align-items:center;gap:6px;padding:6px 10px;display:flex}.group-name{text-align:left;background:0 0;border:none;flex:1;padding:2px 0;font-weight:600}.group-opacity{width:64px}.layer{cursor:pointer;align-items:center;gap:7px;padding:4px 10px 4px 22px;display:flex}.layer:hover{background:#1c232c}.layer.on{background:#17304d}.layer-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12.5px;overflow:hidden}.eye{color:var(--accent);background:0 0;border:none;width:16px;padding:0;font-size:12px}.badge{text-transform:uppercase;letter-spacing:.4px;color:var(--muted);background:#252e39;border-radius:3px;padding:1px 5px;font-size:9.5px}.badge.prep{color:#ffd98a;background:#4a3a14}.badge.gingiva{color:#f3a7b4;background:#43222a}.badge.bone{color:#e3cf9f;background:#3d3524}.badge.tooth{color:#9fd6f0;background:#1f3540}.props{flex-direction:column;gap:8px;padding:4px 12px;display:flex}.empty{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:10px;padding:16px;display:flex}.empty p{margin:0}.stage{background:radial-gradient(at 50% 35%,#2c3542 0%,#161b22 70%,#11151b 100%);flex:1;min-width:0;position:relative}.viewport{position:absolute;inset:0}.viewport.picking canvas{cursor:crosshair}.view-toolbar{z-index:5;border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0e1217d9;border-radius:8px;gap:2px;padding:3px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.view-toolbar button{white-space:nowrap;color:#c2ccd7;background:0 0;border:none;border-radius:5px;padding:4px 10px;font-size:12px}.view-toolbar button:hover{color:#fff;background:#26303c}.view-toolbar .sep{background:var(--line-2);width:1px;margin:3px 4px}.vp-label{color:#fff;white-space:nowrap;font-variant-numeric:tabular-nums;background:#0c1016db;border:1px solid #3b4a5c;border-radius:4px;padding:2px 6px;font-size:11px}.vp-label-ortho{border-color:#1fa58f;padding:1px 4px;font-size:10px}.legend{z-index:5;border:1px solid var(--line);background:#0e1217eb;border-radius:8px;flex-direction:column;gap:6px;width:290px;padding:10px 12px;display:flex;position:absolute;bottom:12px;left:12px}.legend-head{justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.legend-bar{border-radius:3px;height:10px}.legend-ticks{color:var(--muted);justify-content:space-between;font-size:10.5px;display:flex}.legend-keys{flex-direction:column;gap:4px;font-size:12px;display:flex}.legend-keys i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.legend-summary{color:#c9d3de;border-top:1px solid var(--line);padding-top:6px;font-size:12px}.busy{border:1px solid var(--line-2);z-index:10;background:#0e1217eb;border-radius:8px;align-items:center;gap:8px;padding:8px 14px;display:flex;position:absolute;top:56px;left:50%;transform:translate(-50%)}.spinner{border:2px solid var(--line-2);border-top-color:var(--accent);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toast{z-index:10;text-align:center;background:#1d2a3a;border:1px solid #355172;border-radius:8px;max-width:70%;padding:8px 14px;position:absolute;bottom:70px;left:50%;transform:translate(-50%)}.drop-overlay{border:2px dashed var(--accent);z-index:20;pointer-events:none;background:#3d9bff14;border-radius:12px;justify-content:center;align-items:center;font-size:16px;display:flex;position:absolute;inset:12px}.statusbar{border-top:1px solid var(--line);height:28px;color:var(--muted);background:#0e1217;align-items:center;gap:12px;padding:0 12px;font-size:12px;display:flex}.tool-pill{text-transform:capitalize;color:var(--text);background:#232b35;border-radius:10px;padding:2px 8px}.tool-pill.on{background:var(--accent-2);color:#fff}.status-hint{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.disclaimer-pill{color:#f3d58c;border:1px solid #6b5420;border-radius:10px;padding:1px 8px;font-size:11px}@media (width<=1100px){.panel.right{display:none}.panel.left{width:300px}}.timeline{z-index:6;border:1px solid var(--line);background:#0e1217eb;border-radius:10px;align-items:center;gap:8px;width:min(720px,100% - 340px);padding:6px 12px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.timeline input[type=range]{flex:1}.tl-play{background:var(--accent-2);color:#fff;border:none;border-radius:50%;flex:none;width:32px;height:32px;font-size:12px}.tl-play:hover{background:var(--accent)}.tl-btn{border:1px solid var(--line-2);background:0 0;border-radius:5px;padding:3px 8px;font-size:12px}.tl-label{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;min-width:150px;font-size:12px}.tl-label b{color:var(--text)}.tl-ghost{white-space:nowrap}.card-sub.warn{color:var(--warn)}.dataset{border:1px solid var(--line);background:#141a21;border-radius:6px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.dataset-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.dataset a{color:#8cc4ff;text-decoration:none}.dataset a:hover{text-decoration:underline}.lic{white-space:nowrap;border-radius:10px;padding:1px 6px;font-size:10.5px}.lic.free{color:#8fe0ad;background:#12301f}.lic.nc{color:#ffd98a;background:#33280f}.lic.paid{color:#b8c4d4;background:#2a2f3a}
