/* ==========================================================================
   3DOptix redesign — OptiTwin page layer.
   Loaded ONLY on page-templates/dxr-optitwin.php (conditional enqueue from the
   template itself, so nothing here ships on any other page).

   Depends on: dxr-tokens.css -> dxr-components.css -> dxr-shell.css

   RULES FOR THIS FILE:
   - EVERY selector is scoped by .dxr-page--ot. The three shared stylesheets are
     written by other agents in parallel; nothing here may leak into them or
     into another page's subtree.
   - No new colour literals: every value resolves from the token layer. The two
     exceptions are the fluid padding clamps, which are transcribed from the
     approved prototype and have no token (the token scale's nearest steps are
     3-4px off).
   - Nothing here re-implements a primitive. These are the deltas between the
     shared primitives and the prototype's OptiTwin-specific geometry.
   ========================================================================== */

/* ==========================================================================
   §1 Hero
   ========================================================================== */
/* Prototype hero padding: clamp(47px,5.6vw,76px) top / clamp(50px,5.9vw,80px)
   bottom. --dxr-section-y / --dxr-section-y-tight are the closest tokens but
   run 5-8px taller, so the hero states its own rhythm. */
.dxr-page--ot .dxr-ot-hero__inner{
  padding-top:clamp(47px,5.6vw,76px);
  padding-bottom:clamp(50px,5.9vw,80px);
}

/* Eyebrow + Beta badge on ONE row. The shared spectrum eyebrow bar cannot
   carry a trailing badge and runs the five-stop gradient with a blue label;
   OptiTwin's bar is a two-stop violet->blue with a violet label. */
.dxr-page--ot .dxr-ot-eyebrow{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 24px;
}
.dxr-page--ot .dxr-ot-eyebrow__rule{
  width:44px;height:3px;border-radius:var(--dxr-radius-rule);flex-shrink:0;
  background:linear-gradient(90deg,var(--dxr-violet),var(--dxr-primary));
}
.dxr-page--ot .dxr-ot-eyebrow__label{
  font:500 11px/1 var(--dxr-font-mono);letter-spacing:.13em;text-transform:uppercase;
  color:var(--dxr-violet-deep);
}

.dxr-page--ot .dxr-ot-hero__cta{margin-top:32px}
.dxr-page--ot .dxr-ot-hero__note{margin-top:18px}

/* --- Hero right panel: the CAD capture -------------------------------------
   The amber strip-status rules that lived here are gone with the status itself:
   the panel counted "1 conflict" against three findings that no longer exist. */
/* The capture that replaced the prototype's hatched placeholder. NATURAL ASPECT
   rather than the fixed 300px the hatch had: at 1600x822 a 300px crop would show
   about a third of the frame, and the point of the shot is the beam path running
   through the whole assembly. height:auto costs a little vertical rhythm against
   the prototype and keeps the subject. The ink ground matches the panel edge
   while the WebP decodes. */
.dxr-page--ot .dxr-ot-shot{margin:0;background:var(--dxr-ink-deep)}
.dxr-page--ot .dxr-ot-shot img{display:block;width:100%;height:auto}

/* One line under the capture, where three fabricated findings used to sit. It
   is the panel's last child, so it owns the bottom padding the ledger's final
   row used to provide. */
.dxr-page--ot .dxr-ot-findings__note{margin:0;padding:14px 18px}

/* ==========================================================================
   §2 Problem framing — Without / With OptiTwin
   ========================================================================== */
.dxr-page--ot .dxr-ot-compare__body{padding:28px 30px 30px}
.dxr-page--ot .dxr-ot-compare__label{margin:0 0 20px}
.dxr-page--ot .dxr-ot-compare__label--with{color:var(--dxr-violet-deep)}

/* Marked rows run one step larger and looser here than the shared default. */
.dxr-page--ot .dxr-ot-compare__rows .dxr-ledger__row{
  gap:14px;padding:13px 0;
  font:400 14px/1.55 var(--dxr-font-sans);color:var(--dxr-body);
}

/* ==========================================================================
   §3 "Who it is for" — bordered panels on the dark band
   ========================================================================== */
.dxr-page--ot .dxr-ot-eyebrow-vl{color:var(--dxr-violet-light)}
.dxr-page--ot .dxr-ot-audience__body{padding:28px 26px}
.dxr-page--ot .dxr-ot-audience__title{
  margin:0 0 10px;font:700 17px/1.3 var(--dxr-font-sans);color:var(--dxr-on-dark);
}
.dxr-page--ot .dxr-ot-audience__text{
  margin:0;font:400 14px/1.65 var(--dxr-font-sans);color:var(--dxr-on-dark-muted);
}

/* ==========================================================================
   §4 Closing design-partner band
   ========================================================================== */
/* Same clamp as the hero top; the CTA-band primitive defaults to the slightly
   taller --dxr-section-y-compact. */
.dxr-page--ot .dxr-ot-close{padding:clamp(47px,5.6vw,76px) 0}

/* ==========================================================================
   §5 Section-local spacing the shared scale does not carry (14px, 44px)

   NOT specificity re-assertions of a shared utility — the shared layer ships
   mb-10/12/18/22/26/32/40 and has no 14 or 44 step, so these two rules are the
   ONLY declarations of these classes. dxr-optitwin.php §2 and §4 depend on
   them; deleting them silently collapses those two gaps to zero.
   ========================================================================== */
.dxr-page--ot .dxr-ot-mb-14{margin-bottom:14px}
.dxr-page--ot .dxr-ot-mb-44{margin-bottom:44px}
