/* ============================================================
   Virayo Design System — Colors & Type
   ============================================================ */

/* ============================================================
   Virayo Brand Fonts — self-hosted
   ============================================================
   Role mapping:
   - Geograph Black      → primary display / headlines (geometric black)
   - WTR Gothic Shaded   → decorative shaded headline (echoes the shaded V)
   - Arbutus             → vintage serif / editorial accents
   - Buffalo Riders      → novelty display (posters, hero flourishes)
   - DM Sans (variable)  → body / UI
*/
@font-face {
  font-family: 'Geograph';
  src: url('fonts/Geograph-Black.otf') format('opentype');
  font-weight: 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'WTR Gothic Shaded';
  src: url('fonts/WTR_Gothic_Shaded.otf') format('opentype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Arbutus';
  src: url('fonts/Arbutus-Regular.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'DM Sans';
  src: url('fonts/DMSans-VariableFont_opsz_wght.ttf') format('truetype-variations');
  font-weight: 100 1000;
  font-style: normal;
  font-display: swap;
}

:root {
  /* ---------- PRIMARY BRAND PALETTE ---------- */
  --virayo-blue:        #1C70DA;  /* primary — logotype, links, buttons */
  --virayo-blue-deep:   #145BB0;  /* hover / pressed */
  --virayo-blue-dark:   #0E427F;  /* on-dark contrasts */
  --virayo-blue-tint:   #E7F1FC;  /* subtle fills, callouts */

  --virayo-orange:      #E29A3B;  /* sunburst, secondary accent */
  --virayo-orange-deep: #BF7F24;  /* hover / pressed */
  --virayo-orange-tint: #FBEFD9;  /* soft bg blocks */

  --virayo-yellow:      #EEDA97;  /* reverse / on-dark accent, warm */
  --virayo-cream:       #FFFAEF;  /* logo interior, warm canvas */

  --virayo-black:       #1A1A1A;  /* true black text */
  --virayo-ink:         #333333;  /* logomark-black equivalent */
  --virayo-white:       #FFFFFF;

  /* ---------- NEUTRAL SCALE ---------- */
  --gray-50:   #FAF8F3;  /* warm off-white, paper */
  --gray-100:  #F2EFE7;
  --gray-200:  #E6E2D6;
  --gray-300:  #D3CEC0;
  --gray-400:  #A8A295;
  --gray-500:  #7A7668;
  --gray-600:  #56534A;
  --gray-700:  #3A3833;
  --gray-800:  #242321;
  --gray-900:  #111111;

  /* ---------- SEMANTIC TOKENS ---------- */
  --fg-1:     var(--virayo-ink);   /* primary text */
  --fg-2:     var(--gray-600);     /* secondary text */
  --fg-3:     var(--gray-500);     /* tertiary / labels */
  --fg-muted: var(--gray-400);     /* placeholders */
  --fg-invert: var(--virayo-cream);

  --bg-canvas: var(--virayo-cream);   /* default warm canvas */
  --bg-surface: #FFFFFF;              /* cards on canvas */
  --bg-sunk:   var(--gray-100);       /* subtle wells */
  --bg-dark:   var(--virayo-blue-dark);

  --accent:        var(--virayo-blue);
  --accent-warm:   var(--virayo-orange);
  --accent-soft:   var(--virayo-yellow);

  --link:        var(--virayo-blue);
  --link-hover:  var(--virayo-blue-deep);

  --success: #3F7D4B;
  --warning: var(--virayo-orange-deep);
  --danger:  #B5372A;
  --info:    var(--virayo-blue);

  --border-1: var(--gray-200);     /* default hairline */
  --border-2: var(--gray-300);     /* stronger */
  --border-ink: var(--virayo-ink); /* editorial, 2px hard line */

  /* ---------- RADII ---------- */
  --radius-xs: 4px;
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --radius-pill: 999px;

  /* ---------- SPACING (8pt grid, 4pt half-steps) ---------- */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --space-9: 96px;
  --space-10: 128px;

  /* ---------- SHADOWS (warm-tinted; softer than pure black) ---------- */
  --shadow-xs: 0 1px 2px rgba(26,26,26,0.06);
  --shadow-sm: 0 2px 6px rgba(26,26,26,0.08);
  --shadow-md: 0 8px 20px -6px rgba(26,26,26,0.12), 0 2px 6px rgba(26,26,26,0.06);
  --shadow-lg: 0 24px 48px -12px rgba(26,26,26,0.18), 0 4px 10px rgba(26,26,26,0.08);
  --shadow-warm: 0 8px 24px -8px rgba(226,154,59,0.35);

  /* editorial "stamp" shadow — 3px offset hard block, no blur */
  --shadow-stamp: 4px 4px 0 0 var(--virayo-ink);
  --shadow-stamp-blue: 4px 4px 0 0 var(--virayo-blue);
  --shadow-stamp-orange: 4px 4px 0 0 var(--virayo-orange);

  /* ---------- TYPE FAMILIES ---------- */
  --font-display: 'Geograph', 'Helvetica Neue', Arial, sans-serif;
  --font-shaded:  'WTR Gothic Shaded', 'Geograph', Arial, sans-serif;
  --font-body:    'DM Sans', 'Helvetica Neue', Arial, sans-serif;
  --font-serif:   'Arbutus', 'Iowan Old Style', Georgia, serif;
  --font-novelty: 'Buffalo Riders', 'Arbutus', Georgia, serif;
  --font-mono:    'JetBrains Mono', ui-monospace, Menlo, monospace;

  /* ---------- TYPE SCALE (desktop) ---------- */
  --fs-hero:   clamp(56px, 8vw, 104px);
  --fs-h1:     clamp(40px, 5vw, 64px);
  --fs-h2:     clamp(30px, 3.6vw, 44px);
  --fs-h3:     clamp(22px, 2.4vw, 30px);
  --fs-h4:     20px;
  --fs-body:   17px;
  --fs-body-sm: 15px;
  --fs-label:  13px;
  --fs-micro:  11px;

  --lh-tight:   1.04;
  --lh-snug:    1.18;
  --lh-normal:  1.5;
  --lh-relaxed: 1.65;

  --ls-tight:  -0.02em;
  --ls-wide:    0.08em;
  --ls-eyebrow: 0.14em;

  /* ---------- MOTION ---------- */
  --ease-standard: cubic-bezier(0.2, 0.6, 0.2, 1);
  --ease-out-back: cubic-bezier(0.34, 1.4, 0.64, 1);
  --dur-fast:   120ms;
  --dur-base:   220ms;
  --dur-slow:   420ms;
}

/* ============================================================
   BASE STYLES
   ============================================================ */
html, body {
  background: var(--bg-canvas);
  color: var(--fg-1);
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-normal);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5 {
  font-family: var(--font-display);
  color: var(--fg-1);
  letter-spacing: var(--ls-tight);
  line-height: var(--lh-tight);
  margin: 0;
  text-wrap: balance;
}

h1 { font-size: var(--fs-h1); font-weight: 900; }
h2 { font-size: var(--fs-h2); font-weight: 900; }
h3 { font-size: var(--fs-h3); font-weight: 900; }
h4 { font-size: var(--fs-h4); font-weight: 900; letter-spacing: normal; }

.hero-display {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: var(--fs-hero);
  letter-spacing: -0.035em;
  line-height: 0.92;
  text-transform: uppercase;
}

.editorial {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: var(--fs-h2);
  line-height: 1.12;
  letter-spacing: -0.005em;
  text-wrap: pretty;
}

.eyebrow {
  font-family: var(--font-body);
  font-weight: 700;
  font-size: var(--fs-label);
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--virayo-blue);
}

p { margin: 0; line-height: var(--lh-relaxed); text-wrap: pretty; }
.p-lead { font-size: 20px; line-height: 1.5; color: var(--fg-2); }

small, .label { font-size: var(--fs-label); color: var(--fg-3); }
code, .mono { font-family: var(--font-mono); font-size: 0.94em; }

a { color: var(--link); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1.5px; }
a:hover { color: var(--link-hover); }

::selection { background: var(--virayo-yellow); color: var(--virayo-ink); }
