:root {
  --ink:      #191A19;
  --ink-2:    #14150f;
  --forest:   #1E5128;
  --leaf:     #4E9F3D;
  --sage:     #D8E9A8;
  --paper:    #ECF2E3;
  --muted:    #8FA07E;
  --hair:     rgba(216,233,168,0.12);

  /* Type scale — consistent sizes across the site */
  --fs-xs:    13px;
  --fs-sm:    16px;
  --fs-base:  18px;
  --fs-md:    20px;
  --fs-lg:    22px;
  --fs-xl:    28px;
}

* { margin:0; padding:0; box-sizing:border-box; }

html {
  scroll-behavior:smooth;
  cursor: url('../cursor_img.png') 24 24, url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24"><g fill="none" stroke="%234E9F3D" stroke-width="2"><circle cx="12" cy="12" r="8.5"></circle><path d="M1 12h5M18 12h5M12 6V1.04M12 23v-4.96M11.95 11.95h.1v.1h-.1z"></path></g></svg>') 24 24, auto;
}

body {
  background:var(--ink);
  color:var(--paper);
  font-family:'Jost', sans-serif;
  font-weight:500;
  font-size:var(--fs-base);
  line-height:1.6;
  min-height:100vh;
  overflow-x:hidden;
  position:relative;
  cursor: url('../cursor_img.png') 24 24, url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24"><g fill="none" stroke="%234E9F3D" stroke-width="2"><circle cx="12" cy="12" r="8.5"></circle><path d="M1 12h5M18 12h5M12 6V1.04M12 23v-4.96M11.95 11.95h.1v.1h-.1z"></path></g></svg>') 24 24, auto;
}

a, button, input, select, textarea, [role="button"], .fact-card, .cta, .btn, .nav-btn-register, .gallery-arrow, .dot, .back-to-top, .sponsor-link {
  cursor: url('../cursor_img.png') 24 24, url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24"><g fill="none" stroke="%23D8E9A8" stroke-width="2"><circle cx="12" cy="12" r="8.5"></circle><path d="M1 12h5M18 12h5M12 6V1.04M12 23v-4.96M11.95 11.95h.1v.1h-.1z"></path></g></svg>') 24 24, pointer !important;
}

/* ---------- ambient glow + lattice ---------- */
.lattice {
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:0.55;
}

.glow {
  position:fixed;
  top:-20%;
  left:50%;
  transform:translateX(-50%);
  width:1100px;
  height:900px;
  background:
    radial-gradient(ellipse at 50% 30%, rgba(78,159,61,0.22) 0%, rgba(30,81,40,0.10) 40%, transparent 70%),
    radial-gradient(ellipse at 30% 70%, rgba(30,81,40,0.12) 0%, transparent 55%);
  z-index:0;
  pointer-events:none;
}

/* ---------- header / nav ---------- */
header {
  position:fixed;
  top:0;
  left:0;
  right:0;
  width:100%;
  z-index:100;
  background:rgba(20,21,15,0.88);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid rgba(216,233,168,0.12);
  padding:0 4vw;
}

.header-desktop-wrap {
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  width:100%;
  max-width:1300px;
  margin:0 auto;
  height:80px;
}

.nav-group {
  display:flex;
  align-items:center;
}

.nav-left {
  justify-content:flex-start;
  gap:44px;
}

.nav-center {
  display:flex;
  justify-content:center;
  align-items:center;
}

.nav-center a {
  display:flex;
  align-items:center;
  text-decoration:none;
}

.logo-img {
  width:68px;
  height:68px;
  object-fit:contain;
  transition:transform 0.25s ease;
}

.logo-img:hover {
  transform:scale(1.06);
}

.wcpclogo-img {
  width:208px;
  height:68px;
  object-fit:contain;
  transition:transform 0.25s ease;
}

.wcpclogo-img:hover {
  transform:scale(1.06);
}

.nav-right {
  justify-content:flex-end;
  gap:36px;
}

.nav-left a,
.nav-link-contact {
  color:var(--muted);
  text-decoration:none;
  font-size:var(--fs-base);
  font-weight:500;
  letter-spacing:0.04em;
  position:relative;
  transition:color 0.25s ease;
}

.nav-left a::after,
.nav-link-contact::after {
  content:"";
  position:absolute;
  left:0;
  bottom:-6px;
  width:0;
  height:1px;
  background:var(--leaf);
  transition:width 0.25s ease;
}

.nav-left a:hover,
.nav-link-contact:hover { color:var(--paper); }

.nav-left a:hover::after,
.nav-link-contact:hover::after { width:100%; }

/* Light green grid box Register Now button (matching reference BOOK NOW style) */
.nav-btn-register {
  background:linear-gradient(135deg, var(--sage), var(--leaf));
  color:var(--ink);
  font-family:'Jost', sans-serif;
  font-weight:700;
  font-size:var(--fs-sm);
  text-transform:uppercase;
  letter-spacing:0.08em;
  padding:12px 26px;
  border-radius:4px;
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 4px 16px rgba(78,159,61,0.3);
  transition:transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.nav-btn-register:hover {
  transform:translateY(-2px);
  box-shadow:0 6px 22px rgba(78,159,61,0.5);
  background:linear-gradient(135deg, #e5f5be, #54b242);
}

.nav-toggle { display:none; }

/* ---------- EchoText Component Styles ---------- */
.echo-text {
  position: relative;
  display: inline-block;
  white-space: normal;
  line-height: 1.18;
  letter-spacing: -0.02em;
  user-select: none;
  contain: layout style;
  font-kerning: normal;
  text-rendering: geometricPrecision;
  max-width: 960px;
}

.echo-text__echo {
  position: absolute;
  inset: 0;
  display: block;
  pointer-events: none;
  transform: translate3d(0, 0, 0);
  transform-origin: 50% 50%;
  will-change: transform, opacity;
  backface-visibility: hidden;
}

.echo-text__echo--front {
  position: relative;
  z-index: 2;
  opacity: 1;
  filter: none;
  text-shadow: 0 0.035em 0 rgba(255, 255, 255, 0.04);
  will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
  .echo-text__echo:not(.echo-text__echo--front) {
    display: none;
  }
  .echo-text__echo--front {
    transform: none !important;
  }
}

/* ---------- hero / main ---------- */
main {
  position:relative;
  z-index:5;
  max-width:1100px;
  margin:0 auto;
  padding:120px 6vw 40px;
  text-align:center;
  display:flex;
  flex-direction:column;
  align-items:center;
}

.presents {
  color:var(--muted);
  font-size:var(--fs-base);
  letter-spacing:0.02em;
  margin-bottom:16px;
}

h1 {
  font-family:'Philosopher', serif;
  font-weight:700;
  font-size:clamp(2.2rem, 5.2vw, 4.2rem);
  line-height:1.2;
  color:var(--sage);
  max-width:960px;
  margin-bottom:28px;
  word-break:keep-all;
  overflow-wrap:normal;
  hyphens:none;
}

.tagline {
  font-size:var(--fs-base);
  color:var(--muted);
  margin-bottom:20px;
}

/* ---------- info bar ---------- */
.info-bar {
  display:flex;
  align-items:center;
  border:1px solid var(--hair);
  border-radius:0;
  background:linear-gradient(180deg, rgba(30,81,40,0.14), rgba(20,21,15,0.4));
  padding:4px;
  gap:0;
}

.info-cell {
  padding:12px 28px;
  font-size:var(--fs-base);
  color:var(--muted);
  white-space:nowrap;
}

.info-cell.divider {
  border-left:1px solid var(--hair);
  border-right:1px solid var(--hair);
}

.cta {
  font-family:'Jost', sans-serif;
  font-weight:600;
  font-size:var(--fs-base);
  color:var(--ink);
  background:linear-gradient(135deg, var(--sage), var(--leaf));
  border:none;
  border-radius:100px;
  padding:12px 34px;
  cursor:pointer;
  text-decoration:none;
  transition:transform 0.2s ease, box-shadow 0.2s ease;
  box-shadow:0 8px 24px rgba(78,159,61,0.25);
}

.cta:hover {
  transform:translateY(-2px);
  box-shadow:0 12px 30px rgba(78,159,61,0.4);
}

/* ---------- facts / quick cards ---------- */
.facts {
  position:relative;
  z-index:5;
  max-width:1200px;
  margin:0 auto;
  padding:24px 6vw 45px;
}

.facts-heading {
  font-family:'Philosopher', serif;
  font-size:var(--fs-base);
  color:var(--muted);
  text-align:center;
  margin-bottom:28px;
}

.facts-grid {
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:24px;
}

.fact-card {
  position:relative;
  height:300px;
  background:var(--ink-2);
  border:1px solid var(--hair);
  border-radius:8px;
  cursor:pointer;
  font-family:inherit;
  color:inherit;
  text-align:left;
  overflow:hidden;
  transition:border-color 0.25s ease, background 0.25s ease;
}

.fact-card:hover {
  border-color:rgba(78,159,61,0.45);
}
.fact-card:focus-visible { outline:2px solid var(--leaf); outline-offset:3px; }

.fact-card.is-flipped {
  background:linear-gradient(165deg, rgba(30,81,40,0.35), var(--ink-2) 65%);
  border-color:rgba(78,159,61,0.5);
}

.fact-face {
  position:absolute;
  inset:0;
  padding:30px 28px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:12px;
  transition:opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease;
  z-index:2;
}

.fact-face--front {
  align-items:flex-start;
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}

.fact-face--back {
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}

.fact-card.is-flipped .fact-face--front {
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}

.fact-card.is-flipped .fact-face--back {
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}

.fact-face h3 {
  font-family:'Philosopher', serif;
  font-weight:700;
  font-size:var(--fs-xl);
  color:var(--sage);
}

.fact-face p {
  font-size:var(--fs-base);
  color:var(--muted);
  line-height:1.6;
}

.fact-hint {
  font-size:var(--fs-xs);
  color:var(--leaf);
  opacity:0.85;
  margin-top:auto;
  font-weight:600;
}

.pixel-grid,
.pixel-card-overlay {
  position:absolute;
  inset:0;
  z-index:1;
  display:grid;
  pointer-events:none;
}

.pixel {
  opacity:0;
  transition:opacity 0.18s ease;
}

/* ---------- timeline ---------- */
.timeline-section {
  position:relative;
  z-index:5;
  max-width:1000px;
  margin:0 auto;
  padding:24px 6vw 45px;
}

.section-heading {
  text-align:center;
  margin-bottom:44px;
}

.section-heading h2 {
  font-family:'Philosopher', serif;
  font-weight:700;
  font-size:clamp(2rem, 4vw, 2.8rem);
  color:var(--sage);
  margin-bottom:14px;
}

.section-heading p {
  color:var(--muted);
  font-size:var(--fs-base);
}

.timeline-list {
  position:relative;
  max-width:820px;
  margin:0 auto;
}

.timeline-list::before {
  content:"";
  position:absolute;
  left:50%;
  top:6px;
  bottom:6px;
  width:2px;
  background:linear-gradient(180deg, var(--sage), var(--leaf));
  transform:translateX(-50%);
  opacity:0.55;
}

.timeline-item {
  position:relative;
  display:flex;
  margin-bottom:48px;
}

.timeline-item:last-child { margin-bottom:0; }
.timeline-item:nth-child(odd) { justify-content:flex-start; }
.timeline-item:nth-child(even) { justify-content:flex-end; }

.timeline-node {
  position:absolute;
  left:50%;
  top:0;
  transform:translateX(-50%);
  width:46px;
  height:46px;
  border-radius:0;
  background:var(--ink-2);
  border:2px solid var(--leaf);
  display:flex;
  align-items:center;
  justify-content:center;
  font-family:'Philosopher', serif;
  font-weight:700;
  font-size:var(--fs-md);
  color:var(--sage);
  z-index:2;
}

.timeline-item:nth-child(even) .timeline-node { border-color:var(--sage); }

.timeline-card { width:42%; }

.timeline-item:nth-child(odd) .timeline-card { text-align:right; padding-right:52px; }
.timeline-item:nth-child(even) .timeline-card { text-align:left; padding-left:52px; }

.timeline-card h3 {
  font-family:'Philosopher', serif;
  font-weight:700;
  font-size:var(--fs-lg);
  color:var(--paper);
  margin-bottom:12px;
}

.timeline-date {
  display:inline-block;
  font-size:var(--fs-sm);
  color:var(--sage);
  border:1px solid rgba(216,233,168,0.3);
  border-radius:0;
  padding:5px 16px;
  margin-bottom:14px;
}

.timeline-card p {
  font-size:var(--fs-base);
  color:var(--muted);
  line-height:1.65;
}

/* ---------- register / quick access ---------- */
.register-section {
  position:relative;
  z-index:5;
  max-width:1000px;
  margin:0 auto;
  padding:10px 6vw 45px;
}

.register-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:24px;
  align-items:stretch;
}

.register-card {
  text-align:center;
  padding:36px 30px;
  border:1px solid rgba(216,233,168,0.22);
  border-radius:8px;
  background:linear-gradient(165deg, rgba(30,81,40,0.25), var(--ink-2) 75%);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:space-between;
  height:100%;
  transition:border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
}

.register-card:hover {
  border-color:rgba(78,159,61,0.45);
  transform:translateY(-3px);
  box-shadow:0 12px 28px rgba(0,0,0,0.3);
}

.register-card h2 {
  font-family:'Philosopher', serif;
  font-weight:700;
  font-size:clamp(1.6rem, 3vw, 2.2rem);
  color:var(--sage);
  margin-bottom:12px;
}

.register-card .fee {
  font-size:var(--fs-base);
  color:var(--paper);
  margin-bottom:8px;
}

.register-card .fee strong { color:var(--leaf); font-weight:600; }

.register-card .instruction {
  font-size:var(--fs-base);
  color:var(--muted);
  margin-bottom:24px;
  max-width:320px;
}

.register-card .card-action {
  margin-top:auto;
  width:100%;
  display:flex;
  justify-content:center;
}

.btn {
  display:inline-block;
  font-family:'Jost', sans-serif;
  font-weight:600;
  font-size:var(--fs-base);
  text-decoration:none;
  border-radius:100px;
  padding:14px 38px;
  transition:transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, color 0.2s ease;
}

.btn-solid {
  color:var(--ink);
  background:linear-gradient(135deg, var(--sage), var(--leaf));
  box-shadow:0 8px 24px rgba(78,159,61,0.25);
}

.btn-solid:hover {
  transform:translateY(-2px);
  box-shadow:0 12px 30px rgba(78,159,61,0.4);
}

.quick-links {
  display:flex;
  justify-content:center;
  gap:16px;
  flex-wrap:wrap;
  width:100%;
}

.btn-outline {
  color:var(--sage);
  background:transparent;
  border:1.5px solid rgba(216,233,168,0.4);
  padding:12px 28px;
}

.btn-outline:hover {
  background:rgba(78,159,61,0.12);
  border-color:var(--leaf);
}

/* ---------- gallery ---------- */
.gallery-section {
  position:relative;
  z-index:5;
  max-width:1100px;
  margin:0 auto;
  padding:24px 6vw 45px;
  text-align:center;
}

.gallery-wrap {
  position:relative;
  max-width:940px;
  margin:0 auto;
}

.gallery-viewport {
  position:relative;
  width:100%;
  aspect-ratio:16/9;
  min-height:460px;
  border:1px solid rgba(216,233,168,0.2);
  border-radius:8px;
  overflow:hidden;
  background:#0b0d0b;
  box-shadow:0 16px 40px rgba(0,0,0,0.5);
}

.gallery-slide {
  position:absolute;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  padding:16px;
  background:#0b0d0b;
}

.gallery-slide.is-active { display:flex; }

.gallery-slide img {
  max-width:100%;
  max-height:100%;
  width:auto;
  height:auto;
  object-fit:contain;
  border-radius:4px;
}

.gallery-slide span {
  position:absolute;
  bottom:20px;
  left:24px;
  z-index:2;
  font-size:var(--fs-base);
  font-weight:600;
  letter-spacing:0.03em;
  color:var(--paper);
  background:rgba(18,20,18,0.85);
  border:1px solid rgba(216,233,168,0.3);
  border-radius:100px;
  padding:8px 20px;
  box-shadow:0 4px 16px rgba(0,0,0,0.4);
}

.gallery-arrow {
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:44px;
  height:44px;
  border-radius:50%;
  border:1px solid rgba(216,233,168,0.35);
  background:rgba(18,20,18,0.75);
  backdrop-filter:blur(4px);
  color:var(--sage);
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  z-index:6;
  transition:background 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
}

.gallery-arrow:hover { background:rgba(78,159,61,0.3); border-color:var(--leaf); transform:translateY(-50%) scale(1.08); }
.gallery-arrow--prev { left:16px; }
.gallery-arrow--next { right:16px; }

.gallery-dots {
  display:flex;
  justify-content:center;
  gap:10px;
  margin-top:28px;
}

.dot {
  width:8px;
  height:8px;
  border-radius:0;
  border:none;
  padding:0;
  background:rgba(216,233,168,0.25);
  cursor:pointer;
  transition:background 0.25s ease, transform 0.25s ease;
}

.dot.is-active { background:var(--leaf); transform:scale(1.35); }

/* ---------- footer / contact ---------- */
.site-footer {
  position:relative;
  z-index:5;
  border-top:1px solid var(--hair);
  background:var(--ink-2);
  padding:45px 6vw 30px;
}

.footer-inner {
  position:relative;
  max-width:1050px;
  margin:0 auto;
  text-align:center;
}

.contact-cards {
  display:flex;
  justify-content:center;
  gap:24px;
  flex-wrap:wrap;
  margin:28px 0 32px;
}

.contact-card {
  border:1px solid var(--hair);
  border-radius:8px;
  padding:20px 36px;
  min-width:230px;
  background:rgba(30,81,40,0.1);
  transition:border-color 0.25s ease;
}

.contact-card:hover {
  border-color:rgba(78,159,61,0.4);
}

.contact-card h3 {
  font-family:'Philosopher', serif;
  font-weight:700;
  font-size:var(--fs-md);
  color:var(--paper);
  margin-bottom:6px;
}

.contact-card a {
  color:var(--leaf);
  text-decoration:none;
  font-size:var(--fs-base);
  font-weight:600;
}

.contact-card a:hover { text-decoration:underline; }

.social-row {
  display:flex;
  justify-content:center;
  gap:16px;
  margin-bottom:32px;
}

.social-icon {
  width:42px;
  height:42px;
  border-radius:8px;
  border:1px solid rgba(216,233,168,0.25);
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--muted);
  transition:color 0.25s ease, border-color 0.25s ease, background 0.25s ease;
}

.social-icon:hover {
  color:var(--sage);
  border-color:var(--leaf);
  background:rgba(78,159,61,0.18);
}

.footer-columns {
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  align-items:center;
  justify-items:center;
  gap:24px;
  margin-bottom:36px;
}

.footer-col .col-label {
  font-size:var(--fs-base);
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.06em;
  color:var(--leaf);
  margin-bottom:12px;
}

.footer-col.sponsors {
  justify-self:start;
  text-align:left;
}

.sponsor-logos {
  display:flex;
  align-items:center;
  gap:16px;
  margin-top:6px;
}

.sponsor-link {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  text-decoration:none;
  transition:opacity 0.25s ease, transform 0.25s ease;
}

.sponsor-link:hover {
  opacity:0.85;
  transform:translateY(-2px);
}

.sponsor-logo {
  height:52px;
  width:auto;
  max-width:100%;
  object-fit:contain;
}

.sponsor-logo.logo-codechef {
  height:54px;
}

.sponsor-logo.logo-gfg {
  height:44px;
}

.sponsor-divider {
  color:rgba(216,233,168,0.4);
  font-size:32px;
  font-weight:300;
  line-height:1;
  user-select:none;
  margin:0 4px;
}

.footer-col.brand {
  justify-self:center;
  display:flex;
  justify-content:center;
}

.footer-logo {
  width:110px;
  height:110px;
  border:none;
  border-radius:0;
  display:flex;
  align-items:center;
  justify-content:center;
  text-decoration:none;
  overflow:visible;
  background:transparent;
  box-shadow:none;
  transition:transform 0.25s ease;
}

.footer-logo-img {
  width:100%;
  height:100%;
  object-fit:contain;
}

.footer-logo:hover {
  background:transparent;
  border-color:transparent;
  transform:scale(1.06);
  box-shadow:none;
}

.footer-col.map-col {
  justify-self:end;
  text-align:right;
  width:100%;
  max-width:320px;
}

.heart-icon {
  color:var(--sage);
  display:inline-block;
  margin:0 3px;
  font-size:1.1em;
}

.map-embed {
  width:100%;
  aspect-ratio:16/10;
  border-radius:8px;
  overflow:hidden;
  border:1px solid var(--hair);
  margin-bottom:10px;
}

.map-embed iframe {
  width:100%;
  height:100%;
  border:0;
  filter:grayscale(0.3) invert(0.92) contrast(0.9);
}

.back-to-top {
  margin:20px auto 30px;
  width:44px;
  height:44px;
  border-radius:50%;
  border:1px solid rgba(216,233,168,0.35);
  background:rgba(30,81,40,0.18);
  color:var(--sage);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  transition:background 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
}

.back-to-top:hover { background:rgba(78,159,61,0.3); border-color:var(--leaf); transform:translateY(-3px); }

.footer-credit {
  font-size:var(--fs-sm);
  color:var(--muted);
  line-height:1.7;
  margin-bottom:10px;
}

.footer-copy {
  font-size:var(--fs-sm);
  color:var(--muted);
  opacity:0.7;
}

/* ---------- responsive ---------- */
@media (max-width:820px) {
  header {
    padding:0 20px;
    height:70px;
    display:flex;
    align-items:center;
    justify-content:space-between;
  }

  .header-desktop-wrap {
    position:fixed;
    top:0; right:0;
    height:100vh;
    width:75%;
    max-width:320px;
    background:var(--ink-2);
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:flex-start;
    padding:40px 32px;
    gap:28px;
    transform:translateX(100%);
    transition:transform 0.3s ease;
    z-index:20;
    border-left:1px solid var(--hair);
  }

  .header-desktop-wrap.open { transform:translateX(0); }

  .nav-group {
    flex-direction:column;
    align-items:flex-start;
    gap:20px;
    width:100%;
  }

  .nav-center {
    order:-1;
    margin-bottom:10px;
  }

  .nav-btn-register {
    width:100%;
    text-align:center;
  }

  .nav-toggle {
    display:flex;
    flex-direction:column;
    gap:5px;
    background:none;
    border:none;
    cursor:pointer;
    z-index:30;
    padding:8px;
  }
  .nav-toggle span {
    width:22px;
    height:1.5px;
    background:var(--paper);
  }

  .info-bar {
    flex-direction:column;
    width:100%;
  }
  .info-cell {
    width:100%;
    text-align:center;
    padding:16px 0;
  }
  .info-cell.divider {
    border-left:none;
    border-right:none;
    border-top:1px solid var(--hair);
    border-bottom:1px solid var(--hair);
  }
  .cta { width:100%; text-align:center; margin:6px 0; }

  .facts-grid { grid-template-columns:1fr; }
  .fact-card { height:auto; min-height:220px; }

  .register-grid { grid-template-columns:1fr; }
  .register-card { padding:28px 20px; }
  .quick-links { flex-direction:column; align-items:stretch; }
  .btn-outline { text-align:center; }

  .gallery-viewport { aspect-ratio:16/10; min-height:320px; }
  .gallery-arrow--prev { left:12px; }
  .gallery-arrow--next { right:12px; }
  .gallery-arrow { background:rgba(25,26,25,0.75); }

  .footer-columns { grid-template-columns:1fr; text-align:center; gap:32px; }
  .sponsors, .map-col { text-align:center; }
  .sponsor-logos { justify-content:center; }
  .back-to-top { position:static; margin:0 auto 30px; }
}

@media (max-width:720px) {
  .timeline-list::before { left:22px; }
  .timeline-node { left:22px; width:38px; height:38px; font-size:var(--fs-sm); }
  .timeline-item:nth-child(odd),
  .timeline-item:nth-child(even) { justify-content:flex-start; }
  .timeline-card { width:100%; }
  .timeline-item:nth-child(odd) .timeline-card,
  .timeline-item:nth-child(even) .timeline-card {
    text-align:left;
    padding-left:64px;
    padding-right:0;
  }
}

@media (prefers-reduced-motion: reduce) {
  * { transition:none !important; scroll-behavior:auto !important; }
}
