/* Local Titan pre-call VSL: design tokens, exported from build/lt.py + build/deck11.py.
   Slide = 13.333in x 7.5in (960 x 540 pt). Reference width 1280 px => 1pt = 1.3333px. rem assumes 16px root.
   To scale a 1280-px slide layout to another width W, multiply px values by W/1280 (or set --lt-u and use calc). */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;1,500&family=Inter:wght@400;500;600&display=swap');
/* @font-face equivalents (Google Fonts serves these; local TTFs are in "Local Titan Precall VSL/assets/fonts"):
   Cormorant Garamond 500, 500 italic, 600; Inter 400, 500, 600. The @import above emits the @font-face rules. */

:root {
  /* colors (lt.py) */
  --lt-ink: #0c0e11;        /* INK: slide background */
  --lt-ink2: #12151a;       /* INK2: secondary background, placeholders */
  --lt-ink3: #171b21;       /* INK3: panels / cards */
  --lt-paper: #ece7da;      /* PAPER: titles, primary text */
  --lt-dim: #7d8291;        /* DIM: muted text, captions, slide numbers */
  --lt-body: #c9cbd1;       /* BODY: body copy */
  --lt-brass: #c9a35e;      /* BRASS: accent, kickers, rules */
  --lt-brassl: #e8c98a;     /* BRASSL: light accent, italic emphasis words, big stats */
  --lt-bubble-in: #262a31;  /* incoming text bubble / dimmed puzzle piece */
  --lt-avatar: #3a3f48;     /* avatar circle in text cards */
  --lt-brass-dark: #b89352; /* puzzle shade */
  --lt-brass-mid: #d6b270;  /* puzzle shade */
  --lt-bad: #e0796b;        /* "bad" red in fake-report visual */
  --lt-deep: #05060a;       /* vignette edge of slide background */
  /* hairlines: PAPER at 12% (panels, hline default), 8% (inner dividers), 18-22% (image borders) */
  --lt-hairline: rgba(236,231,218,.12);
  --lt-hairline-soft: rgba(236,231,218,.08);
  --lt-hairline-img: rgba(236,231,218,.22);
  --lt-halo: rgba(201,163,94,.16);
  /* slide background (build/bg.py): radial lift at 50% 30% over INK, dark vignette, faint noise.
     img/slide-bg.jpg is the exact 1920x1080 image; img/slide-bg-center.jpg has the lift at 50% 42%. */
  --lt-bg-slide: radial-gradient(ellipse 65% 55% at 50% 30%, #11141a 0%, #0e1014 45%, #0c0e11 70%, #08090c 100%);
  --lt-bg-slide-center: radial-gradient(ellipse 65% 55% at 50% 42%, #14171c 0%, #101216 45%, #0c0e11 70%, #08090c 100%);

  /* font families */
  --lt-serif: 'Cormorant Garamond', Georgia, serif;  /* deck uses Medium 500 (SERIF) and SemiBold 600 (SERIF_SB); emphasis = 500 italic in --lt-brassl */
  --lt-sans: 'Inter', system-ui, sans-serif;         /* 400 (SANS), 500 (SANS_M), 600 (SANS_SB) */
  --lt-serif-w: 500; --lt-serif-sb-w: 600;
  --lt-sans-w: 400; --lt-sans-m-w: 500; --lt-sans-sb-w: 600;

  /* letter-spacing (deck spacing values / font size) */
  --lt-track-kicker: .32em;   /* kicker() */
  --lt-track-caption: .22em;  /* uppercase captions/tags (spacing 180-250) */
  --lt-track-brand: .14em;    /* brand wordmark */
  --lt-track-meta: .2em;      /* slide number */
  /* line-height: titles 0.95-1.0, body copy ~1.15-1.3 */
  --lt-lh-title: .95; --lt-lh-body: 1.25;

  /* type scale by role: px at 1280 reference (pt x 4/3), rem at 16px */
  --lt-fs-display-xl: 128px; --lt-fs-display-xl-rem: 8rem; /* 96pt, serif 500; "TALK" on title slide; "+20%" uses SemiBold */
  --lt-fs-display: 114.67px; --lt-fs-display-rem: 7.17rem; /* 86pt, serif 500; "BEFORE WE" on title slide */
  --lt-fs-stat-sans: 117.33px; --lt-fs-stat-sans-rem: 7.33rem; /* 88pt, sans 600; big Inter number ("352") */
  --lt-fs-title-xl: 74.67px; --lt-fs-title-xl-rem: 4.67rem; /* 56pt, serif 500; FAQ / closing titles */
  --lt-fs-title-lg: 66.67px; --lt-fs-title-lg-rem: 4.17rem; /* 50pt, serif 500; large centered titles (48–54) */
  --lt-fs-title-section: 58.67px; --lt-fs-title-section-rem: 3.67rem; /* 44pt, serif 500; section_title() default */
  --lt-fs-title: 53.33px; --lt-fs-title-rem: 3.33rem; /* 40pt, serif 500; left_title() default; most slide titles 38–40 */
  --lt-fs-title-sm: 48px; --lt-fs-title-sm-rem: 3rem; /* 36pt, serif 500; card headlines */
  --lt-fs-heading: 42.67px; --lt-fs-heading-rem: 2.67rem; /* 32pt, serif 500 */
  --lt-fs-subhead: 34.67px; --lt-fs-subhead-rem: 2.17rem; /* 26pt, serif 500; most common serif size: card titles, list items */
  --lt-fs-subhead-sm: 28px; --lt-fs-subhead-sm-rem: 1.75rem; /* 21pt, serif 500; small serif (21–24) */
  --lt-fs-stat-num: 45.33px; --lt-fs-stat-num-rem: 2.83rem; /* 34pt, sans 600; numbered circles / mid stats (30–35) */
  --lt-fs-body-lg: 22.67px; --lt-fs-body-lg-rem: 1.42rem; /* 17pt, sans 400 */
  --lt-fs-body: 20px; --lt-fs-body-rem: 1.25rem; /* 15pt, sans 400; body copy (14.5–15) */
  --lt-fs-body-sm: 17.33px; --lt-fs-body-sm-rem: 1.08rem; /* 13pt, sans 400; secondary copy (12.5–13.5) */
  --lt-fs-label: 17.33px; --lt-fs-label-rem: 1.08rem; /* 13pt, sans 600; card labels (SemiBold) */
  --lt-fs-kicker: 14px; --lt-fs-kicker-rem: 0.88rem; /* 10.5pt, sans 600; uppercase brass kicker, letter-spacing .32em */
  --lt-fs-caption: 12px; --lt-fs-caption-rem: 0.75rem; /* 9pt, sans 600; uppercase captions/tags (8–10) */
  --lt-fs-meta: 12px; --lt-fs-meta-rem: 0.75rem; /* 9pt, sans 500; slide number / footer meta, Inter Medium */
  --lt-fs-micro: 10px; --lt-fs-micro-rem: 0.62rem; /* 7.5pt, sans 600; tiny uppercase tag */
  --lt-fs-brand: 17.33px; --lt-fs-brand-rem: 1.08rem; /* 13pt, serif 600; "LOCAL TITAN" wordmark, letter-spacing .14em */
  --lt-fs-footnote: 11.33px; --lt-fs-footnote-rem: 0.71rem; /* 8.5pt, sans 400 */

  /* every font size used in the current deck (pt -> px @1280); name = pt with '_' for '.' */
  --lt-pt-7_5: 10px; /* 0.62rem */
  --lt-pt-8: 10.67px; /* 0.67rem */
  --lt-pt-8_5: 11.33px; /* 0.71rem */
  --lt-pt-9: 12px; /* 0.75rem */
  --lt-pt-9_5: 12.67px; /* 0.79rem */
  --lt-pt-10: 13.33px; /* 0.83rem */
  --lt-pt-10_5: 14px; /* 0.88rem */
  --lt-pt-11: 14.67px; /* 0.92rem */
  --lt-pt-11_5: 15.33px; /* 0.96rem */
  --lt-pt-12: 16px; /* 1rem */
  --lt-pt-12_5: 16.67px; /* 1.04rem */
  --lt-pt-13: 17.33px; /* 1.08rem */
  --lt-pt-13_5: 18px; /* 1.12rem */
  --lt-pt-14: 18.67px; /* 1.17rem */
  --lt-pt-14_5: 19.33px; /* 1.21rem */
  --lt-pt-15: 20px; /* 1.25rem */
  --lt-pt-15_5: 20.67px; /* 1.29rem */
  --lt-pt-16: 21.33px; /* 1.33rem */
  --lt-pt-16_9: 22.53px; /* 1.41rem */
  --lt-pt-17: 22.67px; /* 1.42rem */
  --lt-pt-18: 24px; /* 1.5rem */
  --lt-pt-19: 25.33px; /* 1.58rem */
  --lt-pt-20: 26.67px; /* 1.67rem */
  --lt-pt-21: 28px; /* 1.75rem */
  --lt-pt-22: 29.33px; /* 1.83rem */
  --lt-pt-23: 30.67px; /* 1.92rem */
  --lt-pt-24: 32px; /* 2rem */
  --lt-pt-26: 34.67px; /* 2.17rem */
  --lt-pt-28: 37.33px; /* 2.33rem */
  --lt-pt-29_92: 39.89px; /* 2.49rem */
  --lt-pt-30: 40px; /* 2.5rem */
  --lt-pt-32: 42.67px; /* 2.67rem */
  --lt-pt-33_44: 44.59px; /* 2.79rem */
  --lt-pt-34: 45.33px; /* 2.83rem */
  --lt-pt-35_2: 46.93px; /* 2.93rem */
  --lt-pt-36: 48px; /* 3rem */
  --lt-pt-38: 50.67px; /* 3.17rem */
  --lt-pt-38_72: 51.63px; /* 3.23rem */
  --lt-pt-40: 53.33px; /* 3.33rem */
  --lt-pt-42: 56px; /* 3.5rem */
  --lt-pt-44: 58.67px; /* 3.67rem */
  --lt-pt-46: 61.33px; /* 3.83rem */
  --lt-pt-48: 64px; /* 4rem */
  --lt-pt-50: 66.67px; /* 4.17rem */
  --lt-pt-54: 72px; /* 4.5rem */
  --lt-pt-56: 74.67px; /* 4.67rem */
  --lt-pt-86: 114.67px; /* 7.17rem */
  --lt-pt-88: 117.33px; /* 7.33rem */
  --lt-pt-96: 128px; /* 8rem */

  /* layout constants (px @1280) */
  --lt-slide-w: 1280px; --lt-slide-h: 720px;
  --lt-margin-x: 72px;       /* 0.75in left edge used by left_title/kicker */
  --lt-kicker-y: 72px;       /* 0.72-0.78in */
  --lt-title-y: 108px;       /* 1.12-1.2in */
  --lt-footer-y: 664px;      /* brand at (52.8, 664.3), slide number right-aligned ending at 1228.8 */
  --lt-kicker-rule-w: 52.8px; --lt-kicker-rule-gap: 21.1px; /* fading rules either side of centered kicker */
  --lt-radius-shot: 3.5%;    /* screenshot corner radius = 3.5% of the shorter side */
  --lt-accent-rule: 3px;     /* brass top rule on accent panels (2.25pt) */
}

/* convenience classes matching lt.py helpers */
.lt-slide { width: var(--lt-slide-w); height: var(--lt-slide-h); position: relative; overflow: hidden;
  background: var(--lt-ink) url(img/slide-bg.jpg) center/cover; color: var(--lt-body); font-family: var(--lt-sans); }
.lt-kicker { font: var(--lt-sans-sb-w) var(--lt-fs-kicker)/1.6 var(--lt-sans); letter-spacing: var(--lt-track-kicker); text-transform: uppercase; color: var(--lt-brass); }
.lt-kicker--centered { display: flex; align-items: center; justify-content: center; gap: var(--lt-kicker-rule-gap); }
.lt-kicker--centered::before, .lt-kicker--centered::after { content: ""; width: var(--lt-kicker-rule-w); height: 1.2px; }
.lt-kicker--centered::before { background: linear-gradient(90deg, transparent, var(--lt-brass)); }
.lt-kicker--centered::after { background: linear-gradient(90deg, var(--lt-brass), transparent); }
.lt-title { font: var(--lt-serif-w) var(--lt-fs-title)/var(--lt-lh-title) var(--lt-serif); color: var(--lt-paper); }
.lt-title--section { font-size: var(--lt-fs-title-section); text-align: center; }
.lt-em { color: var(--lt-brassl); font-style: italic; }
.lt-body { font: var(--lt-sans-w) var(--lt-fs-body)/var(--lt-lh-body) var(--lt-sans); color: var(--lt-body); }
.lt-caption { font: var(--lt-sans-sb-w) var(--lt-fs-caption)/1.4 var(--lt-sans); letter-spacing: var(--lt-track-caption); text-transform: uppercase; color: var(--lt-dim); }
.lt-brand { font: var(--lt-serif-sb-w) var(--lt-fs-brand)/1 var(--lt-serif); letter-spacing: var(--lt-track-brand); color: var(--lt-paper); }
.lt-brand b { color: var(--lt-brassl); font-weight: inherit; }
.lt-panel { background: var(--lt-ink3); border: 1px solid var(--lt-hairline); }
.lt-panel--accent { border-top: var(--lt-accent-rule) solid var(--lt-brass); }
.lt-stat { font: var(--lt-serif-sb-w) var(--lt-fs-display-xl)/1 var(--lt-serif); color: var(--lt-brassl); font-feature-settings: 'lnum'; }
