/* ==========================================================================
   Gnu Kids — Party & Play
   Design tokens
   ========================================================================== */
:root{
  --cream:      #FFFBF2;
  --cream-dim:  #FCF3DF;
  --ink:        #2B2420;
  --maroon:     #8A1B1F;
  --maroon-dk:  #6B1418;
  --sunset:     #F07D2A;
  --marigold:   #F5C13B;
  --teal:       #1E9C8B;
  --magenta:    #C13584;

  --font-display: 'Baloo 2', system-ui, sans-serif;
  --font-body: 'Nunito', system-ui, sans-serif;

  --radius-lg: 28px;
  --radius-md: 18px;
  --radius-sm: 10px;
  --shadow-soft: 0 18px 40px -18px rgba(43,36,32,0.35);
  --shadow-pop: 0 10px 0 0 rgba(0,0,0,0.08);
}

*{ box-sizing:border-box; }

.skip-link{
  position:absolute;
  left:-9999px;
  top:auto;
  background:var(--maroon);
  color:#fff;
  padding:.75rem 1.25rem;
  border-radius:0 0 var(--radius-sm) 0;
  font-family:var(--font-display);
  font-weight:600;
  z-index:2000;
}
.skip-link:focus{
  left:0; top:0;
  color:#fff;
}

html{ scroll-behavior:smooth; }

body{
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--cream);
  font-size:1.05rem;
  line-height:1.65;
  overflow-x:hidden;
}

h1,h2,h3,h4,.display-font{
  font-family:var(--font-display);
  font-weight:700;
  letter-spacing:.2px;
  color:var(--maroon);
}

a{ color:var(--maroon); text-decoration:none; }
a:hover{ color:var(--sunset); }

::selection{ background:var(--marigold); color:var(--ink); }

.container-xl{
  max-width:1240px;
  margin-inline:auto;
  padding-inline:1.25rem;
}

img{ max-width:100%; display:block; }

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

/* ==========================================================================
   Utility bits
   ========================================================================== */
.eyebrow{
  font-family:var(--font-display);
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:2.5px;
  font-size:.8rem;
  color:var(--teal);
  display:inline-flex;
  align-items:center;
  gap:.5rem;
}
.eyebrow::before{
  content:"";
  width:22px; height:3px;
  background:var(--sunset);
  border-radius:3px;
  display:inline-block;
}

.section{ padding:5.5rem 0; position:relative; }
.section-tight{ padding:3.25rem 0; }

.section-head{ max-width:640px; margin-bottom:3rem; }
.section-head.center{ margin-inline:auto; text-align:center; }
.section-head h2{ font-size:clamp(2rem,4vw,2.75rem); margin:.5rem 0 .75rem; line-height:1.1; }
.section-head p{ font-size:1.08rem; color:#5b4f47; }

.squiggle-underline{
  display:block;
  width:96px;
  height:14px;
  margin-top:.35rem;
}
.section-head.center .squiggle-underline{ margin-inline:auto; }

/* ==========================================================================
   Buttons
   ========================================================================== */
.btn-gnu{
  font-family:var(--font-display);
  font-weight:600;
  font-size:1rem;
  padding:.75rem 1.6rem;
  border-radius:999px;
  border:2px solid transparent;
  display:inline-flex;
  align-items:center;
  gap:.55rem;
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease;
  white-space:nowrap;
}
.btn-gnu:active{ transform:translateY(2px); }

.btn-primary-gnu{
  background:var(--sunset);
  color:#fff;
  box-shadow:0 6px 0 0 var(--maroon-dk);
}
.btn-primary-gnu:hover{
  background:#e96f18;
  color:#fff;
  transform:translateY(-2px);
  box-shadow:0 8px 0 0 var(--maroon-dk);
}
.btn-primary-gnu:active{ box-shadow:0 3px 0 0 var(--maroon-dk); }

.btn-whatsapp{
  background:#25D366;
  color:#fff;
  box-shadow:0 6px 0 0 #128C3E;
}
.btn-whatsapp:hover{
  background:#22c15e;
  color:#fff;
  transform:translateY(-2px);
  box-shadow:0 8px 0 0 #128C3E;
}
.btn-whatsapp:active{ box-shadow:0 3px 0 0 #128C3E; }

.btn-outline-gnu{
  background:transparent;
  border-color:var(--cream);
  color:var(--cream);
}
.btn-outline-gnu:hover{
  background:var(--cream);
  color:var(--maroon);
}

.btn-ghost-gnu{
  background:#fff;
  color:var(--maroon);
  border-color:#eee0cc;
}
.btn-ghost-gnu:hover{ color:var(--sunset); border-color:var(--sunset); }

/* ==========================================================================
   Header / Nav
   ========================================================================== */
.site-header{
  position:sticky; top:0; z-index:1000;
  background:rgba(255,251,242,0.92);
  backdrop-filter:blur(8px);
  border-bottom:1px solid rgba(138,27,31,0.08);
}
.navbar-brand-gnu{ display:flex; align-items:center; gap:.65rem; }
.navbar-brand-gnu img{ height:48px; width:auto; }
.navbar-brand-gnu .brand-word{
  font-family:var(--font-display);
  font-weight:800;
  font-size:1.35rem;
  color:var(--maroon);
  line-height:1;
}
.navbar-brand-gnu .brand-sub{
  font-size:.68rem;
  letter-spacing:1.5px;
  text-transform:uppercase;
  color:var(--teal);
  font-weight:700;
  display:block;
}

.gnu-nav .nav-link{
  font-family:var(--font-display);
  font-weight:600;
  color:var(--ink);
  padding:.5rem 1rem !important;
  position:relative;
}
.gnu-nav .nav-link:hover{ color:var(--sunset); }
.gnu-nav .nav-link.active{ color:var(--maroon); }

.header-actions{ display:flex; align-items:center; gap:.6rem; }
.header-actions .btn-gnu{ padding:.55rem 1.1rem; font-size:.9rem; }

/* ==========================================================================
   Hero
   ========================================================================== */
.hero{
  position:relative;
  min-height:92vh;
  display:flex;
  align-items:flex-end;
  overflow:hidden;
  background:var(--ink);
}
.hero-img{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover;
  object-position:65% 40%;
}
.hero-scrim{
  position:absolute; inset:0;
  background:
    linear-gradient(180deg, rgba(43,36,32,0.15) 0%, rgba(43,36,32,0.35) 45%, rgba(43,36,32,0.88) 100%),
    linear-gradient(90deg, rgba(43,36,32,0.75) 0%, rgba(43,36,32,0.15) 55%);
}
.hero-content{
  position:relative;
  z-index:2;
  padding:9rem 0 4.5rem;
  color:#fff;
  max-width:760px;
}
.hero-content .eyebrow{ color:var(--marigold); }
.hero-content .eyebrow::before{ background:var(--marigold); }
.hero-content h1{
  color:#fff;
  font-size:clamp(2.6rem,6vw,4.6rem);
  line-height:1.03;
  margin:.6rem 0 1.1rem;
  text-shadow:0 4px 24px rgba(0,0,0,.25);
}
.hero-content h1 .accent{ color:var(--marigold); }
.hero-content p.lead-copy{
  font-size:1.2rem;
  color:#fdf6e6;
  max-width:560px;
  margin-bottom:1.75rem;
}
.hero-cta{ display:flex; flex-wrap:wrap; gap:.85rem; margin-bottom:2rem; }

.hero-chips{ display:flex; flex-wrap:wrap; gap:.6rem 1rem; }
.hero-chip{
  display:inline-flex; align-items:center; gap:.45rem;
  background:rgba(255,255,255,0.14);
  border:1px solid rgba(255,255,255,0.35);
  backdrop-filter:blur(4px);
  color:#fff;
  font-weight:700;
  font-size:.85rem;
  padding:.4rem .9rem;
  border-radius:999px;
}

/* ==========================================================================
   Balloon garland divider — signature element
   ========================================================================== */
.balloon-divider{
  width:100%;
  height:56px;
  background-repeat:repeat-x;
  background-position:center;
  background-size:300px 56px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='56' viewBox='0 0 300 56'%3E%3Cpath d='M0 8 Q37.5 20 75 8 T150 8 T225 8 T300 8' fill='none' stroke='%23D8C6A8' stroke-width='2'/%3E%3Cg%3E%3Cline x1='25' y1='8' x2='25' y2='24' stroke='%23D8C6A8' stroke-width='1.5'/%3E%3Cellipse cx='25' cy='34' rx='13' ry='16' fill='%238A1B1F'/%3E%3Cpath d='M25 50 L21 55 L29 55 Z' fill='%238A1B1F'/%3E%3C/g%3E%3Cg%3E%3Cline x1='100' y1='8' x2='100' y2='16' stroke='%23D8C6A8' stroke-width='1.5'/%3E%3Cellipse cx='100' cy='26' rx='13' ry='16' fill='%23F07D2A'/%3E%3Cpath d='M100 42 L96 47 L104 47 Z' fill='%23F07D2A'/%3E%3C/g%3E%3Cg%3E%3Cline x1='175' y1='8' x2='175' y2='22' stroke='%23D8C6A8' stroke-width='1.5'/%3E%3Cellipse cx='175' cy='32' rx='13' ry='16' fill='%23F5C13B'/%3E%3Cpath d='M175 48 L171 53 L179 53 Z' fill='%23F5C13B'/%3E%3C/g%3E%3Cg%3E%3Cline x1='250' y1='8' x2='250' y2='14' stroke='%23D8C6A8' stroke-width='1.5'/%3E%3Cellipse cx='250' cy='24' rx='13' ry='16' fill='%231E9C8B'/%3E%3Cpath d='M250 40 L246 45 L254 45 Z' fill='%231E9C8B'/%3E%3C/g%3E%3C/svg%3E");
}
.balloon-divider.on-dark{ opacity:.9; }
.balloon-divider.flip{ transform:scaleY(-1); }

/* squiggle underline uses the palette as a short balloon string */
.squiggle-underline{
  background-repeat:no-repeat;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='14' viewBox='0 0 96 14'%3E%3Cpath d='M2 7 Q 14 1 26 7 T 50 7 T 74 7 T 96 7' fill='none' stroke-linecap='round' stroke-width='4' stroke='%23F07D2A'/%3E%3Ccircle cx='2' cy='7' r='3.4' fill='%238A1B1F'/%3E%3Ccircle cx='34' cy='7' r='3.4' fill='%23F5C13B'/%3E%3Ccircle cx='66' cy='7' r='3.4' fill='%231E9C8B'/%3E%3Ccircle cx='94' cy='7' r='3.4' fill='%23C13584'/%3E%3C/svg%3E");
}

/* ==========================================================================
   Marquee strip (trust / quick facts)
   ========================================================================== */
.fact-strip{
  background:var(--maroon);
  color:var(--cream);
  padding:1.1rem 0;
}
.fact-strip .container-xl{
  display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:.75rem 2rem;
}
.fact-strip .fact{
  display:flex; align-items:center; gap:.55rem;
  font-family:var(--font-display); font-weight:600; font-size:.95rem;
}
.fact-strip .fact .num{ color:var(--marigold); font-size:1.1rem; }

/* ==========================================================================
   Feature cards (About)
   ========================================================================== */
.about-media{
  position:relative;
  border-radius:var(--radius-lg);
  overflow:hidden;
  box-shadow:var(--shadow-soft);
}
.about-media img{ width:100%; height:100%; object-fit:cover; }
.about-badge{
  position:absolute;
  bottom:-1px; right:-1px;
  background:var(--marigold);
  color:var(--ink);
  font-family:var(--font-display);
  font-weight:700;
  padding:1rem 1.3rem;
  border-top-left-radius:var(--radius-md);
  line-height:1.15;
  box-shadow:var(--shadow-soft);
}
.about-badge span{ display:block; font-size:1.6rem; }
.about-badge small{ font-size:.68rem; text-transform:uppercase; letter-spacing:1px; font-weight:700; }

.feature-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1.1rem; margin-top:1rem; }
.feature-card{
  background:#fff;
  border-radius:var(--radius-md);
  padding:1.4rem 1.3rem;
  border:1px solid #f1e6d0;
  box-shadow:0 10px 24px -18px rgba(43,36,32,.35);
  transition:transform .2s ease, box-shadow .2s ease;
}
.feature-card:hover{ transform:translateY(-5px); box-shadow:0 16px 30px -16px rgba(43,36,32,.4); }
.feature-icon{
  width:48px; height:48px;
  border-radius:14px;
  display:flex; align-items:center; justify-content:center;
  font-size:1.4rem;
  margin-bottom:.85rem;
  color:#fff;
}
.feature-card h3{ font-size:1.08rem; margin-bottom:.35rem; }
.feature-card p{ font-size:.92rem; color:#5b4f47; margin:0; }

.bg-maroon{ background:var(--maroon); }
.bg-sunset{ background:var(--sunset); }
.bg-teal{ background:var(--teal); }
.bg-magenta{ background:var(--magenta); }

/* ==========================================================================
   Gallery
   ========================================================================== */
.gallery-strip{ background:var(--cream-dim); }
.gallery-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  grid-auto-rows:150px;
  grid-auto-flow:dense;
  gap:14px;
}
.gallery-grid figure{
  margin:0; position:relative; overflow:hidden; border-radius:var(--radius-sm);
  box-shadow:0 10px 24px -16px rgba(43,36,32,.4);
}
.gallery-grid figure img{
  width:100%; height:100%; object-fit:cover;
  transition:transform .5s ease;
}
.gallery-grid figure:hover img{ transform:scale(1.09) rotate(-1deg); }
.gallery-grid figcaption{
  position:absolute; inset:auto 0 0 0;
  padding:.6rem .8rem .5rem;
  background:linear-gradient(0deg, rgba(43,36,32,.85), transparent);
  color:#fff; font-size:.78rem; font-weight:700;
  font-family:var(--font-display);
  opacity:0; transform:translateY(6px);
  transition:opacity .3s ease, transform .3s ease;
}
.gallery-grid figure:hover figcaption{ opacity:1; transform:translateY(0); }

.gallery-grid .span-2{ grid-column:span 2; }
.gallery-grid .row-2{ grid-row:span 2; }

/* ==========================================================================
   Package tickets
   ========================================================================== */
.ticket{
  background:#fff;
  border-radius:var(--radius-lg);
  overflow:hidden;
  box-shadow:var(--shadow-soft);
  border:1px solid #f1e6d0;
  height:100%;
  display:flex;
  flex-direction:column;
}
.ticket-head{
  padding:1.75rem 1.9rem 1.4rem;
  color:#fff;
  position:relative;
}
.ticket-head.head-full{ background:linear-gradient(120deg, var(--maroon), var(--maroon-dk)); }
.ticket-head.head-session{ background:linear-gradient(120deg, var(--teal), #167568); }
.ticket-head .pkg-label{
  text-transform:uppercase; letter-spacing:2px; font-size:.72rem; font-weight:800; opacity:.85;
}
.ticket-head h3{ color:#fff; font-size:1.7rem; margin:.25rem 0 .1rem; }
.ticket-head .pkg-time{ font-size:.88rem; opacity:.92; font-weight:600; }

.ticket-perf{
  position:relative;
  height:0;
  border-top:2px dashed rgba(43,36,32,.18);
  margin:0 1.9rem;
}
.ticket-perf::before,.ticket-perf::after{
  content:"";
  position:absolute; top:-11px;
  width:22px; height:22px; border-radius:50%;
  background:var(--cream);
}
.ticket-perf::before{ left:-33px; }
.ticket-perf::after{ right:-33px; }

.ticket-body{ padding:1.5rem 1.9rem 1.9rem; flex:1; display:flex; flex-direction:column; }
.ticket-price{ display:flex; align-items:baseline; gap:.4rem; margin-bottom:.15rem; }
.ticket-price .from{ font-size:.85rem; color:#8a7a6c; font-weight:700; text-transform:uppercase; letter-spacing:1px; }
.ticket-price .amount{ font-family:var(--font-display); font-size:2.1rem; color:var(--maroon); font-weight:800; }
.ticket-price .per{ font-size:.85rem; color:#8a7a6c; font-weight:700; }
.ticket-guests{ font-size:.9rem; color:#5b4f47; margin-bottom:1.1rem; font-weight:700; }

.ticket-list{ list-style:none; padding:0; margin:0 0 1.4rem; }
.ticket-list li{
  display:flex; align-items:flex-start; gap:.6rem;
  font-size:.94rem; padding:.4rem 0;
  border-bottom:1px dashed #f0e4cc;
}
.ticket-list li:last-child{ border-bottom:none; }
.ticket-list li::before{
  content:"✓";
  flex:0 0 auto;
  width:20px; height:20px;
  border-radius:50%;
  background:var(--marigold);
  color:var(--ink);
  font-size:.7rem; font-weight:800;
  display:flex; align-items:center; justify-content:center;
  margin-top:.15rem;
}

.ticket-terms{
  font-size:.82rem; color:#8a7a6c;
  background:var(--cream-dim);
  border-radius:var(--radius-sm);
  padding:.85rem 1rem;
  margin-bottom:1.3rem;
}
.ticket-terms strong{ color:var(--ink); }

.ticket-body .btn-gnu{ margin-top:auto; align-self:flex-start; }

/* ==========================================================================
   Add-ons
   ========================================================================== */
.addon-card{
  background:#fff;
  border-radius:var(--radius-md);
  padding:1.6rem;
  text-align:center;
  height:100%;
  border:1px solid #f1e6d0;
  box-shadow:0 10px 24px -18px rgba(43,36,32,.3);
  transition:transform .2s ease;
}
.addon-card:hover{ transform:translateY(-4px); }
.addon-emoji{ font-size:2.1rem; display:block; margin-bottom:.6rem; }
.addon-card h3{ font-size:1.05rem; margin-bottom:.4rem; }
.addon-card p{ font-size:.88rem; color:#5b4f47; margin:0; }

.addon-card.quote{
  background:linear-gradient(135deg, var(--magenta), #9c2768);
  color:#fff;
  border:none;
}
.addon-card.quote h4{ color:#fff; }
.addon-card.quote p{ color:#f6dcec; }

/* ==========================================================================
   Policy / house rules
   ========================================================================== */
.rules-panel{
  background:var(--ink);
  color:var(--cream);
  border-radius:var(--radius-lg);
  padding:2.6rem;
  position:relative;
  overflow:hidden;
}
.rules-panel::before{
  content:"";
  position:absolute; top:-60px; right:-60px;
  width:220px; height:220px;
  background:radial-gradient(circle, rgba(245,193,59,.18), transparent 70%);
}
.rules-panel h3{ color:var(--marigold); font-size:1.5rem; margin-bottom:1rem; }
.rules-panel .rule-item{ display:flex; gap:.85rem; margin-bottom:1.15rem; }
.rules-panel .rule-item:last-child{ margin-bottom:0; }
.rules-panel .rule-icon{
  flex:0 0 auto; width:38px; height:38px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:1.05rem;
}
.rules-panel .rule-item p{ margin:0; color:#e7ddc9; font-size:.94rem; }
.rules-panel .rule-item strong{ color:#fff; display:block; margin-bottom:.15rem; font-family:var(--font-display); }

/* ==========================================================================
   Map / Visit
   ========================================================================== */
.map-wrap{
  border-radius:var(--radius-lg);
  overflow:hidden;
  box-shadow:var(--shadow-soft);
  border:6px solid #fff;
}
.map-wrap iframe{ width:100%; height:420px; border:0; display:block; }

.visit-card{
  background:#fff;
  border-radius:var(--radius-md);
  padding:1.6rem 1.75rem;
  border:1px solid #f1e6d0;
  box-shadow:0 10px 24px -18px rgba(43,36,32,.3);
}
.visit-card .visit-row{ display:flex; gap:.9rem; margin-bottom:1.1rem; align-items:flex-start; }
.visit-card .visit-row:last-child{ margin-bottom:0; }
.visit-icon{
  flex:0 0 auto; width:42px; height:42px; border-radius:12px;
  display:flex; align-items:center; justify-content:center; color:#fff; font-size:1.05rem;
}
.visit-card h3{ font-family:var(--font-display); font-size:1rem; margin:0 0 .2rem; color:var(--ink); }
.visit-card p{ margin:0; font-size:.92rem; color:#5b4f47; }

/* ==========================================================================
   Contact form
   ========================================================================== */
.contact-panel{
  background:#fff;
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-soft);
  padding:2.5rem;
  position:relative;
}
.contact-side{
  background:linear-gradient(155deg, var(--teal), #146b60);
  border-radius:var(--radius-lg);
  color:#fff;
  padding:2.5rem 2.25rem;
  height:100%;
  position:relative;
  overflow:hidden;
}
.contact-side::after{
  content:"";
  position:absolute; bottom:-70px; left:-70px;
  width:220px; height:220px;
  background:radial-gradient(circle, rgba(255,255,255,.14), transparent 70%);
}
.contact-side h3{ color:#fff; font-size:1.6rem; }
.contact-side p{ color:#dff3ef; font-size:.96rem; }
.contact-side .side-list{ list-style:none; padding:0; margin:1.5rem 0; }
.contact-side .side-list li{ display:flex; gap:.7rem; margin-bottom:1rem; font-size:.94rem; align-items:flex-start; }
.contact-side .side-list li span.ico{ font-size:1.1rem; }

.form-label-gnu{
  font-family:var(--font-display);
  font-weight:600;
  font-size:.88rem;
  color:var(--ink);
  margin-bottom:.35rem;
}
.form-control-gnu, .form-select-gnu{
  width:100%;
  border:2px solid #f0e4cc;
  border-radius:var(--radius-sm);
  padding:.65rem .9rem;
  font-family:var(--font-body);
  font-size:.96rem;
  background:var(--cream-dim);
  transition:border-color .2s ease, background .2s ease;
}
.form-control-gnu:focus, .form-select-gnu:focus{
  outline:none;
  border-color:var(--sunset);
  background:#fff;
  box-shadow:0 0 0 4px rgba(240,125,42,.14);
}
textarea.form-control-gnu{ resize:vertical; min-height:96px; }

.form-actions{ display:flex; flex-wrap:wrap; gap:.9rem; margin-top:.5rem; }
.form-note{ font-size:.82rem; color:#8a7a6c; margin-top:.9rem; }

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer{
  background:var(--ink);
  color:#cdbfae;
  padding:3.5rem 0 1.5rem;
}
.site-footer h3{ color:#fff; font-family:var(--font-display); font-size:1.05rem; margin-bottom:1rem; }
.site-footer a{ color:#cdbfae; }
.site-footer a:hover{ color:var(--marigold); }
.footer-brand{ display:flex; align-items:center; gap:.6rem; margin-bottom:1rem; }
.footer-brand img{ height:44px; width:auto; }
.footer-brand .brand-word{ font-family:var(--font-display); font-weight:800; color:#fff; font-size:1.25rem; }
.footer-links{ list-style:none; padding:0; margin:0; }
.footer-links li{ margin-bottom:.6rem; font-size:.92rem; }
.footer-bottom{
  border-top:1px solid rgba(255,255,255,.08);
  margin-top:2.5rem; padding-top:1.5rem;
  font-size:.82rem;
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:.6rem;
}
.footer-social{ display:flex; gap:.6rem; }
.footer-social a{
  width:38px; height:38px; border-radius:50%;
  background:rgba(255,255,255,.08);
  display:flex; align-items:center; justify-content:center;
  transition:background .2s ease, color .2s ease;
}
.footer-social a:hover{ background:var(--sunset); color:#fff; }

/* ==========================================================================
   Floating WhatsApp button
   ========================================================================== */
.wa-float{
  position:fixed; right:22px; bottom:22px; z-index:1200;
  width:60px; height:60px; border-radius:50%;
  background:#25D366; color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-size:1.6rem;
  box-shadow:0 12px 26px -8px rgba(37,211,102,.6);
  animation:wa-pulse 2.6s ease-in-out infinite;
}
.wa-float:hover{ color:#fff; }
@keyframes wa-pulse{
  0%,100%{ box-shadow:0 12px 26px -8px rgba(37,211,102,.6); }
  50%{ box-shadow:0 12px 34px -6px rgba(37,211,102,.85); }
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 991.98px){
  .feature-grid{ grid-template-columns:1fr 1fr; }
  .gallery-grid{ grid-template-columns:repeat(3,1fr); }
  .contact-panel{ padding:1.75rem; }
  .hero{ min-height:100vh; }
}

@media (max-width: 767.98px){
  .section{ padding:3.5rem 0; }
  .gallery-grid{ grid-template-columns:repeat(2,1fr); grid-auto-rows:130px; }
  .gallery-grid .span-2{ grid-column:span 2; }
  .feature-grid{ grid-template-columns:1fr; }
  .hero-content{ padding:7rem 0 3.5rem; }
  .ticket-perf::before{ left:-11px; }
  .ticket-perf::after{ right:-11px; }
  .fact-strip .container-xl{ justify-content:center; text-align:center; }
  .rules-panel{ padding:1.75rem; }
}

@media (max-width: 575.98px){
  .navbar-brand-gnu img{ height:38px; }
  .navbar-brand-gnu .brand-word{ font-size:1.05rem; }
  .hero-content h1{ font-size:2.4rem; }
}

/* Focus visibility for accessibility */
a:focus-visible, button:focus-visible, .form-control-gnu:focus-visible{
  outline:3px solid var(--teal);
  outline-offset:2px;
}
