.viewer-container{height:100vh;width:100vw;position:relative;display:flex;flex-direction:column;overflow:hidden}@media (max-width: 768px){.leva-root{width:100vw!important;max-width:100vw!important;font-size:.8rem}.leva-panel-content{flex-wrap:wrap}}body{margin:0;padding:0;box-sizing:border-box;font-family:Segoe UI,sans-serif;background-color:#111;color:#fff;overflow:hidden}html,#root{height:100%}canvas{display:block}@keyframes slideFadeIn{0%{opacity:0;transform:translateY(40px) scale(.98);filter:blur(6px)}60%{opacity:.7;transform:translateY(-8px) scale(1.02);filter:blur(1px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}.slide-fade-in{animation:slideFadeIn 1s cubic-bezier(.4,0,.2,1) both;transition:box-shadow .3s,filter .3s}.loading-container{display:flex;flex-direction:column;align-items:center;gap:10px}.progress-bar{width:200px;height:6px;background-color:#e0e0e0;border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#c97e3f,#f4a261);animation:loading 2s ease-in-out infinite}@keyframes loading{0%{transform:translate(-100%)}50%{transform:translate(0)}to{transform:translate(100%)}}.control-panel{--panel-bg: rgba(17, 19, 23, .78);--panel-line: rgba(255, 255, 255, .08);--panel-line-strong: rgba(255, 255, 255, .16);--panel-text: #eceae6;--panel-muted: #9b978f;--panel-accent: #ec9a5b;--panel-accent-soft: rgba(236, 154, 91, .16);--panel-accent-line: rgba(236, 154, 91, .55);position:fixed;top:74px;left:16px;width:272px;max-height:calc(100vh - 170px);display:flex;flex-direction:column;overflow:hidden;z-index:20;border-radius:14px;background:var(--panel-bg);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);border:1px solid var(--panel-line);color:var(--panel-text);font:13px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.control-panel__scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:6px 0 16px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}.control-panel section{padding:12px 16px}.control-panel section+section{border-top:1px solid var(--panel-line)}.control-panel h2{margin:0 0 10px;font-size:10.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--panel-muted)}.control-panel button{font:inherit;color:inherit}.presets{display:grid;grid-template-columns:1fr 1fr;gap:6px}.preset{text-align:left;background:#ffffff09;border:1px solid var(--panel-line);border-radius:9px;padding:8px 10px;cursor:pointer;transition:border-color .15s,background .15s}.preset strong{display:block;font-size:12.5px;font-weight:600}.preset span{display:block;color:var(--panel-muted);font-size:11px;margin-top:1px}.preset:hover{border-color:var(--panel-line-strong)}.preset.active{background:var(--panel-accent-soft);border-color:var(--panel-accent-line)}.preset.active strong{color:var(--panel-accent)}.segmented{display:grid;grid-template-columns:repeat(4,1fr);background:#00000047;border:1px solid var(--panel-line);border-radius:9px;padding:3px;gap:2px}.segmented--axes{grid-template-columns:repeat(3,1fr);margin-top:10px}.segmented--two{grid-template-columns:repeat(2,1fr);margin-bottom:8px}.segmented button{background:transparent;border:0;border-radius:6px;padding:6px 0;font-size:12px;color:var(--panel-muted);cursor:pointer}.segmented button.active{background:#ffffff1a;color:var(--panel-text);font-weight:600}.cut-control{margin-top:12px}.cut-control label{display:flex;justify-content:space-between;color:var(--panel-muted);font-size:11.5px;margin-bottom:4px}.control-panel input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:18px;background:transparent;margin:0}.control-panel input[type=range]::-webkit-slider-runnable-track{height:3px;border-radius:2px;background:#ffffff24}.control-panel input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;margin-top:-5px;border-radius:50%;background:#f5f2ee;border:0;box-shadow:0 1px 3px #00000080}.flip-button{width:100%;margin-top:8px;background:#ffffff0f;border:1px solid var(--panel-line);border-radius:8px;padding:7px 0;font-size:12px;cursor:pointer}.flip-button:hover{background:#ffffff1f}.control-panel details summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between}.control-panel details summary::-webkit-details-marker{display:none}.control-panel details summary h2{margin:0}.control-panel details summary:after{content:"";width:7px;height:7px;border-right:1.5px solid var(--panel-muted);border-bottom:1.5px solid var(--panel-muted);transform:rotate(45deg);margin-top:-4px;transition:transform .15s}.control-panel details[open] summary:after{transform:rotate(-135deg);margin-top:3px}.control-panel details[open] summary{margin-bottom:8px}.layer-row{display:grid;grid-template-columns:16px 10px 1fr 64px;align-items:center;gap:8px;padding:4px 0}.layer-row--child{padding-left:14px}.layer-row input[type=checkbox]{accent-color:var(--panel-accent);margin:0}.layer-row__swatch{width:10px;height:10px;border-radius:3px}.layer-row label{cursor:pointer;-webkit-user-select:none;user-select:none;line-height:1.25;overflow-wrap:anywhere}.tooth-list{margin-top:8px;border-top:1px solid var(--panel-line);padding-top:8px}.tooth-list__title{margin:0 0 6px;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--panel-muted)}.tooth-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px 8px}.tooth-chip{display:flex;align-items:center;gap:6px;padding:3px 0;cursor:pointer;-webkit-user-select:none;user-select:none;font-variant-numeric:tabular-nums}.tooth-chip input[type=checkbox]{accent-color:var(--panel-accent);margin:0}.toggle-row{display:flex;align-items:center;gap:8px;color:var(--panel-muted);font-size:12px;margin-top:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-row input{accent-color:var(--panel-accent);margin:0}.topbar{position:fixed;top:0;left:0;right:0;z-index:25;height:58px;display:flex;align-items:center;gap:16px;padding:0 18px;background:#111317c7;backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);border-bottom:1px solid rgba(255,255,255,.08);color:#eceae6;font:13px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.topbar svg{height:20px;width:auto;display:block}.topbar .divider{width:1px;height:26px;background:#ffffff29}.topbar .title{display:flex;flex-direction:column;min-width:0}.topbar .title strong{font-size:14px;font-weight:600;letter-spacing:.01em}.topbar .title span{color:#9b978f;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .spacer{flex:1}.panel-toggle{display:none;align-items:center;gap:7px;background:#ffffff12;border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:7px 11px;font:inherit;color:inherit;cursor:pointer;white-space:nowrap}.topbar .panel-toggle svg{width:15px;height:15px}.btn-primary{background:#ec9a5b;color:#1b1410;border:0;border-radius:8px;padding:8px 14px;font:inherit;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.topbar .btn-primary svg{width:15px;height:15px}.btn-primary:hover{filter:brightness(1.07)}.btn-primary:disabled{opacity:.6;cursor:default}.toolbar{position:fixed;bottom:18px;left:50%;transform:translate(-50%);z-index:25;display:flex;align-items:center;gap:4px;padding:5px;border-radius:12px;max-width:calc(100vw - 32px);overflow-x:auto;background:#111317c7;backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);border:1px solid rgba(255,255,255,.08)}.toolbar button{background:transparent;border:0;border-radius:8px;padding:7px 12px;font:inherit;color:#eceae6;cursor:pointer;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.toolbar button svg{width:15px;height:15px;opacity:.85}.toolbar button:hover{background:#ffffff12}.toolbar button.active{background:#ec9a5b29;color:#ec9a5b}.toolbar button:disabled{opacity:.35;cursor:default;background:transparent}.toolbar .sep{width:1px;height:20px;background:#ffffff29;margin:0 4px}.measure-labels{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;pointer-events:none}.measure-label{position:absolute;transform:translate(-50%,-140%);background:#0c0d10e6;border:1px solid rgba(236,154,91,.55);color:#fff;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.toast{position:fixed;bottom:76px;left:50%;transform:translate(-50%);z-index:35;opacity:0;transition:opacity .2s;padding:8px 14px;border-radius:999px;background:#111317e6;color:#eceae6;font-size:12.5px;white-space:nowrap;pointer-events:none}.toast.show{opacity:1}.flash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#fff;opacity:0;pointer-events:none}@media (max-width: 820px){.topbar{height:52px;padding:0 10px;gap:10px}.topbar .divider,.topbar .title span{display:none}.topbar .title strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar svg{height:17px}.btn-primary{padding:8px 10px}.btn-primary .label{display:none}.panel-toggle{display:inline-flex}.control-panel{top:auto;bottom:0;left:0;right:0;width:auto;max-height:64vh;border-radius:16px 16px 0 0;border-width:1px 0 0;transform:translateY(101%);transition:transform .25s ease}.control-panel__scroll{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}.control-panel.open{transform:none}.toolbar{left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom,0px));transform:none;justify-content:flex-start;scrollbar-width:none}.toolbar::-webkit-scrollbar{display:none}.toolbar button{padding:8px 10px}.toolbar button .label{display:none}.toolbar button.view-button .label{display:inline}.toast{bottom:calc(66px + env(safe-area-inset-bottom,0px));max-width:calc(100vw - 32px);white-space:normal;text-align:center}.measure-label{font-size:11px;padding:2px 7px}}
