.dental-volume { --dv-blue:#397cff; --dv-ink:#243d68; color:var(--ink,#18345e); min-width:0; }
.dv-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin:0 0 18px; }
.dv-heading strong { display:block; color:var(--ink,#18345e); font-size:17px; line-height:1.4; }
.dv-heading p { margin:5px 0 0; color:var(--muted,#657da1); font-size:13px; line-height:1.5; }
.dv-model-badge { display:inline-flex; align-items:center; gap:6px; flex-shrink:0; border:1px solid #d6e4fa; background:#f5f9ff; color:#4773ad; border-radius:20px; padding:6px 9px; font-size:11px; font-weight:650; white-space:nowrap; }
.dv-stage { position:relative; width:100%; height:530px; overflow:hidden; border:1px solid #dce6f4; border-radius:22px; isolation:isolate; background:radial-gradient(ellipse at 45% 45%,#fff 0,#f5f8fe 55%,#edf3fc 100%); }
.dv-stage::after { content:""; position:absolute; left:12%; right:12%; top:50%; height:1px; background:linear-gradient(90deg,transparent,#dce6f5,transparent); pointer-events:none; z-index:-1; }
.dv-stage canvas { width:100%; height:100%; display:block; touch-action:pan-y; cursor:grab; outline-offset:-4px; }
.dv-stage canvas:active { cursor:grabbing; }
.dv-stage canvas:focus-visible { outline:3px solid var(--dv-blue); border-radius:22px; }
.dv-stage-top { position:absolute; top:16px; left:16px; right:16px; display:flex; justify-content:space-between; align-items:center; gap:8px; pointer-events:none; }
.dv-stage-chip { color:#6a7f9d; display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:650; }
.dv-stage-chip > span { width:5px; height:5px; border-radius:50%; background:#6c8cad; }
.dv-reset { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:40px; padding:7px 10px; border:1px solid #d8e3f2; border-radius:12px; background:#ffffffeb; color:#5d7597; font:inherit; font-size:11px; cursor:pointer; pointer-events:auto; box-shadow:0 2px 5px #32568d06; }
.dv-reset:hover { color:var(--dv-blue); border-color:#b6cdf1; }
.dv-labels { position:absolute; inset:0; pointer-events:none; }
.dv-model-label { position:absolute; top:0; left:0; display:flex; align-items:center; justify-content:center; min-width:23px; height:23px; padding:0 3px; border-radius:7px; color:#7486a0; background:#f8fbffe6; border:1px solid #dce5f1b3; font-size:11px; line-height:1; font-weight:700; box-shadow:0 1px 4px #48618c08; }
.dv-model-label.is-selected { color:white; background:var(--dv-blue); border-color:var(--dv-blue); box-shadow:0 3px 10px #397cff33; }
.dv-model-label.is-marked { background:#e4faf4; color:#128b76; border-color:#87d8c7; box-shadow:0 2px 7px #138e7812; }
.dv-model-label.is-marked.is-selected { outline:2px solid #397cff88; outline-offset:2px; }
.dv-model-mark-count { position:absolute; right:-6px; top:-7px; min-width:14px; height:14px; display:grid; place-items:center; padding:0 2px; background:#119b83; color:#fff; border:1px solid #fff; border-radius:6px; font-size:8px; font-weight:750; }
.dv-orientation { display:flex; justify-content:space-between; position:absolute; left:16px; right:16px; top:53px; color:#8c9bb1; font-size:9px; font-weight:550; pointer-events:none; }
.dv-stage-bottom { position:absolute; bottom:14px; left:16px; right:14px; display:flex; justify-content:space-between; align-items:center; gap:10px; pointer-events:none; }
.dv-drag-hint { color:#8394ac; font-size:10px; line-height:1.5; max-width:140px; }
.dv-view-controls { display:flex; gap:2px; padding:4px; background:#fffffff2; border:1px solid #dce5f1; box-shadow:0 4px 12px #1e4c7b08; border-radius:13px; pointer-events:auto; }
.dv-view-controls button { width:37px; height:37px; border:0; border-radius:8px; display:grid; place-items:center; background:transparent; color:#607997; cursor:pointer; }
.dv-view-controls button:hover { background:#edf4ff; color:var(--dv-blue); }
.dv-view-controls > span { width:1px; align-self:stretch; margin:7px 3px; background:#e2e9f2; }
.dv-view-controls button:focus-visible,.dv-reset:focus-visible,.dv-tooth-number:focus-visible { outline:3px solid #397cff88; outline-offset:2px; }
.dv-loading,.dv-fallback { position:absolute; inset:76px 20px; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:10px; color:#657b9c; pointer-events:none; }
.dv-loading-symbol,.dv-fallback > span { display:grid; place-items:center; width:54px; height:54px; background:#eaf1fd; color:#6e93c9; border:1px solid #d8e6f8; border-radius:18px; }
.dv-loading strong,.dv-fallback strong { font-size:15px; font-weight:650; color:#456185; }
.dv-loading small,.dv-fallback p { font-size:12px; line-height:1.65; max-width:290px; margin:0; }
.dv-loading[hidden],.dv-fallback[hidden] { display:none; }
.dv-unavailable .dv-stage { height:265px; }
.dv-unavailable canvas,.dv-unavailable .dv-labels,.dv-unavailable .dv-orientation,.dv-unavailable .dv-stage-bottom,.dv-unavailable .dv-reset { display:none; }
.dv-selection { display:flex; align-items:center; gap:8px; min-height:47px; padding:10px 4px; font-size:12px; color:#466893; }
.dv-selection-dot { width:7px; height:7px; border-radius:50%; background:var(--dv-blue); flex-shrink:0; }
.dv-numbering { margin-left:auto; color:#8a9ab1; font-size:10px; white-space:nowrap; }
.dv-number-picker { padding:16px; border:1px solid #e0e8f3; border-radius:16px; background:#fff; }
.dv-number-heading { display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-bottom:12px; }
.dv-number-heading strong { font-size:12px; color:#536f96; }
.dv-number-heading > span { font-size:10px; color:#92a1b6; }
.dv-number-arch { border:0; margin:0; padding:0; min-width:0; }
.dv-number-arch + .dv-number-arch { margin-top:12px; }
.dv-number-arch legend { padding:0; margin-bottom:6px; color:#96a5b8; font-size:10px; }
.dv-number-grid { display:grid; grid-template-columns:repeat(calc(var(--dv-columns) * 2),minmax(0,1fr)); gap:4px; }
.dv-tooth-number { min-width:0; min-height:33px; padding:0; border:1px solid #dce5f2; border-radius:8px; background:#f8faff; color:#6380a6; font:inherit; font-size:11px; font-weight:600; cursor:pointer; }
.dv-tooth-number:hover { color:var(--dv-blue); border-color:#a9c5f4; background:#eff5ff; }
.dv-tooth-number.is-selected { color:#fff; border-color:var(--dv-blue); background:var(--dv-blue); box-shadow:0 2px 6px #397cff22; }
.dv-tooth-number.is-marked { color:#0a8d76; border-color:#83d7c6; background:#e7faf5; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px; }
.dv-tooth-number.is-marked.is-selected { box-shadow:0 0 0 2px #397cff65; }
.dv-tooth-faces { font-size:7px; line-height:1.3; letter-spacing:-.2px; max-width:100%; white-space:normal; overflow-wrap:anywhere; }
.dv-surface-mode .dv-selection-dot { background:#12a78d; }
.dv-surface-mode .dv-selection { color:#188b76; }
.dv-stage.has-surface-editor > canvas { opacity:.22; filter:blur(2px); pointer-events:none; }
.dv-stage.has-surface-editor > .dv-labels,.dv-stage.has-surface-editor > .dv-stage-top,.dv-stage.has-surface-editor > .dv-stage-bottom,.dv-stage.has-surface-editor > .dv-orientation { opacity:.18; pointer-events:none; }
.dv-illustration-note { margin:12px 2px 0; color:#92a0b4; font-size:10px; line-height:1.6; }
@media(min-width:1100px) { .dv-stage { height:560px; } }
@media(max-width:700px) {
  .dv-heading { gap:8px; margin-bottom:14px; }
  .dv-heading strong { font-size:15px; }
  .dv-heading p { font-size:12px; }
  .dv-model-badge { font-size:10px; padding:6px 8px; }
  .dv-stage { height:465px; border-radius:18px; }
  .dv-stage-top { top:12px; left:12px; right:12px; }
  .dv-reset { min-height:36px; }
  .dv-stage-chip { font-size:10px; }
  .dv-orientation { left:12px; right:12px; font-size:8px; }
  .dv-model-label { font-size:10px; min-width:21px; height:21px; }
  .dv-stage-bottom { left:12px; right:12px; }
  .dv-view-controls button { width:33px; height:35px; }
  .dv-drag-hint { max-width:110px; font-size:9px; }
  .dv-number-picker { padding:12px; }
  .dv-number-heading > span { display:none; }
  .dv-number-grid { grid-template-columns:repeat(var(--dv-columns),minmax(0,1fr)); gap:6px; }
  .dv-tooth-number { min-height:44px; font-size:12px; }
  .dv-selection { font-size:11px; gap:6px; }
  .dv-numbering { font-size:9px; }
}
@media(max-width:360px) { .dv-stage { height:425px; } .dv-model-badge svg { display:none; } .dv-reset span { display:none; } .dv-number-grid { gap:4px; } .dv-tooth-number { font-size:11px; } }
