
:root{
  --sky:#FFFBF8; --paper:#FFFFFF; --tint:#FFF0F5; --tint2:#EEF6FF; --hdr:108px; --ink:#1F2A44; --ink-soft:#56607A;
  --berry:#E14E97; --berry-ink:#FFFFFF; --butter:#F9C515; --mint:#3DB36A; --blue:#2F8FDB; --orange:#F26A21; --line:#C8DAEA;
  --display:"Baloo 2", "Arial Rounded MT Bold", "Trebuchet MS", system-ui, sans-serif;
  --body:"Be Vietnam Pro", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --sky:#14203A; --paper:#1D2B47; --ink:#F1F5FB; --ink-soft:#A9B6CB;
    --berry:#FF6F97; --butter:#F5C94E; --mint:#6FCFA8; --line:#2E3F5E; --tint:#22304D; --tint2:#1B2A45;
  }
}
:root[data-theme="dark"]{
  --sky:#14203A; --paper:#1D2B47; --ink:#F1F5FB; --ink-soft:#A9B6CB;
  --berry:#FF6F97; --butter:#F5C94E; --mint:#6FCFA8; --line:#2E3F5E; --tint:#22304D; --tint2:#1B2A45;
}
*,*::before,*::after{box-sizing:inherit}
html{overflow-x:clip;scroll-padding-top:calc(env(safe-area-inset-top,0px) + var(--hdr) + 8px);scroll-behavior:smooth}
body{margin:0;background:var(--sky) radial-gradient(color-mix(in srgb,var(--berry) 16%,transparent) 1.2px,transparent 1.6px) 0 0/26px 26px;color:var(--ink);font:400 16px/1.6 var(--body);-webkit-font-smoothing:antialiased;overflow-x:clip}
img{max-width:100%;display:block}
button{font:inherit;color:inherit;cursor:pointer}
a{color:inherit}
:focus-visible{outline:3px solid var(--berry);outline-offset:3px;border-radius:8px}
.wrap{max-width:1160px;margin:0 auto;padding:0 20px}

/* header */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:30;background:color-mix(in srgb,var(--sky) 90%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 1px 0 var(--line)}
.infobar{background:#B93A85;color:#fff;font-size:.84rem;font-weight:500}
.infobar .wrap{display:flex;align-items:center;gap:18px;height:36px;white-space:nowrap}
.infobar a{text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.infobar a:hover{text-decoration:underline}
.infobar svg{width:15px;height:15px;flex:none}
.infobar .push{margin-left:auto}
.infobar .zl{background:#fff;color:#B93A85;border-radius:999px;padding:2px 10px;font-weight:700}
.top .main{display:flex;align-items:center;gap:24px;height:72px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.brand svg{width:48px;height:48px;flex:none;transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
.brand:hover svg{transform:rotate(-10deg) scale(1.08)}
.brand .wm{display:flex;flex-direction:column;line-height:1}
.brand .wm b{font:800 1.55rem/1 var(--display);letter-spacing:-.01em}
.brand .wm b i{color:var(--berry);font-style:normal}
.brand .wm small{font-size:.78rem;color:var(--berry);font-weight:600;margin-top:3px}
@media (max-width:720px){
  .infobar .addr,.infobar .hide-m{display:none}
  .infobar .wrap{gap:14px;justify-content:space-between}
  .infobar .push{margin-left:0}
  .brand svg{width:42px;height:42px}
  .brand .wm b{font-size:1.3rem}
  .brand .wm small{font-size:.7rem}
}
.logo{font:800 1.6rem/1 var(--display);text-decoration:none;display:flex;align-items:baseline;gap:2px;letter-spacing:-.01em}
.logo i{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--berry);margin-left:3px;transform:translateY(-2px)}
.nav{display:flex;gap:22px;margin-left:auto}
.nav a{text-decoration:none;font-weight:500;color:var(--ink-soft)}
.nav a:hover{color:var(--ink)}
.bagbtn{border:0;background:var(--ink);color:var(--sky);border-radius:999px;padding:9px 16px;font-weight:600;display:flex;gap:8px;align-items:center}
.bagbtn b{background:var(--butter);color:#1F2A44;border-radius:999px;min-width:22px;height:22px;display:grid;place-items:center;font-size:.8rem}
@media (max-width:720px){.nav{display:none}.bagbtn{margin-left:auto}}

/* hero */
.hero{padding:36px 0 56px;position:relative;overflow-x:clip}
.tape-box{overflow:hidden;padding:8px 0}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center}
.hero h1{font:800 clamp(2.5rem,5.6vw,4.5rem)/1.02 var(--display);margin:0 0 18px;letter-spacing:-.02em;max-width:12ch}
.hero p.lead{font-size:1.1rem;color:var(--ink-soft);max-width:44ch;margin:0 0 28px}
.cta{display:flex;flex-wrap:wrap;gap:12px}
.btn{border:0;border-radius:16px;padding:14px 22px;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:8px}
.btn-main{background:var(--berry);color:var(--berry-ink);box-shadow:0 4px 0 color-mix(in srgb,var(--berry) 60%,#000)}
.btn-main:active{transform:translateY(3px);box-shadow:0 1px 0 color-mix(in srgb,var(--berry) 60%,#000)}
.btn-ghost{background:transparent;border:2px solid var(--ink);color:var(--ink)}
.facts{display:flex;gap:26px;margin-top:34px;flex-wrap:wrap;color:var(--ink-soft);font-size:.95rem}
.facts strong{display:block;color:var(--ink);font:700 1.25rem/1.2 var(--display)}

/* the loop stack */
.stage{position:relative;height:min(560px,120vw);max-height:560px}
.line{position:absolute;left:-10%;right:-10%;top:18px;height:40px;pointer-events:none}
.line path{fill:none;stroke:var(--ink-soft);stroke-width:1.5;opacity:.5}
.stack{position:absolute;inset:34px 0 0;display:grid;place-items:center}
.card{position:absolute;width:min(300px,68vw);background:var(--paper);border-radius:6px;padding:12px 12px 16px;box-shadow:0 18px 30px -18px rgba(31,42,68,.55),0 2px 4px rgba(31,42,68,.08);transform-origin:50% -20px;transition:transform .7s cubic-bezier(.3,1.4,.5,1),opacity .45s ease;will-change:transform;cursor:pointer;user-select:none}
.card img{aspect-ratio:3/4;object-fit:cover;width:100%;border-radius:3px;pointer-events:none}
.card .pin{position:absolute;top:-16px;left:50%;width:14px;height:34px;margin-left:-7px;border-radius:4px;background:var(--pin,var(--butter));box-shadow:inset 0 -10px 0 rgba(0,0,0,.08)}
.card .cap{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;margin-top:10px}
.card .cap span{font:600 1rem/1.25 var(--display)}
.card .cap em{font-style:normal;font:700 .95rem/1 var(--display);color:var(--berry);white-space:nowrap}
.card[data-pos="0"]{transform:rotate(-3deg);z-index:5}
.card[data-pos="1"]{transform:translate(30px,14px) rotate(5deg) scale(.95);z-index:4}
.card[data-pos="2"]{transform:translate(-34px,26px) rotate(-9deg) scale(.9);z-index:3}
.card[data-pos="3"]{transform:translate(8px,34px) rotate(2deg) scale(.86);z-index:2;opacity:.9}
.card[data-pos="4"]{transform:translate(0,40px) scale(.82);z-index:1;opacity:0}
.card.out{transform:translate(-115%,-4%) rotate(-24deg)!important;opacity:0;z-index:6;transition:transform .55s cubic-bezier(.5,0,.7,.4),opacity .5s ease .1s}
.card.snap{transition:none!important}
.stack-hint{position:absolute;bottom:-4px;right:6px;font-size:.85rem;color:var(--ink-soft)}
@media (max-width:860px){
  .hero .wrap{grid-template-columns:1fr}
  .stage{height:470px}
}


/* 2.5D scroll scene */
.hero3d{position:relative;height:460vh;margin-top:calc(-1 * var(--hdr))}
.scene{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.scene canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:pan-y}
.beat{position:absolute;left:0;right:0;pointer-events:none;opacity:0;transition:opacity .35s ease}
.beat .wrap{pointer-events:none}
.beat.show{opacity:1}
.beat.show .wrap > *{pointer-events:auto}
.beat-1{bottom:120px}
.beat-1 h1{font:800 clamp(2.5rem,6.4vw,5.2rem)/1 var(--display);margin:0 0 16px;letter-spacing:-.02em;max-width:11ch;text-shadow:0 2px 0 var(--sky),0 0 30px var(--sky)}
.beat-1 p{font-size:1.08rem;color:var(--ink);max-width:40ch;margin:0 0 22px;background:color-mix(in srgb,var(--sky) 70%,transparent);border-radius:12px;padding:4px 0}
.beat-2{top:calc(var(--hdr) + 18px);text-align:center}
.beat-2 p,.beat-3 p{display:inline-block;background:var(--paper);border-radius:999px;padding:10px 20px;font-weight:600;box-shadow:0 10px 24px -14px rgba(31,42,68,.5);margin:0}
.beat-3{bottom:120px;text-align:center}
.beat-3 p{margin-bottom:14px}
.ruler{position:absolute;left:20px;right:20px;bottom:calc(22px + env(safe-area-inset-bottom,0px));max-width:760px;margin:0 auto;height:50px;background:var(--butter);color:#1F2A44;border:2px solid #1F2A44;border-radius:10px}
.ruler .fill{border-radius:8px 0 0 8px}
.ruler .fill{position:absolute;inset:0 auto 0 0;width:0;background:repeating-linear-gradient(90deg,rgba(31,42,68,.18) 0 1.5px,transparent 1.5px 9px);border-right:3px solid var(--berry)}
.ruler .ticks{position:absolute;inset:0;display:flex;justify-content:space-between;padding:0 10px;align-items:flex-end;font:700 .85rem/1 var(--display)}
.ruler .ticks span{padding-bottom:8px;position:relative}
.ruler .ticks span::before{content:"";position:absolute;left:50%;top:-30px;width:2px;height:20px;background:#1F2A44}
.ruler .now{position:absolute;top:-36px;left:0;font:800 .95rem/1 var(--display);background:var(--ink);color:var(--sky);padding:6px 10px;border-radius:999px;transform:translateX(-50%);white-space:nowrap}
.scroll-hint{position:absolute;right:20px;top:calc(var(--hdr) + 22px);font-size:.88rem;color:var(--ink-soft)}
.hero-static{display:none}
.no3d .hero3d{display:none}
.no3d .hero-static{display:block}
@media (max-width:720px){
  .beat-1{top:calc(var(--hdr) + 14px);bottom:auto}
  .beat-1 h1{font-size:2.3rem;margin-bottom:10px}
  .beat-1 p{font-size:.95rem;margin-bottom:14px}
  .beat-1 .btn-ghost{display:none}
  .beat-3{top:calc(var(--hdr) + 18px);bottom:auto}
  .deco-bunny{display:none}
  .ruler .ticks span:nth-child(even){visibility:hidden}
  .scroll-hint{display:none}
}


/* cute symbols */
.deco{position:absolute;pointer-events:none;z-index:0}
.deco svg{width:100%;height:100%;display:block}
.anim .deco{animation:bob 4.5s ease-in-out infinite;animation-delay:var(--dl,0s)}
@keyframes bob{50%{transform:translateY(-10px) rotate(var(--rt,8deg))}}
.rel{position:relative}
.rel > *:not(.deco){position:relative;z-index:1}
.stepicon{width:52px;height:52px;margin-bottom:10px}
.anim .buy div:hover .stepicon{animation:jelly .6s}

/* reveal on scroll */
.anim .rv{opacity:0;transform:translateY(28px) scale(.96);transition:opacity .6s ease,transform .8s cubic-bezier(.2,1.4,.4,1);transition-delay:var(--d,0s)}
.anim .rv.in{opacity:1;transform:none}
.anim h2.rv{transform:translateY(24px) rotate(-2deg)}
.anim h2.rv.in{transform:none}

/* playful interactions */
.anim .btn:hover,.anim .bagbtn:hover{animation:jelly .55s}
@keyframes jelly{0%,100%{transform:scale(1,1)}30%{transform:scale(1.12,.88)}50%{transform:scale(.92,1.08)}70%{transform:scale(1.04,.96)}}
.pill{transition:transform .2s cubic-bezier(.3,1.8,.5,1),background .2s}
.pill:active{transform:scale(.9)}
.item .ph{transition:transform .45s cubic-bezier(.3,1.5,.5,1),box-shadow .3s}
.item:hover .ph{transform:translateY(-8px) rotate(-1.5deg);box-shadow:0 18px 30px -18px rgba(193,64,140,.5)}
.anim .item:hover .tag{animation:wiggle .6s}
@keyframes wiggle{25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}
.bagbtn.bump b{animation:pop .5s cubic-bezier(.3,1.8,.5,1)}
@keyframes pop{40%{transform:scale(1.7)}}
.flyer{position:fixed;z-index:70;width:28px;height:28px;pointer-events:none;margin:-14px 0 0 -14px}
.burst{position:fixed;z-index:80;pointer-events:none;width:16px;height:16px;margin:-8px 0 0 -8px}
.ring{position:fixed;z-index:80;pointer-events:none;width:34px;height:34px;margin:-17px 0 0 -17px;border:3px solid var(--berry);border-radius:50%}
.finder{box-shadow:0 20px 40px -30px rgba(31,42,68,.35);border:2px solid var(--tint)}
.item .ph{box-shadow:0 10px 24px -20px rgba(31,42,68,.5)}
.pill{background:var(--paper)}
footer .brand{margin-bottom:10px}

/* tape measure loop */
.tape{background:var(--butter);color:#1F2A44;border-block:2px solid #1F2A44;overflow:hidden;position:relative;transform:rotate(-1.2deg);margin:0 -12px}
.tape-track{display:flex;width:max-content;animation:tape 38s linear infinite}
.tape:hover .tape-track,.tape:focus-within .tape-track{animation-play-state:paused}
@keyframes tape{to{transform:translateX(-50%)}}
.tape-seg{display:flex;flex:none}
.cm{width:120px;height:70px;flex:none;position:relative;border:0;background:
  repeating-linear-gradient(90deg,#1F2A44 0 1.5px,transparent 1.5px 12px) top left/100% 12px no-repeat,
  linear-gradient(90deg,#1F2A44 0 2px,transparent 2px) top left/100% 26px no-repeat,
  repeating-linear-gradient(90deg,transparent 0 58.5px,#1F2A44 58.5px 60px,transparent 60px) top left/100% 19px no-repeat;
  text-align:left;padding:28px 0 0 6px}
.cm b{font:800 1.45rem/1 var(--display)}
.cm small{font-size:.72rem;font-weight:600;margin-left:3px}
.cm:hover b,.cm:focus-visible b{color:var(--berry)}
.cm.active b{background:#1F2A44;color:var(--butter);border-radius:6px;padding:0 5px}
.tape-note{text-align:center;color:var(--ink-soft);font-size:.92rem;margin:18px 0 0}

/* shop */
section{padding:72px 0}
h2{font:800 clamp(1.9rem,3.6vw,2.7rem)/1.08 var(--display);margin:0 0 10px;letter-spacing:-.015em}
.sub{color:var(--ink-soft);margin:0 0 26px;max-width:56ch}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.pill{border:2px solid var(--line);background:var(--paper);border-radius:999px;padding:7px 15px;font-weight:500;font-size:.93rem}
.pill[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--sky)}
.sizechip{display:none;align-items:center;gap:8px;margin:4px 0 18px;font-size:.93rem}
.sizechip.on{display:flex}
.sizechip button{border:0;background:var(--berry);color:#fff;border-radius:999px;padding:5px 12px;font-weight:600}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:30px 20px}
.item{display:flex;flex-direction:column}
.item .ph{position:relative;border-radius:22px;overflow:hidden;background:var(--paper);aspect-ratio:3/4}
.item .ph img{width:100%;height:100%;object-fit:cover}
.item .tag{position:absolute;left:10px;top:10px;background:var(--paper);color:var(--ink);font-size:.78rem;font-weight:600;padding:3px 10px;border-radius:999px}
.item .tag.new{background:var(--mint);color:#10342A}
.item h3{font:700 1.08rem/1.25 var(--display);margin:12px 0 2px}
.item .price{font-weight:600}
.item .sizes{font-size:.84rem;color:var(--ink-soft);margin:2px 0 10px}
.item .pick{margin-top:auto;align-self:flex-start;border:2px solid var(--ink);background:transparent;border-radius:12px;padding:7px 14px;font-weight:600;font-size:.92rem}
.item .pick:hover{background:var(--ink);color:var(--sky)}
.empty{grid-column:1/-1;background:var(--paper);border-radius:22px;padding:28px;text-align:center}

/* size finder */
.finder{background:var(--paper);border-radius:32px;padding:clamp(24px,4vw,48px);display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:center}
.finder label{font-weight:600;display:block;margin-bottom:10px}
.height-out{font:800 clamp(3.4rem,8vw,5.4rem)/1 var(--display);letter-spacing:-.03em}
.height-out small{font-size:.35em;margin-left:4px;color:var(--ink-soft)}
input[type=range]{width:100%;accent-color:var(--berry);height:36px}
.result{background:var(--tint);border-radius:22px;padding:24px}
.result .big{font:800 2.4rem/1 var(--display);color:var(--berry)}
.result p{margin:8px 0 16px;color:var(--ink-soft)}
.sizetable{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:14px}
.sizetable td,.sizetable th{padding:6px 8px;text-align:left;border-bottom:1px solid var(--line)}
.sizetable th{font-weight:600;color:var(--ink-soft)}
.sizetable tr.hit td{background:color-mix(in srgb,var(--butter) 45%,transparent);font-weight:600}
.tablewrap{overflow-x:auto}
details summary{cursor:pointer;font-weight:600;margin-top:10px}
@media (max-width:820px){.finder{grid-template-columns:1fr}}

/* how to buy + store */
.buy{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}
.buy div{border-top:3px solid var(--ink);padding-top:14px}
.buy h3{font:700 1.2rem/1.2 var(--display);margin:0 0 6px}
.buy p{margin:0;color:var(--ink-soft)}
.store{display:grid;grid-template-columns:1.1fr .9fr;gap:30px;align-items:stretch}
.store-card{background:#2A3557;color:var(--sky);border-radius:32px;padding:clamp(24px,4vw,44px);position:relative;overflow:hidden}
.store-card h2{color:var(--sky)}
.store-card p{color:color-mix(in srgb,var(--sky) 80%,transparent);margin:0 0 6px}
.store-card .row{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.store-card .btn-ghost{border-color:var(--sky);color:var(--sky)}
.store-note{background:var(--butter);color:#1F2A44;border-radius:32px;padding:28px;position:relative;overflow:hidden;min-height:180px;font:600 1.25rem/1.35 var(--display);display:flex;align-items:flex-end}
@media (max-width:820px){.store{grid-template-columns:1fr}}
footer{padding:30px 0 90px;color:var(--ink-soft);font-size:.88rem}

/* sheet + drawer */
.scrim{position:fixed;inset:0;background:rgba(20,30,50,.45);z-index:40;opacity:0;pointer-events:none;transition:opacity .25s}
.scrim.on{opacity:1;pointer-events:auto}
.sheet{position:fixed;left:50%;bottom:0;width:min(520px,100%);transform:translate(-50%,105%);background:var(--paper);border-radius:28px 28px 0 0;z-index:50;padding:22px 22px calc(24px + env(safe-area-inset-bottom,0px));transition:transform .35s cubic-bezier(.2,.9,.3,1.1),visibility 0s .35s;max-height:90vh;overflow:auto}
.sheet,.drawer{visibility:hidden}
.sheet.on,.drawer.on{visibility:visible}
.sheet.on{transform:translate(-50%,0)}
.sheet .grab{width:44px;height:5px;border-radius:9px;background:var(--line);margin:-8px auto 16px}
.sheet .head{display:flex;gap:14px;align-items:center}
.sheet .head img{width:84px;border-radius:14px;aspect-ratio:3/4;object-fit:cover}
.sheet h3{font:700 1.25rem/1.2 var(--display);margin:0}
.sizes-pick{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}
.sizes-pick button{border:2px solid var(--line);background:transparent;border-radius:12px;min-width:58px;padding:8px 10px;font-weight:600}
.sizes-pick button[aria-pressed="true"]{border-color:var(--berry);background:var(--berry);color:#fff}
.qty{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.qty button{width:38px;height:38px;border-radius:12px;border:2px solid var(--line);background:transparent;font-weight:700}
.full{width:100%;justify-content:center}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.drawer{position:fixed;top:0;right:0;height:100%;width:min(420px,100%);background:var(--paper);z-index:50;transform:translateX(105%);transition:transform .35s cubic-bezier(.2,.9,.3,1),visibility 0s .35s;display:flex;flex-direction:column;padding:calc(20px + env(safe-area-inset-top,0px)) 20px calc(20px + env(safe-area-inset-bottom,0px))}
.drawer.on{transform:none}
.sheet.on,.drawer.on{transition-delay:0s,0s}
.drawer header{display:flex;justify-content:space-between;align-items:center}
.drawer h3{font:800 1.5rem/1 var(--display);margin:0}
.x{border:0;background:var(--tint);border-radius:12px;width:38px;height:38px;font-size:1.2rem}
.lines{flex:1;overflow:auto;margin:16px 0}
.ln{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.ln img{width:56px;aspect-ratio:3/4;object-fit:cover;border-radius:10px}
.ln b{font:700 1rem/1.2 var(--display);display:block}
.ln small{color:var(--ink-soft)}
.ln button{border:0;background:none;color:var(--ink-soft);text-decoration:underline;font-size:.85rem}
.drawer .note{font-size:.85rem;color:var(--ink-soft);margin:0 0 12px}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translate(-50%,160%);background:var(--ink);color:var(--sky);padding:12px 18px;border-radius:14px;z-index:60;transition:transform .3s;max-width:calc(100% - 32px);font-size:.93rem}
.toast{visibility:hidden}
.toast.on{transform:translate(-50%,0);visibility:visible}

@media (prefers-reduced-motion:reduce){
  *{scroll-behavior:auto!important}
  .tape-track{animation:none}
  .card{transition:none}
}
