/* ====================================================================
   Celebration Cakes by Catherine Scott — shared stylesheet
   Palette: original rose-pink + soft grey + white/cream, +berry accent
   ==================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300..600;1,9..144,300..600&family=Hanken+Grotesk:wght@300;400;500;600;700&display=swap');

:root{
  --pink:#E592A8; --pink-lt:#F4CDD9; --pink-xl:#FBEEF2; --pink-dk:#D06E8A;
  --berry:#9E3457; --berry-dk:#7C2742;            /* +1 accent for CTAs/depth */
  --grey:#7E7E7E; --grey-lt:#ADA7AA;
  --ink:#3D363A; --ink-mid:#6E646A; --ink-lt:#9A9097;
  --cream:#FBF7F4; --cream-2:#F6EEEA; --white:#FFFFFF;
  --line:#EEDDE3;
  --shadow:0 18px 50px rgba(61,54,58,.10);
  --shadow-sm:0 8px 24px rgba(61,54,58,.08);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{font-family:'Hanken Grotesk',sans-serif;font-weight:300;background:var(--cream);color:var(--ink);line-height:1.7;overflow-x:hidden;-webkit-font-smoothing:antialiased;}
img{display:block;max-width:100%;height:auto;}
a{color:inherit;text-decoration:none;}
body::after{content:'';position:fixed;inset:0;z-index:5;pointer-events:none;opacity:.05;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
h1,h2,h3,h4{font-family:'Fraunces',serif;font-weight:300;font-optical-sizing:auto;letter-spacing:-.004em;line-height:1.18;color:var(--berry);}

/* ---- reveal ---- */
.r{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease;}
.r.in{opacity:1;transform:translateY(0);}
.r.d1{transition-delay:.1s}.r.d2{transition-delay:.2s}.r.d3{transition-delay:.3s}.r.d4{transition-delay:.4s}

/* ---- layout helpers ---- */
.wrap{max-width:1240px;margin:0 auto;padding:0 40px;}
.pad{padding:clamp(58px,7.5vw,98px) 0;}
.center{text-align:center;}
.eyebrow{font-size:.62rem;font-weight:600;letter-spacing:.32em;text-transform:uppercase;color:var(--pink-dk);}
.lead{font-family:'Fraunces',serif;font-style:italic;font-weight:300;font-size:clamp(1.02rem,1.7vw,1.28rem);color:var(--ink-mid);}
.muted{font-size:.9rem;color:var(--ink-mid);line-height:1.95;}
.display{font-size:clamp(2.1rem,4.4vw,3.4rem);}
.ornament{display:inline-flex;align-items:center;gap:13px;color:var(--pink-dk);opacity:.65;}
.ornament::before,.ornament::after{content:'';width:26px;height:1px;background:currentColor;}
.ornament .gem{width:3px;height:3px;border-radius:50%;background:currentColor;transform:none;}
.shead{max-width:640px;margin:0 auto 44px;text-align:center;}
.shead .ornament{margin-bottom:14px;}
.shead h2{margin-bottom:10px;}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;gap:9px;font-family:'Hanken Grotesk',sans-serif;font-size:.66rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;border:none;padding:15px 32px;transition:background .3s,color .3s,transform .3s,box-shadow .3s,border-color .3s;}
.btn-berry{background:var(--berry);color:#fff;}
.btn-berry:hover{background:var(--berry-dk);transform:translateY(-2px);box-shadow:0 12px 28px rgba(124,39,66,.28);}
.btn-pink{background:var(--pink);color:#fff;}
.btn-pink:hover{background:var(--pink-dk);transform:translateY(-2px);box-shadow:0 12px 28px rgba(208,110,138,.3);}
.btn-ghost{background:transparent;color:var(--berry);border:1px solid var(--pink);}
.btn-ghost:hover{background:var(--pink);color:#fff;border-color:var(--pink);transform:translateY(-2px);}
.btn-lt{background:#fff;color:var(--berry);}
.btn-lt:hover{background:var(--pink-xl);transform:translateY(-2px);}
.btn-lg{padding:17px 40px;}

/* ---- top announcement bar ---- */
.topbar{background:var(--berry);color:var(--pink-lt);text-align:center;font-size:.6rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;padding:8px 16px;}
.topbar b{color:#fff;font-weight:700;}
.topbar .sep{color:var(--pink);margin:0 7px;}

/* ---- nav ---- */
.nav{position:sticky;top:0;z-index:900;display:grid;grid-template-columns:auto 1fr auto auto auto;grid-template-rows:108px;align-items:center;gap:0 24px;padding:0 40px;height:108px;background:rgba(255,255,255,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);overflow:visible;transition:box-shadow .35s;}
.nav.solid{box-shadow:0 6px 26px rgba(61,54,58,.09);}
.nav-logo{align-self:end;position:relative;z-index:2;display:block;margin-left:80px;transform:translateY(32px);transition:transform .3s;}
.nav-logo img{height:163px;width:auto;display:block;}
.nav-logo:hover{transform:translateY(32px) scale(1.03);}
.nav-links{display:flex;align-items:center;justify-content:center;gap:30px;align-self:center;}
.nav .btn{align-self:center;white-space:nowrap;}
.nav-links a{font-size:.92rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);position:relative;transition:color .3s;}
.nav-links a:not(.btn)::after{content:'';position:absolute;left:0;bottom:-4px;width:0;height:1.5px;background:var(--pink);transition:width .3s;}
.nav-links a:not(.btn):hover{color:var(--berry);}
.nav-links a:not(.btn):hover::after,.nav-links a.active:not(.btn)::after{width:100%;}
.nav-links a.active:not(.btn){color:var(--berry);}
.nav-links a.active:not(.btn){color:var(--berry);}
.burger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:5px;}
.burger span{width:25px;height:1.6px;background:var(--berry);transition:.4s;}
.burger.open span:nth-child(1){transform:translateY(6.6px) rotate(45deg);}
.burger.open span:nth-child(2){opacity:0;}
.burger.open span:nth-child(3){transform:translateY(-6.6px) rotate(-45deg);}
.mob{display:none;position:fixed;inset:0;z-index:800;background:var(--cream);flex-direction:column;align-items:center;justify-content:flex-start;gap:22px;padding:116px 24px 44px;overflow-y:auto;}
.mob.open{display:flex;}
.mob a{font-family:'Fraunces',serif;font-size:1.9rem;color:var(--berry);}
.mob a.btn{font-family:'Hanken Grotesk',sans-serif;font-size:.7rem;color:#fff;}

/* ---- hero (home, full-bleed) ---- */
.hero{position:relative;min-height:88vh;display:flex;align-items:center;overflow:hidden;}
.hero-bg{position:absolute;inset:0;z-index:0;}
.hero-bg img{width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.08);animation:hz 18s ease-out forwards;}
@keyframes hz{to{transform:scale(1);}}
.hero-scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(96deg,var(--cream) 0%,rgba(251,247,244,.95) 30%,rgba(251,247,244,.6) 50%,rgba(251,247,244,.1) 70%,transparent 84%);}
.hero-inner{position:relative;z-index:2;width:100%;}
.hero-text{max-width:560px;}
/* keep the hero eyebrow clear of the nav logo hanging into the hero (desktop nav only) */
@media(min-width:1200px){.hero-text{margin-top:70px;}}
.hero h1{font-size:clamp(2.5rem,5.4vw,4.4rem);color:var(--berry);margin:16px 0 12px;}
.hero h1 .pink{color:var(--berry);font-style:italic;font-weight:340;}
.hero-sub{max-width:440px;}
.hero .eyebrow{opacity:0;animation:up .9s ease .15s forwards;}
.hero h1{opacity:0;animation:up 1s ease .35s forwards;}
.hero-sub{opacity:0;animation:up 1s ease .55s forwards;}
.qstart{display:flex;margin:28px 0 20px;max-width:430px;background:#fff;border:1px solid var(--pink-lt);box-shadow:var(--shadow-sm);opacity:0;animation:up 1s ease .75s forwards;}
.qstart select{flex:1;border:none;background:transparent;font-family:'Hanken Grotesk',sans-serif;font-size:.74rem;font-weight:500;color:var(--ink);padding:0 16px;outline:none;cursor:pointer;-webkit-appearance:none;appearance:none;}
.qstart button{flex-shrink:0;border:none;background:var(--berry);color:#fff;font-family:'Hanken Grotesk',sans-serif;font-size:.62rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;padding:15px 20px;cursor:pointer;transition:background .3s;}
.qstart button:hover{background:var(--berry-dk);}
.hero-trust{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:.62rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mid);opacity:0;animation:up 1s ease .95s forwards;}
.hero-trust .stars{color:var(--pink-dk);letter-spacing:2px;}
.hero-trust .dot{width:3px;height:3px;border-radius:50%;background:var(--pink);}
@keyframes up{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:translateY(0);}}

/* ---- sub-page header band ---- */
.phead{position:relative;padding:clamp(64px,9vw,120px) 0 clamp(40px,5vw,64px);background:linear-gradient(160deg,var(--pink-xl),var(--cream-2));text-align:center;overflow:hidden;border-bottom:1px solid var(--line);}
.phead .ornament{margin-bottom:14px;}
.phead h1{font-size:clamp(2.3rem,5vw,3.6rem);color:var(--berry);}
.phead p{max-width:600px;margin:12px auto 0;}
.crumb{font-size:.6rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--pink-dk);margin-bottom:14px;}
.crumb a:hover{color:var(--berry);}

/* ---- creds strip ---- */
.creds{background:var(--white);border-bottom:1px solid rgba(0,0,0,.07);padding:clamp(18px,2.8vw,26px) 40px;}
.creds-row{display:flex;align-items:center;justify-content:center;gap:clamp(28px,5vw,64px);flex-wrap:wrap;list-style:none;margin:0;padding:0;}
.creds-row li{display:flex;align-items:center;gap:10px;font-size:.6rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-mid);}
.creds-row li svg{width:18px;height:18px;stroke:var(--pink-dk);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}

/* ---- occasions / cards ---- */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.card{background:var(--white);border:1px solid var(--line);border-top:2px solid var(--pink);padding:30px 26px;display:flex;flex-direction:column;transition:border-color .3s,background .3s;}
.card:hover{border-top-color:var(--berry);border-color:var(--pink-dk);background:var(--cream);}
.card .ic{width:34px;height:34px;stroke:var(--pink);fill:none;stroke-width:1.4;margin-bottom:16px;transition:stroke .3s;}
.card:hover .ic{stroke:var(--berry);}
.card h3{font-size:1.5rem;margin-bottom:7px;}
.card p{font-size:.86rem;color:var(--ink-mid);line-height:1.8;flex:1;}
.card .more{font-size:.6rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--pink-dk);margin-top:16px;}

/* bento (home occasions) */
.bento{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:198px;gap:16px;}
.tile{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;padding:22px;transition:transform .45s,box-shadow .45s;}
.tile:hover{transform:translateY(-4px);box-shadow:var(--shadow);}
.tile-img{grid-column:span 2;grid-row:span 2;color:#fff;}
.tile-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;transition:transform .7s;}
.tile-img:hover img{transform:scale(1.05);}
.tile-img::after{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(to top,rgba(61,18,34,.76),rgba(61,18,34,.12) 60%,transparent);}
.tile-img .tc{position:relative;z-index:2;}
.tile-card{background:#fff;border:1px solid var(--line);}
.tile-card.pink{background:var(--pink-xl);}
.tile-card.berry{background:var(--berry);color:#fff;}
.tile .ic{width:28px;height:28px;stroke:var(--pink);fill:none;stroke-width:1.4;margin-bottom:auto;}
.tile-card.berry .ic{stroke:var(--pink-lt);}
.tile h3{font-size:1.4rem;color:#fff;}
.tile-card h3{color:var(--berry);}
.tile-card.berry h3{color:#fff;}
.tile p{font-size:.72rem;opacity:.86;margin-top:2px;}
.tile .more{font-size:.58rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;margin-top:10px;color:var(--pink-lt);}
.tile-card .more{color:var(--pink-dk);}

/* ---- gallery ---- */
.gallery-sec{background:var(--cream-2);}
.gal{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:230px;gap:14px;}
.gal figure{position:relative;overflow:hidden;}
.gal img{width:100%;height:100%;object-fit:cover;transition:transform .7s;}
.gal figure:hover img{transform:scale(1.06);}
.gal .big{grid-column:span 2;grid-row:span 2;}
.gal .tall{grid-row:span 2;}
.gal figcaption{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:24px 18px 14px;font-family:'Fraunces',serif;font-size:1rem;color:#fff;background:linear-gradient(to top,rgba(61,18,34,.72),transparent);opacity:0;transform:translateY(8px);transition:.4s;}
.gal figure:hover figcaption{opacity:1;transform:translateY(0);}

/* ---- split feature ---- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:0;align-items:stretch;}
.split-img{position:relative;overflow:hidden;min-height:420px;background:linear-gradient(160deg,var(--cream-2),var(--pink-xl));}
.split-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center;}
.split-txt{display:flex;flex-direction:column;justify-content:center;padding:clamp(34px,5vw,68px);background:#fff;}
.split-txt.cream{background:var(--cream-2);}
.split-txt h2{margin-bottom:16px;}
.split-txt p{margin-bottom:14px;}

/* ---- info columns / lists ---- */
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:48px;}
.cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;}
.checklist{list-style:none;}
.checklist li{position:relative;padding:9px 0 9px 26px;font-size:.88rem;color:var(--ink-mid);border-bottom:1px solid var(--line);}
.checklist li::before{content:'';position:absolute;left:2px;top:16px;width:7px;height:7px;background:var(--pink);transform:rotate(45deg);}
.pill-row{display:flex;flex-wrap:wrap;gap:9px;}
.pill{font-size:.74rem;color:var(--ink-mid);background:var(--pink-xl);border:1px solid var(--line);padding:7px 14px;border-radius:40px;}

/* ---- stats ---- */
.stats{display:flex;gap:38px;flex-wrap:wrap;}
.stats .n{font-family:'Fraunces',serif;font-size:2.4rem;color:var(--pink-dk);line-height:1;}
.stats .l{font-size:.6rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-lt);margin-top:5px;}

/* ---- testimonials ---- */
.tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.tcard{background:#fff;border:1px solid var(--line);padding:28px 26px;position:relative;}
.tcard .stars{color:var(--pink-dk);letter-spacing:2px;font-size:.78rem;margin-bottom:10px;}
.tcard p{font-family:'Fraunces',serif;font-style:italic;font-size:1.02rem;color:var(--ink-mid);line-height:1.7;margin-bottom:14px;}
.tcard cite{font-style:normal;font-size:.6rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--berry);}
.tcard cite span{display:block;color:var(--ink-lt);font-weight:500;margin-top:3px;}
.tfeature{background:var(--berry);color:#fff;text-align:center;padding:clamp(40px,5vw,64px);position:relative;}
.tfeature::before{content:'\201C';position:absolute;left:50%;top:16px;transform:translateX(-50%);font-family:'Fraunces',serif;font-size:7rem;color:rgba(229,146,168,.4);line-height:1;}
.tfeature blockquote{font-family:'Fraunces',serif;font-style:italic;font-weight:300;font-size:clamp(1.2rem,2.2vw,1.7rem);line-height:1.6;max-width:820px;margin:0 auto 16px;position:relative;z-index:1;}
.tfeature .stars{color:var(--pink-lt);letter-spacing:3px;margin-bottom:8px;}
.tfeature cite{font-style:normal;font-size:.64rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--pink-lt);}

/* ---- schedule table ---- */
.table-wrap{overflow-x:auto;border:1px solid var(--line);}
table.sched{width:100%;border-collapse:collapse;min-width:560px;background:#fff;}
table.sched caption{caption-side:top;text-align:left;font-family:'Fraunces',serif;font-size:1.5rem;color:var(--berry);padding:18px 18px 6px;}
table.sched th,table.sched td{text-align:left;padding:12px 18px;font-size:.84rem;border-bottom:1px solid var(--line);}
table.sched thead th{font-family:'Hanken Grotesk',sans-serif;font-size:.58rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--pink-dk);background:var(--pink-xl);}
table.sched td.price{font-weight:600;color:var(--berry);white-space:nowrap;}
table.sched tr:last-child td{border-bottom:none;}

/* ---- course card grid (classes page) ---- */
.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-bottom:14px;}
.course-card{background:var(--cream);border:1px solid var(--line);overflow:hidden;transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s;}
.course-card:hover{transform:translateY(-5px);box-shadow:var(--shadow);}
.course-card img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;}
.course-card .course-body{padding:16px 18px 18px;}
.course-card .course-body.no-img{padding:24px 18px;min-height:140px;display:flex;flex-direction:column;justify-content:center;}
.course-title{font-family:'Fraunces',serif;font-size:1.05rem;font-weight:400;color:var(--ink);margin-bottom:10px;line-height:1.35;}
.course-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline;font-family:'Hanken Grotesk',sans-serif;font-size:.76rem;color:var(--ink-lt);}
.course-price{font-family:'Fraunces',serif;font-weight:600;font-size:1.15rem;color:var(--berry);margin-left:auto;}

/* ---- course row list (classes page v4 — photo + info + price) ---- */
.course-list{border-top:1px solid var(--line);margin-bottom:32px;}
.course-row{display:grid;grid-template-columns:150px max-content max-content;justify-content:start;align-items:start;gap:8px 22px;padding:20px 0;border-bottom:1px solid var(--line);}
.cr-img{width:150px;height:auto;display:block;}
.cr-info{}
.cr-name{font-family:'Fraunces',serif;font-weight:400;font-size:1.08rem;color:var(--ink);line-height:1.3;}
.cr-meta{font-family:'Hanken Grotesk',sans-serif;font-size:.74rem;font-weight:600;color:var(--ink-mid);margin-top:4px;}
.cr-desc{font-family:'Hanken Grotesk',sans-serif;font-size:.82rem;color:var(--ink-mid);line-height:1.6;margin-top:9px;max-width:66ch;}
.cr-price{font-family:'Fraunces',serif;font-size:1.42rem;color:var(--berry);font-weight:500;white-space:nowrap;text-align:center;align-self:start;justify-self:end;padding:10px 20px;border:1.5px solid var(--berry);background:var(--pink-xl);line-height:1.1;}
@media(max-width:560px){
  .course-row{grid-template-columns:96px 1fr auto;gap:6px 14px;padding:18px 0;}
  .cr-img{width:96px;height:auto;}
  .cr-name{font-size:.96rem;}
  .cr-desc{font-size:.8rem;}
  .cr-price{font-size:1.18rem;padding:8px 13px;}
}

/* ---- flavour sidebar (celebrations page) ---- */
.occ-with-flavours{display:grid;grid-template-columns:122px 1fr 122px;gap:22px;align-items:start;}
.flavour-sidebar{padding-top:24px;}
.flavour-sidebar.right{text-align:right;}
.flavour-tag{display:block;font-family:'Fraunces',serif;font-style:italic;font-size:.9rem;color:var(--ink-lt);padding:6px 0;line-height:1.5;cursor:default;user-select:none;}
.flavour-sidebar .flavour-tag:nth-child(2n){margin-left:16px;font-size:.76rem;opacity:.7;}
.flavour-sidebar .flavour-tag:nth-child(3n){margin-left:28px;font-size:1.05rem;opacity:.8;color:var(--pink-dk);}
.flavour-sidebar.right .flavour-tag:nth-child(2n){margin-left:0;margin-right:16px;}
.flavour-sidebar.right .flavour-tag:nth-child(3n){margin-left:0;margin-right:28px;}
@media(max-width:860px){.occ-with-flavours{grid-template-columns:1fr;} .flavour-sidebar{display:none;}}

/* celebrations.html only (.flavours-float): card grid runs full-width so the cards
   match the weddings page, and the flavour lists float into the gutters hugging the
   cards (--gap from the edge, never touching). Lists repeat to fill the grid height,
   clipped + faded at the base. Desktop only — hidden when there's no gutter room. */
.flavours-float{display:block;position:relative;}        /* override the 3-col grid → full-width cards */
.flavours-float > .flavour-sidebar{display:none;}
.flavours-float > .cake-grid{max-width:none;margin-left:0;margin-right:0;}  /* fill the wrapper so flavours hug consistently */
/* Stronger, legible flavour colours — the faint grey default was hard to read.
   Full opacity, berry/rose family; deepest tone on the small tags. */
.flavours-float .flavour-tag{color:var(--berry);opacity:1;font-weight:400;}
.flavours-float .flavour-tag:nth-child(2n){color:var(--berry-dk);opacity:1;}   /* small tags — deepest berry */
.flavours-float .flavour-tag:nth-child(3n){color:var(--pink-dk);opacity:1;}    /* large tags — warm rose accent */
@media(min-width:1440px){
  .flavours-float{
    --gap:18px;                                           /* breathing space from the cards */
    --gutter:calc((100vw - 1160px) / 2);                 /* room outside the 1160px grid */
    --fw:clamp(96px, calc(var(--gutter) - var(--gap) - 22px), 170px);
  }
  .flavours-float > .flavour-sidebar{
    display:block;position:absolute;top:0;bottom:0;width:var(--fw);
    padding-top:4px;overflow:hidden;
    -webkit-mask-image:linear-gradient(to bottom,#000 86%,transparent 100%);
            mask-image:linear-gradient(to bottom,#000 86%,transparent 100%);
  }
  .flavours-float > .flavour-sidebar:not(.right){right:calc(100% + var(--gap));left:auto;text-align:right;}
  .flavours-float > .flavour-sidebar.right{left:calc(100% + var(--gap));right:auto;text-align:left;}
}

/* Cake photo reveal — soft, slow fade like gallery.html with a little more lift + scale.
   Hidden start gated by .cake-anim (added by main.js) so photos stay visible if JS is off. */
.flavours-float.cake-anim .cake-grid figure{opacity:0;transform:translateY(28px) scale(.97);transition:opacity .85s ease,transform .85s cubic-bezier(.2,.7,.2,1);}
.flavours-float.cake-anim .cake-grid figure.in{opacity:1;transform:none;}
@media(prefers-reduced-motion:reduce){
  .flavours-float.cake-anim .cake-grid figure{opacity:1;transform:none;transition:none;}
}
.course-section-head{margin:40px 0 16px;}
@media(max-width:900px){.course-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:520px){.course-grid{grid-template-columns:1fr;}}

/* ---- enquiry form ---- */
.enq{display:grid;grid-template-columns:.92fr 1.08fr;border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;}
.enq-aside{position:relative;overflow:hidden;color:#fff;display:flex;flex-direction:column;justify-content:flex-end;padding:38px;min-height:480px;}
.enq-aside img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:0;}
.enq-aside::after{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(165deg,rgba(124,39,66,.46),rgba(61,18,34,.86));}
.enq-aside .ac{position:relative;z-index:2;}
.enq-aside h3{color:#fff;font-size:1.7rem;margin-bottom:12px;}
.enq-aside p{font-size:.84rem;color:rgba(255,242,246,.85);line-height:1.8;margin-bottom:20px;}
.enq-aside .dets{list-style:none;display:flex;flex-direction:column;gap:10px;}
.enq-aside .dets li{display:flex;gap:10px;font-size:.78rem;color:rgba(255,242,246,.9);}
.enq-aside .dets svg{width:16px;height:16px;stroke:var(--pink-lt);fill:none;stroke-width:1.5;flex-shrink:0;margin-top:2px;}
.enq-form{padding:clamp(28px,3.4vw,44px);}
.enq-form .eyebrow{color:var(--pink-dk);}
.enq-form h3{font-size:1.7rem;color:var(--berry);margin:7px 0 20px;}
.fg{margin-bottom:14px;}
.fg label{display:block;font-size:.58rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-mid);margin-bottom:6px;}
.fg input,.fg select,.fg textarea{width:100%;background:var(--cream);border:1px solid var(--line);color:var(--ink);font-family:'Hanken Grotesk',sans-serif;font-size:.84rem;font-weight:300;padding:11px 13px;outline:none;-webkit-appearance:none;appearance:none;transition:border-color .3s,box-shadow .3s;}
.fg input:focus,.fg select:focus,.fg textarea:focus{border-color:var(--pink);box-shadow:0 0 0 3px rgba(229,146,168,.16);}
.fg textarea{resize:vertical;min-height:96px;}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:13px;}
.enq-form .btn{width:100%;justify-content:center;margin-top:6px;}
.form-note{display:flex;align-items:center;justify-content:center;gap:11px;font-size:1.12rem;font-weight:700;color:var(--berry-dk);text-align:center;margin-top:20px;line-height:1;letter-spacing:-.01em;}
.form-note::before{content:'';flex-shrink:0;width:24px;height:24px;background:var(--berry-dk);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm0 2-8 5-8-5h16zm0 12H4V8.87l8 5 8-5V18z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm0 2-8 5-8-5h16zm0 12H4V8.87l8 5 8-5V18z'/%3E%3C/svg%3E") center/contain no-repeat;}
.enq-hint{font-size:.8rem;color:var(--ink-lt);line-height:1.7;margin:2px 0;}
.enq-variant[hidden]{display:none;}
.enq-variant{animation:enqIn .5s ease;}
@keyframes enqIn{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}
.enq-charges{font-size:.74rem;color:var(--ink-lt);text-align:center;margin:0 0 14px;}
.enq-charges a{color:var(--berry);text-decoration:underline;text-underline-offset:2px;}

/* ---- faq ---- */
.faq{max-width:820px;margin:0 auto;}
.faq details{border-bottom:1px solid var(--line);padding:6px 0;}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 4px;font-family:'Fraunces',serif;font-size:1.28rem;color:var(--berry);min-width:0;overflow-wrap:anywhere;}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{content:'+';font-family:'Hanken Grotesk',sans-serif;font-size:1.3rem;color:var(--pink-dk);transition:transform .3s;}
.faq details[open] summary::after{transform:rotate(45deg);}
.faq details p{padding:0 4px 18px;font-size:.9rem;color:var(--ink-mid);line-height:1.85;}

/* ---- footer ---- */
.footer{background:#fff;border-top:1px solid var(--line);padding:50px 40px 26px;}
.footer-top{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:1.1fr 1fr 1.1fr 1.1fr;gap:36px;padding-bottom:30px;border-bottom:1px solid var(--line);}
.f-col p a{display:inline;}
a[href^="tel:"]{color:inherit;text-decoration:none;}
a[href^="tel:"]:hover{color:var(--berry);}
.footer img.flogo{height:64px;margin-bottom:6px;}
.f-tag{font-family:'Fraunces',serif;font-style:italic;font-size:.92rem;color:var(--ink-lt);max-width:260px;}
.f-h{font-size:.6rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--pink-dk);margin-bottom:13px;}
.f-col a,.f-col p{display:block;font-size:.8rem;color:var(--ink-mid);margin-bottom:8px;transition:color .3s;}
.f-col a:hover{color:var(--berry);}
.footer-bottom{max-width:1240px;margin:22px auto 0;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:.66rem;color:var(--ink-lt);}

/* ---- sticky mobile cta ---- */
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:700;display:none;padding:11px 16px;background:rgba(124,39,66,.97);backdrop-filter:blur(8px);}
.sticky-cta a{display:block;width:100%;text-align:center;}

/* ---- lightbox (gallery) ---- */
.lightbox{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;padding:30px;background:rgba(61,18,34,.88);backdrop-filter:blur(5px);animation:lbIn .3s ease;}
.lightbox.open{display:flex;}
@keyframes lbIn{from{opacity:0}to{opacity:1}}
.lightbox figure{max-width:min(92vw,860px);max-height:90vh;}
.lightbox img{width:100%;height:auto;max-height:80vh;object-fit:contain;box-shadow:0 30px 80px rgba(0,0,0,.55);}
.lightbox figcaption{text-align:center;color:var(--pink-lt);font-family:'Fraunces',serif;font-style:italic;font-size:1.06rem;margin-top:14px;}
.lb-close{position:absolute;top:20px;right:26px;width:44px;height:44px;background:none;border:none;color:#fff;font-size:2.2rem;line-height:1;cursor:pointer;opacity:.82;transition:opacity .3s,transform .3s;}
.lb-close:hover{opacity:1;transform:rotate(90deg);}
.gal figure{cursor:zoom-in;}

/* ---- rotator (testimonials) ---- */
.rotator{position:relative;}
.rotator .slide{display:none;}
.rotator .slide.active{display:block;animation:fadeSlide .9s ease;}
@keyframes fadeSlide{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.rotator .dots{display:flex;justify-content:center;gap:8px;margin-top:22px;}
.rotator .dots button{width:8px;height:8px;border-radius:50%;border:none;background:rgba(244,205,217,.4);cursor:pointer;padding:0;transition:background .3s,transform .3s;}
.rotator .dots button.on{background:var(--pink-lt);transform:scale(1.25);}

/* ---- variant A: auto-scroll photo ribbon ---- */
.ribbon{overflow:hidden;background:var(--cream-2);padding:22px 0;}
.ribbon-track{display:flex;gap:14px;width:max-content;animation:ribbon 50s linear infinite;}
.ribbon:hover .ribbon-track{animation-play-state:paused;}
.ribbon-track img{height:300px;width:auto;object-fit:cover;display:block;}
@keyframes ribbon{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---- variant B: editorial statement ---- */
.statement{padding:clamp(52px,7vw,90px) 0 clamp(26px,3vw,40px);text-align:center;background:var(--white);}
.statement .ornament{margin-bottom:22px;}
.statement .big-quote{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(1.9rem,4.6vw,3.6rem);line-height:1.28;color:var(--berry);max-width:980px;margin:0 auto;}
.statement .big-quote em{font-style:italic;color:var(--pink-dk);}
.statement .attrib{margin-top:24px;font-size:.6rem;letter-spacing:.28em;text-transform:uppercase;color:var(--pink-dk);}

/* ---- variant C: overlapping collage ---- */
.collage-sec .collage{position:relative;height:clamp(380px,40vw,540px);max-width:720px;margin:0 auto;}
.collage-sec .collage img{position:absolute;box-shadow:var(--shadow);object-fit:cover;}
.collage-sec .collage img:nth-child(1){left:0;top:10%;width:44%;height:68%;transform:rotate(-5deg);z-index:1;}
.collage-sec .collage img:nth-child(2){left:28%;top:0;width:48%;height:90%;z-index:3;}
.collage-sec .collage img:nth-child(3){right:0;top:16%;width:42%;height:64%;transform:rotate(5deg);z-index:2;}
.collage-sec .collage img{transition:transform .55s ease;}
.collage-sec .collage:hover img:nth-child(1){transform:rotate(-8deg) translate(-12px,-4px);}
.collage-sec .collage:hover img:nth-child(3){transform:rotate(8deg) translate(12px,-4px);}

/* word cycle (animated text) */
.word-cycle{display:inline-block;position:relative;min-width:9em;text-align:left;color:var(--berry);}
.word-cycle span{position:absolute;left:0;opacity:0;transition:opacity .5s ease;white-space:nowrap;}
.word-cycle span.on{position:relative;opacity:1;}

@media(max-width:768px){
  .ribbon-track img{height:200px;}
  .statement .big-quote{font-size:clamp(1.5rem,7vw,2.1rem);}
  .collage-sec .collage{height:280px;}
}

/* ---- reveal-on-hover occasions ---- */
.reveal-occ{display:grid;grid-template-columns:1fr minmax(260px,330px);gap:46px;align-items:center;}
.reveal-list{list-style:none;}
.reveal-list li{border-bottom:1px solid var(--line);}
.reveal-list li:first-child{border-top:1px solid var(--line);}
.reveal-list a{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 4px;font-family:'Fraunces',serif;font-size:clamp(1.5rem,2.8vw,2.3rem);color:var(--ink-lt);transition:color .35s ease,padding .35s ease;}
.reveal-list li.active a,.reveal-list a:hover{color:var(--berry);padding-left:18px;}
.reveal-list .go{font-family:'Hanken Grotesk',sans-serif;font-size:.56rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--pink-dk);opacity:0;transform:translateX(-8px);transition:opacity .35s,transform .35s;}
.reveal-list li.active .go{opacity:1;transform:translateX(0);}
.reveal-stage{position:relative;aspect-ratio:0.56;width:100%;overflow:hidden;box-shadow:var(--shadow);background:var(--cream-2);border:1px solid var(--line);}
.reveal-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;transform:scale(1.05);transition:opacity .6s ease,transform 1.4s ease;}
.reveal-stage img.show{opacity:1;transform:scale(1);}

/* ---- portfolio carousel ---- */
.carousel-track{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding-bottom:8px;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
.carousel-track::-webkit-scrollbar{display:none;}
.carousel-card{flex:0 0 auto;scroll-snap-align:start;position:relative;overflow:hidden;background:var(--cream-2);}
.carousel-card img{height:clamp(300px,40vw,400px);width:auto;object-fit:cover;display:block;transition:transform .6s ease;}
.carousel-card:hover img{transform:scale(1.04);}
.carousel-card figcaption{position:absolute;left:0;right:0;bottom:0;padding:30px 18px 16px;color:#fff;font-family:'Fraunces',serif;font-size:1.1rem;background:linear-gradient(to top,rgba(61,18,34,.8),transparent);}
.carousel-nav{display:flex;gap:10px;justify-content:center;margin-top:24px;}
.carousel-nav button{width:48px;height:48px;border:1px solid var(--pink);background:#fff;color:var(--berry);font-size:1.1rem;cursor:pointer;transition:background .3s,color .3s,transform .3s;}
.carousel-nav button:hover{background:var(--berry);color:#fff;border-color:var(--berry);transform:translateY(-2px);}

@media(max-width:768px){
  .reveal-occ{grid-template-columns:1fr;gap:24px;}
  .reveal-stage{order:-1;max-width:100%;aspect-ratio:2/3;}
  .reveal-stage img{object-fit:contain;}
  .reveal-list a{font-size:1.35rem;padding:16px 4px;}
}

/* ---- gallery wall (continuous moving slider) ---- */
.gwall{display:flex;flex-direction:column;gap:14px;overflow:hidden;padding:6px 0;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 4%,#000 96%,transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 4%,#000 96%,transparent 100%);}
.gwall-row{display:flex;gap:14px;width:max-content;will-change:transform;}
.gwall-row.l{animation:gwallL var(--dur,90s) linear infinite;}
.gwall-row.r{animation:gwallR var(--dur,90s) linear infinite;}
.gwall img{height:190px;width:auto;object-fit:cover;display:block;background:var(--cream-2);cursor:zoom-in;transition:transform .3s ease;}
.gwall img:hover{transform:scale(1.05);}
@keyframes gwallL{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes gwallR{from{transform:translateX(-50%)}to{transform:translateX(0)}}
@media(max-width:768px){ .gwall img{height:128px;} .gwall{gap:10px;} }

/* ---- occasion photo cards (obvious, clickable gallery buttons) ---- */
.occ-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:36px;}
.occ-card{display:flex;flex-direction:column;background:var(--white);border:1px solid var(--line);border-radius:18px;overflow:hidden;text-decoration:none;color:inherit;box-shadow:0 6px 22px rgba(124,39,66,.06);transition:transform .45s cubic-bezier(.2,.7,.2,1),box-shadow .45s,border-color .45s;}
.occ-card:hover{transform:translateY(-8px);box-shadow:0 26px 54px rgba(124,39,66,.18);border-color:var(--pink);}
.occ-thumb{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--cream-2);}
.occ-thumb img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;transition:transform .8s cubic-bezier(.2,.7,.2,1);}
.occ-card:hover .occ-thumb img{transform:scale(1.06);}
.occ-thumb::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(to top,rgba(44,18,28,.20),transparent 32%);}
.occ-thumb .occ-count{position:absolute;top:13px;right:13px;z-index:2;font-family:'Hanken Grotesk',sans-serif;font-size:.62rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#fff;background:rgba(124,39,66,.78);backdrop-filter:blur(3px);padding:5px 11px;border-radius:999px;}
.occ-body{padding:22px 24px 24px;display:flex;flex-direction:column;flex:1;}
.occ-body h3{font-size:1.4rem;margin:0 0 8px;line-height:1.2;}
.occ-body p{font-size:.9rem;color:var(--ink-mid);line-height:1.65;margin:0 0 18px;flex:1;}
.occ-cta{display:inline-flex;align-items:center;gap:9px;align-self:flex-start;font-family:'Hanken Grotesk',sans-serif;font-weight:600;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#fff;background:var(--berry);padding:11px 20px;border-radius:999px;transition:background .3s,gap .3s,box-shadow .3s;}
.occ-card:hover .occ-cta{background:var(--berry-dk);gap:14px;box-shadow:0 10px 24px rgba(124,39,66,.28);}
.occ-cta svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;}
@media(max-width:900px){ .occ-grid{grid-template-columns:repeat(2,1fr);gap:18px;} }
@media(max-width:560px){ .occ-grid{grid-template-columns:1fr;} .occ-body h3{font-size:1.3rem;} }

/* ---- full archive gallery (masonry — every cake, no crop) ---- */
.arch-filter{display:flex;flex-wrap:wrap;gap:9px;justify-content:center;margin:0 auto 36px;max-width:940px;}
.arch-filter button{font-family:'Hanken Grotesk',sans-serif;font-size:.64rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mid);background:#fff;border:1px solid var(--line);padding:9px 17px;border-radius:999px;cursor:pointer;transition:background .3s,color .3s,border-color .3s,transform .3s;}
.arch-filter button:hover{border-color:var(--pink);color:var(--berry);transform:translateY(-1px);}
.arch-filter button.on{background:var(--berry);color:#fff;border-color:var(--berry);}
.arch-filter .cnt{opacity:.6;font-weight:500;margin-left:5px;}
.archive{column-count:5;column-gap:14px;}
.archive .ai{break-inside:avoid;-webkit-column-break-inside:avoid;margin:0 0 14px;position:relative;overflow:hidden;border-radius:10px;background:var(--cream-2);cursor:zoom-in;box-shadow:0 3px 14px rgba(124,39,66,.05);}
.archive .ai img{width:100%;height:auto;display:block;transition:transform .6s ease;}
.archive .ai:hover img{transform:scale(1.05);}
.archive .ai::after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 0 1px rgba(124,39,66,.05);border-radius:10px;pointer-events:none;}
.archive .ai.hide{display:none;}
.arch-empty{text-align:center;color:var(--ink-lt);padding:40px 0;display:none;}
@media(max-width:1100px){ .archive{column-count:4;} }
@media(max-width:768px){ .archive{column-count:3;column-gap:10px;} .archive .ai{margin-bottom:10px;} }
@media(max-width:480px){ .archive{column-count:2;} }

/* ---- 3D zoom lightbox (lift from collage) ---- */
.zoombox{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;background:rgba(44,18,28,.9);backdrop-filter:blur(7px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .4s ease,visibility .4s;perspective:1600px;}
.zoombox.open{opacity:1;visibility:visible;pointer-events:auto;}
.zoombox img{max-width:90vw;max-height:86vh;width:auto;height:auto;box-shadow:0 50px 120px rgba(0,0,0,.65);transform-style:preserve-3d;cursor:zoom-out;}
.zclose{position:absolute;top:20px;right:26px;width:48px;height:48px;background:none;border:none;color:#fff;font-size:2.3rem;line-height:1;cursor:pointer;opacity:.85;z-index:2;transition:opacity .3s,transform .3s;}
.zclose:hover{opacity:1;transform:rotate(90deg);}

/* ---- editorial section header (left, index number) ---- */
.ehead{display:flex;align-items:flex-end;gap:clamp(18px,3vw,34px);margin-bottom:clamp(34px,4vw,52px);padding-bottom:20px;border-bottom:1px solid var(--line);}
.ehead .idx{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(2.6rem,5.5vw,4.4rem);line-height:.72;color:var(--pink-lt);letter-spacing:-.02em;}
.ehead .et{flex:1;}
.ehead .et .eyebrow{margin-bottom:9px;}
.ehead .et h2{font-size:clamp(1.7rem,3.2vw,2.6rem);}
.ehead .elink{font-size:.58rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--pink-dk);white-space:nowrap;padding-bottom:7px;transition:color .3s;}
.ehead .elink:hover{color:var(--berry);}
@media(max-width:768px){ .ehead{flex-wrap:wrap;gap:14px;} .ehead .elink{flex-basis:100%;} }

/* ---- editorial timeline (process) ---- */
.timeline{display:grid;grid-template-columns:repeat(4,1fr);}
.tstep{padding:0 clamp(16px,2vw,30px);border-left:1px solid var(--line);}
.tstep:first-child{border-left:none;padding-left:0;}
.tstep .tn{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(2.4rem,4vw,3.2rem);color:var(--pink-lt);line-height:1;display:block;margin-bottom:16px;letter-spacing:-.02em;}
.tstep h3{font-size:1.24rem;margin-bottom:7px;}
.tstep p{font-size:.84rem;color:var(--ink-mid);line-height:1.75;}
@media(max-width:768px){ .timeline{grid-template-columns:1fr 1fr;gap:30px 0;} .tstep:nth-child(odd){border-left:none;padding-left:0;} }
@media(max-width:480px){ .timeline{grid-template-columns:1fr;} .tstep{border-left:none;padding-left:0;padding-bottom:18px;border-bottom:1px solid var(--line);} }

/* ---- process steps ---- */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;}
.step{position:relative;padding:30px 24px;background:#fff;border:1px solid var(--line);transition:transform .4s,box-shadow .4s;}
.step:hover{transform:translateY(-4px);box-shadow:var(--shadow);}
.step .num{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;border:1px solid var(--pink);font-family:'Fraunces',serif;font-size:1.5rem;color:var(--berry);margin-bottom:15px;}
.step h3{font-size:1.32rem;margin-bottom:7px;}
.step p{font-size:.84rem;color:var(--ink-mid);line-height:1.8;}
@media(max-width:768px){ .steps{grid-template-columns:1fr 1fr;} }
@media(max-width:480px){ .steps{grid-template-columns:1fr;} }

/* ===== Craft editorial spread — two-row: feature+image, then 6 full-width steps ===== */
.craft{overflow:hidden;}
.craft-grid{
  display:grid;
  grid-template-columns:minmax(0,0.95fr) minmax(0,1.05fr);
  grid-template-areas:"feature frame" "beats beats";
  gap:clamp(20px,3vw,46px) clamp(18px,3vw,46px);
  align-items:stretch;
}
.craft-feature{grid-area:feature;display:flex;flex-direction:column;justify-content:center;}
.craft-feature .eyebrow{margin-bottom:16px;}
.craft-display{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(2.2rem,4.4vw,3.5rem);line-height:1.05;letter-spacing:-.018em;color:var(--berry);}
.craft-display em{font-style:italic;color:var(--pink-dk);}
.craft-lead{margin-top:22px;max-width:38ch;}
.craft-orn{margin:28px 0 4px;}
.craft-cta{align-self:flex-start;margin-top:30px;}
.craft-frame{grid-area:frame;position:relative;overflow:hidden;background:var(--cream-2);border:1px solid var(--line);box-shadow:0 24px 60px rgba(124,39,66,.12);aspect-ratio:4 / 5;}
.craft-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;transition:transform 1.4s cubic-bezier(.2,.7,.2,1);}
.craft-frame:hover img{transform:scale(1.04);}
.craft-frame figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 22px 14px;font-size:.58rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#fff;background:linear-gradient(to top,rgba(124,39,66,.7),transparent);}
.craft-beats{grid-area:beats;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:2px;}
.craft-beat{display:flex;flex-direction:column;gap:5px;padding:clamp(16px,1.9vw,22px);background:var(--white);border:1px solid var(--line);transition:transform .4s,box-shadow .4s;}
.craft-beat:hover{transform:translateY(-4px);box-shadow:var(--shadow);}
.craft-no{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(1.4rem,2.2vw,1.9rem);line-height:.9;color:var(--pink-lt);letter-spacing:-.02em;}
.craft-body h3{font-family:'Fraunces',serif;font-weight:300;font-style:italic;font-size:clamp(.9rem,1.35vw,1.08rem);color:var(--berry);margin-bottom:4px;}
.craft-body p{font-size:.82rem;line-height:1.65;color:var(--ink-mid);}
@media(max-width:900px){
  .craft-grid{grid-template-columns:1fr;grid-template-areas:"feature" "frame" "beats";}
  .craft-frame{min-height:auto;aspect-ratio:4 / 5;}
  .craft-lead{max-width:none;}
  .craft-beats{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:560px){
  .craft-frame{aspect-ratio:3/4;}
  .craft-beats{grid-template-columns:1fr;}
}

/* ===================== RESPONSIVE ===================== */
@media(max-width:1024px){
  .wrap{padding:0 28px;}
  .cards,.cols3,.tgrid{grid-template-columns:1fr 1fr;}
  .footer-top{grid-template-columns:1fr 1fr;}
}
/* tablet + small laptop (769–1199px): the full nav (logo + links + social + CTA)
   physically doesn't fit — the logo track collapses to 0 and the CTA clips.
   Use the burger nav across this whole range. */
@media(max-width:1199px){
  .nav{padding:0 20px;height:64px;overflow:hidden;grid-template-columns:auto 1fr auto;grid-template-rows:64px;}
  .nav-logo{transform:none;margin-left:0;align-self:center;}
  .nav-logo:hover{transform:none;}
  .nav-logo img{height:50px;}
  .nav-links{display:none;}
  .nav-social{display:none;}
  .burger{display:flex;grid-column:3;}
  .nav .btn{display:none;}
}
/* 1200–1439px: full nav fits, but only with tighter spacing and a smaller logo */
@media(min-width:1200px) and (max-width:1439px){
  .nav{gap:0 16px;padding:0 24px;}
  .nav-logo{margin-left:12px;}
  .nav-logo img{height:140px;}
  .nav-links{gap:20px;}
  .nav-links a{font-size:.84rem;}
}
@media(max-width:768px){
  .phead{padding-left:22px;padding-right:22px;}
  .creds-row{gap:20px 32px;}
  .hero{min-height:auto;padding:44px 0 52px;}
  .hero-bg img{object-position:72% center;}
  .hero-scrim{background:linear-gradient(180deg,rgba(251,247,244,.96) 0%,rgba(251,247,244,.88) 38%,rgba(251,247,244,.62) 62%,rgba(251,247,244,.22) 84%,transparent 100%);}
  .hero h1{font-size:clamp(2.1rem,8.5vw,3.2rem);margin:12px 0 10px;}
  .hero-sub{font-size:.96rem;max-width:100%;}
  .hero-trust{display:none;}
  .eyebrow{letter-spacing:.18em;}
  .qstart{max-width:100%;}
  .hero-promise{margin-top:26px;padding-top:24px;}
  .bento{grid-template-columns:1fr 1fr;grid-auto-rows:150px;}
  .gal{grid-template-columns:1fr 1fr;grid-auto-rows:170px;}
  .gal .big{grid-column:span 2;grid-row:span 1;}
  .cards,.cols2,.cols3,.tgrid{grid-template-columns:1fr;}
  .split{grid-template-columns:1fr;}
  .split-img{min-height:300px;}
  .enq{grid-template-columns:1fr;}
  .enq-aside{min-height:300px;}
  .row2{grid-template-columns:1fr;}
  .footer-top{grid-template-columns:1fr;gap:24px;}
  .sticky-cta{display:block;}
  body{padding-bottom:58px;}
  /* occasions: tap-friendly list instead of hover-only */
  .reveal-list a{color:var(--ink-mid);}
  .reveal-list li.active a{color:var(--berry);}
  .reveal-list .go{opacity:1;transform:none;}
  /* word-cycle: no fixed min-width on mobile */
  .word-cycle{min-width:0;}
  /* carousel: portrait cards sized to each cake so nothing is cropped */
  .carousel-card{flex:0 0 auto;width:auto;}
  .carousel-card img{height:clamp(360px,84vw,430px);width:auto;object-fit:cover;}
  /* stats: tighter */
  .stats{gap:24px;}
}

/* Wedding/Celebration section quick-nav — pill style */
.wed-subnav{background:var(--cream);border-bottom:1px solid var(--line);padding:12px var(--pad,1.5rem);}
.wed-subnav ul{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0 auto;padding:0;max-width:1240px;}
.wed-subnav li a{display:block;padding:5px 14px;font-family:'Hanken Grotesk',sans-serif;font-size:.78rem;font-weight:500;color:var(--ink-mid);text-decoration:none;border-radius:20px;transition:background .2s,color .2s;}
.wed-subnav li a:hover{background:var(--pink-xl);color:var(--berry);}
.wed-subnav li a.active{background:var(--berry);color:#fff;font-weight:600;}
@media(max-width:600px){.wed-subnav{padding:10px var(--pad,1rem);}.wed-subnav li a{padding:4px 11px;font-size:.75rem;}}

/* Page intro blurb */
.page-intro{padding:40px var(--pad,1.5rem) 0;max-width:780px;margin:0 auto;}
.page-intro p{font-family:'Hanken Grotesk',sans-serif;font-size:1rem;color:var(--ink-mid);line-height:1.85;margin-bottom:1em;}
.page-intro p:last-child{margin-bottom:0;}
.page-intro a{color:var(--berry);text-decoration:none;border-bottom:1px solid var(--pink);}
.page-intro a:hover{color:var(--ink);}

/* ---- Small phones (<520px) ---- */
@media(max-width:520px){
  /* topbar: drop year + location, show just award winner */
  .tb-x{display:none;}
  /* wrap: comfortable side padding (was 18px — too tight) */
  .wrap{padding:0 22px;}
  /* nav logo: compact, vertically centred in the 64px bar */
  .nav-logo{transform:none;margin-left:0;align-self:center;}
  .nav-logo img{height:48px;}
  /* topbar single line — shrink font a touch */
  .topbar{font-size:.58rem;padding:7px 14px;}
  /* creds strip: tighten on small phones */
  .creds-row{gap:12px 24px;justify-content:flex-start;}
  .creds-row li{font-size:.55rem;}
  /* statement section: prevent big-quote overflow */
  .statement{padding:clamp(48px,8vw,80px) 0;}
  /* footer bottom: stack */
  .footer-bottom{flex-direction:column;gap:6px;text-align:center;}
}

/* =====================================================================
   POLISH LAYER — refined aesthetics, sitewide consistency
   Animations, micro-interactions, button system, elegance.
   ===================================================================== */

/* Extended stagger delays */
.r.d5{transition-delay:.5s}.r.d6{transition-delay:.6s}.r.d7{transition-delay:.7s}.r.d8{transition-delay:.8s}

/* Reveal variants */
.r-left{opacity:0;transform:translateX(-32px);transition:opacity .85s cubic-bezier(.16,1,.3,1),transform .85s cubic-bezier(.16,1,.3,1);}
.r-left.in{opacity:1;transform:translateX(0);}
.r-scale{opacity:0;transform:scale(.94);transition:opacity .75s ease,transform .75s cubic-bezier(.16,1,.3,1);}
.r-scale.in{opacity:1;transform:scale(1);}

/* Scroll progress bar */
.scroll-progress{position:fixed;top:0;left:0;height:2px;width:0%;background:linear-gradient(to right,var(--pink),var(--berry));z-index:2000;pointer-events:none;transition:width .08s linear;}

/* Hero-bg: extra room so parallax never shows a gap */
.hero-bg{top:-14%;bottom:-14%;left:0;right:0;}

/* Ornament gem — slow pulse */
@keyframes gemPulse{0%,100%{opacity:.55;transform:scale(1);}50%{opacity:1;transform:scale(2.4);}}
.ornament .gem{animation:gemPulse 3.8s ease-in-out infinite;}

/* ---- Refined button system ---- */
/* All buttons: relative + overflow for shimmer */
.btn{position:relative;overflow:hidden;}

/* Berry button: shimmer sweep on hover */
.btn-berry::before{
  content:'';position:absolute;top:0;left:-120%;width:70%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.16),transparent);
  transform:skewX(-18deg);transition:left .65s ease;pointer-events:none;
}
.btn-berry:hover{background:var(--berry-dk);transform:translateY(-3px);box-shadow:0 18px 40px rgba(124,39,66,.36);}
.btn-berry:hover::before{left:150%;}

/* Ghost button: berry border, stronger presence */
.btn-ghost{border:1.5px solid var(--berry);color:var(--berry);}
.btn-ghost:hover{background:var(--berry);color:#fff;border-color:var(--berry);transform:translateY(-3px);box-shadow:0 12px 32px rgba(124,39,66,.26);}

/* Light button: refined */
.btn-lt{background:var(--cream-2);color:var(--berry);border:1.5px solid var(--line);}
.btn-lt:hover{background:var(--white);border-color:var(--pink);transform:translateY(-2px);}

/* ---- Category chips — redesigned, on-brand ---- */
.cat-chip{
  display:inline-block;
  font-family:'Hanken Grotesk',sans-serif;
  font-size:.76rem;
  font-weight:500;
  letter-spacing:.07em;
  color:var(--berry);
  background:var(--white);
  border:1.5px solid var(--pink-lt);
  padding:11px 22px;
  border-radius:0;
  text-decoration:none;
  transition:background .3s ease,color .3s ease,border-color .3s ease,transform .25s cubic-bezier(.16,1,.3,1),box-shadow .3s ease;
}
.cat-chip:hover{
  background:var(--berry);color:#fff;border-color:var(--berry);
  transform:translateY(-2px);
  box-shadow:0 8px 24px rgba(124,39,66,.24);
}

/* Category nav section */
.cat-nav-section{background:var(--white);border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.cat-nav-section .wrap{padding-top:clamp(36px,5vw,52px);padding-bottom:clamp(36px,5vw,52px);}
.cat-nav-section .eyebrow{text-align:center;margin-bottom:22px;}
.cat-chips{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:900px;margin:0 auto;}

/* ---- FAQ: animate content on open ---- */
.faq details[open] p{animation:faqIn .38s ease;}
@keyframes faqIn{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:translateY(0);}}

/* ---- phead: decorative radial accent ---- */
.phead::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at 68% 40%,var(--pink-xl) 0%,transparent 58%);
  opacity:.7;
}

/* ---- Creds strip: hover on each item ---- */
.creds-row li{transition:color .3s;cursor:default;}
.creds-row li svg{transition:stroke .3s,transform .35s cubic-bezier(.16,1,.3,1);}
.creds-row li:hover{color:var(--berry);}
.creds-row li:hover svg{stroke:var(--berry);transform:scale(1.2);}

/* ---- Cards: editorial hover ---- */
.card:hover{border-top-color:var(--berry);border-color:var(--pink-dk);background:var(--cream);}
.occ-card:hover{transform:translateY(-10px);box-shadow:0 32px 64px rgba(124,39,66,.2);}

/* ---- Gallery carousel: card appears with stagger (added via JS) ---- */
.carousel-card{transition:opacity .6s ease,transform .6s ease;}

/* ---- Cake grid: figcaption slide-up on hover ---- */
.cake-grid figcaption{transition:transform .35s ease,opacity .35s ease;}

/* ---- Wed-subnav: hover refinement ---- */
.wed-subnav li a{transition:color .25s,border-color .25s,background .25s;}
.wed-subnav li a:hover{background:var(--pink-xl);}

/* ---- Enquiry aside: subtle shine on load ---- */
.enq-aside::before{
  content:'';position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(135deg,rgba(255,255,255,.06) 0%,transparent 50%);
}

/* ---- Statement section: big quote reveal ---- */
.statement .big-quote em{display:inline;color:var(--pink-dk);}

/* ---- Sticky CTA: smoother ---- */
.sticky-cta a{padding:14px 16px;display:block;letter-spacing:.22em;font-size:.64rem;}

/* ---- Footer: hover links more alive ---- */
.f-col a{transition:color .25s,padding-left .25s;}
.f-col a:hover{color:var(--berry);padding-left:5px;}

/* ---- prefers-reduced-motion ---- */
@media(prefers-reduced-motion:reduce){
  .r,.r-left,.r-scale{opacity:1 !important;transform:none !important;transition:none !important;}
  .hero-bg img{animation:none !important;transform:scale(1) !important;}
  .ribbon-track,.gwall-row{animation-play-state:paused !important;}
  .ornament .gem{animation:none !important;}
  .btn-berry::before{display:none !important;}
  .scroll-progress{display:none !important;}
  *,*::before,*::after{transition-duration:.01ms !important;animation-duration:.01ms !important;animation-delay:0s !important;animation-iteration-count:1 !important;scroll-behavior:auto !important;}
  /* hero intro uses opacity:0 + delayed forwards animation — force visible instantly */
  .hero .eyebrow,.hero h1,.hero-sub,.hero-promise{opacity:1 !important;}
}

/* ---- classes page: top booking CTA + info links (added 23 June 2026) ---- */
.class-cta-band{padding:clamp(26px,4vw,42px) 0;border-bottom:1px solid var(--line);}
.class-cta{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;background:var(--cream-2);border:1px solid var(--line);border-left:3px solid var(--berry);padding:clamp(22px,3vw,34px) clamp(24px,3.5vw,40px);}
.class-cta-text h2{margin:6px 0 6px;}
.class-cta-text .muted{margin:0;max-width:48ch;}
.class-cta-btns{display:flex;gap:12px;flex-wrap:wrap;flex-shrink:0;}
.info-links{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.info-link{background:var(--white);border:1px solid var(--line);border-top:2px solid var(--pink);padding:28px 26px;display:flex;flex-direction:column;gap:8px;transition:border-color .3s,background .3s,transform .3s;}
.info-link:hover{border-top-color:var(--berry);border-color:var(--pink-dk);background:var(--cream);transform:translateY(-3px);}
.info-link h3{font-family:'Fraunces',serif;font-weight:300;font-size:1.3rem;color:var(--berry);line-height:1.25;}
.info-link p{font-family:'Hanken Grotesk',sans-serif;font-size:.9rem;color:var(--ink-mid);line-height:1.6;}
.info-link .occ-cta{margin-top:auto;padding-top:6px;}
@media(max-width:620px){
  .class-cta{flex-direction:column;align-items:flex-start;}
  .info-links{grid-template-columns:1fr;}
}

/* ---- legal / FAQ / terms pages (added 23 June 2026) ---- */
.legal{max-width:820px;}
.legal h3{font-family:'Fraunces',serif;font-weight:400;font-size:1.18rem;color:var(--berry);margin:28px 0 8px;}
.legal p{font-family:'Hanken Grotesk',sans-serif;font-size:.92rem;color:var(--ink-mid);line-height:1.75;margin-bottom:12px;}
.legal ol{margin:0 0 14px;padding-left:20px;}
.legal ol li{font-family:'Hanken Grotesk',sans-serif;font-size:.92rem;color:var(--ink-mid);line-height:1.75;margin-bottom:14px;padding-left:6px;}
.legal ol li::marker{color:var(--berry);}
.legal ul.tc-incl{list-style:none;padding:0;margin:6px 0 14px;}
.legal ul.tc-incl li{position:relative;padding-left:22px;margin-bottom:9px;font-family:'Hanken Grotesk',sans-serif;font-size:.92rem;color:var(--ink-mid);line-height:1.6;}
.legal ul.tc-incl li::before{content:'';position:absolute;left:2px;top:9px;width:6px;height:6px;background:var(--pink-dk);border-radius:50%;}
.legal a{color:var(--berry);text-decoration:underline;text-underline-offset:2px;}

/* ---- social links: nav, mobile menu, footer (added 23 June 2026) ---- */
.nav-social{display:flex;align-items:center;gap:13px;align-self:center;}
.nav-social a,.mob-social a,.footer-social a{display:inline-flex;color:var(--berry);transition:color .25s,transform .25s;}
.nav-social a svg,.mob-social a svg,.footer-social a svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
.nav-social a:hover,.mob-social a:hover,.footer-social a:hover{color:var(--berry-dk);transform:translateY(-2px);}
.footer-social{display:flex;gap:14px;margin-top:16px;}
.footer-social a svg{width:21px;height:21px;}
.mob-social{display:flex;gap:22px;justify-content:center;margin-top:16px;padding-top:18px;border-top:1px solid var(--line);}
.mob-social a svg{width:24px;height:24px;}

@media(max-width:1199px){.nav-social{display:none;}}

/* ---- landing 'Our Promise' value list — in-flow inside the hero column, after the form (23 June 2026) ---- */
.hero-promise{margin-top:34px;padding-top:30px;border-top:1px solid var(--line);max-width:480px;opacity:0;animation:up 1s ease .95s forwards;}
.hero-promise .eyebrow{margin-bottom:4px;}
.promise-list{list-style:none;max-width:480px;margin:14px 0 0;padding:0;}
.promise-list li{position:relative;padding:15px 0 15px 36px;font-family:'Fraunces',serif;font-weight:300;font-size:1.4rem;color:var(--ink);letter-spacing:-.005em;line-height:1.3;border-bottom:1px solid var(--line);}
.promise-list li:last-child{border-bottom:none;}
.promise-list li::before{content:'';position:absolute;left:6px;top:50%;width:9px;height:9px;background:var(--berry);transform:translateY(-50%) rotate(45deg);}
@media(max-width:560px){
  .promise-list li{font-size:1.18rem;padding-left:30px;}
}

/* ---- live enquiry forms (contact.php) ---- */
.hp-field{position:absolute !important;left:-9999px !important;top:auto !important;width:1px;height:1px;overflow:hidden}
.form-error{background:var(--pink-xl);border:1px solid var(--line);border-left:3px solid var(--berry);padding:14px 18px;margin:0 0 22px;color:var(--ink);font-size:.9rem}
