/* ==========================================================================
   Archivo — self-hosted, variable (weight 100-900, width 62%-125%).
   SIL Open Font License 1.1 — see OFL.txt in this repo. No attribution
   required; the licence text travels with the file.

   Served from this same origin, NOT fonts.googleapis.com: loading Google's
   copy sends every visitor's IP address to Google, which a Munich court
   ruled a GDPR breach in 2022 precisely because self-hosting was available.

   The url() is relative to this stylesheet, so it resolves to the Vercel
   host automatically.
   ========================================================================== */
@font-face{
  font-family:"Archivo";
  font-style:normal;
  font-weight:100 900;
  font-stretch:62% 125%;
  font-display:swap;
  src:url("/fonts/archivo-var.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* ==========================================================================
   Global ADHD Conference 2026 — homepage redesign ("Daylight" / option 2b)
   Loaded by the Code Snippets snippet "GAC 2026 Homepage".
   All selectors are prefixed .gac- and (where global) scoped to body.gac-home
   so nothing leaks onto other pages.
   ========================================================================== */

:root{
  --gac-purple:#7A2384;
  --gac-purple-dark:#4B1257;
  --gac-blue:#2E7CC3;
  --gac-amber:#E58E1A;
  --gac-amber-deep:#B8730B;
  --gac-amber-text:#7A4E00;
  --gac-sun-1:#FFE9B0;
  --gac-sun-2:#FFC24B;
  --gac-sun-3:#F49E2C;
  --gac-ink:#241B2E;
  --gac-ink-2:#3E3448;
  --gac-text:#5C5266;
  --gac-muted:#8A8092;
  --gac-lav:#8A7396;
  --gac-lav-2:#7A6488;
  --gac-lav-3:#9A7FA6;
  --gac-name:#4B4054;
  --gac-page:#FDFCFB;
  --gac-bd-1:#EFE9F1;
  --gac-bd-2:#E7DEEE;
  --gac-bd-3:#EBE2F0;
  --gac-footer:#2C1836;
  --gac-green:#3BA55C;
  --gac-shadow:0 1px 2px rgba(36,27,46,.04);
  --gac-max:1152px;
}

/* --------------------------------------------------------------------------
   1. Global canvas + type (homepage only, plus the site-wide header/footer)
   -------------------------------------------------------------------------- */

body.gac-home,
body.gac-home #page-container,
body.gac-home #et-main-area{ background:var(--gac-page); }

body.gac-home,
body.gac-home #main-content,
body.gac-home .et_pb_text,
body.gac-home .et_pb_button,
.gac-hdr, .gac-hdr *,
.gac-ftr, .gac-ftr *{
  font-family:"Archivo", system-ui, -apple-system, "Segoe UI", sans-serif !important;
}
body.gac-home #main-content{ color:var(--gac-ink); }

/* Divi resets: we control our own spacing, Divi's defaults fight the spec. */
body.gac-home #main-content .et_pb_section{ padding:0; }
body.gac-home #main-content .et_pb_row{
  width:100%; max-width:var(--gac-max); padding:0;
}
body.gac-home #main-content h1,
body.gac-home #main-content h2,
body.gac-home #main-content h3{ padding-bottom:0; }
body.gac-home #main-content p:last-of-type{ padding-bottom:0; }
body.gac-home #main-content a{ text-decoration:none; }

/* Content column: 1152px inside 64px side padding. */
.gac-wrap{
  max-width:var(--gac-max);
  margin:0 auto;
  padding-left:0; padding-right:0;
}
.gac-section{ padding-left:64px; padding-right:64px; }

/* Shared kicker / eyebrow */
.gac-kicker{
  display:inline-flex; align-items:center; gap:12px; flex-wrap:wrap;
  justify-content:center;
  font-size:13px; font-weight:600; letter-spacing:.18em; color:var(--gac-lav);
}
.gac-kicker .gac-sep{ color:var(--gac-amber); }

/* Shared buttons. Apply to a Divi Button module via
   Advanced > CSS Class, and set "Show Button Icon" to No. */
.gac-btn.et_pb_button,
a.gac-btn{
  display:inline-block;
  font-size:17px !important; font-weight:700 !important;
  padding:17px 34px !important;
  border-radius:999px !important;
  border:0 !important;
  line-height:1.2 !important;
  text-decoration:none !important;
  transition:background-color .18s ease, color .18s ease, border-color .18s ease;
}
.gac-btn.et_pb_button:after,
a.gac-btn:after{ display:none !important; content:none !important; }

.gac-btn--primary.et_pb_button,
a.gac-btn--primary{ background:var(--gac-purple) !important; color:#fff !important; }
.gac-btn--primary.et_pb_button:hover,
a.gac-btn--primary:hover{ background:var(--gac-purple-dark) !important; color:#fff !important; }

.gac-btn--ghost.et_pb_button,
a.gac-btn--ghost{
  background:transparent !important;
  border:1.5px solid #D8CCE0 !important;
  color:var(--gac-ink-2) !important;
  font-weight:600 !important;
}
.gac-btn--ghost.et_pb_button:hover,
a.gac-btn--ghost:hover{ border-color:var(--gac-purple) !important; color:var(--gac-purple) !important; }

/* --------------------------------------------------------------------------
   2. Site header (Divi Theme Builder > Global Header)
   Add CSS Class "gac-hdr" to the header SECTION.
   -------------------------------------------------------------------------- */

.gac-hdr.et_pb_section{
  background:#FFFEFE !important;
  border-bottom:1px solid var(--gac-bd-1) !important;
  padding:20px 64px !important;
}
.gac-hdr .et_pb_row{ width:100% !important; max-width:100% !important; padding:0 !important; }
.gac-hdr .et_pb_menu__logo img{ height:54px !important; width:auto !important; max-height:54px; }
.gac-hdr .et_pb_menu__menu>nav>ul{ display:flex; align-items:center; gap:30px; }
.gac-hdr .et_pb_menu__menu>nav>ul>li{ margin:0 !important; padding:0 !important; }
.gac-hdr .et_pb_menu__menu>nav>ul>li>a{
  font-size:14.5px !important; font-weight:500 !important;
  color:var(--gac-text) !important; padding:0 !important;
  transition:color .18s ease;
}
.gac-hdr .et_pb_menu__menu>nav>ul>li>a:hover{ color:var(--gac-purple) !important; opacity:1 !important; }
/* The "Register free" menu item: give the menu item CSS class gac-nav-cta
   in Appearance > Menus. */
.gac-hdr .et_pb_menu__menu>nav>ul>li.gac-nav-cta>a{
  background:var(--gac-purple) !important; color:#fff !important;
  font-weight:700 !important; padding:11px 22px !important;
  border-radius:999px !important;
}
.gac-hdr .et_pb_menu__menu>nav>ul>li.gac-nav-cta>a:hover{ background:var(--gac-purple-dark) !important; }

/* Items with a submenu need their padding back. Divi draws the dropdown arrow
   as an ::after pinned to the right edge of the link and reserves room for it
   with padding-right; the padding:0 above took that room away, so the arrow
   landed on top of the last letters of "Watch back" and "Our charities". */
.gac-hdr .et_pb_menu__menu>nav>ul>li.menu-item-has-children>a{
  position:relative;
  padding-right:18px !important;
}
.gac-hdr .et_pb_menu__menu>nav>ul>li.menu-item-has-children>a:after{
  right:0 !important;
  color:var(--gac-lav) !important;
}
.gac-hdr .et_pb_menu__menu>nav>ul>li.menu-item-has-children>a:hover:after{
  color:var(--gac-purple) !important;
}
/* The dropdown panel itself, lightly brought into line with the rest of the
   design. Width and positioning are left to Divi. */
.gac-hdr .et_pb_menu__menu ul.sub-menu{
  background:#FFFEFE !important;
  border:1px solid var(--gac-bd-1) !important;
  border-top:2px solid var(--gac-purple) !important;
  padding:8px 0 !important;
  box-shadow:0 12px 30px rgba(36,27,46,.10);
}
.gac-hdr .et_pb_menu__menu ul.sub-menu li a{
  font-size:14px !important;
  font-weight:500 !important;
  color:var(--gac-text) !important;
  padding:9px 18px !important;
}
.gac-hdr .et_pb_menu__menu ul.sub-menu li a:hover{
  color:var(--gac-purple) !important;
  background:#F6F1F8 !important;
  opacity:1 !important;
}

/* --------------------------------------------------------------------------
   3. Hero
   -------------------------------------------------------------------------- */

.gac-hero{ padding-top:64px; text-align:center; }
.gac-h1,
body.gac-home .gac-h1 h1,
body.gac-home h1.gac-h1{
  font-size:clamp(38px, 6.4vw, 82px) !important;
  line-height:1.04 !important;
  font-weight:800 !important;
  font-stretch:115%;
  letter-spacing:-.015em !important;
  margin:26px auto 0 !important;
  max-width:940px;
  color:var(--gac-ink) !important;
}
/* Gradient fill on the words "world's biggest" */
.gac-grad{
  background:linear-gradient(95deg,#7A2384,#2E7CC3);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  /* Safety net: if background-clip:text is unsupported the text stays purple
     rather than disappearing. */
  -webkit-text-fill-color:transparent;
}
@supports not ((-webkit-background-clip:text) or (background-clip:text)){
  .gac-grad{ color:var(--gac-purple); -webkit-text-fill-color:currentColor; background:none; }
}

.gac-sub,
body.gac-home .gac-sub p{
  font-size:19px !important; line-height:1.6 !important;
  color:var(--gac-text) !important;
  max-width:660px; margin:24px auto 0 !important;
}
.gac-cta-row{ display:flex; justify-content:center; gap:14px; margin-top:36px; flex-wrap:wrap; }
.gac-credit,
body.gac-home .gac-credit p{
  display:flex; justify-content:center; align-items:center; gap:8px; flex-wrap:wrap;
  margin-top:24px !important; font-size:13px !important; color:var(--gac-muted) !important;
}
.gac-credit strong{ color:var(--gac-name); font-weight:700; }
.gac-credit .gac-dot{ color:#C9B9D2; }

/* --------------------------------------------------------------------------
   4. Countdown + local start pill  [gac_countdown]
   -------------------------------------------------------------------------- */

.gac-cd-block{ text-align:center; }
.gac-cd-row{
  display:flex; justify-content:center; align-items:center; gap:18px;
  margin-top:36px; flex-wrap:wrap;
}
.gac-cd-label{
  font-size:12px; font-weight:600; letter-spacing:.16em; color:var(--gac-lav);
}
.gac-cd{ display:flex; gap:8px; }
.gac-cd-card{
  background:#fff; border:1px solid var(--gac-bd-2); border-radius:12px;
  padding:12px 0; width:76px; text-align:center; box-shadow:var(--gac-shadow);
}
.gac-cd-num{ font-size:30px; font-weight:800; line-height:1; font-variant-numeric:tabular-nums; }
.gac-cd-card--sec .gac-cd-num{ color:var(--gac-amber); }
.gac-cd-unit{ font-size:10.5px; letter-spacing:.14em; color:var(--gac-lav); margin-top:5px; }

.gac-pill{
  display:inline-flex; align-items:center; gap:10px; margin-top:22px;
  background:rgba(240,180,55,.13);
  border:1px solid rgba(224,160,40,.35);
  border-radius:999px; padding:10px 20px;
  font-size:14.5px; color:var(--gac-name); text-align:left;
}
.gac-pill-dot{ width:8px; height:8px; border-radius:50%; background:var(--gac-amber); flex:none; }
.gac-pill strong{ color:var(--gac-amber-text); font-weight:700; }

/* Live state (swap after the event starts) */
.gac-cd-live{
  display:inline-flex; align-items:center; gap:12px; margin-top:36px;
  background:rgba(59,165,92,.12); border:1px solid rgba(59,165,92,.4);
  border-radius:999px; padding:14px 26px; font-size:17px; font-weight:700;
}
.gac-cd-live .gac-pulse{ background:var(--gac-green); }

/* --------------------------------------------------------------------------
   5. Sun-arc panel  [gac_sun_arc]
   -------------------------------------------------------------------------- */

.gac-arc-panel{
  background:linear-gradient(180deg,#F0EDFA 0%,#FBF3E4 100%);
  border:1px solid var(--gac-bd-3);
  border-radius:24px;
  padding:36px 0 30px;
  position:relative;
  margin-top:56px;
}
.gac-arc-head{
  display:flex; justify-content:space-between; align-items:baseline;
  gap:20px; padding:0 40px; margin-bottom:4px;
  font-size:12px; font-weight:600; letter-spacing:.16em;
}
.gac-arc-head-l{ color:var(--gac-lav-2); }
.gac-arc-head-r{ color:var(--gac-amber-deep); white-space:nowrap; }
/* Second line under the tagline, styled identically to it - same size,
   weight, tracking and caps - so the two read as one block. */
.gac-arc-head-sub{
  font-size:12px; font-weight:600; letter-spacing:.16em;
  color:var(--gac-lav-2); text-transform:uppercase; margin-top:7px;
}

.gac-arc-stage{
  position:relative;
  width:100%;
  max-width:var(--gac-max);
  margin:0 auto;
  aspect-ratio:1152 / 322;
}
.gac-arc-svg{
  position:absolute; left:0; top:0;
  width:100%; height:auto;
  overflow:visible;
}
.gac-arc-city{
  position:absolute;
  transform:translateX(-50%);
  text-align:center;
  line-height:1.25;
}
.gac-arc-city-name{ font-size:clamp(10px,1.13vw,13px); font-weight:700; color:var(--gac-ink); }
.gac-arc-city-time{ font-size:clamp(9.5px,1.05vw,12px); color:var(--gac-lav); }
/* The same instant in the visitor's own zone. Purple so it reads as "about
   you" rather than as another city fact. Left empty - and so invisible - when
   the visitor is on UK time, where it would only repeat the line above. */
.gac-arc-city-yours{
  font-size:clamp(9px,1vw,11.5px); font-weight:600; color:var(--gac-purple);
}
.gac-arc-city-yours:empty{ display:none; }
.gac-arc-pin{
  display:inline-block; margin-top:5px;
  background:var(--gac-purple); color:#fff;
  font-size:clamp(9px,.95vw,11px); font-weight:700;
  padding:clamp(3px,.35vw,4px) clamp(7px,.85vw,10px);
  border-radius:999px; white-space:nowrap;
}

/* Endpoint labels must not overspill the panel. The first label starts at its
   dot and grows inward; the last ends at its dot and grows inward. Without
   this, "Johannesburg" and its pill hang off the right edge. */
.gac-arc-city--start{ transform:none; text-align:left; }
.gac-arc-city--end{ transform:translateX(-100%); text-align:right; }
.gac-arc-caption{
  text-align:center; font-size:13px; color:var(--gac-lav);
  margin-top:24px; padding:0 24px;
}

/* ---- Time-zone pill -------------------------------------------------------
   Deliberately quiet: the animated sun stays the hero. Shows the go-live
   moment in UK time and the visitor's own, and opens the zone picker. */
.gac-tz-wrap{ display:flex; justify-content:center; margin-top:36px; padding:0 24px; }
.gac-tz-pill{
  appearance:none;
  display:inline-flex; align-items:center; gap:9px;
  border:1px solid rgba(122,35,132,.16);
  background:rgba(255,255,255,.5);
  border-radius:999px;
  padding:8px 16px 8px 18px;
  font-family:inherit; font-size:13px; line-height:1.4;
  color:var(--gac-text); cursor:pointer;
  transition:background-color .18s ease, border-color .18s ease, color .18s ease;
}
.gac-tz-pill:hover{
  background:rgba(255,255,255,.92);
  border-color:rgba(122,35,132,.35);
  color:var(--gac-ink-2);
}
.gac-tz-pill strong{ font-weight:700; color:var(--gac-ink); }
.gac-tz-city{
  color:var(--gac-purple); font-weight:600;
  border-bottom:1.5px dotted rgba(122,35,132,.45); padding-bottom:1px;
}
.gac-tz-chev{ flex:none; }

/* ---- Zone picker modal ---------------------------------------------------- */
.gac-tz-overlay{
  position:fixed; inset:0; z-index:100000;
  background:rgba(28,18,38,.45);
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  display:flex; align-items:center; justify-content:center; padding:24px;
  animation:gac-overlay-in .15s ease;
}
@keyframes gac-overlay-in{ from{opacity:0} to{opacity:1} }
.gac-tz-card{
  width:min(94vw,540px); max-height:min(86vh,660px);
  display:flex; flex-direction:column;
  background:#FFFEFE; border:1px solid var(--gac-bd-1);
  border-radius:24px; box-shadow:0 30px 90px rgba(43,16,60,.3);
  animation:gac-card-in .22s cubic-bezier(.2,.8,.3,1);
  overflow:hidden;
}
@keyframes gac-card-in{ from{opacity:0;transform:translateY(14px) scale(.97)} to{opacity:1;transform:none} }
.gac-tz-head{ display:flex; align-items:flex-start; gap:16px; padding:22px 22px 14px; }
.gac-tz-title{ font-size:21px; font-weight:800; color:var(--gac-ink); margin:0; line-height:1.25; }
.gac-tz-sub{ font-size:13.5px; color:var(--gac-lav); margin:6px 0 0; }
.gac-tz-close{
  appearance:none; flex:none; margin-left:auto;
  width:40px; height:40px; border-radius:50%;
  border:1px solid var(--gac-bd-1); background:#fff;
  font-size:20px; line-height:1; color:var(--gac-text); cursor:pointer;
}
.gac-tz-close:hover{ background:#F6F1F8; }
.gac-tz-device{
  appearance:none; display:flex; align-items:center; gap:14px; width:calc(100% - 44px);
  margin:0 22px 14px; padding:12px 16px; text-align:left;
  border:1px solid rgba(122,35,132,.22); background:rgba(122,35,132,.05);
  border-radius:14px; cursor:pointer; font-family:inherit;
}
.gac-tz-device:hover{ background:rgba(122,35,132,.09); }
.gac-tz-device-main{ font-size:14.5px; font-weight:700; color:var(--gac-ink); }
.gac-tz-device-sub{ font-size:12px; color:var(--gac-lav); margin-top:2px; }
.gac-tz-device-r{ margin-left:auto; text-align:right; }
.gac-tz-device-time{ font-size:15px; font-weight:700; color:var(--gac-purple); }
.gac-tz-device-date{ font-size:11px; color:var(--gac-lav); }
.gac-tz-search-wrap{ padding:0 22px 12px; }
.gac-tz-search{
  width:100%; height:46px; box-sizing:border-box;
  border:1.5px solid var(--gac-bd-2); background:#FBFAFC;
  border-radius:13px; padding:0 14px;
  font-family:inherit; font-size:14.5px; color:var(--gac-ink);
}
.gac-tz-search:focus{
  outline:none; border-color:var(--gac-purple);
  box-shadow:0 0 0 3px rgba(122,35,132,.12);
}
.gac-tz-list{ overflow-y:auto; padding:0 14px 6px; flex:1 1 auto; }
.gac-tz-row{
  appearance:none; display:flex; align-items:center; gap:14px;
  width:100%; min-height:46px; padding:8px 12px; text-align:left;
  border:0; background:transparent; border-radius:12px;
  cursor:pointer; font-family:inherit;
}
.gac-tz-row:hover{ background:#F6F1F8; }
.gac-tz-row[aria-selected="true"]{ background:rgba(122,35,132,.07); }
.gac-tz-city-name{ font-size:14.5px; font-weight:700; color:var(--gac-ink); }
.gac-tz-country{ font-size:12.5px; color:var(--gac-lav); margin-top:1px; }
.gac-tz-row-r{ margin-left:auto; text-align:right; flex:none; }
.gac-tz-row-time{ font-size:14px; font-weight:700; color:var(--gac-ink-2); }
.gac-tz-row-date{ font-size:11px; color:var(--gac-lav); }
.gac-tz-tick{ flex:none; color:var(--gac-purple); font-weight:700; opacity:0; margin-left:10px; }
.gac-tz-row[aria-selected="true"] .gac-tz-tick{ opacity:1; }
.gac-tz-empty{ padding:22px 16px; text-align:center; font-size:13.5px; color:var(--gac-lav); }
.gac-tz-note{
  padding:12px 22px 16px; border-top:1px solid #F0EAF3;
  font-size:12px; color:var(--gac-lav);
}
@media (prefers-reduced-motion:reduce){
  .gac-tz-overlay, .gac-tz-card{ animation:none !important; }
}

/* Stacked fallback used below 980px and when the arc can't be shown. */
.gac-arc-list{ display:none; padding:4px 24px 0; }
.gac-arc-list ol{ list-style:none; margin:0; padding:0; }
.gac-arc-list li{
  display:flex; align-items:center; gap:12px;
  padding:11px 4px; min-height:44px;
  border-bottom:1px solid rgba(122,35,132,.12);
}
.gac-arc-list li:last-child{ border-bottom:0; }
.gac-arc-list .gac-arc-ldot{
  width:9px; height:9px; border-radius:50%; flex:none;
  background:rgba(122,35,132,.45);
}
.gac-arc-list li.is-host .gac-arc-ldot{ background:var(--gac-purple); }
.gac-arc-list .gac-arc-lcity{ font-size:14.5px; font-weight:700; }
.gac-arc-list .gac-arc-lright{ margin-left:auto; text-align:right; flex:none; }
.gac-arc-list .gac-arc-ltime{ font-size:13.5px; color:var(--gac-lav); white-space:nowrap; }
.gac-arc-list .gac-arc-lyours{
  display:block; font-size:12.5px; font-weight:600;
  color:var(--gac-purple); white-space:nowrap;
}
.gac-arc-list .gac-arc-lyours:empty{ display:none; }
.gac-arc-list .gac-arc-pin{ margin-top:0; }

@media (max-width:980px){
  .gac-arc-stage{ display:none; }
  .gac-arc-list{ display:block; }
  .gac-arc-panel{ padding:26px 0 24px; }
  .gac-arc-head{ flex-direction:column; gap:6px; padding:0 24px; }
}

/* --------------------------------------------------------------------------
   6. Charity logo ribbon
   -------------------------------------------------------------------------- */

.gac-ribbon{
  display:flex; align-items:center; justify-content:center;
  gap:40px; flex-wrap:wrap;
  padding:28px 32px;
  border:1px solid var(--gac-bd-1); border-radius:18px; background:#fff;
  margin-top:44px;
}
.gac-ribbon-item{ display:flex; flex-direction:column; align-items:center; gap:8px; text-align:center; }
.gac-ribbon-item img{ max-height:52px; max-width:130px; width:auto; height:auto; object-fit:contain; }
.gac-ribbon-name{ font-size:12.5px; font-weight:700; color:var(--gac-name); max-width:150px; }
.gac-ribbon-caption{
  text-align:center; margin-top:18px; font-size:14.5px; color:var(--gac-text);
}
.gac-ribbon-caption a{ font-weight:700; color:var(--gac-purple); }
.gac-ribbon-caption a:hover{ color:var(--gac-purple-dark); }

/* --------------------------------------------------------------------------
   7. Stats row
   -------------------------------------------------------------------------- */

.gac-stats{
  border-top:1px solid var(--gac-bd-1);
  display:grid; grid-template-columns:repeat(4,1fr); gap:24px;
  padding:44px 0; margin-top:56px;
}
.gac-stat-num{
  font-size:clamp(32px,3.6vw,46px); font-weight:800; font-stretch:115%; line-height:1;
}
.gac-stat-num--amber{ color:var(--gac-amber-deep); }
.gac-stat-cap{ font-size:14px; color:var(--gac-muted); margin-top:6px; }
@media (max-width:780px){ .gac-stats{ grid-template-columns:repeat(2,1fr); gap:28px 24px; } }

/* --------------------------------------------------------------------------
   8. Registration counter bar  [gac_reg_bar]
   -------------------------------------------------------------------------- */

.gac-regbar{
  background:#fff; border:1px solid var(--gac-bd-2); border-radius:16px;
  padding:22px 28px;
  display:flex; align-items:center; justify-content:space-between; gap:18px;
  flex-wrap:wrap;
  box-shadow:var(--gac-shadow);
}
.gac-regbar-l{ display:flex; align-items:center; gap:12px; }
.gac-pulse{
  width:9px; height:9px; border-radius:50%; background:var(--gac-green); flex:none;
  animation:gac-pulse 2.4s ease-in-out infinite;
}
@keyframes gac-pulse{ 0%,100%{opacity:1} 50%{opacity:.35} }
.gac-regbar-text{ font-size:16px; }
.gac-regbar-text strong{ font-weight:700; }
.gac-regbar-text .gac-regbar-mid{ color:var(--gac-muted); }
.gac-regbar-link{ color:var(--gac-purple); font-size:15px; font-weight:700; }
.gac-regbar-link:hover{ color:var(--gac-purple-dark); }

/* --------------------------------------------------------------------------
   9. Speakers tease  [gac_speakers]
   -------------------------------------------------------------------------- */

.gac-sec-head{
  display:flex; justify-content:space-between; align-items:flex-end;
  gap:24px; margin-bottom:28px; flex-wrap:wrap; text-align:left;
}
.gac-h2,
body.gac-home .gac-h2 h2,
body.gac-home h2.gac-h2{
  font-size:clamp(28px,3.3vw,40px) !important; font-weight:800 !important;
  font-stretch:112%; margin:0 !important; line-height:1.1 !important;
  color:var(--gac-ink) !important;
}
.gac-h2--sm,
body.gac-home h2.gac-h2--sm{ font-size:clamp(24px,2.9vw,34px) !important; max-width:880px; }
.gac-sec-sub{ font-size:16px; color:var(--gac-muted); margin:10px 0 0; }
.gac-sec-link{ color:var(--gac-purple); font-size:15px; font-weight:700; white-space:nowrap; }
.gac-sec-link:hover{ color:var(--gac-purple-dark); }

.gac-speakers{ display:grid; grid-template-columns:repeat(6,1fr); gap:14px; }
.gac-spk{
  aspect-ratio:3/4; border-radius:14px; border:1px solid var(--gac-bd-2);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px;
  text-align:center;
}
.gac-spk-q{ font-size:clamp(30px,4vw,54px); font-weight:800; line-height:1; }
.gac-spk-label{ font-size:11px; letter-spacing:.14em; color:var(--gac-lav-3); }
.gac-spk-1{ background:linear-gradient(165deg,#EFE3F3,#E2ECF7); }
.gac-spk-1 .gac-spk-q{ color:#A886B5; }
.gac-spk-2{ background:linear-gradient(165deg,#ECE5F5,#E2ECF7); }
.gac-spk-2 .gac-spk-q{ color:#9F8BC0; }
.gac-spk-3{ background:linear-gradient(165deg,#E8E7F6,#E0EEF6); }
.gac-spk-3 .gac-spk-q{ color:#8F92C5; }
.gac-spk-4{ background:linear-gradient(165deg,#E4E9F6,#DFF0F8); }
.gac-spk-4 .gac-spk-q{ color:#7F9BCB; }
.gac-spk-5{ background:linear-gradient(165deg,#E0ECF7,#DDF2FA); }
.gac-spk-5 .gac-spk-q{ color:#6FA5D2; }
.gac-spk--cta{
  background:rgba(240,180,55,.13); border-color:rgba(224,160,40,.4);
  gap:12px; padding:18px;
}
.gac-spk-cta-title{ font-size:16px; font-weight:700; line-height:1.35; }
.gac-spk-cta-btn{
  background:var(--gac-ink); color:#fff; font-size:13.5px; font-weight:700;
  padding:10px 18px; border-radius:999px; display:inline-block;
  min-height:44px; line-height:24px; box-sizing:border-box;
}
.gac-spk-cta-btn:hover{ background:var(--gac-purple); color:#fff; }
@media (max-width:1100px){ .gac-speakers{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:560px){ .gac-speakers{ grid-template-columns:repeat(2,1fr); } }

/* --------------------------------------------------------------------------
   10. Watch-back library
   -------------------------------------------------------------------------- */

.gac-watch{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.gac-wcard{
  aspect-ratio:16/10; border-radius:14px; color:#fff;
  padding:20px 22px;
  display:flex; flex-direction:column; justify-content:space-between;
  text-decoration:none;
  transition:transform .2s ease, box-shadow .2s ease;
}
.gac-wcard:hover{ transform:translateY(-3px); box-shadow:0 10px 26px rgba(36,27,46,.18); }
/* Every element inside the card is a SPAN, not a DIV. WordPress's wpautop
   splits an <a> that wraps block-level elements into several anchors - the
   extras render as empty gradient stubs - and wraps the row in <p> tags,
   which then become the grid items instead of the cards. Spans are inline,
   so there is nothing for wpautop to break. */
.gac-wcard-top{ display:block; }
.gac-wcard-year{ display:block; font-size:clamp(24px,2.6vw,32px); font-weight:800; color:#fff; }
.gac-wcard-tag{ display:block; font-size:13.5px; line-height:1.45; color:rgba(255,255,255,.85); margin-top:6px; }
.gac-wcard-foot{ display:flex; align-items:center; gap:10px; }
.gac-wcard-play{
  width:40px; height:40px; border-radius:50%; flex:none;
  background:rgba(255,255,255,.22);
  display:flex; align-items:center; justify-content:center;
}
.gac-wcard-play:before{
  content:""; width:0; height:0; margin-left:3px;
  border-top:7px solid transparent; border-bottom:7px solid transparent;
  border-left:11px solid #fff;
}
.gac-wcard-cta{ font-size:13px; font-weight:600; color:#fff; }
/* Belt and braces: if wpautop still manages to inject a paragraph or an empty
   anchor into the row, neither is allowed to become a grid item. */
.gac-watch > p{ display:contents; }
.gac-watch > a:empty, .gac-watch br{ display:none; }
.gac-wcard--2025{ background:linear-gradient(135deg,#7A2384,#2E7CC3); }
.gac-wcard--2024{ background:linear-gradient(135deg,#5B2C93,#35A7E0); }
.gac-wcard--2023{ background:linear-gradient(135deg,#43197F,#7A2384); }
.gac-wcard--2022{ background:linear-gradient(135deg,#2B1152,#1E5FA8); }
@media (max-width:900px){ .gac-watch{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .gac-watch{ grid-template-columns:1fr; } }

/* --------------------------------------------------------------------------
   11. Donate band
   -------------------------------------------------------------------------- */

.gac-donate{
  border-radius:20px; background:linear-gradient(135deg,#7A2384,#5B3BA8);
  color:#fff; padding:40px 48px;
  display:flex; justify-content:space-between; align-items:center;
  gap:32px; flex-wrap:wrap;
}
.gac-donate-title{ font-size:clamp(22px,2.4vw,28px); font-weight:800; font-stretch:112%; color:#fff; }
.gac-donate-body{ font-size:15px; color:rgba(255,255,255,.78); margin-top:8px; max-width:560px; }
a.gac-donate-btn,
.gac-donate-btn.et_pb_button{
  background:#fff !important; color:var(--gac-purple) !important;
  font-size:16px !important; font-weight:700 !important;
  padding:15px 32px !important; border-radius:999px !important;
  border:0 !important; flex:none;
}
a.gac-donate-btn:hover,
.gac-donate-btn.et_pb_button:hover{ background:var(--gac-sun-2) !important; color:var(--gac-ink) !important; }
.gac-donate-btn.et_pb_button:after{ display:none !important; content:none !important; }

/* --------------------------------------------------------------------------
   12. Site footer (Divi Theme Builder > Global Footer)
   Add CSS Class "gac-ftr" to the footer SECTION.
   -------------------------------------------------------------------------- */

.gac-ftr.et_pb_section{
  background:var(--gac-footer) !important;
  padding:26px 64px !important;
}
.gac-ftr, .gac-ftr p, .gac-ftr .et_pb_text{ color:#fff; }
.gac-ftr .et_pb_row{ width:100% !important; max-width:100% !important; padding:0 !important; }
.gac-ftr-crisis{ font-size:14px; color:rgba(255,255,255,.85); }
.gac-ftr-crisis strong{ color:#fff; font-weight:700; }
.gac-ftr-crisis a{ color:#E8C6F0 !important; font-weight:600; }
.gac-ftr-crisis a:hover{ color:#fff !important; }
.gac-ftr-links{ display:flex; gap:22px; font-size:13px; justify-content:flex-end; flex-wrap:wrap; }
.gac-ftr-links a{ color:rgba(255,255,255,.55) !important; }
.gac-ftr-links a:hover{ color:#fff !important; }
.gac-ftr-links span{ color:rgba(255,255,255,.35); }

/* --------------------------------------------------------------------------
   13. Responsive + accessibility
   -------------------------------------------------------------------------- */

@media (max-width:980px){
  .gac-section{ padding-left:28px; padding-right:28px; }
  .gac-hdr.et_pb_section{ padding:16px 24px !important; }
  .gac-ftr.et_pb_section{ padding:24px !important; }
  .gac-ribbon{ gap:26px; padding:22px; }
  .gac-donate{ padding:28px 26px; }
  .gac-sec-head{ align-items:flex-start; }
  .gac-ftr-links{ justify-content:flex-start; }
}
@media (max-width:640px){
  .gac-section{ padding-left:20px; padding-right:20px; }
  .gac-hero{ padding-top:36px; }
  .gac-cd-card{ width:calc(25% - 6px); min-width:64px; }
  .gac-cd-row{ gap:12px; }
  .gac-sub, body.gac-home .gac-sub p{ font-size:17px !important; }
  .gac-cta-row .gac-btn.et_pb_button, .gac-cta-row a.gac-btn{ width:100%; text-align:center; }
}

/* Minimum 44px hit targets on touch */
@media (pointer:coarse){
  .gac-hdr .et_pb_menu__menu>nav>ul>li>a,
  .gac-sec-link, .gac-regbar-link, .gac-ribbon-caption a{
    min-height:44px; display:inline-flex; align-items:center;
  }
}

/* Visible focus for keyboard users (Divi suppresses outlines) */
body.gac-home a:focus-visible,
.gac-hdr a:focus-visible, .gac-ftr a:focus-visible{
  outline:3px solid var(--gac-blue); outline-offset:3px; border-radius:4px;
}

@media (prefers-reduced-motion:reduce){
  .gac-pulse{ animation:none !important; }
  .gac-wcard{ transition:none; }
  .gac-wcard:hover{ transform:none; }
}

/* --------------------------------------------------------------------------
   14. Divi row helpers
   Applied via a Row's Advanced > CSS Class in the Divi builder.
   -------------------------------------------------------------------------- */

/* Two-column row used as a section heading: text left, link right-aligned
   and baseline-matched to the bottom of the heading block. */
body.gac-home .gac-head-row.et_pb_row{
  display:flex !important; align-items:flex-end; flex-wrap:wrap;
  margin-bottom:28px !important;
}
body.gac-home .gac-head-row .et_pb_column{ margin-bottom:0 !important; }
body.gac-home .gac-head-row .et_pb_column:last-child{ text-align:right; }
@media (max-width:980px){
  body.gac-home .gac-head-row .et_pb_column:last-child{ text-align:left; margin-top:12px; }
}

/* Kill the bottom margin Divi puts under every column/module so our own
   spacing values are the only ones in play. */
body.gac-home .gac-tight.et_pb_row{ margin-bottom:0 !important; }
body.gac-home .gac-tight .et_pb_column{ margin-bottom:0 !important; }
body.gac-home .gac-tight .et_pb_module{ margin-bottom:0 !important; }

/* Footer inner flex row (used inside a single Text module) */
.gac-ftr-inner{
  display:flex; justify-content:space-between; align-items:center;
  gap:20px; flex-wrap:wrap;
}

/* --------------------------------------------------------------------------
   15. Schedule page  [gac_schedule]
   Three time columns, all computed in the browser from the same UTC instant
   the countdown uses, so the dates can never drift apart again.
   -------------------------------------------------------------------------- */

.gac-page{ padding-top:56px; text-align:center; }
.gac-page-h1,
body.gac-home .gac-page-h1{
  font-size:clamp(30px,4.2vw,46px) !important; line-height:1.05 !important;
  font-weight:800 !important; font-stretch:115%; letter-spacing:-.015em !important;
  margin:22px auto 0 !important; color:var(--gac-ink) !important;
}
.gac-page-sub{
  font-size:17px; line-height:1.6; color:var(--gac-text);
  max-width:640px; margin:18px auto 0;
}
.gac-page-cta{ display:flex; justify-content:center; align-items:center; gap:14px; margin-top:28px; flex-wrap:wrap; }
.gac-note-pill{
  display:inline-flex; align-items:center; gap:9px;
  background:rgba(240,180,55,.13); border:1px solid rgba(224,160,40,.35);
  border-radius:999px; padding:9px 18px; font-size:14px; color:var(--gac-name);
}
.gac-note-pill:before{
  content:""; width:8px; height:8px; border-radius:50%;
  background:var(--gac-amber); flex:none;
}

.gac-sch{
  background:#fff; border:1px solid var(--gac-bd-2); border-radius:20px;
  overflow:hidden; margin-top:40px; text-align:left;
}
.gac-sch-row{
  display:grid; grid-template-columns:130px 130px 150px 1fr;
  gap:16px; padding:14px 22px; align-items:start;
  border-top:1px solid #F1EBF4;
}
.gac-sch-head{
  background:#F7F3F9; border-top:0;
  font-size:11.5px; font-weight:600; letter-spacing:.12em;
  text-transform:uppercase; color:var(--gac-lav); padding:12px 22px;
}
.gac-sch-time{ font-size:15px; font-weight:700; color:var(--gac-ink); line-height:1.2; }
.gac-sch-date{ font-size:11.5px; color:var(--gac-lav); margin-top:2px; }
.gac-sch-lo .gac-sch-time{ color:var(--gac-amber-deep); }
.gac-sch-title{ font-size:15px; font-weight:800; color:var(--gac-ink); line-height:1.35; }
.gac-sch-desc{ font-size:13.5px; line-height:1.55; color:var(--gac-text); margin-top:5px; }

/* A named session sits on the tint; an unannounced slot stays plain. */
.gac-sch-row--named{ background:#F7F3F9; }
.gac-sch-row--tba .gac-sch-title{ font-weight:500; color:var(--gac-muted); }

/* Handover bands: the baton changing hands is the structure of the day. */
.gac-sch-row--band{ background:var(--gac-purple); border-top:0; }
.gac-sch-row--cross{ background:linear-gradient(90deg,#7A2384,#2E7CC3); border-top:0; }
.gac-sch-row--band .gac-sch-time,
.gac-sch-row--cross .gac-sch-time,
.gac-sch-row--band .gac-sch-title,
.gac-sch-row--cross .gac-sch-title{ color:#fff; }
.gac-sch-row--band .gac-sch-date,
.gac-sch-row--cross .gac-sch-date{ color:rgba(255,255,255,.7); }
.gac-sch-row--band .gac-sch-lo .gac-sch-time,
.gac-sch-row--cross .gac-sch-lo .gac-sch-time{ color:var(--gac-sun-2); }

.gac-sch-caption{
  font-size:13px; color:var(--gac-lav); text-align:center;
  margin-top:18px; padding:0 24px;
}

@media (max-width:900px){
  .gac-sch-head{ display:none; }
  .gac-sch-row{ grid-template-columns:repeat(3,1fr); gap:10px 12px; padding:16px 18px; }
  /* Session first: on a phone the thing you are scanning for is what is on,
     not what o'clock it is in three places. */
  .gac-sch-sess{ grid-column:1 / -1; order:-1; }
  .gac-sch-cell:before{
    content:attr(data-label); display:block;
    font-size:10.5px; font-weight:600; letter-spacing:.1em;
    text-transform:uppercase; color:var(--gac-lav); margin-bottom:3px;
  }
  .gac-sch-row--band .gac-sch-cell:before,
  .gac-sch-row--cross .gac-sch-cell:before{ color:rgba(255,255,255,.65); }
}

@media (max-width:768px){
  .gac-sch{ border-radius:16px; margin-top:28px; }
  .gac-sch-row{ padding:14px 16px; gap:8px 10px; }
  /* Three columns of "8:30am Fri 2 Oct" will not fit 390px, so the date drops
     to its own line and the type steps down. */
  .gac-sch-time{ font-size:14px; }
  .gac-sch-date{ font-size:10.5px; }
  .gac-sch-title{ font-size:14.5px; }
  .gac-sch-desc{ font-size:13px; margin-top:4px; }
  .gac-sch-cell:before{ font-size:9.5px; letter-spacing:.08em; }
  .gac-sch-caption{ font-size:12.5px; margin-top:14px; padding:0 4px; }
  .gac-sch-tzbar{ margin-top:22px; padding:0; }
  .gac-sch-tzbar .gac-tz-pill{ width:100%; justify-content:center; }
}

/* The picker, repeated on the schedule page. On desktop it is the third
   column header; below 900px that header row is hidden, so the same control
   reappears as a pill above the table. Only ever one is visible. */
.gac-sch-tzbtn{
  appearance:none; border:0; background:none; margin:0; padding:0;
  font-family:inherit; cursor:pointer;
  display:inline-flex; align-items:center; gap:6px;
  text-transform:none; letter-spacing:0;
}
.gac-sch-head .gac-sch-tzbtn .gac-tz-city{ font-size:12px; font-weight:700; }
.gac-sch-head .gac-sch-tzbtn:hover .gac-tz-city{
  color:var(--gac-purple-dark); border-bottom-color:rgba(122,35,132,.8);
}
.gac-sch-tzbtn:focus-visible{ outline:3px solid var(--gac-blue); outline-offset:3px; border-radius:6px; }

.gac-sch-tzbar{ display:none; justify-content:center; margin-top:28px; }
.gac-sch-tzbar .gac-tz-pill{ background:rgba(255,255,255,.85); }
@media (max-width:900px){
  .gac-sch-tzbar{ display:flex; }
}

/* --------------------------------------------------------------------------
   16. Inner pages: About (3d), Crisis lines (3g), Speakers (3b)
   -------------------------------------------------------------------------- */

/* ---- shared prose column ---- */
.gac-prose{ max-width:820px; margin:44px auto 0; text-align:left; }
.gac-prose h2,
body.gac-home .gac-prose h2{
  font-size:clamp(24px,2.6vw,30px) !important; font-weight:800 !important;
  font-stretch:112%; line-height:1.15 !important; margin:38px 0 14px !important;
  color:var(--gac-ink) !important;
}
.gac-prose h2:first-child{ margin-top:0 !important; }
.gac-prose p{ font-size:15.5px; line-height:1.65; color:var(--gac-ink-2); margin:0 0 14px; }
.gac-prose a{ color:var(--gac-purple); font-weight:700; }
.gac-prose a:hover{ color:var(--gac-purple-dark); }

/* Amber-dot bullets. A list, but without list markers fighting the design. */
.gac-aims{ margin:6px 0 18px; }
.gac-aim{ display:flex; gap:14px; align-items:flex-start; padding:7px 0; }
.gac-aim:before{
  content:""; width:8px; height:8px; border-radius:50%; flex:none;
  background:var(--gac-amber); margin-top:9px;
}
.gac-aim p{ margin:0; }

/* ---- Crisis lines: whole card is the link, so the hit target is huge ---- */
.gac-crisis{ max-width:720px; margin:40px auto 0; display:grid; gap:16px; text-align:left; }
.gac-crisis-card{
  display:flex; align-items:center; gap:20px;
  padding:26px 28px; border-radius:18px;
  background:#fff; border:1px solid var(--gac-bd-2);
  text-decoration:none;
  transition:border-color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.gac-crisis-card:hover{
  border-color:var(--gac-purple);
  transform:translateY(-2px);
  box-shadow:0 10px 26px rgba(36,27,46,.09);
}
.gac-crisis-card--urgent{
  background:rgba(240,180,55,.13); border-color:rgba(224,160,40,.4);
}
.gac-crisis-card--urgent:hover{ border-color:var(--gac-amber); }
.gac-crisis-title{ display:block; font-size:20px; font-weight:800; color:var(--gac-ink); line-height:1.3; }
.gac-crisis-sub{ display:block; font-size:14px; color:var(--gac-text); margin-top:6px; line-height:1.5; }
.gac-crisis-arrow{
  margin-left:auto; flex:none; font-size:22px; color:var(--gac-purple);
  transition:transform .18s ease;
}
.gac-crisis-card:hover .gac-crisis-arrow{ transform:translateX(3px); }
.gac-crisis-card--urgent .gac-crisis-arrow{ color:var(--gac-amber-deep); }
@media (max-width:560px){
  .gac-crisis-card{ padding:20px; gap:14px; }
  .gac-crisis-title{ font-size:18px; }
}

/* ---- Speakers: one row card per speaker ---- */
.gac-speakers-list{ max-width:880px; margin:40px auto 0; display:grid; gap:18px; text-align:left; }
.gac-spkr{
  display:flex; gap:26px; align-items:flex-start;
  background:#fff; border:1px solid var(--gac-bd-2);
  border-radius:18px; padding:26px;
}
.gac-spkr-photo{
  width:150px; height:200px; flex:none; border-radius:14px;
  object-fit:cover; background:#F4EFF7;
}
.gac-spkr-tile{
  width:150px; height:200px; flex:none; border-radius:14px;
  background:linear-gradient(165deg,#EFE3F3,#E2ECF7);
  border:1px solid var(--gac-bd-2);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
}
.gac-spkr-tile-q{ font-size:44px; font-weight:800; line-height:1; color:#A886B5; }
.gac-spkr-tile-label{ font-size:10.5px; letter-spacing:.14em; color:var(--gac-lav-3); }
.gac-spkr-name{ font-size:24px; font-weight:800; color:var(--gac-ink); line-height:1.2; }
.gac-spkr-role{
  font-size:12px; font-weight:600; letter-spacing:.14em; text-transform:uppercase;
  color:var(--gac-lav); margin-top:6px;
}
.gac-spkr-bio{ font-size:15px; line-height:1.65; color:var(--gac-text); margin:12px 0 0; }
.gac-spkr--tba .gac-spkr-name{ color:var(--gac-muted); }
.gac-spkr--tba .gac-spkr-bio{ color:var(--gac-muted); }
.gac-spkr-cta{
  display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  background:rgba(240,180,55,.13); border:1px solid rgba(224,160,40,.4);
  border-radius:18px; padding:24px 28px;
}
.gac-spkr-cta-text{ font-size:17px; font-weight:700; color:var(--gac-ink); }
@media (max-width:640px){
  .gac-spkr{ flex-direction:column; gap:18px; }
  .gac-spkr-photo, .gac-spkr-tile{ width:100%; height:220px; }
}

/* --------------------------------------------------------------------------
   17. Watch-back year pages  [gac_watchback]
   -------------------------------------------------------------------------- */

.gac-yearchips{ display:flex; justify-content:center; gap:10px; flex-wrap:wrap; margin-top:26px; }
.gac-yearchip{
  display:inline-flex; align-items:center; min-height:44px;
  padding:0 20px; border-radius:999px;
  border:1.5px solid #D8CCE0; color:var(--gac-ink-2);
  font-size:15px; font-weight:700; text-decoration:none;
  transition:border-color .18s ease, color .18s ease, background-color .18s ease;
}
.gac-yearchip:hover{ border-color:var(--gac-purple); color:var(--gac-purple); }
.gac-yearchip--on{
  background:var(--gac-purple); border-color:var(--gac-purple); color:#fff;
}
.gac-yearchip--on:hover{ background:var(--gac-purple-dark); border-color:var(--gac-purple-dark); color:#fff; }

.gac-videos{
  display:grid; grid-template-columns:repeat(3,1fr); gap:18px;
  margin-top:36px; text-align:left;
}
.gac-vid{
  display:block; text-decoration:none;
  border:1px solid var(--gac-bd-2); border-radius:14px; overflow:hidden;
  background:#fff;
  transition:border-color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.gac-vid:hover{
  border-color:var(--gac-purple);
  transform:translateY(-3px);
  box-shadow:0 10px 26px rgba(36,27,46,.12);
}
.gac-vid-thumb{
  position:relative; display:block; aspect-ratio:16/9;
  background:linear-gradient(135deg,#7A2384,#2E7CC3);
}
.gac-vid-thumb img{
  width:100%; height:100%; object-fit:cover; display:block;
}
/* The play button has to read on ANY thumbnail. The 2024 slides are mostly
   white artwork and the 2023 ones are dark video stills, so a translucent
   white circle vanished on one set and worked on the other. A dark fill with
   a white ring and a white triangle is legible on both, because none of it
   depends on what is behind it. Deviates from the design's
   rgba(255,255,255,0.22) deliberately. */
.gac-vid-play{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  width:52px; height:52px; border-radius:50%;
  background:rgba(28,18,38,.62);
  border:2px solid rgba(255,255,255,.92);
  box-shadow:0 2px 14px rgba(0,0,0,.38);
  -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
  display:flex; align-items:center; justify-content:center;
  transition:background-color .18s ease, transform .18s ease;
}
.gac-vid-play:before{
  content:""; width:0; height:0; margin-left:4px;
  border-top:9px solid transparent; border-bottom:9px solid transparent;
  border-left:14px solid #fff;
}
.gac-vid:hover .gac-vid-play{
  background:var(--gac-purple);
  transform:translate(-50%,-50%) scale(1.06);
}
@media (prefers-reduced-motion:reduce){
  .gac-vid:hover .gac-vid-play{ transform:translate(-50%,-50%); }
}
.gac-vid-dur{
  position:absolute; right:8px; bottom:8px;
  background:rgba(20,12,26,.72); color:#fff;
  font-size:11.5px; font-weight:700; letter-spacing:.02em;
  padding:3px 7px; border-radius:6px;
}
/* Everything inside the card is a span so wpautop cannot split the anchor,
   which means each one has to be made block-level by hand - otherwise the
   title and the speaker run together on a single line. */
.gac-vid-body{ display:block; padding:15px 16px 17px; }
.gac-vid-title{
  display:block; margin:0;
  font-size:14.5px; font-weight:700; line-height:1.4; color:var(--gac-ink);
}
.gac-vid-speaker{
  display:block; margin-top:8px;
  font-size:12.5px; font-weight:600; line-height:1.35;
  /* The design called for #8A7396, but at 12.5px that is 4.15:1 on white -
     under the 4.5:1 WCAG AA minimum for small text. Darkened to 7.4:1. */
  color:var(--gac-text);
}
/* A hairline above the name so it reads as a separate fact, not a run-on. */
.gac-vid-speaker:before{
  content:""; display:block; width:26px; height:2px; border-radius:2px;
  background:var(--gac-bd-2); margin-bottom:8px;
}
.gac-videos-more{ text-align:center; margin-top:26px; }
.gac-videos-more a{ color:var(--gac-purple); font-size:15px; font-weight:700; }
.gac-videos-more a:hover{ color:var(--gac-purple-dark); }
.gac-videos-empty{
  text-align:center; padding:34px 24px; color:var(--gac-lav); font-size:14.5px;
}
@media (max-width:900px){ .gac-videos{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .gac-videos{ grid-template-columns:1fr; } }

/* --------------------------------------------------------------------------
   18. Gravity Forms — Register (3e), Donate (3f), Contact (3h)

   Most of the brand work is done by the gform_default_styles filter in the
   snippet, which makes Gravity Forms write on-brand values into its own
   per-form inline block. That block is ID-scoped, so it beats class selectors
   however many you stack; setting the defaults means we are correcting rather
   than fighting, and almost nothing here needs !important.

   Custom properties are set on the wrapper itself. A declaration on an element
   always beats an inherited one, so this wins over the inline block without
   any specificity war.
   -------------------------------------------------------------------------- */

body.gac-home .gform_wrapper{
  /* Controls */
  --gf-ctrl-font-family: "Archivo", system-ui, sans-serif;
  --gf-ctrl-radius: 12px;
  --gf-ctrl-size-height-lg: 48px;
  --gf-ctrl-size-height-md: 48px;
  --gf-ctrl-accent-color: var(--gac-purple);
  --gf-ctrl-textarea-radius: 12px;
  --gf-ctrl-select-dropdown-radius: 12px;
  --gf-ctrl-multiselect-radius: 12px;
  --gf-ctrl-checkbox-check-radius: 5px;

  /* Labels and helper text */
  --gf-ctrl-label-font-family-primary: "Archivo", system-ui, sans-serif;
  --gf-ctrl-label-font-family-secondary: "Archivo", system-ui, sans-serif;
  --gf-ctrl-label-font-family-req: "Archivo", system-ui, sans-serif;
  --gf-ctrl-desc-font-family: "Archivo", system-ui, sans-serif;
  --gf-ctrl-placeholder-font-family: "Archivo", system-ui, sans-serif;

  /* Buttons: full-width purple pill */
  --gf-ctrl-btn-font-family: "Archivo", system-ui, sans-serif;
  --gf-ctrl-btn-font-weight: 700;
  --gf-ctrl-btn-font-size-md: 17px;
  --gf-ctrl-btn-radius: 999px;
  --gf-ctrl-btn-size-md: 54px;
  --gf-ctrl-btn-size-height-md: 54px;
  --gf-ctrl-btn-bg-color-primary: var(--gac-purple);
  --gf-ctrl-btn-bg-color-hover-primary: var(--gac-purple-dark);
  --gf-ctrl-btn-bg-color-focus-primary: var(--gac-purple-dark);
  --gf-ctrl-btn-border-color-primary: var(--gac-purple);
  --gf-ctrl-btn-border-color-hover-primary: var(--gac-purple-dark);
  --gf-ctrl-btn-color-primary: #fff;
  --gf-ctrl-btn-color-hover-primary: #fff;
  --gf-ctrl-btn-color-focus-primary: #fff;

  /* Brand palette */
  --gf-color-primary: var(--gac-purple);
  --gf-color-primary-rgb: 122,35,132;
  --gf-color-primary-darker: var(--gac-purple-dark);
  --gf-color-primary-contrast: #fff;
  --gf-color-in-ctrl-primary: var(--gac-purple);
  --gf-color-in-ctrl-primary-rgb: 122,35,132;
  --gf-color-out-ctrl-light: #D8CCE0;
  --gf-color-out-ctrl-dark: var(--gac-text);

  /* The card */
  max-width:760px; margin:40px auto 0;
  background:#fff; border:1px solid var(--gac-bd-2);
  border-radius:20px; padding:40px 44px;
  text-align:left;
}

body.gac-home .gform_wrapper .gfield_label{
  font-size:14.5px; font-weight:700; color:var(--gac-ink);
}
body.gac-home .gform_wrapper .gfield_required{
  font-size:12px; font-weight:500; color:var(--gac-lav);
}
body.gac-home .gform_wrapper .gfield_description,
body.gac-home .gform_wrapper .gform_fileupload_rules{
  font-size:13px; line-height:1.5; color:var(--gac-lav);
}

/* Checkbox and radio rows: the whole row is the tap target, not the 20px box.
   Matters more than usual here - the audience is an ADHD one. */
body.gac-home .gform_wrapper .gchoice{
  background:#F7F3F9; border-radius:12px;
  padding:12px 16px; margin-bottom:8px;
  display:flex; align-items:center; gap:14px; min-height:44px;
}
body.gac-home .gform_wrapper .gchoice:hover{ background:#F1E9F5; }
body.gac-home .gform_wrapper .gchoice input[type="checkbox"],
body.gac-home .gform_wrapper .gchoice input[type="radio"]{
  width:20px; height:20px; flex:none; accent-color:var(--gac-purple); margin:0;
}
body.gac-home .gform_wrapper .gchoice label{
  font-size:15px; line-height:1.4; color:var(--gac-ink-2); margin:0; flex:1;
}

/* Section breaks as quiet purple sub-headings. */
body.gac-home .gform_wrapper .gsection{
  border-bottom:1px solid var(--gac-bd-1);
  margin:30px 0 6px; padding-bottom:10px;
}
body.gac-home .gform_wrapper .gsection_title{
  font-size:17px; font-weight:800; color:var(--gac-purple); margin:0;
}

/* Donation group: Currency, Amount and Total read as one tinted panel. */
body.gac-home .gform_wrapper .gac-donation-panel,
body.gac-home .gform_wrapper .ginput_product_price_wrapper{
  background:#FAF7FC; border:1px solid var(--gac-bd-3);
  border-radius:16px; padding:24px;
}
/* Total is a figure, not something to type into. */
body.gac-home .gform_wrapper .ginput_total,
body.gac-home .gform_wrapper .gfield_total .ginput_container{
  font-size:20px; font-weight:800; color:var(--gac-ink);
}

body.gac-home .gform_wrapper .gform_footer{ margin-top:28px; padding:0; }
body.gac-home .gform_wrapper .gform_button{ width:100%; }

/* Validation, kept legible rather than shouty. */
body.gac-home .gform_wrapper .gform_validation_errors{
  background:rgba(226,75,74,.07); border:1px solid rgba(226,75,74,.35);
  border-radius:14px; box-shadow:none;
}
body.gac-home .gform_wrapper .gform_confirmation_message{
  background:rgba(59,165,92,.09); border:1px solid rgba(59,165,92,.35);
  border-radius:16px; padding:22px 24px;
  font-size:16px; color:var(--gac-ink);
}

@media (max-width:640px){
  body.gac-home .gform_wrapper{ padding:26px 20px; border-radius:16px; }
}

/* ==========================================================================
   19. MOBILE HOMEPAGE  (design blocks 4a + 4b)

   Reference width 390px, applied from 768px down. This is a re-layout, not a
   squeeze: the arc becomes a vertical relay timeline, the year cards become
   horizontal rows, and the menu becomes a full-screen sheet.
   ========================================================================== */

@media (max-width:768px){

  .gac-section{ padding-left:20px; padding-right:20px; }

  /* ---- Header (mock: padding 12px 20px, logo 42px, 44px burger) --------- */
  .gac-hdr.et_pb_section{ padding:12px 20px !important; }
  .gac-hdr .et_pb_menu__logo img{ height:42px !important; max-height:42px; width:auto !important; }
  .gac-hdr .et_mobile_nav_menu{ margin:0; }
  .gac-hdr .mobile_menu_bar{
    width:44px; height:44px; border-radius:12px;
    display:flex !important; align-items:center; justify-content:center;
  }
  .gac-hdr .mobile_menu_bar:hover{ background:#F7F3F9; }
  /* Hide Divi's icon glyph; the three bars below replace it. */
  .gac-hdr .mobile_menu_bar:before{ display:none !important; content:none !important; }
  .gac-burger{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; }
  .gac-burger i{ display:block; width:20px; height:2px; border-radius:2px; background:var(--gac-ink); }

  /* ---- Hero (mock: 36px top, kicker 11px/.16em, H1 +16, sub +14) -------- */
  .gac-hero{ padding-top:36px; }
  .gac-kicker{ font-size:11px; gap:8px; letter-spacing:.16em; flex-wrap:wrap; }
  .gac-h1, body.gac-home h1.gac-h1{
    font-size:37px !important; line-height:1.08 !important; margin-top:16px !important;
  }
  .gac-sub, body.gac-home .gac-sub p{
    font-size:15.5px !important; line-height:1.6 !important; margin-top:14px !important;
  }
  .gac-cta-row{ flex-direction:column; gap:10px; margin-top:24px; }
  /* Uniform padding, not padding-x - that is what makes the pill the right
     shape rather than a wide flat lozenge. */
  .gac-cta-row a.gac-btn--primary{ font-size:16px !important; padding:16px !important; }
  .gac-cta-row a.gac-btn--ghost{ font-size:15.5px !important; font-weight:600 !important; padding:15px !important; }
  .gac-cta-row a.gac-btn{ width:100%; text-align:center; }
  .gac-credit, body.gac-home .gac-credit p{
    font-size:12px !important; column-gap:8px; row-gap:4px;
    line-height:1.5; margin-top:18px !important;
  }
  /* Names must not break mid-way, so wraps fall between charities. */
  .gac-credit strong{ white-space:nowrap; }

  /* ---- Countdown (mock: block +26, label 11px, unit 10px, pill +14) ----- */
  .gac-cd-row{ flex-direction:column; gap:10px; margin-top:26px; }
  .gac-cd-label{ font-size:11px; }
  .gac-cd{ display:grid; grid-template-columns:repeat(4,1fr); gap:8px; width:100%; }
  .gac-cd-card{ width:auto; }
  .gac-cd-num{ font-size:26px; }
  .gac-cd-unit{ font-size:10px; }
  .gac-pill{
    border-radius:14px; align-items:flex-start; gap:9px; padding:12px 16px;
    text-align:left; margin-top:14px; font-size:14px;
  }
  .gac-pill-dot{ margin-top:6px; }

  /* ---- Relay timeline (replaces the arc) ------------------------------- */
  .gac-arc-panel{ border-radius:20px; padding:24px 0 22px; margin-top:36px; }
  .gac-arc-head{ padding:0 20px; }
  .gac-arc-head-r{ margin-top:2px; }

  .gac-arc-list{ display:block; padding:18px 20px 0; position:relative; }
  .gac-arc-list ol{ position:relative; padding-left:26px; }
  /* The rail: dawn purple at the top through to amber at the end. */
  .gac-arc-list ol:before{
    content:""; position:absolute; left:4px; top:6px; bottom:6px; width:2px;
    background:linear-gradient(180deg,#7A2384,rgba(122,35,132,.35) 30%,rgba(46,124,195,.45) 60%,#E58E1A);
    border-radius:2px;
  }
  .gac-arc-list li{
    position:relative; display:flex; align-items:flex-start; gap:12px;
    padding:12px 0; border-bottom:0; min-height:0;
  }
  .gac-arc-list .gac-arc-ldot{
    position:absolute; left:-26px; top:16px;
    width:8px; height:8px; background:rgba(122,35,132,.5); border:0;
  }
  .gac-arc-list li.is-host .gac-arc-ldot{
    width:10px; height:10px; left:-27px; top:15px;
    background:var(--gac-purple);
    box-shadow:0 0 0 3px rgba(122,35,132,.18);
  }
  .gac-arc-lmain{ display:block; }
  .gac-arc-list .gac-arc-lcity{ display:block; font-size:14px; font-weight:600; color:var(--gac-name); }
  .gac-arc-list li.is-host .gac-arc-lcity{ font-size:15px; font-weight:700; color:var(--gac-ink); }
  .gac-arc-list .gac-arc-pin{ margin-top:6px; }
  .gac-arc-list .gac-arc-lright{ margin-left:auto; text-align:right; flex:none; }
  .gac-arc-list .gac-arc-ltime{ font-size:14px; font-weight:700; color:var(--gac-text); }
  .gac-arc-list li.is-host .gac-arc-ltime{ font-size:15px; font-weight:800; color:var(--gac-amber-text); }
  .gac-arc-list .gac-arc-lyours{ font-size:11.5px; }
  .gac-arc-caption{
    margin:16px 20px 0; padding:16px 0 0;
    border-top:1px solid rgba(122,35,132,.12); font-size:12.5px;
  }
  .gac-sch-tzbar, .gac-tz-wrap{ padding:0 20px; }

  /* ---- Charity strip --------------------------------------------------- */
  .gac-ribbon{ gap:12px; padding:20px 16px; margin-top:32px; }
  /* Fixed 100x44 tiles that WRAP. Without flex:0 0 auto the five logos
     compress onto one line and shrink to illegibility on a narrow screen. */
  .gac-ribbon-item{ flex:0 0 auto; width:100px; }
  .gac-ribbon-item img{ width:100%; max-width:100px; max-height:44px; object-fit:contain; }
  /* The logos carry the names, so the captions are redundant here. */
  .gac-ribbon-name{ display:none; }
  .gac-ribbon-caption{ font-size:14px; margin-top:14px; }

  /* ---- Stats ----------------------------------------------------------- */
  .gac-stats{ grid-template-columns:repeat(2,1fr); gap:26px 18px; padding:30px 0; margin-top:36px; }
  .gac-stat-num{ font-size:32px !important; }

  /* ---- Registration counter -------------------------------------------- */
  .gac-regbar{ flex-direction:column; align-items:flex-start; gap:10px; padding:18px 20px; }
  .gac-regbar-text{ font-size:15px; }
  .gac-regbar-link{ margin-left:21px; }

  /* ---- Line-up --------------------------------------------------------- */
  .gac-sec-head{ margin-bottom:20px; }
  .gac-h2, body.gac-home h2.gac-h2{ font-size:27px !important; }
  .gac-h2--sm, body.gac-home h2.gac-h2--sm{ font-size:24px !important; }
  .gac-speakers{ grid-template-columns:repeat(2,1fr); gap:12px; }
  .gac-spk{ aspect-ratio:4/5; }
  /* Four mystery tiles on mobile, then a full-width prompt. */
  .gac-spk-5{ display:none; }
  .gac-spk--cta{
    grid-column:1 / -1; aspect-ratio:auto;
    flex-direction:row; justify-content:space-between; align-items:center;
    padding:16px 18px; gap:14px; text-align:left;
  }
  .gac-spk-cta-title{ font-size:15px; }

  /* ---- Watch back: horizontal rows, not aspect-locked ------------------ */
  .gac-watch{ grid-template-columns:1fr; gap:12px; }
  .gac-wcard{
    aspect-ratio:auto; min-height:96px;
    flex-direction:row; align-items:center; justify-content:space-between;
    gap:14px; padding:16px 18px;
  }
  .gac-wcard-year{ font-size:24px !important; }
  .gac-wcard-tag{ font-size:13px; margin-top:4px; }
  /* Mock 4a stacks year, tagline and "Watch on YouTube" in one left column
     with the play circle centred on the right - not the circle above the
     label. Absolute positioning keeps the text block full width. */
  .gac-wcard{ position:relative; padding-right:78px; display:block; }
  .gac-wcard-foot{ display:block; }
  .gac-wcard-cta{ display:block; font-size:12.5px; font-weight:700; margin-top:8px; }
  .gac-wcard-play{
    position:absolute; right:18px; top:50%; transform:translateY(-50%);
    width:44px; height:44px;
  }

  /* ---- Donate band ----------------------------------------------------- */
  .gac-donate{ flex-direction:column; text-align:center; gap:18px; padding:26px 20px; }
  .gac-donate-body{ margin-left:auto; margin-right:auto; }
  a.gac-donate-btn{ width:100%; text-align:center; }

  /* ---- Footer ---------------------------------------------------------- */
  .gac-ftr.et_pb_section{ padding:24px 20px !important; }
  .gac-ftr-inner{ flex-direction:column; text-align:center; gap:14px; }
  .gac-ftr-crisis{ line-height:1.6; }
  .gac-ftr-links{ justify-content:center; gap:20px; }
  .gac-ftr-links a{ min-height:44px; display:inline-flex; align-items:center; }

  /* The mock shortens some headings on mobile. We do not - the copy on this
     site has been through Henry and takes precedence over the mock's words.
     .gac-hide-sm stays available if a specific heading ever needs trimming. */
  .gac-hide-sm{ display:none; }

  /* ---- Inner-page heroes keep step with the homepage ------------------- */
  .gac-page{ padding-top:32px; }
  .gac-page-h1, body.gac-home .gac-page-h1{ font-size:30px !important; }
  .gac-page-sub{ font-size:15.5px; }
  .gac-page-cta{ flex-direction:column; gap:10px; }
  .gac-page-cta a.gac-btn{ width:100%; text-align:center; }
}

/* --------------------------------------------------------------------------
   The full-screen menu sheet (block 4b). Divi's own dropdown, restyled - the
   menu stays in Appearance > Menus rather than moving into code.

   Everything keys off .gac-sheet-open, a class the JavaScript puts on the
   sheet itself. Scoping to ".mobile_nav.opened .et_mobile_menu" is unsafe:
   in the Divi Menu module the two elements can be siblings, so the selector
   never matches. And nothing here may be left unscoped - an unscoped
   display:flex overrides Divi's display:none and the sheet covers the page
   on every load.
   -------------------------------------------------------------------------- */

@media (max-width:768px){
  body.gac-menu-open{ overflow:hidden; }

  .gac-hdr .et_mobile_menu.gac-sheet-open{
    position:fixed !important; inset:0 !important;
    z-index:100001 !important;
    width:100% !important; max-width:none !important;
    margin:0 !important; padding:0 20px 24px !important;
    background:#FFFEFE !important;
    border:0 !important; box-shadow:none !important;
    overflow-y:auto !important;
    display:flex !important; flex-direction:column;
  }

  /* Mock 4b: header 12px 20px with a hairline, logo 42px, plain 44px close
     with no border or fill - the boxed button read as heavy. */
  .gac-menu-head{
    display:flex; align-items:center; justify-content:space-between;
    padding:12px 0; position:sticky; top:0; z-index:1;
    background:#FFFEFE; border-bottom:1px solid var(--gac-bd-1);
    margin:0 0 12px;
  }
  .gac-menu-logo-slot{ display:flex; align-items:center; }
  .gac-menu-logo{
    height:42px !important; width:auto !important;
    max-width:none !important; max-height:42px !important; display:block;
  }
  .gac-menu-close{
    appearance:none; width:44px; height:44px; border-radius:12px;
    border:0; background:transparent;
    font-size:26px; font-weight:300; line-height:1;
    color:var(--gac-ink); cursor:pointer;
    display:flex; align-items:center; justify-content:center;
  }
  .gac-menu-close:hover{ background:#F7F3F9; }

  .gac-hdr .et_mobile_menu.gac-sheet-open li a{
    font-size:19px !important; font-weight:600 !important;
    color:var(--gac-ink) !important;
    padding:16px 4px !important; border:0 !important;
    border-bottom:1px solid #F1EBF4 !important;
    display:flex !important; align-items:center; justify-content:space-between;
  }
  /* The last item carries no rule - the divider would float under nothing. */
  .gac-hdr .et_mobile_menu.gac-sheet-open > li:last-of-type > a{ border-bottom:0 !important; }
  .gac-hdr .et_mobile_menu.gac-sheet-open li a:after{
    content:"\2192"; color:#C9B9D2; font-size:16px; font-weight:400;
  }
  .gac-hdr .et_mobile_menu.gac-sheet-open li.current-menu-item > a,
  .gac-hdr .et_mobile_menu.gac-sheet-open li.current_page_item > a{
    color:var(--gac-purple) !important; font-weight:700 !important;
  }
  .gac-hdr .et_mobile_menu.gac-sheet-open li.gac-nav-cta > a{
    background:var(--gac-purple) !important; color:#fff !important;
    border:0 !important; border-radius:999px !important;
    justify-content:center; margin-top:18px !important;
    padding:16px !important; font-size:16px !important; font-weight:700 !important;
  }
  .gac-hdr .et_mobile_menu.gac-sheet-open li.gac-nav-cta > a:after{ content:none; }
  .gac-hdr .et_mobile_menu.gac-sheet-open .sub-menu{
    border:0 !important; box-shadow:none !important;
    background:transparent !important; padding:0 0 0 16px !important;
  }
  .gac-hdr .et_mobile_menu.gac-sheet-open .sub-menu li a{
    font-size:16px !important; padding:13px 0 !important;
  }

  /* Mock 4b: amber dot, 14px radius, 14/16 padding, 13.5px text. */
  .gac-menu-crisis{
    margin-top:auto; display:flex; align-items:flex-start; gap:10px;
    padding:14px 16px; border-radius:14px;
    background:rgba(240,180,55,.13); border:1px solid rgba(224,160,40,.4);
    text-decoration:none; color:var(--gac-ink);
    transition:border-color .18s ease;
  }
  .gac-menu-crisis:hover{ border-color:var(--gac-amber); }
  .gac-menu-crisis-dot{
    flex:none; width:8px; height:8px; border-radius:50%;
    background:var(--gac-amber); margin-top:6px;
  }
  .gac-menu-crisis-text{ font-size:13.5px; line-height:1.5; }
  .gac-menu-crisis-text strong{ font-weight:700; color:var(--gac-ink); }
  .gac-menu-crisis-sub{ color:var(--gac-amber-text); font-weight:600; }
}

/* The injected header and crisis card must never show inside Divi's closed
   dropdown, or on desktop where the sheet is not used at all. */
.gac-menu-head, .gac-menu-crisis{ display:none; }
.gac-burger{ display:none; }
@media (max-width:768px){ .gac-burger{ display:flex; } }
@media (max-width:768px){
  .et_mobile_menu.gac-sheet-open .gac-menu-head{ display:flex; }
  .et_mobile_menu.gac-sheet-open .gac-menu-crisis{ display:block; }
}
