:root {
  --red: #e33830;
  --red-dark: #c92720;
  --cream: #f8efe0;
  --paper: #fffaf1;
  --ink: #181714;
  --yellow: #f3c950;
  --pink: #ef8ca1;
  --blue: #6ab5bd;
  --line: rgba(24, 23, 20, 0.17);
  --radius: 28px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "DM Sans", sans-serif;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { display:block; max-width:100%; height:auto; }
button { font: inherit; }

.scroll-progress { position:fixed; inset:0 0 auto 0; height:4px; z-index:2000; pointer-events:none; background:transparent; }
.scroll-progress span { display:block; width:100%; height:100%; background:var(--yellow); transform:scaleX(0); transform-origin:left center; will-change:transform; box-shadow:0 1px 0 rgba(24,23,20,.12); }
section[id], main[id] { scroll-margin-top:100px; }


.site-header {
  position: fixed;
  z-index: 120;
  top: 18px;
  left: 50%;
  transform: translateX(-50%);
  width: min(1180px, calc(100% - 36px));
  height: 78px;
  padding: 10px 11px 10px 18px;
  border: 1px solid rgba(255,255,255,.56);
  border-radius: 22px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: rgba(255,250,241,.82);
  box-shadow: 0 12px 40px rgba(40,24,14,.08);
  backdrop-filter: blur(15px);
  transition: top .3s ease, box-shadow .3s ease, background .3s ease;
}
.site-header.scrolled { top: 10px; box-shadow: 0 14px 50px rgba(40,24,14,.14); }
.brand { width: 150px; height: 54px; display: flex; align-items: center; flex: 0 0 auto; }
.brand img { display:block; width:100%; height:100%; object-fit:contain; object-position:left center; }
.header-actions { display:flex; align-items:center; gap:8px; }
.header-cta { background:var(--ink); color:var(--cream); padding:15px 20px; border-radius:14px; font-size:13px; font-weight:700; transition:transform .25s ease, background .25s ease; }
.header-cta:hover { background:var(--red); transform:translateY(-2px); }
.menu-toggle { display:block; position:relative; z-index:130; border:0; border-radius:14px; background:rgba(24,23,20,.06); width:48px; height:48px; padding:13px; cursor:pointer; transition:background .25s ease, transform .25s ease; }
.menu-toggle:hover { background:rgba(227,56,48,.12); transform:rotate(-2deg); }
.menu-toggle span { position:absolute; left:13px; width:22px; height:2px; background:var(--ink); border-radius:4px; transition:transform .35s cubic-bezier(.2,.8,.2,1), top .35s cubic-bezier(.2,.8,.2,1), width .25s ease; }
.menu-toggle span:first-child { top:19px; }
.menu-toggle span:last-child { top:27px; width:16px; left:19px; }
.menu-toggle:hover span:last-child { width:22px; left:13px; }
.menu-toggle.active { background:var(--red); transform:rotate(0); }
.menu-toggle.active span { background:var(--cream); width:22px; left:13px; top:23px; }
.menu-toggle.active span:first-child { transform:rotate(45deg); }
.menu-toggle.active span:last-child { transform:rotate(-45deg); }

.menu-backdrop { position:fixed; inset:0; z-index:105; background:rgba(24,23,20,.48); opacity:0; visibility:hidden; backdrop-filter:blur(5px); transition:opacity .38s ease, visibility .38s ease; }
.menu-backdrop.open { opacity:1; visibility:visible; }
.site-nav { position:fixed; z-index:110; top:0; right:0; width:min(560px, 92vw); height:100dvh; min-height:560px; padding:125px 42px 34px; background:var(--cream); color:var(--ink); display:flex; flex-direction:column; overflow:hidden; transform:translateX(104%); visibility:hidden; box-shadow:-28px 0 80px rgba(0,0,0,.18); transition:transform .56s cubic-bezier(.76,0,.18,1), visibility .56s; }
.site-nav::before { content:""; position:absolute; width:360px; height:360px; right:-170px; top:-145px; border-radius:50%; border:1px solid rgba(227,56,48,.2); box-shadow:0 0 0 42px rgba(227,56,48,.045), 0 0 0 84px rgba(227,56,48,.035); pointer-events:none; }
.site-nav::after { content:"✦"; position:absolute; right:55px; bottom:150px; color:var(--red); font-size:30px; transform:rotate(14deg); opacity:.8; pointer-events:none; }
.site-nav.open { transform:translateX(0); visibility:visible; }
.menu-panel-top { display:flex; align-items:center; justify-content:space-between; gap:20px; padding-bottom:20px; border-bottom:1px solid var(--line); text-transform:uppercase; letter-spacing:.14em; font-size:10px; font-weight:700; }
.menu-kicker { color:var(--red); }
.menu-mini-note { color:rgba(24,23,20,.5); }
.menu-links { display:flex; flex-direction:column; margin-top:14px; }
.menu-links a { display:grid; grid-template-columns:42px 1fr 34px; align-items:center; gap:10px; min-height:84px; border-bottom:1px solid var(--line); opacity:0; transform:translateX(28px); transition:opacity .35s ease, transform .35s ease, padding-left .25s ease, color .25s ease; }
.site-nav.open .menu-links a { opacity:1; transform:translateX(0); }
.site-nav.open .menu-links a:nth-child(1){transition-delay:.16s}.site-nav.open .menu-links a:nth-child(2){transition-delay:.21s}.site-nav.open .menu-links a:nth-child(3){transition-delay:.26s}.site-nav.open .menu-links a:nth-child(4){transition-delay:.31s}.site-nav.open .menu-links a:nth-child(5){transition-delay:.36s}
.menu-number { align-self:start; padding-top:29px; color:var(--red); font-size:10px; font-weight:800; letter-spacing:.08em; }
.menu-title { font:700 clamp(28px,3vw,38px)/1 "Fraunces",serif; letter-spacing:-.035em; }
.menu-arrow { width:32px; height:32px; border:1px solid rgba(24,23,20,.2); border-radius:50%; display:grid; place-items:center; font-size:15px; transition:transform .25s ease, background .25s ease, color .25s ease, border-color .25s ease; }
.menu-links a:hover { padding-left:7px; color:var(--red); }
.menu-links a:hover .menu-arrow { transform:rotate(45deg); background:var(--red); color:var(--cream); border-color:var(--red); }
.menu-panel-bottom { margin-top:auto; display:flex; align-items:flex-end; justify-content:space-between; gap:28px; padding-top:28px; }
.menu-badge { width:112px; height:112px; flex:0 0 auto; border:2px solid var(--ink); border-radius:50%; display:flex; align-items:center; justify-content:center; flex-direction:column; text-align:center; background:var(--yellow); transform:rotate(-8deg); box-shadow:5px 5px 0 var(--ink); transition:transform .3s ease; padding:14px 10px 12px; }
.site-nav.open .menu-badge { animation:menuBadgeIn .7s .32s cubic-bezier(.34,1.56,.64,1) both; }
.menu-badge:hover { transform:rotate(2deg) scale(1.04); }
.menu-badge span,.menu-badge small { font-size:8px; line-height:1; letter-spacing:.12em; font-weight:800; }
.menu-badge b { margin:3px 0; font:700 21px/.9 "Fraunces",serif; color:var(--red); }
.menu-contact { display:flex; flex-direction:column; align-items:flex-end; text-align:right; gap:6px; font-size:11px; color:rgba(24,23,20,.55); }
.menu-contact a { color:var(--ink); font-weight:700; border-bottom:1px solid currentColor; padding-bottom:3px; }
@keyframes menuBadgeIn { from { opacity:0; transform:scale(.75) rotate(-20deg); } to { opacity:1; transform:scale(1) rotate(-8deg); } }

.hero {
  min-height: 840px;
  background: var(--red);
  color: var(--cream);
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  align-items: center;
  gap: 45px;
  padding: 150px max(5vw, calc((100vw - 1180px)/2)) 90px;
  position: relative;
  overflow: hidden;
}
.hero::before { content:""; position:absolute; width:510px; height:510px; border:1px solid rgba(255,255,255,.15); border-radius:50%; left:-260px; bottom:-230px; }
.pattern-dots { position:absolute; inset:0; opacity:.12; background-image:radial-gradient(var(--cream) 1.2px, transparent 1.2px); background-size:26px 26px; mask-image:linear-gradient(100deg, black, transparent 72%); }
.hero::after { content:""; position:absolute; width:420px; height:420px; right:-190px; top:110px; border:1px solid rgba(255,255,255,.14); border-radius:50%; box-shadow:0 0 0 46px rgba(255,255,255,.03), 0 0 0 92px rgba(255,255,255,.02); }
.hero-doodles { position:absolute; inset:0; pointer-events:none; z-index:1; }
.hero-star { position:absolute; left:calc(50% - 34px); top:142px; color:var(--yellow); font-size:36px; transform:rotate(8deg); animation:contactStar 4.8s ease-in-out infinite; }
.hero-dot { position:absolute; right:14%; top:192px; width:18px; height:18px; background:var(--pink); border:2px solid var(--cream); border-radius:50%; }
.hero-swoop { position:absolute; right:8%; bottom:136px; width:90px; height:22px; border-top:5px solid rgba(106,181,189,.92); border-radius:50%; transform:rotate(-12deg); }
.hero-copy { position:relative; z-index:2; max-width:650px; }
.eyebrow, .kicker { text-transform:uppercase; letter-spacing:.16em; font-size:12px; font-weight:700; }
.eyebrow { display:flex; align-items:center; gap:10px; margin:0 0 25px; }
.eyebrow span { width:34px; height:1px; background:currentColor; }
.hero h1 { margin:0; font-family:"Fraunces", serif; font-size:clamp(58px, 6.6vw, 102px); letter-spacing:-.055em; line-height:.93; font-weight:700; max-width:760px; }
.hero h1 em { display:block; color: var(--yellow); font-style:italic; font-weight:600; }
.hero-intro { max-width:580px; margin:32px 0 0; font-size:18px; line-height:1.7; color:rgba(255,247,232,.86); }
.hero-actions { display:flex; align-items:center; flex-wrap:wrap; gap:28px; margin-top:38px; }
.button { display:inline-flex; align-items:center; justify-content:center; min-height:56px; padding:0 25px; border-radius:15px; font-weight:700; transition:.25s ease; }
.button-primary { color:var(--ink); background:var(--cream); box-shadow:7px 7px 0 var(--ink); }
.button-primary:hover { transform:translate(-2px,-2px); box-shadow:10px 10px 0 var(--ink); }
.text-link { display:inline-flex; align-items:center; gap:9px; font-weight:700; border-bottom:1px solid currentColor; padding-bottom:5px; }
.text-link span { transition:.2s; }
.text-link:hover span { transform:translate(3px,-3px); }
.hero-note { display:flex; align-items:flex-start; gap:13px; max-width:500px; margin-top:55px; padding-top:22px; border-top:1px solid rgba(255,255,255,.25); font-size:13px; line-height:1.6; }
.hero-note p { margin:0; color:rgba(255,247,232,.8); }
.hero-note strong { color:var(--cream); }
.spark { color:var(--yellow); font-size:20px; }

.hero-visual { min-height:600px; position:relative; display:grid; place-items:center; }
.sunburst { width:520px; aspect-ratio:1; position:absolute; border-radius:50%; background:repeating-conic-gradient(from 7deg, rgba(248,239,224,.2) 0deg 8deg, transparent 8deg 17deg); animation:sunburstDrift 24s linear infinite; }
.cart-card { width:min(410px, 88%); height:475px; background:var(--cream); border:5px solid var(--ink); border-radius:24px 24px 16px 16px; position:relative; transform:rotate(-2deg); box-shadow:18px 20px 0 rgba(24,23,20,.16); z-index:2; transition:transform .45s cubic-bezier(.22,1,.36,1), box-shadow .45s ease; }
.hero-visual:hover .cart-card { transform:rotate(-1deg) translateY(-5px); box-shadow:20px 24px 0 rgba(24,23,20,.14); }
.cart-awning { height:72px; display:flex; overflow:hidden; border-bottom:5px solid var(--ink); border-radius:17px 17px 0 0; }
.cart-awning i { flex:1; background:var(--yellow); border-right:3px solid var(--ink); }
.cart-awning i:nth-child(even) { background:var(--red); }
.cart-arch { position:absolute; inset:95px 54px 112px; border:5px solid var(--ink); border-bottom:0; border-radius:22px 22px 0 0; opacity:.18; }
.hero-cart-logo { position:absolute; left:50%; top:164px; transform:translateX(-50%); width:255px; height:auto; object-fit:contain; }
.hero-cart-subtitle { position:absolute; left:50%; top:274px; transform:translateX(-50%); color:var(--red); font-size:12px; font-weight:800; letter-spacing:.24em; white-space:nowrap; }
.cart-base { position:absolute; bottom:0; left:0; right:0; height:105px; background:var(--red); color:var(--cream); border-top:5px solid var(--ink); display:flex; align-items:center; justify-content:center; flex-direction:column; }
.cart-base small { letter-spacing:.22em; font-weight:700; margin-top:2px; font-size:14px; }
.cart-base-simple { padding:0; }
.wheel { position:absolute; bottom:-42px; width:78px; height:78px; border:5px solid var(--ink); border-radius:50%; background:var(--yellow); }
.wheel::after { content:""; position:absolute; inset:21px; border:4px solid var(--ink); border-radius:50%; }
.wheel-left { left:35px; } .wheel-right { right:35px; }
.ticket { position:absolute; z-index:4; color:var(--ink); background:var(--yellow); border:3px solid var(--ink); padding:13px 18px; text-align:center; font-weight:900; letter-spacing:.08em; box-shadow:6px 6px 0 var(--ink); }
.ticket-one { top:70px; right:0; transform:rotate(8deg); animation:ticketFloatOne 5.5s ease-in-out infinite; } .ticket-one small { font-size:8px; }
.ticket-two { left:-25px; bottom:60px; transform:rotate(-8deg); font-size:11px; background:var(--pink); animation:ticketFloatTwo 6.2s ease-in-out infinite; }
.stamp { position:absolute; top:30px; left:10px; z-index:3; width:100px; aspect-ratio:1; display:grid; place-items:center; text-align:center; border:3px solid var(--cream); border-radius:50%; font-weight:900; line-height:1.05; letter-spacing:.08em; transform:rotate(-12deg); animation:stampBob 5s ease-in-out infinite; }

.ticker { overflow:hidden; background:var(--ink); color:var(--cream); border-top:1px solid rgba(255,255,255,.1); }
.ticker-track {
  --ticker-half-width: 0px;
  width:max-content;
  display:flex;
  align-items:center;
  padding:18px 0;
  animation:ticker 40s linear infinite;
  text-transform:uppercase;
  letter-spacing:.1em;
  font-weight:700;
  font-size:13px;
  will-change:transform;
}
.ticker-group { display:flex; align-items:center; gap:30px; flex-shrink:0; padding-right:30px; }
.ticker i { color:var(--red); font-style:normal; }
@keyframes ticker {
  from { transform:translate3d(0,0,0); }
  to { transform:translate3d(calc(-1 * var(--ticker-half-width)),0,0); }
}

.section { position:relative; padding:110px max(5vw, calc((100vw - 1180px)/2)); overflow:hidden; }

.section-doodles { position:absolute; inset:0; pointer-events:none; z-index:0; }
.section-doodles .doodle-star { position:absolute; color:var(--yellow); font-style:normal; font-size:30px; animation:contactStar 4.8s ease-in-out infinite; }
.section-doodles .doodle-dot { position:absolute; width:18px; height:18px; background:var(--pink); border:2px solid var(--ink); border-radius:50%; }
.section-doodles .doodle-swoop { position:absolute; width:86px; height:20px; border-top:5px solid var(--blue); border-radius:50%; }
.intro-grid, .moments-top, .cards-grid, .mini-top, .flavour-showcase, .cart-showcase, .contact-inner { position:relative; z-index:1; }
.home-page .intro::before,
.home-page .moments::before,
.home-page .mini-melts::before,
.home-page .contact::before {
  content:"";
  position:absolute;
  border:1px solid rgba(227,56,48,.13);
  border-radius:50%;
  pointer-events:none;
  z-index:0;
}
.home-page .intro::after,
.home-page .moments::after,
.home-page .mini-melts::after,
.home-page .contact::after {
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:0;
  opacity:.16;
  background-image:radial-gradient(rgba(227,56,48,.32) 1px, transparent 1px);
  background-size:28px 28px;
}
.home-page .intro::before {
  width:470px;
  height:470px;
  left:-255px;
  top:70px;
  box-shadow:0 0 0 55px rgba(227,56,48,.035), 0 0 0 110px rgba(227,56,48,.022);
}
.home-page .intro::after {
  mask-image:linear-gradient(112deg, black 12%, black 48%, transparent 88%);
}
.home-page .moments::before {
  width:360px;
  height:360px;
  right:-180px;
  top:55px;
  box-shadow:0 0 0 42px rgba(227,56,48,.03), 0 0 0 84px rgba(227,56,48,.02);
}
.home-page .moments::after {
  mask-image:linear-gradient(78deg, transparent 6%, black 40%, transparent 84%);
}
.home-page .mini-melts::before {
  width:430px;
  height:430px;
  left:-230px;
  bottom:140px;
  box-shadow:0 0 0 48px rgba(227,56,48,.028), 0 0 0 96px rgba(227,56,48,.018);
}
.home-page .mini-melts::after {
  mask-image:linear-gradient(120deg, transparent 8%, black 34%, transparent 80%);
}
.home-page .contact::before {
  width:400px;
  height:400px;
  right:-210px;
  bottom:-40px;
  box-shadow:0 0 0 46px rgba(227,56,48,.03), 0 0 0 92px rgba(227,56,48,.02);
}
.home-page .contact::after {
  mask-image:linear-gradient(65deg, transparent 12%, black 48%, transparent 86%);
}
.intro-doodles .doodle-star { right:7%; top:130px; }
.intro-doodles .doodle-dot { left:11%; bottom:108px; }
.intro-doodles .doodle-swoop { right:8%; bottom:92px; transform:rotate(-10deg); }
.moments-doodles .doodle-star { left:8%; top:82px; font-size:24px; }
.moments-doodles .doodle-dot { right:9%; top:118px; }
.moments-doodles .doodle-swoop { left:11%; bottom:76px; transform:rotate(12deg); }
.offerings-doodles .doodle-star { right:7%; top:96px; }
.offerings-doodles .doodle-dot { left:9%; top:170px; }
.offerings-doodles .doodle-swoop { right:7%; bottom:110px; transform:rotate(-14deg); }
.contact-home-doodles .doodle-star { right:10%; top:56px; font-size:24px; }
.contact-home-doodles .doodle-dot { left:12%; top:72px; }
.contact-home-doodles .doodle-swoop { right:7%; bottom:78px; transform:rotate(-10deg); }

.intro-grid { display:grid; grid-template-columns:1fr 1fr; gap:90px; margin-top:18px; align-items:start; }
.kicker { color:var(--red); margin:0 0 17px; }
.intro h2, .moments h2, .contact h2 { margin:0; font:700 clamp(45px,5vw,76px)/1 "Fraunces",serif; letter-spacing:-.045em; }
.intro h2 span { color:var(--red); }
.intro-copy { padding-top:58px; max-width:560px; }
.intro-copy p { font-size:17px; line-height:1.85; color:rgba(24,23,20,.72); margin:0 0 24px; }
.intro-heading { display:flex; flex-direction:column; gap:22px; }
.about-graphic { position:relative; width:min(440px, 100%); margin:10px 0 0; padding:18px; background:linear-gradient(180deg, #fffdf8 0%, #f4ebda 100%); border:2px solid var(--ink); border-radius:30px; box-shadow:14px 16px 0 rgba(24,23,20,.08); overflow:hidden; }
.about-graphic::before { content:""; position:absolute; width:155px; height:155px; top:-42px; right:-30px; background:rgba(233,56,48,.12); border-radius:50%; }
.about-graphic::after { content:"✦"; position:absolute; left:18px; top:14px; color:var(--red); font-size:20px; transform:rotate(8deg); }
.about-graphic img { position:relative; z-index:1; width:100%; height:auto; display:block; transition:transform .5s cubic-bezier(.22,1,.36,1); }
.about-graphic { transition:transform .45s cubic-bezier(.22,1,.36,1), box-shadow .45s ease; }
.about-graphic:hover { transform:rotate(-.7deg) translateY(-5px); box-shadow:18px 20px 0 rgba(24,23,20,.09); }
.about-graphic:hover img { transform:scale(1.02); }
.text-link.dark { margin-top:15px; color:var(--ink); }
.text-link span { display:inline-block; transition:transform .25s ease; }
.text-link:hover span { transform:translate(3px,-3px); }

.moments { background:var(--cream); }
.moments-top { display:grid; grid-template-columns:1.2fr .8fr; align-items:end; gap:70px; margin-bottom:55px; }
.moments-top > p { line-height:1.75; color:rgba(24,23,20,.67); margin:0 0 5px; }
.cards-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.moment-card { min-height:520px; border:2px solid var(--ink); border-radius:var(--radius); overflow:hidden; position:relative; display:flex; flex-direction:column; transition:.3s; }
.moment-card:hover { transform:translateY(-8px) rotate(-.4deg); box-shadow:10px 12px 0 var(--ink); }
.card-red { background:var(--red); color:var(--cream); }
.card-cream { background:var(--paper); }
.card-dark { background:var(--ink); color:var(--cream); }
.card-art { height:315px; position:relative; display:grid; place-items:center; overflow:hidden; }
.card-content { padding:0 28px 30px; margin-top:auto; }
.card-content h3 { margin:0 0 13px; font:700 30px/1.05 "Fraunces",serif; letter-spacing:-.03em; }
.card-content p { margin:0; line-height:1.65; opacity:.75; font-size:14px; }
.festival-art .stage { width:210px; height:135px; border:5px solid var(--ink); border-bottom:0; position:absolute; bottom:45px; background:var(--yellow); display:flex; gap:17px; align-items:flex-end; justify-content:center; padding-bottom:15px; }
.stage::before { content:""; position:absolute; width:250px; height:80px; top:-48px; border:5px solid var(--ink); background:var(--cream); clip-path:polygon(50% 0,100% 100%,0 100%); }
.stage i { width:25px; background:var(--red-dark); border:3px solid var(--ink); height:48px; z-index:2; }
.stage i:nth-child(2){height:76px;background:var(--blue)} .stage i:nth-child(3){height:61px;background:var(--pink)}
.flag { position:absolute; top:50px; width:50px; height:33px; border:3px solid var(--ink); background:var(--cream); }
.flag::before { content:""; width:3px; height:80px; background:var(--ink); position:absolute; left:-3px; top:0; }
.f1{left:22%;transform:rotate(-6deg)}.f2{left:45%;top:30px;background:var(--yellow)}.f3{right:18%;transform:rotate(7deg);background:var(--pink)}
.market-art .market-canopy { width:245px; height:95px; border:5px solid var(--ink); border-radius:100px 100px 5px 5px; background:repeating-linear-gradient(90deg,var(--red) 0 34px,var(--cream) 34px 68px); position:absolute; top:60px; }
.market-counter { position:absolute; top:150px; width:215px; height:125px; border:5px solid var(--ink); background:var(--blue); display:flex; justify-content:center; gap:10px; padding-top:23px; }
.market-counter span { width:38px; height:55px; background:var(--cream); border:3px solid var(--ink); clip-path:polygon(8% 0,92% 0,80% 100%,20% 100%); }
.market-counter span:nth-child(2){background:var(--pink)}.market-counter span:nth-child(3){background:var(--yellow)}
.balloon { position:absolute; width:62px; height:78px; border:4px solid var(--cream); border-radius:50%; }
.balloon::after { content:""; width:2px; height:120px; background:var(--cream); position:absolute; left:50%; top:74px; transform-origin:top; transform:rotate(8deg); }
.b1{background:var(--red);left:19%;top:52px;transform:rotate(-12deg)}.b2{background:var(--yellow);right:18%;top:38px;transform:rotate(12deg)}.b3{background:var(--blue);left:47%;top:75px;transform:scale(.8)}
.party-cup { width:135px; height:145px; background:var(--pink); border:5px solid var(--cream); clip-path:polygon(7% 0,93% 0,78% 100%,22% 100%); position:absolute; bottom:25px; }
.party-cup i { position:absolute; width:34px; height:34px; border:4px solid var(--cream); border-radius:50%; background:var(--yellow); top:-8px; }
.party-cup i:nth-child(1){left:3px}.party-cup i:nth-child(2){left:35px;top:-23px;background:var(--red)}.party-cup i:nth-child(3){left:68px;top:-12px;background:var(--blue)}.party-cup i:nth-child(4){left:95px;top:4px;background:var(--cream)}.party-cup i:nth-child(5){left:23px;top:20px;background:var(--blue)}.party-cup i:nth-child(6){left:60px;top:22px;background:var(--yellow)}


.mini-melts { padding-top:72px; }
.mini-top { margin-top:18px; display:grid; grid-template-columns:1fr 1fr; gap:82px; align-items:start; }
.mini-copy h2 { margin:0 0 38px; font:700 clamp(44px,5vw,72px)/1 "Fraunces",serif; letter-spacing:-.045em; }
.mini-copy h2 span { color:var(--red); }
.mini-copy > p { max-width:620px; font-size:17px; line-height:1.9; color:rgba(24,23,20,.72); margin:0 0 30px; }
.mini-list { list-style:none; padding:0; margin:58px 0 0; display:grid; gap:30px; }
.mini-list li { display:grid; grid-template-columns:150px 1fr; gap:30px; padding:26px 0; border-top:1px solid var(--line); }
.mini-list li b { font-size:14px; }
.mini-list li span { color:rgba(24,23,20,.68); line-height:1.6; font-size:14px; }
.mini-visual { display:grid; grid-template-columns:1fr 1fr; gap:26px; align-items:start; padding-top:18px; }
.mini-photo-card { margin:0; background:var(--cream); border:2px solid var(--ink); border-radius:26px; overflow:hidden; box-shadow:10px 12px 0 rgba(24,23,20,.08); transition:transform .4s cubic-bezier(.22,1,.36,1), box-shadow .4s ease; }
.mini-photo-card.large { grid-column:1 / -1; }
.mini-photo-card img { width:100%; height:auto; aspect-ratio:1 / 1; object-fit:cover; display:block; transition:transform .6s cubic-bezier(.22,1,.36,1); }
.mini-photo-card:hover img { transform:scale(1.045); }
.mini-photo-card.large:hover { transform:translateY(-6px) rotate(.35deg); box-shadow:12px 16px 0 rgba(24,23,20,.1); }
.mini-photo-card.small.one { transform:rotate(-2deg); }
.mini-photo-card.small.two { transform:rotate(2deg); }
.mini-photo-card.small.one:hover { transform:rotate(-1deg) translateY(-6px); }
.mini-photo-card.small.two:hover { transform:rotate(1deg) translateY(-6px); }
.flavour-showcase { margin-top:78px; padding-top:48px; border-top:1px solid var(--line); }
.flavour-heading { display:flex; justify-content:space-between; align-items:end; gap:40px; margin-bottom:24px; }
.flavour-heading .kicker { margin:0; }
.flavour-heading h3 { max-width:560px; margin:0; text-align:right; font:700 clamp(30px,3vw,46px)/1.05 "Fraunces",serif; letter-spacing:-.035em; }
.flavour-showcase img { width:100%; height:auto; display:block; border:2px solid var(--ink); border-radius:24px; background:#e8f7ff; transition:transform .45s cubic-bezier(.22,1,.36,1), box-shadow .45s ease; }
.flavour-showcase:hover img { transform:translateY(-4px); box-shadow:0 14px 30px rgba(24,23,20,.09); }
.cart-showcase { margin-top:72px; background:var(--cream); border:2px solid var(--ink); border-radius:34px; padding:38px; display:grid; grid-template-columns:.95fr 1.05fr; gap:42px; align-items:center; box-shadow:14px 16px 0 rgba(24,23,20,.08); }
.cart-image-shell { background:radial-gradient(circle at 20% 20%, rgba(233,69,56,.08) 0 14%, transparent 14% 100%), radial-gradient(circle at 80% 78%, rgba(243,185,68,.12) 0 14%, transparent 14% 100%), linear-gradient(180deg, #fffef9 0%, #f4ebda 100%); border:2px solid rgba(24,23,20,.12); border-radius:28px; padding:28px; min-height:100%; display:grid; place-items:center; overflow:hidden; }
.cart-image-shell img { width:100%; max-width:520px; height:auto; object-fit:contain; filter:drop-shadow(0 24px 20px rgba(24,23,20,.12)); transition:transform .55s cubic-bezier(.22,1,.36,1); }
.cart-showcase:hover .cart-image-shell img { transform:translateY(-7px) rotate(-.6deg) scale(1.015); }
.cart-showcase-copy h3 { margin:0 0 16px; font:700 clamp(36px,4vw,58px)/1.02 "Fraunces",serif; letter-spacing:-.04em; }
.cart-showcase-copy p { color:rgba(24,23,20,.7); line-height:1.85; margin:0 0 18px; }
.cart-points { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:28px; }
.cart-points div { border:1px solid var(--line); border-radius:22px; padding:22px 22px 20px; background:#fffaf1; }
.cart-points b { display:block; margin-bottom:8px; font-size:14px; }
.cart-points span { color:rgba(24,23,20,.66); font-size:14px; line-height:1.6; }


.contact { padding-top:35px; }
.contact-inner { border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:80px 0; display:flex; justify-content:space-between; align-items:center; gap:50px; }
.contact-inner p:not(.kicker) { max-width:600px; color:rgba(24,23,20,.65); line-height:1.7; }
.button-light { min-width:230px; color:var(--cream); background:var(--ink); gap:15px; }
.button-light:hover { background:var(--red); transform:translateY(-3px); }

footer { margin-top:40px; background:var(--ink); color:var(--cream); padding:65px max(5vw, calc((100vw - 1180px)/2)) 25px; text-align:center; }
.footer-brand { width:150px; height:120px; overflow:hidden; display:block; margin:0 auto 8px; }
.footer-brand img { width:100%; height:100%; object-fit:contain; object-position:center; }
footer > p { color:rgba(255,247,232,.62); margin:0 0 30px; }
.footer-links { display:flex; justify-content:center; gap:30px; flex-wrap:wrap; font-size:14px; font-weight:600; }
.footer-links a:hover { color:var(--yellow); }
.footer-bottom { margin-top:55px; padding-top:20px; border-top:1px solid rgba(255,255,255,.14); display:flex; justify-content:space-between; align-items:center; gap:24px; color:rgba(255,255,255,.48); font-size:11px; }
.trust-revaro-credit { display:inline-flex; align-items:center; gap:10px; color:var(--cream); transition:opacity .25s ease; opacity:1; }
.trust-revaro-credit:hover { opacity:1; }
.credit-label { white-space:nowrap; }
.trust-revaro-logo { display:block; width:118px; height:auto; object-fit:contain; }

.reveal { opacity:0; transform:translateY(26px) scale(.995); transition:opacity .72s cubic-bezier(.22,1,.36,1), transform .72s cubic-bezier(.22,1,.36,1); transition-delay:var(--reveal-delay, 0s); }
.reveal.visible { opacity:1; transform:none; }
.cards-grid .moment-card:nth-child(2) { --reveal-delay:.08s; }
.cards-grid .moment-card:nth-child(3) { --reveal-delay:.16s; }
.mini-visual .mini-photo-card:nth-child(2) { --reveal-delay:.08s; }
.mini-visual .mini-photo-card:nth-child(3) { --reveal-delay:.14s; }

@keyframes sunburstDrift { to { transform:rotate(360deg); } }
@keyframes ticketFloatOne { 0%,100% { transform:rotate(8deg) translateY(0); } 50% { transform:rotate(6.5deg) translateY(-7px); } }
@keyframes ticketFloatTwo { 0%,100% { transform:rotate(-8deg) translateY(0); } 50% { transform:rotate(-6deg) translateY(6px); } }
@keyframes stampBob { 0%,100% { transform:rotate(-12deg) translateY(0); } 50% { transform:rotate(-9deg) translateY(-5px); } }

@media (max-width: 960px) {
  .site-nav { width:min(520px,100vw); padding-left:34px; padding-right:34px; }
  .hero { grid-template-columns:1fr; padding-top:145px; min-height:auto; }
  .hero-copy { max-width:730px; }
  .hero-visual { min-height:600px; }
  .intro-grid, .moments-top, .feature-panel, .mini-top, .cart-showcase { grid-template-columns:1fr; }
  .intro-grid { gap:20px; }
  .cards-grid { grid-template-columns:1fr 1fr; }
  .moment-card:last-child { grid-column:1/-1; }
.mini-visual { max-width:760px; }
  .cart-showcase { gap:30px; }
}

@media (max-width: 650px) {
  .site-header { width:calc(100% - 24px); top:12px; height:70px; padding:8px 8px 8px 13px; border-radius:19px; }
  .brand { width:118px; height:44px; }
  .brand img { width:100%; height:100%; }
  .header-actions { gap:5px; }
  .header-cta { padding:12px 13px; border-radius:12px; font-size:11px; }
  .menu-toggle { width:44px; height:44px; border-radius:12px; }
  .menu-toggle span { left:11px; width:22px; }
  .menu-toggle span:last-child { left:17px; }
  .menu-toggle.active span { left:11px; }
  .site-nav { width:100vw; padding:105px 22px 24px; }
  .site-nav::before { width:280px; height:280px; right:-145px; top:-110px; }
  .menu-panel-top { padding-bottom:15px; }
  .menu-links { margin-top:8px; }
  .menu-links a { min-height:72px; grid-template-columns:34px 1fr 32px; }
  .menu-number { padding-top:25px; }
  .menu-title { font-size:30px; }
  .menu-panel-bottom { gap:18px; padding-top:20px; }
  .menu-badge { width:88px; height:88px; }
  .menu-badge b { font-size:17px; }
  .menu-contact { font-size:10px; }
  .hero { padding:125px 22px 65px; gap:15px; }
  .hero h1 { font-size:53px; }
  .hero-intro { font-size:16px; }
  .hero-actions { align-items:flex-start; flex-direction:column; gap:22px; }
  .hero-note { margin-top:40px; }
  .hero-visual { min-height:470px; margin:5px -8px 0; }
  .hero::after { width:250px; height:250px; right:-125px; top:118px; box-shadow:0 0 0 24px rgba(255,255,255,.03), 0 0 0 48px rgba(255,255,255,.02); }
  .hero-star { left:auto; right:20px; top:138px; font-size:28px; }
  .hero-dot { right:28px; top:188px; width:14px; height:14px; }
  .hero-swoop { right:20px; bottom:110px; width:70px; height:16px; border-top-width:4px; }
  .sunburst { width:430px; }
  .cart-card { height:380px; width:300px; }
  .cart-awning { height:55px; }
  .cart-arch { inset:78px 38px 90px; }
  .hero-cart-logo { width:190px; top:126px; }
  .hero-cart-subtitle { top:212px; font-size:10px; letter-spacing:.22em; }
.cart-base { height:85px; }.cart-base b { font-size:31px; }
  .wheel { width:62px; height:62px; bottom:-34px; }.wheel::after { inset:16px; }
  .ticket-one { right:-5px; top:45px; font-size:11px; }.ticket-two { left:-4px; bottom:42px; }
  .stamp { left:0; top:10px; width:78px; font-size:12px; }
  .section { padding:80px 22px; }
  .section-doodles .doodle-star { font-size:22px; }
  .section-doodles .doodle-dot { width:14px; height:14px; }
  .section-doodles .doodle-swoop { width:64px; height:14px; border-top-width:4px; }
  .intro::before, .moments::before, .mini-melts::before, .contact::before { opacity:.8; transform:scale(.7); transform-origin:center; }
  .intro-doodles .doodle-star { right:10px; top:48px; }
  .intro-doodles .doodle-dot { left:12px; bottom:120px; }
  .intro-doodles .doodle-swoop { right:14px; bottom:42px; }
  .moments-doodles .doodle-star { left:14px; top:38px; }
  .moments-doodles .doodle-dot { right:12px; top:74px; }
  .moments-doodles .doodle-swoop { left:auto; right:16px; bottom:32px; }
  .offerings-doodles .doodle-star { left:14px; top:48px; }
  .offerings-doodles .doodle-dot { right:12px; top:84px; }
  .offerings-doodles .doodle-swoop { right:16px; bottom:130px; }
  .contact-home-doodles .doodle-star { right:16px; top:34px; }
  .contact-home-doodles .doodle-dot { left:14px; top:54px; }
  .contact-home-doodles .doodle-swoop { right:16px; bottom:26px; }
  .intro-grid { margin-top:24px; gap:34px; }
  .intro-copy { padding-top:0; }
  .about-graphic { width:min(360px, 100%); margin-top:6px; padding:14px; }
  .intro h2, .moments h2, .contact h2, .mini-copy h2 { font-size:44px; }
  .cards-grid { grid-template-columns:1fr; }
  .moment-card:last-child { grid-column:auto; }
  .moment-card { min-height:490px; }
  .moments-top { gap:25px; margin-bottom:40px; }
  .mini-top { margin-top:10px; gap:36px; }
  .mini-copy h2 { margin-bottom:28px; }
  .mini-copy > p { font-size:16px; margin:0 0 24px; line-height:1.85; }
  .mini-list { margin-top:40px; gap:22px; }
  .mini-list li { grid-template-columns:1fr; gap:10px; padding:22px 0; }
  .mini-visual { grid-template-columns:1fr; }
  .flavour-showcase { margin-top:48px; padding-top:34px; }
  .flavour-heading { align-items:flex-start; flex-direction:column; gap:10px; margin-bottom:18px; }
  .flavour-heading h3 { text-align:left; font-size:34px; }
  .flavour-showcase img { border-radius:18px; }
  .cart-showcase { padding:22px; border-radius:26px; margin-top:34px; }
  .cart-image-shell { padding:18px; border-radius:22px; }
  .cart-showcase-copy h3 { font-size:40px; margin-bottom:14px; }
  .cart-points { grid-template-columns:1fr; }
.contact-inner { align-items:flex-start; flex-direction:column; padding:60px 0; }
  .footer-bottom { flex-direction:column; gap:14px; }
  .trust-revaro-credit { gap:8px; }
  .trust-revaro-logo { width:112px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior:auto !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  .reveal { opacity:1; transform:none; }
  .sunburst, .ticket-one, .ticket-two, .stamp { animation:none !important; }
}



/* Contact page */
.contact-page { background:var(--paper); }
.contact-hero {
  position:relative;
  min-height:100vh;
  overflow:hidden;
  padding:150px max(5vw, calc((100vw - 1180px)/2)) 100px;
  display:grid;
  grid-template-columns:.88fr 1.12fr;
  align-items:center;
  gap:78px;
  background:var(--paper);
}
.contact-hero::before {
  content:"";
  position:absolute;
  width:470px;
  height:470px;
  left:-260px;
  top:160px;
  border:1px solid rgba(227,56,48,.15);
  border-radius:50%;
  box-shadow:0 0 0 55px rgba(227,56,48,.035), 0 0 0 110px rgba(227,56,48,.025);
}
.contact-hero-pattern {
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.2;
  background-image:radial-gradient(rgba(227,56,48,.35) 1px, transparent 1px);
  background-size:28px 28px;
  mask-image:linear-gradient(110deg, transparent 10%, black 40%, transparent 80%);
}
.contact-intro { position:relative; z-index:2; max-width:570px; }
.contact-intro .eyebrow { color:var(--red); }
.contact-intro h1 {
  margin:0;
  max-width:620px;
  font:700 clamp(58px,7vw,96px)/.93 "Fraunces",serif;
  letter-spacing:-.055em;
}
.contact-intro h1 em { display:block; color:var(--red); font-style:italic; font-weight:600; }
.contact-intro > p:not(.eyebrow) {
  margin:30px 0 0;
  max-width:540px;
  font-size:18px;
  line-height:1.75;
  color:rgba(24,23,20,.7);
}
.contact-direct {
  margin-top:42px;
  padding-top:22px;
  border-top:1px solid var(--line);
  display:flex;
  flex-direction:column;
  gap:8px;
  font-size:12px;
  color:rgba(24,23,20,.56);
}
.contact-direct a {
  width:max-content;
  max-width:100%;
  font-size:17px;
  font-weight:700;
  color:var(--ink);
  border-bottom:1px solid currentColor;
  padding-bottom:4px;
}
.contact-direct a b { display:inline-block; margin-left:5px; color:var(--red); transition:transform .25s ease; }
.contact-direct a:hover b { transform:translate(3px,-3px); }
.contact-doodles { position:absolute; inset:0; pointer-events:none; }
.contact-star { position:absolute; right:22px; top:25px; color:var(--yellow); font-size:42px; font-style:normal; transform:rotate(12deg); animation:contactStar 4.8s ease-in-out infinite; }
.contact-dot { position:absolute; width:18px; height:18px; right:95px; top:86px; background:var(--pink); border:2px solid var(--ink); border-radius:50%; }
.contact-swoop { position:absolute; width:80px; height:20px; right:48px; bottom:70px; border-top:5px solid var(--blue); border-radius:50%; transform:rotate(-14deg); }
@keyframes contactStar { 0%,100% { transform:rotate(12deg) scale(1); } 50% { transform:rotate(22deg) scale(1.12); } }

.contact-form-wrap {
  position:relative;
  z-index:3;
  background:var(--cream);
  border:2px solid var(--ink);
  border-radius:32px;
  padding:30px;
  box-shadow:16px 18px 0 rgba(24,23,20,.09);
}
.contact-form-wrap::before {
  content:"";
  position:absolute;
  width:76px;
  height:34px;
  left:50%;
  top:-18px;
  transform:translateX(-50%) rotate(-2deg);
  background:rgba(239,140,161,.78);
  border:1px solid rgba(24,23,20,.12);
}
.contact-form-head {
  display:flex;
  justify-content:space-between;
  gap:20px;
  padding:0 2px 22px;
  margin-bottom:26px;
  border-bottom:1px solid var(--line);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:10px;
  font-weight:800;
}
.contact-form-head span { color:var(--red); }
.contact-form-head b { color:rgba(24,23,20,.55); }
.contact-form { display:flex; flex-direction:column; gap:24px; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.contact-form label { display:flex; flex-direction:column; gap:9px; }
.contact-form label > span { font-size:12px; font-weight:700; }
.contact-form input,
.contact-form select,
.contact-form textarea {
  width:100%;
  border:1px solid rgba(24,23,20,.22);
  border-radius:14px;
  background:var(--paper);
  color:var(--ink);
  padding:14px 15px;
  font:inherit;
  outline:none;
  transition:border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.contact-form input,
.contact-form select { height:52px; }
.contact-form textarea { min-height:150px; resize:vertical; line-height:1.6; }
.contact-form input:focus,
.contact-form select:focus,
.contact-form textarea:focus {
  border-color:var(--red);
  box-shadow:0 0 0 4px rgba(227,56,48,.09);
  transform:translateY(-1px);
}
.contact-form input::placeholder,
.contact-form textarea::placeholder { color:rgba(24,23,20,.4); }
.form-message { margin-top:2px; }
.form-submit-row { display:flex; align-items:center; gap:22px; padding-top:4px; }
.contact-submit {
  border:0;
  cursor:pointer;
  background:var(--ink);
  color:var(--cream);
  min-width:180px;
  gap:10px;
  box-shadow:6px 6px 0 var(--red);
}
.contact-submit:hover { transform:translate(-2px,-2px); box-shadow:9px 9px 0 var(--red); }
.contact-submit span { transition:transform .2s ease; }
.contact-submit:hover span { transform:translate(3px,-3px); }
.form-submit-row p { margin:0; max-width:250px; color:rgba(24,23,20,.5); font-size:11px; line-height:1.5; }
.contact-footer { margin-top:0; }

@media (max-width:960px) {
  .contact-hero { grid-template-columns:1fr; gap:58px; padding-top:145px; }
  .contact-intro { max-width:700px; }
  .contact-form-wrap { max-width:760px; width:100%; }
}

@media (max-width:650px) {
  .contact-hero { min-height:auto; padding:125px 22px 80px; gap:42px; }
  .contact-intro h1 { font-size:55px; }
  .contact-intro > p:not(.eyebrow) { font-size:16px; }
  .contact-direct { margin-top:32px; }
  .contact-star { right:0; top:35px; font-size:30px; }
  .contact-dot { right:47px; top:88px; width:13px; height:13px; }
  .contact-swoop { display:none; }
  .contact-form-wrap { padding:22px 18px; border-radius:25px; box-shadow:10px 12px 0 rgba(24,23,20,.08); }
  .form-grid { grid-template-columns:1fr; gap:17px; }
  .contact-form { gap:19px; }
  .form-submit-row { align-items:flex-start; flex-direction:column; gap:15px; }
  .contact-submit { width:100%; }
  .form-submit-row p { max-width:none; }
}

/* Private events page */
.card-link { display:inline-flex; align-items:center; gap:8px; margin-top:18px; font-size:12px; font-weight:800; border-bottom:1px solid currentColor; padding-bottom:3px; }
.card-link span { display:inline-block; transition:transform .25s ease; }
.card-link:hover span { transform:translate(3px,-3px); }

.moment-card-link { cursor:pointer; }
.moment-card-link::after { content:"↗"; position:absolute; right:24px; bottom:24px; width:38px; height:38px; display:grid; place-items:center; border:1px solid currentColor; border-radius:50%; font-size:16px; opacity:.72; transition:transform .25s ease, background .25s ease, color .25s ease, opacity .25s ease; }
.moment-card-link:hover::after { transform:rotate(45deg); background:var(--cream); color:var(--ink); opacity:1; }
.moment-card-link:focus-visible { outline:3px solid var(--yellow); outline-offset:5px; }
.moment-card-link .card-content { padding-right:74px; }

.private-events-page { background:var(--paper); }
.private-hero {
  position:relative;
  min-height:850px;
  overflow:hidden;
  padding:150px max(5vw, calc((100vw - 1180px)/2)) 100px;
  display:grid;
  grid-template-columns:.92fr 1.08fr;
  align-items:center;
  gap:70px;
  background:var(--paper);
}
.private-hero::before {
  content:"";
  position:absolute;
  width:520px;
  height:520px;
  left:-280px;
  top:135px;
  border:1px solid rgba(227,56,48,.15);
  border-radius:50%;
  box-shadow:0 0 0 62px rgba(227,56,48,.035),0 0 0 124px rgba(227,56,48,.022);
}
.private-pattern { position:absolute; inset:0; pointer-events:none; opacity:.18; background-image:radial-gradient(rgba(227,56,48,.34) 1px, transparent 1px); background-size:28px 28px; mask-image:linear-gradient(108deg, transparent 5%, black 37%, transparent 82%); }
.private-hero-copy { position:relative; z-index:2; max-width:610px; }
.private-hero-copy .eyebrow { color:var(--red); }
.private-hero-copy h1 { margin:0; font:700 clamp(58px,7vw,96px)/.93 "Fraunces",serif; letter-spacing:-.055em; }
.private-hero-copy h1 em { display:block; color:var(--red); font-style:italic; font-weight:600; }
.private-hero-copy > p:not(.eyebrow) { margin:30px 0 0; max-width:590px; font-size:18px; line-height:1.75; color:rgba(24,23,20,.7); }
.private-primary { background:var(--ink); color:var(--cream); box-shadow:7px 7px 0 var(--red); }
.private-primary:hover { transform:translate(-2px,-2px); box-shadow:10px 10px 0 var(--red); }
.private-hero-visual { position:relative; z-index:2; min-height:610px; display:grid; place-items:center; }
.private-cart-frame { position:relative; width:min(560px, 100%); padding:42px 34px 28px; background:linear-gradient(180deg,#fffdf8 0%,#f5ecdc 100%); border:2px solid var(--ink); border-radius:34px; box-shadow:18px 20px 0 rgba(24,23,20,.08); transform:rotate(1.2deg); }
.private-cart-frame img { width:100%; height:auto; object-fit:contain; filter:drop-shadow(0 25px 20px rgba(24,23,20,.12)); transition:transform .55s cubic-bezier(.22,1,.36,1); }
.private-cart-frame:hover img { transform:translateY(-7px) rotate(-.6deg) scale(1.015); }

.private-product-frame { padding:30px; }
.private-product-frame img { width:100%; height:auto; aspect-ratio:1 / 1; object-fit:cover; border:2px solid var(--ink); border-radius:24px; filter:none; }
.private-product-frame:hover img { transform:scale(1.025) rotate(-.35deg); }
.private-tape { position:absolute; width:90px; height:34px; left:50%; top:-18px; transform:translateX(-50%) rotate(-3deg); background:rgba(239,140,161,.78); border:1px solid rgba(24,23,20,.12); }
.private-cart-note { position:absolute; right:-22px; bottom:28px; min-width:145px; padding:14px 18px; background:var(--yellow); border:2px solid var(--ink); box-shadow:6px 6px 0 var(--ink); transform:rotate(-5deg); text-align:center; }
.private-cart-note span,.private-cart-note b { display:block; }
.private-cart-note span { font-size:9px; letter-spacing:.16em; text-transform:uppercase; font-weight:800; }
.private-cart-note b { margin-top:3px; font:700 22px/.95 "Fraunces",serif; }
.private-star { position:absolute; right:0; top:42px; color:var(--yellow); font-size:42px; font-style:normal; animation:contactStar 4.8s ease-in-out infinite; }
.private-dot { position:absolute; width:18px; height:18px; left:10px; top:90px; background:var(--pink); border:2px solid var(--ink); border-radius:50%; }
.private-swoop { position:absolute; width:88px; height:20px; left:18px; bottom:54px; border-top:5px solid var(--blue); border-radius:50%; transform:rotate(12deg); }

.private-fit { background:var(--cream); }
.private-rings { position:absolute; width:430px; height:430px; right:-240px; top:80px; border:1px solid rgba(227,56,48,.13); border-radius:50%; box-shadow:0 0 0 50px rgba(227,56,48,.03),0 0 0 100px rgba(227,56,48,.02); pointer-events:none; }
.private-fit-grid { position:relative; z-index:1; display:grid; grid-template-columns:1fr 1fr; gap:78px; align-items:center; }
.private-fit-copy h2,.private-types-head h2,.private-enquiry-intro h2 { margin:0; font:700 clamp(46px,5vw,74px)/.98 "Fraunces",serif; letter-spacing:-.045em; }
.private-fit-copy h2 span,.private-enquiry-intro h2 span { color:var(--red); font-style:italic; }
.private-fit-copy > p { font-size:17px; line-height:1.85; color:rgba(24,23,20,.72); margin:26px 0 0; }
.private-style-points { margin-top:34px; display:grid; gap:16px; }
.private-style-points div { padding:20px 0; border-top:1px solid var(--line); display:grid; grid-template-columns:155px 1fr; gap:25px; }
.private-style-points span { color:rgba(24,23,20,.66); line-height:1.6; font-size:14px; }
.private-cart-stage { position:relative; min-height:580px; display:grid; place-items:center; padding:38px; background:var(--paper); border:2px solid var(--ink); border-radius:34px; overflow:hidden; box-shadow:14px 16px 0 rgba(24,23,20,.08); }
.private-cart-stage::before { content:""; position:absolute; width:260px; height:260px; left:-90px; top:-80px; background:rgba(227,56,48,.08); border-radius:50%; }
.private-cart-stage::after { content:"✦"; position:absolute; right:34px; top:32px; color:var(--yellow); font-size:34px; }
.private-cart-stage img { position:relative; z-index:1; width:100%; height:auto; max-width:520px; filter:drop-shadow(0 24px 20px rgba(24,23,20,.12)); transition:transform .5s cubic-bezier(.22,1,.36,1); }
.private-cart-stage:hover img { transform:translateY(-7px) scale(1.015); }
.stage-label { position:absolute; z-index:2; padding:9px 12px; border:2px solid var(--ink); font-size:9px; font-weight:900; letter-spacing:.13em; background:var(--yellow); box-shadow:4px 4px 0 var(--ink); }
.stage-label.one { left:25px; bottom:42px; transform:rotate(-5deg); }
.stage-label.two { right:25px; bottom:86px; background:var(--pink); transform:rotate(5deg); }

.private-types { background:var(--paper); }
.private-types::before { content:""; position:absolute; width:360px; height:360px; left:-190px; top:80px; border:1px solid rgba(227,56,48,.12); border-radius:50%; box-shadow:0 0 0 42px rgba(227,56,48,.028); }
.private-types-head { position:relative; z-index:1; max-width:760px; margin-bottom:52px; }
.private-types-grid { position:relative; z-index:1; display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.private-type-card { min-height:300px; padding:30px; border:2px solid var(--ink); border-radius:28px; background:var(--cream); transition:transform .3s ease,box-shadow .3s ease; }
.private-type-card:nth-child(2) { background:var(--red); color:var(--cream); }
.private-type-card:nth-child(3) { background:var(--ink); color:var(--cream); }
.private-type-card:hover { transform:translateY(-7px) rotate(-.35deg); box-shadow:9px 11px 0 var(--ink); }
.private-type-card > span { display:grid; place-items:center; width:46px; height:46px; border:2px solid currentColor; border-radius:50%; font-weight:900; margin-bottom:58px; }
.private-type-card h3 { margin:0 0 14px; font:700 32px/1.05 "Fraunces",serif; letter-spacing:-.03em; }
.private-type-card p { margin:0; line-height:1.7; opacity:.76; font-size:14px; }

.private-enquiry { display:grid; grid-template-columns:.82fr 1.18fr; gap:72px; align-items:start; background:var(--paper); }
.private-enquiry::before { content:""; position:absolute; width:430px; height:430px; right:-240px; bottom:50px; border:1px solid rgba(227,56,48,.13); border-radius:50%; box-shadow:0 0 0 50px rgba(227,56,48,.03),0 0 0 100px rgba(227,56,48,.02); }
.private-enquiry-intro { position:relative; z-index:2; padding-top:28px; }
.private-enquiry-intro > p:not(.kicker) { max-width:520px; color:rgba(24,23,20,.7); line-height:1.8; font-size:17px; margin:26px 0 0; }
.private-enquiry-intro > a { display:inline-flex; gap:7px; margin-top:28px; font-weight:700; border-bottom:1px solid currentColor; padding-bottom:4px; }
.private-enquiry-intro > a b { color:var(--red); }
.private-enquiry .contact-form-wrap { align-self:start; }
.private-events-page footer { margin-top:0; }

@media (max-width:960px) {
  .private-hero { grid-template-columns:1fr; min-height:auto; padding-top:145px; gap:30px; }
  .private-hero-copy { max-width:720px; }
  .private-hero-visual { min-height:560px; }
  .private-fit-grid,.private-enquiry { grid-template-columns:1fr; }
  .private-fit-grid { gap:42px; }
  .private-types-grid { grid-template-columns:1fr 1fr; }
  .private-type-card:last-child { grid-column:1/-1; }
  .private-enquiry { gap:38px; }
}

@media (max-width:650px) {
  .private-hero { padding:125px 22px 72px; }
  .private-hero-copy h1 { font-size:54px; }
  .private-hero-copy > p:not(.eyebrow) { font-size:16px; }
  .private-hero-visual { min-height:430px; margin-top:8px; }
  .private-cart-frame { padding:28px 18px 20px; border-radius:26px; }
  .private-product-frame { padding:18px; }
  .private-product-frame img { border-radius:18px; }
  .private-cart-note { right:-4px; bottom:16px; min-width:120px; padding:11px 12px; }
  .private-cart-note b { font-size:18px; }
  .private-star { right:6px; top:10px; font-size:30px; }
  .private-dot { left:4px; top:64px; width:14px; height:14px; }
  .private-swoop { left:8px; bottom:30px; width:66px; border-top-width:4px; }
  .private-fit-grid { gap:34px; }
  .private-fit-copy h2,.private-types-head h2,.private-enquiry-intro h2 { font-size:44px; }
  .private-fit-copy > p { font-size:16px; }
  .private-style-points div { grid-template-columns:1fr; gap:8px; padding:18px 0; }
  .private-cart-stage { min-height:420px; padding:20px; border-radius:26px; }
  .stage-label.one { left:14px; bottom:24px; }
  .stage-label.two { right:14px; bottom:58px; }
  .private-types-grid { grid-template-columns:1fr; }
  .private-type-card:last-child { grid-column:auto; }
  .private-type-card { min-height:250px; }
  .private-type-card > span { margin-bottom:38px; }
  .private-enquiry { padding-top:70px; }
  .private-enquiry-intro { padding-top:0; }
}
