/* ==========================================================================
   CMAS 2026 microsite — karangdivers.com/cmas/
   Palette: main-site navy · GOLD accent · white type
   Mobile-first. British English throughout.
   ========================================================================== */

:root {
  /* Palette — aligned to karangdivers.com main site (2026-07-06)
     Navy base + coral highlight from main site; lime kept as CMAS event accent only. */
  --ocean-deep: #0d1b3e;   /* main-site --ocean-deep + --bg-deep */
  --ocean-mid:  #1a3a8f;   /* main-site --ocean-mid */
  --aqua:       #5b9bd5;   /* main-site --aqua */
  --sky:        #8ec5ff;   /* lighter link blue for dark backgrounds (Batch 8) */
  --coral:      #e05c44;   /* main-site --coral — reserved, currently unused */
  /* Accent — main-site GOLD system (replaces lime, 2026-07-06) */
  --gold-deep:  #c9a84c;   /* main-site deep gold (borders, gradient start) */
  --gold-light: #f0d080;   /* main-site light gold (highlight text, gradient end) */
  --gold-ink:   #0a2540;   /* main-site text colour ON gold */
  --lime:       #f0d080;   /* repointed → gold-light so existing var(--lime) marks render gold */
  --lime-soft:  #e8d070;
  --white:      #ffffff;
  --sand:       #eef2f8;   /* main-site --sand */
  --cream:      #eef2f8;   /* alias — kept for existing rules using --cream */
  --text-dark:  #0d1b3e;   /* main-site --text-dark */
  --text-mid:   #3a5080;   /* main-site --text-mid */
  --text-soft:  rgba(255,255,255,0.85);
  --border:     rgba(255,255,255,0.14);

  /* Font stack — matches main site */
  --font-display: 'Playfair Display', Georgia, serif;
  --font-body:    'DM Sans', system-ui, -apple-system, "Segoe UI", sans-serif;

  /* Type scale (rem based, mobile-first) */
  --step-0: 0.95rem;
  --step-1: 1.05rem;
  --step-2: 1.25rem;
  --step-3: 1.75rem;
  --step-4: 2.4rem;
  --step-5: 3.2rem;
  --step-6: 4.6rem;

  /* Rhythm */
  --gutter: 20px;
  --section-y: 56px;
  --radius: 10px;
}

/* Reset */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--step-0);
  line-height: 1.55;
  color: var(--text-dark);
  background: var(--sand);
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, .section-title, .hero-title, .page-hero h1 { font-family: var(--font-display); font-weight: 700; }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
button { font: inherit; cursor: pointer; }

/* Utility */
.container { width: 100%; max-width: 1140px; margin: 0 auto; padding: 0 var(--gutter); }
.eyebrow {
  display: inline-block;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--lime);
}
.eyebrow--dark { color: var(--ocean-mid); }
.section-title {
  font-size: var(--step-3);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -0.01em;
  margin: 8px 0 24px;
}
.rule-lime {
  display: block;
  width: 56px;
  height: 3px;
  background: linear-gradient(90deg, var(--gold-deep), var(--gold-light));
  border: 0;
  margin: 16px 0 24px;
}
.text-mono {
  font-variant-numeric: tabular-nums;
  font-family: "SF Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;
}

/* ==========================================================================
   TOP BAR — brand + main-site link + hamburger
   ========================================================================== */
.topbar {
  background: rgba(26,58,143,0.96);       /* main-site header — --ocean-mid at ~96% */
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: var(--white);
  position: sticky;
  top: 0;
  z-index: 40;
  border-bottom: 1px solid var(--border);
}
.topbar-inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
  min-height: 60px;
  padding: 8px 0;
}
.brand {
  display: flex; align-items: center; gap: 10px;
  text-decoration: none; color: var(--white);
  min-width: 0;              /* allow children to shrink instead of overflowing */
  flex: 1 1 auto;
}
.brand-logo {
  height: 38px; width: 38px;
  object-fit: contain;
  background: var(--white);
  border-radius: 50%;
  padding: 3px;
  flex-shrink: 0;
}
.brand-logo-possi {
  /* Identical box to .brand-logo so the two logos match 1:1.
     object-fit:contain letterboxes ANY source aspect into the square
     without distortion — no source pixel dimensions needed. */
  height: 38px; width: 38px;
  object-fit: contain;
  background: var(--white);
  border-radius: 50%;
  padding: 3px;
  flex-shrink: 0;
}
@media (min-width: 900px) {
  .brand-logo { height: 44px; width: 44px; padding: 3px; }
  .brand-logo-possi { height: 44px; width: 44px; padding: 3px; }
}
.brand-mark {
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.22em;
  text-transform: uppercase; white-space: nowrap;
  padding: 4px 10px; border: 1px solid var(--lime); color: var(--lime);
  border-radius: 3px; flex-shrink: 0;
}
.brand-word {
  font-size: 0.95rem; font-weight: 700; letter-spacing: 0.04em;
  white-space: nowrap;               /* never wrap to multiple lines */
  overflow: hidden; text-overflow: ellipsis; min-width: 0;
}
/* Below 480px: drop the tagline, keep round logo + CMAS 2026 badge on one tidy row */
@media (max-width: 480px) {
  .brand-word { display: none; }
  /* Both logos stay visible; step down so both + badge + hamburger sit on one row */
  .brand-logo { height: 32px; width: 32px; }
  .brand-logo-possi { height: 32px; width: 32px; }
  .brand { gap: 8px; }
  .brand-mark { font-size: 0.62rem; letter-spacing: 0.14em; padding: 3px 7px; }
  .topbar-inner { gap: 8px; }
}
@media (max-width: 360px) {
  /* Extra-narrow: one more step so nothing wraps or clips */
  .brand-logo { height: 28px; width: 28px; }
  .brand-logo-possi { height: 28px; width: 28px; }
  .brand-mark { font-size: 0.58rem; letter-spacing: 0.1em; padding: 2px 6px; }
  .brand { gap: 6px; }
}
.nav-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; min-width: 44px;
  background: transparent; border: 0; color: var(--white);
  flex-shrink: 0;
}
.nav-toggle svg { width: 26px; height: 26px; }

/* Main nav */
.mainnav {
  background: var(--ocean-deep);
  color: var(--white);
  border-bottom: 1px solid var(--border);
}
.mainnav-inner { display: none; }
.mainnav-list {
  list-style: none; margin: 0; padding: 0;
  display: flex; gap: 4px; flex-wrap: wrap;
}
.mainnav-list a {
  display: inline-block; padding: 12px 14px;
  text-decoration: none;
  color: var(--white);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  border-bottom: 2px solid transparent;
  transition: color .15s ease, border-color .15s ease;
}
.mainnav-list a:hover,
.mainnav-list a.active {
  color: var(--lime);
  border-bottom-color: var(--lime);
}
.mainnav-list .has-dropdown { position: relative; }
.mainnav-list .dropdown {
  position: absolute; top: 100%; left: 0;
  min-width: 240px;
  list-style: none; margin: 0; padding: 8px 0;
  background: var(--ocean-mid);
  border: 1px solid var(--border);
  border-top: 0;
  display: none;
  z-index: 30;
}
.mainnav-list .dropdown a {
  display: block; padding: 10px 16px;
  text-transform: none; letter-spacing: 0.02em; font-size: 0.85rem;
  border-bottom: 0;
}
.mainnav-list .dropdown a:hover { background: rgba(255,255,255,0.06); color: var(--lime); }
.mainnav-list .has-dropdown:hover .dropdown,
.mainnav-list .has-dropdown:focus-within .dropdown { display: block; }
.dropdown-toggle::after {
  content: " ▾";
  font-size: 0.7em;
  opacity: 0.7;
  margin-left: 4px;
}

/* Mobile menu (drawer) */
.mobilenav {
  display: none;
  background: var(--ocean-deep);
  padding: 8px 0 16px;
  border-bottom: 1px solid var(--border);
}
.mobilenav.open { display: block; }
.mobilenav a,
.mobilenav .mobile-group-label {
  display: block;
  padding: 12px var(--gutter);
  text-decoration: none;
  color: var(--white);
  font-size: 0.95rem;
  font-weight: 600;
  border-bottom: 1px solid var(--border);
}
.mobilenav .mobile-sub a {
  padding-left: calc(var(--gutter) + 20px);
  font-weight: 500;
  color: var(--text-soft);
  background: rgba(0,0,0,0.15);
}
.mobile-group-label {
  color: var(--lime);
  text-transform: uppercase;
  font-size: 0.72rem;
  letter-spacing: 0.22em;
  padding-top: 18px;
  border-bottom: 0;
}

@media (min-width: 900px) {
  .nav-toggle { display: none; }
  .mainnav-inner { display: block; padding: 0; }
  .mobilenav { display: none !important; }
}

/* ==========================================================================
   HERO
   ========================================================================== */
.hero {
  background:
    radial-gradient(140% 90% at 12% 0%, rgba(22,160,133,0.32), transparent 55%),
    linear-gradient(160deg, var(--ocean-deep) 0%, var(--ocean-mid) 55%, var(--ocean-mid) 100%);
  color: var(--white);
  padding: 48px 0 56px;
  overflow: hidden;
}
.hero-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  align-items: center;
}
.hero-title {
  font-size: var(--step-4);
  line-height: 1.05;
  font-weight: 900;
  letter-spacing: -0.02em;
  margin: 16px 0 4px;
  text-transform: uppercase;
}
.hero-title .accent { color: var(--lime); display: block; }
.hero-sub {
  font-size: var(--step-1);
  font-weight: 500;
  color: var(--text-soft);
  margin: 12px 0 0;
}
.hero-when {
  display: inline-block;
  margin-top: 20px;
  padding: 8px 14px;
  border: 1px solid var(--lime);
  color: var(--lime);
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.hero-quick {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin: 28px 0 0;
}
.hero-quick a {
  display: inline-block;
  padding: 10px 16px;
  background: rgba(255,255,255,0.08);
  border: 1px solid var(--border);
  color: var(--white);
  text-decoration: none;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  transition: background .15s ease, border-color .15s ease;
}
.hero-quick a:hover {
  background: var(--lime);
  color: var(--ocean-deep);
  border-color: var(--lime);
}
.hero-poster {
  justify-self: center;
  max-width: 340px;
}
.hero-poster img {
  border-radius: 6px;
  box-shadow: 0 20px 48px rgba(0,0,0,0.35);
  border: 1px solid var(--border);
}

@media (min-width: 800px) {
  .hero { padding: 72px 0 88px; }
  .hero-grid { grid-template-columns: 1.35fr 1fr; gap: 48px; }
  .hero-title { font-size: var(--step-5); }
  .hero-poster { max-width: 420px; justify-self: end; }
}

/* ==========================================================================
   COUNTDOWN — the signature element
   ========================================================================== */
.countdown {
  background: var(--ocean-deep);
  color: var(--white);
  padding: 40px 0;
  border-top: 3px solid var(--lime);
  border-bottom: 1px solid var(--border);
}
.countdown-label {
  text-align: center;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--lime);
  margin-bottom: 20px;
}
.countdown-target {
  text-align: center;
  font-size: 0.85rem;
  color: var(--text-soft);
  margin-top: 20px;
  letter-spacing: 0.02em;
}
.countdown-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  max-width: 720px;
  margin: 0 auto;
}
.countdown-cell {
  text-align: center;
  padding: 16px 4px;
}
.countdown-num {
  font-size: clamp(2.4rem, 8vw, 4.4rem);
  font-weight: 900;
  line-height: 1;
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
  font-family: "SF Mono", ui-monospace, Consolas, monospace;
  color: var(--white);
}
.countdown-unit {
  display: block;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--text-soft);
  margin-top: 8px;
}
.countdown-cell.seconds .countdown-num { color: var(--lime); }
.countdown.finished .countdown-num { color: var(--lime); font-size: clamp(1.6rem, 5vw, 2.2rem); }

/* ==========================================================================
   UPDATES BANNER
   ========================================================================== */
.updates {
  background: var(--lime);
  color: var(--ocean-deep);
  padding: 12px 0;
  font-size: 0.85rem;
  font-weight: 600;
}
.updates-inner {
  display: flex; align-items: center; gap: 12px;
}
.updates-tag {
  flex-shrink: 0;
  font-size: 0.7rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 800;
  padding: 4px 10px;
  background: var(--ocean-deep);
  color: var(--lime);
  border-radius: 3px;
}
.updates-message a { color: var(--ocean-deep); }
.updates-empty { opacity: 0.65; font-weight: 500; }

/* ==========================================================================
   SECTIONS (default light bg)
   ========================================================================== */
.section {
  padding: var(--section-y) 0;
  background: var(--cream);
}
.section--dark {
  background: var(--ocean-deep);
  color: var(--white);
}
.section--dark .section-title { color: var(--white); }
.section--dark .eyebrow { color: var(--lime); }
/* --sand and --cream are BOTH #eef2f8, so .section and .section--sand rendered identically
   and adjacent light sections merged into one block (26 pairs across 12 pages).
   The --sand TOKEN is deliberately NOT edited: it is also body{background}, .news-card-img
   and .tba-block — changing it would repaint the page canvas and two card fills. So the step
   is applied HERE, on the section only.
   #e4eaf3 = 7.5% darker than --cream #eef2f8 (step ratio 1.077) — a visible band edge, not a
   colour change; well inside the #d8e2f0 floor. Contrast on the new background all still pass:
   --text-dark 13.96:1 · --text-mid (eyebrow FIX 15 + card-num FIX 22) 6.58:1 · --ocean-mid
   links 8.49:1 · white cards 1.21:1 vs the old 1.12:1 (cards are MORE distinct, not less).
   Minted value — the palette has no --sand-dark/--tint to reuse. */
.section--sand { background: #e4eaf3; }

/* ==========================================================================
   NEWS CARDS
   ========================================================================== */
.news-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
}
@media (min-width: 720px) {
  .news-grid { grid-template-columns: repeat(3, 1fr); }
}
.news-card {
  background: var(--white);
  border: 1px solid rgba(10,29,53,0.08);
  border-radius: var(--radius);
  overflow: hidden;
  display: block;
  text-decoration: none;
  color: var(--text-dark);
  transition: transform .15s ease, box-shadow .15s ease;
}
.news-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 32px rgba(10,29,53,0.12);
}
.news-card-img {
  width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: var(--sand);
}
.news-card-body { padding: 16px 18px 20px; }
.news-card-date {
  font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text-mid); font-weight: 700;
}
.news-card-title {
  font-size: 1.05rem; font-weight: 800;
  line-height: 1.25; margin: 6px 0 8px;
}
.news-card-excerpt { font-size: 0.88rem; color: var(--text-mid); margin: 0; }
.news-empty {
  padding: 32px; text-align: center; color: var(--text-mid);
  background: var(--white); border-radius: var(--radius);
  border: 1px dashed rgba(10,29,53,0.14);
}

/* ==========================================================================
   FACTS STRIP
   ========================================================================== */
.facts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: rgba(255,255,255,0.14);
  border-radius: var(--radius);
  overflow: hidden;
}
@media (min-width: 720px) {
  .facts { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1000px) {
  /* auto-fit: fills the row for BOTH the 4-tile home and the 6-tile event-overview.
     A fixed count leaves empty cells on whichever page doesn't match it. */
  .facts { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
}
.fact {
  padding: 20px 18px;
  background: var(--ocean-deep);
}
.fact-key {
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--lime);
  margin-bottom: 6px;
}
.fact-val {
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.3;
  color: var(--white);
}
.fact-val a { color: var(--white); text-decoration: underline; text-decoration-color: var(--lime); }

/* ==========================================================================
   MEDAL TABLE
   ========================================================================== */
.medal-wrap { overflow-x: auto; }
.medal-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--white);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: 0 1px 4px rgba(10,29,53,0.06);
  font-size: 0.92rem;
}
.medal-table th, .medal-table td {
  padding: 12px 14px;
  text-align: left;
  border-bottom: 1px solid rgba(10,29,53,0.08);
}
.medal-table td {
  color: var(--text-dark);   /* explicit — table sits in a section--dark, don't inherit white */
}
.medal-table th {
  background: var(--ocean-deep);
  color: var(--white);
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 700;
}
.medal-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.medal-table tr:last-child td { border-bottom: 0; }
.medal-empty {
  background: var(--white);
  border-radius: var(--radius);
  padding: 40px 20px;
  text-align: center;
  color: var(--text-mid);
  font-size: 0.95rem;
}
.medal-empty strong { color: var(--text-dark); font-size: 1.1rem; display: block; margin-bottom: 6px; }

/* ==========================================================================
   SPONSORS
   ========================================================================== */
.sponsor-group { margin-bottom: 32px; }
.sponsor-group:last-child { margin-bottom: 0; }
.sponsor-cat {
  font-size: 0.72rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 800;
  color: var(--ocean-mid);
  margin: 0 0 14px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--gold-deep);
}
.sponsor-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 14px;
}
.sponsor-item {
  background: var(--white);
  border: 1px solid rgba(10,29,53,0.08);
  border-radius: var(--radius);
  padding: 20px 16px;
  text-align: center;
  font-weight: 700;
  color: var(--text-dark);
  font-size: 0.95rem;
}
.sponsor-placeholder {
  padding: 32px 20px; text-align: center; color: var(--text-mid);
  background: var(--white); border-radius: var(--radius);
  border: 1px dashed rgba(10,29,53,0.14);
}

/* ==========================================================================
   FOOTER
   ========================================================================== */
.footer {
  background: #071e35;
  color: var(--text-soft);
  padding: 48px 0 24px;
  font-size: 0.85rem;
}
.footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
}
@media (min-width: 720px) {
  .footer-grid { grid-template-columns: 2fr 1fr 1fr; }
}
.footer h4 {
  font-size: 0.72rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--lime);
  margin: 0 0 12px;
  font-weight: 800;
}
/* footer link colour set in Batch 6 block */
.footer a:hover { color: var(--lime); text-decoration: underline; }
.footer-links { list-style: none; padding: 0; margin: 0; }
.footer-links li { padding: 4px 0; }
.footer-bottom {
  margin-top: 32px;
  padding-top: 16px;
  border-top: 1px solid rgba(255,255,255,0.1);
  font-size: 0.78rem;
  display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between;
  color: rgba(255,255,255,0.55);
}

/* ==========================================================================
   SUB-PAGE ADDITIONS (Batch 2 — Competition pages)
   Kept small & scoped. Reuses tokens; no palette additions.
   ========================================================================== */

/* Compact page hero for sub-pages */
.page-hero {
  background:
    radial-gradient(120% 90% at 90% 10%, rgba(22,160,133,0.28), transparent 60%),
    linear-gradient(150deg, var(--ocean-deep) 0%, var(--ocean-mid) 100%);
  color: var(--white);
  padding: 44px 0 40px;
  border-bottom: 3px solid var(--lime);
}
.page-hero h1 {
  font-size: var(--step-3);
  font-weight: 900;
  letter-spacing: -0.01em;
  line-height: 1.1;
  margin: 8px 0 12px;
  text-transform: none;
}
.page-hero p {
  margin: 0;
  color: var(--text-soft);
  max-width: 60ch;
}
.breadcrumb {
  font-size: 0.75rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-soft);
}
/* breadcrumb link colour set in Batch 6 block */
.breadcrumb a:hover { text-decoration: underline; }
@media (min-width: 800px) {
  .page-hero { padding: 64px 0 60px; }
  .page-hero h1 { font-size: var(--step-4); }
}

/* Numbered card list for categories & similar */
.card-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
}
@media (min-width: 720px) {
  .card-list { grid-template-columns: 1fr 1fr; }
}
.card-item {
  background: var(--white);
  border: 1px solid rgba(10,29,53,0.08);
  border-left: 3px solid var(--lime);
  border-radius: 6px;
  padding: 16px 18px;
}
.card-item .card-num {
  display: inline-block;
  font-size: 0.68rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 800;
  color: var(--ocean-mid);
  margin-bottom: 4px;
}
.card-item h3 {
  margin: 0 0 6px;
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--text-dark);
}
.card-item p {
  margin: 0;
  color: var(--text-mid);
  font-size: 0.9rem;
  line-height: 1.55;
}
.section--dark .card-item {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.14);
  border-left-color: var(--lime);
}
.section--dark .card-item h3 { color: var(--white); }
.section--dark .card-item p { color: var(--text-soft); }

/* "To be announced" callout */
.tba-block {
  background: var(--sand);
  border: 1px dashed rgba(10,29,53,0.24);
  border-radius: var(--radius);
  padding: 22px 24px;
  color: var(--text-mid);
}
.tba-block strong {
  display: block;
  color: var(--text-dark);
  font-size: 1rem;
  margin-bottom: 6px;
}

/* Schedule day + item */
.sched-day {
  background: var(--white);
  border: 1px solid rgba(10,29,53,0.08);
  border-radius: var(--radius);
  padding: 22px 24px;
  margin-bottom: 18px;
}
.sched-day:last-child { margin-bottom: 0; }
.sched-day-head {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px 16px;
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--lime);
}
.sched-day-date {
  font-size: 0.72rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 800;
  color: var(--ocean-mid);
}
.sched-day-title {
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--text-dark);
  margin: 0;
}
.sched-item {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid rgba(10,29,53,0.06);
  font-size: 0.92rem;
}
.sched-item:last-child { border-bottom: 0; }
.sched-time {
  font-weight: 700;
  color: var(--ocean-deep);
  font-variant-numeric: tabular-nums;
}
.sched-what { color: var(--text-mid); }
.sched-what strong { color: var(--text-dark); }
.sched-note {
  margin-top: 10px;
  font-size: 0.82rem;
  color: var(--text-mid);
  font-style: italic;
}

/* Competition-village tile */
.village-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}
@media (min-width: 720px) {
  .village-grid { grid-template-columns: 1fr 1fr; }
}
.village-tile {
  background: var(--white);
  border: 1px solid rgba(10,29,53,0.08);
  border-radius: var(--radius);
  padding: 22px 24px;
}
.village-tile-tag {
  display: inline-block;
  font-size: 0.68rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 800;
  padding: 4px 10px;
  background: var(--ocean-deep);
  color: var(--lime);
  border-radius: 3px;
  margin-bottom: 12px;
}
.village-tile h3 {
  margin: 0 0 8px;
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--text-dark);
}
.village-tile p {
  margin: 0;
  color: var(--text-mid);
  font-size: 0.92rem;
  line-height: 1.55;
}

/* ==========================================================================
   MEDIA PAGE ADDITIONS (Batch 4 — gallery + videos + instagram)
   ========================================================================== */

/* Daily Gallery: uniform tile grid */
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
@media (min-width: 720px) {
  .gallery-grid { grid-template-columns: repeat(4, 1fr); gap: 14px; }
}
.gallery-tile {
  aspect-ratio: 1 / 1;
  background: linear-gradient(135deg, var(--ocean-mid) 0%, var(--ocean-deep) 100%);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  display: flex; align-items: center; justify-content: center;
  color: var(--text-soft);
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 600;
  text-align: center;
  padding: 12px;
  overflow: hidden;
}
.gallery-tile img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}

/* Videos grid — Sheet-fed */
.video-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}
@media (min-width: 720px) {
  .video-grid { grid-template-columns: repeat(3, 1fr); }
}
.video-card {
  background: var(--white);
  border: 1px solid rgba(13,27,62,0.08);
  border-radius: var(--radius);
  overflow: hidden;
  display: block;
  text-decoration: none;
  color: var(--text-dark);
  transition: transform .15s ease, box-shadow .15s ease;
}
.video-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 32px rgba(13,27,62,0.12);
}
.video-thumb {
  width: 100%;
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, var(--ocean-mid), var(--ocean-deep));
  position: relative;
  display: flex; align-items: center; justify-content: center;
}
.video-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.video-thumb::after {
  content: '';
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 48px; height: 48px;
  background: rgba(255,255,255,0.92);
  border-radius: 50%;
  box-shadow: 0 4px 16px rgba(0,0,0,0.3);
}
.video-thumb::before {
  content: '';
  position: absolute; top: 50%; left: 50%;
  transform: translate(-38%, -50%);
  width: 0; height: 0;
  border-left: 14px solid var(--ocean-deep);
  border-top: 9px solid transparent;
  border-bottom: 9px solid transparent;
  z-index: 2;
}
.video-title {
  padding: 14px 16px;
  font-weight: 700;
  font-size: 0.98rem;
  line-height: 1.35;
}

/* Instagram card */
.ig-card {
  background: linear-gradient(135deg, #833AB4 0%, #FD1D1D 45%, #F77737 100%);
  border-radius: var(--radius);
  padding: 28px;
  display: flex; align-items: center; gap: 20px;
  color: var(--white);
  text-decoration: none;
  transition: transform .18s ease, box-shadow .18s ease;
}
.ig-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 40px rgba(131,58,180,0.35);
}
.ig-card-icon {
  flex-shrink: 0;
  width: 56px; height: 56px;
  background: rgba(255,255,255,0.16);
  border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
}
.ig-card-icon svg { width: 32px; height: 32px; }
.ig-card-body h3 {
  margin: 0 0 4px;
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--white);
}
.ig-card-body p { margin: 0; font-size: 0.92rem; opacity: 0.9; }

/* ==========================================================================
   BATCH 5 — visual refinement (accents, contrast, reading width, flags, IG)
   Uses ONLY the main-site palette: navy family + --aqua #5b9bd5 + --coral #e05c44,
   with the main-site gold as the CMAS event accent. Tasteful, on-brand.
   ========================================================================== */

/* ---- CH4: reading width — cap prose measure sitewide ---- */
.section p,
.page-hero p,
.card-item p,
.village-tile p,
.sched-what,
.tba-block {
  max-width: 68ch;
}
/* Prose paragraphs inside dark/sand sections stay capped but headings/hero run wider */
.section-title,
.hero-title,
.page-hero h1 { max-width: none; }

/* ---- CH2: section alternation — add an aqua-tint panel between navy & sand ---- */
.section--tint {
  background: linear-gradient(180deg, #e6eef7 0%, #eef2f8 100%);
  color: var(--text-dark);
}
.section--tint .section-title { color: var(--text-dark); }
.section--tint .eyebrow { color: var(--ocean-mid); }

/* ---- CH2: card definition — light cards get an aqua left-accent + shadow ---- */
.card-item {
  box-shadow: var(--sh-xs, 0 1px 4px rgba(13,27,62,0.07));
  border-left: 3px solid var(--aqua);
}
.card-item h3 { color: var(--ocean-mid); }
/* WCAG: --aqua (#5b9bd5) on a white card = 2.96:1, on a --sand card = 2.63:1 — both below 4.5:1.
   These are the small labels above each card ("Official", "Sertifikasi", "Poin").
   --text-mid #3a5080 = 7.96:1 on white, 7.08:1 on sand — same token FIX 15 gave the eyebrows,
   so both label types stay consistent. NOT --ocean-mid: that is the link colour on light
   sections (.section a) and would make labels and links the same blue.
   Overridden on the SELECTOR, not the --aqua token (--aqua is shared by 8 other rules).
   NOTE: .card-item .card-num is declared TWICE at equal specificity (0,2,0) — l.708 sets
   --ocean-mid but is overridden by this later rule, so l.708's colour is DEAD. Reported, not
   removed, this batch. Colour only; size/weight/tracking untouched.
   .section--dark .card-item .card-num (0,3,0, gold 11.29:1 on navy) is untouched — it PASSES. */
.card-item .card-num { color: var(--text-mid); }

/* Dark-section cards: lift off the navy with a lighter translucent panel + lime edge */
.section--dark .card-item {
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.14);
  border-left: 3px solid var(--lime);
  box-shadow: none;
}
.section--dark .card-item h3 { color: var(--white); }
.section--dark .card-item .card-num { color: var(--lime); }

/* News / video / sponsor cards: subtle border + aqua top-accent on hover */
.news-card, .video-card, .sponsor-item {
  border-top: 3px solid transparent;
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.news-card:hover, .video-card:hover, .sponsor-item:hover {
  border-top-color: var(--aqua);
}

/* Eyebrows: aqua on light sections, lime on dark (secondary accent introduced) */
.eyebrow--dark { color: var(--ocean-mid); }
/* WCAG: --aqua (#5b9bd5) on --sand/--cream (#eef2f8) measures 2.63:1 — below 4.5:1.
   Overridden HERE on the selector, NOT on the --aqua token: --aqua is shared by 9 rules
   (.card-item border, .card-num, card hovers, link colour + underline, .footer a:hover,
   .breadcrumb a) and editing it would repaint all of them.
   --text-mid #3a5080 = 7.08:1. Chosen over --ocean-mid #1a3a8f (9.14:1) because it is the
   LIGHTEST existing blue token that clears 4.5:1 (closest to the old aqua look) AND because
   --ocean-mid is already the link colour on light sections — using it would make eyebrows and
   links the same blue. Only the colour changed; size/weight/tracking/transform untouched.
   Scope: light sections only. .section--dark .eyebrow (--lime, 11.29:1 on navy) is untouched. */
.section .eyebrow--dark { color: var(--text-mid); }

/* (superseded by Batch 6 link-contrast block below) */

/* ---- CH2: one sparing coral CTA treatment (matches main-site button feel) ---- */
.btn-coral {
  display: inline-block;
  padding: 12px 22px;
  background: var(--coral);
  color: var(--white);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 0.04em;
  border-radius: var(--r-m, 12px);
  text-decoration: none;
  transition: background .15s ease, transform .15s ease;
}
.btn-coral:hover { background: #c84f39; transform: translateY(-1px); }

/* ---- CH1: flag-icons rectangle in nation cards ---- */
.nation-flag { line-height: 0; }
.nation-flag .fi {
  font-size: 1.9rem;
  border-radius: 3px;
  box-shadow: 0 1px 3px rgba(13,27,62,0.18);
  display: inline-block;
  vertical-align: middle;
}

/* ---- CH3: constrained Instagram card (not full-bleed) ---- */
.ig-card--contained {
  max-width: 460px;
}

/* ==========================================================================
   BATCH 6 — WhatsApp CTA + sitewide link contrast
   ========================================================================== */

/* WhatsApp button — brand green */
.btn-whatsapp {
  display: inline-block;
  padding: 12px 22px;
  background: #25D366;
  color: var(--white);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 0.04em;
  border-radius: var(--r-m, 12px);
  text-decoration: none;
  transition: background .15s ease, transform .15s ease;
}
.btn-whatsapp:hover { background: #1da851; transform: translateY(-1px); }

/* ---- Sitewide link contrast ----
   DARK/navy sections: aqua links (pop on navy) + aqua underline; hover → lime.
   LIGHT/pale sections: ocean-mid links + underline; hover → aqua.
   Footer + breadcrumb legibility raised. Excludes styled buttons/cards. */

/* LIGHT sections (default prose links) */
.section a:not(.btn-primary):not(.btn-coral):not(.btn-whatsapp):not(.btn-outline):not(.cmas-callout-btn):not(.ig-card):not(.news-card):not(.video-card):not(.sponsor-item) {
  color: var(--ocean-mid);
  text-decoration: underline;
  text-decoration-color: var(--aqua);
  text-underline-offset: 2px;
  transition: color .15s ease;
}
.section a:not(.btn-primary):not(.btn-coral):not(.btn-whatsapp):not(.btn-outline):not(.cmas-callout-btn):not(.ig-card):not(.news-card):not(.video-card):not(.sponsor-item):hover {
  color: var(--aqua);
}

/* DARK sections: aqua links */
.section--dark a:not(.btn-primary):not(.btn-coral):not(.btn-whatsapp):not(.btn-outline):not(.ig-card):not(.news-card):not(.video-card) {
  color: var(--sky);
  text-decoration: underline;
  text-decoration-color: var(--sky);
  text-underline-offset: 2px;
}
/* Links inside cards on dark sections — ensure they also get the light sky-blue */
.section--dark .card-item a:not(.btn-primary):not(.btn-coral):not(.btn-whatsapp):not(.btn-outline),
.section--dark .village-tile a:not(.btn-primary):not(.btn-coral):not(.btn-whatsapp):not(.btn-outline) {
  color: var(--sky);
  text-decoration: underline;
  text-decoration-color: var(--sky);
  text-underline-offset: 2px;
}
.section--dark a:not(.btn-primary):not(.btn-coral):not(.btn-whatsapp):not(.btn-outline):not(.ig-card):not(.news-card):not(.video-card):hover {
  color: var(--lime);
  text-decoration-color: var(--lime);
}

/* TINT sections behave like light */
.section--tint a:not(.btn-primary):not(.btn-coral):not(.btn-whatsapp):not(.ig-card):not(.news-card):not(.video-card):not(.sponsor-item) {
  color: var(--ocean-mid);
  text-decoration: underline;
  text-decoration-color: var(--aqua);
  text-underline-offset: 2px;
}

/* Footer links — raise contrast: white → aqua underline on hover already; make resting state clearly legible */
.footer a { color: rgba(255,255,255,0.92); text-decoration: none; }
.footer a:hover { color: var(--aqua); text-decoration: underline; }

/* Breadcrumb links — aqua (breadcrumb sits on dark page-hero) */
.breadcrumb a { color: var(--aqua); text-decoration: none; }
.breadcrumb a:hover { text-decoration: underline; }

/* Outline button — legible on light sections (sponsors teaser etc.) */
.btn-outline {
  display: inline-block;
  padding: 11px 20px;
  background: transparent;
  color: var(--ocean-mid);
  border: 2px solid var(--ocean-mid);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  border-radius: var(--r-m, 12px);
  text-decoration: none;
  transition: background .15s ease, color .15s ease, transform .15s ease;
}
.btn-outline:hover {
  background: var(--ocean-mid);
  color: var(--white);
  transform: translateY(-1px);
}

/* Content figure — inline image block (about team photo etc.) */
.content-figure {
  margin: 24px 0 0;
  max-width: 100%;
}
.content-figure img {
  width: 100%;
  height: auto;
  border-radius: var(--radius, 12px);
  display: block;
}

/* Participating-nations compact rows (Batch 2026-07-11) */
.nation-rows {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}
@media (min-width: 720px) {
  .nation-rows { grid-template-columns: 1fr 1fr; }
}
.nation-row {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--white);
  border: 1px solid rgba(13,27,62,0.08);
  border-left: 3px solid var(--gold-deep);
  border-radius: 8px;
  padding: 12px 16px;
}
.section--dark .nation-row {
  background: rgba(255,255,255,0.07);
  border-color: rgba(255,255,255,0.14);
  border-left-color: var(--gold-deep);
}
.nation-row-flag { line-height: 0; flex-shrink: 0; }
.nation-row-flag .fi {
  font-size: 1.5rem;
  border-radius: 3px;
  box-shadow: 0 1px 2px rgba(13,27,62,0.2);
}
.nation-row-name {
  font-weight: 700;
  font-size: 1rem;
  color: var(--text-dark);
  flex-shrink: 0;
}
.section--dark .nation-row-name { color: var(--white); }
.nation-row-info {
  margin-left: auto;
  font-size: 0.85rem;
  color: var(--text-mid);
  text-align: right;
}
.section--dark .nation-row-info { color: var(--text-soft); }

/* ==========================================================================
   ORGANISERS BAND (homepage) — Batch 2026-07-11
   ========================================================================== */
.org-band {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  margin-bottom: 24px;
}
.org-card {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.14);
  border-top: 3px solid var(--gold-deep);
  border-radius: var(--radius, 12px);
  padding: 24px 20px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
@media (min-width: 720px) {
  /* Divider alignment. All 3 org cards have the same SIX direct children:
     logo · role · name · sub · desc · person|media. Subgrid shares the band's row
     tracks across all three cards and makes DESC the single 1fr track, so row 6
     (the divider) starts at the SAME Y on every card, in BOTH languages.
       EN desc  POSSI 313 · CMAS 227 · KD 230 (shortest) -> KD divider sat HIGHER
       ID desc  POSSI 330 · CMAS 255 · KD 331 (longest)  -> KD divider sat LOWER
     THIS BLOCK MUST STAY BELOW the base `.org-card { display:flex }` rule above.
     Media queries add NO specificity: both selectors are .org-card (0,1,0), so
     whichever comes LAST wins at every width. Placed earlier, `display:flex` beat
     `display:grid` and the subgrid was inert at all widths.
     The span MUST equal the direct-child count (6), or the last child drops into
     an implicit row and subgrid silently does nothing.
     row-gap is 8px to match the card's own base gap — the band's 20px is
     column-only now that the band owns the row tracks. */
  .org-band {
    grid-template-columns: repeat(3, 1fr);
    column-gap: 20px;
    row-gap: 8px;
    grid-template-rows: auto auto auto auto 1fr auto;
  }
  .org-card {
    display: grid;
    grid-template-rows: subgrid;
    grid-row: span 6;
  }
}
.org-logo {
  margin-bottom: 8px;
  align-self: flex-start;
  background: var(--white);
  border-radius: 8px;
  padding: 8px;
}
.org-role {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold-light);
}
.org-name {
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--white);
  line-height: 1.2;
}
.org-sub {
  font-size: 0.9rem;
  color: var(--text-soft);
}
.org-person {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid rgba(255,255,255,0.12);
}
.org-person-photo {
  width: 120px;
  aspect-ratio: 728 / 1318;   /* true portrait ratio of president.png — no squash */
  height: auto;
  /* FIX 27 — top-align the portrait inside .org-person (which is `align-items: center`).
     Row 6 is a shared subgrid row sized by the TALLEST card: the Karang Divers team photo
     (.org-card-media is a plain block, so its image sits at the row top). .org-person
     stretches to that row height, so `align-items: center` pushed these 217px portraits DOWN
     by (rowContentHeight - 217)/2 ≈ 20px — which is why the KD photo looked ~20px higher.
     align-self overrides align-items for THIS item only: the photo tops out level with the KD
     photo while the adjacent text block stays centred, unchanged.
     At ≤480px .org-person becomes flex-direction: column, so the cross axis is horizontal and
     flex-start = left — already the container's align-items there. Stacked view unaffected. */
  align-self: flex-start;
  border-radius: 10px;
  object-fit: cover;          /* fill the portrait frame cleanly */
  object-position: center top;/* keep the face/upper body in view */
  background: rgba(255,255,255,0.06);
  flex-shrink: 0;
  border: 2px solid var(--gold-deep);
}
@media (max-width: 480px) {
  .org-person { flex-direction: column; align-items: flex-start; text-align: left; }
  .org-person-photo { width: 132px; }
}
.org-person-role {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold-light);
}
.org-person-name {
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--white);
  line-height: 1.3;
}
.org-committee {
  border-top: 1px solid rgba(255,255,255,0.12);
  padding-top: 20px;
}
.org-committee-label {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold-light);
  margin-bottom: 12px;
}
.org-committee-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 6px;
  font-size: 0.95rem;
  color: var(--text-soft);
}
@media (min-width: 640px) {
  .org-committee-list { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
  .org-committee-list { grid-template-columns: repeat(4, 1fr); }
}
.org-committee-list strong { color: var(--white); }

/* President honorifics detail line (Batch 2026-07-12) */
/* Organiser card description + illustrative photo (Batch 2026-07-13) */
.org-desc {
  margin-top: 12px;
  font-size: 0.82rem;
  line-height: 1.55;
  color: var(--text-soft);
  text-align: left;
}
.org-card-photo {
  margin-top: 14px;
  width: 100%;
  height: auto;
  border-radius: var(--radius);
  border: 1px solid rgba(255,255,255,0.12);
  display: block;
}
.org-card-media {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid rgba(255,255,255,0.12);
}
.org-card-media .org-card-photo { margin-top: 0; }
.org-person-detail {
  margin-top: 8px;
  font-size: 0.78rem;
  line-height: 1.45;
  color: var(--text-soft);
}

/* Organising Committee headshots (Batch 2026-07-12) */
.committee-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 18px 14px;
}
@media (min-width: 640px) {
  .committee-grid { grid-template-columns: repeat(4, 1fr); }
}
.committee-member {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 6px;
}
.committee-photo {
  width: 84px;
  height: 84px;
  border-radius: 50%;
  object-fit: cover;
  object-position: center top;
  border: 2px solid var(--gold-deep);
  background: rgba(255,255,255,0.06);
  flex-shrink: 0;
}
.committee-photo--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: 2rem;
  font-weight: 700;
  color: var(--gold-light);
  background: rgba(255,255,255,0.08);
}
.committee-name {
  font-family: var(--font-display);
  font-size: 1rem;
  font-weight: 700;
  color: var(--white);
  line-height: 1.2;
}
.committee-role {
  font-size: 0.8rem;
  color: var(--gold-light);
  letter-spacing: 0.04em;
}
@media (max-width: 380px) {
  .committee-photo, .committee-photo--placeholder { width: 72px; height: 72px; }
}

/* Footer organiser logos row (Batch 2026-07-11) */
.footer-org-logos {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.footer-org-logos img {
  height: 40px;
  width: auto;
  background: var(--white);
  border-radius: 6px;
  padding: 5px 8px;
}

/* Gallery social tiles — 3 equal tiles */
.social-tiles {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
}
@media (min-width: 640px) {
  .social-tiles { grid-template-columns: repeat(3, 1fr); }
}
.social-tile {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 10px;
  padding: 28px 20px;
  background: linear-gradient(135deg, #833AB4 0%, #FD1D1D 45%, #F77737 100%);
  border-radius: var(--radius, 12px);
  color: var(--white);
  text-decoration: none;
  transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}
.social-tile:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 32px rgba(131,58,180,0.3);
}
.social-tile--placeholder {
  background: linear-gradient(135deg, #3a5080 0%, #1a3a8f 100%);
  filter: saturate(0.85);
}
.social-tile-icon {
  width: 48px; height: 48px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,0.16);
  border-radius: 12px;
}
.social-tile-icon svg { width: 28px; height: 28px; }
.social-tile-handle {
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-weight: 700;
}
.social-tile-label {
  font-size: 0.85rem;
  opacity: 0.9;
}

/* Participating-nations team-composition footnote (Batch 2026-07-12) */
.nations-note {
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid rgba(10,29,53,0.1);
  font-size: 0.88rem;
  color: var(--text-mid);
}
/* WCAG: --text-mid (#3a5080) on --ocean-deep (#0d1b3e) measures 2.12:1 — far below 4.5:1,
   which is why this line was near-invisible on participating-nations. Same idiom already
   used by .section--dark .card-item p (l.735) and .section--dark .nation-row-info (l.1201).
   Sits AFTER the base rule; specificity (0,2,0) beats (0,1,0) regardless of order.
   Light-background uses of .nations-note keep --text-mid (7.08:1) and are untouched. */
.section--dark .nations-note { color: var(--text-soft); }

/* Committee member bios — expandable (Batch 2026-07-13) */
.committee-bio {
  margin-top: 8px;
  width: 100%;
  text-align: left;
}
.committee-bio > summary {
  cursor: pointer;
  list-style: none;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold-light);
  text-align: center;
  padding: 4px 0;
}
.committee-bio > summary::-webkit-details-marker { display: none; }
.committee-bio > summary::after {
  content: " ▾";
  font-size: 0.7rem;
}
.committee-bio[open] > summary::after { content: " ▴"; }
.committee-bio > p {
  margin-top: 8px;
  font-size: 0.82rem;
  line-height: 1.55;
  color: var(--text-soft);
  text-align: left;
}
.nowrap-arrow { white-space: nowrap; }

/* Language toggle EN | ID in header (Batch 2026-07-13, ID phase 2) */
.lang-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  flex-shrink: 0;
  margin-right: auto;   /* sit beside the brand; push nav-toggle to the far right */
}
.lang-toggle a,
.lang-toggle .lang-active {
  display: inline-block;
  padding: 12px 6px;      /* 20px line-height + 24px padding = 44px tap target */
  min-height: 44px;
  line-height: 20px;
  box-sizing: border-box;
}
.lang-toggle a {
  color: var(--sky);
  text-decoration: none;
  opacity: 0.85;
}
.lang-toggle a:hover { opacity: 1; text-decoration: underline; }
.lang-toggle .lang-active { color: var(--white); }
.lang-toggle .lang-sep { color: rgba(255,255,255,0.4); }
@media (max-width: 480px) {
  .lang-toggle { font-size: 0.66rem; gap: 4px; }
}
