/* ============================================
   AARON GROVE — SITE STYLESHEET
   Shared across all pages. Each page sets a
   theme class on <body> (theme-home / theme-journey /
   theme-accomplishments) which drives the palette;
   the hero photo is set per-page too, since each
   theme is derived from its own header image.
   ============================================ */

:root{
  --bg: #14130F;
  --surface: #1C1A15;
  --surface-2: #221F19;
  --line: #34302A;
  --text: #ECE6D8;
  --muted: #8A8375;
  --accent: #7FC46B;
  --tally: #E8A33D;
}

/* ---- Per-page themes ---- */
body.theme-home{
  --bg: #071627; --surface: #0C2138; --surface-2: #112A46; --line: #1E3A57;
  --text: #EDEAE0; --muted: #94ABBF; --accent: #7C9A5E; --tally: #D8BE86;
}
body.theme-journey{
  --bg: #081C24; --surface: #0F2A32; --surface-2: #15343D; --line: #3D6672;
  --text: #EAF2F0; --muted: #8FB4BE; --accent: #4FB8C9; --tally: #D9C9A3;
}
body.theme-accomplishments{
  --bg: #17120E; --surface: #221A14; --surface-2: #2A2018; --line: #3B2C22;
  --text: #F0E6D8; --muted: #B3A08C; --accent: #E07A3E; --tally: #C9A876;
}
body.theme-experience{
  --bg: #0E1F1C; --surface: #16302B; --surface-2: #1C3A33; --line: #40695E;
  --text: #EAF2ED; --muted: #8FB8AC; --accent: #5BB894; --tally: #D9C48A;
}
body.theme-articles{
  --bg: #071A1A; --surface: #0D2626; --surface-2: #123030; --line: #1F3D3D;
  --text: #E9F1F0; --muted: #82A3A3; --accent: #4C9FC0; --tally: #D98C74;
}
body.theme-reel{
  --bg: #0A1214; --surface: #141D20; --surface-2: #1A2528; --line: #2B3A3E;
  --text: #EDEEEA; --muted: #8C9598; --accent: #B8C4C9; --tally: #D9CBA3;
}

*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Source Serif 4', serif;
  line-height:1.65;
}
a{ color:inherit; text-decoration:none; }
.wrap{ max-width:900px; margin:0 auto; padding:0 32px; }
.wrap-wide{ max-width:1080px; margin:0 auto; padding:0 32px; }

h1,h2,h3{ font-family:'Oswald', sans-serif; font-weight:600; margin:0; color:var(--text); }

.eyebrow{
  font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:0.14em;
  text-transform:uppercase; color:var(--accent); display:flex; align-items:center; gap:8px;
}
.eyebrow::before{ content:""; width:6px; height:6px; background:var(--accent); border-radius:1px; display:inline-block; }

/* Hero eyebrows sit directly on a photo, so they need a solid badge rather than
   colored text alone — colored text alone was unreadable against busy image content. */
.hero .eyebrow{
  display:inline-flex; background:var(--accent); color:#fff;
  padding:6px 14px; border-radius:3px; width:fit-content;
}
.hero .eyebrow::before{ content:none; }
/* Selected Work's accent is a pale steel tone — white text on it is unreadable,
   so it gets dark text on its light badge instead. */
body.theme-reel .hero .eyebrow{ color:var(--bg); }

/* ---- NAV ---- */
nav{
  position:sticky; top:0; z-index:10;
  background:rgba(0,0,0,0.55);
  backdrop-filter: blur(6px);
  border-bottom:1px solid var(--line);
}
nav .wrap-wide{ display:flex; align-items:center; justify-content:space-between; padding:18px 32px; }
.logo-link{
  font-family:'Oswald', sans-serif; font-weight:600; font-size:16px;
  letter-spacing:0.08em; text-transform:uppercase; transition:opacity .15s ease;
}
.logo-link:hover{ opacity:.75; }
.logo-link span{ color:var(--accent); }
.navlinks{
  font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:0.05em;
  text-transform:uppercase; display:flex; gap:28px;
}
.navlinks a{ color:var(--muted); border-bottom:1px solid transparent; padding-bottom:2px; }
.navlinks a:hover{ color:var(--text); border-color:var(--accent); }
.navlinks a.current{ color:var(--accent); border-color:var(--accent); }

/* ---- Mobile nav (hamburger) ---- */
.nav-toggle{
  display:none; background:none; border:none; color:var(--text);
  font-size:22px; line-height:1; cursor:pointer; padding:4px 6px;
}
@media (max-width: 860px){
  .nav-toggle{ display:block; }
  .navlinks{
    display:none; position:absolute; top:100%; left:0; right:0;
    flex-direction:column; gap:0; background:var(--bg); border-bottom:1px solid var(--line);
    padding:8px 32px 16px;
  }
  .navlinks a{ padding:12px 0; border-bottom:1px solid var(--line); }
  .navlinks a:last-child{ border-bottom:none; }
  nav.nav-open .navlinks{ display:flex; }
}

/* ---- Slim header strip (used on individual article pages instead of a full hero —
   just a thin band of the theme photo, no gradient fade, then the standard divider line) ---- */
.article-strip{
  height:88px;
  background-size:cover;
  background-position:center 50%;
  background-clip:padding-box;
}

/* ---- HERO (background-image set FULLY per-page in each page's own <style> block —
   deliberately not composed via custom properties here, since that composition
   is what broke rendering last time. Each page owns its complete gradient + image.) ---- */
.hero{
  position:relative; padding:100px 0 64px;
  background-size:cover; background-position:center 55%; background-clip:padding-box;
}
/* Dedicated divider placed directly after each hero in the HTML — a plain solid
   block, not a border-on-top-of-an-image, so it renders exactly like every other
   divider on the page (chapter-nav, role dividers) instead of fighting the photo. */
.frame-line{ height:1px; background:var(--line); }
.hero .wrap-wide h1{
  font-size:44px; line-height:1.15; max-width:760px; margin:16px 0 14px;
  text-shadow:0 2px 24px rgba(0,0,0,0.75), 0 1px 3px rgba(0,0,0,0.9);
}
.hero .sub{
  font-style:italic; color:var(--muted); font-size:17px; max-width:560px; margin:0;
  text-shadow:0 1px 12px rgba(0,0,0,0.8);
}
/* Homepage hero is slightly taller/larger type */
body.theme-home .hero{ padding:120px 0 96px; }
body.theme-home .hero h1{ font-size:56px; margin:22px 0 26px; }
body.theme-home .hero .sub{ font-size:19px; margin-bottom:36px; }

.cta-row{ display:flex; gap:16px; flex-wrap:wrap; }
.cta{
  font-family:'IBM Plex Mono', monospace; font-size:13px; text-transform:uppercase;
  letter-spacing:0.05em; padding:12px 20px; border:1.5px solid rgba(255,255,255,0.55); border-radius:2px;
  color:var(--text); transition:border-color .15s ease, color .15s ease, background .15s ease; display:inline-block;
}
.cta:hover{ border-color:var(--accent); background:var(--accent); color:var(--bg); }
.cta.primary{ background:var(--accent); color:var(--bg); border-color:var(--accent); font-weight:500; }
.cta.primary:hover{ opacity:.88; color:var(--bg); }
.photo-credit{
  font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:0.05em;
  color:var(--muted); margin-top:52px; text-transform:uppercase; opacity:.7;
}

/* ---- GENERIC SECTION HEADER ---- */
.sec-head{ margin-bottom:44px; }
.sec-head h2{ font-size:32px; margin-top:14px; }
.sec-head p.note{ color:var(--muted); font-size:15.5px; margin-top:12px; max-width:640px; font-style:italic; }
.sec-head .more{
  font-family:'IBM Plex Mono', monospace; font-size:13px; color:var(--muted); margin-top:14px;
  display:inline-block; border-bottom:1px solid var(--line);
}
.sec-head .more:hover{ color:var(--accent); border-color:var(--accent); }

section{ padding:88px 0; border-bottom:1px solid var(--line); }
section:last-of-type{ border-bottom:none; }
section.block{ padding:72px 0; border-bottom:1px solid var(--line); }
section.block:last-of-type{ border-bottom:none; }

/* ============================================
   HOMEPAGE-SPECIFIC
   ============================================ */
.scrubber{ position:relative; padding:20px 0 8px; }
.track{ position:relative; height:2px; background:var(--line); }
.track .fill{ position:absolute; left:0; top:0; height:2px; width:100%; background:linear-gradient(90deg, var(--accent), transparent); opacity:.35; }
.nodes{ display:flex; justify-content:space-between; position:relative; top:-1px; }
.node{ position:relative; width:1px; }
.node .dot{ width:11px; height:11px; background:var(--bg); border:2px solid var(--accent); border-radius:50%; position:absolute; top:-5px; left:-5.5px; }
.chapters{ display:grid; grid-template-columns:repeat(6, 1fr); gap:18px; margin-top:34px; }
.chapter-card{ background:var(--surface); border:1px solid var(--line); border-radius:3px; padding:16px 14px; transition:border-color .15s ease, transform .15s ease; }
.chapter-card:hover{ border-color:var(--accent); transform:translateY(-2px); }
.chapter-card .tc{ font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--tally); letter-spacing:0.04em; display:block; margin-bottom:8px; }
.chapter-card p{ font-size:13.5px; color:var(--muted); margin:0; line-height:1.5; }
.chapter-card p b{ color:var(--text); font-weight:600; font-style:normal; }

.studios-line{ color:var(--muted); font-style:italic; margin-bottom:30px; }
.studio-row{ display:flex; flex-wrap:wrap; gap:0; border-top:1px solid var(--line); }
.studio{
  flex:1 1 auto; padding:22px 20px; border-right:1px solid var(--line); border-bottom:1px solid var(--line);
  font-family:'Oswald', sans-serif; font-size:15px; letter-spacing:0.02em; color:var(--muted);
  transition:color .15s ease, background .15s ease; min-width:150px;
}
.studio:hover{ color:var(--accent); background:var(--surface); }
.studio:last-child{ border-right:none; }

.rec-grid{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.rec-card{ background:var(--surface); border:1px solid var(--line); border-radius:3px; padding:26px 24px; }
.rec-card .tag{ font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--tally); text-transform:uppercase; letter-spacing:0.06em; }
.rec-card h3{ font-size:19px; margin:10px 0 8px; }
.rec-card p{ font-size:14px; color:var(--muted); margin:0; }

.notes-grid{ display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.note{ background:var(--surface); border:1px solid var(--line); border-radius:3px; padding:26px; }
.note h3{ font-size:20px; margin-bottom:10px; }
.note p{ font-size:14.5px; color:var(--muted); margin:0 0 14px; }
.note .read{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--accent); }

.reel-line{ color:var(--muted); font-style:italic; margin-bottom:26px; }
.filmstrip{ display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:2px; border-top:2px dashed var(--line); border-bottom:2px dashed var(--line); padding:18px 0; }
.frame{ display:block; background:var(--surface); border:1px solid var(--line); padding:20px 16px; font-family:'IBM Plex Mono', monospace; font-size:12.5px; color:var(--muted); }
.frame b{ color:var(--text); font-family:'Oswald', sans-serif; font-size:14px; display:block; margin-bottom:6px; font-weight:500; }
.frame:hover{ color:var(--accent); border-color:var(--accent); }
.frame:hover b{ color:var(--accent); }

/* ============================================
   JOURNEY-SPECIFIC
   ============================================ */
.chapter-nav{ display:flex; flex-wrap:wrap; gap:10px; padding:20px 0; border-bottom:1px solid var(--line); background:var(--surface); }
.chapter-nav-inner{ display:flex; flex-wrap:wrap; gap:10px; }
.chapter-nav a{ font-family:'IBM Plex Mono', monospace; font-size:12px; white-space:nowrap; padding:8px 14px; border:1px solid var(--line); border-radius:20px; color:var(--muted); }
.chapter-nav a:hover{ color:var(--accent); border-color:var(--accent); }

article{ padding:72px 0; }
.chapter{ padding-bottom:56px; margin-bottom:56px; border-bottom:1px solid var(--line); }
.chapter:last-child{ border-bottom:none; margin-bottom:0; }
.chapter-head{ margin-bottom:24px; }
.chapter-head .tc{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--tally); letter-spacing:0.06em; display:block; margin-bottom:8px; }
.chapter-head h2{ font-size:28px; }
.chapter p{ font-size:17px; color:var(--text); margin:0 0 20px; }
.chapter p a{ color:var(--accent); text-decoration:underline; text-underline-offset:2px; }
.chapter p a:hover{ color:var(--text); }
.chapter p.muted-note{ color:var(--muted); font-size:15px; font-style:italic; }

.pullquote{ font-style:italic; font-size:21px; line-height:1.5; color:var(--text); border-left:2px solid var(--accent); padding:4px 0 4px 22px; margin:30px 0; }

.video-chip{
  display:inline-flex; align-items:center; gap:8px; font-family:'IBM Plex Mono', monospace; font-size:12px;
  color:var(--accent); border:1px solid var(--line); border-radius:20px; padding:7px 14px; margin:4px 0 22px;
}
.video-chip:hover{ border-color:var(--accent); }

.media-slot{ border:1px dashed var(--line); border-radius:4px; padding:40px 20px; text-align:center; margin:8px 0 28px; background:var(--surface); }
.media-slot .ms-label{ font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--tally); }
.media-slot .ms-sub{ font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--muted); margin-top:6px; opacity:.7; }

.chapter ul{ margin:0 0 20px; padding-left:22px; color:var(--text); font-size:16.5px; }
.chapter ul li{ margin-bottom:8px; }

/* ============================================
   ACCOMPLISHMENTS-SPECIFIC
   ============================================ */
.card-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:20px; }
.badge-card{
  background:#F5EFE4; border-radius:6px; padding:26px 22px; display:flex; flex-direction:column;
  align-items:center; text-align:center; border:1px solid var(--line);
}
.badge-card img{ max-height:110px; max-width:100%; object-fit:contain; margin-bottom:18px; }
.badge-card .badge-title{ font-family:'Oswald', sans-serif; font-weight:600; font-size:16px; color:#1C140D; margin-bottom:4px; }
.badge-card .badge-sub{ font-family:'IBM Plex Mono', monospace; font-size:11.5px; color:#6B5C48; text-transform:uppercase; letter-spacing:0.04em; }
.badge-card.small img{ max-height:70px; }

.cred-note{ font-size:16px; color:var(--muted); max-width:700px; margin-top:32px; }

.edu-row{ display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:24px; }
.edu-item{ display:flex; gap:18px; align-items:flex-start; background:var(--surface); border:1px solid var(--line); border-radius:6px; padding:24px; }
.edu-logo{ background:#F5EFE4; border-radius:6px; padding:10px; flex:0 0 64px; height:64px; display:flex; align-items:center; justify-content:center; }
.edu-logo img{ max-width:44px; max-height:44px; object-fit:contain; }
.edu-text h3{ font-size:17px; margin-bottom:6px; }
.edu-text p{ font-size:14px; color:var(--muted); margin:0; }

/* ============================================
   EXPERIENCE-SPECIFIC
   ============================================ */
.role{ padding-bottom:52px; margin-bottom:52px; border-bottom:1px solid var(--line); }
.role:last-child{ border-bottom:none; margin-bottom:0; }
.role-head{ display:flex; flex-wrap:wrap; align-items:baseline; gap:10px 16px; margin-bottom:6px; }
.role-head h2{ font-size:26px; }
.role-title{ font-family:'Oswald', sans-serif; font-size:16px; color:var(--accent); font-weight:500; }
.role-meta{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--tally); letter-spacing:0.05em; margin-bottom:20px; display:block; }
.role p{ font-size:16.5px; color:var(--text); margin:0 0 18px; }
.role ul{ margin:0 0 18px; padding-left:22px; color:var(--text); font-size:16px; }
.role ul li{ margin-bottom:8px; }

.sub-role{ margin-top:22px; padding-top:22px; border-top:1px dashed var(--line); }
.sub-role .role-title{ font-size:15px; }

.tag-row{ display:flex; flex-wrap:wrap; gap:8px; margin:6px 0 20px; }
.tag-chip{
  font-family:'IBM Plex Mono', monospace; font-size:11.5px; color:var(--muted);
  border:1px solid var(--line); border-radius:20px; padding:5px 12px;
}

/* ============================================
   ARTICLES-SPECIFIC
   ============================================ */
.article-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); gap:24px; }
.article-card{
  background:var(--surface); border:1px solid var(--line); border-radius:6px;
  padding:28px 26px; display:flex; flex-direction:column; transition:border-color .15s ease, transform .15s ease;
}
.article-card:hover{ border-color:var(--accent); transform:translateY(-2px); }
.article-card .tag{ font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--tally); text-transform:uppercase; letter-spacing:0.06em; margin-bottom:12px; }
.article-card h3{ font-size:21px; margin-bottom:10px; }
.article-card p{ font-size:14.5px; color:var(--muted); margin:0 0 18px; flex-grow:1; }
.article-card .read{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--accent); }

.article-title-block{ margin-bottom:8px; }
.back-link{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--muted); display:inline-block; margin-bottom:24px; }
.back-link:hover{ color:var(--accent); }
.article-body p{ font-size:17px; color:var(--text); margin:0 0 20px; }
.article-body h2{ font-size:22px; margin:40px 0 18px; }

/* ============================================
   REEL-SPECIFIC
   ============================================ */
.video-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:20px; }
.video-card{
  background:var(--surface); border:1px solid var(--line); border-radius:6px; padding:24px;
  transition:border-color .15s ease, transform .15s ease; display:block;
}
.video-card:hover{ border-color:var(--accent); transform:translateY(-2px); }
.video-card .vc-year{ font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--tally); text-transform:uppercase; letter-spacing:0.06em; }
.video-card h3{ font-size:18px; margin:10px 0 12px; }
.video-card .vc-play{ font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--accent); }

.project-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:16px; }
.project-card{
  background:var(--surface); border:1px solid var(--line); border-radius:6px; padding:18px 20px;
  transition:border-color .15s ease;
}
.project-card:hover{ border-color:var(--accent); }
.project-card h3{ font-family:'Oswald', sans-serif; font-size:16px; font-weight:500; margin-bottom:10px; color:var(--text); }

/* ---- FOOTER ---- */
/* ---- Video popup modal (used by .video-chip / .video-card links instead of navigating to Vimeo) ---- */
.video-modal-overlay{
  display:none; position:fixed; inset:0; background:rgba(0,0,0,0.85);
  z-index:200; align-items:center; justify-content:center; padding:48px 20px 20px;
}
.video-modal-overlay.open{ display:flex; }
.video-modal-box{ position:relative; width:100%; max-width:900px; aspect-ratio:16/9; background:#000; }
.video-modal-box iframe{ width:100%; height:100%; border:0; display:block; }
.video-modal-close{
  position:absolute; top:-40px; right:0; background:none; border:none; color:#fff;
  font-size:26px; line-height:1; cursor:pointer; padding:6px 10px;
}
.video-modal-close:hover{ color:var(--accent); }

footer{ padding:64px 0 40px; border-top:1px solid var(--line); }
.pullquote-final{ font-style:italic; font-size:24px; line-height:1.5; max-width:700px; color:var(--text); border-left:2px solid var(--accent); padding-left:24px; margin-bottom:44px; }
.foot-row{ display:flex; justify-content:space-between; align-items:center; font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--muted); }
.foot-row a{ color:var(--muted); margin-left:18px; }
.foot-row a:hover{ color:var(--accent); }

@media (max-width: 860px){
  .hero .wrap-wide h1{ font-size:30px; }
  body.theme-home .hero h1{ font-size:36px; }
  .chapters{ grid-template-columns:1fr 1fr; }
  .studio-row{ flex-direction:column; }
  .studio{ border-right:none; }
  .rec-grid, .notes-grid{ grid-template-columns:1fr; }
}
