/* Camscue design tokens (token contract v3, redesign wave R1: unified
   template - docs/design/UNIFIED-TEMPLATE-SPEC.md section 2/3). Chassis-owned
   contract: every theme defines exactly this variable set, tailwind.config.js
   maps utilities onto the variables, scripts/build_css.sh compiles one bundle
   per theme. Semantic var() colors trade away Tailwind opacity modifiers
   (bg-brand/50) by design; --rgb-* triplets carry the opacity-modifier path
   instead (decision 117), --color-* hex stays the single source of truth the
   contrast invariant parses.
   AA fix (decision-117-style token nudge, same hue, minimal delta so the
   WCAG contrast invariant clears):
     * brand #f5326a -> #ff5c8a (clearer text contrast on dark surfaces)
     * brand-strong #d81f56 -> #ffa3bc (clearer hover and soft-surface text)
   Boudoir-noir redesign (owner directive: more adult through atmosphere -
   color, type, glow, depth - never imagery; the SFW-imagery posture keeps
   the existing 18+ age gate legally sufficient, no explicit asset added):
     * ground deepened from plum #241430 toward near-black wine noir #170b14,
       surface one warm step up at #241019, surface-raised #331a24
     * brand deepened and reddened toward a hotter, more saturated rose
       #ff5c8a -> #f1327a; brand-soft moved from purple #4a3060 to a deep
       wine tint #46102b
     * CTA pushed to an electric hot pink #ff2f82 clearly hotter (brighter)
       than the new brand, re-verified AA against its ink on the darker
       grounds
     * accent shifted from bright gold #e7b65c toward a warmer candlelight
       amber #dba24a
*/
:root {
  /* Declare the theme's rendering scheme so native form controls,
     scrollbars, and the browser's own surfaces match the palette
     instead of falling back to a light default under a dark ground. */
  color-scheme: dark;
  /* Brand (spec section 3 per-site expression table; ramp stops sourced from
     the live site's own tailwind.config.js brand ramp, see the ramp block
     below). */
  --color-brand: #f1327a;
  --color-brand-strong: #ff5c94;
  --color-brand-soft: #46102b;
  /* Bright pink brand fills pair with near-black ink, hue-tinted toward the
     brand-soft magenta instead of using flat black or low-contrast white. */
  --color-brand-ink: #170a10;
  --color-accent: #dba24a;
  /* Ink on an accent surface (token contract v3.3, see tailwind.config.js):
     white on this light amber accent is far under WCAG AA's 4.5:1 floor for
     normal text, so this theme reuses its own near-black brand ink instead. */
  --color-accent-ink: #170a06;

  /* Clickout CTA (token contract v3.1, craft round R3, owner review):
     this site's Visit CTA reads --color-cta/--color-cta-strong instead of
     --color-brand, one register hotter (brighter) than the brand rose so
     the money action stands apart from the score bars, eyebrows, and
     links that carry --color-brand elsewhere on the card. */
  --color-cta: #ff2f82;
  --color-cta-strong: #ff7fb0;
  --color-cta-ink: #170a10;

  /* Surfaces */
  --color-page: #170b14;
  --color-surface: #241019;
  --color-border: #593643;
  --control-border: #8f6172;

  /* Text */
  --color-ink: #ffdfe8;
  --color-ink-muted: #ff87ab;

  /* Danger (calc-error / invalid-state text; decision R2.1-A).
     AA-checked against this theme's own --color-page ground, not
     copied from the light/dark default. */
  --color-danger: #f87171;

  /* Canonical semantic roles. Logo tiles remain light through the shared
     explicit logo-tile foundation, not this dark --surface token. */
  --page-ground: var(--color-page);
  --surface: var(--color-surface);
  --surface-raised: #331a24;
  --border: var(--color-border);
  --ink: var(--color-ink);
  --ink-muted: var(--color-ink-muted);
  --brand: var(--color-brand);
  --brand-strong: var(--color-brand-strong);
  --brand-soft: var(--color-brand-soft);
  --accent: var(--color-accent);
  --focus-ring: #ffb3d1;
  --cta-primary: var(--color-cta);
  --cta-primary-hover: var(--color-cta-strong);
  --cta-secondary: var(--color-brand-soft);
  --success: #8de2b0;
  --warning: #ffd166;
  --danger: var(--color-danger);
  --shadow-card: 0 1px 2px rgb(24 24 27 / 0.05), 0 10px 28px -14px rgb(24 24 27 / 0.16);
  --shadow-overlay: 0 20px 40px -18px rgb(24 24 27 / 0.32);

  --font-sans: system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-body: system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: system-ui, -apple-system, "Segoe UI", sans-serif;
  --radius-card: 0.625rem;
  --radius-control: 0.5rem;
  --radius-pill: 9999px;

  --texture: none;

  /* --- Token contract v2 (decision 117): RGB-triplet mirrors of the
     semantic hex tokens above, for Tailwind's rgb(var(--x) / <alpha-value>)
     opacity-modifier classes (bg-brand/50, border-ink/10, etc). Named
     --rgb-* (not --color-*) so tests/invariants/test_theme_contrast.py's
     hex-only parser over every --color-* declaration keeps passing
     unedited; the --color-* hex tokens above remain the single source
     of truth the contrast gate checks, resolved colors are identical. */
  --rgb-brand: 241 50 122; /* #f1327a */
  --rgb-brand-strong: 255 92 148; /* #ff5c94 */
  --rgb-brand-soft: 70 16 43; /* #46102b */
  --rgb-brand-ink: 23 10 16; /* #170a10 */
  --rgb-accent: 219 162 74; /* #dba24a */
  --rgb-accent-ink: 23 10 6; /* #170a06 */
  --rgb-cta: 255 47 130; /* #ff2f82 */
  --rgb-cta-strong: 255 127 176; /* #ff7fb0 */
  --rgb-cta-ink: 23 10 16; /* #170a10 */
  --rgb-page: 23 11 20; /* #170b14 */
  --rgb-surface: 36 16 25; /* #241019 */
  --rgb-border: 89 54 67; /* #593643 */
  --rgb-control-border: 143 97 114; /* #8f6172 */
  --rgb-ink: 255 223 232; /* #ffdfe8 */
  --rgb-ink-muted: 255 135 171; /* #ff87ab */
  --rgb-danger: 248 113 113; /* #f87171 */
  --rgb-page-ground: 23 11 20;
  --rgb-surface-raised: 51 26 36;
  --rgb-focus-ring: 255 179 209;
  --rgb-cta-primary: 255 47 130;
  --rgb-cta-primary-hover: 255 127 176;
  --rgb-cta-secondary: 70 16 43;
  --rgb-success: 141 226 176;
  --rgb-warning: 255 209 102;

  /* Generic brand ramp (decision 117), recomputed against the boudoir-noir
     brand hue above (hue-consistent HSL scale, same span as the legacy
     ramp this site shipped with). Read by tailwind.config.js as
     brand.50..950 utility colors. */
  --rgb-brand-50: 254 240 246;
  --rgb-brand-100: 254 215 230;
  --rgb-brand-200: 255 178 207;
  --rgb-brand-300: 255 138 182;
  --rgb-brand-400: 255 102 160;
  --rgb-brand-500: 255 61 134;
  --rgb-brand-600: 249 26 110;
  --rgb-brand-700: 245 21 106;
  --rgb-brand-800: 242 12 99;
  --rgb-brand-900: 129 8 54;
  --rgb-brand-950: 80 7 34;
  /* Generic neutral ramp: same lightness stops as the shared zinc scale,
     hue-biased toward this theme's brand hue (spec section 3: "neutrals get
     a slight hue bias toward the brand") - recomputed against the new
     brand hue above. */
  --rgb-neutral-50: 250 250 250;
  --rgb-neutral-100: 245 244 244;
  --rgb-neutral-200: 231 228 229;
  --rgb-neutral-300: 216 212 213;
  --rgb-neutral-400: 170 161 164;
  --rgb-neutral-500: 123 112 116;
  --rgb-neutral-600: 90 83 86;
  --rgb-neutral-700: 69 64 66;
  --rgb-neutral-800: 42 39 40;
  --rgb-neutral-900: 27 24 25;
  --rgb-neutral-950: 10 10 10;
  --font-display: 'Space Grotesk', 'Avenir Next', 'Segoe UI', system-ui, sans-serif;
}
