  :root{
    --navy-deep: #0A1140;
    --navy:      #1B2557;
    --navy-mid:  #2E3A73;
    --gold:      #C9A15A;
    --gold-deep: #8E704C;
    --gold-pale: #E7D4A6;
    --cream:     #F4EFE2;
    --ink:       #1C1710;
    --line:      rgba(244,239,226,0.15);
    --line-dark: rgba(28,23,16,0.14);

    --display: 'Playfair Display', serif;
    --body: 'Jost', sans-serif;
    --mono: 'Space Mono', monospace;
  }

  *{ box-sizing:border-box; margin:0; padding:0; }
  html{ scroll-behavior:smooth; }
  body{
    background: var(--cream);
    color: var(--ink);
    font-family: var(--body);
    line-height:1.55;
    -webkit-font-smoothing:antialiased;
  }
  img,svg{ display:block; max-width:100%; }
  a{ color:inherit; }
  .wrap{ max-width:1120px; margin:0 auto; padding:0 28px; }

  @media (prefers-reduced-motion: reduce){
    *{ animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; }
  }

  a:focus-visible, button:focus-visible{
    outline: 3px solid var(--gold);
    outline-offset: 3px;
  }

  /* ---------- rail track divider ---------- */
  .track{
    height:14px;
    background:
      repeating-linear-gradient(90deg,
        var(--navy-deep) 0 4px, transparent 4px 34px);
    position:relative;
    opacity:0.8;
  }
  .track::before, .track::after{
    content:"";
    position:absolute; left:0; right:0; height:2px;
    background:var(--navy-deep);
  }
  .track::before{ top:2px; }
  .track::after{ bottom:2px; }

  /* ---------- nav ---------- */
  header{
    background:var(--navy-deep);
    color:var(--cream);
    position:sticky; top:0; z-index:50;
    border-bottom:3px solid var(--gold);
  }
  .nav{
    display:flex; align-items:center; justify-content:space-between;
    padding:14px 28px;
    max-width:1120px; margin:0 auto;
  }
  .brandmark{
    display:flex; align-items:baseline; gap:10px;
    font-family:var(--display);
    font-weight:700;
    letter-spacing:0.02em;
    font-size:21px;
    text-decoration:none;
    color:var(--cream);
  }
  .brandmark small{
    font-family:var(--mono);
    font-size:10px;
    color:var(--gold);
    letter-spacing:0.16em;
    font-weight:normal;
  }
  nav ul{
    list-style:none;
    display:flex; gap:28px;
    font-family:var(--body);
    font-weight:500;
    font-size:13px;
    letter-spacing:0.03em;
    text-transform:uppercase;
  }
  nav ul a{ text-decoration:none; opacity:0.85; padding:6px 2px; border-bottom:2px solid transparent; transition:opacity .2s, border-color .2s; }
  nav ul a:hover{ opacity:1; border-color:var(--gold); }
  .nav-cta{
    font-family:var(--body);
    font-weight:600;
    font-size:13px;
    letter-spacing:.03em;
    text-transform:uppercase;
    background:var(--gold);
    color:var(--navy-deep);
    padding:9px 18px;
    text-decoration:none;
    white-space:nowrap;
    border-radius:1px;
  }

  @media (max-width:760px){
    nav ul{ display:none; }
    .nav-cta{ padding:8px 14px; font-size:12px; }
  }

  /* ---------- hero ---------- */
  .hero{
    background:
      radial-gradient(ellipse at 50% -10%, rgba(201,161,90,0.16), transparent 55%),
      var(--navy-deep);
    color:var(--cream);
    padding:76px 0 64px;
    position:relative;
    overflow:hidden;
    text-align:center;
  }
  .hero-video{
    position:absolute; inset:0; z-index:0;
    width:100%; height:100%;
    object-fit:cover;
  }
  .hero-video-overlay{
    position:absolute; inset:0; z-index:1;
    background:
      radial-gradient(ellipse at 50% -10%, rgba(201,161,90,0.20), transparent 55%),
      rgba(10,17,64,0.72);
  }
  .hero .wrap{ position:relative; z-index:2; display:flex; flex-direction:column; align-items:center; }
  .eyebrow{
    font-family:var(--mono);
    font-size:12px;
    letter-spacing:.25em;
    text-transform:uppercase;
    color:var(--gold-pale);
    display:flex; align-items:center; gap:12px;
    margin-bottom:30px;
  }
  .eyebrow::before, .eyebrow::after{
    content:""; width:34px; height:1px; background:var(--gold-pale);
  }

  /* ---------- crest (draws itself on load) ---------- */
  .crest-wrap{ width:180px; height:180px; margin:0 auto; position:relative; }
  .crest{ width:100%; height:100%; overflow:visible; object-fit:contain; display:block; }
  .crest-ring{
    fill:none;
    stroke:var(--gold);
    stroke-width:2;
    stroke-linecap:round;
    stroke-dasharray:515;
    stroke-dashoffset:515;
  }
  .hero.play .crest-ring{ animation: ring-draw 1.15s cubic-bezier(.65,.05,.36,1) 0.15s both; }
  @keyframes ring-draw{ to{ stroke-dashoffset:0; } }

  .leaf{
    fill:var(--gold);
    opacity:0;
    transform-box: view-box;
  }
  .hero.play .leaf{
    animation: leaf-pop 0.55s cubic-bezier(.34,1.56,.64,1) both;
    animation-delay: calc(0.85s + (var(--dl) * 1.35));
  }
  @keyframes leaf-pop{
    0%{ opacity:0; transform:scale(0.15); }
    100%{ opacity:1; transform:scale(1); }
  }

  .crest-ribbon path{
    fill:var(--gold);
    opacity:0;
    transform-box: fill-box;
    transform-origin: 50% 0%;
  }
  .hero.play .crest-ribbon path{ animation: ribbon-in 0.5s ease-out 1.95s both; }
  @keyframes ribbon-in{
    0%{ opacity:0; transform:scaleY(0.2); }
    100%{ opacity:1; transform:scaleY(1); }
  }

  .crest-monogram{
    font-family:var(--display);
    font-weight:800;
    fill:var(--gold);
    opacity:0;
    transform-box: fill-box;
    transform-origin:center;
  }
  .hero.play .crest-monogram{ animation: mono-in 0.7s cubic-bezier(.22,1,.36,1) 2.15s both; }
  @keyframes mono-in{
    0%{ opacity:0; transform:scale(0.7) translateY(6px); }
    100%{ opacity:1; transform:scale(1) translateY(0); }
  }

  /* ---------- the train that crosses through the crest ---------- */
  .train-cross{
    position:absolute; top:52%; left:-90px; margin-top:-19px;
    width:74px; height:40px; z-index:6; pointer-events:none;
    opacity:0;
  }
  .hero.play .train-cross{ animation: train-through 8s linear 3.05s infinite; }
  @keyframes train-through{
    0%{ opacity:0; left:-90px; }
    2%{ opacity:1; }
    38%{ opacity:1; left:270px; }
    40%{ opacity:0; left:270px; }
    100%{ opacity:0; left:-90px; }
  }
  .tc-body{
    position:absolute; left:0; bottom:0; width:74px; height:27px;
    background:var(--gold); border:2.5px solid var(--navy-deep); border-radius:2px 8px 0 0;
  }
  .tc-cab{
    position:absolute; left:3px; bottom:23px; width:25px; height:18px;
    background:var(--cream); border:2.5px solid var(--navy-deep); border-radius:2px 2px 0 0;
  }
  .tc-chimney{
    position:absolute; left:50px; bottom:35px; width:8px; height:13px;
    background:var(--navy-deep); border-radius:1px 1px 0 0;
  }
  .tc-wheel{
    position:absolute; bottom:-8px; width:16px; height:16px; border-radius:50%;
    background:var(--navy-deep); border:2.5px solid var(--gold-pale);
  }
  .hero.play .tc-wheel{ animation: tc-spin 0.45s linear infinite; }
  .tcw1{ left:9px; } .tcw2{ left:44px; }
  @keyframes tc-spin{ to{ transform:rotate(360deg); } }
  .tc-smoke{
    position:absolute; left:52px; bottom:44px; width:10px; height:10px;
    background:rgba(244,239,226,0.8); border-radius:50%;
    opacity:0;
  }
  .hero.play .tc-smoke{ animation: tc-puff 1.1s ease-out infinite; }
  .hero.play .tc-smoke.d2{ animation-delay:0.55s; }
  @keyframes tc-puff{
    0%{ opacity:0; transform:translate(0,0) scale(0.5); }
    20%{ opacity:0.75; }
    100%{ opacity:0; transform:translate(12px,-26px) scale(1.5); }
  }

  h1.wordmark{
    font-family:var(--display);
    font-weight:800;
    letter-spacing:0.02em;
    line-height:1;
    font-size:clamp(30px, 6.6vw, 68px);
    margin-top:26px;
    opacity:0;
  }
  .hero.play h1.wordmark{ animation: fade-up 0.7s ease-out 2.75s both; }
  .wordmark-sub{
    font-family:var(--body);
    font-weight:500;
    font-size:clamp(11px, 2vw, 15px);
    letter-spacing:0.42em;
    text-transform:uppercase;
    color:var(--gold);
    margin-top:12px;
    opacity:0;
  }
  .hero.play .wordmark-sub{ animation: fade-up 0.7s ease-out 3.0s both; }
  @keyframes fade-up{
    0%{ opacity:0; transform:translateY(14px); }
    100%{ opacity:1; transform:translateY(0); }
  }

  .hero-tagline{
    font-family:var(--display);
    font-style:italic;
    font-weight:700;
    font-size:20px;
    color:var(--gold-pale);
    margin-top:22px;
    opacity:0;
  }
  .hero.play .hero-tagline{ animation: fade-up 0.7s ease-out 3.2s both; }

  .hero-tag{
    font-family:var(--body);
    font-weight:300;
    font-size:16.5px;
    max-width:480px;
    color:rgba(244,239,226,0.78);
    margin:16px 0 32px;
    opacity:0;
  }
  .hero.play .hero-tag{ animation: fade-up 0.7s ease-out 3.4s both; }

  .cta-row{
    display:flex; gap:14px; flex-wrap:wrap; justify-content:center; align-items:center;
    opacity:0;
  }
  .hero.play .cta-row{ animation: fade-up 0.7s ease-out 3.55s both; }
  .btn{
    font-family:var(--body);
    font-weight:600;
    font-size:13px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:14px 24px;
    text-decoration:none;
    display:inline-flex; align-items:center; gap:8px;
    border:1px solid transparent;
    transition:transform .15s ease, background .2s ease, color .2s ease;
    border-radius:1px;
    cursor:pointer;
  }
  .btn:hover{ transform:translateY(-2px); }
  .btn-solid{ background:var(--gold); color:var(--navy-deep); }
  .btn-solid:hover{ background:var(--gold-pale); }
  .btn-ghost{ border-color:rgba(244,239,226,0.4); color:var(--cream); background:transparent; }
  .btn-ghost:hover{ border-color:var(--gold); color:var(--gold-pale); }
  .btn-sound{ border-color:var(--gold); color:var(--gold-pale); background:transparent; }
  .btn-sound:hover{ background:rgba(201,161,90,0.12); }

  /* ---------- split-flap departure board ---------- */
  .board-section{ background:var(--navy-mid); padding:0; }
  .board{
    max-width:1120px; margin:0 auto;
    display:grid; grid-template-columns: repeat(3, 1fr);
    border-left:1px solid var(--line);
  }
  .board-cell{
    border-right:1px solid var(--line);
    padding:22px 20px 24px;
  }
  .board-label{
    font-family:var(--mono);
    font-size:10px;
    letter-spacing:.2em;
    text-transform:uppercase;
    color:var(--gold-pale);
    margin-bottom:12px;
  }
  .flap-row{ display:flex; gap:4px; flex-wrap:wrap; }
  .flap{
    background:var(--navy-deep);
    color:var(--cream);
    font-family:var(--mono);
    font-weight:700;
    font-size:19px;
    padding:8px 9px;
    border-radius:2px;
    box-shadow: inset 0 -10px 0 -8px rgba(0,0,0,0.5);
    position:relative;
    animation: flapin 900ms ease-out both;
  }
  .flap::after{
    content:""; position:absolute; left:0; right:0; top:50%; height:1px;
    background:rgba(0,0,0,0.45);
  }
  .board-cell:nth-child(1) .flap{ animation-delay: calc(var(--i,0) * 60ms); }
  .board-cell:nth-child(2) .flap{ animation-delay: calc(var(--i,0) * 60ms + 120ms); }
  .board-cell:nth-child(3) .flap{ animation-delay: calc(var(--i,0) * 60ms + 240ms); }
  @keyframes flapin{
    0%{ transform:rotateX(90deg); opacity:0; }
    60%{ transform:rotateX(-12deg); opacity:1; }
    100%{ transform:rotateX(0deg); opacity:1; }
  }
  .board-sub{
    font-family:var(--body); font-style:italic;
    color:rgba(244,239,226,0.75); font-size:13px; margin-top:12px;
  }
  @media (max-width:820px){
    .board{ grid-template-columns:1fr; }
  }

  /* ---------- section shell ---------- */
  section{ padding:80px 0; }
  .kicker{
    font-family:var(--mono); font-size:12px; letter-spacing:.2em;
    text-transform:uppercase; color:var(--gold-deep);
    display:flex; align-items:center; gap:12px; margin-bottom:16px;
  }
  .kicker::before{ display:none; }

  h2{
    font-family:var(--display); font-weight:800;
    font-size:clamp(30px,4.4vw,48px); line-height:1.04; letter-spacing:0.005em;
    color:var(--ink);
  }

  /* ---------- story ---------- */
  .story{ background:var(--cream); }
  .story-grid{
    display:grid; grid-template-columns: 1.1fr 0.9fr; gap:64px; align-items:start;
  }
  .story p{ font-size:16.5px; color:rgba(28,23,16,0.82); margin-top:18px; max-width:54ch; }
  .story-figure{
    border:2px solid var(--navy-deep);
    background:
      repeating-linear-gradient(135deg, rgba(201,161,90,0.10) 0 10px, transparent 10px 20px),
      #fff;
    aspect-ratio:4/5;
    display:flex; align-items:flex-end; padding:18px;
  }
  .story-figure span{
    font-family:var(--mono); font-size:11px; letter-spacing:.1em;
    text-transform:uppercase; background:var(--navy-deep); color:var(--cream); padding:6px 10px;
  }
  @media (max-width:820px){ .story-grid{ grid-template-columns:1fr; gap:36px; } }

  /* ---------- menu ---------- */
  .menu-section{ background:var(--navy-deep); color:var(--cream); }
  .menu-section .kicker{ color:var(--gold-pale); }
  .menu-section .kicker::before{ background:var(--gold); }
  .menu-section h2{ color:var(--cream); }
  .menu-section > .wrap > p.menu-lede{
    font-family:var(--display); font-style:italic; font-weight:600; color:rgba(244,239,226,0.72);
    max-width:56ch; margin-top:14px; font-size:16px;
  }

  .menu-tabs{
    display:flex; flex-wrap:wrap; gap:8px; margin:38px 0 8px;
  }
  .menu-tab{
    font-family:var(--body); font-weight:500; font-size:12.5px;
    letter-spacing:.03em; text-transform:uppercase;
    background:transparent; color:rgba(244,239,226,0.68);
    border:1px solid var(--line); padding:9px 15px; border-radius:999px;
    cursor:pointer; transition: all .18s ease;
  }
  .menu-tab:hover{ border-color:var(--gold); color:var(--cream); }
  .menu-tab.active{ background:var(--gold); border-color:var(--gold); color:var(--navy-deep); font-weight:600; }

  .menu-panel{ display:none; margin-top:30px; }
  .menu-panel.active{ display:block; animation: fade-up 0.35s ease-out both; }
  .menu-panel-note{
    font-family:var(--mono); font-size:11.5px; letter-spacing:.04em;
    color:var(--gold-pale); text-transform:uppercase; margin-bottom:18px;
  }
  .menu-grid{
    display:grid; grid-template-columns:1fr 1fr; gap:0 40px;
  }
  .menu-item{
    padding:14px 0; border-bottom:1px solid var(--line);
    display:flex; justify-content:space-between; gap:14px;
  }
  .menu-item-name{ font-family:var(--display); font-weight:700; font-size:15.5px; }
  .menu-item-desc{ font-family:var(--body); font-weight:300; font-size:13px; color:rgba(244,239,226,0.62); margin-top:4px; line-height:1.4; }
  .menu-item-price{
    font-family:var(--mono); font-size:13px; color:var(--gold-pale); white-space:nowrap; text-align:right;
    flex:none; padding-top:2px;
  }
  .menu-item-price small{ display:block; font-size:10px; opacity:0.7; }
  @media (max-width:760px){ .menu-grid{ grid-template-columns:1fr; } }

  .kids-menu-cta{
    display:inline-flex; align-items:center; gap:8px;
    font-family:var(--body); font-weight:600; font-size:14px;
    letter-spacing:.02em; text-decoration:none;
    background:var(--gold); color:var(--navy-deep);
    padding:14px 26px; border-radius:999px; margin-top:34px;
    transition: transform .18s ease, box-shadow .18s ease;
  }
  .kids-menu-cta:hover{ transform:translateY(-2px); box-shadow:0 10px 24px rgba(201,161,90,0.35); }

  /* ---------- gallery ---------- */
  .gallery{ background:var(--cream); }
  .gallery-slideshow{
    position:relative; margin-top:44px; aspect-ratio:16/9; overflow:hidden;
    border:1px solid var(--navy-deep);
  }
  .gallery-slide{
    position:absolute; inset:0; opacity:0; transition:opacity .5s ease;
    pointer-events:none;
  }
  .gallery-slide.active{ opacity:1; pointer-events:auto; }
  .gallery-slide img{
    width:100%; height:100%; object-fit:cover; display:block;
  }
  .gallery-dots{ display:flex; gap:9px; margin-top:20px; }
  .gallery-dot{
    width:8px; height:8px; border-radius:50%; background:rgba(27,37,87,0.22);
    border:none; cursor:pointer; padding:0;
  }
  .gallery-dot.active{ background:var(--navy-deep); }

  /* ---------- reviews slideshow ---------- */
  .reviews-section{ background:var(--navy-mid); color:var(--cream); }
  .reviews-section .kicker{ color:var(--gold-pale); }
  .reviews-section .kicker::before{ background:var(--gold-pale); }
  .reviews-section h2{ color:var(--cream); }
  .reviews-slideshow{ position:relative; margin-top:48px; min-height:170px; }
  .review-slide{
    position:absolute; inset:0; opacity:0; transition:opacity .5s ease;
    pointer-events:none;
  }
  .review-slide.active{ opacity:1; pointer-events:auto; }
  .review-slide p{
    font-family:var(--display); font-style:italic; font-weight:600;
    font-size:clamp(19px,2.6vw,26px); line-height:1.45; max-width:680px;
  }
  .review-meta{
    margin-top:18px; font-family:var(--mono); font-size:12px;
    letter-spacing:.06em; text-transform:uppercase; color:var(--gold-pale);
  }
  .review-dots{ display:flex; gap:9px; margin-top:32px; }
  .review-dot{
    width:8px; height:8px; border-radius:50%; background:rgba(244,239,226,0.28);
    border:none; cursor:pointer; padding:0;
  }
  .review-dot.active{ background:var(--gold); }

  /* ---------- location ---------- */
  .location{ background:var(--cream); }
  .loc-grid{ margin-top:44px; }
  .loc-single{ max-width:560px; }
  .info-list{ margin-top:0; }
  .info-row{ display:flex; gap:18px; padding:16px 0; border-top:1px solid var(--line-dark); }
  .info-row:last-child{ border-bottom:1px solid var(--line-dark); }
  .info-row dt{
    font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.1em;
    color:var(--gold-deep); width:110px; flex:none;
  }
  .info-row dd{ font-size:16px; }

  /* ---------- footer ---------- */
  footer{ background:var(--navy-deep); color:rgba(244,239,226,0.65); padding:44px 0 30px; }
  .foot-grid{
    display:flex; justify-content:space-between; flex-wrap:wrap; gap:24px;
    font-family:var(--body); font-size:13px;
  }
  .foot-brand{
    font-family:var(--display); font-weight:700;
    color:var(--cream); font-size:20px; letter-spacing:.01em;
  }
  footer .ticket{
    margin-top:22px; padding-top:18px; border-top:1px dashed rgba(244,239,226,0.25);
    font-family:var(--mono);
    font-size:11px;
  }

  /* =========================================================
     KIDS MENU PAGE
     ========================================================= */

  .kids-back{
    font-family:var(--body); font-weight:500; font-size:13px;
    color:rgba(244,239,226,0.75); text-decoration:none;
  }
  .kids-back:hover{ color:var(--gold-pale); }

  .kids-hero{
    position:relative; overflow:hidden;
    min-height:560px;
    background:linear-gradient(180deg,#AEE0F5 0%,#D8F0FA 45%,var(--cream) 100%);
    padding:70px 0 170px;
    text-align:center;
  }
  .kids-hero .wrap{ position:relative; z-index:4; }

  .kids-eyebrow{
    font-family:var(--mono); font-size:12px; letter-spacing:.25em;
    text-transform:uppercase; color:var(--navy);
    display:inline-flex; align-items:center; gap:10px;
  }
  .kids-eyebrow::before,.kids-eyebrow::after{ content:""; width:22px; height:2px; background:var(--navy); opacity:.5; }

  .kids-title{
    font-family:var(--display); font-weight:900;
    font-size:clamp(38px,7.4vw,72px); line-height:1.02;
    color:var(--navy-deep); margin-top:14px;
  }
  .kids-ribbon{
    display:inline-block; position:relative;
    font-family:var(--display); font-weight:800; font-size:clamp(15px,2vw,19px);
    letter-spacing:.1em; text-transform:uppercase;
    background:var(--navy-deep); color:var(--cream);
    padding:12px 40px; border-radius:8px; margin-top:20px;
  }
  .kids-ribbon::before,.kids-ribbon::after{
    content:""; position:absolute; top:0; border-style:solid; border-width:24px 10px;
  }
  .kids-ribbon::before{ left:-18px; border-color:var(--navy-deep) var(--navy-deep) transparent transparent; }
  .kids-ribbon::after{ right:-18px; border-color:var(--navy-deep) transparent transparent var(--navy-deep); }

  .kids-tagline{
    font-family:var(--display); font-style:italic; font-weight:600;
    font-size:16px; color:var(--navy); margin-top:22px; max-width:44ch;
    margin-left:auto; margin-right:auto;
  }

  /* sun */
  .kids-sun{
    position:absolute; top:54px; right:9%; width:96px; height:96px; z-index:1;
    border-radius:50%; background:radial-gradient(circle at 35% 32%, #FFEA9E, #FFD65C 68%);
    box-shadow:0 0 0 14px rgba(255,214,92,0.22), 0 0 0 28px rgba(255,214,92,0.12);
    animation: kids-sun-pulse 5s ease-in-out infinite;
  }
  .kids-sun::before{
    content:""; position:absolute; inset:-26px;
    background:
      repeating-conic-gradient(#FFD65C 0deg 8deg, transparent 8deg 30deg);
    border-radius:50%; opacity:.35; z-index:-1;
    animation: kids-sun-spin 30s linear infinite;
  }
  @keyframes kids-sun-pulse{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.05); } }
  @keyframes kids-sun-spin{ to{ transform:rotate(360deg); } }

  /* clouds */
  .kids-cloud{ position:absolute; background:#fff; border-radius:50px; opacity:.95; z-index:1; }
  .kids-cloud::before,.kids-cloud::after{ content:""; position:absolute; background:#fff; border-radius:50%; }
  .kc1{ top:90px; left:-160px; width:120px; height:36px; animation:kids-cloud-drift 26s linear infinite; }
  .kc1::before{ width:52px; height:52px; top:-26px; left:14px; }
  .kc1::after{ width:38px; height:38px; top:-18px; left:60px; }
  .kc2{ top:170px; left:-220px; width:90px; height:28px; animation:kids-cloud-drift 34s linear infinite; animation-delay:-10s; }
  .kc2::before{ width:38px; height:38px; top:-18px; left:10px; }
  .kc2::after{ width:30px; height:30px; top:-13px; left:44px; }
  .kc3{ top:50px; left:-300px; width:70px; height:22px; animation:kids-cloud-drift 22s linear infinite; animation-delay:-6s; }
  .kc3::before{ width:28px; height:28px; top:-13px; left:8px; }
  .kc3::after{ width:22px; height:22px; top:-9px; left:32px; }
  @keyframes kids-cloud-drift{ 0%{ transform:translateX(0); } 100%{ transform:translateX(160vw); } }

  /* grass + track */
  .kids-grass{
    position:absolute; left:0; right:0; bottom:0; height:120px; z-index:1;
    background:linear-gradient(180deg, transparent, rgba(90,150,80,0.18) 40%, rgba(90,150,80,0.32));
  }
  .kids-track{
    position:absolute; left:0; right:0; bottom:74px; height:5px; z-index:2;
    background:repeating-linear-gradient(90deg, var(--navy-deep) 0 22px, transparent 22px 38px);
  }
  .kids-track::before{
    content:""; position:absolute; left:0; right:0; top:-8px; height:3px;
    background:rgba(10,17,64,0.25);
  }

  /* big kids train, built from the same shapes as the hero train icon */
  .kids-train{
    position:absolute; bottom:76px; left:-220px; width:120px; height:66px; z-index:3;
    transform:scale(2.05); transform-origin:bottom left;
    animation: kids-train-move 16s linear infinite;
  }
  .kt-body{
    position:absolute; left:0; bottom:0; width:74px; height:27px;
    background:var(--gold); border:2.5px solid var(--navy-deep); border-radius:2px 8px 0 0;
  }
  .kt-cab{
    position:absolute; left:3px; bottom:23px; width:25px; height:18px;
    background:var(--cream); border:2.5px solid var(--navy-deep); border-radius:2px 2px 0 0;
  }
  .kt-face{
    position:absolute; left:56px; bottom:6px; width:16px; height:16px;
    background:var(--navy-deep); border-radius:50%;
  }
  .kt-face::before,.kt-face::after{
    content:""; position:absolute; top:5px; width:3px; height:3px; background:#fff; border-radius:50%;
  }
  .kt-face::before{ left:3px; } .kt-face::after{ left:9px; }
  .kt-chimney{
    position:absolute; left:50px; bottom:35px; width:8px; height:13px;
    background:var(--navy-deep); border-radius:1px 1px 0 0;
  }
  .kt-wheel{
    position:absolute; bottom:-8px; width:16px; height:16px; border-radius:50%;
    background:var(--navy-deep); border:2.5px solid var(--gold-pale);
    animation: kids-wheel-spin 0.5s linear infinite;
  }
  .ktw1{ left:9px; } .ktw2{ left:44px; }
  @keyframes kids-wheel-spin{ to{ transform:rotate(360deg); } }
  .kt-smoke{
    position:absolute; left:52px; bottom:44px; width:10px; height:10px;
    background:rgba(255,255,255,0.85); border-radius:50%; opacity:0;
    animation: kids-puff 1.3s ease-out infinite;
  }
  .kt-smoke.d2{ animation-delay:0.45s; }
  .kt-smoke.d3{ animation-delay:0.9s; }
  @keyframes kids-puff{
    0%{ opacity:0; transform:translate(0,0) scale(0.5); }
    20%{ opacity:0.8; }
    100%{ opacity:0; transform:translate(16px,-34px) scale(2); }
  }
  @keyframes kids-train-move{
    0%{ left:-220px; }
    100%{ left:112%; }
  }

  /* content card */
  .kids-content{ background:var(--cream); position:relative; z-index:5; padding-bottom:90px; }
  .kids-card{
    background:#fff; border-radius:26px; padding:44px clamp(22px,5vw,56px);
    margin-top:-96px; box-shadow:0 30px 60px rgba(10,17,64,0.16);
    max-width:820px; margin-left:auto; margin-right:auto;
  }
  .kids-card-note{
    font-family:var(--mono); font-size:11.5px; letter-spacing:.04em;
    text-transform:uppercase; color:var(--gold-deep); text-align:center; margin-bottom:8px;
  }
  .kids-card-image{
    margin:-4px 0 20px; border-radius:18px; overflow:hidden;
    box-shadow:0 16px 34px rgba(10,17,64,0.18);
  }
  .kids-card-image img{ display:block; width:100%; height:auto; }
  .kids-group{ margin-bottom:4px; }
  .kids-group-title{
    font-family:var(--display); font-weight:700; font-size:14px;
    letter-spacing:.03em; text-transform:uppercase; color:var(--navy-deep);
    background:var(--gold-pale); display:inline-block;
    padding:8px 22px; border-radius:999px; margin:28px 0 12px;
  }
  .kids-group:first-child .kids-group-title{ margin-top:6px; }
  .kids-group-note{
    font-family:var(--display); font-style:italic; font-weight:600; font-size:12.5px;
    color:var(--gold-deep); margin:-4px 0 8px;
  }
  .kids-card .menu-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0 40px; }
  .kids-card .menu-item{
    padding:14px 0; border-bottom:1px solid var(--line-dark);
    display:flex; justify-content:space-between; gap:14px;
  }
  .kids-card .menu-item-name{ font-family:var(--display); font-weight:700; font-size:15.5px; color:var(--ink); }
  .kids-card .menu-item-desc{ font-family:var(--body); font-weight:300; font-size:13px; color:rgba(28,23,16,0.6); margin-top:4px; line-height:1.4; }
  .kids-card .menu-item-price{ font-family:var(--mono); font-size:13px; color:var(--gold-deep); white-space:nowrap; text-align:right; flex:none; padding-top:2px; }
  @media (max-width:760px){ .kids-card .menu-grid{ grid-template-columns:1fr; } }

  .kids-footer-link{ text-align:center; margin-top:40px; }
  .kids-footer-link a{
    font-family:var(--body); font-weight:600; font-size:14px;
    color:var(--navy-deep); text-decoration:none; border-bottom:2px solid var(--gold);
    padding-bottom:2px;
  }

  @media (max-width:640px){
    .kids-hero{ padding:56px 0 190px; min-height:480px; }
    .kids-sun{ width:64px; height:64px; top:36px; right:7%; }
    .kids-card{ margin-top:-70px; padding:30px 20px; }
  }
