:root{
  --pink:#FF6FA5;
  --pink-deep:#E14F86;
  --marigold:#FFC93C;
  --sky:#6EC6FF;
  --mint:#7FE0C0;
  --lavender:#B79CED;
  --cream:#FFF8F0;
  --ink:#4A2545;
  --ink-soft:#7A5C74;

  --bg-cream:#FFF8F0;
  --bg-lion:#FFF1DE;
  --bg-pink:#FFEAF2;
  --bg-mint:#F0FBF6;
  --bg-sky:#EAF6FF;
  --bg-lav:#FBEFFF;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:'Quicksand',sans-serif;
  color:var(--ink);
  background:var(--cream);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3{font-family:'Baloo 2',cursive;margin:0;}
p{margin:0;}
a{color:inherit;}
img{max-width:100%;display:block;}
button{font-family:inherit;}
:focus-visible{outline:3px solid var(--sky);outline-offset:3px;border-radius:6px;}

.eyebrow{
  font-family:'Caveat',cursive;
  font-weight:700;
  font-size:clamp(1.3rem,2vw,1.7rem);
  color:var(--pink-deep);
  margin-bottom:.35rem;
  display:inline-block;
}

/* ---------- nav ---------- */
.site-nav{
  position:sticky;
  top:0;
  z-index:50;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:.85rem clamp(1rem,4vw,2.5rem);
  background:rgba(255,248,240,.92);
  backdrop-filter:blur(6px);
  box-shadow:0 2px 0 rgba(74,37,69,.06);
  flex-wrap:wrap;
}
.site-nav .logo{
  font-family:'Baloo 2',cursive;
  font-weight:800;
  font-size:1.1rem;
  color:var(--pink-deep);
  text-decoration:none;
  display:flex;
  align-items:center;
  gap:.4rem;
  white-space:nowrap;
}
.site-nav ul{
  list-style:none;
  display:flex;
  gap:clamp(.25rem,1vw,.5rem);
  margin:0;
  padding:0;
  flex-wrap:wrap;
}
.site-nav a.nav-link{
  text-decoration:none;
  font-family:'Baloo 2',cursive;
  font-weight:600;
  color:var(--ink);
  font-size:.9rem;
  padding:.45rem .85rem;
  border-radius:999px;
  transition:background .2s ease, color .2s ease;
  display:inline-block;
}
.site-nav a.nav-link:hover{background:#FFE4EE;}
.site-nav a.nav-link.active{background:var(--pink);color:#fff;}

/* ---------- layout helpers ---------- */
.chapter{
  position:relative;
  padding:clamp(3.5rem,7vw,6rem) clamp(1.25rem,5vw,3rem) clamp(4rem,8vw,6rem);
  overflow:hidden;
}
.chapter-inner{max-width:1080px;margin:0 auto;text-align:center;}
.chapter h2{font-size:clamp(2rem,4vw,3rem);margin-bottom:1rem;}
.chapter-copy{
  max-width:640px;
  margin:0 auto;
  font-size:clamp(1.02rem,1.4vw,1.15rem);
  line-height:1.7;
  color:var(--ink-soft);
}

.scallop{
  height:34px;
  width:100%;
  background-repeat:repeat-x;
  background-size:34px 34px;
  background-position:0 0;
  background-image:radial-gradient(circle at 17px 34px, var(--curr) 17px, transparent 17.6px);
  background-color:var(--next);
  display:block;
}

.reveal{opacity:0;transform:translateY(28px);transition:opacity .7s ease, transform .7s ease;}
.reveal.in-view{opacity:1;transform:translateY(0);}

/* ---------- page hero (sub-pages) ---------- */
.page-hero{
  min-height:38vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:3rem 1.5rem 2.5rem;
}
.page-hero h1{font-size:clamp(2.3rem,5vw,3.6rem);color:var(--ink);}
.page-hero-sub{
  margin-top:1rem;
  max-width:540px;
  font-size:clamp(1rem,1.6vw,1.15rem);
  color:var(--ink-soft);
  line-height:1.6;
}
.page-hero--about{background:linear-gradient(180deg,#EFE3FF 0%, var(--bg-pink) 100%);}
.page-hero--interests{background:linear-gradient(180deg,var(--bg-sky) 0%, var(--bg-mint) 100%);}
.page-hero--adventures{background:linear-gradient(180deg,#FFE9C7 0%, var(--bg-pink) 100%);}

/* ---------- hero (home) ---------- */
.hero{
  position:relative;
  min-height:88vh;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  background:linear-gradient(180deg,#EFE3FF 0%, #DCEFFF 32%, var(--cream) 78%);
  padding:2rem 1.25rem 5rem;
}
.hero-rainbow{position:absolute;bottom:-6%;left:50%;transform:translateX(-50%);width:min(1100px,150vw);z-index:0;}
.hero-rainbow path{fill:none;stroke-linecap:round;}
.hero-rainbow .arc{stroke-dasharray:900;stroke-dashoffset:900;animation:draw 1.6s ease forwards;}
.hero-rainbow .a1{animation-delay:.1s;}
.hero-rainbow .a2{animation-delay:.25s;}
.hero-rainbow .a3{animation-delay:.4s;}
.hero-rainbow .a4{animation-delay:.55s;}
.hero-rainbow .a5{animation-delay:.7s;}
@keyframes draw{to{stroke-dashoffset:0;}}

.hero-balloons{position:absolute;inset:0;z-index:0;pointer-events:none;}
.balloon{position:absolute;width:64px;animation:bob 5s ease-in-out infinite;}
.balloon.b1{top:12%;left:8%;width:56px;animation-delay:0s;}
.balloon.b2{top:20%;right:9%;width:70px;animation-delay:1.1s;}
.balloon.b3{top:6%;left:44%;width:44px;animation-delay:.5s;}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-3deg);}50%{transform:translateY(-22px) rotate(3deg);}}

.hero-content{position:relative;z-index:1;max-width:760px;}
.hero-content h1{font-size:clamp(2.4rem,6.5vw,4.8rem);font-weight:800;line-height:1.05;color:var(--ink);}
.hero-content h1 span{color:var(--pink-deep);}
.hero-sub{margin-top:1.4rem;font-size:clamp(1.05rem,2vw,1.3rem);color:var(--ink-soft);line-height:1.6;}
.scroll-cue{
  display:inline-block;
  margin-top:2.4rem;
  font-family:'Baloo 2',cursive;
  font-weight:600;
  font-size:1.05rem;
  text-decoration:none;
  color:var(--pink-deep);
  background:#fff;
  padding:.75rem 1.5rem;
  border-radius:999px;
  box-shadow:0 8px 0 rgba(225,79,134,.25);
  transition:transform .2s ease;
}
.scroll-cue:hover{transform:translateY(-3px);}

/* ---------- teaser cards (home) ---------- */
.chapter--cream{background:var(--bg-cream);}
.teaser-grid{margin-top:2.75rem;display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;}
.teaser-card{
  background:#fff;
  border-radius:24px;
  padding:2rem 1.5rem;
  text-decoration:none;
  color:inherit;
  box-shadow:0 10px 0 rgba(74,37,69,.06);
  transition:transform .25s ease;
  display:block;
}
.teaser-card:hover{transform:translateY(-6px) rotate(-1deg);}
.teaser-icon{width:52px;height:52px;margin:0 auto 1rem;}
.teaser-card h3{font-size:1.2rem;color:var(--pink-deep);margin-bottom:.5rem;}
.teaser-card p{color:var(--ink-soft);font-size:.95rem;line-height:1.5;}

/* ---------- horse / stables ---------- */
.horse-row{margin-top:3rem;display:grid;grid-template-columns:repeat(3,1fr);gap:1.75rem;}
.horse-card{background:#fff;border-radius:26px;padding:1.5rem 1.25rem 1.75rem;box-shadow:0 10px 0 rgba(74,37,69,.06);transition:transform .25s ease;}
.horse-card:hover{transform:translateY(-6px) rotate(-1deg);}
.horse-illustration{width:100%;height:auto;}
.horse-card h3{font-size:1.3rem;margin:.85rem 0 .35rem;color:var(--pink-deep);}
.horse-card p{font-size:.98rem;color:var(--ink-soft);line-height:1.55;}

/* ---------- lion's court ---------- */
.chapter--lion{background:var(--bg-lion);}
.lion-wrap{margin:2.5rem auto 0;max-width:320px;}
.lion-illustration{width:100%;height:auto;}
.lion-quote{margin-top:2rem;font-family:'Caveat',cursive;font-size:clamp(1.4rem,2.4vw,1.8rem);color:var(--pink-deep);font-weight:700;}

/* ---------- rainbow / pink section ---------- */
.chapter--rainbow{background:var(--bg-pink);}
.swatch-row{margin-top:2.5rem;display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;}
.swatch{width:76px;height:76px;border-radius:50%;box-shadow:0 8px 0 rgba(74,37,69,.06);display:flex;align-items:center;justify-content:center;font-family:'Baloo 2';font-size:.72rem;color:#fff;font-weight:700;text-align:center;padding:.4rem;}

/* ---------- party section ---------- */
.chapter--party{background:var(--bg-sky);}
.party-row{margin-top:2.5rem;display:flex;justify-content:center;gap:2rem;flex-wrap:wrap;}
.party-balloon-svg{width:80px;}

/* ---------- cake tower ---------- */
.chapter--cake{background:var(--bg-pink);}
.cake-scene{margin:2.75rem auto 1.5rem;display:flex;flex-direction:column;align-items:center;}
.cake{display:flex;flex-direction:column;align-items:center;position:relative;}
.candles{display:flex;gap:16px;margin-bottom:-6px;z-index:2;}
.candle{background:none;border:none;cursor:pointer;padding:6px 10px 0;display:flex;flex-direction:column;align-items:center;-webkit-tap-highlight-color:transparent;}
.candle-stick{width:9px;height:34px;border-radius:3px;background:repeating-linear-gradient(180deg,var(--sky) 0 6px,#fff 6px 12px);}
.candle:nth-child(2n) .candle-stick{background:repeating-linear-gradient(180deg,var(--pink) 0 6px,#fff 6px 12px);}
.candle:nth-child(3n) .candle-stick{background:repeating-linear-gradient(180deg,var(--mint) 0 6px,#fff 6px 12px);}
.flame{width:12px;height:16px;background:radial-gradient(circle at 50% 30%, #FFE8A3, var(--marigold) 60%, #FF9F45 100%);border-radius:50% 50% 50% 50%/60% 60% 40% 40%;margin-bottom:2px;transform-origin:bottom center;animation:flicker 1.4s ease-in-out infinite;transition:opacity .35s ease, transform .35s ease;}
@keyframes flicker{0%,100%{transform:scaleY(1) rotate(-2deg);}50%{transform:scaleY(1.12) rotate(2deg);}}
.candle.out .flame{opacity:0;transform:translateY(6px) scale(.4);}
.smoke{width:4px;height:4px;border-radius:50%;background:rgba(122,92,116,.35);opacity:0;margin-bottom:2px;}
.candle.out .smoke{animation:puff .9s ease forwards;}
@keyframes puff{0%{opacity:.6;transform:translateY(0) scale(1);}100%{opacity:0;transform:translateY(-22px) scale(3);}}
.tier{border-radius:18px 18px 10px 10px;position:relative;box-shadow:inset 0 -6px 0 rgba(0,0,0,.05);}
.tier::before{content:"";position:absolute;top:-9px;left:-4px;right:-4px;height:20px;background-repeat:repeat-x;background-size:22px 20px;background-image:radial-gradient(circle at 11px 20px, #fff 10px, transparent 10.5px);}
.tier-3{width:120px;height:60px;background:var(--marigold);}
.tier-2{width:180px;height:74px;background:var(--lavender);margin-top:-6px;}
.tier-1{width:250px;height:88px;background:var(--pink);margin-top:-6px;}
.plate{width:290px;height:16px;background:#fff;border-radius:50%;margin-top:6px;box-shadow:0 4px 0 rgba(74,37,69,.06);}
.wish-message{margin-top:2rem;font-size:clamp(1.3rem,2.4vw,1.7rem);color:var(--pink-deep);opacity:0;transform:translateY(10px);transition:opacity .5s ease, transform .5s ease;}
.wish-message.show{opacity:1;transform:translateY(0);}
.relight-btn{margin-top:1.75rem;font-family:'Baloo 2',cursive;font-weight:600;font-size:.95rem;color:var(--pink-deep);background:#fff;border:2px solid var(--pink);padding:.6rem 1.4rem;border-radius:999px;cursor:pointer;transition:transform .2s ease, background .2s ease;}
.relight-btn:hover{transform:translateY(-2px);background:#FFE4EE;}

/* ---------- finale ---------- */
.finale{position:relative;text-align:center;padding:clamp(4.5rem,9vw,7rem) 1.5rem clamp(4.5rem,8vw,6rem);background:linear-gradient(180deg,var(--bg-lav) 0%, #FFE9F2 60%, #FFDCEB 100%);overflow:hidden;}
.finale h2{font-size:clamp(2.1rem,4.5vw,3.3rem);color:var(--pink-deep);}
.finale p{max-width:560px;margin:1.3rem auto 0;font-size:clamp(1.02rem,1.5vw,1.15rem);line-height:1.7;color:var(--ink-soft);}
.finale-balloons{position:absolute;inset:0;pointer-events:none;}

/* ---------- profile card (about) ---------- */
.chapter--profile{background:var(--bg-cream);}
.profile-card{max-width:640px;margin:2.5rem auto 0;background:#fff;border-radius:30px;padding:clamp(1.75rem,4vw,2.5rem);box-shadow:0 12px 0 rgba(74,37,69,.06);}
.profile-title{font-size:1.4rem;color:var(--pink-deep);margin-bottom:.35rem;}
.profile-sub{color:var(--ink-soft);font-size:1rem;}
.profile-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;text-align:left;margin-top:1.5rem;}
.profile-fact{background:var(--bg-mint);border-radius:16px;padding:.9rem 1.1rem;}
.profile-fact .label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-weight:700;}
.profile-fact .value{font-family:'Baloo 2',cursive;font-size:1.1rem;color:var(--ink);margin-top:.15rem;}

/* ---------- portraits ---------- */
.chapter--portraits{background:var(--bg-mint);}
.portrait-grid{margin-top:3rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1.1rem;}
.portrait-frame.filled{border-style:solid;border-color:transparent;background:#fff;}
.feature-photo{max-width:320px;margin:2.25rem auto 0;border-radius:22px;overflow:hidden;box-shadow:0 10px 0 rgba(74,37,69,.08);transform:rotate(-2deg);}
.feature-photo.tilt-right{transform:rotate(2deg);}
.feature-photo img{width:100%;display:block;}
.feature-caption{margin-top:1rem;font-family:'Caveat',cursive;font-size:1.2rem;color:var(--pink-deep);font-weight:700;}

.real-adventures{margin-top:3.5rem;padding-top:2.5rem;border-top:3px dashed rgba(74,37,69,.15);}
.real-adventures h3{font-size:1.5rem;color:var(--ink);margin-bottom:.5rem;}
.real-adventures .chapter-copy{margin-bottom:0;}
.portrait-frame{aspect-ratio:4/5;border-radius:20px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;border:3px dashed rgba(74,37,69,.18);background:#fff;}
.portrait-frame img{width:100%;height:100%;object-fit:cover;}
.portrait-frame .placeholder-icon{width:38%;opacity:.55;}
.portrait-frame .placeholder-label{position:absolute;bottom:10px;left:0;right:0;text-align:center;font-size:.78rem;font-weight:600;color:var(--ink-soft);letter-spacing:.02em;}
.pf-1{background:#FFF1F6;}
.pf-2{background:#FFF8EA;}
.pf-3{background:#EEFBF6;}
.pf-4{background:#F3EEFF;}

/* ---------- adventures ---------- */
.chapter--adventures{background:var(--bg-cream);}
.adventure-grid{margin-top:2.75rem;display:grid;grid-template-columns:repeat(2,1fr);gap:1.75rem;text-align:left;}
.adventure-card{background:#fff;border-radius:26px;padding:1.9rem;box-shadow:0 10px 0 rgba(74,37,69,.06);}
.adventure-badge{display:inline-block;font-family:'Caveat',cursive;font-weight:700;color:var(--pink-deep);font-size:1.15rem;margin-bottom:.4rem;}
.adventure-card h3{font-size:1.35rem;margin-bottom:.6rem;color:var(--ink);}
.adventure-card p{color:var(--ink-soft);line-height:1.65;font-size:1rem;}
.adventure-icon{width:44px;height:44px;margin-bottom:.75rem;}

/* ---------- footer ---------- */
.site-footer{text-align:center;padding:2.5rem 1rem 2rem;font-size:.85rem;color:var(--ink-soft);background:#FFDCEB;}
.footer-nav{display:flex;justify-content:center;gap:1.25rem;margin-bottom:.9rem;flex-wrap:wrap;}
.footer-nav a{color:var(--pink-deep);text-decoration:none;font-weight:600;font-family:'Baloo 2',cursive;font-size:.9rem;}
.footer-nav a:hover{text-decoration:underline;}

/* ---------- confetti ---------- */
.confetti-layer{position:fixed;inset:0;pointer-events:none;z-index:999;overflow:hidden;}
.confetti-piece{position:absolute;top:-20px;width:9px;height:14px;opacity:.95;animation:fall linear forwards;}
@keyframes fall{to{transform:translateY(110vh) rotate(540deg);opacity:.2;}}

/* ---------- responsive ---------- */
@media (max-width:820px){
  .horse-row{grid-template-columns:1fr;}
  .teaser-grid{grid-template-columns:1fr;}
  .portrait-grid{grid-template-columns:repeat(2,1fr);}
  .adventure-grid{grid-template-columns:1fr;}
  .profile-facts{grid-template-columns:1fr;}
  .balloon.b3{display:none;}
}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
}
