/* Restorative Studio — route-local composition for crowns & bridges, dentures, fillings and veneers.
   Depends on /signature-system/system.css for tokens, scene base styles, controls and notes. */
.ls-studio--restorative{position:relative;background:linear-gradient(160deg,#14263a 0%,#1a2b3b 58%,#1c2f41 100%);color:#fff;padding:clamp(28px,5vw,64px) clamp(18px,4vw,56px) clamp(24px,3vw,40px);overflow:hidden;font-family:var(--ls-sans)}
.ls-studio--restorative::before{content:"";position:absolute;inset:auto -10% -40% auto;width:60vw;height:60vw;max-width:820px;max-height:820px;border-radius:50%;background:radial-gradient(closest-side,rgba(159,179,164,.16),rgba(159,179,164,0));pointer-events:none}
.ls-studio--restorative .ls-hero{position:relative;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-template-areas:"copy stage" "panel stage";gap:28px clamp(24px,4vw,56px);max-width:1240px;margin:0 auto;align-items:start}
.ls-studio--restorative .ls-hero-copy{grid-area:copy}
.ls-studio--restorative .ls-stage{grid-area:stage;display:grid;gap:14px;position:sticky;top:88px}
.ls-studio--restorative .ls-panel{grid-area:panel;background:var(--ls-paper);color:var(--ls-ink);border-radius:20px;padding:22px 22px 24px;min-height:0}
.ls-studio--restorative .ls-crumb{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px;font:500 11px/1.4 var(--ls-sans);color:rgba(255,255,255,.6)}
.ls-studio--restorative .ls-crumb a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;min-height:28px}
.ls-studio--restorative .ls-crumb a:hover{color:#fff;text-decoration:underline}
.ls-studio--restorative .ls-eyebrow{color:rgba(255,255,255,.66)}
.ls-studio--restorative h1{margin:0 0 18px;font:400 clamp(38px,4.4vw,60px)/1.02 var(--ls-serif);letter-spacing:-.025em;color:#fff}
.ls-studio--restorative h1 i{font-style:italic;color:#d7dfe6}
.ls-studio--restorative .ls-deck{color:rgba(255,255,255,.84);margin:0}
.ls-studio--restorative .ls-disclosure{max-width:1240px;margin:22px auto 0}
.ls-studio--restorative .ls-modes{justify-self:start;max-width:100%}
.ls-studio--restorative .ls-panel-section{min-height:0}
.ls-studio--restorative .ls-panel-section[hidden]{display:none}
.ls-studio--restorative .ls-notes--states article{padding:10px 12px;border:1px solid var(--ls-line);border-radius:12px;background:#fff;margin:0 0 14px}
.ls-studio--restorative .ls-notes--states p{margin:0}
.ls-studio--restorative .ls-notes--states .ls-note-kicker{margin:0 0 6px}
.ls-studio--restorative .ls-text-link{color:var(--ls-accent);font:600 14px/1.4 var(--ls-sans);text-decoration:underline;text-underline-offset:4px}
/* chapters + facts below the studio reuse system.css; page chrome below is the route's own */
.ls-chapters{display:flex;flex-wrap:wrap;gap:0 28px;padding:12px clamp(18px,4vw,56px);background:var(--ls-cream);border-bottom:1px solid var(--ls-line)}
.ls-chapters a{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--ls-ink);text-decoration:none;font:600 13px/1 var(--ls-sans)}
.ls-chapters a span{font:400 14px/1 var(--ls-serif);color:var(--ls-accent)}
.ls-chapters a:hover{color:var(--ls-accent)}

/* static edition: without the runtime every note and panel stays readable (system.css scopes this to .ls-explorer) */
.ls-studio:not(.is-ready) .ls-notes article{display:block;padding:12px 0;border-top:1px solid var(--ls-line)}
/* ---------- scenes: one visible at a time ---------- */
.ls-studio [data-scene]{display:none}
.ls-studio[data-scene-active="crown"] [data-scene="crown"],.ls-studio[data-scene-active="bridge"] [data-scene="bridge"],.ls-studio[data-scene-active="denture"] [data-scene="denture"],.ls-studio[data-scene-active="filling"] [data-scene="filling"],.ls-studio[data-scene-active="veneer"] [data-scene="veneer"]{display:block}
.ls-studio .ls-scene .ls-ghost{opacity:.38;filter:saturate(.5)}
.ls-studio .ls-scene .ls-ghost [data-part]{pointer-events:none}
/* state groups fade; hidden ones never catch pointer events */
.ls-studio .ls-scene .rs-state,.ls-studio .ls-scene .rs-cover,.ls-studio .ls-scene .rs-layer{transition:opacity var(--ls-slow) var(--ls-ease)}
.ls-studio .ls-scene .rs-state,.ls-studio .ls-scene .rs-cover{opacity:0;pointer-events:none}
/* ---------- selection (generic, class based) ---------- */
.ls-studio.is-ready .ls-scene [data-part]{cursor:pointer}
.ls-studio .ls-scene [data-part].is-muted{opacity:.9;filter:saturate(.62)}
.ls-studio .ls-scene [data-part].is-selected{opacity:1;filter:drop-shadow(0 0 6px rgba(47,107,79,.45))}
.ls-studio .ls-scene [data-part].is-selected .ls-outline{stroke:var(--ls-accent);stroke-opacity:1;stroke-width:1.8}
.ls-studio .ls-scene .ls-label,.ls-studio .ls-scene .ls-leader{opacity:.5;transition:opacity var(--ls-fast) ease}
.ls-studio .ls-scene .ls-label.is-on,.ls-studio .ls-scene .ls-leader.is-on{opacity:1}
.ls-studio .ls-scene .ls-label.is-on{font-weight:600}
.ls-studio:not([data-selected]) .ls-scene .ls-label,.ls-studio:not([data-selected]) .ls-scene .ls-leader{opacity:1}
.ls-studio:not([data-selected]) .ls-scene .ls-label{font-weight:500}

/* ---------- crown scene views ---------- */
.ls-studio[data-view="natural"] .rs-state--natural,.ls-studio[data-view="damage"] .rs-state--natural,.ls-studio[data-view="damage"] .rs-state--damage,
.ls-studio[data-view="prepared"] .rs-state--stump,.ls-studio[data-view="temporary"] .rs-state--stump,.ls-studio[data-view="temporary"] .rs-state--temporary,
.ls-studio[data-view="seated"] .rs-state--stump,.ls-studio[data-view="seated"] .rs-state--cement,.ls-studio[data-view="seated"] .rs-state--crown,
.ls-studio[data-view="care"] .rs-state--stump,.ls-studio[data-view="care"] .rs-state--cement,.ls-studio[data-view="care"] .rs-state--crown{opacity:1;pointer-events:auto}
.ls-studio[data-view="care"] .ls-part--gum,.ls-studio[data-view="care"] .ls-part--margin{filter:drop-shadow(0 0 6px rgba(47,107,79,.55))}
.ls-studio[data-view="care"] .ls-part--margin path{stroke-width:3.2}
/* labels follow the view: only parts that are drawn get a label */
.ls-scene--crown [data-label],.ls-scene--crown [data-leader]{display:none}
.ls-studio[data-view="natural"] .ls-scene--crown :is([data-label="enamel"],[data-leader="enamel"],[data-label="dentin"],[data-leader="dentin"],[data-label="pulp"],[data-leader="pulp"],[data-label="gum"],[data-leader="gum"]),
.ls-studio[data-view="damage"] .ls-scene--crown :is([data-label="enamel"],[data-leader="enamel"],[data-label="dentin"],[data-leader="dentin"],[data-label="pulp"],[data-leader="pulp"],[data-label="gum"],[data-leader="gum"]),
.ls-studio[data-view="prepared"] .ls-scene--crown :is([data-label="prep"],[data-leader="prep"],[data-label="pulp"],[data-leader="pulp"],[data-label="gum"],[data-leader="gum"]),
.ls-studio[data-view="temporary"] .ls-scene--crown :is([data-label="prep"],[data-leader="prep"],[data-label="pulp"],[data-leader="pulp"],[data-label="gum"],[data-leader="gum"]),
.ls-studio[data-view="seated"] .ls-scene--crown :is([data-label="crown"],[data-leader="crown"],[data-label="margin"],[data-leader="margin"],[data-label="cement"],[data-leader="cement"],[data-label="prep"],[data-leader="prep"],[data-label="pulp"],[data-leader="pulp"],[data-label="gum"],[data-leader="gum"]),
.ls-studio[data-view="care"] .ls-scene--crown :is([data-label="crown"],[data-leader="crown"],[data-label="margin"],[data-leader="margin"],[data-label="gum"],[data-leader="gum"]){display:block}
.ls-studio[data-mode="compare"] .ls-scene--crown .ls-annotations,.ls-studio[data-mode="journey"] .ls-scene--crown .ls-annotations{opacity:0}
/* compare overlays */
.ls-studio[data-mode="compare"][data-state-cover="filling"] .rs-cover--filling,.ls-studio[data-mode="compare"][data-state-cover="onlay"] .rs-cover--onlay,.ls-studio[data-mode="compare"][data-state-cover="crown"] .rs-cover--crown{opacity:1}
/* ---------- bridge scene ---------- */
.ls-scene--bridge .rs-bridge-unit,.ls-scene--bridge .rs-anno-lift{transform:translateY(calc(var(--rs-lift,0) * -112px));transition:transform var(--ls-fast) linear}
.ls-scene--bridge .rs-bridge-unit{filter:drop-shadow(0 calc(var(--rs-lift,0) * 12px) calc(var(--rs-lift,0) * 8px) rgba(20,38,58,.22))}
.ls-scene--bridge .ls-part--space path:first-child{opacity:calc(var(--rs-lift,0) * .22);transition:opacity var(--ls-fast) linear}
.ls-scene--bridge .ls-part--space.is-selected path:first-child{opacity:.28}
.ls-scene--bridge .ls-part--space.is-selected .rs-floss{opacity:1;transition:opacity var(--ls-slow) ease}
.ls-scene--bridge .ls-part--ridge.is-selected path{opacity:1;transition:opacity var(--ls-slow) ease}
.ls-scene--bridge .ls-part--space.is-selected,.ls-scene--bridge .ls-part--ridge.is-selected{filter:none}
.ls-scene--bridge .ls-part--cement{opacity:0;transition:opacity var(--ls-fast) linear}
.ls-studio[data-rs-lift]:not([data-rs-lift="0"]) .ls-scene--bridge .ls-part--cement{opacity:1}
/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){.ls-studio .ls-scene .rs-state,.ls-studio .ls-scene .rs-cover,.ls-studio .ls-scene .rs-layer,.ls-scene--bridge .rs-bridge-unit,.ls-scene--bridge .rs-anno-lift,.ls-scene--denture .rs-denture,.ls-scene--denture .rs-beyond,.ls-scene--denture .rs-design,.ls-scene--denture .rs-care,.ls-scene--denture .ls-annotations,.ls-studio .ls-scene .ls-label,.ls-studio .ls-scene .ls-leader{transition:none}}
/* ---------- responsive ---------- */
@media (max-width:1100px){.ls-studio--restorative .ls-hero{grid-template-columns:minmax(0,1fr);grid-template-areas:"copy" "stage" "panel"}.ls-studio--restorative .ls-stage{position:static}}
@media (max-width:720px){.ls-studio--restorative{padding:26px 16px 22px}.ls-studio--restorative h1{font-size:36px}.ls-studio--restorative .ls-figure{padding:10px 10px 8px;border-radius:14px}.ls-studio--restorative .ls-panel{padding:18px 16px 20px;border-radius:14px}.ls-chapters{gap:0 18px}.ls-studio .ls-notes h2{font-size:21px}
  .ls-studio .ls-scene .ls-leader.is-on circle{display:block;r:9;fill:rgba(255,255,255,.85);stroke:var(--ls-accent);stroke-width:3;stroke-opacity:1}
  .ls-scene--bridge .ls-captions,.ls-scene--denture .ls-captions{display:none}
  /* per-view label rules above outrank the shared phone rule, so restate it here */
  .ls-studio[data-view] .ls-scene .ls-label,.ls-studio[data-view] .ls-scene .ls-leader path{display:none!important}}

/* ---------- lift strip (dentures) ---------- */
.ls-lift-strip{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end;margin-top:4px;color:rgba(255,255,255,.85)}
.ls-lift-strip .ls-range{color:rgba(255,255,255,.85)}
.ls-ghost--light{border-color:rgba(255,255,255,.3);background:transparent;color:#fff}
.ls-ghost--light:hover{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.5)}
.ls-ordered--care{display:grid;gap:8px}
/* ---------- denture scene ---------- */
.ls-scene--denture .rs-design{opacity:0;pointer-events:none;transition:opacity var(--ls-slow) var(--ls-ease)}
.ls-studio[data-design="partial"] .ls-scene--denture .rs-design--partial,.ls-studio[data-design="implant"] .ls-scene--denture .rs-design--implant{opacity:1;pointer-events:auto}
.ls-scene--denture .rs-denture{transform:translateY(calc(var(--rs-lift,0) * -66px));transition:transform var(--ls-fast) linear;filter:drop-shadow(0 calc(var(--rs-lift,0) * 12px) calc(var(--rs-lift,0) * 8px) rgba(20,38,58,.22))}
.ls-scene--denture .rs-beyond{transform:translateY(calc(var(--rs-lift,0) * -66px));transition:transform var(--ls-fast) linear}
.ls-scene--denture .rs-mound,.ls-scene--denture .rs-implant-beyond{transition:opacity var(--ls-slow) var(--ls-ease)}
.ls-scene--denture .ls-part--fit path{transition:opacity var(--ls-slow) ease}
.ls-scene--denture .ls-part--fit.is-selected path{opacity:1}
.ls-scene--denture .ls-part--fit.is-selected{filter:none}
.ls-scene--denture .rs-care{opacity:0;transition:opacity var(--ls-slow) ease}
.ls-studio[data-view="care"] .ls-scene--denture .rs-care{opacity:1}
.ls-studio[data-view="care"] .ls-scene--denture .ls-part--fit path{opacity:1}
.ls-scene--denture .ls-annotations{opacity:0;transition:opacity var(--ls-fast) ease}
.ls-studio[data-design="complete"] .rs-anno--complete,.ls-studio[data-design="partial"] .rs-anno--partial,.ls-studio[data-design="implant"] .rs-anno--implant{opacity:1}
.ls-studio[data-view="care"] .ls-scene--denture .ls-annotations,.ls-studio[data-rs-lift]:not([data-rs-lift="0"]) .ls-scene--denture .ls-annotations{opacity:0}
@media (max-width:720px){.ls-lift-strip{grid-template-columns:1fr}}

/* ---------- compact studios (fillings, veneers): no hero column; header row above stage + panel ---------- */
.ls-studio--compact .ls-compact-head{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:18px clamp(24px,4vw,56px);max-width:1240px;margin:0 auto 24px;align-items:end}
.ls-studio--compact .ls-compact-head h2{margin:0;font:400 clamp(30px,3.2vw,44px)/1.05 var(--ls-serif);letter-spacing:-.025em;color:#fff}
.ls-studio--compact .ls-compact-head .ls-eyebrow{color:rgba(255,255,255,.66)}
.ls-studio--compact .ls-compact-head .ls-deck{color:rgba(255,255,255,.84);margin:0;max-width:60ch;font-size:16px}
.ls-studio--compact .ls-hero--compact{grid-template-columns:minmax(0,7fr) minmax(0,5fr);grid-template-areas:"stage panel"}
.ls-studio--compact .ls-notes h3{margin:0 0 6px;font:400 24px/1.1 var(--ls-serif);letter-spacing:-.02em;color:var(--ls-navy)}
.vs-anatomy-row--single{grid-template-columns:minmax(0,1fr)!important}
.vs-anatomy-row--single .vs-concerns{max-width:1100px;margin:0 auto}
/* ---------- filling scene ---------- */
.ls-scene--filling .rs-lesion{opacity:0;transition:opacity var(--ls-slow) var(--ls-ease)}
.ls-studio[data-view="decay"][data-rs-depth="1"] .rs-lesion--1,.ls-studio[data-view="decay"][data-rs-depth="2"] .rs-lesion--2,.ls-studio[data-view="decay"][data-rs-depth="3"] .rs-lesion--3,.ls-studio[data-view="decay"][data-rs-depth="4"] .rs-lesion--4{opacity:1}
.ls-scene--filling .rs-layer{opacity:0;pointer-events:none}
.ls-studio[data-view="decay"][data-rs-depth="4"] .rs-layer--pulpglow{opacity:1;animation:ls-pulse 2.6s var(--ls-ease) infinite}
.ls-studio[data-view="decay"] .ls-part--lesion{pointer-events:auto}
.ls-studio:not([data-view="decay"]) .ls-part--lesion{opacity:0;pointer-events:none}
.ls-studio[data-view="prepared"] .rs-layer--cavity,.ls-studio[data-view="bond"] .rs-layer--cavity,.ls-studio[data-view="bond"] .rs-layer--bond,
.ls-studio[data-view="layer1"] .rs-layer--cavity,.ls-studio[data-view="layer1"] .rs-layer--bond,.ls-studio[data-view="layer1"] .rs-layer--composite,
.ls-studio[data-view="layer2"] .rs-layer--cavity,.ls-studio[data-view="layer2"] .rs-layer--bond,.ls-studio[data-view="layer2"] .rs-layer--composite,.ls-studio[data-view="layer2"] .rs-layer--light,
.ls-studio[data-view="layer3"] .rs-layer--cavity,.ls-studio[data-view="layer3"] .rs-layer--bond,.ls-studio[data-view="layer3"] .rs-layer--composite,.ls-studio[data-view="layer3"] .rs-layer--light,
.ls-studio[data-view="polished"] .rs-layer--composite{opacity:1;pointer-events:auto}
.ls-scene--filling .rs-inc{opacity:0;transition:opacity var(--ls-slow) var(--ls-ease)}
.ls-studio[data-view="layer1"] .rs-inc--1,.ls-studio[data-view="layer2"] .rs-inc--1,.ls-studio[data-view="layer2"] .rs-inc--2,.ls-studio[data-view="layer3"] .rs-inc--1,.ls-studio[data-view="layer3"] .rs-inc--2,.ls-studio[data-view="layer3"] .rs-inc--3,
.ls-studio[data-view="polished"] .rs-inc--1,.ls-studio[data-view="polished"] .rs-inc--2,.ls-studio[data-view="polished"] .rs-inc--3{opacity:1}
.ls-studio[data-view="polished"] .rs-inc-line{opacity:0}
.ls-scene--filling .rs-polished{opacity:0;transition:opacity var(--ls-slow) ease}
.ls-studio[data-view="polished"] .rs-polished{opacity:1}
.ls-studio[data-view="materials"][data-state-material="composite"] .rs-layer--composite,.ls-studio[data-view="materials"][data-state-material="composite"] .rs-inc,
.ls-studio[data-view="materials"][data-state-material="amalgam"] .rs-layer--amalgam,.ls-studio[data-view="materials"][data-state-material="ceramic"] .rs-layer--ceramic{opacity:1;pointer-events:auto}
.ls-studio[data-view="materials"] .rs-inc-line{opacity:0}
.ls-scene--filling [data-label],.ls-scene--filling [data-leader]{display:none}
.ls-studio[data-view="decay"] .ls-scene--filling :is([data-label="enamel"],[data-leader="enamel"],[data-label="dentin"],[data-leader="dentin"],[data-label="pulp"],[data-leader="pulp"],[data-label="lesion"],[data-leader="lesion"],[data-label="gum"],[data-leader="gum"]),
.ls-studio[data-view="prepared"] .ls-scene--filling :is([data-label="cavity"],[data-leader="cavity"],[data-label="dentin"],[data-leader="dentin"],[data-label="pulp"],[data-leader="pulp"]),
.ls-studio[data-view="bond"] .ls-scene--filling :is([data-label="bond"],[data-leader="bond"],[data-label="dentin"],[data-leader="dentin"]),
.ls-studio[data-view="layer1"] .ls-scene--filling :is([data-label="composite"],[data-leader="composite"]),.ls-studio[data-view="layer2"] .ls-scene--filling :is([data-label="composite"],[data-leader="composite"]),.ls-studio[data-view="layer3"] .ls-scene--filling :is([data-label="composite"],[data-leader="composite"]),.ls-studio[data-view="polished"] .ls-scene--filling :is([data-label="composite"],[data-leader="composite"],[data-label="enamel"],[data-leader="enamel"]),
.ls-studio[data-view="materials"][data-state-material="composite"] .ls-scene--filling :is([data-label="composite"],[data-leader="composite"]),.ls-studio[data-view="materials"][data-state-material="amalgam"] .ls-scene--filling :is([data-label="amalgam"],[data-leader="amalgam"]),.ls-studio[data-view="materials"][data-state-material="ceramic"] .ls-scene--filling :is([data-label="ceramic"],[data-leader="ceramic"]){display:block}
/* ---------- veneer scene ---------- */
.ls-studio[data-view="removed"] .rs-state--removed,
.ls-studio[data-view="veneer"] .rs-state--prepared,.ls-studio[data-view="veneer"] .rs-state--cement,.ls-studio[data-view="veneer"] .rs-state--veneer,
.ls-studio[data-view="chip"] .rs-state--chip,.ls-studio[data-view="bonding"] .rs-state--chip,.ls-studio[data-view="bonding"] .rs-state--bonding{opacity:1;pointer-events:auto}
.ls-scene--veneer [data-label],.ls-scene--veneer [data-leader]{display:none}
.ls-studio[data-view="natural"] .ls-scene--veneer :is([data-label="enamel"],[data-leader="enamel"],[data-label="dentin"],[data-leader="dentin"],[data-label="pulp"],[data-leader="pulp"],[data-label="gum"],[data-leader="gum"]),
.ls-studio[data-view="removed"] .ls-scene--veneer :is([data-label="removed"],[data-leader="removed"],[data-label="dentin"],[data-leader="dentin"],[data-label="pulp"],[data-leader="pulp"]),
.ls-studio[data-view="veneer"] .ls-scene--veneer :is([data-label="veneer"],[data-leader="veneer"],[data-label="cement"],[data-leader="cement"],[data-label="dentin"],[data-leader="dentin"],[data-label="gum"],[data-leader="gum"]),
.ls-studio[data-view="chip"] .ls-scene--veneer :is([data-label="chip"],[data-leader="chip"]),.ls-studio[data-view="bonding"] .ls-scene--veneer :is([data-label="bonding"],[data-leader="bonding"]){display:block}
@media (max-width:1100px){.ls-studio--compact .ls-compact-head{grid-template-columns:minmax(0,1fr)}.ls-studio--compact .ls-hero--compact{grid-template-columns:minmax(0,1fr);grid-template-areas:"stage" "panel"}}
