:root{--bg:#0f1113;--panel:#171a1d;--panel-2:#1e2226;--line:#2a2f35;--text:#ebe6dc;--muted:#9a958c;--accent:#f0c674;--accent-ink:#1a1405;--blue:#82cdff;--danger:#ff8a7a;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.45}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:600}p{margin:0}button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:8px;padding:7px 12px}button:hover{background:#252a2f;border-color:#3d444c}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}button.primary:hover{background:#f5d48f}button:focus-visible,input:focus-visible,canvas:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.muted{color:var(--muted)}.small{color:var(--muted);font-size:12px}.warn{color:var(--accent)}.tooth-mark{color:#f3e6cc;vertical-align:-4px}.start{place-items:center;min-height:100%;padding:40px 20px;display:grid}.start-inner{gap:22px;width:min(760px,100%);display:grid}.start h1{align-items:center;gap:10px;font-size:30px;display:flex}.start h1 .tooth-mark{width:34px;height:34px}.lead{color:#cfc9bd;font-size:17px}.drop{text-align:center;background:radial-gradient(at top,#1c2024,#15181b);border:1.5px dashed #444b53;border-radius:16px;justify-items:center;gap:16px;padding:38px 28px;transition:border-color .15s,background .15s;display:grid}.drop.over{border-color:var(--accent);background:#1f1c14}.drop-title{font-size:17px;font-weight:600}.drop-buttons{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.drop .hint{max-width:520px;color:var(--muted);font-size:13px}.progress{gap:12px;width:min(420px,100%);display:grid}.bar{background:#2a2f35;border-radius:3px;height:6px;overflow:hidden}.bar>div{background:var(--accent);height:100%;transition:width .2s}.error{color:#ffc9c0;background:#2a1714;border:1px solid #5a2c25;border-radius:10px;padding:12px 14px}.start-notes{grid-template-columns:1fr 1fr;gap:18px;display:grid}.start-notes h2{color:var(--accent);margin-bottom:6px;font-size:14px}.start-notes p{color:#c4beb2;font-size:13.5px}.disclaimer{color:var(--muted);border-top:1px solid var(--line);padding-top:14px;font-size:12.5px}.disclaimer.compact{border:0;padding:0;font-size:12px}.app{grid-template-rows:auto 1fr auto;height:100%;display:grid}.top{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:18px;padding:8px 14px;display:flex}.brand{white-space:nowrap;align-items:center;gap:8px;font-weight:600;display:flex}.scan-line{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:1;gap:14px;min-width:0;font-size:13px;display:flex;overflow:hidden}.top-actions{gap:8px;display:flex}.viewer{grid-template-columns:290px 1fr;min-height:0;display:grid}.side{border-right:1px solid var(--line);background:var(--panel);flex-direction:column;min-height:0;display:flex;overflow:hidden}.side-inner{flex-direction:column;flex:1;min-height:0;display:flex}.side-inner[hidden],.side-body[hidden]{display:none}.side-tabs{border-bottom:1px solid var(--line);background:var(--panel);gap:2px;padding:8px 8px 0;display:flex}.side-tabs button{color:var(--muted);background:#15181b;border-bottom:0;border-radius:8px 8px 0 0;flex:1;padding:7px 4px;font-size:13px}.side-tabs button.on{background:var(--panel-2);color:var(--text);font-weight:600}.side-tabs .side-close{background:#22262b;border-radius:6px;flex:none;margin:0 0 4px 4px;padding:0 7px}.side-body{flex:1;padding:0 14px 20px;overflow-y:auto}.viewer.no-panel{grid-template-columns:38px 1fr}.side.closed{align-items:center;padding-top:10px}.popover-box{display:inline-flex}.popover{z-index:50;white-space:normal;text-align:left;width:300px;color:var(--text);background:#1b1f23;border:1px solid #3a4148;border-radius:10px;gap:9px;padding:12px 14px;font-size:13px;display:grid;position:fixed;overflow-y:auto;box-shadow:0 14px 34px #0000008c}.popover h4{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0;font-size:11.5px;font-weight:600}button.icon.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.top-actions button.icon{padding:0 10px;font-weight:700;line-height:30px}.hover-tip{z-index:40;pointer-events:none;color:#e8e2d6;white-space:nowrap;background:#0c0e10eb;border:1px solid #3a4148;border-radius:6px;padding:3px 8px;font-size:12px;position:fixed}.hover-tip b{color:var(--accent);font-variant-numeric:tabular-nums}.side section{border-bottom:1px solid var(--line);gap:10px;padding:14px 0;display:grid}.side section:last-child{border-bottom:0}.side h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:12px}.segmented{flex-wrap:wrap;gap:4px;display:flex}.segmented button{border-radius:7px;padding:5px 10px;font-size:13px}.segmented button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.slider{color:#cfc9bd;grid-template-columns:70px 1fr;align-items:center;gap:8px;font-size:13px;display:grid}.slider input{width:100%;accent-color:var(--accent)}.readout{color:#d9d3c8;min-height:38px;font-size:13px}.readout b{color:var(--accent);font-variant-numeric:tabular-nums}.legend{gap:5px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.legend i{vertical-align:-1px;border:1px solid #444;border-radius:3px;width:12px;height:12px;margin-right:6px;display:inline-block}.howto{color:#cfc9bd;gap:4px;margin:0;padding-left:18px;font-size:13px;display:grid}.facts{grid-template-columns:78px 1fr;gap:4px 10px;margin:0;font-size:13px;display:grid}.facts dt{color:var(--muted)}.facts dd{margin:0}.facts .file{word-break:break-all;color:var(--muted);font-size:12px}.views{background:#08090a;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;gap:6px;min-height:0;padding:6px;display:grid}.view{border:1px solid var(--line);background:#000;border-radius:10px;flex-direction:column;min-height:0;margin:0;display:flex;position:relative;overflow:hidden}.view-head{border-bottom:1px solid var(--line);white-space:nowrap;background:#171a1deb;justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;font-size:12.5px;display:flex;overflow:hidden}.view-head>span:first-child{text-overflow:ellipsis;overflow:hidden}.view-head .dot{border-radius:50%;width:8px;height:8px;margin-right:7px;display:inline-block}.canvas-box{flex:1;min-height:0;position:relative}.slice-canvas{touch-action:none;cursor:crosshair;outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}.reset-view{background:#22262be6;position:absolute;top:8px;right:8px}.help-card{background:var(--panel)}.help-body{color:#cfc9bd;align-content:start;gap:10px;padding:14px 16px;font-size:13.5px;display:grid;overflow-y:auto}.status{color:var(--muted);border-top:1px solid var(--line);background:var(--panel);justify-content:space-between;gap:20px;padding:6px 14px;font-size:12px;display:flex}.reveal{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#121417d1;border-radius:12px;width:min(420px,100% - 24px);padding:8px 14px 6px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.reveal input{width:100%;accent-color:var(--accent);margin:0}.reveal .ticks{color:var(--muted);justify-content:space-between;margin-top:2px;font-size:11.5px;display:flex}.reveal .ticks span.on{color:var(--accent)}.view-3d{position:relative}.main-col{flex-direction:column;min-width:0;min-height:0;display:flex}.tabs{background:#08090a;gap:4px;padding:6px 8px 0;display:flex}.tabs button{color:var(--muted);background:#15181b;border-bottom:0;border-radius:8px 8px 0 0;padding:6px 14px;font-size:13px}.tabs button.on{background:var(--panel-2);color:var(--text)}.tabs .measure-tools{align-items:center;gap:4px;margin-left:auto;padding-bottom:5px;font-size:12.5px;display:flex}.tabs .measure-tools button.chip{border-bottom:1px solid var(--line);border-radius:6px;padding:2px 9px}.tabs .measure-tools button.chip.on{border-color:var(--accent)}.tabs .measure-hint{margin-left:4px;font-size:12px}@media (width<=1100px){.tabs .measure-hint{display:none}}.main-col>.views{flex:1}.arch-wrap{flex:1;min-height:0;display:flex}.arch-wrap>.views{flex:1}.arch-views{grid-template-rows:1.05fr 1fr;grid-template-columns:1fr 1fr}.pano-view{grid-column:1/span 2}.arch-note{color:var(--muted);text-align:center;background:#08090a;flex:1;place-items:center;padding:30px;display:grid}.cross-box{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.tool-row{align-items:center;gap:8px;display:flex;position:absolute;top:8px;left:8px}.tool-row .small{color:#82cdff;background:#0a0c0ecc;border-radius:5px;padding:2px 6px}button.chip.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.chart{gap:4px;display:grid}.chart-row{grid-template-columns:repeat(16,minmax(0,1fr));gap:2px;display:grid}.chart-row button:nth-child(8){margin-right:3px}button.tooth{font-variant-numeric:tabular-nums;border-radius:4px;min-width:0;padding:4px 0;font-size:10px}button.tooth.on{color:#1a1405;background:#ff9f43;border-color:#ff9f43;font-weight:700}button.tooth.missing{opacity:.5;cursor:default;border-style:dashed}button.tooth.none{opacity:.18;cursor:default}button.tooth:disabled{cursor:default}.chart-legend{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tooth-key{background:var(--panel-2);border:1px solid #555;border-radius:3px;width:12px;height:10px;display:inline-block}.tooth-key.missing{opacity:.6;border-style:dashed}.tooth-key.none{opacity:.25}.tooth-card{background:#211c16;border:1px solid #5a4630;border-radius:9px;gap:6px;padding:9px 10px;display:grid}.tooth-card select{width:100%;font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:4px;font-size:12.5px}.guide-group{gap:4px;display:grid}.guide-title{color:#cfc9bd;font-size:12px}.guide-items{flex-wrap:wrap;gap:4px;display:flex}.guide-card{color:#d9d3c8;background:#141c22;border:1px solid #2f4a5c;border-radius:9px;gap:6px;padding:9px 10px;font-size:13px;display:grid}.side details.fold{border-bottom:1px solid var(--line);padding:12px 0}.side details.fold>summary{cursor:pointer;justify-content:space-between;align-items:center;list-style:none;display:flex}.side details.fold>summary::-webkit-details-marker{display:none}.side details.fold>summary:after{content:"+";color:var(--muted)}.side details.fold[open]>summary:after{content:"-"}.side details.fold[open]>summary{margin-bottom:10px}.export-buttons,.plan-tools{gap:6px;display:grid}.note-row{gap:6px;display:flex}.note-row input{min-width:0;font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:7px;flex:1;padding:5px 8px;font-size:13px}.plan-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}button.plan-item{text-align:left;justify-content:space-between;gap:8px;width:100%;padding:6px 9px;font-size:12.5px;display:flex}button.plan-item span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}button.plan-item.on{background:#2a2016;border-color:#ff9f43}.plan-card{color:#d9d3c8;background:#211c16;border:1px solid #5a4630;border-radius:9px;gap:7px;padding:9px 10px;font-size:13px;display:grid}.implant-editor{gap:5px;display:grid}.implant-editor .slider{grid-template-columns:92px 1fr}.implant-editor select{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:3px;font-size:12.5px}label.check{color:#cfc9bd;align-items:flex-start;gap:7px;font-size:13px;display:flex}label.check input{accent-color:var(--accent);margin-top:2px}p.error.small{padding:8px 10px;font-size:12.5px}.export-buttons button{text-align:left}button:disabled{opacity:.55;cursor:progress}.scan-list{gap:5px;margin:0;padding:0;list-style:none;display:grid}.scan-list li{align-items:stretch;gap:6px;display:flex}.scan-list li>.icon{padding:0 8px;font-size:15px}button.scan-item{text-align:left;flex:1;gap:1px;min-width:0;padding:6px 9px;font-size:12.5px;display:grid}.scan-list li.on button.scan-item{border-color:var(--accent);background:#2a2416}.scan-item .file{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.scan-item .scan-teeth{color:#cfc9bd}.start-scans{gap:8px;display:grid}.start-scans h2{color:var(--accent);font-size:14px}.notice{color:#e8dcc6;background:#211c16;border:1px solid #5a4630;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;margin:6px 8px 0;padding:7px 10px;font-size:12.5px;display:flex}.tabs .measure-note{font-size:12px}.tabs .measure-approx{color:var(--accent);margin-left:4px;font-size:12px}.tabs .measure-tools{flex-wrap:wrap;justify-content:flex-end;row-gap:3px}.flat-compare{background:#08090a;flex-direction:column;flex:1;min-height:0;display:flex}.compare-bar{flex-wrap:wrap;align-items:center;gap:6px 14px;padding:6px 10px 0;font-size:12.5px;display:flex}.compare-bar .pick{align-items:center;gap:6px;display:flex}.compare-bar select{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;max-width:360px;padding:3px 4px;font-size:12.5px}.compare-bar .slider{grid-template-columns:auto 120px}.compare-bar .slider.wide{grid-template-columns:auto 180px}.compare-bar label.check{align-items:center}.views.flat-two{flex:1;grid-template-rows:1fr;grid-template-columns:1fr 1fr}.flat-compare>.views{flex:1}.compare-note{padding:0 10px 6px}.tooth-diagram{width:100%;height:auto;display:block}.diagram-label{cursor:pointer}.diagram-label:focus-visible{outline:none}.diagram-label:focus-visible text{text-decoration:underline}@media (width<=900px){html,body,#root{height:auto}.app{height:auto;display:block}.top{flex-wrap:wrap;gap:8px 12px;padding:8px 10px}.scan-line{display:none}.top-actions{margin-left:auto}.top-actions button{padding:6px 10px;font-size:13px}.viewer{flex-direction:column;display:flex}.views{flex-direction:column;gap:10px;padding:8px;display:flex}.view{flex:none;height:78vw;min-height:260px;max-height:560px}.views.one .view{height:calc(100svh - 110px);max-height:none}.view-head{white-space:normal;flex-wrap:wrap}.view-head .hint{display:none}.head-actions{flex-wrap:wrap;justify-content:flex-end;row-gap:4px;min-width:0;max-width:100%}.side{border-right:0;border-top:1px solid var(--line);order:2;overflow:visible}.side-body{overflow:visible}.viewer.no-panel{grid-template-columns:1fr}.arch-views .view{height:78vw}.pano-view{grid-column:auto}.status{flex-direction:column;gap:2px}.start-notes{grid-template-columns:1fr}.views.flat-two{flex-direction:column;display:flex}.top-actions{flex-wrap:wrap;justify-content:flex-end;row-gap:6px}.compare-bar .slider,.compare-bar .slider.wide{grid-template-columns:auto 1fr;width:100%}}.head-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}button.chip{background:#22262b;border-radius:6px;padding:2px 8px;font-size:12px}button.icon{background:#22262b;border-radius:6px;padding:0 7px;font-size:14px;line-height:20px}.views.one{grid-template-rows:1fr;grid-template-columns:1fr}.view.hidden{display:none}.gl-holder{background:radial-gradient(at 50% 35%,#1b1f24,#0d0f11 70%);flex:1;min-height:0;position:relative}.gl-canvas{touch-action:none;outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}.gl-note{color:var(--muted);text-align:center;place-items:center;padding:20px;font-size:13px;display:grid;position:absolute;inset:0}
