:root{
  /* ---- Brand core: sampled from the supplied logo + channel header ---- */
  --htv-yellow:#ffdf0a;        /* round-logo field, primary brand colour */
  --htv-yellow-deep:#eeba09;   /* header wordmark gold, safe on white */
  --htv-yellow-soft:#fff4b0;
  --htv-yellow-wash:#fffbe0;
  --htv-ink:#0d0d0d;           /* logo lettering */
  --htv-paper:#f8f9f0;         /* logo "TV" off-white */
  --htv-white:#ffffff;

  /* ---- Dusk gradient: sampled left-to-right across the channel header ---- */
  --htv-navy:#06195e;          /* "TV" block fill, darkest anchor */
  --htv-blue:#0e2476;
  --htv-blue-steel:#2b4e7e;
  --htv-violet:#5c4185;
  --htv-magenta:#ba4881;
  --htv-rose:#dd5672;
  --htv-coral:#ee696d;
  --htv-blush:#c77e85;

  /* ---- Neutral ramp, hue-nudged toward the navy anchor ---- */
  --htv-n-0:#ffffff;
  --htv-n-50:#f6f6f8;
  --htv-n-100:#ebebf0;
  --htv-n-200:#d8d9e1;
  --htv-n-300:#b6b8c6;
  --htv-n-400:#8b8ea2;
  --htv-n-500:#666a80;
  --htv-n-600:#4a4e63;
  --htv-n-700:#33364a;
  --htv-n-800:#1f2132;
  --htv-n-900:#12131f;
  --htv-n-950:#0d0d0d;

  /* ---- Semantic status ---- */
  --htv-success:#1f8a58;
  --htv-success-wash:#e6f4ec;
  --htv-warning:#eeba09;
  --htv-warning-wash:#fff4cf;
  --htv-danger:#c8324a;
  --htv-danger-wash:#fbe9ec;
  --htv-info:#0e2476;
  --htv-info-wash:#e7eaf6;
  --htv-live:#e01b24;          /* live-broadcast red dot */

  /* ---- Signature gradients ---- */
  --htv-gradient-dusk:linear-gradient(100deg,#ee696d 0%,#ba4881 26%,#5c4185 54%,#0e2476 82%,#2b4e7e 100%); /* @kind color */
  --htv-gradient-dusk-v:linear-gradient(180deg,#ee696d 0%,#ba4881 30%,#5c4185 60%,#0e2476 100%); /* @kind color */
  --htv-gradient-night:linear-gradient(160deg,#0e2476 0%,#06195e 60%,#12131f 100%); /* @kind color */
  --htv-gradient-dawn:linear-gradient(100deg,#ffdf0a 0%,#eeba09 45%,#ee696d 100%); /* @kind color */
  /* Legibility scrim laid over imagery before white type sits on it */
  --htv-scrim-bottom:linear-gradient(180deg,rgba(6,25,94,0) 0%,rgba(6,25,94,.55) 55%,rgba(6,25,94,.92) 100%); /* @kind color */
  --htv-scrim-flat:rgba(13,13,13,.56); /* @kind color */
}
:root{
  /* Families */
  --htv-font-display:"Yanone Kaffeesatz","Arial Narrow",sans-serif; /* caps, 700 */
  --htv-font-condensed:"Yanone Kaffeesatz","Arial Narrow",sans-serif; /* headings, UI, labels */
  --htv-font-tv:"Anton","Yanone Kaffeesatz",sans-serif;             /* the "TV" logo block only */
  --htv-font-stamp:"Jeju Hallasan","Yanone Kaffeesatz",sans-serif;  /* the "Hallelujah Story" stamp only */
  --htv-font-body:"Public Sans",system-ui,-apple-system,sans-serif; /* paragraphs */
  --htv-font-mono:ui-monospace,"SFMono-Regular",Menlo,monospace;

  /* Weights */
  --htv-weight-light:300/* @kind font */;
  --htv-weight-regular:400/* @kind font */;
  --htv-weight-medium:500/* @kind font */;
  --htv-weight-semibold:600/* @kind font */;
  --htv-weight-bold:700/* @kind font */;

  /* Display scale — Anton, uppercase, tight */
  --htv-size-display-xl:96px;
  --htv-size-display-l:72px;
  --htv-size-display-m:56px;
  --htv-size-display-s:40px;
  --htv-lh-display:0.90/* @kind other */;
  --htv-ls-display:0em/* @kind other */;

  /* Heading scale — Oswald */
  --htv-size-h1:36px;
  --htv-size-h2:28px;
  --htv-size-h3:22px;
  --htv-size-h4:18px;
  --htv-lh-heading:1.12/* @kind other */;
  --htv-ls-heading:0.005em/* @kind other */;

  /* Body scale — Public Sans */
  --htv-size-body-l:19px;
  --htv-size-body:17px;
  --htv-size-body-s:15px;
  --htv-size-caption:13px;
  --htv-lh-body:1.6/* @kind other */;
  --htv-lh-tight:1.4/* @kind other */;

  /* Label / eyebrow — Oswald, uppercase, tracked out */
  --htv-size-label:13px;
  --htv-size-label-s:11px;
  --htv-ls-label:0.14em/* @kind other */;
  --htv-ls-eyebrow:0.22em/* @kind other */;
}
:root{
  /* 4px base, doubling at the top end */
  --htv-space-0:0px;
  --htv-space-1:4px;
  --htv-space-2:8px;
  --htv-space-3:12px;
  --htv-space-4:16px;
  --htv-space-5:20px;
  --htv-space-6:24px;
  --htv-space-8:32px;
  --htv-space-10:40px;
  --htv-space-12:48px;
  --htv-space-16:64px;
  --htv-space-20:80px;
  --htv-space-24:96px;
  --htv-space-32:128px;

  /* Layout */
  --htv-container:1200px;
  --htv-container-narrow:720px;
  --htv-gutter:24px;
  --htv-gutter-wide:40px;
  --htv-section-y:96px;
  --htv-section-y-s:56px;
  --htv-grid-gap:24px;
}
:root{
  /* The mark itself is hard-edged: blocks, not pills. Radii stay small. */
  --htv-radius-0:0px;
  --htv-radius-xs:2px;
  --htv-radius-sm:4px;
  --htv-radius-md:8px;
  --htv-radius-lg:12px;
  --htv-radius-xl:20px;
  --htv-radius-pill:999px;
  --htv-radius-round:50%;

  /* Borders */
  --htv-border-hair:1px;
  --htv-border:2px;
  --htv-border-heavy:4px;
  --htv-border-rule:6px;   /* the yellow underscore rule under headings */
}
:root{
  /* Logo lettering carries a hard offset drop shadow — the system keeps a
     hard-shadow variant for brand surfaces and soft shadows for UI chrome. */
  --htv-shadow-hard:4px 4px 0 rgba(13,13,13,.22);
  --htv-shadow-hard-navy:6px 6px 0 var(--htv-navy);
  --htv-shadow-hard-yellow:6px 6px 0 var(--htv-yellow);

  --htv-shadow-0:none;
  --htv-shadow-1:0 1px 2px rgba(6,25,94,.10);
  --htv-shadow-2:0 2px 8px rgba(6,25,94,.12);
  --htv-shadow-3:0 8px 24px rgba(6,25,94,.16);
  --htv-shadow-4:0 20px 48px rgba(6,25,94,.22);

  --htv-ring-focus:0 0 0 3px rgba(255,223,10,.55);
  --htv-ring-focus-dark:0 0 0 3px rgba(6,25,94,.45);
  --htv-inset-hairline:inset 0 0 0 1px rgba(6,25,94,.10);

  --htv-blur-glass:blur(14px) saturate(1.1); /* @kind other */
}
:root{
  --htv-dur-1:120ms/* @kind other */;   /* hover / colour */
  --htv-dur-2:200ms/* @kind other */;   /* press, small moves */
  --htv-dur-3:320ms/* @kind other */;   /* panels, overlays */
  --htv-dur-4:520ms/* @kind other */;   /* section reveals */
  --htv-ease-standard:cubic-bezier(.2,.7,.25,1); /* @kind other */
  --htv-ease-out:cubic-bezier(0,.6,.3,1); /* @kind other */
  --htv-ease-in:cubic-bezier(.5,0,1,.5); /* @kind other */
  --htv-press-scale:0.97/* @kind other */;
  --htv-lift:-2px/* @kind other */;
}
:root{
  /* Text */
  --text-body:var(--htv-n-800);
  --text-heading:var(--htv-ink);
  --text-muted:var(--htv-n-500);
  --text-inverse:var(--htv-paper);
  --text-inverse-muted:rgba(248,249,240,.72); /* @kind color */
  --text-accent:var(--htv-yellow-deep);
  --text-link:var(--htv-blue);
  --text-link-hover:var(--htv-magenta);
  --text-on-brand:var(--htv-ink);     /* ink on yellow */

  /* Surfaces */
  --surface-page:var(--htv-n-0);
  --surface-page-alt:var(--htv-n-50);
  --surface-card:var(--htv-n-0);
  --surface-card-alt:var(--htv-yellow-wash);
  --surface-brand:var(--htv-yellow);
  --surface-night:var(--htv-navy);
  --surface-night-soft:var(--htv-n-800);
  --surface-dusk:var(--htv-gradient-dusk);
  --surface-glass:rgba(248,249,240,.10); /* @kind color */

  /* Lines */
  --border-subtle:var(--htv-n-200);
  --border-strong:var(--htv-ink);
  --border-brand:var(--htv-yellow);
  --border-inverse:rgba(248,249,240,.24); /* @kind color */

  /* Controls */
  --control-height:44px/* @kind spacing */;      /* minimum touch target */
  --control-height-s:34px/* @kind spacing */;
  --control-height-l:54px/* @kind spacing */;
  --control-radius:var(--htv-radius-sm);
  --control-pad-x:var(--htv-space-5);

  /* Focus */
  --focus-ring:var(--htv-ring-focus);
}
