/* Homepage actions share the speaker-profile pixel geometry. */
.home-page {
  --home-blue: #1763ff;
  --home-blue-hover: #0b50de;
  --home-ease: cubic-bezier(.23, 1, .32, 1);
}
/* Keep biography controls aligned when the supplied role titles wrap. */
.home-page .speaker-info[data-enhanced] { flex:1 0 auto; row-gap:16px; }
.home-page .speaker-toggle { margin-top:auto; }
/* Cold loading never exposes a fallback font or an uninitialised counter. */
.home-hero-font-pending .home-page .hero-content { visibility:hidden; }
.home-hero-font-fallback .home-page .hero-content { font-family:Arial,sans-serif; }
.home-page .home-next-countdown:not([data-countdown-ready]) { visibility:hidden; }
.home-page .hero-content .home-city-semantic,
.home-page .hero-content .home-city-visual,
.home-page .hero-content .home-city-letters { font:inherit; letter-spacing:inherit; }
/* A single fixed line reserves the city name's space before any motion. */
.home-page .home-next-city-name {
  position:relative;
  width:100%;
  height:1em;
  white-space:nowrap;
  isolation:isolate;
}
.home-page .home-city-semantic { display:block; height:1em; }
.home-page .home-city-visual {
  display:none;
  position:absolute;
  inset:0;
  text-align:center;
  pointer-events:none;
}
.home-page [data-city-running] .home-city-semantic { opacity:0; }
.home-page [data-city-running] .home-city-visual { display:block; }
.home-page .home-city-letters { display:block; }
.home-page .home-city-visual::before,
.home-page .home-city-visual::after {
  content:attr(data-city);
  position:absolute;
  inset:0;
  opacity:0;
}
.home-page .home-city-visual::before {
  color:#04bba9;
  clip-path:polygon(0 32%,100% 32%,100% 38%,0 38%);
  transform:translateX(var(--city-shift, 0px));
}
.home-page .home-city-visual::after {
  color:#ed4b41;
  clip-path:polygon(0 59%,100% 59%,100% 65%,0 65%);
  transform:translateX(calc(-1 * var(--city-shift, 0px)));
}
.home-page .home-city-pixels {
  position:absolute;
  inset:0;
  opacity:.8;
}
.home-page .home-city-pixels i {
  position:absolute;
  left:calc(50% + var(--pixel-x));
  top:var(--pixel-y);
  width:clamp(3px,.06em,7px);
  aspect-ratio:1;
  background:#04bba9;
  transform:translateY(var(--city-pixel-move,0px)) rotate(var(--city-turn,0deg));
  transition:transform 100ms cubic-bezier(.23,1,.32,1);
}
.home-page .home-city-pixels i:nth-child(even) {
  background:#ed4b41;
  transform:translateX(var(--city-pixel-move,0px)) rotate(calc(-1 * var(--city-turn,0deg)));
}
.home-page .home-city-pixels i:nth-child(3n) { background:#fff; }
.home-page .home-city-pixels i:nth-child(1) { --pixel-x:-2.65em; --pixel-y:.2em; }
.home-page .home-city-pixels i:nth-child(2) { --pixel-x:2.55em; --pixel-y:.7em; }
.home-page .home-city-pixels i:nth-child(3) { --pixel-x:-2.48em; --pixel-y:.74em; }
.home-page .home-city-pixels i:nth-child(4) { --pixel-x:2.36em; --pixel-y:.12em; }
.home-page .home-city-pixels i:nth-child(5) { --pixel-x:-1.65em; --pixel-y:.06em; }
.home-page .home-city-pixels i:nth-child(6) { --pixel-x:1.55em; --pixel-y:.91em; }
.home-page .home-city-pixels i:nth-child(7) { --pixel-x:-.56em; --pixel-y:.87em; }
.home-page .home-city-pixels i:nth-child(8) { --pixel-x:.6em; --pixel-y:.09em; }
.home-page [data-city-fragmented="true"] .home-city-letters {
  mask-image:linear-gradient(#000 0 32%,transparent 32% 38%,#000 38% 59%,transparent 59% 65%,#000 65% 100%);
}
.home-page [data-city-fragmented="true"] .home-city-visual::before,
.home-page [data-city-fragmented="true"] .home-city-visual::after,
.home-page [data-city-fragmented="true"] .home-city-pixels { opacity:1; }
.home-page .home-next-city-date { position:relative; width:100%; gap:0; }
.home-page .home-next-city-date > span { border:0; padding:0; }
.home-page .home-city-date-semantic { width:100%; display:flex; justify-content:center; gap:16px; white-space:nowrap; }
.home-page .home-next-countdown { position:relative; width:min(100%,calc(clamp(32px,4vw,56px) * 4.5 + 78px)); min-height:calc(clamp(32px,4vw,56px) * 1.1 + 24px); }
.home-page .home-next-countdown span { line-height:16px; }
.home-page .home-next-countdown b { min-width:2ch; }
.home-page .home-countdown-swap { display:none; position:absolute; inset:0; grid-template-columns:repeat(4,1fr); gap:inherit; }
.home-page .home-next-countdown[data-city-clock] > div:not(.home-countdown-swap) { opacity:0; }
.home-page .home-next-countdown[data-city-clock] .home-countdown-swap { display:grid; }
.home-page [data-city-fragmented="true"] ~ .home-next-countdown[data-city-clock] .home-countdown-swap b {
  text-shadow:1px 0 #04bba9,-1px 0 #ed4b41;
  transform:translateY(-1px);
}
@media(max-width:700px) {
  /* Melbourne is the widest name; it also fits a 320px phone. */
  .home-page .home-next-city-name { font-size:clamp(40px,14.5vw,74px); }
  .home-page .home-city-date-semantic { flex-direction:column; gap:2px; }
  .home-page .home-next-countdown { width:min(100%,222px); min-height:61.6px; }
  .home-page .home-next-countdown span { line-height:14px; }
  html:not(.js) .home-page .hero .hero-content { padding-top:120px; }
}
@media(prefers-reduced-motion:reduce) {
  .home-page [data-city-running] .home-city-semantic { opacity:1; }
  .home-page [data-city-running] .home-city-visual { display:none; }
  .home-page .home-next-countdown[data-city-clock] .home-countdown-swap { display:none; }
  .home-page .home-next-countdown[data-city-clock] > div:not(.home-countdown-swap) { opacity:1; }
}
/* Use the original ABC artwork as a positive mark on the white media strip. */
.home-page .press .press-logos > img.press-abc { filter:brightness(0); }
/* Move the copy toward the film without moving the film's scroll scene. */
.home-page .intro { padding-top:102.4px; }
.home-page .intro-copy { margin-bottom:32px; }
@media(max-width:700px) {
  .home-page .intro { padding-top:72px; }
  .home-page .intro-copy { margin-bottom:8px; }
}
.home-page .site-header { --nav-blue: var(--home-blue); }
.home-page .site-header .nav-ticket,
.home-page .ftr2__hostbtn {
  color: #fff;
  --pixel-contrast: #fff;
}
.home-page .site-header .nav-ticket::before,
.home-page .ftr2__hostbtn::before { background: var(--home-blue); }
.home-page .site-section .btn {
  --button-bg: var(--home-blue);
  --button-fg: #fff;
  color: #fff;
}
.home-page .home-action { gap: 14px; }
.home-page .home-action::after { content: none; }
.home-page .home-action-mark {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  overflow: visible;
  pointer-events: none;
  text-decoration: none;
}
.home-page .home-mark-glyph {
  display: block;
  width: 22px;
  height: 22px;
  overflow: visible;
  transform-origin: center;
  transition: transform 360ms var(--home-ease), opacity 160ms ease;
}
.home-page .home-mark-cell { fill: var(--home-blue); }
.home-page .home-mark-cell:nth-child(even) { fill: #04bba9; }
.home-page :is(.nav-ticket, .tour-action, .btn, .ftr2__hostbtn) .home-mark-cell { fill: #fff; }
.home-page :is(.nav-ticket, .tour-action, .btn, .ftr2__hostbtn) .home-mark-cell:nth-child(even) { fill: #63efda; }
.home-page .home-action-mark::after {
  content: '';
  position: absolute;
  inset: 4px;
  background: currentColor;
  opacity: 0;
  transform: rotate(0deg) scale(.8);
  transition: transform 180ms var(--home-ease), opacity 120ms ease;
}
.home-page .text-link {
  display: inline-flex;
  align-items: center;
  color: var(--home-blue);
  font-weight: 500;
  text-decoration: none;
}
.home-page .participate-grid .text-link {
  justify-content: space-between;
  align-self: stretch;
  min-height: 48px;
  padding-top: 12px;
  border-top: 1px solid #dbe2f0;
}
.home-page .tour-card .tour-action {
  align-items: center;
  justify-content: space-between;
  min-height: 50px;
  padding: 13px 16px;
  margin-top: 26px;
  background: var(--home-blue);
  color: #fff;
  font-weight: 500;
  line-height: 1.3;
  --step: 6px;
  clip-path: var(--pixel-shape);
  text-decoration: none;
  transition: background-color 160ms ease;
}
.home-page .tour-card-content > .tour-action { margin-top: auto; }
.home-page .tour-card-content > p { margin-bottom: 26px; }
.home-page .site-section .statement {
  background: #f2f6ff;
  color: #111;
}
.home-page .site-section .statement .eyebrow { color: var(--home-blue) !important; }
.home-page .site-section .statement .btn { --button-bg: var(--home-blue); --button-fg: #fff; }
.home-page [data-home-action]:focus-visible {
  outline: 3px solid var(--home-blue);
  outline-offset: 5px;
}
.home-page :is(.tour-card, .ftr2__hostbtn)[data-home-action]:focus-visible {
  outline-color: #fff;
  outline-offset: -5px;
}
/* Pointer press packs the turning motif into a square. Native navigation is immediate. */
.home-page [data-home-action]:is(:active, [data-home-pressed]) .home-mark-glyph {
  transform: rotate(450deg) scale(.82);
  opacity: 0;
  transition-duration: 180ms, 120ms;
}
.home-page [data-home-action]:is(:active, [data-home-pressed]) .home-action-mark::after {
  transform: rotate(90deg) scale(1);
  opacity: 1;
}
@media (hover: hover) and (pointer: fine) {
  .home-page [data-home-action]:hover:not(:focus-visible):not(:active):not([data-home-pressed]):not(:disabled) .home-mark-glyph {
    transform: rotate(360deg);
  }
  .home-page .site-header .nav-ticket:hover::before,
  .home-page .ftr2__hostbtn:hover::before,
  .home-page .site-section .btn:hover::before,
  .home-page .tour-card:hover .tour-action { background: var(--home-blue-hover); filter: none; }
  .home-page .text-link:hover { color: var(--home-blue-hover); }
  .home-page .tour-card:hover .tour-action { text-decoration: none; }
}
/* Keep keyboard focus and repeated form submissions free of rotation. */
.home-page [data-home-action]:focus-visible .home-mark-glyph,
.home-page [data-home-action]:focus-visible .home-action-mark::after,
.home-page [data-home-action]:disabled .home-mark-glyph,
.home-page [data-home-action]:disabled .home-action-mark::after {
  transform: none;
  transition: none;
}
.home-page [data-home-action]:focus-visible .home-mark-glyph,
.home-page [data-home-action]:disabled .home-mark-glyph { opacity: 1; }
.home-page [data-home-action]:focus-visible .home-action-mark::after,
.home-page [data-home-action]:disabled .home-action-mark::after { opacity: 0; }

/* A clear invitation, direct contact route and quiet, well-labelled signup. */
.home-page #register.home-contact {
  position: relative;
  background: #fff;
  padding-block: clamp(68px, 7vw, 112px);
}
.home-page .home-contact .newsletter-grid {
  align-items: start;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(40px, 7vw, 100px);
  border-top: 1px solid #dbe2ee;
  padding-top: clamp(40px, 5vw, 70px);
}
.home-page .home-contact .copy { min-width: 0; }
.home-page .home-contact .copy > .eyebrow { margin: 0 0 24px; color: var(--home-blue); font-size: 14px; }
.home-page .home-contact .copy > p:not(.eyebrow) { max-width: 37ch; margin-top: 24px; color: #575b62; font-size: 19px; line-height: 1.55; }
.home-page .home-contact-direct {
  padding-top: 30px;
  margin-top: 34px;
  border-top: 1px solid #dbe2ee;
  max-width: 390px;
}
.home-page .home-contact .copy .home-contact-caption { margin: 0 0 8px; color: #575b62; font-size: 15px; }
.home-page .home-contact-direct > .text-link { display: flex; justify-content: space-between; font-size: 22px; min-height: 48px; }
.home-page .home-contact .copy .home-contact-email { margin: 8px 0 0; font-size: 15px; }
.home-page .home-contact-email a { color: #575b62; text-decoration: underline; text-underline-offset: 4px; overflow-wrap: anywhere; }
.home-page .home-contact-form {
  position: relative;
  min-width: 0;
  padding: 34px;
  background: #f5f7fc;
  border-top: 3px solid var(--home-blue);
}
.home-page .home-contact-form-heading { margin-bottom: 28px; }
.home-page .site-section .home-contact-form-heading h3 { margin: 14px 0 10px; font-size: 30px; }
.home-page .home-contact-form-heading p { margin: 0; color: #575b62; font-size: 16px; line-height: 1.5; }
.home-page .home-contact-squares { display: grid; grid-template-columns: repeat(2, 7px); grid-template-rows: repeat(2, 7px); gap: 3px; width: 17px; height: 17px; }
.home-page .home-contact-squares i { background: var(--home-blue); }
.home-page .home-contact-squares i:nth-child(2) { background: #08bba9; }
.home-page .home-contact-squares i:nth-child(3) { background: transparent; }
.home-page .home-contact-form .field { margin-bottom: 20px; }
.home-page .home-contact-form label { color: #343940; font-weight: 500; }
.home-page .site-section .home-contact-form :is(input, select) { min-height: 54px; border-color: #cbd2df; background: #fff; }
.home-page .home-contact-form input::placeholder { color: #6f7580; }
.home-page .home-contact-form :is(input, select):focus-visible { outline: 2px solid var(--home-blue); outline-offset: 2px; }
.home-page .home-contact-form .btn { justify-content: space-between; width: 100%; margin-top: 4px; }
.home-page .home-contact-form .field-note { margin-top: 14px; }
.home-page .home-contact-form .form-status { margin-top: 12px; }
.home-page .home-contact-form .form-status:empty { margin: 0; min-height: 0; }
@media (max-width: 760px) {
  .home-page .home-contact .newsletter-grid { grid-template-columns: minmax(0, 1fr); gap: 34px; padding-top: 38px; }
  .home-page .home-contact-direct { max-width: none; margin-top: 26px; padding-top: 24px; }
  .home-page .home-contact-form { padding: 26px; }
  .home-page .home-contact .copy > p:not(.eyebrow) { font-size: 18px; }
}
@media (max-width: 380px) {
  .home-page .home-contact-form { padding: 24px 20px; }
  .home-page .home-contact-direct > .text-link { font-size: 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .home-page .home-mark-glyph,
  .home-page .home-action-mark::after { transform: none !important; transition: none !important; }
  .home-page [data-home-action] .home-mark-glyph { opacity: 1 !important; }
  .home-page [data-home-action] .home-action-mark::after { opacity: 0 !important; }
  .home-page .tour-action { transition: none; }
}

/* Keep both faces and the handshake in view when participation cards become
   one wide column. The original grey/hover/focus treatments remain shared. */
@media (min-width:800px) and (max-width:1000px) {
  .home-page .participate-photo-card--handshake { min-height:380px; }
}

/* The participate cards used to keep their photograph hidden until hover, which
   left three grey boxes with a hole in the middle and showed nothing at all on a
   touch screen. The photograph now sits at the top of the card and stays there,
   the way the community tiles read. */
.home-page .participate-photo-card {
  padding: 0;
  gap: 0;
  min-height: 0;
  justify-content: flex-start;
}
.home-page .participate-photo-card .participate-photo {
  position: static;
  z-index: 0;
  width: 100%;
  height: auto;
  margin: 0 0 22px;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  transform: none;
  transition: filter 220ms linear;
}
.home-page .participate-photo-card > h3 { margin: 0 0 14px; padding-inline: 28px; }
.home-page .participate-photo-card > p { margin: 0 0 24px; padding-inline: 28px; }
.home-page .participate-photo-card > .btn {
  align-self: stretch;
  width: calc(100% - 56px);
  margin: auto 28px 28px;
}
/* No dark wash and no white-on-hover text: the card keeps its own surface. */
.home-page .participate-photo-card::after { content: none; }
@media (hover: hover) and (pointer: fine) {
  .home-page .participate-photo-card:hover .participate-photo { transform: none; filter: grayscale(1); }
  .home-page .participate-photo-card:hover::after { opacity: 0; }
  .home-page .participate-photo-card:hover h3,
  .home-page .participate-photo-card:hover p { color: inherit; }
}
.home-page .participate-photo-card:focus-within .participate-photo { transform: none; }
@media (max-width: 760px) {
  .home-page .participate-photo-card--handshake { min-height: 0; }
  .home-page .participate-photo-card > h3 { padding-inline: 22px; }
  .home-page .participate-photo-card > p { padding-inline: 22px; }
  .home-page .participate-photo-card > .btn { width: calc(100% - 44px); margin: auto 22px 22px; }
}
@media (prefers-reduced-motion: reduce) {
  .home-page .participate-photo-card .participate-photo { transition: none; }
}
