/* ================================================
   FANTASY FACES BY SABRINA — Brand tokens
   Purple #9B5DE0 · Green #6FC344 · Coral #F1573E
   Yellow #F8C93B · Sky #4EC5E0 · Cream #FFFBF1 · Ink #2E2246
   ================================================ */
@import url('https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;700;800&family=Nunito:wght@400;600;700;800&display=swap');

:root{
  --purple:#9B5DE0;
  --purple-dark:#6B3FA0;
  --green:#6FC344;
  --coral:#F1573E;
  --yellow:#F8C93B;
  --sky:#4EC5E0;
  --cream:#FFFBF1;
  --ink:#2E2246;
  --white:#ffffff;
  --shadow: 6px 6px 0 rgba(46,34,70,0.14);
  --radius-lg: 32px;
  --radius-md: 20px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:'Nunito',sans-serif;
  background:var(--cream);
  color:var(--ink);
  overflow-x:hidden;
}
h1,h2,h3,h4,.display{
  font-family:'Baloo 2',cursive;
  line-height:1.05;
  margin:0 0 .4em;
}
p{line-height:1.6;}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px;}
section{position:relative;padding:70px 0;}

/* -------- background confetti -------- */
.confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;}
.confetti span{
  position:absolute;border-radius:50%;opacity:.55;
}

/* -------- nav -------- */
.site-nav{
  position:sticky;top:0;z-index:50;
  background:var(--white);
  border-bottom:5px solid var(--ink);
}
.site-nav .wrap{display:flex;align-items:center;justify-content:space-between;padding-top:10px;padding-bottom:10px;}
.brand{display:flex;align-items:center;gap:12px;font-family:'Baloo 2';font-weight:800;font-size:1.3rem;color:var(--purple-dark);}
.brand-text{display:flex;flex-direction:row;gap:6px;line-height:1.2;}
.brand-line1,.brand-line2{white-space:nowrap;}
@media(max-width:520px){
  .brand{font-size:1.05rem;}
  .brand-text{flex-direction:column;gap:0;line-height:1.15;}
}
.brand img{height:56px;width:56px;object-fit:contain;filter:drop-shadow(2px 3px 0 rgba(46,34,70,0.18));transition:transform .15s ease, filter .15s ease;}
.brand:hover img{transform:scale(1.08) rotate(-4deg);filter:drop-shadow(3px 4px 0 rgba(46,34,70,0.28));}
.nav-links{display:flex;gap:6px;align-items:center;}
.nav-links a{
  font-weight:800;font-family:'Baloo 2';font-size:1rem;
  padding:10px 16px;border-radius:999px;
  transition:transform .15s ease, background .15s ease;
}
.nav-links a:hover{background:var(--yellow);transform:translateY(-2px) rotate(-1deg);}
.nav-links a.cta{background:var(--coral);color:var(--white);box-shadow:var(--shadow);}
.nav-links a.cta:hover{background:var(--purple);}
.nav-toggle{display:none;background:none;border:3px solid var(--ink);border-radius:12px;padding:8px 12px;font-size:1.3rem;cursor:pointer;}

@media(max-width:820px){
  .nav-toggle{display:block;}
  .nav-links{
    position:absolute;top:100%;left:0;right:0;
    background:var(--white);border-bottom:5px solid var(--ink);
    flex-direction:column;align-items:stretch;padding:12px 20px 20px;
    display:none;
  }
  .nav-links.open{display:flex;}
  .nav-links a{text-align:center;}
}

/* -------- buttons -------- */
.btn{
  display:inline-block;font-family:'Baloo 2';font-weight:800;font-size:1.05rem;
  padding:14px 30px;border-radius:999px;border:4px solid var(--ink);
  box-shadow:var(--shadow); cursor:pointer;
  transition:transform .15s ease, box-shadow .15s ease;
}
.btn:hover{transform:translate(-3px,-3px) rotate(-1deg);box-shadow:9px 9px 0 rgba(46,34,70,0.18);}
.btn-purple{background:var(--purple);color:var(--white);}
.btn-coral{background:var(--coral);color:var(--white);}
.btn-yellow{background:var(--yellow);color:var(--ink);}
.btn-green{background:var(--green);color:var(--white);}
.btn-outline{background:var(--white);color:var(--ink);}

/* -------- wavy dividers -------- */
.wave{display:block;width:100%;line-height:0;margin-top:-2px;}

/* -------- hero -------- */
.hero{
  background:linear-gradient(180deg,#FBEBFF 0%, var(--cream) 100%);
  padding:60px 0 40px;
  text-align:center;
}
.hero h1{font-size:clamp(2.4rem,6vw,4.2rem);color:var(--purple-dark);}
.hero h1 span{color:var(--coral);}
.hero .sub{font-size:1.25rem;max-width:640px;margin:0 auto 28px;font-weight:700;color:var(--ink);}
.hero-logo{width:280px;margin:0 auto 18px;filter:drop-shadow(4px 6px 0 rgba(46,34,70,0.15));}
.hero-cta-row{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-top:10px;}
.badge-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:30px;}
.badge{
  background:var(--white);border:3px solid var(--ink);border-radius:999px;
  padding:8px 18px;font-family:'Baloo 2';font-weight:700;font-size:.95rem;
  box-shadow:4px 4px 0 rgba(46,34,70,0.14);
}

/* -------- floating butterflies -------- */
.floaty{position:absolute;pointer-events:none;animation:float 7s ease-in-out infinite;opacity:.9;}
@keyframes float{
  0%,100%{transform:translateY(0) rotate(-4deg);}
  50%{transform:translateY(-22px) rotate(6deg);}
}
@media (prefers-reduced-motion: reduce){
  .floaty{animation:none;}
  html{scroll-behavior:auto;}
}

/* -------- cards -------- */
.grid{display:grid;gap:26px;}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
@media(max-width:900px){.grid-3{grid-template-columns:repeat(2,1fr);} }
@media(max-width:640px){.grid-3,.grid-2{grid-template-columns:1fr;}}

.card{
  background:var(--white);border:4px solid var(--ink);border-radius:var(--radius-md);
  padding:24px;box-shadow:var(--shadow);
  transition:box-shadow .18s ease;
}
.card:hover{box-shadow:8px 8px 0 rgba(46,34,70,0.22);}
.card h3{color:var(--purple-dark);font-size:1.35rem;}
.card .price-tag{
  display:inline-block;margin-top:10px;background:var(--yellow);
  border:3px solid var(--ink);border-radius:999px;padding:6px 16px;
  font-family:'Baloo 2';font-weight:800;
}
.emoji-badge{font-size:2.4rem;display:block;margin-bottom:8px;}

.section-title{text-align:center;margin-bottom:14px;}
.section-title h2{font-size:clamp(1.9rem,4vw,2.8rem);color:var(--purple-dark);}
.section-title p{max-width:600px;margin:0 auto;font-weight:700;}
.eyebrow{
  display:inline-block;font-family:'Baloo 2';font-weight:800;letter-spacing:.03em;
  background:var(--coral);color:var(--white);border-radius:999px;padding:6px 18px;
  margin-bottom:12px;transform:rotate(-2deg);
}

/* alternating panel backgrounds */
.panel-purple{background:#F1E5FF;}
.panel-green{background:#EAF7DE;}
.panel-yellow{background:#FFF6D9;}
.panel-sky{background:#E2F7FC;}
.panel-ink{background:var(--ink);color:var(--white);}
.panel-ink .section-title h2{color:var(--yellow);}

/* -------- footer -------- */
footer{
  background:var(--ink);color:var(--white);padding:50px 0 30px;text-align:center;
}
footer h3{color:var(--yellow);}
footer a{text-decoration:underline;}
.foot-links{display:flex;gap:20px;justify-content:center;flex-wrap:wrap;margin:18px 0;font-family:'Baloo 2';font-weight:700;}
.foot-note{opacity:.7;font-size:.85rem;margin-top:20px;}

/* -------- placeholder image tiles (for gallery/photos not yet supplied) -------- */
.photo-slot{
  aspect-ratio:1/1;border-radius:var(--radius-md);border:4px dashed var(--purple);
  background:repeating-linear-gradient(135deg, #F1E5FF, #F1E5FF 12px, #E7D4FF 12px, #E7D4FF 24px);
  display:flex;align-items:center;justify-content:center;text-align:center;
  font-family:'Baloo 2';font-weight:700;color:var(--purple-dark);padding:14px;
}

/* -------- pricing table -------- */
.price-list{list-style:none;margin:0;padding:0;}
.price-list li{
  display:flex;justify-content:space-between;gap:12px;
  padding:12px 0;border-bottom:3px dotted rgba(46,34,70,.25);font-weight:800;font-family:'Baloo 2';
}
.price-list li:last-child{border-bottom:none;}
.price-list .amt{color:var(--coral);}

/* -------- jokes -------- */
.joke-card{
  background:var(--white);border:4px solid var(--ink);border-radius:var(--radius-md);
  padding:22px;box-shadow:var(--shadow);cursor:pointer;
}
.joke-card .punchline{display:none;margin-top:10px;color:var(--purple-dark);font-weight:800;}
.joke-card.open .punchline{display:block;}
.joke-card .tap-hint{font-size:.85rem;opacity:.6;margin-top:8px;}

#color-section{padding-bottom:24px;}
@media(max-width:520px){
  #color-section{padding-bottom:8px;}
  #jokes-section{padding-top:24px;}
}

/* -------- coloring page -------- */
:root{ --swatch-size: 60px; --swatch-gap: 10px; --palette-w: 84px; }
.color-app{display:grid;grid-template-columns:1fr var(--palette-w);gap:16px;align-items:center;max-width:555px;margin:0 auto;}
@media(max-width:520px){
  :root{ --swatch-size: 46px; --swatch-gap: 6px; --palette-w: 70px; }
  .color-app{gap:8px;max-width:100%;}
  .palette{gap:4px;padding:6px;}
}
.canvas-wrap{
  background:var(--white);border:4px solid var(--ink);border-radius:var(--radius-lg);
  padding:20px;box-shadow:var(--shadow);
}
@media(max-width:520px){.canvas-wrap{padding:8px;}}
.canvas-wrap canvas{width:100%;height:auto;display:block;aspect-ratio:1/1;border-radius:var(--radius-md);cursor:pointer;touch-action:none;}

.palette{
  background:var(--white);border:4px solid var(--ink);border-radius:var(--radius-lg);
  padding:8px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;align-items:center;gap:6px;
}
.scroll-arrow{
  width:100%;height:38px;background:var(--cream);color:var(--ink);
  border:3px solid var(--ink);border-radius:10px;font-size:1.3rem;font-weight:800;
  cursor:pointer;line-height:1;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;
}
.scroll-arrow:hover{background:var(--yellow);}
@media(max-width:520px){ .scroll-arrow{height:32px;font-size:1.1rem;} }
.swatches{
  display:flex;flex-direction:column;gap:var(--swatch-gap);
  width:100%;
  height:calc(3 * var(--swatch-size) + 2 * var(--swatch-gap));
  overflow-y:auto;scroll-snap-type:y proximity;
  overscroll-behavior:contain;touch-action:pan-y;
  scrollbar-width:none;
}
.swatches::-webkit-scrollbar{display:none;}
@media(min-width:521px){
  .swatches{ height:calc(4 * var(--swatch-size) + 3 * var(--swatch-gap)); }
}
.swatch{
  width:var(--swatch-size);height:var(--swatch-size);flex:0 0 auto;
  border-radius:50%;border:4px solid var(--ink);cursor:pointer;scroll-snap-align:start;
}
.swatch.selected{outline:4px solid var(--yellow);outline-offset:3px;}
.reset-btn{
  width:var(--swatch-size);height:var(--swatch-size);border-radius:50%;padding:0;font-size:1.3rem;
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;
  background:#000;border:4px solid var(--ink);
}
.reset-btn:hover{background:#222;}
.design-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px;justify-content:center;max-width:555px;margin-left:auto;margin-right:auto;}
.design-tabs button{
  font-family:'Baloo 2';font-weight:800;border:3px solid var(--ink);border-radius:999px;
  padding:10px 18px;background:var(--white);cursor:pointer;
}
.design-tabs button.active{background:var(--green);color:var(--white);}
.design-tabs-thumbs{gap:10px;}
.design-tabs-thumbs button{
  display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:3px 3px 4px;border-radius:14px;font-size:.68rem;width:58px;
}
.design-tabs-thumbs button img{
  width:44px;height:44px;border-radius:50%;object-fit:cover;border:3px solid var(--ink);background:var(--white);
}
@media(max-width:520px){
  .design-tabs-thumbs{gap:6px;}
  .design-tabs-thumbs button{width:58px;padding:2px 2px 3px;font-size:.66rem;}
  .design-tabs-thumbs button img{width:46px;height:46px;}
}
.design-tabs-thumbs button.active{background:var(--green);color:var(--white);}
.design-tabs-thumbs button.active img{border-color:var(--white);}

/* -------- gallery carousel -------- */
:root{ --car-visible: 3; }
@media(max-width:980px){ :root{ --car-visible: 2; } }
@media(max-width:640px){ :root{ --car-visible: 1; } }

.carousel{ display:flex; align-items:center; gap:14px; }
.car-viewport{ overflow:hidden; flex:1; }
.car-track{ display:flex; touch-action:pan-y; transition:transform .4s cubic-bezier(.4,0,.2,1); }
.car-item{
  flex:0 0 calc(100% / var(--car-visible));
  box-sizing:border-box; padding:0 10px;
}
.car-item img{
  width:100%; aspect-ratio:1/1; object-fit:cover; display:block;
  border-radius:var(--radius-md); border:4px solid var(--ink); box-shadow:var(--shadow);
}
.car-arrow{
  flex:0 0 auto; width:48px; height:48px; border-radius:50%;
  background:var(--white); border:4px solid var(--ink); font-family:'Baloo 2';
  font-size:1.5rem; font-weight:800; line-height:1; cursor:pointer; box-shadow:var(--shadow);
}
.car-arrow:hover{ background:var(--yellow); }
.car-dots{ display:flex; justify-content:center; gap:10px; margin-top:22px; }
.car-dot{
  width:13px; height:13px; border-radius:50%; background:var(--white);
  border:3px solid var(--ink); cursor:pointer; padding:0;
}
.car-dot.active{ background:var(--coral); }

/* -------- fun facts ticker -------- */
.ticker-wrap{
  background:var(--ink);overflow:hidden;padding:14px 0;border-top:5px solid var(--ink);border-bottom:5px solid var(--ink);
}
.ticker{display:flex;gap:60px;white-space:nowrap;animation:scroll 42s linear infinite;font-family:'Baloo 2';font-weight:700;color:var(--yellow);font-size:1.05rem;}
.ticker-spacer{display:inline-block;width:60vw;flex:0 0 auto;}
@keyframes scroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@media (prefers-reduced-motion: reduce){.ticker{animation:none;}}

/* -------- booking -------- */
.booking-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px;}
@media(max-width:900px){.booking-grid{grid-template-columns:1fr;}}
.cal-embed{
  background:var(--white);border:4px solid var(--ink);border-radius:var(--radius-lg);
  overflow:hidden;box-shadow:var(--shadow);min-height:480px;
}
.cal-embed iframe{width:100%;height:600px;border:none;display:block;}
.status-pill{
  display:inline-flex;align-items:center;gap:8px;font-family:'Baloo 2';font-weight:800;
  padding:6px 14px;border-radius:999px;border:3px solid var(--ink);font-size:.85rem;
}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;}
.dot.solid{background:var(--green);}
.dot.tentative{background:var(--yellow);}
.dot.call{background:var(--coral);}
