/* Petal Dream · conversion layer: hero, collection frame, product cards, name field, gift ideas, how it works,
   final scene, header extras, sticky bar, toast. TOKENS ONLY (no hex): the same rules then flip correctly inside
   the paper band (.collection) and stay dark inside .p-shell / .on-dark. Loaded after sections.css, before responsive.css. */
:root{--on-claret:#F7EFE0}   /* ivory text that must stay light on a claret fill, even inside the paper band */

/* ---------- ts / wa twins: the page reads right with a TikTok Shop link or without one (html.no-shop) ---------- */
.wa-only{display:none}
.no-shop .wa-only{display:inline}
.no-shop .ts-only{display:none}
.no-shop .nc-copy-btn{display:none}

/* ---------- hero: promise, price ladder, one gold button ---------- */
.hero-crest{height:clamp(110px,19vh,200px)}
.hero-title{margin-top:clamp(4px,.8vh,10px)}
.hero-title .wordmark-name{font-size:7vw}
.hero-promise{max-width:22em;margin-top:clamp(8px,1.4vh,16px);font:400 clamp(24px,3.2vw,40px)/1.22 var(--display);color:var(--ivory);text-wrap:balance}
.hero-promise em{font-style:italic;color:var(--gold-soft)}
.ladder{--th:115px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;align-items:end;width:min(100%,358px);margin-top:clamp(12px,2vh,22px)}
.ladder li{display:flex}
.ladder a{flex:1;display:grid;justify-items:center;align-content:center;gap:1px;min-height:96px;padding:8px 4px 10px;border-radius:16px;background:color-mix(in srgb,var(--velvet) 78%,transparent);box-shadow:inset 0 0 0 1px var(--hair-soft);color:var(--ivory);text-decoration:none;-webkit-tap-highlight-color:transparent;transition:transform .3s var(--ease-out),box-shadow .3s ease,background-color .3s ease}
.ladder .is-mid a{box-shadow:inset 0 0 0 1px var(--gold);transform:translateY(-6px)}
.ladder img{width:auto;height:var(--th);aspect-ratio:200/240;margin-bottom:6px;border-radius:10px;object-fit:cover}
.ladder b{font:500 13px/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase}
.ladder span{font:300 22px/1.1 var(--display);color:var(--ivory)}
.ladder a:active{transform:scale(.97)}
.ladder .is-mid a:active{transform:translateY(-6px) scale(.97)}
@media (hover:hover) and (pointer:fine){
  .ladder a:hover{background:color-mix(in srgb,var(--velvet) 55%,transparent);box-shadow:inset 0 0 0 1px var(--gold);transform:translateY(-3px)}
  .ladder .is-mid a:hover{transform:translateY(-9px)}
}
.hero-ctas .btn{min-width:min(100%,280px)}
.hero-links{display:flex;flex-wrap:wrap;justify-content:center;gap:0 22px;margin-top:2px}
.hero-links .tlink{min-height:44px;background:none;color:var(--gold-soft);font:400 14px/1.2 var(--sans);letter-spacing:.02em;text-transform:none;text-decoration:underline;text-decoration-color:var(--hair);text-underline-offset:5px}
.hero-links .tlink:hover{color:var(--ivory);text-decoration-color:var(--gold)}
.trust-line{display:flex;flex-wrap:wrap;justify-content:center;gap:2px 18px;margin-top:clamp(0px,.6vh,8px);font:400 14px/1.3 var(--sans);color:var(--text)}
.trust-line li{display:inline-flex;align-items:center;gap:7px}
.trust-line .i{width:16px;height:16px;color:var(--gold)}
@media (min-width:701px){
  .hero-crest{height:clamp(120px,22vh,240px)}
  .hero-title .wordmark-name{font-size:clamp(30px,4.4vw,64px)}
  .ladder{--th:96px;grid-template-columns:repeat(3,130px);gap:12px;width:auto}
}
/* shorter screens: the same hero, tighter, so promise + prices + button always fit */
@media (max-height:800px){.ladder{--th:80px}}
@media (min-width:701px) and (max-height:800px){.hero-crest{height:clamp(96px,15vh,150px)}.hero-promise{font-size:clamp(24px,min(3.2vw,5vh),40px)}.ladder{--th:52px}.ladder a{min-height:0}}
@media (max-width:700px) and (max-height:700px){.hero-crest{height:clamp(84px,14vh,100px)}.ladder{--th:40px}.ladder a{min-height:0;padding-block:6px 8px}.ladder img{margin-bottom:3px}.ladder span{font-size:20px}.hero-promise{font-size:22px}}

/* ---------- header extras (>=1181px: round WhatsApp button before the header button) ---------- */
.hdr-wa{display:none;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--btn-fill);box-shadow:inset 0 0 0 1px var(--btn-line);color:var(--gold-soft);transition:background-color .3s ease}
.hdr-wa .i{width:20px;height:20px}
.hdr-wa:hover{background:var(--btn-ic)}
@media (min-width:1181px){.hdr-wa{display:grid}}

/* ---------- sticky buy bar: follows the rose, quiet wherever the page has its own gold button ---------- */
.buybar{max-width:560px;margin-inline:auto;border-radius:18px 18px 0 0;border-inline:1px solid var(--hair-soft)}
.buybar-price{display:grid;margin-right:auto;min-width:0;line-height:1.15}
.bb-l{font:600 13px/1.3 var(--sans);color:var(--text);white-space:nowrap}
.bb-p{font:300 20px/1.1 var(--display);color:var(--ivory)}
.buybar .btn{flex:none;--h:48px;padding:0 20px}
.bb-wa{flex:none;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--btn-fill);box-shadow:inset 0 0 0 1px var(--btn-line);color:var(--gold-soft)}
.bb-wa .i{width:22px;height:22px}
.buybar.is-typing{transform:translateY(110%);visibility:hidden}
@media (max-width:899px){html{scroll-padding-bottom:84px}}

/* ---------- toast ---------- */
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:80;width:max-content;max-width:min(92vw,440px);padding:12px 18px;border-radius:14px;background:var(--ink);box-shadow:inset 0 0 0 1px var(--hair),0 20px 40px -16px rgba(0,0,0,.8);color:var(--ivory);font:400 15px/1.45 var(--sans);text-align:center;opacity:0;transform:translate(-50%,12px);pointer-events:none;transition:opacity .3s ease,transform .4s var(--ease-out)}
.toast.is-on{opacity:1;transform:translate(-50%,0)}
@media (max-width:899px){.toast{bottom:calc(84px + env(safe-area-inset-bottom))}}

/* ---------- collection frame ---------- */
.collection .sec-head{margin-bottom:clamp(22px,3vw,34px)}
.col-trust{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;max-width:1220px;margin:0 auto clamp(24px,3vw,36px)}
.col-trust li{display:flex;align-items:flex-start;gap:10px;font:400 15px/1.4 var(--sans);color:var(--text)}
.col-trust .i{width:20px;height:20px;margin-top:1px;color:var(--gold)}
.pick-row{display:grid;justify-items:center;gap:10px;max-width:1220px;margin:0 auto clamp(20px,2.6vw,30px)}
.pick-l{font:500 12px/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--blush)}
.pick-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.pchip{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border-radius:999px;background:transparent;box-shadow:inset 0 0 0 1px var(--hair);color:var(--ivory);font:400 14px/1 var(--sans);letter-spacing:.02em;text-decoration:none;white-space:nowrap;-webkit-tap-highlight-color:transparent;transition:background-color .25s ease,color .25s ease}
.pchip:hover{background:var(--btn-ic)}
.pchip.is-on{background:var(--claret);box-shadow:none;color:var(--on-claret)}
.pick-note{min-height:1.5em;font:italic 400 17px/1.45 var(--display);color:var(--text);text-align:center}
.pick-note:empty{display:none}
.picker{display:none}
.order-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 20px;max-width:860px;margin:clamp(30px,3.4vw,44px) auto 0}
.order-steps li{display:flex;align-items:flex-start;gap:10px;font:400 15px/1.4 var(--sans);color:var(--text)}
.order-steps b{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--hair);font:400 14px/1 var(--display);color:var(--blush)}
.before-order{display:grid;justify-items:center;max-width:680px;margin:18px auto 0;text-align:center}
.before-order a{display:inline-flex;align-items:center;min-height:44px;font:400 15px/1.4 var(--sans);color:var(--text);text-decoration:underline;text-decoration-color:var(--hair);text-underline-offset:4px;text-wrap:balance}
.before-order a:hover{color:var(--ivory);text-decoration-color:var(--gold)}
.col-note{max-width:38em;margin-top:8px;font:400 13px/1.5 var(--sans);color:var(--muted)}
.col-bespoke{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:0 14px;margin-top:14px;font:italic 400 19px/1.4 var(--display);color:var(--text);text-align:center}
@media (min-width:900px){.col-trust{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:699px),(max-height:520px) and (orientation:landscape){
  .col-trust{gap:12px 12px}
  .col-trust li,.before-order a{font-size:16px}
  .pick-row{justify-items:stretch}
  .pick-l{text-align:center}
  .pick-chips{flex-wrap:nowrap;justify-content:flex-start;margin:0 calc(-1 * var(--gutter));padding:2px var(--gutter);overflow-x:auto;scroll-snap-type:x proximity;scroll-padding:0 var(--gutter);scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 90%,transparent);mask-image:linear-gradient(90deg,#000 90%,transparent)}
  .pick-chips::-webkit-scrollbar{display:none}
  .pchip{flex:none;scroll-snap-align:start}
  .order-steps{display:none}   /* the line under the buy button and the How it works section below say the same */
  /* the picker: three equal segments above the cards */
  .picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:8px}
  .picker button{display:grid;place-items:center;align-content:center;gap:2px;min-height:52px;padding:6px 4px;border:0;border-radius:14px;background:transparent;box-shadow:inset 0 0 0 1px var(--hair);color:var(--ivory);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .25s ease,color .25s ease}
  .picker b{font:500 14px/1.2 var(--sans)}
  .picker span{font:400 15px/1.2 var(--display)}
  .picker .on{background:var(--claret);box-shadow:none;color:var(--on-claret)}
}
html:not(.js) .picker,html:not(.js) .buybar{display:none}

/* ---------- product cards ---------- */
.p-best{font:italic 400 17px/1.4 var(--display);color:var(--gold-soft)}
.p-ship{margin-top:auto;padding-top:12px;font:400 13px/1.5 var(--sans);color:var(--muted)}
.p-name-f{margin-top:6px}
.pn{display:block;width:100%;height:48px;padding:0 16px;border:0;border-radius:14px;font:400 16px/1 var(--sans);-webkit-appearance:none;appearance:none;transition:box-shadow .25s ease,background-color .25s ease}
.pn:focus{outline:none}
.p-body .btn{margin-top:8px;padding:10px 7px 10px 22px;min-height:56px;white-space:normal;text-align:center;line-height:1.25}
.p-next{font:400 14px/1.5 var(--sans);color:var(--muted);text-align:center}
.p-body .p-next{margin-top:6px}
@media (max-width:1100px){
  .p-body{padding:20px 18px 20px}
  .p-body .btn{padding:10px 16px;font-size:13px;letter-spacing:.1em}
  .p-body .btn .ic{display:none}
  .p-price{font-size:36px}
}
/* tablet grid: three cards side by side, all three prices at once */
@media (min-width:700px) and (max-width:1099px){.p-incl,.p-best,.p-top{display:none}.p-name{font-size:17px;letter-spacing:.06em;white-space:nowrap}.p-price{font-size:30px}}
@media (max-width:1100px){.p-name{letter-spacing:.1em}}
/* phones: swipe carousel with the picker above it; the product shows large, no pasted-rectangle halo */
@media (max-width:699px),(max-height:520px) and (orientation:landscape){
  .products{display:flex;gap:14px;margin:0 calc(-1 * var(--gutter));padding:8px var(--gutter) 8px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:0 var(--gutter);-webkit-overflow-scrolling:touch;scrollbar-width:none;overscroll-behavior-x:contain}
  .products::-webkit-scrollbar{display:none}
  .product{flex:0 0 min(86vw,390px);scroll-snap-align:center}
  .product.is-featured{top:0}
  .p-visual{aspect-ratio:4/3.3}
  .p-visual img{object-fit:cover;-webkit-mask-image:none;mask-image:none}
  .p-body{gap:4px;padding:14px 16px 16px}
  .p-top{display:none}
  .p-price{font-size:34px}
  .p-incl{margin:2px 0 0;padding-top:10px;gap:3px}
  .p-ship{padding-top:8px}
}

/* ---------- gift ideas: phones swipe through the tiles, tablet 2 columns, desktop 3 ---------- */
.occ-grid{display:flex;gap:12px;margin:0 calc(-1 * var(--gutter));padding:4px var(--gutter) 10px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:0 var(--gutter);-webkit-overflow-scrolling:touch;scrollbar-width:none;overscroll-behavior-x:contain}
.occ-grid::-webkit-scrollbar{display:none}
.occ{position:relative;flex:0 0 min(76vw,300px);scroll-snap-align:start;display:flex;flex-direction:column;align-items:flex-start;padding:14px 14px 14px;border-radius:24px;background:radial-gradient(90% 70% at 50% 0%,color-mix(in srgb,var(--crimson) 45%,transparent),transparent 72%),linear-gradient(180deg,var(--oxblood),var(--ink));box-shadow:inset 0 0 0 1px var(--hair-soft);transition:box-shadow .5s var(--ease-out),transform .5s var(--ease-out)}
.occ.is-season{box-shadow:inset 0 0 0 2px var(--claret),0 0 40px -12px color-mix(in srgb,var(--crimson) 70%,transparent)}
.occ-art{margin-bottom:8px}
.occ-art img{width:auto;height:72px;aspect-ratio:200/240;border-radius:10px;object-fit:cover;box-shadow:0 14px 24px -12px rgba(0,0,0,.8),inset 0 0 0 1px var(--hair-soft);transition:transform .9s var(--ease-out)}
.occ-t{font:300 22px/1.1 var(--display);color:var(--ivory)}
.occ-d{margin-top:6px;font:italic 400 16px/1.45 var(--display);color:var(--text)}
.occ-pick{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:auto;padding-top:10px}
.occ-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--hair);color:var(--gold-soft);font:500 14px/1 var(--sans);letter-spacing:.02em;text-decoration:none;white-space:nowrap;outline:none;transition:background-color .3s ease,color .3s ease}
.occ-link .i{width:15px;height:15px;transition:transform .45s var(--ease-out)}
.occ-link::after{content:"";position:absolute;inset:0;z-index:1;border-radius:24px}
.occ-alt{position:relative;z-index:2}
.occ-alt::after{display:none}
.occ:has(.occ-link:focus-visible){outline:2px solid var(--gold-soft);outline-offset:4px}
.occ:focus-within{box-shadow:inset 0 0 0 1.5px var(--gold)}
.occ-foot{display:flex;justify-content:center;margin-top:clamp(14px,3vw,32px)}
@media (hover:hover) and (pointer:fine){
  .occ:hover{box-shadow:inset 0 0 0 1px var(--hair),0 30px 60px -30px rgba(0,0,0,.9);transform:translateY(-4px)}
  .occ.is-season:hover{box-shadow:inset 0 0 0 2px var(--crimson),0 30px 60px -30px rgba(0,0,0,.9)}
  .occ:hover .occ-art img{transform:scale(1.07) rotate(-2deg)}
  .occ:hover .occ-link:first-child .i{transform:translateX(4px)}
}
@media (min-width:700px){
  .occ-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;overflow:visible;scroll-snap-type:none}
  .occ{flex:none;padding:22px 22px 18px}
  .occ-art img{height:120px}
  .occ-t{font-size:clamp(24px,2.1vw,30px)}
  .occ-d{font-size:17.5px}
  /* wide tiles (Christmas, and the last tile so the grid ends clean): art on the left, text on the right */
  .occ.is-season,.occ:last-child{grid-column:1/-1;display:grid;grid-template-columns:110px minmax(0,1fr);column-gap:16px;align-items:start}
  .occ.is-season .occ-art,.occ:last-child .occ-art{grid-row:1/4;margin:0}
  .occ.is-season .occ-d{max-width:30em}
  .occ.is-season .occ-pick,.occ:last-child .occ-pick{grid-column:2}
  .occ-pick{flex-direction:row;flex-wrap:wrap}
}
@media (min-width:1100px){
  .occ-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.8vw,24px)}
  .occ:last-child{grid-column:auto;display:flex;grid-template-columns:none}
  .occ:last-child .occ-art{margin:0 0 8px}
  .occ:last-child .occ-pick{grid-column:auto}
  .occ-pick{flex-direction:column;align-items:flex-start}
  .occ.is-season{grid-column:span 2;grid-row:span 2;grid-template-columns:minmax(190px,36%) minmax(0,1fr);grid-template-rows:1fr auto auto auto 1fr;column-gap:clamp(28px,3.4vw,52px);padding:32px 38px}
  .occ.is-season .occ-art{grid-row:1/-1;align-self:center;margin:0}
  .occ.is-season .occ-art img{width:100%;height:auto}
  .occ.is-season .occ-t{grid-column:2;grid-row:2;font-size:clamp(34px,3.2vw,46px)}
  .occ.is-season .occ-d{grid-column:2;grid-row:3;margin-top:10px;font-size:clamp(19px,1.6vw,22px)}
  .occ.is-season .occ-pick{grid-column:2;grid-row:4;margin-top:0;padding-top:18px;flex-direction:row}
}

/* ---------- how it works: compact on phones ---------- */
.how-cta{display:flex;justify-content:center;margin-top:clamp(24px,3vw,40px)}
@media (max-width:699px){
  .how{padding-block:44px}
  .how .sec-head{margin-bottom:16px}
  .how-flight{display:none}
  .steps{grid-template-columns:1fr;gap:8px;max-width:none;margin:0}
  .step{grid-template-columns:40px minmax(0,1fr);justify-items:start;align-content:start;column-gap:14px;row-gap:2px;padding:12px 14px;border-radius:20px;text-align:left}
  .step-num{width:40px;height:40px;font-size:15px}
  .step-art{display:none}
  .step-num{grid-column:1;grid-row:1/3;align-self:start}
  .step h3,.step p{grid-column:2}
  .step h3{align-self:center;font-size:16px}
  .step p{max-width:none;font-size:16px;line-height:1.5}
  .how-cta{margin-top:8px}
}

/* ---------- final scene ---------- */
.final-cta{display:grid;justify-items:center;gap:4px}
.final-cta .btn{white-space:normal;text-align:center;line-height:1.25;padding:10px 7px 10px 26px;max-width:100%}
.final-alt{display:flex;flex-wrap:wrap;justify-content:center;gap:0 22px}
.final .p-next{max-width:34em;margin-top:2px;color:var(--text)}
@media (max-width:700px){.final{min-height:0;padding:84px var(--gutter) 76px}}

/* ---------- phones: tighter rhythm between sections ---------- */
@media (max-width:700px){
  .sec{padding-block:48px}
  .sec-head{margin-bottom:24px}
  .collection{padding-top:48px;padding-bottom:28px}
  .collection .sec-head .lede{display:none}   /* the four facts right below say the same */
  .occasions{padding-bottom:40px}
  .occ-foot{margin-top:8px}
}
@media (min-width:701px){.collection{padding-bottom:clamp(56px,6vw,96px)}}
