/* ==========================================================================
   3DOptix redesign — design tokens.
   Values transcribed from the approved prototype ('3DOptix Website.dc.html').

   RULES FOR THIS FILE:
   - :root (and the page-accent classes at the bottom) ONLY. Never add
     component rules here.
   - Load order is fixed: tokens -> components -> shell.
   ========================================================================== */
:root{

  /* --- 1.1 Type families ------------------------------------------------ */
  --dxr-font-sans:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --dxr-font-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;

  /* --- 1.2 Ink & surface ------------------------------------------------ */
  --dxr-ink:#0F172A;              /* headings, primary text */
  --dxr-ink-deep:#0B1220;         /* dark sections, footer, topbar, dark panels */
  --dxr-body:#334155;             /* body copy on light, nav labels */
  --dxr-body-muted:#475569;       /* hero / lede paragraphs */
  --dxr-text-muted:#5A6472;       /* secondary body copy */
  /* ACCESSIBILITY — FAILS WCAG 2.1 AA, KEPT DELIBERATELY.
     Measured contrast: #7A8699 on #FFFFFF = 3.69:1.
     AA requires 4.5:1 for normal-size text (3:1 only for text >=24px, or
     >=18.66px bold). This token is used for mono labels, captions, table
     headers and spec labels at 10-13px, i.e. squarely in the 4.5:1 bracket,
     so those uses are non-conforming.
     This is a CLIENT-APPROVED palette value. Changing the approved palette is
     the client's decision, not ours, so DO NOT darken it here — escalate.
     A conforming value would be ~#6B7688 or darker. */
  --dxr-text-subtle:#7A8699;      /* mono labels, captions */
  --dxr-text-disabled:#94A3B8;    /* table em-dashes, placeholder captions */

  --dxr-border:#E3E8EF;           /* panel borders, HAIRLINE-GRID rule colour */
  --dxr-border-inner:#EEF1F6;     /* row separators inside panels */
  --dxr-border-strong:#CBD5E1;    /* secondary button border, neutral cap rule, bullet dots */

  --dxr-surface:#FFFFFF;
  --dxr-surface-sunken:#F5F7FA;   /* alternating sections */
  --dxr-surface-raised:#FBFCFE;   /* table header, hgrid cell hover, panel header strip */
  --dxr-surface-pressed:#E2E8F0;  /* inverse-button hover (Enterprise panel) */

  /* --- 1.3 Accents ----------------------------------------------------- */
  --dxr-primary:#2563EB;          /* actions, links, Design & Simulation */
  --dxr-primary-hover:#1D4ED8;
  --dxr-primary-tint:#EEF4FF;     /* ACTIVE NAV PILL, Popular chip bg */
  --dxr-primary-tint-hover:#F5F8FF;/* dropdown row hover */
  --dxr-primary-light:#93C5FD;    /* mono index 01 on dark */

  --dxr-cyan:#06B6D4;             /* TrueScene, engine accents, topbar dot */
  --dxr-cyan-hover:#22D3EE;       /* cyan button hover */
  --dxr-cyan-deep:#0891B2;        /* cyan mono index / markers on light */
  --dxr-cyan-deeper:#0E7490;      /* cyan text link on light */
  --dxr-cyan-light:#67E8F9;       /* cyan text on dark */
  --dxr-cyan-ink:#04252C;         /* TEXT ON a cyan fill — never white */

  --dxr-violet:#7C5CF0;           /* OptiTwin accent / cap rule */
  --dxr-violet-deep:#6D28D9;      /* violet button fill + text on light */
  --dxr-violet-hover:#5B21B6;
  --dxr-violet-light:#C4B5FD;     /* mono index 02 on dark */
  --dxr-violet-core:#4C1D95;      /* PhotonCore radial terminal stop */

  --dxr-green:#10B981;            /* live/positive dot, meter fill */
  --dxr-green-deep:#047857;       /* checkmark on light */
  --dxr-green-light:#34D399;      /* checkmark on dark, CUDA/OptiX label */
  --dxr-green-status:#059669;     /* "running"/"solved" mono status text */

  --dxr-amber:#F59E0B;
  --dxr-amber-deep:#B45309;       /* Beta badge text, warnings, "beta" cell */
  --dxr-amber-tint:#FEF3C7;       /* Beta badge bg */
  --dxr-amber-tint-soft:#FFFBEB;  /* patent note band (About In-brief) */
  --dxr-amber-light:#FCD34D;      /* patent note on dark */

  --dxr-red:#DC2626;              /* fail verdicts */

  /* Spectrum stop set (referenced by the two signature rules only) */
  --dxr-rose:#E11D48;
  --dxr-yellow:#FACC15;
  --dxr-violet-spectrum:#7C3AED;

  /* --- 1.4 Gradients --------------------------------------------------- */
  /* SIGNATURE. Exactly two placements site-wide: 2px under nav, 3px atop footer. */
  --dxr-spectrum:linear-gradient(90deg,#E11D48,#F59E0B,#FACC15,#10B981,#06B6D4,#2563EB,#7C3AED);
  /* Eyebrow bar 44x3. FIVE stops — a DIFFERENT gradient, not a third spectrum
     placement. Does not violate the two-placement rule. */
  --dxr-spectrum-eyebrow:linear-gradient(90deg,#E11D48,#F59E0B,#10B981,#06B6D4,#2563EB);
  /* Enterprise pricing panel cap rule, 3 stops */
  --dxr-spectrum-cap:linear-gradient(90deg,#06B6D4,#2563EB,#7C3AED);
  /* Quote attribution bar 40x3 */
  --dxr-gradient-quote:linear-gradient(90deg,#2563EB,#06B6D4);
  /* Full-scale meter fill */
  --dxr-gradient-meter:linear-gradient(90deg,#7C5CF0,#2563EB,#06B6D4,#10B981);
  /* PhotonCore 140px core square */
  --dxr-gradient-core:radial-gradient(circle at 32% 28%,#67E8F9,#2563EB 42%,#4C1D95 82%);
  /* PRODUCT IDENTITY BANDS. 3px vertical bar that identifies a product where a
     mono ordinal used to sit -- in the products dropdown, the mobile drawer and
     the dark "one engine" ledger. The ordinal encoded nothing (the products have
     no sequence); a band of the product's own accent says something true. The
     light ends #60A5FA / #A78BFA are single-use, so they stay inline here the way
     the spectrum stops do rather than becoming named colours. */
  --dxr-product-band-design:linear-gradient(180deg,#60A5FA,#2563EB);
  --dxr-product-band-optitwin:linear-gradient(180deg,#A78BFA,#6D28D9);
  --dxr-product-band-truescene:linear-gradient(180deg,#67E8F9,#0891B2);
  /* Lightened for a dark ground -- the deep ends above disappear on ink. */
  --dxr-product-band-design-on-dark:linear-gradient(180deg,#93C5FD,#2563EB);
  --dxr-product-band-optitwin-on-dark:linear-gradient(180deg,#C4B5FD,#7C5CF0);
  --dxr-product-band-truescene-on-dark:linear-gradient(180deg,#67E8F9,#06B6D4);
  /* Screenshot scrim */
  --dxr-scrim-image:linear-gradient(180deg,rgba(11,18,32,0) 45%,rgba(11,18,32,0.55) 100%);

  /* --- 1.5 On-dark ink & borders --------------------------------------- */
  --dxr-on-dark:#FFFFFF;
  --dxr-on-dark-strong:rgba(255,255,255,0.78);   /* dark panel ledger rows */
  --dxr-on-dark-body-alt:rgba(255,255,255,0.72); /* topbar message */
  --dxr-on-dark-body:rgba(255,255,255,0.68);     /* dark-section paragraphs, footer links */
  --dxr-on-dark-secondary:rgba(255,255,255,0.62);/* dark CTA-band paragraph */
  --dxr-on-dark-muted:rgba(255,255,255,0.60);    /* Enterprise panel audience line */
  --dxr-on-dark-soft:rgba(255,255,255,0.55);     /* dark ledger descriptions */
  --dxr-on-dark-caption:rgba(255,255,255,0.50);  /* footer description, panel labels */
  /* ACCESSIBILITY — FAILS WCAG 2.1 AA, KEPT DELIBERATELY.
     Measured contrast: rgba(255,255,255,0.40) composited on #0B1220 = 3.86:1.
     AA requires 4.5:1 for normal-size text. Used for footer column headings
     (small mono), so non-conforming.
     CLIENT-APPROVED palette value — do not alter here; escalate instead.
     A conforming value would be ~rgba(255,255,255,0.48) or lighter. */
  --dxr-on-dark-faint:rgba(255,255,255,0.40);    /* footer column headings */
  /* ACCESSIBILITY — FAILS WCAG 2.1 AA, KEPT DELIBERATELY.
     Measured contrast: rgba(255,255,255,0.36) composited on #0B1220 = 3.36:1
     — the worst ratio in the palette. AA requires 4.5:1 for normal-size text.
     Used for the footer legal line, so non-conforming.
     CLIENT-APPROVED palette value — do not alter here; escalate instead.
     A conforming value would be ~rgba(255,255,255,0.48) or lighter. */
  --dxr-on-dark-mono:rgba(255,255,255,0.36);     /* footer legal line */
  --dxr-on-dark-image:rgba(255,255,255,0.82);    /* caption over imagery */

  --dxr-border-on-dark:rgba(255,255,255,0.14);       /* dark panel border */
  --dxr-border-on-dark-inner:rgba(255,255,255,0.12); /* dark ledger row separator */
  --dxr-border-on-dark-soft:rgba(255,255,255,0.10);  /* dark panel inner divider, footer rule */
  --dxr-border-on-dark-faint:rgba(255,255,255,0.08); /* topbar bottom border */
  --dxr-btn-border-dark:rgba(255,255,255,0.24);
  --dxr-btn-border-dark-hover:rgba(255,255,255,0.55);
  --dxr-panel-on-dark:rgba(255,255,255,0.03);        /* dark panel fill */

  /* --- 1.6 Layout ------------------------------------------------------ */
  --dxr-container:1300px;
  --dxr-gutter:clamp(20px,4vw,40px);

  --dxr-section-y:clamp(55px,6.5vw,88px);          /* standard */
  --dxr-section-y-tight:clamp(52px,6.2vw,84px);    /* most inner sections */
  --dxr-section-y-loose:clamp(57px,6.8vw,92px);    /* Home products */
  --dxr-section-y-compact:clamp(50px,5.9vw,80px);  /* dark CTA bands, Tech hero */
  --dxr-section-y-xs:clamp(42px,5.0vw,68px);       /* Pricing header top */
  --dxr-section-y-xs2:clamp(37px,4.4vw,60px);      /* Pricing header bottom */
  --dxr-footer-y:clamp(35px,4.1vw,56px);           /* footer top pad */

  /* Grid minimums — TUNED. Changing these changes desktop column counts. */
  --dxr-min-2up:420px;    /* 2-up + every hero split */
  --dxr-min-3up:320px;    /* 3-up hairline grids, stat ledgers, engine columns */
  --dxr-min-4up:240px;    /* 4-up: stat band, pricing plans, workflow steps */
  /* observed exceptions, keep verbatim where used */
  --dxr-min-panels:280px;   /* Home product trio */
  --dxr-min-headpair:360px; /* heading pairs */
  --dxr-min-band:400px;     /* dark two-column bands */

  --dxr-gap-cell:1px;     /* NOT spacing — the hairline-grid mechanism */
  --dxr-gap-panels:20px;
  --dxr-gap-rows:11px;
  --dxr-gap-cta:12px;
  --dxr-gap-col:48px;
  --dxr-gap-col-hero:56px;
  --dxr-gap-col-wide:64px;
  --dxr-gap-col-xwide:72px;

  --dxr-pad-cell:30px;                  /* hairline-grid cell */
  --dxr-pad-panel:32px;                 /* large panel */
  --dxr-pad-panel-sm:26px 28px;         /* compact panel (FAQ) */
  --dxr-pad-panel-body:26px 26px 24px;  /* product panel body */
  --dxr-pad-plan-body:28px 26px 26px;   /* pricing plan body */
  --dxr-pad-strip:14px 18px;            /* panel header strip */
  --dxr-pad-row:18px 20px;              /* ledger label/value row */
  --dxr-pad-th:14px 26px;               /* data-table header row */
  --dxr-pad-td:24px 26px;               /* data-table body row (wide) */
  --dxr-pad-td-sm:17px 26px;            /* data-table body row (compact, comparison) */

  /* --- 1.7 Radius ------------------------------------------------------ */
  --dxr-radius-panel:12px;
  --dxr-radius-md:8px;         /* buttons, inner cards, dropdown rows */
  --dxr-radius-pill:7px;       /* ACTIVE NAV PILL */
  --dxr-radius-badge:4px;
  --dxr-radius-rule:2px;       /* accent rules, dashes */
  --dxr-radius-meter:3px;
  --dxr-radius-round:50%;

  /* --- 1.8 Shadow — only three exist. Never a generic card shadow. ----- */
  --dxr-shadow-nav:0 10px 26px -22px rgba(15,23,42,0.55);
  --dxr-shadow-dropdown:0 28px 60px -22px rgba(15,23,42,0.28);
  --dxr-shadow-emphasis:0 24px 50px -30px rgba(37,99,235,0.45);

  /* --- 1.9 Chrome ------------------------------------------------------ */
  --dxr-nav-h:76px;
  --dxr-nav-bg:rgba(255,255,255,0.94);
  --dxr-nav-blur:blur(16px);
  --dxr-nav-z:60;
  --dxr-nav-break:900px;       /* the ONLY JS breakpoint */
  --dxr-drawer-max-h:72vh;
  --dxr-dropdown-w:380px;
  --dxr-spectrum-h-nav:2px;
  --dxr-spectrum-h-footer:3px;
  --dxr-logo-h-nav:30px;
  --dxr-logo-h-footer:28px;

  /* --- 1.10 Blueprint grid overlay ------------------------------------- */
  --dxr-blueprint-size:76px;                        /* 64px only on Academy index */
  --dxr-blueprint-line:rgba(37,99,235,0.05);        /* blue pages */
  --dxr-blueprint-line-violet:rgba(124,92,240,0.05);/* OptiTwin */
  --dxr-blueprint-line-dark:rgba(255,255,255,0.028);/* dark bands */
  --dxr-blueprint-line-dark-2:rgba(255,255,255,0.03);/* dark heroes */

  /* --- 1.11 Hatch placeholder palettes --------------------------------- */
  --dxr-hatch-a:#E4EBF6;  --dxr-hatch-b:#F1F5FB;  --dxr-hatch-ink:#94A3B8;
  --dxr-hatch-violet-a:#E9E6FA; --dxr-hatch-violet-b:#F4F2FD; --dxr-hatch-violet-ink:#8B84A8;
  --dxr-hatch-cyan-a:#DFEEF4;   --dxr-hatch-cyan-b:#EFF7FA;   --dxr-hatch-cyan-ink:#6C8B96;
  --dxr-hatch-dark-a:rgba(255,255,255,0.06);  --dxr-hatch-dark-b:rgba(255,255,255,0.02);
  --dxr-hatch-dcyan-a:rgba(6,182,212,0.22);   --dxr-hatch-dcyan-b:rgba(6,182,212,0.07);

  /* --- 1.12 Per-page accent channel -----------------------------------
     Set ONCE on the page root (body class). Every primitive reads these, so a
     product page never hard-codes its accent. Defaults = blue (D&S). */
  --dxr-accent:var(--dxr-primary);
  --dxr-accent-hover:var(--dxr-primary-hover);
  --dxr-accent-text:var(--dxr-primary);      /* accent as text on light */
  --dxr-accent-ink:var(--dxr-on-dark);       /* text colour ON an accent fill */
  --dxr-accent-tint:var(--dxr-primary-tint);
  --dxr-accent-rule:var(--dxr-primary);
  --dxr-accent-blueprint:var(--dxr-blueprint-line);
}

/* Page accent overrides — the class lands on <body> via body_class(), and may
   also be set on any subtree (a single panel, one band). */
.dxr-page--optitwin{
  --dxr-accent:var(--dxr-violet-deep);
  --dxr-accent-hover:var(--dxr-violet-hover);
  --dxr-accent-text:var(--dxr-violet-deep);
  --dxr-accent-rule:var(--dxr-violet);
  --dxr-accent-blueprint:var(--dxr-blueprint-line-violet);
}
.dxr-page--truescene{
  --dxr-accent:var(--dxr-cyan);
  --dxr-accent-hover:var(--dxr-cyan-hover);
  --dxr-accent-text:var(--dxr-cyan-deep);
  --dxr-accent-ink:var(--dxr-cyan-ink);   /* dark text on cyan fill */
  --dxr-accent-rule:var(--dxr-cyan);
}
.dxr-page--ds,
.dxr-page--home,
.dxr-page--tech{ --dxr-accent-rule:var(--dxr-primary); }
