/* Craft Dreams website 2: "Ocean Depths" (chosen Oct 28, 2026).
   Deep navy-teal fading through ocean teal into bright aqua, bold Plus
   Jakarta Sans headlines, soft arched and round photo frames. One sheet
   for every page. */
:root{
  --deep:#073F59; --teal:#007F98; --aqua:#2FAFC0; --lav:#5AD9DF; --lav-ink:#00778A;
  --ink:#16323F; --body:#3A4F59; --soft:#5E727B; --night:#04293B;
  --wash-aqua:#E2F5F8; --wash-lav:#E3F9FA; --paper:#FBFCFD; --white:#FFFFFF; --line:#D9E6EA; --line2:#C3D6DC;
  --ok:#1E7A5A; --ok-wash:#E3F4EC; --warn:#8A4B00; --warn-wash:#FFF1DF;
  --btn-end:#0A93AC; --on-grad:#F2FBFD; --night-accent:#8FE9ED; --night-text:#CFE7EE;
  --grad:linear-gradient(118deg,var(--deep) 0%,var(--teal) 34%,var(--aqua) 66%,var(--lav) 100%);
  --btn:linear-gradient(100deg,var(--deep),var(--teal) 55%,var(--btn-end));
  --display:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --text:"Atkinson Hyperlegible Next","Atkinson Hyperlegible",system-ui,-apple-system,"Segoe UI",sans-serif;
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.55 var(--text);overflow-x:hidden}
img{display:block;max-width:100%}
a{color:var(--deep)}
h1,h2,h3,h4{font-family:var(--display);font-weight:800;letter-spacing:-.02em;line-height:1.1;margin:0;text-wrap:balance}
p{margin:0}
:focus-visible{outline:3px solid var(--lav-ink);outline-offset:2px;border-radius:6px}
.wrap{max-width:1180px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.narrow{max-width:820px}
@media(min-width:760px){.wrap{padding-left:max(32px,env(safe-area-inset-left,0px));padding-right:max(32px,env(safe-area-inset-right,0px))}}
.eyebrow{display:block;font:700 13px/1.2 var(--text);letter-spacing:.14em;text-transform:uppercase;color:var(--teal)}
em.lav{font-style:italic;color:var(--lav-ink)}
.muted{color:var(--soft)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[hidden]{display:none!important}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 24px;border-radius:999px;border:0;background:var(--btn);color:var(--white);font:700 16px/1.2 var(--text);text-decoration:none;cursor:pointer;box-shadow:0 8px 22px color-mix(in srgb,var(--deep) 26%,transparent)}
.btn:hover{filter:brightness(1.06)}
.btn[disabled]{opacity:.55;cursor:not-allowed;box-shadow:none}
.btn.white{background:var(--white);color:var(--deep);box-shadow:0 8px 22px rgba(10,40,55,.2)}
.btn.ghost{background:transparent;color:var(--white);box-shadow:none;border:1.5px solid rgba(255,255,255,.8)}
.btn.line{background:var(--white);color:var(--deep);box-shadow:none;border:1.5px solid var(--line2)}
.btn.small{padding:10px 16px;font-size:15px}
.btn svg{width:16px;height:16px;flex:none}
.link-btn{background:none;border:0;padding:0;color:var(--deep);font:700 15px/1.3 var(--text);text-decoration:underline;cursor:pointer}

/* top band + header */
/* The quick Turnstile check (site.js): invisible unless Cloudflare needs the visitor to tick a box. */
.cd-check{position:fixed;left:50%;bottom:max(16px,env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:60;width:min(340px,calc(100% - 32px));pointer-events:none}
.cd-check>p{display:none}
.cd-check.show{background:var(--white);border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 30px rgba(4,41,59,.18);padding:14px 16px;pointer-events:auto}
.cd-check.show>p{display:block;margin:0 0 10px;color:var(--ink);font-weight:700;font-size:15px}
.band{background:var(--night);color:var(--white);text-align:center;font-size:14px;padding-block:9px}
.band b{color:var(--night-accent)}
.band a{color:var(--night-accent)}
.site-head{background:var(--white);border-bottom:1px solid var(--line);position:relative;z-index:20}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:72px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit}
.logo img{width:46px;height:46px}
.logo span{display:block;white-space:nowrap;font:800 20px/1 var(--display);color:var(--deep);letter-spacing:-.01em}
.logo small{display:block;font:700 11px/1.3 var(--text);letter-spacing:.14em;color:var(--teal);text-transform:uppercase;margin-top:3px}
.nav{display:none;gap:24px;font-weight:700}
.nav a{color:var(--body);text-decoration:none;padding:6px 0;border-bottom:2px solid transparent}
.nav a:hover,.nav a[aria-current=page]{color:var(--deep);border-color:var(--aqua)}
.head-actions{display:flex;align-items:center;gap:10px}
.burger{width:44px;height:44px;border-radius:12px;border:1.5px solid var(--line);display:grid;place-items:center;background:var(--white);cursor:pointer}
.mobile-nav{border-top:1px solid var(--line);background:var(--white)}
.mobile-nav .wrap{display:grid;padding-block:8px 16px}
.mobile-nav a{padding:12px 0;border-bottom:1px solid var(--line);font-weight:700;color:var(--ink);text-decoration:none}
@media(min-width:940px){.nav{display:flex}.burger,.mobile-nav{display:none!important}}
@media(max-width:520px){.head-actions .btn{display:none}}

/* hero */
.hero{background:var(--grad);color:var(--white);position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 85% 15%,rgba(255,255,255,.22),transparent 38%),radial-gradient(circle at 10% 95%,color-mix(in srgb,var(--lav) 35%,transparent),transparent 40%);pointer-events:none}
.hero .wrap{position:relative;z-index:1;display:grid;gap:28px;padding-block:36px 44px}
.hero.slim .wrap{padding-block:36px 40px}
.pill{display:inline-block;background:var(--white);color:var(--deep);font:700 12.5px/1 var(--text);letter-spacing:.13em;text-transform:uppercase;padding:9px 14px;border-radius:999px}
.hero h1{font-size:clamp(42px,8.5vw,80px);margin:18px 0 14px}
.hero.slim h1{font-size:clamp(36px,6vw,58px)}
.hero h1 span{display:block}
.hero .lead{font-size:clamp(18px,2.2vw,21px);max-width:34ch;color:var(--on-grad)}
.hero .ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.collage{position:relative;min-height:380px}
.collage .arch{position:absolute;left:0;top:0;width:64%;aspect-ratio:3/4;border-radius:999px 999px 28px 28px;overflow:hidden;border:6px solid var(--white);box-shadow:0 18px 40px rgba(10,40,60,.28)}
.collage .circle{position:absolute;right:0;top:12%;width:44%;aspect-ratio:1;border-radius:50%;overflow:hidden;border:6px solid var(--white);box-shadow:0 18px 40px rgba(10,40,60,.25)}
.collage img{width:100%;height:100%;object-fit:cover}
.sticker{position:absolute;right:2%;bottom:4%;width:46%;background:var(--white);color:var(--deep);border-radius:22px;padding:14px 16px;font:800 15px/1.25 var(--display);box-shadow:0 14px 30px rgba(10,40,60,.22);transform:rotate(-3deg)}
.sticker i{display:block;font:700 12px/1.3 var(--text);font-style:normal;color:var(--lav-ink);letter-spacing:.12em;text-transform:uppercase;margin-bottom:4px}
.sticker{width:auto;min-width:46%;max-width:64%}.sticker i{white-space:nowrap}
@media(min-width:900px){
  .hero .wrap{grid-template-columns:1.05fr 1fr;align-items:center;padding-block:64px 72px}
  .hero.slim .wrap{padding-block:56px 60px}
  .collage{min-height:520px}
}
.ticker{background:var(--wash-aqua);border-bottom:1px solid var(--line);color:var(--lav-ink);font-weight:700;letter-spacing:.12em;text-transform:uppercase;font-size:13px;text-align:center;padding-block:14px}
.ticker b{color:var(--lav-ink);margin:0 8px}

/* sections */
.sec{padding-block:56px}
@media(min-width:900px){.sec{padding-block:84px}}
.sec-head h2{font-size:clamp(30px,5vw,50px);margin:12px 0 10px}
.sec-head p{color:var(--body);max-width:56ch}
.sec.lav{background:var(--grain),var(--wash-lav)}
.sec.lav .eyebrow,.sec.aqua .eyebrow{color:var(--lav-ink)}
.sec.aqua{background:var(--grain),var(--wash-aqua)}
.sec.night{background:var(--night);color:var(--white);position:relative;overflow:hidden}
.sec.night::before{content:"";position:absolute;right:-120px;top:-120px;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--aqua) 35%,transparent),transparent 65%)}
.sec.night .eyebrow{color:var(--night-accent)}
.sec.night p{color:var(--night-text)}
.sec.night .wrap{position:relative}
.split{display:grid;gap:30px;align-items:center}
.split>*{min-width:0}
@media(min-width:900px){.split{grid-template-columns:1fr 1.1fr}.split.flip>:first-child{order:2}}

/* product cards */
.prods{display:grid;gap:28px;margin-top:34px}
.prods>*{min-width:0}
@media(min-width:760px){.prods{grid-template-columns:repeat(2,1fr);align-items:start}}
@media(min-width:1100px){.prods{grid-template-columns:repeat(4,1fr);gap:24px}}
.card{text-decoration:none;display:block;color:inherit}
.card .shape{aspect-ratio:4/3;overflow:hidden;background:var(--wash-aqua);box-shadow:0 14px 34px rgba(22,50,63,.12);max-width:100%}
.card .shape img,.card .shape svg{width:100%;height:100%;object-fit:cover;display:block}
.card .shape img.contain{object-fit:contain;background:var(--white);padding:14px}
.s-arch{border-radius:999px 999px 26px 26px}
.s-round{border-radius:26px}
.s-blob{border-radius:46% 54% 40% 60% / 52% 44% 56% 48%}
.card h3{font-size:24px;margin-top:18px}
.card .line{color:var(--body);margin-top:4px}
.price{display:inline-block;margin-top:10px;font-weight:700;color:var(--deep);background:var(--wash-aqua);border-radius:999px;padding:6px 12px;font-size:15px}
.card h3::after{content:"\2192";display:inline-block;margin-left:10px;color:var(--teal);transition:transform .2s}
.card:hover h3{color:var(--teal)}
.card:hover h3::after,.card:focus-visible h3::after{transform:translateX(4px)}
@media(prefers-reduced-motion:reduce){.card h3::after{transition:none}}

/* photo pairs */
.pair{display:grid;grid-template-columns:1.25fr 1fr;gap:14px;align-items:end}
.pair>*{min-width:0}
.pair .a{border-radius:28px;overflow:hidden;aspect-ratio:4/3.2;box-shadow:0 14px 34px color-mix(in srgb,var(--lav-ink) 16%,transparent)}
.pair .b{border-radius:999px 999px 24px 24px;overflow:hidden;aspect-ratio:3/4.2;border:5px solid var(--white);box-shadow:0 14px 34px color-mix(in srgb,var(--lav-ink) 16%,transparent)}
.pair img,.duo img{width:100%;height:100%;object-fit:cover}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.duo>div{border-radius:26px;overflow:hidden;aspect-ratio:1}
.duo>div:last-child{border-radius:50%;border:5px solid rgba(255,255,255,.9)}
.ticks{list-style:none;margin:18px 0 24px;padding:0;display:grid;gap:10px}
.ticks li{display:flex;gap:10px;align-items:flex-start}
.ticks li::before{content:"";flex:none;width:24px;height:24px;border-radius:50%;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center/13px no-repeat,linear-gradient(135deg,var(--deep),var(--btn-end))}

/* quotes */
.quotes{display:grid;gap:18px;margin-top:30px}
.quotes>*{min-width:0}
@media(min-width:900px){.quotes{grid-template-columns:repeat(3,1fr)}}
.q{background:var(--white);border:1px solid var(--line);border-radius:24px;padding:24px;position:relative;overflow:hidden}
.q::before{content:"";position:absolute;left:0;right:0;top:0;height:5px;background:var(--grad)}
.q .stars{color:var(--teal);letter-spacing:3px;font-size:15px}
.q p{font:800 20px/1.3 var(--display);letter-spacing:-.01em;margin:10px 0 14px}
.q small{color:var(--body);font-size:15px}

/* steps */
.steps{display:grid;gap:14px;margin-top:30px}
.steps>*{min-width:0}
@media(min-width:760px){.steps{grid-template-columns:repeat(3,1fr)}}
.step{background:var(--wash-aqua);border-radius:24px;padding:24px}
.step .n{font:800 40px/1 var(--display);color:var(--teal)}
.step h3{font-size:21px;margin:12px 0 6px}
.step p{color:var(--body)}
.note{margin-top:18px;color:var(--body);font-size:15px}

/* themes */
.themes{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:28px}
.themes>*{min-width:0}
@media(min-width:620px){.themes{grid-template-columns:repeat(3,1fr)}}
@media(min-width:960px){.themes{grid-template-columns:repeat(5,1fr)}}
.theme{background:var(--white);border:1px solid var(--line);border-radius:22px;overflow:hidden;text-align:center}
.theme img{width:100%;aspect-ratio:1;object-fit:cover}
.theme b{display:block;padding:10px 8px 12px;font:800 16px/1.2 var(--display)}

/* compare */
.compare{display:grid;gap:18px;margin-top:30px}
.compare>*{min-width:0}
@media(min-width:760px){.compare{grid-template-columns:1fr 1fr}}
.tier{background:var(--white);border:1px solid var(--line);border-radius:26px;padding:26px;position:relative}
.tier.plus{border:2px solid var(--teal)}
.tier .badge{position:absolute;top:-13px;left:24px;background:var(--grad);color:var(--white);font:700 12px/1 var(--text);letter-spacing:.12em;text-transform:uppercase;padding:8px 12px;border-radius:999px}
.tier h3{font-size:24px}
.tier .amt{font:800 40px/1 var(--display);color:var(--deep);margin:12px 0 2px}
.tier .amt small{font:400 16px var(--text);color:var(--soft)}

/* faq */
.faq{margin-top:26px;display:grid;gap:10px}
.faq details{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:0 20px}
.faq summary{cursor:pointer;list-style:none;padding:18px 28px 18px 0;font:800 18px/1.3 var(--display);position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:0;top:14px;font:800 24px/1 var(--display);color:var(--teal)}
.faq details[open] summary::after{content:"–"}
.faq details>div{padding:0 0 18px;color:var(--body);display:grid;gap:10px}

/* closing band + footer */
.closing{background:var(--grad);color:var(--white);text-align:center;padding-block:60px}
.closing h2{font-size:clamp(30px,4.6vw,48px);max-width:22ch;margin:0 auto 14px}
.closing p{color:var(--on-grad);margin-bottom:24px}
.site-foot{background:var(--night);color:var(--night-text);padding-block:40px 30px}
.site-foot .row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:20px;align-items:center}
.site-foot .brand{font:800 22px/1 var(--display);white-space:nowrap;color:var(--white)}
.site-foot .brand b{color:var(--night-accent)}
.site-foot nav{display:flex;flex-wrap:wrap;gap:18px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:14px}
.site-foot a{color:var(--night-text);text-decoration:none}
.site-foot a:hover{color:var(--white)}
.site-foot .fine{border-top:1px solid rgba(255,255,255,.18);margin-top:24px;padding-top:18px;font-size:14px;display:flex;flex-wrap:wrap;gap:6px 18px;justify-content:space-between}
.test-note{background:var(--warn-wash);color:var(--warn);font-size:14px;text-align:center;padding-block:8px}

/* ---------- forms (plan, puzzle, decal, custom) ---------- */
.form-page{background:var(--paper)}
.flow{display:grid;gap:28px;padding-block:28px 120px}
.flow>*{min-width:0}
@media(min-width:980px){.flow{grid-template-columns:minmax(0,1fr) 340px;align-items:start;padding-block:40px 80px}}
.progress{display:flex;gap:6px;margin-bottom:22px;flex-wrap:wrap}
.progress button{flex:1 1 0;min-width:0;min-height:28px;border:0;background:none;padding:4px 0;text-align:left;cursor:pointer;font:700 12.5px/1.25 var(--text);color:var(--soft);letter-spacing:.04em}
.progress button::before{content:"";display:block;height:6px;border-radius:99px;background:var(--line);margin-bottom:8px}
.progress button.done::before,.progress button.on::before{background:var(--grad)}
.progress button.on{color:var(--deep)}
.progress button[disabled]{cursor:default}
@media(max-width:560px){.progress button span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}
.panel{background:var(--white);border:1px solid var(--line);border-radius:26px;padding:24px}
@media(min-width:760px){.panel{padding:34px}}
.panel h2{font-size:clamp(26px,4vw,36px)}
.panel>.intro{color:var(--body);margin-top:8px}
.fields{display:grid;gap:18px;margin-top:24px}
.fields>*{min-width:0}
.row2{display:grid;gap:18px}
.row2>*{min-width:0}
@media(min-width:620px){.row2{grid-template-columns:1fr 1fr}}
.field label,.field .label{display:block;font-weight:700;margin-bottom:6px}
.field .hint{display:block;font-weight:400;color:var(--soft);font-size:15px;margin-top:2px}
input[type=text],input[type=email],input[type=tel],input[type=date],input[type=number],textarea,select{width:100%;font:400 17px/1.4 var(--text);color:var(--ink);background:var(--white);border:1.5px solid var(--line2);border-radius:14px;padding:13px 14px;min-height:50px}
textarea{min-height:110px;resize:vertical}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 4px color-mix(in srgb,var(--aqua) 28%,transparent)}
.err{color:#A1260F;font-weight:700;font-size:15px;margin-top:6px}
.callout{border-radius:16px;padding:14px 16px;background:var(--wash-aqua);color:var(--ink)}
.callout.warn{background:var(--warn-wash);color:var(--warn)}
.callout.ok{background:var(--ok-wash);color:var(--ok)}
.callout.lav{background:var(--wash-lav)}
.callout b{font-weight:700}

.choices{display:grid;gap:12px;grid-template-columns:repeat(2,1fr)}
.choices>*{min-width:0}
@media(min-width:620px){.choices.c3{grid-template-columns:repeat(3,1fr)}.choices.c4{grid-template-columns:repeat(4,1fr)}}
.choices.c1,.choices.c2w{grid-template-columns:1fr}
@media(min-width:620px){.choices.c2w{grid-template-columns:1fr 1fr}}
.choice{position:relative;display:block;cursor:pointer}
.choice input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.choice .box{display:block;height:100%;background:var(--white);border:1.5px solid var(--line2);border-radius:18px;padding:14px;transition:border-color .15s,box-shadow .15s}
.choice input:checked+.box{border:2.5px solid var(--teal);box-shadow:0 0 0 4px color-mix(in srgb,var(--aqua) 25%,transparent);padding:13px}
.choice input:focus-visible+.box{outline:3px solid var(--lav-ink);outline-offset:2px}
.choice .box b{display:block;font:800 17px/1.25 var(--display)}
.choice .box small{display:block;color:var(--soft);font-size:14.5px;margin-top:3px}
.choice .box .amt{font:800 22px/1 var(--display);color:var(--deep);margin-top:8px;display:block}
.choice.pic .box{padding:0;overflow:hidden;text-align:center}
.choice.pic input:checked+.box{padding:0}
.choice.pic img{width:100%;aspect-ratio:1;object-fit:cover}
.choice.pic b{padding:10px 6px 12px;font-size:15.5px}
.choice .tick{position:absolute;top:10px;right:10px;width:26px;height:26px;border-radius:50%;background:var(--teal);display:none;place-items:center;z-index:1;pointer-events:none}
.choice input:checked~.tick{display:grid}
.choice .else{display:grid;place-items:center;aspect-ratio:1;background:var(--grad);color:var(--white);font:800 40px/1 var(--display)}

.stepper{display:inline-flex;align-items:center;border:1.5px solid var(--line2);border-radius:999px;background:var(--white);overflow:hidden}
.stepper button{width:52px;height:52px;border:0;background:var(--wash-aqua);font:800 24px/1 var(--display);color:var(--deep);cursor:pointer}
.stepper input{width:76px;border:0;text-align:center;font:800 22px/1 var(--display);min-height:52px;border-radius:0;padding:0}
.stepper input:focus{box-shadow:none}
.stepper:focus-within{outline:3px solid var(--lav-ink);outline-offset:2px}

.treats{display:grid;gap:10px}
.treat{display:flex;align-items:center;gap:12px;background:var(--white);border:1.5px solid var(--line2);border-radius:16px;padding:12px 14px}
.treat.on{border-color:var(--teal);background:var(--wash-aqua)}
.treat .tx{flex:1;min-width:0}
.treat .tx b{display:block}
.treat .tx small{color:var(--soft);font-size:14px}
.mini{display:inline-flex;align-items:center;gap:6px}
.mini button{width:38px;height:38px;border-radius:50%;border:1.5px solid var(--line2);background:var(--white);font:800 20px/1 var(--display);color:var(--deep);cursor:pointer}
.mini button[disabled]{opacity:.35;cursor:not-allowed}
.mini span{min-width:22px;text-align:center;font:800 18px/1 var(--display)}

.names{display:grid;gap:8px;counter-reset:n}
.names>*{min-width:0}
@media(min-width:620px){.names{grid-template-columns:1fr 1fr}}
.name-row{display:flex;align-items:center;gap:8px;counter-increment:n}
.name-row::before{content:counter(n);flex:none;width:30px;height:30px;border-radius:50%;background:var(--wash-aqua);color:var(--deep);display:grid;place-items:center;font:800 14px/1 var(--display)}
.name-row input{min-height:46px;padding:10px 12px}

.nav-row{display:flex;gap:12px;justify-content:space-between;align-items:center;margin-top:28px;flex-wrap:wrap}

.summary{position:sticky;top:16px;background:var(--white);border:1px solid var(--line);border-radius:26px;overflow:hidden}
.summary .top{background:var(--grad);color:var(--white);padding:18px 22px}
.summary .top b{display:block;font:800 21px/1.2 var(--display)}
.summary dl{margin:0;padding:8px 22px}
.summary dl div{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}
.summary dt{color:var(--soft)}
.summary dd{margin:0;text-align:right;font-weight:700;min-width:0;overflow-wrap:anywhere}
.summary .tot{padding:16px 22px 20px;display:grid;gap:6px}
.summary .tot div{display:flex;justify-content:space-between}
.summary .tot .big{font:800 26px/1 var(--display);color:var(--deep)}
@media(max-width:979px){.summary{display:none}}
.mobile-total{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--white);border-top:1px solid var(--line);box-shadow:0 -10px 30px rgba(22,50,63,.1);padding:12px max(16px,env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));display:flex;align-items:center;justify-content:space-between;gap:12px}
.mobile-total b{font:800 22px/1 var(--display);color:var(--deep)}
.mobile-total small{display:block;color:var(--soft);font-size:13.5px}
@media(min-width:980px){.mobile-total{display:none!important}}

.review{display:grid;gap:0;border:1px solid var(--line);border-radius:18px;overflow:hidden;margin-top:18px}
.review div{display:flex;justify-content:space-between;gap:14px;padding:12px 16px;border-bottom:1px solid var(--line)}
.review div:last-child{border-bottom:0}
.review span:first-child{color:var(--soft)}
.review span:last-child{text-align:right;font-weight:700;min-width:0;overflow-wrap:anywhere}

/* cart (puzzles, decals) */
.cart{display:grid;gap:10px;margin-top:16px}
.cart-item{display:flex;gap:12px;align-items:center;background:var(--white);border:1px solid var(--line);border-radius:16px;padding:12px}
.cart-item .tx{flex:1;min-width:0}
.cart-item .tx b{display:block}
.cart-item .tx small{color:var(--soft)}
.cart-item .thumb{width:56px;height:56px;border-radius:12px;object-fit:cover;flex:none;background:var(--wash-aqua)}

/* done screen + party page */
.done-hero{background:var(--grad);color:var(--white);border-radius:28px;padding:30px;text-align:left}
.done-hero h2{font-size:clamp(28px,4.5vw,42px)}
.copy-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.copy-row code{font:700 16px/1.3 var(--text);background:var(--wash-aqua);border-radius:10px;padding:8px 12px;overflow-wrap:anywhere}
.tracker{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:6px}
.tracker div{text-align:center;font:700 12.5px/1.25 var(--text);color:var(--soft)}
.tracker div::before{content:"";display:block;height:8px;border-radius:99px;background:var(--line);margin-bottom:8px}
.tracker div.done::before{background:var(--grad)}
.tracker div.now{color:var(--deep)}
.tracker div.now::before{background:var(--grad);box-shadow:0 0 0 3px color-mix(in srgb,var(--aqua) 35%,transparent)}
.todo{display:grid;gap:12px}
.todo-item{display:flex;gap:14px;align-items:flex-start;background:var(--white);border:1px solid var(--line);border-radius:20px;padding:18px}
.todo-item .dot{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--wash-aqua);color:var(--deep);font:800 15px/1 var(--display)}
.todo-item.done .dot{background:var(--ok);color:var(--white)}
.todo-item .tx{flex:1;min-width:0;display:grid;gap:6px}
.todo-item .tx b{font:800 18px/1.25 var(--display)}
.design-img{border-radius:18px;border:1px solid var(--line);width:100%;max-height:640px;object-fit:contain;background:var(--white)}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--night);color:var(--white);padding:12px 18px;border-radius:999px;font-weight:700;z-index:50;box-shadow:0 10px 30px rgba(0,0,0,.2);max-width:calc(100% - 32px);text-align:center}

/* puzzle + decal preview */
.preview-stage{background:var(--wash-aqua);border-radius:22px;padding:18px;display:grid;place-items:center;min-height:260px}
.puzzle-preview{width:min(100%,320px);aspect-ratio:1;position:relative}
.puzzle-preview .ph{position:absolute;inset:0;background:var(--grad);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}
.puzzle-preview .ph img{width:100%;height:100%;object-fit:cover}
.decal-stage{border-radius:22px;min-height:220px;display:grid;place-items:center;padding:24px;background:linear-gradient(160deg,#DDEFF3,var(--wash-lav))}
.decal-stage.dark{background:linear-gradient(160deg,#2B3E48,#1B2B33)}
.decal-text{font-size:clamp(34px,7vw,64px);line-height:1.15;text-align:center;overflow-wrap:anywhere;max-width:100%}
.swatches{display:flex;flex-wrap:wrap;gap:10px}
.swatch{position:relative}
.swatch input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.swatch span{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line2);border-radius:999px;padding:6px 12px 6px 6px;background:var(--white);font-weight:700;font-size:15px;cursor:pointer}
.swatch span i{width:26px;height:26px;border-radius:50%;border:1px solid rgba(0,0,0,.15);display:block}
.swatch input:checked+span{border:2.5px solid var(--teal);padding:5px 11px 5px 5px}
.swatch input:focus-visible+span{outline:3px solid var(--lav-ink);outline-offset:2px}

@font-face{font-family:"Blossom Script";src:url("/fonts/blossom-script.woff2") format("woff2");font-display:swap}
@font-face{font-family:"Handmade";src:url("/fonts/handmade.woff2") format("woff2");font-display:swap}
@font-face{font-family:"Playful Journey";src:url("/fonts/playful-journey.woff2") format("woff2");font-display:swap}
@font-face{font-family:"PG Inkspire";src:url("/fonts/pg-inkspire.woff2") format("woff2");font-display:swap}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
.flow.single{grid-template-columns:minmax(0,1fr)!important;padding-bottom:0}
.choices.styles{max-width:440px}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
input[type=number]{-moz-appearance:textfield;appearance:textfield}
details.more{border:1.5px solid var(--line2);border-radius:16px;padding:14px 16px;background:var(--white)}
details.more summary{cursor:pointer;font-weight:700;list-style:none}
details.more summary::-webkit-details-marker{display:none}
details.more summary::before{content:"+";display:inline-block;width:20px;color:var(--teal);font:800 20px/1 var(--display)}
details.more[open] summary::before{content:"–"}
details.more summary .hint{font-weight:400;color:var(--soft);margin-left:6px}
.cart-link{position:relative;width:44px;height:44px;border-radius:12px;border:1.5px solid var(--line);display:grid;place-items:center;background:var(--white)}
.cart-count{position:absolute;top:-7px;right:-7px;min-width:22px;height:22px;border-radius:99px;background:var(--lav-ink);color:var(--white);font:800 12px/22px var(--display);text-align:center;padding:0 6px}
.cart-count[hidden]{display:none}
.social{display:flex;flex-wrap:wrap;gap:16px}
a.soc{display:inline-flex;align-items:center;gap:8px;text-decoration:none;font-weight:700}
.contact-card{display:grid;gap:12px;background:var(--white);border:1px solid var(--line);border-radius:22px;padding:22px}
.contact-card a.soc{color:var(--deep)}
.cart-bar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;background:var(--wash-aqua);border-radius:18px;padding:14px 16px;margin-top:18px}
.cart-bar span{font-weight:700}
.cart-item{flex-wrap:wrap}
.cart-item .tx{flex:1 1 160px}
.cart-item .tx small{display:block}
.addon{border-top:1px solid var(--line);padding-top:22px;margin-top:6px}

.test-note{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:center;padding-inline:16px}
.burger,.cart-link{color:var(--deep)}
.puzzle-preview .ph.framed{touch-action:none;cursor:grab;overflow:hidden}
.puzzle-preview .ph.framed.dragging{cursor:grabbing}
.puzzle-preview .ph.framed img{position:absolute;max-width:none;object-fit:fill;user-select:none;-webkit-user-drag:none;pointer-events:none}
.frame-controls{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:center;margin-top:10px;font-size:15px;color:var(--soft)}
.frame-controls label{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--ink)}
.frame-controls input[type=range]{width:130px;accent-color:var(--teal)}
.frame-status{flex-basis:100%;text-align:center;font-weight:700;color:var(--deep)}
.frame-status:empty{display:none}
/* Photo quality note under a puzzle or sticker preview (photoq.js): advice only */
.photo-q{width:min(100%,400px);margin:12px auto 0;border-radius:16px;padding:12px 14px;font-size:15px;line-height:1.45;color:var(--ink);background:var(--white);text-align:left}
.photo-q[hidden]{display:none}
.photo-q p+p{margin-top:6px}
.photo-q.pq-good .pq-line{color:var(--ok);font-weight:700}
.photo-q.pq-good,.photo-q.pq-used,.photo-q.pq-plain{padding:9px 14px}
.photo-q.pq-low{background:var(--warn-wash);color:var(--warn)}
.photo-q .pq-head{font-weight:700}
.photo-q .pq-act{margin-top:10px}
.photo-q .pq-dark{color:var(--body)}
.photo-q.pq-low .pq-dark{color:var(--warn);border-top:1px solid color-mix(in srgb,var(--warn) 20%,transparent);padding-top:6px}
.photo-q .pq-line+.pq-dark{margin-top:4px}
.btn.ghost-dark{background:var(--white);color:var(--deep);border:2px solid var(--deep);box-shadow:none}
.ph.framed.locked{cursor:default;outline:3px solid var(--deep);outline-offset:3px}

.puzzle-circle svg{width:100%;height:100%;display:block}

/* Our story: the first boxes are one long row, so the big frame is wide */
.collage.wide .arch{width:92%;aspect-ratio:4/3;border-radius:220px 220px 28px 28px}
.collage.wide .circle{top:auto;bottom:-6%;right:-2%;width:38%}

/* Sticker Shop: sheet preview */
.sticker-sheet{width:min(100%,340px);background:var(--white);border-radius:14px;box-shadow:0 10px 26px rgba(10,40,55,.16);padding:7%;display:grid;gap:5%;align-content:center}
.stk-slot{aspect-ratio:1;display:grid;place-items:center;border-radius:50%;background:var(--wash-aqua);border:2px dashed var(--line2);overflow:hidden;min-width:0}
.stk-slot span{font:700 13px/1.2 var(--text);color:var(--body);text-align:center;padding:4px}
.stk-slot img{width:100%;height:100%;object-fit:cover}
.sticker-sheet .stk-slot:has(img){border:4px solid var(--white);box-shadow:0 2px 7px rgba(10,40,55,.28)}
.shape-square .stk-slot{border-radius:18%}
.shape-cut .stk-slot{border-radius:22%}
.shape-cut .stk-slot:has(img){background:none;border:0;box-shadow:none;overflow:visible}
.shape-cut .stk-slot img{object-fit:contain;filter:drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff) drop-shadow(0 2px 0 #fff) drop-shadow(0 -2px 0 #fff) drop-shadow(0 2px 4px rgba(10,40,55,.3))}
.st-total{display:flex;justify-content:space-between;align-items:baseline;font:800 20px/1 var(--display);color:var(--deep);border-top:1px solid var(--line);padding-top:14px}
.sticker-sheet.big{padding:8%}
.sticker-sheet.big .stk-slot{aspect-ratio:auto;height:100%}
.sticker-sheet.big.shape-circle .stk-slot{aspect-ratio:1;height:auto}
/* Holographic finish: a rainbow shimmer over each sticker in the preview */
.sticker-sheet.holo .stk-slot{position:relative}
.sticker-sheet.holo .stk-slot:has(img)::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(115deg,rgba(255,120,200,.38),rgba(120,220,255,.38) 30%,rgba(255,255,255,.1) 45%,rgba(160,255,190,.38) 62%,rgba(255,230,120,.32) 80%,rgba(190,140,255,.38));mix-blend-mode:screen}
.shape-cut.holo .stk-slot:has(img)::after{display:none}
.shape-cut.holo .stk-slot img{filter:drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff) drop-shadow(0 2px 0 #fff) drop-shadow(0 -2px 0 #fff) drop-shadow(0 2px 4px rgba(10,40,55,.3)) saturate(1.3) hue-rotate(-12deg)}
.rights-note{margin-top:10px;font-size:14px;line-height:1.45;color:var(--soft)}
.collage.solo .arch{left:18%}
.shape-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:30px}
@media(min-width:760px){.shape-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}
.shape-card{margin:0;background:var(--white);border:1px solid var(--line);border-radius:26px;padding:18px 16px 16px;text-align:center}
.shape-art{aspect-ratio:1;display:flex;align-items:center;justify-content:center}
.shape-art img{max-width:100%;max-height:100%;width:auto;height:auto}
.shape-card figcaption{margin-top:12px;display:flex;flex-direction:column;gap:2px}
.shape-card figcaption b{font:700 17px/1.2 var(--display);color:var(--deep)}
.shape-card figcaption span{font-size:14px;color:var(--soft)}
@media(max-width:759px){.shape-card:last-child:nth-child(odd){grid-column:span 2;justify-self:center;width:calc(50% - 8px)}}
@media(min-width:760px){.todo.steps4{grid-template-columns:1fr 1fr}}
@media(min-width:1100px){.todo.steps4{grid-template-columns:repeat(4,minmax(0,1fr))}}
.todo.steps4 .todo-item{flex-direction:column}
.todo.steps4 .tx{flex:none;align-content:start}
.hero-words{gap:6px;padding:36px 24px;background:var(--white);box-shadow:0 18px 40px rgba(10,40,60,.25)}
.hero-words .decal-text{font-size:clamp(34px,5vw,58px)}
.card .shape.card-words{background:var(--white);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:12px}
.card-words .decal-text{font-size:clamp(26px,3vw,34px);line-height:1.1}
.hero-photo img{display:block;width:100%;height:auto;border-radius:24px;box-shadow:0 18px 40px rgba(10,40,60,.25)}
.soon-wrap{display:flex;justify-content:center;align-items:center}
@media(max-width:899px){.soon-wrap{display:none}}
.card .shape.card-words{container-type:inline-size}
.card-words .decal-text{font-size:clamp(22px,11cqw,64px)}
.soon-pill{display:inline-flex;align-items:center;gap:16px;background:var(--white);color:var(--deep);font:800 clamp(26px,3.4vw,40px)/1 var(--display);padding:16px 34px 16px 16px;border-radius:999px;box-shadow:0 22px 50px rgba(4,41,59,.35),0 0 0 8px rgba(255,255,255,.18);transform:rotate(-4deg);animation:soonFloat 4s ease-in-out infinite}
.soon-ico{display:grid;place-items:center;width:clamp(52px,5vw,68px);aspect-ratio:1;border-radius:50%;background:var(--grad);flex:none}
.soon-ico svg{width:62%;height:62%;transform:rotate(-14deg)}
@keyframes soonFloat{0%,100%{transform:rotate(-4deg) translateY(0)}50%{transform:rotate(-2deg) translateY(-10px)}}
@media(prefers-reduced-motion:reduce){.soon-pill{animation:none}}
.scatter{position:relative;aspect-ratio:1/1.02;border-radius:32px;background:radial-gradient(circle at 20% 15%,#fff 0,transparent 45%),radial-gradient(circle at 85% 85%,color-mix(in srgb,var(--wash-lav) 90%,#fff),transparent 55%),linear-gradient(150deg,#F7FDFE 0%,var(--wash-aqua) 50%,var(--wash-lav) 100%);box-shadow:0 22px 50px rgba(4,41,59,.28);overflow:visible}
.scatter .spark{position:absolute;height:auto;fill:#fff;filter:drop-shadow(0 0 6px rgba(255,255,255,1)) drop-shadow(0 0 3px rgba(80,170,200,.8))}
.scatter .spark:nth-of-type(3n){fill:#F2D98B}.scatter .spark:nth-of-type(3n+1){fill:#C9B8EC}
.scatter .sc{position:absolute;height:auto;filter:drop-shadow(0 14px 18px rgba(4,41,59,.25))}
.sc-jack{width:74%;right:-3%;top:-4%;transform:rotate(3deg);z-index:1}
.sc-purses{width:64%;right:-2%;bottom:3%;transform:rotate(2deg)}
.sc-stickers{width:66%;left:-5%;top:37%;transform:rotate(-5deg)}
.scatter .sticker{left:-4%;right:auto;top:-4%;bottom:auto;z-index:2}
.collage.only-circle .circle{left:50%;right:auto;top:50%;width:min(86%,440px);transform:translate(-50%,-50%)}
.collage.only-circle .sticker{right:4%;bottom:2%}
.collage .focus-left img{object-position:24% 50%}
/* How ordering works: steps light up one after another */
.steps-anim{position:relative}
.steps-anim .todo-item{transition:transform .5s ease,box-shadow .5s ease,border-color .5s ease,opacity .6s ease}
.steps-anim .dot{transition:background .5s ease,color .5s ease,transform .5s ease}
.steps-anim.pre .todo-item{opacity:0;transform:translateY(18px)}
.steps-anim .todo-item.on{transform:translateY(-6px);border-color:var(--aqua);box-shadow:0 18px 36px rgba(4,63,89,.16)}
.steps-anim .todo-item.on .dot{background:var(--grad);color:var(--white);transform:scale(1.18)}
.steps-anim .todo-item.done .dot{background:var(--teal);color:var(--white)}
.steps-bar{height:6px;border-radius:99px;background:var(--wash-aqua);margin-bottom:16px;overflow:hidden}
.steps-bar i{display:block;height:100%;width:0;border-radius:99px;background:var(--grad);transition:width .7s ease}
@media(prefers-reduced-motion:reduce){.steps-anim .todo-item,.steps-anim .dot,.steps-bar i{transition:none}}
.soon-pill{white-space:nowrap;font-size:clamp(22px,2.6vw,34px)}
/* decals: words swap */
.hero-words{overflow:hidden}
.hero-words .decal-text{transition:opacity .45s ease,transform .45s cubic-bezier(.2,.8,.3,1)}
.hero-words .decal-text.out{opacity:0;transform:translateX(110%)}
.hero-words .decal-text.in{opacity:0;transform:translateX(-110%);transition:none}
/* puzzles: shapes drop in */
.shape-grid.wait .shape-art img{opacity:0;transform:translateY(-60px) rotate(-14deg)}
.shape-grid.go .shape-art img{animation:pzDrop .8s cubic-bezier(.3,1.5,.5,1) both}
.shape-grid.go .shape-card:nth-child(2) img{animation-delay:.15s}.shape-grid.go .shape-card:nth-child(3) img{animation-delay:.3s}.shape-grid.go .shape-card:nth-child(4) img{animation-delay:.45s}.shape-grid.go .shape-card:nth-child(5) img{animation-delay:.6s}
@keyframes pzDrop{0%{opacity:0;transform:translateY(-60px) rotate(-14deg)}60%{opacity:1;transform:translateY(6px) rotate(3deg)}100%{opacity:1;transform:none}}
/* stickers: pop onto the sheet */
.sticker-sheet.pop .stk-slot img{animation:stkPop .5s cubic-bezier(.3,1.6,.5,1) both}
@keyframes stkPop{0%{opacity:0;transform:scale(.3) rotate(-12deg)}100%{opacity:1;transform:none}}
/* confetti */
.confetti{position:fixed;inset:0;pointer-events:none;z-index:9999;overflow:hidden}
.confetti i{position:absolute;top:-14px;width:9px;height:14px;border-radius:2px;animation:cdFall linear both}
@keyframes cdFall{0%{transform:translate(0,0) rotate(0);opacity:1}100%{transform:translate(var(--x),105vh) rotate(var(--r));opacity:.9}}
/* decals hero: one word at a time, slimmer card */
.hero-words{min-height:0;padding:30px 24px;max-width:460px;justify-self:center;width:100%}
.hero-words{container-type:inline-size}.hero-words .decal-text{font-size:clamp(28px,9.5cqw,64px);white-space:nowrap}
/* home: words and steps bounce in each time they come into view */
.bounce-words span{display:inline-block}
[data-replay].ready.bounce-words span{opacity:0;transform:translateY(-70px) scale(.6)}
[data-replay].go.bounce-words span{animation:wordDrop .9s cubic-bezier(.28,1.7,.5,1) both}
[data-replay].go.bounce-words span:nth-child(2){animation-delay:.22s}[data-replay].go.bounce-words span:nth-child(3){animation-delay:.44s}
@keyframes wordDrop{0%{opacity:0;transform:translateY(-70px) scale(.6) rotate(-8deg)}55%{opacity:1;transform:translateY(8px) scale(1.06) rotate(2deg)}100%{opacity:1;transform:none}}
/* home steps: a trail draws across and each number rolls up as it arrives */
.trail-steps{position:relative}
.trail-steps .n{display:block;overflow:hidden;height:1em}
.trail-steps .n span{display:block}
[data-replay].ready.trail-steps .n span{transform:translateY(110%)}
/* The step cards stay fully readable; only their numbers slide in. */
[data-replay].go.trail-steps .n span{transform:none;transition:transform .55s cubic-bezier(.2,.9,.3,1.2)}
[data-replay].go.trail-steps .step:nth-child(1) .n span{transition-delay:.1s}[data-replay].go.trail-steps .step:nth-child(2) .n span{transition-delay:.55s}[data-replay].go.trail-steps .step:nth-child(3) .n span{transition-delay:1s}
@media(min-width:760px){
  .trail-steps::before{content:"";position:absolute;left:24px;right:24px;top:-14px;height:4px;border-radius:4px;background:var(--grad);transform-origin:left;transform:scaleX(1)}
  [data-replay].ready.trail-steps::before{transform:scaleX(0)}
  [data-replay].go.trail-steps::before{transform:scaleX(1);transition:transform 1.3s ease-in-out}
}
/* party boxes: theme picker */
.theme-picker{display:grid;gap:22px;margin-top:28px;align-items:center}
@media(min-width:860px){.theme-picker{grid-template-columns:1fr minmax(0,400px);gap:40px}}
.tp-pills{display:flex;flex-wrap:wrap;gap:10px}
.tp-pill{border:1.5px solid var(--line);background:var(--white);color:var(--deep);font:700 16px/1 var(--display);padding:13px 18px;border-radius:999px;cursor:pointer;transition:background .2s,color .2s,transform .2s,border-color .2s}
.tp-pill:hover{border-color:var(--aqua);transform:translateY(-2px)}
.tp-pill[aria-pressed="true"]{background:var(--grad);color:var(--white);border-color:transparent;box-shadow:0 10px 22px rgba(4,63,89,.2)}
.tp-stage{margin:0;border-radius:28px;overflow:hidden;background:#FFFFFF;padding:28px;box-sizing:border-box;box-shadow:0 22px 50px rgba(4,41,59,.2);width:100%;max-width:400px;justify-self:center;aspect-ratio:4/5}
.tp-stage img{display:block;width:100%;height:100%;object-fit:contain;transition:opacity .3s ease,transform .3s ease}
.tp-stage img.fade{opacity:0;transform:scale(.97)}
.tp-stage.photo{padding:0}.tp-stage.photo img{object-fit:cover}
/* planner: theme pills (radios) with the box picture */
.tp-radio{position:relative;display:inline-flex}
.tp-radio input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.tp-radio input:checked+.tp-pill{background:var(--grad);color:var(--white);border-color:transparent;box-shadow:0 10px 22px rgba(4,63,89,.2)}
.tp-radio input:focus-visible+.tp-pill{outline:3px solid var(--lav-ink);outline-offset:2px}
.plan-tp{margin-top:0}
@media(min-width:860px){.plan-tp{grid-template-columns:1fr minmax(0,280px);gap:28px}}
.plan-tp .tp-stage{max-width:280px;display:grid;place-items:center;padding:22px}
.plan-tp .tp-stage.photo{padding:0}
.tp-stage .tp-hint{color:var(--soft);font-weight:700;text-align:center;padding:0 12px}
.tp-stage .tp-else{display:grid;place-items:center;gap:6px;color:var(--deep);text-align:center}
.tp-stage .tp-else[hidden],.tp-stage .tp-hint[hidden],.tp-stage img[hidden]{display:none}
.tp-stage .tp-else span{display:grid;place-items:center;width:84px;height:84px;border-radius:50%;background:var(--grad);color:var(--white);font:800 44px/1 var(--display)}
.tp-stage .tp-else b{font:800 20px/1.2 var(--display)}
/* stickers: move and zoom each picture */
.sticker-sheet .stk-slot img{touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}
.sticker-sheet.shape-cut .stk-slot img{cursor:default}
.sticker-sheet .stk-slot.stk-sel{outline:3px solid var(--teal);outline-offset:2px}
.stk-adjust{display:grid;gap:8px;margin-top:12px;width:min(100%,340px)}
.stk-adjust[hidden],.stk-zoom[hidden]{display:none}
.stk-tip{margin:0;font-size:14px;color:var(--soft);text-align:center}
.stk-zoom{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--deep)}
.stk-zoom input{flex:1;accent-color:var(--teal)}
.plan-tp .tp-pill{font-size:15px;padding:11px 15px}

/* Privacy page */
.prose h2{font-size:clamp(22px,3.4vw,28px);margin:34px 0 10px}
.prose h2:first-child{margin-top:0}
.prose p{color:var(--body);max-width:64ch;margin-bottom:12px}
/* An error under a grid of choices spans the whole row instead of sitting in a tile's slot. */
.choices>.err.inline,.tp-pills>.err.inline,.treats>.err.inline{grid-column:1/-1;flex-basis:100%;width:100%}
/* Footer links: big enough to tap on a phone. */
.site-foot nav{gap:4px 18px}
.site-foot nav a,.site-foot .fine a{display:inline-block;padding-block:11px}
.terms{font-size:14px;color:var(--soft);margin-top:10px}
.consent{display:flex;gap:12px;align-items:flex-start;cursor:pointer;font-size:15px;line-height:1.4;color:var(--body);padding:12px 14px;border:1.5px solid var(--line2);border-radius:14px;background:var(--white)}
.consent input{flex:none;width:22px;height:22px;margin:1px 0 0;accent-color:var(--teal);cursor:pointer}
.consent input:focus-visible{outline:3px solid var(--lav-ink);outline-offset:2px}
.panel h1.h2{font-size:clamp(26px,4vw,36px)}

/* Photo pickers: the browser's grey "Choose File" control is hidden (but
   still focusable and labelled), and a full-width button opens it. */
.file-pick{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.field label.pick-btn,label.pick-btn{display:flex;align-items:center;width:50%;min-width:min(100%,210px);justify-content:center;gap:10px;margin-top:10px;cursor:pointer}
.pick-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.file-pick:focus-visible+.pick-btn,.file-pick:focus-visible+label.btn{outline:3px solid var(--lav-ink);outline-offset:3px}
.pick-btn.chosen{background:var(--white);color:var(--deep);border:2px solid var(--teal);box-shadow:none}
@media (max-width:380px){.logo{gap:7px}.logo img{width:36px;height:36px}.logo span{font-size:16px}.logo small{font-size:10px;letter-spacing:.1em}}
/* The thank-you card on the party page, after the party. Same art, fonts and
   colours as the printed card (Studio: marketing/thank-you-card.html). */
@font-face{font-family:"Fredoka";src:url("/fonts/fredoka-bold.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Caveat";src:url("/fonts/caveat-bold.woff2") format("woff2");font-weight:700;font-display:swap}
.ty-card{margin-top:22px;border-radius:24px;overflow:hidden;box-shadow:0 14px 34px rgba(7,63,89,.18);background:#fff}
.ty-front{position:relative;background:linear-gradient(172deg,#2B4A60 0%,#4A7F95 55%,#8CCBD4 100%);padding:34px 20px 30px;text-align:center;overflow:hidden}
.ty-art{position:absolute;display:block;filter:drop-shadow(0 4px 6px rgba(0,0,0,.18))}
.ty-art svg{display:block;width:100%;height:auto}
.ty-puzzles{width:118px;right:4px;top:10px;transform:rotate(8deg)}
.ty-box{width:82px;left:6px;top:172px;transform:rotate(-8deg)}
.ty-thank{margin:56px 0 0;font:700 clamp(64px,19vw,88px)/.92 "Fredoka","Plus Jakarta Sans",sans-serif;letter-spacing:0;color:#fff;position:relative}
.ty-row{display:flex;justify-content:center;gap:2px}
.ty-row span{display:inline-block;text-shadow:0 5px 0 #1F3A4D}
.ty-row .sp{width:12px}
.ty-you{color:#8FD3DF;margin-top:4px}
.ty-note{position:relative;background:#FAF3E3;color:#2B4552;border-radius:12px;padding:20px 18px 16px;margin:30px auto 4px;max-width:330px;transform:rotate(-2deg);box-shadow:0 8px 18px rgba(0,0,0,.16)}
.ty-tape{position:absolute;top:-10px;left:50%;width:84px;height:20px;margin-left:-42px;background:rgba(207,233,238,.92);transform:rotate(3deg)}
.ty-script{font:700 30px/1.05 "Caveat",cursive;color:#2B4A60}
.ty-note p{margin:8px 0 0;font-size:16px;line-height:1.5;color:#2B4552}
.ty-sig{font:700 26px/1 "Caveat",cursive;color:#2B4A60;text-align:right;margin-top:10px}
.ty-back{position:relative;padding:26px 20px 22px;overflow:hidden}
.ty-sheet{width:72px;right:14px;top:16px;transform:rotate(10deg)}
.ty-show{display:flex;gap:1px;font:700 44px/1 "Fredoka","Plus Jakarta Sans",sans-serif;color:#1F4A60}
.ty-show span{display:inline-block;text-shadow:0 3px 0 #8FD3DF}
.ty-show .sp{width:10px}
.ty-happy{font-size:28px;color:#2C7A90;margin:4px 0 0;transform:rotate(-2deg);transform-origin:left}
.ty-decal{display:inline-block;margin:10px 0 2px;padding:6px 14px;background:#EEF6F8;border:1.5px solid #D7E5E9;border-radius:6px;font:700 22px/1 "Caveat",cursive;color:#1F4A60;transform:rotate(-6deg);box-shadow:0 3px 8px rgba(0,0,0,.08)}
.ty-back>p{margin:10px 0 14px;font-size:16px;line-height:1.5;color:var(--body);max-width:420px}
.ty-socials{display:flex;flex-wrap:wrap;gap:10px}
.ty-pill{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:10px 18px;border-radius:999px;background:#1F4A60;color:#fff;font:800 15px var(--display);text-decoration:none}
.ty-pill svg{width:18px;height:18px}
.ty-pill:hover,.ty-pill:focus-visible{background:#2C7A90;color:#fff}
.ty-review{position:relative;margin:26px 0 6px;padding:22px 18px 18px;border-radius:18px;background:linear-gradient(118deg,#2B4A60,#4A7F95 60%,#8CCBD4);color:#fff;transform:rotate(1deg);box-shadow:0 10px 22px rgba(7,63,89,.18)}
.ty-stars{display:flex;gap:4px;color:#fff}
.ty-stars svg{width:20px;height:20px}
.ty-review h3{margin:8px 0 4px;font:700 28px/1.05 "Fredoka","Plus Jakarta Sans",sans-serif;color:#fff}
.ty-review p{margin:0 0 14px;font-size:15.5px;line-height:1.45;color:#EAF6F8}
.ty-review-btn{display:block;text-align:center;padding:14px 16px;border-radius:14px;background:#fff;color:#1F4A60;font:800 16px var(--display);text-decoration:none;transform:rotate(-1deg)}
.ty-review-btn:hover,.ty-review-btn:focus-visible{background:#E2F5F8;color:#1F4A60}
.ty-mark{text-align:center;margin-top:24px;font:800 20px/1 var(--display);color:#1F4A60;white-space:nowrap}
.ty-mark small{display:block;margin-top:6px;font:700 10px/1.3 var(--display);letter-spacing:.16em;color:#2C7A90;white-space:normal}
@media (prefers-reduced-motion:no-preference){.ty-card{animation:ty-in .6s ease-out both}@keyframes ty-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}}
/* Home page, craft style (built to reuse on product pages) */
:root{--k1:#FF7F6E;--k1w:#FFEBE7;--k2:#3CC7D6;--k2w:#E1F7FA;--k3:#7CCF8A;--k3w:#EAF7EC;--k4:#E3CFA3;--k4w:#FBF6EA;--k5:#7CCF8A;
--hero-grad:linear-gradient(135deg,#005A68 0%,#00778A 35%,#16A0B0 70%,#4FD1C5 100%);--wave-hi:#9BE3A8;
--band:#EAF7EC;--band-edge:#B8E6C0;--band2:#E6F8F5;--deepband:linear-gradient(225deg,#005A68 0%,#00778A 35%,#16A0B0 70%,#4FD1C5 100%);--deep-glow:#7CCF8A;--wave-under:#FFF9F3;
--accent:#FF7F6E;--accent-dark:#D85C4C;--accent-ink:#3A0F0A;--accent-light:#FFC9BF;--mark:#FF7F6E;--mark-light:#FFC9BF;--mark-text:#C44B3B;--close-grad:linear-gradient(135deg,#00778A,#16A0B0 60%,#7CCF8A)}
/* the reviews band takes Sea glass & coral's accents */
.sec.pinkwash{--k1:#FF8A7A;--k2:#E3CFA3;--k3:#FFB38A;--mark:#FF7A66}
.btn-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.btn.sunny{background:var(--accent);color:var(--accent-ink);box-shadow:0 6px 0 var(--accent-dark),0 12px 24px rgba(0,0,0,.18)}
.btn.sunny:hover,.btn.sunny:focus-visible{transform:translateY(-2px);box-shadow:0 8px 0 var(--accent-dark),0 14px 28px rgba(0,0,0,.2)}
.hero-btns{margin-top:24px}
.sec-head.center{text-align:center}
.sec-head.center p{margin-inline:auto}
.sub-big{font:800 clamp(19px,2.4vw,24px)/1.3 var(--display);color:var(--body);margin-top:6px}
/* hand-drawn bits */
.mark{position:relative;display:inline-block;font-style:italic;color:var(--mark-ink,var(--lav-ink))}
.mark .squiggle{position:absolute;left:0;right:0;bottom:-.18em;width:100%;height:.32em;fill:none;stroke:var(--mark);stroke-width:4;stroke-linecap:round}
.mark.light{color:var(--accent-light)}
.mark.light .squiggle{stroke:var(--mark-light)}
.hnote{font:700 clamp(20px,2.4vw,26px)/1.05 "Caveat",cursive;color:var(--white);transform:rotate(-6deg);display:inline-block}
.hnote.dark{color:var(--mark);font-size:26px;margin-bottom:4px}
.doodle-star{position:absolute;width:44px;height:44px;fill:var(--accent-light)}
.hand-arrow{width:90px;margin-top:120px;fill:none;stroke:var(--mark);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;transform:rotate(-4deg)}
.tape{position:absolute;z-index:2;top:-12px;left:50%;width:84px;height:24px;margin-left:-42px;background:rgba(255,255,255,.62);border-left:2px dashed rgba(255,255,255,.4);border-right:2px dashed rgba(255,255,255,.4);transform:rotate(-4deg);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.snap{position:relative;margin:0;background:var(--white);padding:10px 10px 12px;border-radius:6px;box-shadow:0 14px 30px rgba(7,40,60,.22)}
.snap img{display:block;width:100%;height:100%;object-fit:cover;border-radius:3px}
.snap figcaption{font:700 21px/1 "Caveat",cursive;color:var(--deep);text-align:center;padding-top:8px}
/* layered waves */
.waves{position:absolute;left:0;right:0;bottom:-1px;height:clamp(50px,7vw,110px);pointer-events:none;z-index:1}
.waves svg{display:block;width:100%;height:100%}
.waves.waves-top{top:-1px;bottom:auto;transform:scaleY(-1)}
.waves.flip svg{transform:scaleX(-1)}
.waves.into-night .w1,.waves.into-night .w2{fill:var(--band)}
/* hero */
.hero.craft{overflow:visible;padding-bottom:clamp(40px,6vw,90px);background:var(--hero-grad)}
.hero.craft h1 .pop{color:var(--wave-hi)}
.hero.craft .wrap{z-index:2}
.scrap{position:relative;min-height:440px}
.scrap .big{position:absolute;left:4%;top:0;width:56%;aspect-ratio:3/4;transform:rotate(-4deg)}
.scrap .mid{position:absolute;right:0;top:12%;width:46%;aspect-ratio:5/3.4;transform:rotate(5deg)}
.scrap .small{position:absolute;right:12%;bottom:0;width:32%;aspect-ratio:3/4;transform:rotate(-7deg)}
.scrap .hnote{position:absolute;left:0;bottom:-6px;color:var(--accent-light);font-size:clamp(22px,2.6vw,30px)}
.scrap .doodle-star{right:42%;top:-18px}
/* products */
.ways{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;margin-top:34px}
.way{display:flex;flex-direction:column;align-items:center;text-align:center;text-decoration:none;color:inherit;padding:22px 16px 20px;border-radius:32px 24px 36px 22px;background:var(--grain),var(--cw);transition:transform .25s}
.way:nth-child(even){border-radius:24px 36px 22px 32px}
.way:hover,.way:focus-visible{transform:translateY(-4px) rotate(-.6deg)}
.way-img{position:relative;width:100%;background:var(--white);padding:8px;border-radius:8px;box-shadow:0 10px 22px rgba(7,40,60,.14);transform:rotate(-2deg)}
.way:nth-child(even) .way-img{transform:rotate(2deg)}
.way-img img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:4px}
.way h3{font-size:22px;margin:18px 0 6px}
.way p{color:var(--body);margin:0 0 16px;max-width:26ch}
.way-btn{margin-top:auto;display:inline-flex;gap:8px;align-items:center;padding:11px 20px;border-radius:999px;background:var(--c);color:var(--night);font:800 15px var(--display);box-shadow:0 4px 0 color-mix(in srgb,var(--c) 70%,#000)}
/* steps */
.sec.sunwash{background:var(--grain),var(--band);position:relative;padding-top:clamp(80px,9vw,130px)}
.hflow{display:grid;grid-template-columns:1fr 90px 1fr 90px 1fr;align-items:start;gap:4px;margin-top:30px;text-align:center}
.flow-step h3{font-size:22px;margin:12px 0 4px}
.flow-step p{color:var(--body);margin:0 auto;max-width:30ch}
.sticker-n{display:inline-grid;place-items:center;width:58px;height:58px;border-radius:50%;background:var(--c);color:var(--night);font:800 26px var(--display);border:4px solid var(--white);box-shadow:0 6px 14px rgba(7,40,60,.16);transform:rotate(-8deg)}
.flow-art{margin-top:18px;aspect-ratio:1.05;display:grid;place-items:center;position:relative}
.flow-art.pick img{position:absolute;width:54%;aspect-ratio:1;object-fit:cover;border-radius:4px;border:8px solid var(--white);box-shadow:0 10px 22px rgba(7,40,60,.18)}
.flow-art.pick img:nth-child(1){left:2%;top:6%;transform:rotate(-8deg)}
.flow-art.pick img:nth-child(2){right:2%;top:0;transform:rotate(7deg)}
.flow-art.pick img:nth-child(3){left:24%;bottom:0;transform:rotate(-2deg)}
.flow-art .tilt{width:86%;aspect-ratio:1;transform:rotate(4deg)}
.phone{width:min(220px,72%);aspect-ratio:9/17;border-radius:30px;background:var(--ink);padding:8px;box-shadow:0 14px 30px rgba(7,63,89,.25);transform:rotate(-3deg)}
.phone-in{height:100%;border-radius:23px;background:var(--paper);overflow:hidden;display:flex;flex-direction:column;text-align:left}
.phone-in{position:relative}
.ph-shot{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 0;animation:phScroll 16s ease-in-out infinite}
@keyframes phScroll{0%,10%{object-position:50% 0}28%,40%{object-position:50% 46%}58%,88%{object-position:50% 100%}100%{object-position:50% 0}}
@media (prefers-reduced-motion:reduce){.ph-shot{animation:none;object-position:50% 100%}}
/* details */
.sec.details{background:var(--deepband);padding-block:clamp(110px,12vw,170px)}
.sec.details::before{display:none}
.details .det-art{position:relative;padding-bottom:70px}
.det-main{border-radius:46% 54% 42% 58%/52% 44% 56% 48%;background:radial-gradient(circle,color-mix(in srgb,var(--deep-glow) 45%,transparent),transparent 70%);padding:6%}
.det-main img{width:100%;height:auto;filter:drop-shadow(0 18px 28px rgba(0,0,0,.35))}
.snap.det-inset{position:absolute;right:2%;bottom:0;width:36%;aspect-ratio:1;transform:rotate(5deg)}
.details .hnote.light{position:absolute;left:2%;bottom:6px;color:var(--accent-light)}
.det-h{font-size:clamp(34px,5.4vw,56px);line-height:1.05;margin:0 0 24px;color:var(--white)}
.det-list{list-style:none;padding:0;margin:0 0 26px;display:grid;gap:18px}
.det-list li{display:flex;gap:16px;align-items:flex-start}
.det-list b{display:block;font:800 18px var(--display);color:var(--white);margin-bottom:3px}
.det-list span{color:var(--night-text)}
.det-list .dt-ic{flex:none;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--c);color:var(--night);font:800 20px var(--display);transform:rotate(-6deg)}
.det-pill{display:inline-block;padding:12px 22px;border-radius:999px;background:var(--pill-bg,var(--accent));color:var(--pill-ink,var(--accent-ink));font:800 15px var(--display);transform:rotate(-2deg)}
/* reviews, story, closing */
.sec.pinkwash{background:var(--grain),var(--band2);position:relative}
.pinkwash .q{transform:rotate(-1.2deg)}
.pinkwash .q:nth-child(2){transform:rotate(1deg) translateY(10px)}
.pinkwash .q::before{background:linear-gradient(90deg,var(--k1),var(--k3),var(--k2))}
.story-band{background:var(--paper)}
.story-snaps{position:relative;min-height:340px}
.story-snaps .a{position:absolute;left:0;top:0;width:58%;aspect-ratio:1;transform:rotate(-5deg)}
.story-snaps .b{position:absolute;right:2%;top:16%;width:50%;aspect-ratio:1;transform:rotate(6deg)}
.story-snaps .snap img{height:calc(100% - 30px)}
.text-link{display:inline-flex;gap:8px;margin-top:14px;font:800 17px var(--display);color:var(--mark-ink,var(--deep));text-decoration:underline;text-decoration-color:var(--mark);text-decoration-thickness:3px;text-underline-offset:6px}
.closing.craft{position:relative;padding-top:clamp(90px,10vw,140px);background:var(--close-grad)}
.closing.craft h2 em{font-style:italic;color:var(--accent-light)}
@media (max-width:980px){.ways{grid-template-columns:repeat(2,minmax(0,1fr))}.hflow{grid-template-columns:1fr}.hand-arrow{margin:0 auto;transform:rotate(80deg)}.flow-art{max-width:400px;margin-inline:auto;width:100%}.scrap{min-height:380px;margin-top:10px}}
@media (max-width:620px){.ways{gap:16px 12px}.way{padding:16px 10px}.way h3{font-size:18px}.way p{font-size:14.5px}.way-btn{padding:10px 14px;font-size:13.5px}.way-what{display:none}.scrap{min-height:330px}.story-snaps{min-height:280px}}
@media (prefers-reduced-motion:reduce){.way{transition:none}.way:hover{transform:none}}

/* ===== Craft look, site-wide (matches the home page) ===== */
:root{--grain:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .42  0 0 0 0 .32  0 0 0 0 .18  0 0 0 .13 0'/></filter><rect width='100%25' height='100%25' filter='url%28%23n%29'/></svg>");--grad:var(--hero-grad);--btn:var(--accent);--night:#00505C;--night-text:#D4ECEF;--night-accent:#9BE3A8}
body{font-size:18px}
/* each product page has its own colour */
.page-party-boxes,.page-plan{--pk:var(--k1);--pkw:var(--k1w)}
.page-puzzles{--pk:var(--k2);--pkw:var(--k2w)}
.page-stickers{--pk:var(--k3);--pkw:var(--k3w)}
.page-decals{--pk:var(--k4);--pkw:var(--k4w)}
/* heroes: the home page gradient, a green second line and layered waves */
.hero:not(.craft){background:var(--hero-grad);padding-bottom:clamp(44px,6vw,84px)}

.hero:not(.craft) h1 span{color:var(--wave-hi)}
/* buttons: coral with a little 3D edge */
.btn{background:var(--accent);color:var(--accent-ink);box-shadow:0 5px 0 var(--accent-dark),0 10px 20px rgba(7,40,60,.14);font-size:17px;transition:transform .15s,box-shadow .15s}
.btn:hover,.btn:focus-visible{filter:none;transform:translateY(-2px);box-shadow:0 7px 0 var(--accent-dark),0 12px 24px rgba(7,40,60,.16)}
.btn.small{font-size:16px}
.btn.white,.btn.line,.btn.ghost,.btn.ghost-dark{transform:none}
/* handwritten section labels and squiggle-underlined highlights */
/* eyebrow TEXT uses --mark-text (darker coral, >=4:1 on the light sections); dark sections keep the light coral below */
.eyebrow,.sec .eyebrow,.sec.lav .eyebrow,.sec.aqua .eyebrow{font:700 clamp(24px,2.6vw,28px)/1.05 "Caveat",cursive;letter-spacing:0;text-transform:none;color:var(--mark-text);transform:rotate(-3deg);transform-origin:left center;display:inline-block}
.sec.night .eyebrow{color:var(--accent-light)}
em.lav{color:var(--lav-ink);background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 18' preserveAspectRatio='none'><path d='M3 12c18-9 30-9 46 0s30 9 46 0 30-9 46 0 30 9 46 0 22-7 30-3' fill='none' stroke='%23FF7F6E' stroke-width='4' stroke-linecap='round'/></svg>") left bottom/100% .3em no-repeat;padding-bottom:.14em}
.sec.night em.lav,.closing em.lav,.hero em.lav{color:var(--wave-hi)}
/* coloured bands with wavy edges */
.sec.lav{background:var(--grain),url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 110' preserveAspectRatio='none'><path fill='%23B8E6C0' d='M0 0h1440v58c-160 26-360 30-560 4S520 20 300 42 60 70 0 64z'/><path fill='%23FBFCFD' d='M0 0h1440v34c-200 26-420 28-620 2S360-6 180 18 40 46 0 40z'/></svg>") top/100% clamp(36px,5vw,64px) no-repeat,url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 110' preserveAspectRatio='none'><g transform='translate%280 110%29 scale%281 -1%29'><path fill='%23B8E6C0' d='M0 0h1440v58c-160 26-360 30-560 4S520 20 300 42 60 70 0 64z'/><path fill='%23FBFCFD' d='M0 0h1440v34c-200 26-420 28-620 2S360-6 180 18 40 46 0 40z'/></g></svg>") bottom/100% clamp(36px,5vw,64px) no-repeat,var(--band);padding-block:clamp(84px,9vw,120px)}
.sec.aqua{background:var(--grain),url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 110' preserveAspectRatio='none'><path fill='%23A9E4DA' d='M0 0h1440v58c-160 26-360 30-560 4S520 20 300 42 60 70 0 64z'/><path fill='%23FBFCFD' d='M0 0h1440v34c-200 26-420 28-620 2S360-6 180 18 40 46 0 40z'/></svg>") top/100% clamp(36px,5vw,64px) no-repeat,url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 110' preserveAspectRatio='none'><g transform='translate%280 110%29 scale%281 -1%29'><path fill='%23A9E4DA' d='M0 0h1440v58c-160 26-360 30-560 4S520 20 300 42 60 70 0 64z'/><path fill='%23FBFCFD' d='M0 0h1440v34c-200 26-420 28-620 2S360-6 180 18 40 46 0 40z'/></g></svg>") bottom/100% clamp(36px,5vw,64px) no-repeat,var(--band2);padding-block:clamp(84px,9vw,120px)}
.sec.night:not(.details){background:var(--grain),url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 110' preserveAspectRatio='none'><path fill='%234FD1C5' d='M0 0h1440v58c-160 26-360 30-560 4S520 20 300 42 60 70 0 64z'/><path fill='%23FBFCFD' d='M0 0h1440v34c-200 26-420 28-620 2S360-6 180 18 40 46 0 40z'/></svg>") top/100% clamp(36px,5vw,64px) no-repeat,url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 110' preserveAspectRatio='none'><g transform='translate%280 110%29 scale%281 -1%29'><path fill='%234FD1C5' d='M0 0h1440v58c-160 26-360 30-560 4S520 20 300 42 60 70 0 64z'/><path fill='%23FBFCFD' d='M0 0h1440v34c-200 26-420 28-620 2S360-6 180 18 40 46 0 40z'/></g></svg>") bottom/100% clamp(36px,5vw,64px) no-repeat,var(--deepband);padding-block:clamp(90px,10vw,130px)}
.sec.night:not(.details)::before{display:none}
.ticker{background:var(--band);color:var(--lav-ink);border-bottom:0}
.ticker b{color:var(--mark)}
/* photos: taped-down prints instead of arches and circles */
.collage .arch,.collage .circle,.collage.wide .arch,.pair .a,.pair .b,.duo>div,.duo>div:last-child{border-radius:6px;border:10px solid var(--white);border-bottom-width:14px;box-shadow:0 14px 30px rgba(7,40,60,.22)}
.collage .arch,.collage.wide .arch,.pair .a{transform:rotate(-3deg)}
.collage .circle,.pair .b,.duo>div:last-child{transform:rotate(4deg)}
.collage.solo .arch{transform:rotate(-3deg)}
.collage.only-circle .circle{transform:translate(-50%,-50%) rotate(3deg)}
.card .shape{border-radius:8px;border:8px solid var(--white);box-shadow:0 10px 24px rgba(7,40,60,.16)}
/* cards: a little tilt, a strip of tape, the page's colour */
.tier{background:var(--grain),var(--pkw,var(--white));border:0;border-radius:24px 30px 20px 32px;box-shadow:0 10px 24px rgba(7,40,60,.08)}
.tier::before{content:"";position:absolute;top:-11px;left:50%;width:78px;height:22px;margin-left:-39px;background:linear-gradient(rgba(255,255,255,.68),rgba(255,255,255,.68));border-left:2px dashed rgba(255,255,255,.5);border-right:2px dashed rgba(255,255,255,.5);transform:rotate(-4deg);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.tier:nth-child(odd){transform:rotate(-.8deg)}
.tier:nth-child(even){transform:rotate(.8deg)}
.tier.plus{border:3px solid var(--pk,var(--teal))}
.tier .badge{background:var(--pk,var(--accent));color:var(--accent-ink);transform:rotate(-3deg)}
.shape-card{border:0;border-radius:8px;box-shadow:0 10px 22px rgba(7,40,60,.12)}
.shape-card:nth-child(odd){transform:rotate(-1.5deg)}
.shape-card:nth-child(even){transform:rotate(1.5deg)}
.faq details{border:0;border-radius:16px 22px 14px 20px;box-shadow:0 6px 16px rgba(7,40,60,.07)}
.faq summary::after{color:var(--mark)}
.panel{border:0;border-radius:22px 28px 20px 30px;box-shadow:0 10px 26px rgba(7,40,60,.08)}
.contact-card{border:0;background:var(--band);transform:rotate(-.6deg)}
.q small{font-size:16px}
@media (max-width:620px){.way p{font-size:16px}.way-btn{font-size:14.5px}.way h3{font-size:19px}}
@media (prefers-reduced-motion:reduce){.btn{transition:none}.btn:hover{transform:none}}
.hero .btn.white,.closing .btn.white,.sec.night .btn.white{background:var(--accent);color:var(--accent-ink);box-shadow:0 5px 0 var(--accent-dark),0 10px 20px rgba(0,0,0,.18)}
.hero .btn.white:hover,.closing .btn.white:hover,.sec.night .btn.white:hover{transform:translateY(-2px)}

/* hero waves: a highlight in the page's colour (green elsewhere), then paper */
.hero:not(.craft){background:radial-gradient(circle at 85% 15%,rgba(255,255,255,.22),transparent 38%),var(--hero-grad)}
.hero:not(.craft)::after{inset:auto 0 -1px 0;height:clamp(44px,6vw,90px);background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 110' preserveAspectRatio='none'><path fill='%23FBFCFD' d='M0 74c200-30 380-34 600-4s420 34 600 6 200-22 240-18V110H0z'/></svg>") bottom/100% 100% no-repeat;z-index:1}
.hero:not(.craft)::before{content:"";position:absolute;left:0;right:0;bottom:-1px;height:clamp(44px,6vw,90px);background:var(--pk,var(--wave-hi));-webkit-mask:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 110' preserveAspectRatio='none'><path fill='%23000' d='M0 42c180 40 360 52 560 28S920 0 1120 14s260 44 320 52V110H0z'/></svg>") bottom/100% 100% no-repeat;mask:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 110' preserveAspectRatio='none'><path fill='%23000' d='M0 42c180 40 360 52 560 28S920 0 1120 14s260 44 320 52V110H0z'/></svg>") bottom/100% 100% no-repeat;z-index:1;pointer-events:none}

/* craft touches: notes with arrows, sticker badges, torn paper */
.hnote.arrowed{position:absolute;z-index:3}
.note-arrow{display:block;width:54px;height:44px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;margin-top:2px}
.scrap .hnote.cut{left:auto;right:-6px;bottom:auto;top:-46px;text-align:right;color:var(--white)}
.scrap .hnote.cut .note-arrow{margin-left:auto;transform:scaleY(-1) rotate(20deg)}
.details .hnote.light.arrowed{left:-4px;bottom:-58px}
.details .hnote.light .note-arrow{transform:rotate(-10deg)}
.flow-art .hnote.step3{left:-6px;top:-8px;font-size:22px;color:var(--mark)}
.sticker-badge{position:absolute;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:112px;height:112px;border-radius:50%;background:var(--grain),var(--c);color:var(--accent-ink);border:6px solid var(--white);box-shadow:0 8px 18px rgba(7,40,60,.22);font:800 13px/1.15 var(--display);letter-spacing:.02em;transform:rotate(-12deg)}
.sticker-badge b{font:700 26px/1 "Caveat",cursive;letter-spacing:0}
.scrap .sticker-badge{left:-20px;top:-26px}
.sec-head.center{position:relative}
.sticker-badge.right{right:2%;top:-10px;transform:rotate(10deg)}
.torn-bottom::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:22px;background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 30' preserveAspectRatio='none'><path fill='%23FBFCFD' transform='translate%280 30%29 scale%281 -1%29' d='M0 0L0 9.8L9 12.3L20 7.1L33 20.7L52 18.2L64 14.6L75 8.8L85 9.4L106 19.3L125 18.8L136 11.0L153 17.7L173 20.1L182 15.7L199 14.1L210 13.6L219 21.0L239 14.8L251 20.5L267 20.1L287 14.1L301 15.6L315 8.6L327 19.0L336 6.7L353 10.5L368 13.5L381 22.0L392 12.6L403 16.1L414 11.7L433 11.1L449 20.5L458 7.0L469 18.2L486 9.8L499 8.8L513 6.7L531 20.3L552 17.8L574 6.3L586 21.5L604 12.6L626 15.9L645 10.7L656 13.1L666 12.1L687 11.3L695 6.7L706 18.5L719 10.6L728 21.7L742 9.3L751 6.9L761 16.8L771 6.7L786 10.0L808 8.0L824 18.4L837 21.8L852 9.9L866 6.6L880 10.0L900 19.3L915 6.5L927 9.9L938 9.7L958 8.3L966 20.8L982 21.8L996 20.4L1013 18.7L1032 13.9L1041 9.4L1061 20.4L1082 11.4L1099 18.8L1116 19.0L1132 16.5L1149 10.3L1170 21.3L1179 21.5L1201 16.7L1209 20.4L1219 21.5L1236 7.0L1247 16.2L1263 17.9L1284 9.5L1292 20.8L1300 20.0L1310 19.0L1329 20.0L1344 20.1L1355 16.7L1368 20.3L1387 13.5L1402 6.4L1410 15.5L1425 19.8L1440 14.0L1440 0Z'/></svg>") bottom/100% 100% no-repeat;filter:drop-shadow(0 -2px 1px rgba(7,40,60,.08));pointer-events:none}
.closing.craft.torn-top .waves{display:none}
.closing.craft.torn-top{padding-top:clamp(70px,8vw,110px);background:var(--grain),var(--close-grad)}
.closing.craft.torn-top::before{content:"";position:absolute;left:0;right:0;top:-1px;height:22px;background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 30' preserveAspectRatio='none'><path fill='%23FBFCFD' d='M0 0L0 9.8L9 12.3L20 7.1L33 20.7L52 18.2L64 14.6L75 8.8L85 9.4L106 19.3L125 18.8L136 11.0L153 17.7L173 20.1L182 15.7L199 14.1L210 13.6L219 21.0L239 14.8L251 20.5L267 20.1L287 14.1L301 15.6L315 8.6L327 19.0L336 6.7L353 10.5L368 13.5L381 22.0L392 12.6L403 16.1L414 11.7L433 11.1L449 20.5L458 7.0L469 18.2L486 9.8L499 8.8L513 6.7L531 20.3L552 17.8L574 6.3L586 21.5L604 12.6L626 15.9L645 10.7L656 13.1L666 12.1L687 11.3L695 6.7L706 18.5L719 10.6L728 21.7L742 9.3L751 6.9L761 16.8L771 6.7L786 10.0L808 8.0L824 18.4L837 21.8L852 9.9L866 6.6L880 10.0L900 19.3L915 6.5L927 9.9L938 9.7L958 8.3L966 20.8L982 21.8L996 20.4L1013 18.7L1032 13.9L1041 9.4L1061 20.4L1082 11.4L1099 18.8L1116 19.0L1132 16.5L1149 10.3L1170 21.3L1179 21.5L1201 16.7L1209 20.4L1219 21.5L1236 7.0L1247 16.2L1263 17.9L1284 9.5L1292 20.8L1300 20.0L1310 19.0L1329 20.0L1344 20.1L1355 16.7L1368 20.3L1387 13.5L1402 6.4L1410 15.5L1425 19.8L1440 14.0L1440 0Z'/></svg>") top/100% 100% no-repeat;filter:drop-shadow(0 2px 1px rgba(7,40,60,.1))}
.hero.craft{background:var(--grain),var(--hero-grad)}
@media (max-width:620px){.sticker-badge{width:86px;height:86px;font-size:11px;border-width:5px}.sticker-badge b{font-size:20px}.sticker-badge.right{top:-40px;right:-4px}.scrap .sticker-badge{left:-6px;top:-18px}.scrap .hnote.cut{display:none}}
.details .hnote.light.arrowed{display:flex;flex-direction:column-reverse}.details .hnote.light .note-arrow{margin:0 0 2px 30px}
@media (max-width:980px){.details .det-art{padding-bottom:0}.details .hnote.light.arrowed{position:relative;left:auto;bottom:auto;margin:8px 0 18px 10px}}

/* From Mama's Workshop: a board of taped prints with handwritten captions */
.workshop{background:var(--grain),var(--paper)}
.workshop.alt{background:var(--grain),var(--band)}
.ws-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:34px 30px;margin-top:40px;padding:0 6px}
.ws-board .snap{margin:0;padding:10px 10px 4px;transition:transform .25s}
.ws-board .snap img{aspect-ratio:4/3;height:auto}
.ws-board .snap figcaption{font-size:22px;padding:8px 0 6px}
.ws-board .snap:nth-child(1){transform:rotate(-3deg)}
.ws-board .snap:nth-child(2){transform:rotate(2deg) translateY(14px)}
.ws-board .snap:nth-child(3){transform:rotate(-1.5deg)}
.ws-board .snap:nth-child(4){transform:rotate(2.5deg)}
.ws-board .snap:nth-child(5){transform:rotate(-2deg) translateY(10px)}
.ws-board .snap:nth-child(6){transform:rotate(3deg)}
.ws-board .snap:nth-child(3n+1) .tape{background:color-mix(in srgb,var(--k1) 55%,transparent)}
.ws-board .snap:nth-child(3n+2) .tape{background:color-mix(in srgb,var(--k2) 55%,transparent)}
.ws-board .snap:nth-child(3n) .tape{background:color-mix(in srgb,var(--k3) 55%,transparent)}
.ws-board .snap:hover{transform:rotate(0) scale(1.03);z-index:2}
@media (max-width:820px){.ws-board{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 18px}.ws-board .snap figcaption{font-size:19px}}
@media (max-width:520px){.ws-board{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:18px;margin-inline:-16px;padding:18px 24px 26px}.ws-board .snap{flex:0 0 74%;scroll-snap-align:center}}
@media (prefers-reduced-motion:reduce){.ws-board .snap{transition:none}.ws-board .snap:hover{transform:none}}
/* review fixes (Nov 1) */
.band,.band b,.band a{font-weight:700}
/* tape: easier to see */
.tape{background:rgba(196,236,230,.95);border-left:2px dashed rgba(255,255,255,.7);border-right:2px dashed rgba(255,255,255,.7);box-shadow:0 2px 4px rgba(7,40,60,.14)}
.tier::before{background:rgba(196,236,230,.95);box-shadow:0 2px 4px rgba(7,40,60,.14)}
.ws-board .snap:nth-child(3n+1) .tape{background:color-mix(in srgb,var(--k1) 85%,white)}
.ws-board .snap:nth-child(3n+2) .tape{background:color-mix(in srgb,var(--k2) 85%,white)}
.ws-board .snap:nth-child(3n) .tape{background:color-mix(in srgb,var(--k3) 85%,white)}
/* hero: the decal print is landscape so the whole name shows */
.scrap .small{right:6%;bottom:2%;width:40%;aspect-ratio:4/3;transform:rotate(-5deg)}
/* tablets: the handwritten note sits under the photos, not on them */
.scrap .small{aspect-ratio:auto}
.scrap .small img{aspect-ratio:4/3;height:auto}
@media (max-width:1100px) and (min-width:621px){
.scrap{display:grid;grid-template-columns:1.15fr 1fr;grid-template-rows:auto auto auto;gap:22px 18px;min-height:0;align-items:start}
.scrap .snap{position:relative;left:auto;right:auto;top:auto;bottom:auto;width:auto}
.scrap .big{grid-row:1/3;grid-column:1}
.scrap .mid{grid-column:2;grid-row:1;margin-top:30px}
.scrap .small{grid-column:2;grid-row:2;width:88%;justify-self:center}
.scrap .hnote{position:static;grid-column:1/3;grid-row:3;margin-top:4px}
.sticker-badge.right{top:-84px;right:0}}
/* step 1: the decal print, centred and higher */
.flow-art.pick img:nth-child(3){left:23%;bottom:6%;width:54%}
/* details: bigger icons, square inset */
.det-list .dt-ic{width:54px;height:54px}
.det-list .dt-ic svg{width:28px;height:28px}
.snap.det-inset{aspect-ratio:auto;width:34%}
.snap.det-inset img{aspect-ratio:1}
@media (min-width:1101px){.scrap{margin-bottom:50px}.scrap .hnote{bottom:-66px}.scrap .puzzle{left:42%}}
@media (max-width:1100px){.way-what{display:none}}
.workshop.alt{position:relative}.workshop.alt::before{content:"";position:absolute;left:0;right:0;top:-1px;height:22px;background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 30' preserveAspectRatio='none'><path fill='%23FBFCFD' d='M0 0L0 9.8L9 12.3L20 7.1L33 20.7L52 18.2L64 14.6L75 8.8L85 9.4L106 19.3L125 18.8L136 11.0L153 17.7L173 20.1L182 15.7L199 14.1L210 13.6L219 21.0L239 14.8L251 20.5L267 20.1L287 14.1L301 15.6L315 8.6L327 19.0L336 6.7L353 10.5L368 13.5L381 22.0L392 12.6L403 16.1L414 11.7L433 11.1L449 20.5L458 7.0L469 18.2L486 9.8L499 8.8L513 6.7L531 20.3L552 17.8L574 6.3L586 21.5L604 12.6L626 15.9L645 10.7L656 13.1L666 12.1L687 11.3L695 6.7L706 18.5L719 10.6L728 21.7L742 9.3L751 6.9L761 16.8L771 6.7L786 10.0L808 8.0L824 18.4L837 21.8L852 9.9L866 6.6L880 10.0L900 19.3L915 6.5L927 9.9L938 9.7L958 8.3L966 20.8L982 21.8L996 20.4L1013 18.7L1032 13.9L1041 9.4L1061 20.4L1082 11.4L1099 18.8L1116 19.0L1132 16.5L1149 10.3L1170 21.3L1179 21.5L1201 16.7L1209 20.4L1219 21.5L1236 7.0L1247 16.2L1263 17.9L1284 9.5L1292 20.8L1300 20.0L1310 19.0L1329 20.0L1344 20.1L1355 16.7L1368 20.3L1387 13.5L1402 6.4L1410 15.5L1425 19.8L1440 14.0L1440 0Z'/></svg>") top/100% 100% no-repeat;filter:drop-shadow(0 2px 1px rgba(7,40,60,.1));pointer-events:none}
.workshop.alt{padding-top:clamp(70px,8vw,100px)}
/* Four ways: pills only */
.way-pills{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;margin-top:30px}
.way-pill{display:inline-flex;align-items:center;gap:12px;padding:18px 30px;border-radius:999px;background:var(--grain),var(--c);color:var(--accent-ink);font:800 clamp(18px,2vw,22px) var(--display);text-decoration:none;box-shadow:0 5px 0 color-mix(in srgb,var(--c) 70%,#000),0 12px 22px rgba(7,40,60,.12);transition:transform .15s}
.way-pill:nth-child(odd){transform:rotate(-1.5deg)}.way-pill:nth-child(even){transform:rotate(1.5deg)}
.way-pill:hover,.way-pill:focus-visible{transform:translateY(-3px) rotate(0)}
@media (max-width:620px){.way-pills{display:grid;grid-template-columns:1fr;gap:14px}.way-pill{justify-content:space-between;padding:16px 24px}}
/* details: three workshop prints */
.det-snaps{position:relative;min-height:520px;padding-bottom:0}
.det-snaps .snap{position:absolute}
.det-snaps .snap img{aspect-ratio:4/3;height:auto}
.det-snaps .d1{left:0;top:0;width:68%;transform:rotate(-4deg)}
.det-snaps .d2{right:0;top:22%;width:42%;transform:rotate(5deg)}
.det-snaps .d2 img{aspect-ratio:7/8}
.det-snaps .d3{left:12%;bottom:0;width:46%;transform:rotate(-2deg)}
.det-snaps .d3 img{aspect-ratio:1}
.details .det-snaps .hnote.light{position:absolute;right:2%;bottom:-6px;left:auto}
@media (max-width:980px){.det-snaps{min-height:0;display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:28px}.det-snaps .snap{position:relative;left:auto;right:auto;top:auto;bottom:auto;width:auto}.det-snaps .d1{grid-column:1/3}.details .det-snaps .hnote.light{position:static;grid-column:1/3}}
/* reviews: four, no stars */
.pinkwash .quotes{grid-template-columns:repeat(2,minmax(0,1fr))}
.pinkwash .q p{font-size:clamp(17px,1.8vw,19px);line-height:1.45}
@media (max-width:760px){.pinkwash .quotes{grid-template-columns:1fr}}
.story-band{padding-top:clamp(50px,6vw,80px)}

/* straight pills and review cards; no squiggles */
.way-pill:nth-child(odd),.way-pill:nth-child(even){transform:none}
.way-pill:hover,.way-pill:focus-visible{transform:translateY(-3px)}
.pinkwash .q,.pinkwash .q:nth-child(2){transform:none}
em.lav{background:none;padding-bottom:0}
.mark{padding-bottom:0}
.collage.wide.one .arch{width:100%;left:0}
.hero .lead a{color:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.page-story .pair{grid-template-columns:1.6fr 1fr;align-items:center}.page-story .pair .a{aspect-ratio:1000/551}
.way-pill .wp-t{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}.way-pill small{font:600 14px var(--text);opacity:.85;margin-top:3px}.way-pill{padding:14px 26px}
.sticker-badge,.sticker-badge b{text-align:center;line-height:1.05}.sticker-badge b{display:block;margin:2px 0}
.sticker-badge,.sticker-badge.right,.scrap .sticker-badge{transform:none}
.sticker-badge b{white-space:nowrap;font-size:22px}
@media (max-width:620px){.sticker-badge b{font-size:17px}}
.sticker-badge{width:124px;height:124px}
.sticker-badge b{font-size:21px}
@media (max-width:620px){.sticker-badge{width:100px;height:100px}.sticker-badge b{font-size:17px}}
/* Home: each product pill shows a photo and its starting price. */
.way-pill{padding:10px 22px 10px 10px}
.way-pill .wp-img{width:64px;height:64px;border-radius:50%;object-fit:cover;flex:none;border:3px solid var(--white);box-shadow:0 2px 6px rgba(4,41,59,.18);background:var(--white)}
.way-pill .wp-t{flex:1;min-width:0}
.way-pill .wp-price{flex:none;white-space:nowrap;font:700 13px var(--text);background:rgba(255,255,255,.78);color:var(--accent-ink);border-radius:999px;padding:5px 11px;line-height:1.1}
.way-pill .wp-price b{font:800 17px var(--display)}
.way-pill .wp-go{flex:none}
@media (max-width:620px){.way-pill{gap:12px;padding:10px 14px 10px 10px}.way-pill .wp-img{width:56px;height:56px}.way-pill .wp-go{display:none}}
/* Home hero: the fourth photo (a puzzle), so all four products show. */
/* Bottom row: the puzzle sits over the party box's corner, in front of the decal. */
.scrap .puzzle{position:absolute;left:40%;bottom:-3%;width:23%;aspect-ratio:1;transform:rotate(5deg);z-index:4}
.scrap .small{right:0;width:36%;z-index:3}
@media (max-width:1100px) and (min-width:621px){.scrap .small{width:74%;justify-self:end}.scrap .puzzle{position:absolute;left:38%;top:auto;bottom:44px;width:27%}}
@media (max-width:620px){.scrap{min-height:360px;margin-bottom:34px}.scrap .puzzle{left:40%;width:25%;bottom:2%}.scrap .small{width:40%}.scrap .hnote{font-size:17px;max-width:38%;bottom:-40px;white-space:normal}}
.page-questions .sec-head .eyebrow{transform:none}

.ph-cycle{position:relative}
.ph-cycle img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 0;opacity:0;animation:phFade 16s infinite}
.ph-cycle img:nth-child(2),.ph-labels span:nth-child(2){animation-delay:4s}.ph-cycle img:nth-child(3),.ph-labels span:nth-child(3){animation-delay:8s}.ph-cycle img:nth-child(4),.ph-labels span:nth-child(4){animation-delay:12s}
@keyframes phFade{0%{opacity:0}3%,25%{opacity:1}28%,100%{opacity:0}}
.ph-labels{position:relative;height:1.4em;width:100%;white-space:nowrap;flex-basis:100%;margin:14px 0 0;text-align:center;font:700 22px/1.2 "Caveat",cursive;color:var(--mark)}
.ph-labels span{position:absolute;inset:0;opacity:0;animation:phFade 16s infinite}
@media (prefers-reduced-motion:reduce){.ph-cycle img,.ph-labels span{animation:none}.ph-cycle img:first-child,.ph-labels span:first-child{opacity:1}}
.pp-split{display:grid;grid-template-columns:auto 1fr;gap:56px;align-items:center;max-width:900px}
.pp-split .phone{width:240px;transform:rotate(-3deg)}
.pp-list{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:14px}
.pp-list li{padding-left:30px;position:relative}.pp-list li:before{content:"✓";position:absolute;left:0;top:0;width:22px;height:22px;border-radius:50%;background:var(--teal);color:#fff;font:800 13px/22px var(--display);text-align:center}
@media (max-width:760px){.pp-split{grid-template-columns:1fr;gap:28px}.pp-split .phone{margin:0 auto;width:220px}}

/* ===== Party page (Nov 2026): a celebration header in the theme's colour,
   a friendlier tracker, sneak peeks, documents and a note from us.
   --pt is the theme's colour (party.js, THEME_LOOK); #party gets pp-calm,
   pp-everyday, pp-banner or pp-confetti (party.js, STYLE) for the header's look. ===== */
.pp-wrap{padding-block:24px 80px}
#party{--pt:var(--accent)}
.pp-hero{position:relative;overflow:hidden;display:grid;gap:18px;align-items:center;background:var(--grain),var(--hero-grad);color:var(--white);border-radius:24px 30px 22px 32px;padding:30px 24px 32px;box-shadow:0 14px 34px rgba(7,40,60,.18)}
.pp-hero::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.9;background:
 radial-gradient(circle at 3% 6%,var(--pt) 0 5px,transparent 6px),radial-gradient(circle at 22% 88%,#fff 0 3px,transparent 4px),
 radial-gradient(circle at 46% 10%,#fff 0 3px,transparent 4px),radial-gradient(circle at 63% 92%,var(--pt) 0 6px,transparent 7px),
 radial-gradient(circle at 92% 14%,var(--wave-hi) 0 5px,transparent 6px),radial-gradient(circle at 96% 70%,#fff 0 3px,transparent 4px),
 radial-gradient(circle at 88% 48%,color-mix(in srgb,var(--pt) 70%,#fff) 0 4px,transparent 5px)}
.pp-hero-text{position:relative;z-index:1;min-width:0}
.pp-hero .pp-theme{color:var(--accent-light);font-size:28px;transform:rotate(-3deg);transform-origin:left center}
.pp-hero h1{font-size:clamp(34px,6vw,54px);margin:8px 0 8px;color:var(--white);overflow-wrap:anywhere}
.pp-dates{color:var(--on-grad);font-weight:700}
.pp-count{display:inline-block;margin-top:16px;background:var(--white);color:var(--ink);font:800 17px/1.2 var(--display);padding:10px 16px;border-radius:999px;box-shadow:0 4px 0 color-mix(in srgb,var(--pt) 75%,#000),0 10px 20px rgba(0,0,0,.14);border:3px solid var(--pt);transform:rotate(-1.5deg)}
.pp-snap{position:relative;z-index:1;width:min(160px,48%);justify-self:end;margin:-6px 6px 0 0;transform:rotate(4deg)}
.pp-snap .tape{background:color-mix(in srgb,var(--pt) 70%,white)}
.pp-snap img{aspect-ratio:1;height:auto;object-fit:contain;background:var(--white)}
.pp-snap figcaption{font-size:20px}
@media(min-width:700px){.pp-hero{grid-template-columns:1fr auto;padding:38px 40px}.pp-snap{width:210px}}
/* The header's looks (party.js, STYLE). Hidden parts first: */
.pp-confetti-bits,.pp-stripe,.pp-wave{display:none}
/* calm (option 1): no confetti dots */
.pp-calm .pp-hero::before{display:none}
.pp-calm .pp-count{transform:none}
/* banner (version A): calm, plus the home page hero's waves along the bottom,
   a few confetti dots and the countdown as a coral sticker */
.pp-banner .pp-hero{border-radius:24px 30px 0 0;padding-bottom:clamp(70px,9vw,96px);overflow:hidden}
.pp-banner .pp-hero::before{background:radial-gradient(circle at 4% 10%,var(--accent-light) 0 4px,transparent 5px),radial-gradient(circle at 48% 8%,#fff 0 3px,transparent 4px),radial-gradient(circle at 74% 5%,var(--wave-hi) 0 5px,transparent 6px),radial-gradient(circle at 93% 12%,var(--pt) 0 6px,transparent 7px),radial-gradient(circle at 3% 58%,#fff 0 3px,transparent 4px)}
.pp-banner .pp-wave{display:block;position:absolute;left:0;right:0;bottom:-1px;width:100%;height:clamp(40px,6vw,70px);z-index:1}
.pp-banner .pp-wave .w1{fill:var(--wave-hi)}
.pp-banner .pp-wave .w2{fill:var(--paper)}
.pp-banner .pp-hero h1{font-size:clamp(40px,7.5vw,66px)}
.pp-banner .pp-hero{grid-template-columns:1fr auto}
.pp-banner .pp-count,.pp-confetti .pp-count{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:118px;height:118px;border-radius:50%;padding:8px;margin:0;font:800 14px/1.1 var(--display);transform:rotate(-8deg);box-shadow:0 8px 18px rgba(7,40,60,.25)}
.pp-banner .pp-count b,.pp-confetti .pp-count b{display:block;font:700 30px/1 "Caveat",cursive;margin-bottom:2px}
.pp-banner .pp-count{position:relative;z-index:2;background:var(--grain),var(--accent);color:var(--accent-ink);border:6px solid var(--white)}
.pp-banner .pp-hero-text{display:contents}
.pp-banner .pp-hero-text>*{grid-column:1}
.pp-banner .pp-count{grid-column:2;grid-row:1/5;align-self:center}
@media(max-width:560px){.pp-banner .pp-hero{grid-template-columns:1fr}.pp-banner .pp-count{grid-column:1;grid-row:auto;width:100px;height:100px;font-size:12px;position:absolute;right:14px;top:14px}.pp-banner .pp-count b{font-size:24px}.pp-banner .pp-theme{max-width:calc(100% - 110px)}.pp-banner .pp-hero h1{padding-right:0;margin-top:44px}}
/* confetti card (version B): the party-guest business card. Cream paper with
   dots, scattered confetti, striped tape and a white card with the name in
   rainbow letters; the countdown is the round green "made in Whitby" sticker. */
.pp-confetti .pp-hero{background:radial-gradient(circle,#F2E6D3 1.6px,transparent 2.2px) 0 0/26px 26px,var(--grain),#FFF8EE;color:#2B2B3A;padding:44px 22px 40px}
.pp-confetti .pp-hero::before{display:none}
.pp-confetti .pp-confetti-bits{display:block;position:absolute;inset:0;z-index:0;pointer-events:none}
.pp-confetti .pp-confetti-bits svg{width:100%;height:100%;display:block}
.pp-confetti .pp-stripe{display:block;position:absolute;z-index:0;height:30px;opacity:.85}
.pp-confetti .pp-stripe.a{left:-20px;top:22px;width:46%;background:repeating-linear-gradient(-45deg,#FF7F6E 0 12px,#FFB38A 12px 24px);transform:rotate(-8deg)}
.pp-confetti .pp-stripe.b{right:-30px;bottom:26px;width:52%;background:repeating-linear-gradient(-45deg,#3CC7D6 0 12px,#9BE7EE 12px 24px);transform:rotate(-6deg)}
.pp-confetti .pp-hero-text{background:var(--white);border-radius:18px;padding:24px 22px 22px;box-shadow:0 10px 22px rgba(60,40,20,.18);transform:rotate(-1.5deg);text-align:center;position:relative}
.pp-confetti .pp-theme{color:#7a5a3a;transform:none}
.pp-confetti .pp-hero h1{color:#2B2B3A;letter-spacing:-.03em}
.pp-confetti .pp-hero h1 span:nth-child(10n+1){color:#FF7F6E}.pp-confetti .pp-hero h1 span:nth-child(10n+2){color:#FF9A6E}.pp-confetti .pp-hero h1 span:nth-child(10n+3){color:#F2A06A}
.pp-confetti .pp-hero h1 span:nth-child(10n+4){color:#D9A23A}.pp-confetti .pp-hero h1 span:nth-child(10n+5){color:#5DBB6E}.pp-confetti .pp-hero h1 span:nth-child(10n+6){color:#3FAF8E}
.pp-confetti .pp-hero h1 span:nth-child(10n+7){color:#2FB3C2}.pp-confetti .pp-hero h1 span:nth-child(10n+8){color:#4C9BDB}.pp-confetti .pp-hero h1 span:nth-child(10n+9){color:#7E7EE8}.pp-confetti .pp-hero h1 span:nth-child(10n){color:#A88AE8}
.pp-confetti .pp-dates{color:#4b3b2b}
.pp-confetti .pp-count{position:absolute;right:-14px;top:-40px;width:104px;height:104px;background:#7CCF8A;color:var(--white);border:0;box-shadow:0 0 0 6px #fff,0 8px 16px rgba(60,40,20,.2);transform:rotate(-10deg)}
.pp-confetti .pp-count b{font-size:26px}
.pp-confetti .pp-hero-text{margin-top:30px}
.pp-confetti .pp-snap{padding:10px 10px 4px;transform:rotate(5deg)}
.pp-confetti .pp-snap .tape{background:repeating-linear-gradient(-45deg,#FFD166 0 10px,#FFE7A3 10px 20px);border:0}
.pp-confetti .pp-snap figcaption{color:#5a4632}
@media(max-width:560px){.pp-confetti .pp-count{width:88px;height:88px;right:-8px;top:-46px;font-size:12px}.pp-confetti .pp-count b{font-size:22px}.pp-confetti .pp-hero-text{padding:30px 16px 20px}}
.pp-welcome{margin-top:18px;background:var(--grain),var(--band);border-radius:22px 28px 20px 30px;padding:22px 24px}
.pp-welcome h2{font-size:clamp(22px,3.4vw,28px);margin-bottom:8px}
.pp-welcome p{color:var(--body);margin-bottom:14px}
.pp-status{margin-top:18px}
.pp-news{display:grid;gap:4px;border-radius:16px;padding:14px 16px;margin-bottom:20px;background:var(--wash-aqua);border-left:5px solid var(--teal)}
.pp-news b{font:800 20px/1.25 var(--display);color:var(--ink)}
.pp-news span{color:var(--body)}
.pp-news.ready{background:var(--ok-wash);border-color:var(--ok)}
.pp-news.ready b{font-size:24px}
.pp-track{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:relative}
.pp-track li{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;color:var(--soft);font:700 13px/1.2 var(--text)}
.pp-track li::before{content:"";position:absolute;top:22px;left:-50%;width:100%;height:4px;background:var(--line);z-index:0}
.pp-track li:first-child::before{display:none}
.pp-track li.done::before,.pp-track li.now::before{background:var(--teal)}
.pp-ic{position:relative;z-index:1;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--white);border:2.5px solid var(--line2);color:var(--soft)}
.pp-ic svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pp-track li.done .pp-ic{background:var(--teal);border-color:var(--teal);color:var(--white)}
.pp-track li.now{color:var(--ink)}
.pp-track li.now .pp-ic{background:var(--accent);border-color:var(--accent-dark);color:var(--accent-ink);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 25%,transparent)}
@media(max-width:480px){.pp-ic{width:38px;height:38px}.pp-ic svg{width:19px;height:19px}.pp-track li::before{top:18px}.pp-track li{font-size:11.5px}}
.pp-h{margin:30px 0 12px;font-size:inherit}
.pp-h .hnote.dark{font-size:30px;color:var(--mark-text);transform:rotate(-2deg)}
.pp-h2{font-size:24px}
.pp-gap{margin-top:22px}
.pp-gap-s{margin-top:10px}
.pp-label{font-weight:700}
.pp-chips{display:flex;flex-wrap:wrap;gap:6px}
.pp-chips .price{margin:0}
.pick-btn{cursor:pointer}
.pp-peeks .muted{font-size:17px}
.pp-peek-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:26px 20px;margin-top:20px;padding:0 6px}
.pp-peek-board .snap img{aspect-ratio:4/3;height:auto}
.pp-peek-board .snap:nth-child(odd){transform:rotate(-2deg)}
.pp-peek-board .snap:nth-child(even){transform:rotate(2deg)}
.pp-peek-board .snap .tape{background:color-mix(in srgb,var(--pt) 70%,white)}
.pp-docs{display:grid;gap:10px;margin-top:14px}
.pp-doc{display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:16px;padding:12px 14px;background:var(--white)}
.pp-doc.open{border-color:var(--teal)}
.pp-doc-ic{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--wash-aqua);color:var(--teal)}
.pp-doc-ic svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pp-doc-tx{flex:1;min-width:0;display:grid}
.pp-doc-tx b{font:800 17px/1.3 var(--display)}
.pp-doc-tx .muted{font-size:15px}
.pp-paper{margin-top:18px;background:var(--white);border:1px solid var(--line);border-radius:10px;padding:24px 20px;font-size:15px;line-height:1.5;color:var(--ink)}
.pp-paper-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:14px;border-bottom:3px solid var(--teal);padding-bottom:14px;margin-bottom:16px}
.pp-paper-brand{display:flex;gap:12px;align-items:center}
.pp-paper-brand b{display:block;font:800 19px/1.2 var(--display);color:var(--teal)}
.pp-paper-brand span,.pp-paper-meta span{display:block;font-size:13px;color:var(--soft)}
.pp-paper-meta{text-align:right}
.pp-paper-meta b{display:block;font:800 16px/1.3 var(--display)}
.pp-paper-block{margin-bottom:14px;display:grid}
.pp-paper-block small{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}
.pp-paper-block span:nth-child(2){font-weight:700}
.pp-paper-scroll{overflow-x:auto}
.pp-paper table{width:100%;border-collapse:collapse;font-size:14px}
.pp-paper th{text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--soft);border-bottom:1px solid var(--line);padding:6px 6px}
.pp-paper td{padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:top}
.pp-paper .r{text-align:right;white-space:nowrap}
.pp-paper-totals{margin:14px 0 0 auto;max-width:320px;display:grid;gap:4px}
.pp-paper-totals div{display:flex;justify-content:space-between;gap:12px}
.pp-paper-totals .grand{font:800 18px/1.3 var(--display);border-top:2px solid var(--ink);padding-top:6px}
.pp-stamp{display:inline-block;margin-top:14px;border:2px solid currentColor;border-radius:8px;padding:4px 10px;font:800 13px/1.2 var(--display);letter-spacing:.06em;transform:rotate(-2deg)}
.pp-stamp.ok{color:var(--ok)}.pp-stamp.due{color:var(--mark-text)}.pp-stamp.info{color:var(--teal)}
.pp-paper-note{margin-top:12px;color:var(--body)}
.pp-paper-foot{margin-top:14px;color:var(--soft);font-size:14px}
.pp-doc-actions{margin-top:14px}
.pp-note{position:relative;margin:40px auto 0;max-width:520px;background:var(--grain),#FFF9F3;border-radius:14px;padding:26px 24px 18px;box-shadow:0 10px 24px rgba(7,40,60,.12);transform:rotate(-1deg)}
.pp-note .tape{background:color-mix(in srgb,var(--pt) 60%,white)}
.pp-note p{color:var(--body)}
.pp-sig{margin-top:10px;font:700 30px/1 "Caveat",cursive;color:var(--teal)!important;text-align:right}
/* The print view (party.js, printView): only the document is on the page. */
#pp-print{display:none}
html.pp-printing body>*:not(#pp-print){display:none!important}
html.pp-printing body{background:#fff!important}
html.pp-printing #pp-print{display:block;max-width:760px;margin:0 auto;padding:16px}
.pp-print-bar{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:14px}
#pp-print .pp-paper{margin-top:0}
@media print{
 @page{size:letter;margin:12mm}
 html.pp-printing #pp-print{max-width:none;padding:0}
 html.pp-printing .pp-print-bar{display:none!important}
 html.pp-printing #pp-print .pp-paper{border:0;padding:0;font-size:13px}
 html.pp-printing #pp-print .pp-paper *{box-shadow:none!important}
}
@media(max-width:519px){.pp-snap{display:none}}

/* ===== Party page backgrounds for the banner and confetti looks (party.js
   sets the body class). Cards stay white on top. ===== */
body.form-page.pp-bg-banner{background:var(--grain),url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='64'><path d='M0 22c30-14 60-14 90 0s60 14 90 0 45-12 60-10' fill='none' stroke='%23BDE7D9' stroke-width='3' stroke-linecap='round'/><path d='M0 54c30-10 60-10 90 0s60 10 90 0 45-9 60-7' fill='none' stroke='%23D3F0E6' stroke-width='2.5' stroke-linecap='round'/></svg>") 0 0/240px 64px,#E8F7F1}
body.form-page.pp-bg-confetti{background:radial-gradient(circle,#F0E2CB 1.6px,transparent 2.2px) 0 0/26px 26px,url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='420' height='360'><g opacity='.45'><rect x='30' y='40' width='12' height='22' rx='3' fill='%23FF7F6E' transform='rotate(25 36 51)'/><rect x='250' y='20' width='10' height='18' rx='3' fill='%233CC7D6' transform='rotate(-30 255 29)'/><rect x='360' y='150' width='12' height='20' rx='3' fill='%237CCF8A' transform='rotate(60 366 160)'/><rect x='120' y='210' width='10' height='18' rx='3' fill='%23FFD166' transform='rotate(-15 125 219)'/><rect x='300' y='300' width='12' height='22' rx='3' fill='%23B79CF0' transform='rotate(40 306 311)'/><rect x='60' y='320' width='10' height='16' rx='3' fill='%23FFB38A' transform='rotate(-50 65 328)'/></g></svg>") 0 0/420px 360px,var(--grain),#FFF8EE}

/* ===== The party hub (party.js, HUB): an envelope that opens to show the
   newest thing we sent, and the page's sections under tabs. ===== */
.pp-env-wrap{position:relative;z-index:2;justify-self:center;width:270px;padding:118px 5px 6px;display:grid;justify-items:center;gap:10px}
.pp-hero .pp-env-wrap{display:none}
.pp-env{--env-back:#F3E4D2;--env-front:#FFF6EC;--env-flap:#FF9A86;position:relative;width:260px;height:168px;perspective:900px}
.pp-confetti .pp-env{--env-back:#CFAE82;--env-front:#E6C9A0;--env-flap:#DABB8E}
.pp-env-back{position:absolute;inset:0;border-radius:10px;background:var(--env-back);box-shadow:0 12px 26px rgba(7,40,60,.25)}
.pp-env-front{position:absolute;inset:0;z-index:3;border-radius:0 0 10px 10px;background:var(--grain),var(--env-front);clip-path:polygon(0 0,50% 56%,100% 0,100% 100%,0 100%);pointer-events:none}
.pp-env-flap{position:absolute;left:0;right:0;top:0;height:62%;z-index:4;background:var(--grain),var(--env-flap);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:50% 0;pointer-events:none}
.pp-env-item{position:absolute;left:18px;right:18px;bottom:8px;height:150px;z-index:2;display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 8px 6px;background:var(--white);border:0;border-radius:8px;box-shadow:0 6px 16px rgba(7,40,60,.18);cursor:pointer;color:var(--ink);font:800 14px/1.2 var(--display)}
.pp-env-item img{width:100%;height:106px;object-fit:cover;border-radius:4px;background:var(--wash-aqua)}
.pp-env-item b{font:800 14px/1.2 var(--display)}
.pp-env-seal{position:absolute;left:50%;top:46%;z-index:5;width:96px;height:96px;margin:-48px 0 0 -48px;border-radius:50%;border:5px solid var(--white);background:var(--grain),var(--accent);color:var(--accent-ink);font:700 25px/1 "Caveat",cursive;cursor:pointer;box-shadow:0 6px 14px rgba(7,40,60,.25);transform:rotate(-8deg)}
.pp-confetti .pp-env-seal{width:132px;height:46px;margin:-23px 0 0 -66px;border-radius:4px;border:0;background:repeating-linear-gradient(-45deg,#FFD166 0 10px,#FFE7A3 10px 20px);color:#5a4632}
.pp-env-again{display:inline-flex;visibility:hidden;align-items:center;gap:6px;background:none;border:0;padding:6px 10px;color:var(--white);font:700 15px var(--text);text-decoration:underline;cursor:pointer}
.pp-confetti .pp-env-again{color:#5a4632}
.pp-env.done+.pp-env-again{visibility:visible}
.pp-mini-doc{width:100%;height:106px;display:grid;align-content:start;gap:5px;padding:8px 10px;border:1px solid var(--line);border-radius:4px;text-align:left;font:700 11px/1.2 var(--text);color:var(--soft)}
.pp-mini-doc i{font:800 15px/1 var(--display);font-style:normal;color:var(--teal)}
.pp-mini-doc>span{display:block;height:6px;border-radius:3px;background:var(--line)}
.pp-mini-doc>span:nth-of-type(2){width:70%}.pp-mini-doc>span:nth-of-type(3){width:85%}
.pp-mini-doc em{font:800 12px/1 var(--display);font-style:normal;color:var(--ink);text-align:right}
.pp-mini-note{width:100%;height:106px;display:grid;place-content:center;gap:2px;text-align:center;border-radius:4px;background:var(--grain),var(--band);color:var(--ink);font:700 13px/1.25 var(--text);padding:6px}
.pp-mini-note.ready{background:var(--grain),var(--ok-wash)}
.pp-mini-note.thanks{background:var(--grain),#FFEBE7}
.pp-mini-big{font:700 32px/1 "Caveat",cursive;color:var(--mark-text)}
.pp-mini-note.ready .pp-mini-big{color:var(--ok)}
.pp-env-item:hover,.pp-env-item:focus-visible{box-shadow:0 10px 22px rgba(7,40,60,.28)}
/* opening: the seal lifts off, the flap folds back, the newest thing rises out */
.pp-env.open .pp-env-seal{animation:ppSeal .35s ease-in both}
.pp-env.open .pp-env-flap{animation:ppFlap .6s .3s ease-in-out both}
.pp-env.open .pp-env-item{animation:ppRise .8s .85s cubic-bezier(.2,1.35,.4,1) both}
@keyframes ppSeal{to{opacity:0;transform:rotate(-8deg) scale(.5);visibility:hidden}}
@keyframes ppFlap{0%{transform:rotateX(0);z-index:4}49%{z-index:4}50%{z-index:1}100%{transform:rotateX(180deg);z-index:1}}
@keyframes ppRise{from{transform:translateY(0)}to{transform:translateY(-112px)}}
.pp-env.done .pp-env-seal{opacity:0;visibility:hidden}
.pp-env.done .pp-env-flap{transform:rotateX(180deg);z-index:1}
.pp-env.done .pp-env-item{transform:translateY(-112px)}
@media(prefers-reduced-motion:reduce){.pp-env.open .pp-env-seal,.pp-env.open .pp-env-flap,.pp-env.open .pp-env-item{animation:none}}


/* ===== Party hub, more (Nov 2026): confetti burst, party day, name tags,
   "Approved!" stamp, the sneak-peek stack, calendar and the share card. ===== */
.pp-burst{position:absolute;left:50%;top:42%;width:0;height:0;z-index:7;pointer-events:none}
.pp-burst i{position:absolute;left:0;top:0;border-radius:2px;opacity:0;animation:ppBurst 1.4s cubic-bezier(.15,.7,.3,1) both}
@keyframes ppBurst{0%{opacity:1;transform:translate(0,0) rotate(0) scale(.6)}70%{opacity:1}100%{opacity:0;transform:translate(var(--x),calc(var(--y) + 70px)) rotate(var(--r)) scale(1)}}
.pp-burst i:nth-child(1){--x:90px;--y:-40px;--r:-270deg;width:7px;height:10px;background:var(--accent);animation-delay:0.00s}
.pp-confetti .pp-burst i:nth-child(1){background:#FF7F6E}
.pp-burst i:nth-child(2){--x:116px;--y:3px;--r:-173deg;width:10px;height:13px;background:var(--wave-hi);animation-delay:0.03s}
.pp-confetti .pp-burst i:nth-child(2){background:#3CC7D6}
.pp-burst i:nth-child(3){--x:64px;--y:19px;--r:-76deg;width:13px;height:16px;background:#FFFFFF;animation-delay:0.06s}
.pp-confetti .pp-burst i:nth-child(3){background:#7CCF8A}
.pp-burst i:nth-child(4){--x:98px;--y:34px;--r:21deg;width:7px;height:19px;background:var(--accent-light);animation-delay:0.09s}
.pp-confetti .pp-burst i:nth-child(4){background:#FFB38A}
.pp-burst i:nth-child(5){--x:41px;--y:36px;--r:118deg;width:10px;height:10px;background:var(--aqua);animation-delay:0.12s}
.pp-confetti .pp-burst i:nth-child(5){background:#B79CF0}
.pp-burst i:nth-child(6){--x:3px;--y:75px;--r:215deg;width:13px;height:13px;background:#FFD166;animation-delay:0.00s}
.pp-confetti .pp-burst i:nth-child(6){background:#FFD166}
.pp-burst i:nth-child(7){--x:12px;--y:46px;--r:-228deg;width:7px;height:16px;background:var(--accent);animation-delay:0.03s}
.pp-confetti .pp-burst i:nth-child(7){background:#FF7F6E}
.pp-burst i:nth-child(8){--x:-40px;--y:73px;--r:-131deg;width:10px;height:19px;background:var(--wave-hi);animation-delay:0.06s}
.pp-confetti .pp-burst i:nth-child(8){background:#3CC7D6}
.pp-burst i:nth-child(9){--x:-68px;--y:29px;--r:-34deg;width:13px;height:10px;background:#FFFFFF;animation-delay:0.09s}
.pp-confetti .pp-burst i:nth-child(9){background:#7CCF8A}
.pp-burst i:nth-child(10){--x:-81px;--y:60px;--r:63deg;width:7px;height:13px;background:var(--accent-light);animation-delay:0.12s}
.pp-confetti .pp-burst i:nth-child(10){background:#FFB38A}
.pp-burst i:nth-child(11){--x:-93px;--y:9px;--r:160deg;width:10px;height:16px;background:var(--aqua);animation-delay:0.00s}
.pp-confetti .pp-burst i:nth-child(11){background:#B79CF0}
.pp-burst i:nth-child(12){--x:-145px;--y:-22px;--r:257deg;width:13px;height:19px;background:#FFD166;animation-delay:0.03s}
.pp-confetti .pp-burst i:nth-child(12){background:#FFD166}
.pp-burst i:nth-child(13){--x:-111px;--y:-17px;--r:-186deg;width:7px;height:10px;background:var(--accent);animation-delay:0.06s}
.pp-confetti .pp-burst i:nth-child(13){background:#FF7F6E}
.pp-burst i:nth-child(14){--x:-149px;--y:-62px;--r:-89deg;width:10px;height:13px;background:var(--wave-hi);animation-delay:0.09s}
.pp-confetti .pp-burst i:nth-child(14){background:#3CC7D6}
.pp-burst i:nth-child(15){--x:-99px;--y:-95px;--r:8deg;width:13px;height:16px;background:#FFFFFF;animation-delay:0.12s}
.pp-confetti .pp-burst i:nth-child(15){background:#7CCF8A}
.pp-burst i:nth-child(16){--x:-137px;--y:-101px;--r:105deg;width:7px;height:19px;background:var(--accent-light);animation-delay:0.00s}
.pp-confetti .pp-burst i:nth-child(16){background:#FFB38A}
.pp-burst i:nth-child(17){--x:-76px;--y:-121px;--r:202deg;width:10px;height:10px;background:var(--aqua);animation-delay:0.03s}
.pp-confetti .pp-burst i:nth-child(17){background:#B79CF0}
.pp-burst i:nth-child(18){--x:-42px;--y:-170px;--r:-241deg;width:13px;height:13px;background:#FFD166;animation-delay:0.06s}
.pp-confetti .pp-burst i:nth-child(18){background:#FFD166}
.pp-burst i:nth-child(19){--x:-45px;--y:-140px;--r:-144deg;width:7px;height:16px;background:var(--accent);animation-delay:0.09s}
.pp-confetti .pp-burst i:nth-child(19){background:#FF7F6E}
.pp-burst i:nth-child(20){--x:5px;--y:-119px;--r:-47deg;width:10px;height:19px;background:var(--wave-hi);animation-delay:0.12s}
.pp-confetti .pp-burst i:nth-child(20){background:#3CC7D6}
.pp-burst i:nth-child(21){--x:58px;--y:-139px;--r:50deg;width:13px;height:10px;background:#FFFFFF;animation-delay:0.00s}
.pp-confetti .pp-burst i:nth-child(21){background:#7CCF8A}
.pp-burst i:nth-child(22){--x:34px;--y:-117px;--r:147deg;width:7px;height:13px;background:var(--accent-light);animation-delay:0.03s}
.pp-confetti .pp-burst i:nth-child(22){background:#FFB38A}
.pp-burst i:nth-child(23){--x:94px;--y:-121px;--r:244deg;width:10px;height:16px;background:var(--aqua);animation-delay:0.06s}
.pp-confetti .pp-burst i:nth-child(23){background:#B79CF0}
.pp-burst i:nth-child(24){--x:94px;--y:-72px;--r:-199deg;width:13px;height:19px;background:#FFD166;animation-delay:0.09s}
.pp-confetti .pp-burst i:nth-child(24){background:#FFD166}
.pp-burst i:nth-child(25){--x:122px;--y:-95px;--r:-102deg;width:7px;height:10px;background:var(--accent);animation-delay:0.12s}
.pp-confetti .pp-burst i:nth-child(25){background:#FF7F6E}
.pp-burst i:nth-child(26){--x:105px;--y:-46px;--r:-5deg;width:10px;height:13px;background:var(--wave-hi);animation-delay:0.00s}
.pp-confetti .pp-burst i:nth-child(26){background:#3CC7D6}
@media(prefers-reduced-motion:reduce){.pp-burst{display:none}}
/* party day: balloons in the header */
.pp-balloons{display:none}
.pp-partyday .pp-balloons{display:block;position:absolute;z-index:1;right:12px;top:10px;width:110px;pointer-events:none}
.pp-partyday .pp-balloons svg{width:100%;height:auto;display:block}
.pp-partyday .pp-balloons g{animation:ppFloat 4s ease-in-out infinite alternate}
.pp-partyday .pp-balloons .b2{animation-delay:-1.3s}.pp-partyday .pp-balloons .b3{animation-delay:-2.6s}
@keyframes ppFloat{from{transform:translateY(0)}to{transform:translateY(-8px)}}
@media(prefers-reduced-motion:reduce){.pp-partyday .pp-balloons g{animation:none}}
.pp-partyday .pp-hero h1{padding-right:96px}
@media(min-width:700px){.pp-partyday .pp-balloons{left:40%;right:auto;top:8px;width:120px}.pp-partyday .pp-hero h1{padding-right:0}}
.pp-news.party{background:var(--grain),#FFEBE7;border-color:var(--accent)}
.pp-news.party b{font-size:24px}
.pp-news .btn{justify-self:start;margin-top:8px}
/* guest names as name tags, one per box */
.pp-due{display:inline-block;font:700 15px/1.3 var(--text);color:var(--mark-text);background:#FFEBE7;border-radius:999px;padding:6px 12px;justify-self:start}
.pp-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;list-style:none;padding:0}
.pp-tag{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:7px 16px;border-radius:999px;background:var(--white);border:1px solid rgba(7,40,60,.06);font:800 15px/1.1 var(--display);color:var(--ink);box-shadow:0 3px 10px rgba(7,40,60,.12),0 1px 2px rgba(7,40,60,.08)}
.pp-tag.empty{width:78px;background:transparent;border:1.5px dashed var(--line2);box-shadow:none}
.pp-tags.small{gap:6px}
.pp-tags.small .pp-tag{min-height:28px;padding:4px 11px;font-size:13px}
.pp-tags.small .pp-tag.empty{width:52px}
.pp-tags-mini{margin-top:18px;display:grid;gap:8px;background:var(--white);border-radius:20px;padding:16px 18px;box-shadow:0 6px 16px rgba(7,40,60,.06)}
.pp-tags-mini[hidden]{display:none}
.pp-tags-mini b{font:800 17px/1.2 var(--display)}
.pp-dots{display:flex;flex-wrap:wrap;gap:4px}
.pp-dots i{width:14px;height:10px;border-radius:2px 5px 5px 2px;background:var(--pt,var(--teal))}
.pp-dots i.e{background:transparent;border:1.5px dashed var(--line2)}
.pp-tags-mini .link-btn{justify-self:start}
/* the "Approved!" stamp on the design */
.pp-proof{position:relative}
.pp-approved{position:absolute;right:6%;top:8%;z-index:2;padding:8px 16px;border:4px solid var(--ok);border-radius:10px;color:var(--ok);background:rgba(255,255,255,.82);font:800 clamp(20px,4vw,30px)/1 var(--display);letter-spacing:.04em;text-transform:uppercase;transform:rotate(-10deg);opacity:.75}
.pp-proof.landing .pp-approved{animation:ppStamp .55s cubic-bezier(.3,1.6,.5,1) both;opacity:1}
@keyframes ppStamp{from{opacity:0;transform:rotate(-10deg) scale(2.4)}to{opacity:1;transform:rotate(-10deg) scale(1)}}
.pp-proof .pp-burst{top:30%}
@media(prefers-reduced-motion:reduce){.pp-proof.landing .pp-approved{animation:none}}
/* sneak peeks: a stack of taped photos to flick through */
.pp-peek-board.stack{display:block;padding:0}
.pp-stack{position:relative;width:min(320px,82%);aspect-ratio:4/3.6;margin:22px auto 12px;touch-action:pan-y;outline:none}
.pp-stack:focus-visible{outline:3px solid var(--lav-ink);outline-offset:8px;border-radius:8px}
.pp-stack .snap{position:absolute;inset:0;margin:0;transition:transform .3s ease,opacity .3s ease;user-select:none;-webkit-user-select:none;cursor:grab}
.pp-stack .snap img{aspect-ratio:4/3;height:auto;pointer-events:none}
.pp-stack .snap .tape{background:color-mix(in srgb,var(--pt) 70%,white)}
.pp-stack .pos0{z-index:5;transform:rotate(-2deg)}
.pp-stack .pos1{z-index:4;transform:rotate(4deg) translate(10px,6px)}
.pp-stack .pos2{z-index:3;transform:rotate(-6deg) translate(-10px,10px)}
.pp-stack .posn{z-index:1;opacity:0;transform:rotate(0)}
.pp-stack .snap.out{transform:translateX(-130%) rotate(-18deg);opacity:0}
.pp-stack .snap.dragging{transition:none;cursor:grabbing}
.pp-stack-nav{display:flex;align-items:center;justify-content:center;gap:16px}
.pp-stack-nav button{width:46px;height:46px;border-radius:50%;border:1.5px solid var(--line2);background:var(--white);color:var(--deep);font:800 22px/1 var(--display);cursor:pointer}
.pp-stack-nav span{font:700 15px var(--text);color:var(--soft);min-width:64px;text-align:center}
@media(prefers-reduced-motion:reduce){.pp-stack .snap{transition:none}}
/* add to calendar */
.pp-cal-box[hidden]{display:none}
.pp-cal{margin-top:18px;display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:var(--white);border-radius:20px;padding:14px 18px;box-shadow:0 6px 16px rgba(7,40,60,.06)}
.pp-cal b{flex-basis:100%;font:800 17px/1.2 var(--display)}
.pp-cal .btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
/* the shareable card after the party */
.pp-share-box[hidden]{display:none}
.pp-share{margin-top:18px;display:grid;gap:12px;justify-items:start}
.pp-share img{width:min(360px,100%);border-radius:12px;box-shadow:0 10px 24px rgba(7,40,60,.18)}
.pp-share p{color:var(--body)}

/* ===== Bought art on the party page (img/party-art): small decorative
   copies, at most twice the size shown. ===== */
.pp-partyday .pp-balloons{width:96px}
.pp-partyday .pp-balloons img{display:block;width:100%;height:auto;animation:ppFloat 4s ease-in-out infinite alternate;filter:drop-shadow(0 6px 10px rgba(7,40,60,.25))}
@media(min-width:700px){.pp-partyday .pp-balloons{width:110px}}
@media(prefers-reduced-motion:reduce){.pp-partyday .pp-balloons img{animation:none}}
.pp-bunting{display:none}
.pp-confetti .pp-bunting{display:block;position:absolute;z-index:1;left:0;right:0;top:-6px;width:100%;height:auto;max-height:84px;object-fit:cover;object-position:50% 0;pointer-events:none}
.pp-confetti .pp-hero{padding-top:70px}
.pp-confetti .pp-stripe.a{display:none}
.pp-mini-note.bday{display:flex;align-items:center;gap:6px;text-align:left;background:var(--grain),#FFF4E6}
.pp-mini-note.bday img{flex:none;width:auto;height:96px;object-fit:contain;background:none}
.pp-mini-note.bday .pp-mini-big{display:block;font-size:24px;line-height:1;margin-bottom:4px}
.pp-burst i.rb{background:none center/contain no-repeat;width:22px;height:30px;border-radius:0}
.pp-burst i.rb1{background-image:url("/img/party-art/ribbon-1.webp")}
.pp-burst i.rb2{background-image:url("/img/party-art/ribbon-2.webp");width:30px}
.pp-burst i.rb3{background-image:url("/img/party-art/ribbon-3.webp")}
.pp-burst i.rb4{background-image:url("/img/party-art/ribbon-4.webp");width:38px;height:26px}
.pp-confetti .pp-burst i.rb{background-color:transparent}

/* ===== The party hub as "home with rooms" (party.js, HUB): the next step,
   "You've got mail" with the envelope, a tile for each room, and each
   room as its own view (#design, #names ...). ===== */
.pp-hub{margin-top:20px}
.pp-home{display:grid;gap:18px}
.pp-home>.pp-welcome{margin-top:0}
.pp-next{background:var(--white);border-radius:22px 28px 20px 30px;padding:22px 22px 18px;box-shadow:0 10px 26px rgba(7,40,60,.08);display:grid;gap:8px;border-left:6px solid var(--accent)}
.pp-next.calm{border-left-color:var(--teal)}
.pp-next-kicker{font:700 24px/1 "Caveat",cursive;color:var(--mark-text);transform:rotate(-2deg);transform-origin:left;display:inline-block}
.pp-next.calm .pp-next-kicker{color:var(--teal)}
.pp-next h2{font-size:clamp(22px,4vw,28px)}
.pp-next p{color:var(--body)}
.pp-next .copy-row{margin-top:6px}
.pp-next .pp-track{margin-top:14px}
.pp-next-cal .pp-cal{margin:0;padding:0;box-shadow:none;background:none}
.pp-next-cal .pp-cal b{display:none}
.pp-progress{display:block;height:12px;border-radius:99px;background:var(--wash-aqua);overflow:hidden}
.pp-progress i{display:block;height:100%;border-radius:99px;background:var(--pt,var(--teal))}
.pp-progress i.w0{width:0%}
.pp-progress i.w5{width:5%}
.pp-progress i.w10{width:10%}
.pp-progress i.w15{width:15%}
.pp-progress i.w20{width:20%}
.pp-progress i.w25{width:25%}
.pp-progress i.w30{width:30%}
.pp-progress i.w35{width:35%}
.pp-progress i.w40{width:40%}
.pp-progress i.w45{width:45%}
.pp-progress i.w50{width:50%}
.pp-progress i.w55{width:55%}
.pp-progress i.w60{width:60%}
.pp-progress i.w65{width:65%}
.pp-progress i.w70{width:70%}
.pp-progress i.w75{width:75%}
.pp-progress i.w80{width:80%}
.pp-progress i.w85{width:85%}
.pp-progress i.w90{width:90%}
.pp-progress i.w95{width:95%}
.pp-progress i.w100{width:100%}
.pp-mail{position:relative;overflow:hidden;display:grid;gap:4px;align-items:center;justify-items:center;border-radius:22px 28px 20px 30px;padding:20px 18px 14px;background:var(--grain),var(--hero-grad);color:var(--white);box-shadow:0 10px 26px rgba(7,40,60,.12)}
.pp-mail-tx{text-align:center}
.pp-mail .hnote{color:var(--accent-light);font-size:30px;transform:rotate(-3deg)}
.pp-mail p{color:var(--on-grad);margin-top:6px;font-size:16px}
.pp-confetti .pp-mail{background:radial-gradient(circle,#F0E2CB 1.6px,transparent 2.2px) 0 0/26px 26px,var(--grain),#FFF8EE;color:var(--ink)}
.pp-confetti .pp-mail .hnote{color:var(--mark-text)}
.pp-confetti .pp-mail p{color:#4b3b2b}
.pp-mail .pp-env-wrap{padding-top:112px}
@media(min-width:700px){.pp-mail{grid-template-columns:1fr auto;justify-items:start;padding:20px 30px}.pp-mail-tx{text-align:left;max-width:30ch}}
.pp-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media(min-width:700px){.pp-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:1000px){.pp-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}
.pp-tile{position:relative;display:grid;justify-items:start;align-content:start;gap:8px;min-height:132px;padding:16px;border-radius:20px 24px 18px 26px;background:var(--white);color:var(--ink);text-decoration:none;box-shadow:0 8px 20px rgba(7,40,60,.08);border-top:5px solid var(--teal);transition:transform .15s,box-shadow .15s}
.pp-confetti .pp-tile{border-top-color:var(--accent)}
.pp-tile:hover,.pp-tile:focus-visible{transform:translateY(-3px);box-shadow:0 12px 26px rgba(7,40,60,.14)}
.pp-tile b{font:800 17px/1.2 var(--display)}
.pp-tile-ic{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--wash-aqua);color:var(--teal)}
.pp-confetti .pp-tile-ic{background:#FFEBE7;color:var(--mark-text)}
.pp-tile-ic svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pp-chip{font:700 13px/1.2 var(--text);color:var(--soft);background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:4px 10px}
.pp-tile.is-new .pp-chip{color:var(--accent-ink);background:#FFEBE7;border-color:var(--accent-light)}
.pp-dot-new{position:absolute;right:12px;top:12px;width:12px;height:12px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--white)}
@media(prefers-reduced-motion:reduce){.pp-tile{transition:none}.pp-tile:hover{transform:none}}
.pp-room{display:grid;gap:14px}
.pp-room[hidden]{display:none}
.pp-back{justify-self:start;display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;border:1.5px solid var(--line2);background:var(--white);color:var(--deep);font:800 15px var(--display);cursor:pointer}
.pp-room-h{font-size:clamp(28px,5vw,40px);outline:none}
.pp-room>.todo,.pp-room>.panel,.pp-room>.pp-peeks,.pp-room>#p-thanks{margin-top:0}
.pp-room>.pp-peeks>.pp-h{display:none}
.pp-pickup .review{margin-top:0}
.pp-room>.panel>.pp-h2:first-child{display:none}
.pp-room .todo-item:not(.done) .dot{display:none}

/* ===== The sound switch (partysound.js) ===== */
.pp-sound{justify-self:end;display:inline-flex;align-items:center;gap:6px;margin:0 0 12px auto;padding:7px 12px;border-radius:999px;border:1.5px solid var(--line2);background:var(--white);color:var(--deep);font:700 14px/1 var(--text);cursor:pointer}
.pp-sound svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pp-sound[aria-pressed=false]{color:var(--soft)}
.pp-hub{display:grid}

/* the birthday song button (party day, in the "You've got mail" card) */
.pp-song-box{display:grid;gap:8px;justify-items:center;margin-top:12px}
@media(min-width:700px){.pp-song-box{justify-items:start}}
.pp-song{display:inline-flex;align-items:center;gap:10px;padding:12px 20px;border-radius:999px;border:0;background:var(--accent);color:var(--accent-ink);font:800 16px/1 var(--display);cursor:pointer;box-shadow:0 5px 0 var(--accent-dark),0 10px 20px rgba(7,40,60,.14)}
.pp-song-ic{display:inline-block;width:20px;text-align:center}
.pp-song.playing .pp-song-ic{animation:ppNote 1s ease-in-out infinite alternate}
@keyframes ppNote{from{transform:translateY(1px)}to{transform:translateY(-2px)}}
@media(prefers-reduced-motion:reduce){.pp-song.playing .pp-song-ic{animation:none}}
.pp-song-bar{display:block;width:min(240px,80%);height:5px;border-radius:99px;background:rgba(255,255,255,.35);overflow:hidden}
.pp-confetti .pp-song-bar{background:#EADBC2}
.pp-song-bar i{display:block;height:100%;width:0;background:var(--accent);border-radius:99px;transition:width .25s linear}
.pp-tile-due{font:700 13px/1.25 var(--text);color:var(--mark-text)}
