/* Additions for the production site on top of the demo design system. */

/* Router: six tiles */
.router__grid--6{ grid-template-columns:repeat(3,1fr); }
@media(max-width:980px){ .router__grid--6{ grid-template-columns:repeat(2,1fr); } }
@media(max-width:560px){ .router__grid--6{ grid-template-columns:1fr; } }

/* Schedule cards */
.schedgrid{ display:grid; grid-template-columns:repeat(2,1fr); gap:22px; margin-top:42px; align-items:start; }
@media(max-width:900px){ .schedgrid{ grid-template-columns:minmax(0,1fr); } }
.sched{ padding:26px 26px; }
.tbl--sched td b{ font-family:var(--display); font-weight:700; color:var(--ink); }
.tbl--sched a{ font-weight:600; white-space:nowrap; }
/* Phones: tighter card and cells, and the "confirm date" link may wrap, so the table fits a 360 px screen */
@media(max-width:600px){ .sched{ padding:20px 18px; } .tbl--sched td, .tbl--sched th{ padding:12px 10px; } .tbl--sched a{ white-space:normal; } }

/* Nine-state card grid on /service-areas: equal cards, 3 across, one column on phones */
.stategrid{ list-style:none; margin:36px 0 0; padding:0; display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
@media(max-width:920px){ .stategrid{ grid-template-columns:repeat(2,1fr); } }
@media(max-width:600px){ .stategrid{ grid-template-columns:1fr; gap:10px; } }
.stategrid li{ display:flex; }
.stile{ flex:1; display:flex; align-items:flex-start; gap:16px; background:#fff; border:1px solid var(--line);
  border-radius:var(--r); padding:18px; color:var(--ink); text-decoration:none; transition:.18s; }
.stile:hover, .stile:focus-visible{ border-color:var(--ink); transform:translateY(-2px); box-shadow:var(--shadow-sm); }
.stile__abbr{ flex:none; width:52px; height:52px; border-radius:10px; background:var(--paper-2); display:grid; place-items:center;
  font-family:var(--display); font-weight:900; font-size:20px; letter-spacing:-.02em; color:var(--ink); }
.stile__body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
.stile__body b{ font-family:var(--display); font-weight:700; font-size:17px; line-height:1.2; }
.stile__mode{ font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--slate); }
.stile__note{ font-size:13.5px; line-height:1.45; color:var(--slate); margin-top:4px; }
.stile > svg{ flex:none; margin-top:4px; color:var(--slate); transition:.16s; }
.stile:hover > svg{ transform:translateX(3px); color:var(--ink); }
.stile--home{ background:var(--ink); border-color:var(--ink); color:#fff; }
.stile--home .stile__abbr{ background:var(--hivis); color:var(--ink); }
.stile--home .stile__mode{ color:var(--hivis); }
.stile--home .stile__note, .stile--home > svg{ color:#9AA3B0; }
.stile--home:hover > svg{ color:#fff; }

/* State list on /service-areas */
.statelist{ columns:4; column-gap:28px; margin-top:26px; padding:0; list-style:none; }
.statelist li{ break-inside:avoid; padding:6px 0; border-bottom:1px solid var(--line); font-size:15px; }
.statelist li a{ color:var(--ink-2); }
.statelist li a:hover{ color:var(--steel); }
@media(max-width:900px){ .statelist{ columns:3; } }
@media(max-width:600px){ .statelist{ columns:2; } }

/* Course listing sections */
.course-group{ margin-top:52px; }
.course-group:first-of-type{ margin-top:36px; }
.course-group h3{ font-size:24px; }
.course-group .coursegrid{ margin-top:22px; }
.chip--verify{ background:var(--verify-soft); color:var(--verify); }

/* Prose blocks (course details, policies, blog) */
.prose{ max-width:72ch; font-size:16.5px; }
.prose h2{ font-size:26px; margin:38px 0 12px; }
.prose h3{ font-size:20px; margin:28px 0 10px; }
.prose ul, .prose ol{ padding-left:22px; color:var(--ink-2); }
.prose li{ margin-bottom:6px; }
.prose img{ border-radius:var(--r); margin:22px 0; }
.prose blockquote{ border-left:4px solid var(--hivis); margin:22px 0; padding:6px 0 6px 18px; color:var(--slate); }
.prose a{ text-decoration:underline; text-underline-offset:3px; }

/* Course detail two-column */
.detail{ display:grid; grid-template-columns:1.5fr .9fr; gap:48px; align-items:start; }
@media(max-width:900px){ .detail{ grid-template-columns:1fr; } }

/* Blog */
.post-head{ max-width:760px; }
.post-head h1{ font-size:clamp(30px,4.2vw,46px); }
.post-meta{ font-family:var(--mono); font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--slate); margin-top:14px; }
.post-hero{ aspect-ratio:16/9; border-radius:var(--r-lg); overflow:hidden; margin:34px 0; background:var(--paper-2); }
.post-hero img{ width:100%; height:100%; object-fit:cover; }
.tagrow{ display:flex; gap:8px; flex-wrap:wrap; margin-top:34px; }
.tagrow a{ font-family:var(--mono); font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; background:#fff; border:1px solid var(--line); border-radius:99px; padding:6px 12px; color:var(--slate); }
.tagrow a:hover{ border-color:var(--ink); color:var(--ink); }
.newsgrid--all{ margin-top:36px; }
.ncard__img--empty{ background:linear-gradient(135deg,var(--ink) 0%,var(--ink-3) 100%); display:flex; align-items:center; justify-content:center; color:var(--hivis); }

/* Team */
.founder{ display:grid; grid-template-columns:.8fr 1.2fr; gap:48px; align-items:start; margin-top:42px; }
@media(max-width:860px){ .founder{ grid-template-columns:1fr; } }
.founder__card{ background:var(--ink); color:#fff; border-radius:var(--r-xl); padding:34px; }
.founder__card b{ display:block; font-family:var(--display); font-size:26px; }
.founder__card span{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--hivis); }
.founder__card p{ color:#B7BEC9; font-size:14.5px; margin-top:14px; }

/* Misc */
.lede-row{ display:flex; justify-content:space-between; align-items:flex-end; gap:24px; flex-wrap:wrap; }
.note{ font-size:13.5px; color:var(--slate); }
.stack{ display:grid; gap:14px; }
.kv{ display:flex; justify-content:space-between; gap:14px; padding:10px 0; border-bottom:1px solid var(--line); font-size:15px; }
.kv:last-child{ border-bottom:none; }
.kv b{ color:var(--ink); }
.kv span{ color:var(--slate); text-align:right; }
.section--paper2{ background:var(--paper-2); }
.tile-cta{ margin-top:22px; }
.err404{ text-align:center; padding:80px 24px; }
.err404 h1{ font-size:clamp(40px,8vw,96px); color:var(--hivis); }

/* Evening-class announcement bar (until 9 Nov 2026) */
.evbar{ background:var(--ink, #16181C); font-size:15px; line-height:1.4; display:grid; overflow:hidden; }
/* All items sit in one grid cell, so the bar is as tall as the tallest item and never jumps. */
.evbar__item{ grid-area:1/1; display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:8px 14px; padding:10px 16px;
  color:#fff; text-decoration:none; text-align:center; opacity:0; visibility:hidden; transform:translateY(8px);
  transition:opacity .45s ease, transform .45s ease, visibility 0s .45s; }
.evbar__item.is-on{ opacity:1; visibility:visible; transform:none; transition:opacity .45s ease, transform .45s ease, visibility 0s; }
.evbar__new{ background:var(--hivis, #FFB200); color:#16181C; font-weight:700; font-size:12px; letter-spacing:.08em; padding:3px 8px; border-radius:4px; }
.evbar__cta{ color:var(--hivis, #FFB200); font-weight:600; white-space:nowrap; }
.evbar__item:hover .evbar__cta{ text-decoration:underline; }
@media (prefers-reduced-motion:reduce){ .evbar__item, .evbar__item.is-on{ transition:none; transform:none; } }
/* Phones: one text block instead of three wrapped rows (chip, text, link), so the bar stays at two lines. */
@media (max-width:600px){ .evbar{ font-size:14px; line-height:1.35; }
  .evbar__item{ display:block; padding:8px 14px; }
  .evbar__new{ font-size:10.5px; padding:2px 6px; margin-right:6px; vertical-align:1px; }
  .evbar__cta{ margin-left:6px; } }

/* Evening classes and town pages */
.evfacts{ display:grid; grid-template-columns:auto 1fr; gap:10px 18px; margin:0; }
.evfacts dt{ font-weight:600; color:var(--hivis, #FFB200); }
.evfacts dd{ margin:0; }
.evtable{ width:100%; border-collapse:collapse; font-size:16px; }
.evtable td{ padding:14px 10px; border-bottom:1px solid var(--line, #E5E2D9); vertical-align:top; }
.evtable td:first-child{ font-weight:600; white-space:nowrap; width:30%; }
.evtowns{ display:flex; flex-wrap:wrap; gap:10px; list-style:none; padding:0; margin:18px 0 0; }
.evtowns a{ display:inline-block; padding:8px 14px; border:1px solid var(--line, #E5E2D9); border-radius:999px; text-decoration:none; background:#fff; }
.evtowns a:hover{ border-color:var(--hivis, #FFB200); }
.thanks{ max-width:640px; margin:0 auto; text-align:center; padding-top:40px; padding-bottom:40px; }
.thanks .section-title{ margin-left:auto; margin-right:auto; }

/* ---------- Bob launcher (KB/92 D-090; built by site.js once the HighLevel widget loads) ---------- */
/* Hide HighLevel's stock bubble until site.js has skinned it; after 8 s site.js adds .bob-stock and the stock widget shows. */
chat-widget:not([data-mcw-skin]){ opacity:0; pointer-events:none; }
.bob-stock chat-widget{ opacity:1; pointer-events:auto; }
.bobl{ position:fixed; right:20px; bottom:20px; z-index:61; display:flex; align-items:center; gap:10px;
  padding:7px 18px 7px 7px; border:0; border-radius:99px; cursor:pointer; font:inherit; text-align:left;
  background:#16181C; color:#fff; box-shadow:0 12px 32px rgba(20,22,26,.30), 0 0 0 3px var(--hivis, #FFB200);
  animation:bobl-drop .7s cubic-bezier(.3,1.5,.6,1) both; }
.bobl:hover{ transform:translateY(-2px); }
.bobl:focus-visible{ outline:3px solid #fff; outline-offset:3px; }
.bobl__hook{ position:relative; width:46px; height:46px; flex:none; border-radius:99px; overflow:hidden;
  background:var(--hivis, #FFB200); color:#16181C; display:flex; justify-content:center; }
.bobl__hook svg{ transform-origin:60% 0; animation:bobl-swing 5s ease-in-out 1s infinite; margin:2px 0 0 4px; }
.bobl__txt{ display:flex; flex-direction:column; line-height:1.15; }
.bobl__txt b{ font-family:'Archivo', sans-serif; font-weight:800; font-size:17px; letter-spacing:.01em; }
.bobl__txt small{ font-size:12px; color:var(--hivis, #FFB200); font-weight:600; }
.bobl__txt small::before{ content:''; display:inline-block; width:7px; height:7px; border-radius:99px;
  background:#3DDC84; margin-right:6px; vertical-align:1px; box-shadow:0 0 0 3px rgba(61,220,132,.25); }
.bobl__x{ display:none; font-size:30px; line-height:1; width:46px; text-align:center; }
.bobl.is-open{ padding:7px; }
.bobl.is-open .bobl__hook, .bobl.is-open .bobl__txt{ display:none; }
.bobl.is-open .bobl__x{ display:block; height:46px; line-height:44px; }
@keyframes bobl-drop{ from{ transform:translateY(-120px); opacity:0; } to{ transform:none; opacity:1; } }
@keyframes bobl-swing{ 0%,60%,100%{ transform:rotate(0); } 68%{ transform:rotate(14deg); } 76%{ transform:rotate(-10deg); }
  84%{ transform:rotate(6deg); } 92%{ transform:rotate(-3deg); } }
@media (prefers-reduced-motion:reduce){ .bobl, .bobl__hook svg{ animation:none; } }
/* Phones: the call button moves left so Bob keeps the right-hand corner; full-screen chat hides both. */
@media (max-width:980px){ .has-bob .fab{ right:auto; left:18px; } }
@media (max-width:600px){ .bobl{ right:14px; bottom:14px; } .has-bob .fab{ left:14px; bottom:14px; }
  .bob-open .bobl, .bob-open .fab{ display:none; } }
/* Home page on phones and tablets: while the hero's own buttons (courses, call) are on screen, the floating call button
   and Bob launcher stay tucked below the screen edge, so they never cover them. `translate` is used because the
   launcher's drop-in animation holds `transform` and `opacity`. */
@media (max-width:980px){ .fab, .bobl{ transition:translate .3s ease, visibility 0s; }
  .hero-cta-in .fab, .hero-cta-in:not(.bob-open) .bobl{ translate:0 calc(100% + 40px); visibility:hidden; pointer-events:none;
    transition:translate .3s ease, visibility 0s .3s; }
  .hero-cta-init .fab, .hero-cta-init .bobl{ transition:none !important; } }

/* Contact page: Bob card (opens the chat; /faq if the widget has not loaded) */
.bobcard{ display:flex; gap:18px; align-items:flex-start; margin-bottom:22px; padding:22px 22px 20px; border-radius:var(--r, 12px);
  background:var(--hivis, #FFB200); color:#16181C; text-decoration:none; position:relative; overflow:hidden;
  box-shadow:0 14px 36px rgba(0,0,0,.28); transition:transform .15s; }
.bobcard::after{ content:''; position:absolute; left:0; right:0; bottom:0; height:6px;
  background:repeating-linear-gradient(-45deg, #16181C 0 10px, var(--hivis, #FFB200) 10px 20px); }
.bobcard:hover{ transform:translateY(-2px); }
.bobcard__hook{ flex:none; width:62px; height:62px; border-radius:99px; background:#16181C; color:var(--hivis, #FFB200);
  display:flex; justify-content:center; overflow:hidden; }
.bobcard__hook svg{ margin:4px 0 0 6px; transform-origin:60% 0; animation:bobl-swing 5s ease-in-out .5s infinite; }
.bobcard__body{ display:flex; flex-direction:column; gap:6px; }
.bobcard__tag{ font-family:'IBM Plex Mono', monospace; font-size:11.5px; letter-spacing:.12em; text-transform:uppercase; font-weight:600; }
.bobcard b{ font-family:'Archivo', sans-serif; font-weight:800; font-size:24px; line-height:1.1; }
.bobcard__body > span:not([class]){ font-size:15px; line-height:1.5; }
.bobcard__cta{ display:inline-flex; align-self:flex-start; align-items:center; gap:6px; margin-top:6px; padding:8px 16px;
  border-radius:99px; background:#16181C; color:#fff; font-weight:600; font-size:14px; }
@media (prefers-reduced-motion:reduce){ .bobcard__hook svg{ animation:none; } }

/* Employer logo band (PartnerLogos.astro): two rows drifting in opposite directions, edge to edge.
   Tiles use margin, not gap, so sliding the track by -50% lands exactly on the next copy. */
.logoband{ margin-top:38px; display:flex; flex-direction:column; gap:20px; overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
  mask-image:linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); }
.logoband__track{ display:flex; width:max-content; margin:0; padding:0; list-style:none;
  animation:logoband var(--dur, 110s) linear infinite; }
.logoband__row--rev .logoband__track{ animation-direction:reverse; }
.logoband:hover .logoband__track{ animation-play-state:paused; }
.logoband__tile{ --s:1; flex:none; width:268px; height:144px; margin-right:20px; display:flex; align-items:center; justify-content:center;
  background:#fff; border:1px solid var(--line); border-radius:14px;
  box-shadow:0 1px 0 rgba(22,24,28,.04), 0 12px 26px -20px rgba(22,24,28,.35); }
.logoband__tile img{ width:calc(var(--w) * var(--s)); height:auto; display:block; }
.logoband__word{ font-family:var(--display); font-weight:800; font-size:24px; line-height:1.05; letter-spacing:-.01em;
  text-transform:uppercase; color:var(--ink-2); text-align:center; max-width:200px; text-wrap:balance; }
@keyframes logoband{ to{ transform:translateX(-50%); } }
@media (max-width:640px){
  .logoband{ margin-top:28px; gap:12px; }
  .logoband__tile{ --s:.62; width:164px; height:94px; margin-right:12px; border-radius:12px; }
  .logoband__word{ font-size:16px; max-width:132px; }
}
@media (prefers-reduced-motion:reduce){
  .logoband{ -webkit-mask-image:none; mask-image:none; padding:0 32px; max-width:var(--maxw); margin-left:auto; margin-right:auto; }
  .logoband__track{ animation:none; width:auto; flex-wrap:wrap; justify-content:center; row-gap:20px; }
  .logoband__dup{ display:none; }
}

/* ---------- Waving flags in the nav (D-096, 27 Oct 2026) ----------
   One beside the logo, one after Enroll Now. They replace the side rails of D-094/D-095.
   12 slices of /assets/img/us-flag.svg, each lagging the last, make the ripple. */
.wflag{ --w:34px; --h:calc(var(--w) / 1.9); display:inline-flex; flex:none; width:var(--w); height:var(--h);
  border-radius:1px; filter:drop-shadow(0 1px 1px rgba(22,24,28,.25)); }
.wflag i{ flex:1; height:100%; background:url(/assets/img/us-flag.svg) no-repeat;
  background-size:var(--w) var(--h); background-position:calc(var(--i) * var(--w) / -12) 0;
  animation:wflag 1.8s ease-in-out infinite; animation-delay:calc(var(--i) * -.13s); }
@keyframes wflag{
  0%,100%{ transform:translateY(-1.4px); filter:brightness(1.08); }
  50%{ transform:translateY(1.4px); filter:brightness(.82); }
}
.wflag--l{ margin-right:-12px; }  /* nav gap is 24px; sit closer to the logo */
@media(max-width:1180px){ .wflag--r{ display:none; } }
@media(min-width:1081px) and (max-width:1110px){ .wflag--l{ display:none; } }  /* menu links need the room just above the 1080 cut */
@media(max-width:480px){ .wflag{ display:none; } }  /* no room beside the logo and menu button on phones */
/* Phones: logo, Enroll button and menu button need 348 px; with 32 px gutters the menu button ran 10 px off a 360 px screen */
@media(max-width:480px){ .nav__in{ padding:0 20px; gap:12px; } .nav__cta{ margin-left:0; } }
@media (prefers-reduced-motion:reduce){ .wflag i{ animation:none; } }

/* Employer tile in "Which best describes you?" — amber so crews stand out (D-095). */
.rcard--hot{ background:var(--hivis); border-color:var(--hivis); }
.rcard--hot:hover{ border-color:var(--ink); }
.rcard--hot .rcard__ic{ background:var(--ink); color:var(--hivis); }
.rcard--hot p{ color:#3d3205; }
/* Make room for the two nav flags: links were 12px each side, 10px keeps all seven in view at 1180+. */
.nav__links a{ padding-left:10px; padding-right:10px; }
@media(max-width:1180px){ .nav__links a{ padding-left:8px; padding-right:8px; } }

/* ---------- After-hours band on /company-classes (D-097, 27 Oct 2026) ---------- */
.ahband{ background:var(--hivis); color:var(--ink); position:relative; padding:44px 0 40px; }
.ahband::before{ content:""; position:absolute; left:0; right:0; top:0; height:8px;
  background:repeating-linear-gradient(-45deg, var(--ink) 0 10px, var(--hivis) 10px 20px); }
.ahband__in{ display:flex; align-items:center; justify-content:space-between; gap:32px; }
.ahband__eyebrow{ display:inline-flex; align-items:center; gap:7px; font-family:var(--mono); font-size:12px; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; }
.ahband h2{ font-size:clamp(26px,3.2vw,40px); line-height:1.08; letter-spacing:-.02em; margin:10px 0 12px; color:var(--ink); }
.ahband p{ max-width:640px; font-size:17px; line-height:1.55; color:#3d3205; margin:0; }
.ahband__chips{ list-style:none; padding:0; margin:18px 0 0; display:flex; flex-wrap:wrap; gap:8px; }
.ahband__chips li{ background:var(--ink); color:var(--hivis); font-family:var(--mono); font-size:11.5px; font-weight:600;
  letter-spacing:.08em; text-transform:uppercase; padding:6px 11px; border-radius:99px; }
.ahband__cta{ display:flex; flex-direction:column; gap:10px; flex:none; }
@media(max-width:860px){ .ahband__in{ flex-direction:column; align-items:flex-start; } .ahband__cta{ flex-direction:row; flex-wrap:wrap; } }
/* Key words for employers (D-097a): white on the dark hero, a highlighter stroke on the amber band. */
.phero__lead strong{ color:#fff; font-weight:600; }
.phero__lead mark{ background:none; color:var(--hivis); font-weight:600; }
.ahband p strong{ color:var(--ink); font-weight:700; background:linear-gradient(transparent 58%, rgba(255,255,255,.55) 58%); padding:0 2px; }

/* ---------- Google review cards (27 Oct 2026): one real quote per part of the school ---------- */
.rvgrid{ list-style:none; margin:40px 0 0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.rvcard{ background:#fff; border:1px solid var(--line); border-top:4px solid var(--hivis); border-radius:var(--r-lg);
  padding:22px 24px 20px; box-shadow:var(--shadow-sm); display:flex; flex-direction:column; gap:14px; }
.rvcard__top{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.rvcard__tag{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink);
  background:rgba(255,178,0,.18); border-radius:999px; padding:5px 10px; white-space:nowrap; }
.rvcard__stars{ color:var(--hivis); font-size:14px; letter-spacing:2px; white-space:nowrap; }
.rvcard p{ margin:0; font-size:15.5px; line-height:1.6; color:var(--ink-2); flex:1; }
.rvcard p mark{ background:linear-gradient(transparent 60%, rgba(255,178,0,.45) 60%); color:var(--ink); font-weight:600; padding:0 1px; }
.rvcard__by{ display:flex; align-items:center; gap:12px; border-top:1px solid var(--line); padding-top:12px; }
.rvcard__coin{ flex:0 0 44px; width:44px; height:44px; border-radius:50%; object-fit:cover; box-shadow:0 0 0 2px #fff, 0 0 0 3.5px var(--hivis);
  display:grid; place-items:center; background:var(--ink); color:var(--hivis); font-weight:800; font-size:18px; line-height:1; }
.rvcard__who{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.rvcard__who b{ font-size:15px; color:var(--ink); }
.rvcard__who span{ font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:#8a92a0; }
@media (max-width:980px){ .rvgrid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:640px){
  .rvgrid{ display:flex; overflow-x:auto; scroll-snap-type:x mandatory; gap:14px; margin:28px -16px 0; padding:0 16px 10px; scrollbar-width:none; }
  .rvgrid::-webkit-scrollbar{ display:none; }
  .rvcard{ flex:0 0 84%; scroll-snap-align:center; }
}

/* Why Miller band on the light palette, key phrases highlighted, stats as cards (27 Oct 2026) */
.missionband{ background:var(--paper-2); color:var(--ink); }
.missionband .eyebrow{ color:var(--hivis-deep); }
.missionband h2{ color:var(--ink); }
.missionband .section-lead{ color:var(--ink-3); }
.missionband .section-lead mark{ background:linear-gradient(transparent 58%, rgba(255,178,0,.5) 58%); color:var(--ink); font-weight:600; padding:0 1px; }
.missionband .statgrid{ gap:16px; margin-top:40px; }
.missionband .statgrid > div{ background:#fff; border-top:4px solid var(--hivis); border-radius:8px; padding:22px 20px 20px; box-shadow:0 1px 0 rgba(22,24,28,.06); }
.missionband .stat__num{ color:var(--ink); }
.missionband .statgrid .stat__lab{ color:var(--slate); }
.missionband .stat__lab b{ color:var(--ink); font-weight:700; }

/* ---------- Crane Watch map (D-100, 27 Oct 2026): build-time SVG of FAA counts, no company names ---------- */
.cwatch__asof{ font-family:var(--mono); font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--slate); margin:18px 0 0; }
.cwatch__note{ font-size:14px; line-height:1.6; color:var(--ink-3); margin-top:18px; max-width:80ch; }
.cwstrip{ background:#fff; }
.cwstrip__in{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:48px; align-items:center; }
.cwstrip h2 mark{ background:linear-gradient(transparent 58%, rgba(255,178,0,.5) 58%); color:var(--ink); padding:0 2px; }
.cwstrip .section-lead b{ color:var(--ink); }
.cwstrip .btn{ margin-top:24px; }
.cwstrip__map{ display:block; background:var(--paper); border:1px solid var(--line); border-radius:var(--r-lg, 14px); padding:14px; transition:border-color .2s; }
.cwstrip__map:hover{ border-color:var(--hivis); }
.cwstrip__map img, .cwfull__map img{ display:block; width:100%; height:auto; }
.cwfull{ margin-top:36px; scroll-margin-top:96px; }
.cwfull__head{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:8px 24px; }
.cwfull__head .cwatch__asof{ margin:0; }
.cwfull__total{ display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; }
.cwfull__total b{ font-family:var(--display, inherit); font-size:clamp(40px,6vw,64px); line-height:1; color:var(--ink);
  background:linear-gradient(transparent 62%, rgba(255,178,0,.5) 62%); padding:0 4px; }
.cwfull__total span{ font-size:18px; font-weight:600; color:var(--ink-3); }
.cwfull__map{ margin:20px 0 0; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg, 14px); padding:16px; }
.cwfull__map figcaption{ font-size:13px; color:var(--slate); margin-top:10px; }
.cwstates{ list-style:none; margin:20px 0 0; padding:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.cwstates li{ background:#fff; border:1px solid var(--line); border-top:4px solid var(--hivis); border-radius:8px; padding:14px 16px;
  display:grid; grid-template-columns:auto 1fr; grid-template-areas:"code num" "name d"; gap:2px 10px; align-items:baseline; }
.cwstates__code{ grid-area:code; font-family:var(--mono); font-size:12px; font-weight:700; letter-spacing:.1em; color:var(--hivis-deep); }
.cwstates b{ grid-area:num; justify-self:end; font-size:26px; line-height:1.1; color:var(--ink); }
.cwstates__name{ grid-area:name; font-size:14px; color:var(--slate); }
.cwstates__d{ grid-area:d; justify-self:end; font-family:var(--mono); font-size:11.5px; }
.cwstates__d.is-up{ color:#1F7A3A; } .cwstates__d.is-down{ color:var(--slate); }
@media (max-width:900px){ .cwstrip__in{ grid-template-columns:1fr; gap:28px; } }
@media (max-width:640px){ .cwstates{ grid-template-columns:repeat(2,minmax(0,1fr)); } .cwfull__map, .cwstrip__map{ padding:8px; } .cwstates b{ font-size:22px; } }

/* Video (30 Oct 2026, staging): hero loop, tappable video cards, the shared player dialog. */
.hero__photo{ position:relative; }
.hero__video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity .8s ease; }
.hero__video.is-on{ opacity:1; }
.vcard{ position:relative; display:block; width:100%; aspect-ratio:9/16; padding:0; border:0; border-radius:var(--r-lg); overflow:hidden;
  background:#0F1115; cursor:pointer; text-align:left; box-shadow:var(--shadow-lg); color:#fff; font:inherit; }
.vcard--wide{ aspect-ratio:16/9; }
.vcard__img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.vcard::after{ content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(15,17,21,0) 45%, rgba(15,17,21,.88) 100%); }
.vcard:hover .vcard__img{ transform:scale(1.04); }
.vcard:focus-visible{ outline:3px solid var(--hivis); outline-offset:3px; }
.vcard__play{ position:absolute; z-index:1; left:50%; top:50%; width:64px; height:64px; margin:-32px 0 0 -32px; border-radius:99px;
  background:var(--hivis); color:var(--ink); display:flex; align-items:center; justify-content:center; box-shadow:0 10px 30px rgba(0,0,0,.35);
  transition:transform .2s ease; }
.vcard__play svg{ margin-left:3px; }
.vcard:hover .vcard__play{ transform:scale(1.08); }
.vcard__meta{ position:absolute; z-index:1; left:16px; right:16px; bottom:14px; display:flex; flex-direction:column; gap:4px; }
.vcard__meta b{ font-family:var(--display); font-weight:800; font-size:17px; line-height:1.2; color:#fff; }
.vcard__meta span{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--hivis); }
.vstrip__tools{ display:flex; align-items:center; gap:10px; }
.vstrip__nav{ width:48px; height:48px; border-radius:99px; border:1px solid var(--line); background:#fff; color:var(--ink);
  display:flex; align-items:center; justify-content:center; cursor:pointer; transition:background .2s, color .2s, opacity .2s; }
.vstrip__nav[data-roll="-1"] svg{ transform:rotate(180deg); }
.vstrip__nav:hover:not(:disabled), .vstrip__nav:focus-visible{ background:var(--hivis); border-color:var(--hivis); }
.vstrip__nav:disabled{ opacity:.35; cursor:default; }
.vstrip__roll{ display:flex; gap:20px; margin-top:34px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth;
  scrollbar-width:none; padding-bottom:4px; }
.vstrip__roll::-webkit-scrollbar{ display:none; }
.vstrip__roll .vcard{ flex:0 0 clamp(210px, 22vw, 270px); scroll-snap-align:start; box-shadow:0 10px 26px rgba(20,22,26,.14); }
@media(max-width:760px){
  .vstrip__nav{ display:none; }
  .vstrip__roll{ gap:14px; margin-right:-20px; padding-right:20px; }
  .vstrip__roll .vcard{ flex-basis:62%; }
}
.vfeat__grid{ display:grid; grid-template-columns:minmax(0,300px) minmax(0,1fr); gap:56px; align-items:center; }
.vfeat__grid--wide{ grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); }
.vfeat .section-lead{ font-size:18px; }
@media(max-width:820px){ .vfeat__grid, .vfeat__grid--wide{ grid-template-columns:1fr; gap:28px; } .vfeat__grid .vcard--short{ max-width:300px; } }
.vdlg{ border:0; padding:0; background:transparent; max-width:none; max-height:none; width:100%; height:100%; }
.vdlg::backdrop{ background:rgba(10,11,13,.86); }
.vdlg__box{ position:relative; margin:auto; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; padding:20px; box-sizing:border-box; }
.vdlg__stage{ width:min(420px, 92vw, calc((100vh - 150px) * 9 / 16)); aspect-ratio:9/16; background:#000; border-radius:16px; overflow:hidden; }
.vdlg--wide .vdlg__stage{ width:min(1100px, 94vw, calc((100vh - 150px) * 16 / 9)); aspect-ratio:16/9; }
.vdlg__stage video, .vdlg__stage iframe{ width:100%; height:100%; border:0; display:block; background:#000; }
.vdlg__bar{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; justify-content:center; text-align:center; }
.vdlg__title{ font-family:var(--display); font-weight:800; font-size:17px; color:#fff; }
.vdlg__x{ position:absolute; top:14px; right:16px; width:48px; height:48px; border:0; border-radius:99px; background:rgba(255,255,255,.12);
  color:#fff; font-size:30px; line-height:1; cursor:pointer; }
.vdlg__x:hover, .vdlg__x:focus-visible{ background:var(--hivis); color:var(--ink); }
.vstrip__nav[hidden]{ display:none; }
