:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f4f5f7;--panel:#fff;--panel-2:#f0f2f5;--border:#dde1e6;--text:#1b1f24;--text-muted:#5f6b7a;--accent:#2f6fde;--accent-text:#fff;--warn-bg:#fff6e0;--warn-text:#7a5300;--error-text:#b42318;--viewport-bg:#e9ecf0;--radius:8px;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#15181c;--panel:#1c2026;--panel-2:#242a31;--border:#2e353e;--text:#e6e9ed;--text-muted:#9aa5b1;--accent:#5b8ef0;--accent-text:#0b1220;--warn-bg:#3a2f12;--warn-text:#f3d48a;--error-text:#ff8a80;--viewport-bg:#20242a}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.4 var(--font)}button,select,input{font:inherit;color:inherit}.app{grid-template:"toolbar toolbar""panel viewport"1fr/340px 1fr;height:100%;display:grid}.toolbar{background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap;grid-area:toolbar;align-items:center;gap:12px;padding:8px 12px;display:flex}.brand{margin-right:8px;font-weight:600}.group{align-items:center;gap:4px;display:flex}.sep{background:var(--border);align-self:stretch;width:1px}.btn{border:1px solid var(--border);background:var(--panel-2);cursor:pointer;white-space:nowrap;border-radius:6px;padding:5px 10px}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:default}.btn.primary,.btn.active{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn.ghost{background:0 0;border-color:#0000;padding:2px 6px}.panel{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;grid-area:panel;gap:16px;padding:12px;display:flex;overflow-y:auto}.panel h2{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0 0 8px;font-size:12px}.dropzone{border:1.5px dashed var(--border);border-radius:var(--radius);text-align:center;color:var(--text-muted);cursor:pointer;padding:16px 12px;transition:border-color .15s,background .15s}.dropzone.over,.dropzone:hover{border-color:var(--accent);background:var(--panel-2)}.row{align-items:center;gap:8px;display:flex}.field{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.field label,.muted{color:var(--text-muted);font-size:12px}select{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:4px 6px}.objects{flex-direction:column;gap:8px;display:flex}.object{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2);flex-direction:column;gap:6px;padding:8px 10px;display:flex}.object-head{align-items:center;gap:8px;display:flex}.object-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:500;overflow:hidden}.badge{background:var(--panel);border:1px solid var(--border);color:var(--text-muted);border-radius:999px;padding:1px 6px;font-size:11px}.stats{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:12px}.warning{background:var(--warn-bg);color:var(--warn-text);border-radius:6px;padding:4px 8px;font-size:12px}.error{color:var(--error-text);font-size:12px}input[type=range]{accent-color:var(--accent);flex:1}input[type=checkbox]{accent-color:var(--accent)}.viewport{background:var(--viewport-bg);grid-area:viewport;min-width:0;min-height:0;position:relative}.canvas-host{position:absolute;inset:0}.empty{color:var(--text-muted);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.empty>*{pointer-events:auto}.viewport.over:after{content:"Drop scans to import";border:2px dashed var(--accent);border-radius:var(--radius);color:var(--accent);background:color-mix(in srgb, var(--viewport-bg) 80%, transparent);pointer-events:none;justify-content:center;align-items:center;font-weight:600;display:flex;position:absolute;inset:12px}.hint{color:var(--text-muted);pointer-events:none;font-size:12px;position:absolute;bottom:10px;left:12px}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.steps ol{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.step{text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:8px;width:100%;padding:5px 8px;display:flex}.step:hover:not(:disabled){background:var(--panel-2)}.step.active{background:var(--panel-2);border-color:var(--accent);font-weight:600}.step:disabled{color:var(--text-muted);opacity:.55;cursor:default}.step-icon{width:14px;color:var(--text-muted)}.step.done .step-icon{color:#2fbf71}.step.stale .step-icon{color:#e0a325}.badge.stale{color:var(--warn-text);background:var(--warn-bg);border-color:#0000;margin-left:auto}.step-panel{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding-top:12px;display:flex}.step-body{flex-direction:column;gap:10px;display:flex}.step-body p{margin:0}.hint-box{background:color-mix(in srgb, var(--accent) 12%, var(--panel));border-left:3px solid var(--accent);border-radius:4px;padding:6px 8px}.info{color:var(--text-muted);font-size:12px}.small{font-size:12px}.row.wrap{flex-wrap:wrap}.params{font-variant-numeric:tabular-nums;grid-template-columns:auto 1fr;gap:2px 12px;margin:0;font-size:12px;display:grid}.params dt{color:var(--text-muted)}.params dd{margin:0}input:not([type]),input[type=text],input[type=email],input[type=password]{border:1px solid var(--border);background:var(--panel-2);border-radius:6px;padding:5px 8px}.param-grid{grid-template-columns:1fr;gap:6px;display:grid}.param-field{grid-template-columns:1fr 90px;align-items:center;gap:8px;font-size:13px;display:grid}.param-field input{border:1px solid var(--border);background:var(--panel-2);font-variant-numeric:tabular-nums;border-radius:6px;width:100%;padding:4px 6px}.params dd.ok{color:#2fbf71;font-weight:600}.params dd.bad{color:var(--error-text);font-weight:600}.adapt-row{border-bottom:1px dashed var(--border);flex-direction:column;gap:4px;padding-bottom:8px;display:flex}.adapt-row .badge{margin-left:6px}.tooth-chart{flex-direction:column;gap:3px;display:flex}.tooth-row{grid-template-columns:repeat(16,1fr);gap:2px;display:grid}.tooth{border:1px solid var(--border);background:var(--panel-2);font-variant-numeric:tabular-nums;cursor:pointer;border-radius:4px;padding:3px 0;font-size:10.5px}.tooth.midline{margin-left:4px}.tooth:disabled{opacity:.35;cursor:default}.tooth:hover:not(:disabled){border-color:var(--accent)}.tooth.selected{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.tooth.active{outline:2px solid color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:1px}.tooth-chart-legend{justify-content:space-between;font-size:11px;display:flex}.axis-legend{gap:12px;margin:0;padding:0;font-size:12px;list-style:none;display:flex}.axis-legend li,.contact-row{align-items:center;gap:6px;display:flex}.contact-row span:nth-child(2){flex:1;font-size:12px}.swatch{border-radius:50%;flex:none;width:10px;height:10px;display:inline-block}.tilt-pad{text-align:center;grid-template-columns:repeat(3,1fr);place-items:center stretch;gap:4px;max-width:260px;display:grid}.legend{background:color-mix(in srgb, var(--panel) 92%, transparent);border:1px solid var(--border);border-radius:var(--radius);pointer-events:none;width:220px;padding:8px 10px;font-size:12px;position:absolute;bottom:12px;right:12px}.legend-title{margin-bottom:6px;font-weight:600}.legend-bar{border-radius:3px;height:10px}.legend-ticks{color:var(--text-muted);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:4px;display:flex}.legend-ticks em{opacity:.8;font-style:normal}@media (max-width:720px){.app{grid-template:"toolbar""viewport"45%"panel"1fr/1fr}.panel{border-right:none;border-top:1px solid var(--border)}}.session-screen{background:var(--bg);justify-content:center;align-items:flex-start;min-height:100%;padding:48px 16px;display:flex}.session-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:12px;width:100%;max-width:380px;padding:20px;display:flex}.session-card.wide{max-width:820px}.session-card h1{margin:0;font-size:18px}.session-card h2{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0;font-size:12px}.session-head{align-items:center;gap:8px;display:flex}.session-head .spacer{flex:1}.session-card input[type=text],.session-card input[type=email],.session-card input[type=password]{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;width:100%;padding:6px 8px}.session-card form{flex-direction:column;gap:4px;display:flex}.session-card .actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px}.divider{border:none;border-top:1px solid var(--border);width:100%;margin:4px 0}.notice{background:var(--warn-bg);color:var(--warn-text);border-radius:6px;padding:6px 8px;font-size:12px}.case-table-wrap{overflow-x:auto}.case-table{border-collapse:collapse;width:100%;font-size:13px}.case-table th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border);padding:6px 8px;font-size:12px;font-weight:500}.case-table td{border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;padding:8px}.case-table tbody tr{cursor:pointer}.case-table tbody tr:hover,.case-table tbody tr:focus-visible{background:var(--panel-2);outline:none}.new-case{grid-template-columns:1fr 110px 170px auto;align-items:end;gap:8px;display:grid}.new-case .field{margin:0}@media (max-width:640px){.new-case{grid-template-columns:1fr 1fr}}.session-controls{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.session-controls .case-label{text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-weight:500;overflow:hidden}.save-state{color:var(--text-muted);white-space:nowrap;font-size:12px}.save-state.dirty{color:var(--warn-text)}.save-state.failed{color:var(--error-text)}.badge.offline{background:var(--warn-bg);color:var(--warn-text);border-color:#0000}.nudge-pad{flex-direction:column;gap:8px;display:flex}.nudge-grid{grid-template-columns:repeat(3,1fr);gap:4px;max-width:280px;display:grid}.nudge-grid .btn{padding:4px 6px;font-size:12px}.nudge-label{color:var(--text-muted);font-size:12px}.nudge-row{grid-template-columns:110px 1fr 1fr;align-items:center;gap:4px;max-width:280px;font-size:12px;display:grid}.nudge-row .btn{padding:3px 6px;font-size:12px}
