/* YOUR-STORE desktop.css (1280px layout). Self-contained: shared component rules (same as app.css) + desktop layout.
   Loaded INSTEAD of app.css on the desktop view. Source of shared rules: app.css; keep in sync when changing shared components. */
/* YOUR-STORE app.css — assembled from approved mockups */
:root{--g:#0E9F6E;--gd:#087A55;--gl:#E4F7EE;--sun:#FFD21F;--sund:#F5B800;--co:#FF6B5B;--sky:#4CC3F7;--li:#B79CFF;--cream:#FFF9E8;--ink:#14171F;--mut:#6B7280}
body{margin:0;background:#EDE7D6;font-family:'Onest',sans-serif;color:var(--ink);-webkit-tap-highlight-color:transparent}
*{box-sizing:border-box}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}
.wch{display:inline-flex;align-items:center;gap:3px;background:#FFF0B8;color:#7A5200;font-weight:800;font-size:11px;padding:2px 7px;border-radius:999px;white-space:nowrap}
.px{padding-left:14px;padding-right:14px}
.h{font-family:'Nunito','Onest',sans-serif;font-weight:900;letter-spacing:-.015em;line-height:1.1;margin:0}
.mut{color:var(--mut)}
@keyframes up{from{opacity:0;transform:translateY(22px) scale(.96)}to{opacity:1;transform:none}}
@keyframes shimmer{0%{background-position:-200px 0}100%{background-position:200px 0}}
@keyframes bumpA{0%{transform:scale(1)}35%{transform:scale(1.7) rotate(-8deg)}100%{transform:scale(1)}}
@keyframes bumpB{0%{transform:scale(1)}35%{transform:scale(1.7) rotate(-8deg)}100%{transform:scale(1)}}
@keyframes heart{0%{transform:scale(1)}35%{transform:scale(1.5)}70%{transform:scale(.9)}100%{transform:scale(1)}}
@keyframes pop{0%{transform:scale(0)}70%{transform:scale(1.14)}100%{transform:scale(1)}}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes ping{0%{transform:scale(.6);opacity:.9}100%{transform:scale(2.4);opacity:0}}
@keyframes tick{0%{transform:scale(.8);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes flt{0%,100%{transform:translateY(0) rotate(var(--r,0deg))}50%{transform:translateY(-12px) rotate(calc(var(--r,0deg) + 5deg))}}
@keyframes bob{0%,100%{transform:translateY(0) rotate(var(--r,8deg))}50%{transform:translateY(-7px) rotate(calc(var(--r,8deg) - 4deg))}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes twinkle{0%,100%{transform:scale(1) rotate(0);opacity:1}50%{transform:scale(.55) rotate(25deg);opacity:.55}}
@keyframes wave{to{transform:translateX(-50%)}}
@keyframes mq{to{transform:translateX(-50%)}}
@keyframes drive{0%{left:-60px}100%{left:100%}}
@keyframes wob{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
@keyframes wig{0%,100%{transform:rotate(0)}20%{transform:rotate(-14deg)}40%{transform:rotate(12deg)}60%{transform:rotate(-8deg)}80%{transform:rotate(5deg)}}
@keyframes cfA{0%{transform:translate(0,0) rotate(0) scale(.4);opacity:1}100%{transform:translate(var(--x),var(--y)) rotate(var(--rot)) scale(1);opacity:0}}
@keyframes cfB{0%{transform:translate(0,0) rotate(0) scale(.4);opacity:1}100%{transform:translate(var(--x),var(--y)) rotate(var(--rot)) scale(1);opacity:0}}
@keyframes sheen{0%{transform:translateX(-120%) skewX(-20deg)}60%,100%{transform:translateX(320%) skewX(-20deg)}}
@keyframes underline{to{stroke-dashoffset:0}}
.in{animation:up .7s cubic-bezier(.34,1.4,.4,1) both}
.rev{animation:up .8s cubic-bezier(.34,1.4,.4,1) both}
@supports (animation-timeline:view()){
.rev{animation:up linear both;animation-timeline:view();animation-range:entry 0% entry 55%}
}
.fl{position:absolute;pointer-events:none;animation:flt var(--t,5s) ease-in-out infinite;animation-delay:var(--d,0s)}
.tw{position:absolute;pointer-events:none;animation:twinkle var(--t,2.4s) ease-in-out infinite;animation-delay:var(--d,0s)}
/* header */
.icb{position:relative;width:44px;height:44px;border-radius:50%;background:transparent;border:0;display:flex;align-items:center;justify-content:center;color:var(--ink);padding:0;transition:background .2s,transform .2s cubic-bezier(.34,1.56,.64,1)}
.icb:active{background:#F0F1F4;transform:scale(.88)}
.icb.fill{background:var(--g);color:#fff}
.badge{position:absolute;top:-2px;right:-3px;min-width:20px;height:20px;border-radius:10px;background:var(--co);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;padding:0 5px;border:2px solid #fff}
.bumpA{animation:bumpA .5s}
.bumpB{animation:bumpB .5s}
.search{display:flex;align-items:center;gap:10px;margin:0 14px 12px;height:46px;background:#EDF3EF;border-radius:999px;padding:0 16px;color:var(--mut);box-shadow:inset 0 0 0 2px #DCE8E1;transition:box-shadow .2s}
.search:focus-within{box-shadow:0 0 0 3px rgba(14,159,110,.25);background:#fff}
.search input{border:0;background:transparent;outline:0;font-family:inherit;font-size:16px;width:100%;color:var(--ink)}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:16px;padding:0 22px;min-height:54px;font-weight:800;font-size:16px;color:#fff;background:var(--g);transition:transform .2s cubic-bezier(.34,1.56,.64,1),background .2s;position:relative;overflow:hidden;box-shadow:0 5px 0 var(--gd)}
.btn::after{content:"";position:absolute;top:0;left:0;width:30%;height:100%;background:rgba(255,255,255,.35);animation:sheen 3.2s ease-in-out infinite;pointer-events:none}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--gd)}
.btn.full{width:100%}
.btn.line{background:#fff;color:var(--gd);box-shadow:inset 0 0 0 2px var(--g),0 5px 0 var(--g)}
.btn.line::after{display:none}
.btn.line:active{box-shadow:inset 0 0 0 2px var(--g),0 1px 0 var(--g)}
.btn.sun{background:var(--sun);color:var(--ink);box-shadow:0 5px 0 var(--sund)}
.btn.sun:active{box-shadow:0 1px 0 var(--sund)}
.btn.dark{background:var(--ink);box-shadow:0 5px 0 #000}
/* hero */
.ul{position:relative;display:inline-block;color:var(--sun)}
.ul svg{position:absolute;left:-2%;bottom:-9px;width:104%;height:12px;overflow:visible}
.ul path{stroke-dasharray:240;stroke-dashoffset:240;animation:underline 1s .6s ease-out forwards}
.sk{position:absolute;background:#fff;border-radius:26px;box-shadow:0 14px 28px rgba(0,0,0,.22);overflow:hidden;animation:bob var(--t,5s) ease-in-out infinite;animation-delay:var(--d,0s)}
.sk img{width:100%;height:100%;object-fit:contain;display:block}
.sk .lb{position:absolute;left:8px;bottom:8px;background:var(--ink);color:#fff;font-weight:800;font-size:11.5px;border-radius:8px;padding:3px 8px}
.rbadge{position:absolute;width:104px;height:104px;z-index:3}
.rbadge .spin{width:100%;height:100%;animation:spin 14s linear infinite}
.rbadge .disc{position:absolute;inset:0;border-radius:50%;background:var(--sun);box-shadow:0 8px 18px rgba(0,0,0,.25)}
.rbadge .c{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:30px;animation:wob 2.2s ease-in-out infinite}
.wv{position:relative;height:34px;overflow:hidden;line-height:0;margin-top:-34px;z-index:4}
.wv svg{width:200%;height:34px;display:block;animation:wave 9s linear infinite}
.wv.rv svg{animation-direction:reverse;animation-duration:12s}
.mq{background:var(--sun);color:var(--ink);transform:rotate(-1.5deg);margin:10px -10px 0;padding:11px 0;overflow:hidden;white-space:nowrap;font-family:'Nunito',sans-serif;font-weight:900;font-size:15px;box-shadow:0 4px 0 var(--sund)}
.mq .tr{display:inline-block;animation:mq 16s linear infinite}
.mq span{margin:0 14px}
/* categories */
.ct{position:relative;border-radius:26px;padding:16px;height:152px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.ct:active{transform:scale(.94) rotate(-2deg)}
.ct img{position:absolute;right:-6px;top:-4px;width:108px;height:108px;object-fit:contain;mix-blend-mode:multiply;--r:8deg;animation:bob 4.5s ease-in-out infinite}
.ct .t{font-family:'Nunito',sans-serif;font-weight:900;font-size:19px;line-height:1.1;position:relative}
.ct .n{font-size:12.5px;font-weight:600;opacity:.65;margin-top:3px;position:relative}
.ct .arr{position:absolute;right:12px;bottom:12px;width:32px;height:32px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center}
/* cards */
.card{display:flex;flex-direction:column;background:#fff;border-radius:24px;overflow:hidden;position:relative;box-shadow:0 8px 22px rgba(20,23,31,.07);transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.card:active{transform:scale(.97)}
.ph{position:relative;display:block;aspect-ratio:1/1;overflow:hidden;margin:8px 8px 0;border-radius:18px}
.ph::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.7) 50%,rgba(255,255,255,0) 100%);background-size:400px 100%;animation:shimmer 1.4s linear infinite}
.ph img{position:relative;width:100%;height:100%;object-fit:contain;display:block;mix-blend-mode:multiply;animation:tick .6s both;transition:transform .4s cubic-bezier(.34,1.56,.64,1)}
.card:active .ph img{transform:scale(1.1) rotate(-3deg)}
.card .inf{padding:10px 12px 12px;display:flex;flex-direction:column;gap:6px;flex-grow:1}
.nm{font-size:13.5px;line-height:1.3;font-weight:600;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:35px}
.pr{font-family:'Nunito',sans-serif;font-weight:900;font-size:20px;letter-spacing:-.02em}
.old{text-decoration:line-through;color:#9AA1AE;font-size:12.5px;font-weight:500}
.stk{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--g)}
.dotg{position:relative;width:7px;height:7px;border-radius:50%;background:var(--g)}
.dotg::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--g);animation:ping 1.8s ease-out infinite}
.buy{margin-top:4px;border:0;border-radius:14px;min-height:44px;font-weight:800;font-size:14.5px;background:var(--g);color:#fff;box-shadow:0 4px 0 var(--gd);transition:transform .15s,box-shadow .15s,background .25s}
.buy:active{transform:translateY(3px);box-shadow:0 1px 0 var(--gd)}
.buy.in-cart{background:var(--gl);color:var(--gd);box-shadow:0 4px 0 #BFE8D6}
.sale,.hit,.new{position:absolute;top:8px;left:8px;z-index:2;font-weight:900;font-size:12px;padding:4px 9px;border-radius:10px;transform:rotate(-6deg);font-family:'Nunito',sans-serif;box-shadow:0 3px 0 rgba(0,0,0,.12)}
.sale{background:var(--co);color:#fff}
.hit{background:var(--sun);color:var(--ink)}
.new{background:var(--sky);color:#fff}
.fav{position:absolute;top:10px;right:10px;z-index:2;width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.9);border:0;border-radius:50%;color:#9AA1AE;box-shadow:0 2px 6px rgba(20,23,31,.1);transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.fav:active{transform:scale(1.25);color:var(--co)}
.chip{flex:0 0 auto;border:0;background:#fff;border-radius:999px;padding:0 18px;min-height:42px;font-weight:700;font-size:14px;color:var(--ink);display:inline-flex;align-items:center;white-space:nowrap;box-shadow:0 2px 0 rgba(20,23,31,.08);transition:background .2s,color .2s,transform .2s cubic-bezier(.34,1.56,.64,1)}
.chip:active{transform:scale(.93)}
.chip.on{background:var(--ink);color:#fff;box-shadow:0 3px 0 #000}
/* steps + perks */
.step{display:flex;gap:14px;align-items:flex-start;background:#fff;border-radius:22px;padding:16px;box-shadow:0 6px 18px rgba(20,23,31,.06)}
.num{flex:0 0 46px;height:46px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-family:'Nunito',sans-serif;font-weight:900;font-size:22px;color:#fff;transform:rotate(-6deg)}
.road{position:relative;height:46px;margin:6px 0 2px;overflow:hidden}
.road::after{content:"";position:absolute;left:0;right:0;bottom:6px;border-bottom:3px dashed rgba(20,23,31,.25)}
.truck{position:absolute;bottom:9px;animation:drive 7s linear infinite}
.perk{border-radius:24px;padding:16px 14px;display:flex;flex-direction:column;gap:10px;transform:rotate(var(--r,0deg));transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.perk:active{transform:rotate(0) scale(.96)}
.perk .pi{width:46px;height:46px;border-radius:16px;background:#fff;display:flex;align-items:center;justify-content:center;color:var(--ink);animation:wob 3s ease-in-out infinite}
/* nav + footer */
.overlay{position:fixed;inset:0;background:rgba(20,23,31,.5);transition:opacity .3s;z-index:60}
.fav.on{color:var(--co);animation:heart .5s}
.fav.on svg{fill:var(--co)}
.srow{display:flex;align-items:center;gap:12px;background:#fff;border-radius:20px;padding:8px 12px 8px 8px;margin-bottom:10px;box-shadow:0 4px 14px rgba(20,23,31,.05)}
.sth{flex:0 0 66px;height:66px;border-radius:16px;overflow:hidden}
.sth img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply}
.mini{display:flex;align-items:center;background:#F3F4F6;border-radius:12px}
.mini button{width:30px;height:30px;border:0;background:transparent;font-weight:800;font-size:17px;padding:0;border-radius:12px}
.foot{position:relative;margin-top:36px;background:#DDF3E8;color:var(--ink);padding:30px 18px 28px}
.foot a,.foot span.l{display:block;padding:7px 0;color:#2F3B46;font-weight:600}
.foot .wvt{position:absolute;left:0;right:0;top:-33px;line-height:0;overflow:hidden;height:34px}
.foot .wvt svg{width:200%;height:34px;animation:wave 11s linear infinite}
.field{display:block;margin-bottom:12px;font-weight:700;font-size:13px;color:var(--mut)}
.field input,.field textarea{display:block;width:100%;margin-top:6px;border:0;border-radius:16px;padding:0 16px;min-height:54px;font-family:inherit;font-size:16px;background:#fff;color:var(--ink);outline:none;box-shadow:inset 0 0 0 2px #E7E9EE;transition:box-shadow .2s}
.field textarea{padding:14px 16px;min-height:96px;resize:none}
.field input:focus,.field textarea:focus{box-shadow:inset 0 0 0 2px var(--g),0 0 0 5px rgba(14,159,110,.16)}
.pay{flex:1;border:0;border-radius:16px;min-height:54px;padding:6px;font-weight:700;font-size:14px;background:#fff;color:var(--ink);box-shadow:inset 0 0 0 2px #E7E9EE;transition:background .2s}
.pay.on{box-shadow:inset 0 0 0 2px var(--g);background:var(--gl)}
.qty{display:flex;align-items:center;background:#fff;border-radius:16px;box-shadow:inset 0 0 0 2px #E7E9EE}
.qb{width:48px;height:48px;border-radius:16px;border:0;background:transparent;font-weight:700;font-size:24px;line-height:1;color:var(--ink);padding:0}
.qb:active{background:#F0F1F4}
.check{stroke-dasharray:60;stroke-dashoffset:60;animation:draw .6s .3s forwards}
.pop{animation:pop .6s cubic-bezier(.34,1.56,.64,1) both}
.toast{position:fixed;left:50%;bottom:92px;z-index:80;background:var(--ink);color:#fff;border-radius:16px;padding:13px 20px;font-weight:700;font-size:14px;transition:transform .45s cubic-bezier(.34,1.56,.64,1),opacity .3s;display:flex;gap:10px;align-items:center;white-space:nowrap}
.cf{position:fixed;left:50%;bottom:104px;width:0;height:0;z-index:90;pointer-events:none}
.cf i{position:absolute;left:0;top:0;width:10px;height:14px;border-radius:3px;opacity:0;background:var(--c)}
.cf.A i{animation:cfA .9s cubic-bezier(.2,.8,.3,1) both}
.cf.B i{animation:cfB .9s cubic-bezier(.2,.8,.3,1) both}
@keyframes nudge{0%,100%{transform:translateX(-4px)}50%{transform:translateX(4px)}}
.ann{position:relative;overflow:hidden;background:var(--g);color:#fff;font-weight:800;font-size:13px;padding:9px 0;white-space:nowrap}
.ann .tr{display:inline-flex;align-items:center;height:22px;line-height:22px;animation:mq 26s linear infinite}
.ann:hover .tr{animation-play-state:paused}
.ann .ai{display:inline-flex;align-items:center;gap:8px;margin:0 6px;height:22px;line-height:22px}
.ann .ai b{color:var(--sun);font-weight:900}
.ann .tk{display:inline-flex;align-items:center;height:22px;animation:nudge 1.4s ease-in-out infinite}
.ann .as{display:inline-flex;align-items:center;height:22px;line-height:22px;margin:0 14px;color:var(--sun);animation:twinkle 2.2s ease-in-out infinite}
.ann::after{content:"";position:absolute;top:0;left:0;width:22%;height:100%;background:rgba(255,255,255,.16);animation:sheen 5s ease-in-out infinite;pointer-events:none}
.fb{background:#fff;border-radius:20px;padding:13px 14px 16px;box-shadow:0 4px 14px rgba(20,23,31,.06)}
.fbt{font-weight:800;font-size:13.5px;line-height:1.35;margin-bottom:14px}
.fbar{position:relative;height:10px;border-radius:5px;background:#E6ECE8;margin:0 4px}
.fbar i{position:absolute;left:0;top:0;bottom:0;border-radius:5px;background:linear-gradient(90deg,#0E9F6E,#3DDC97);transition:width .7s cubic-bezier(.34,1.2,.4,1)}
.fbar b{position:absolute;top:-17px;transform:translateX(-50%);transition:left .7s cubic-bezier(.34,1.2,.4,1);line-height:0}
.tagp{display:inline-block;margin-top:10px;background:rgba(255,255,255,.75);border-radius:999px;padding:4px 10px;font-size:11.5px;font-weight:800}
.vplay{position:relative;width:76px;height:76px;border-radius:50%;background:var(--sun);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 0 var(--sund);animation:wob 2.4s ease-in-out infinite}
.vplay::before{content:"";position:absolute;inset:0;border-radius:50%;background:var(--sun);animation:ping 2s ease-out infinite;z-index:-1}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}}
/* product page */
.shd{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.shi{width:42px;height:42px;border-radius:14px;display:flex;align-items:center;justify-content:center;color:var(--ink);transform:rotate(-5deg)}
.gct{position:absolute;right:14px;bottom:14px;background:var(--ink);color:#fff;font-weight:800;font-size:12.5px;padding:5px 11px;border-radius:999px;z-index:3}
.blk{background:#fff;padding:18px 14px;border-radius:28px}
.spec{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:2px dotted #E7E9EE;font-size:14.5px;font-weight:600}
.overlay{position:fixed;inset:0;background:rgba(20,23,31,.5);transition:opacity .3s;z-index:60}
.favon{animation:heart .5s}
.ph-d{border:2px dashed #C9CEDA;border-radius:20px;text-align:center;font-weight:700;color:#8B93A3;line-height:1.5;display:flex;align-items:center;justify-content:center}
.fa{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s cubic-bezier(.2,.8,.2,1)}
.fa.open{grid-template-rows:1fr}
.fa>div{overflow:hidden}
.faq{background:#fff;border-radius:20px;margin-bottom:10px;box-shadow:0 4px 14px rgba(20,23,31,.05);overflow:hidden}
.faq button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;border:0;background:transparent;padding:16px;font-family:'Nunito',sans-serif;font-weight:800;font-size:16px;color:var(--ink)}
.faq .pl{flex:0 0 30px;height:30px;border-radius:50%;background:var(--gl);color:var(--gd);display:flex;align-items:center;justify-content:center;transition:transform .35s cubic-bezier(.34,1.56,.64,1),background .2s}
.faq .pl.open{transform:rotate(135deg);background:var(--sun);color:var(--ink)}
.rv-c{background:#fff;border-radius:20px;padding:14px;margin-bottom:10px;box-shadow:0 4px 14px rgba(20,23,31,.05)}
.stars{display:flex;gap:2px}
.sbtn{border:0;background:transparent;padding:2px;transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.sbtn:active{transform:scale(1.4) rotate(-12deg)}
/* cart page */
.cs{background:#fff;border-radius:28px;padding:18px 16px;box-shadow:0 8px 22px rgba(20,23,31,.07);margin-bottom:14px}
.csh{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.csn{flex:0 0 38px;height:38px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-family:'Nunito',sans-serif;font-weight:900;font-size:18px;color:#fff;transform:rotate(-6deg)}
.stp{display:flex;align-items:center;gap:6px;padding:16px 14px 6px}
.sp{flex:1;display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:800;color:#8B93A3}
.sp i{display:block;height:6px;border-radius:3px;background:#DCE3DF;transition:background .4s}
.sp.on{color:var(--gd)}
.sp.on i{background:var(--g)}
.opt{display:flex;gap:12px;align-items:center;background:#fff;border-radius:18px;padding:12px 14px;box-shadow:inset 0 0 0 2px #E7E9EE;margin-bottom:8px;text-align:left;width:100%;border:0;font-family:inherit;font-weight:600;font-size:14px;color:var(--ink);transition:background .2s,box-shadow .2s}
.opt.on{box-shadow:inset 0 0 0 2px var(--g);background:var(--gl)}
.opt .rd{flex:0 0 22px;height:22px;border-radius:50%;box-shadow:inset 0 0 0 2px #C9CEDA;transition:box-shadow .2s,background .2s}
.opt.on .rd{box-shadow:inset 0 0 0 7px var(--g)}
.sug{background:#fff;border-radius:16px;box-shadow:0 10px 24px rgba(20,23,31,.14);margin-top:6px;overflow:hidden;animation:up .3s both}
.sug button{display:block;width:100%;text-align:left;border:0;background:#fff;padding:13px 16px;font-family:inherit;font-weight:600;font-size:15px;border-bottom:1px solid #EEF1EF}
.sug button:active{background:var(--gl)}
.ckb{flex:0 0 26px;height:26px;border-radius:8px;border:0;box-shadow:inset 0 0 0 2px #C9CEDA;background:#fff;display:flex;align-items:center;justify-content:center;color:transparent;padding:0;transition:background .2s,color .2s}
.ckb.on{background:var(--g);color:#fff;box-shadow:none}
.sumr{display:flex;justify-content:space-between;font-size:14.5px;font-weight:600;padding:6px 0}
.toast.u{padding:8px 8px 8px 18px}
/* info pages */
.ph-e{display:inline-block;background:#FFF4C2;color:#7A5200;border-radius:8px;padding:1px 7px;font-weight:700;box-shadow:inset 0 0 0 1.5px rgba(245,184,0,.6);white-space:normal}
.card2{background:#fff;border-radius:26px;padding:18px;box-shadow:0 8px 22px rgba(20,23,31,.07)}
.vc{border-radius:24px;padding:16px 14px 18px;transform:rotate(var(--r,0deg))}
.vc .vi{width:54px;height:54px;border-radius:18px;background:#fff;display:flex;align-items:center;justify-content:center;margin-bottom:12px;animation:wob 3.2s ease-in-out infinite}
.vc b{display:block;font-family:'Nunito',sans-serif;font-weight:900;font-size:17px;line-height:1.15;margin-bottom:5px}
.vc span.t{display:block;font-size:13px;line-height:1.45;font-weight:600;opacity:.8}
.st2{position:relative;display:flex;gap:14px;padding-bottom:18px}
.st2:not(:last-child)::before{content:"";position:absolute;left:22px;top:52px;bottom:2px;border-left:3px dotted rgba(14,159,110,.45)}
.st2 .num{flex:0 0 46px}
.st2 b{display:block;font-family:'Nunito',sans-serif;font-weight:900;font-size:17px;margin-top:2px}
.st2 span.t{display:block;font-size:14px;line-height:1.5;color:#4B5563;font-weight:500;margin-top:3px}
.rq{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:2px dotted #E7E9EE;font-size:14px;font-weight:600;align-items:flex-start}
.rq:last-child{border-bottom:0}
.rq .k{color:var(--mut);flex:0 0 auto;font-weight:700}
.rq .v{text-align:right;min-width:0}
.fa{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s cubic-bezier(.2,.8,.2,1)}
.fa.open{grid-template-rows:1fr}
.fa>div{overflow:hidden}
.faq{background:#fff;border-radius:20px;margin-bottom:10px;box-shadow:0 4px 14px rgba(20,23,31,.05);overflow:hidden;scroll-margin-top:136px}
.faq>button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;border:0;background:transparent;padding:15px 16px;font-family:'Nunito',sans-serif;font-weight:800;font-size:15.5px;line-height:1.25;color:var(--ink)}
.faq .pl{flex:0 0 30px;height:30px;border-radius:50%;background:var(--gl);color:var(--gd);display:flex;align-items:center;justify-content:center;transition:transform .35s cubic-bezier(.34,1.56,.64,1),background .2s}
.faq .pl.open{transform:rotate(135deg);background:var(--sun);color:var(--ink)}
.ab{padding:0 16px 16px;font-size:14px;line-height:1.6;color:#374151;font-weight:500}
.ab p{margin:0 0 9px}
.ab p:last-child{margin:0}
.ab ul{margin:6px 0 9px;padding-left:18px}
.ab li{margin-bottom:5px}
.ck{list-style:none;padding:0!important;margin:0}
.ck li{display:flex;gap:9px;align-items:flex-start;margin-bottom:9px;font-size:14px;line-height:1.5;font-weight:600}
.ck li i{flex:0 0 22px;height:22px;border-radius:50%;background:var(--gl);color:var(--gd);display:flex;align-items:center;justify-content:center;margin-top:1px}
.dl{border-radius:24px;padding:16px;display:flex;gap:14px;align-items:center;margin-bottom:10px}
.dl .di{flex:0 0 56px;height:56px;border-radius:18px;background:#fff;display:flex;align-items:center;justify-content:center;animation:wob 3.4s ease-in-out infinite}
.dl b{display:block;font-family:'Nunito',sans-serif;font-weight:900;font-size:17px}
.dl span.t{display:block;font-size:13px;line-height:1.4;font-weight:600;opacity:.8;margin-top:2px}
.on-n{flex:0 0 28px;height:28px;border-radius:9px;background:var(--g);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:14px;transform:rotate(-6deg)}
.draft{display:flex;gap:12px;align-items:flex-start;background:#FFF4C2;border-radius:20px;padding:14px 16px;box-shadow:inset 0 0 0 2px rgba(245,184,0,.55)}
.lk{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border-radius:20px;padding:14px 16px;margin-bottom:10px;font-weight:800;box-shadow:0 4px 14px rgba(20,23,31,.05);transition:transform .25s cubic-bezier(.34,1.56,.64,1)}
.lk:active{transform:scale(.97)}
.lk i{width:32px;height:32px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center}
/* ---- runtime additions ---- */
.cnt{font-variant-numeric:tabular-nums}
.toast{transform:translate(-50%,160%);opacity:0;pointer-events:none}
.toast.show{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.toast .tsub{display:block;font-size:12px;font-weight:600;opacity:.8;margin-top:1px}
.overlay{opacity:0;pointer-events:none}
.overlay.on{opacity:1;pointer-events:auto}
.badge[data-count="0"],.badge:empty{display:none}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hp{position:absolute!important;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
body.lock{overflow:hidden}
.err{color:#D64533;font-size:12.5px;font-weight:700;margin:-6px 4px 12px;display:none}
.field.bad input,.field.bad textarea{box-shadow:inset 0 0 0 2px #E5384D}
.field.bad+.err,.err.on{display:block}
.shake{animation:shk .4s}
@keyframes shk{0%,100%{transform:none}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.btn[disabled]{opacity:.55;pointer-events:none}
.btn.dis{opacity:.45;pointer-events:none}
.sbtn.dim svg path{fill:#E3E5EA}
.revcard .tx{overflow-wrap:anywhere}
.shopreply{margin-top:10px;background:var(--gl);border-radius:14px;padding:9px 12px;font-size:13px;line-height:1.45;color:#25483A}
.ph-e{white-space:normal}
.empty{text-align:center;padding:40px 14px}
.vframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#000}
.vbox{position:relative;aspect-ratio:16/9;border-radius:20px;overflow:hidden}
.rvph{width:60px;height:60px;border-radius:14px;background:rgba(255,255,255,.7);overflow:hidden;display:block}
.rvph img{width:100%;height:100%;object-fit:cover}
.rv-c .rvph{width:72px;height:72px;background:#F3F4F6}
.js-rev .rev{animation:none;opacity:0;transform:translateY(22px) scale(.96)}
.js-rev .rev.vis{animation:up .8s cubic-bezier(.34,1.4,.4,1) both}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid rgba(14,159,110,.5);outline-offset:2px}
[hidden]{display:none!important}
.icb.on .favi{color:var(--co)}
.icb.on svg{fill:var(--co)}
.favi svg{fill:none}
.search input{-webkit-appearance:none;appearance:none}
.err.on{display:block}
.field.bad+.err,.err.on{display:block}

/* ======== desktop layout (from approved mockups) ======== */
body{background:var(--cream)}
.dp{min-height:100vh;position:relative;overflow-x:clip;background:var(--cream);font-size:16px}
.wrap{max-width:1248px;margin:0 auto;padding:0 24px;position:relative}
.dp .toast{bottom:36px}
.dp .btn:hover{filter:brightness(1.06);translate:0 -2px}
.dp .btn.line:hover{filter:none;background:var(--gl)}
.dp .chip:hover{background:#EAF1ED}
.dp .chip.on:hover{background:#000}
.dp .icb:hover{background:#F0F1F4}
.dp .icb.fill:hover{background:var(--gd)}
.dp .fav:hover{scale:1.14;color:var(--co)}
.dp .more{transition:background .2s,translate .2s}
.dp .more:hover{background:#CDEFE0;translate:3px 0}

/* header */
.dtop{position:sticky;top:0;z-index:40;background:#fff;box-shadow:0 1px 0 #E3ECE7,0 10px 24px -12px rgba(20,23,31,.25)}
.drow{display:flex;align-items:center;gap:18px;height:78px}
.dlogo{display:flex;flex:0 0 auto}
.dlogo img{height:48px;width:auto;display:block;transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.dlogo:hover img{transform:rotate(-3deg) scale(1.05)}
.dnav{display:flex;flex:0 0 auto}
.dnav a{display:inline-flex;align-items:center;gap:7px;font-weight:700;font-size:14.5px;padding:9px 13px;border-radius:999px;white-space:nowrap;transition:background .2s,color .2s}
.dnav a:hover,.dnav a.on{background:var(--gl);color:var(--gd)}
.dsearch{flex:1;min-width:180px;margin:0;height:48px}
.dsearch input{font-size:15px}
.dph{display:flex;align-items:center;gap:9px;font-weight:800;font-size:14.5px;white-space:nowrap;line-height:1.2}
.dph .pi{width:36px;height:36px;border-radius:50%;background:var(--sun);display:flex;align-items:center;justify-content:center;animation:wig 3.5s ease-in-out infinite}
.dph small{display:block;font-size:11.5px;font-weight:600;color:var(--mut)}
.dicons{display:flex;gap:6px;flex:0 0 auto}
.dp .icb{width:46px;height:46px}

/* drawer */
.drawer{position:fixed;top:0;right:0;bottom:0;width:430px;max-width:100vw;overflow:auto;background:var(--cream);z-index:70;padding:22px 22px 28px;transition:transform .45s cubic-bezier(.34,1.2,.5,1);box-shadow:-14px 0 40px rgba(20,23,31,.25)}
.dwh{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}

/* sections */
.dsec{display:flex;align-items:center;justify-content:space-between;margin:64px 0 24px}
.dsec .h{font-size:34px}
.dsec .more{font-weight:800;font-size:14.5px;color:var(--gd);background:var(--gl);padding:9px 16px;border-radius:999px}
.dgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.dp .card{border-radius:28px;transition:translate .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s}
.dp .card:hover{translate:0 -7px;box-shadow:0 20px 40px rgba(20,23,31,.14)}
.dp .card:hover .ph img{transform:scale(1.08) rotate(-2.5deg)}
.dp .card:active{transform:none}
.dp .ph{margin:10px 10px 0;border-radius:22px}
.dp .card .inf{padding:14px 16px 16px;gap:8px}
.dp .nm{font-size:15px;min-height:39px}
.dp .nm:hover{color:var(--gd)}
.dp .pr{font-size:23px}
.dp .buy{min-height:46px;font-size:15px}
.dp .buy:hover{filter:brightness(1.07);translate:0 -2px}

/* hero */
.dhero{position:relative;background:radial-gradient(110% 120% at 85% 0%,#22C795 0,#0E9F6E 50%,#087A55 100%);color:#fff;overflow:hidden;padding:54px 0 76px}
.dhin{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:20px;align-items:center;min-height:430px}
.dhero .pill{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.18);backdrop-filter:blur(4px);border-radius:999px;padding:8px 16px;font-weight:700;font-size:14.5px}
.dhero h1{font-size:60px;margin-top:20px;position:relative;z-index:2;line-height:1.06}
.dhero p{font-size:19px;line-height:1.55;margin:20px 0 28px;max-width:470px;opacity:.95;position:relative;z-index:2}
.dhero .ul svg{bottom:-12px;height:16px}
.dhf{display:flex;gap:22px;margin-top:34px;position:relative;z-index:2;font-weight:700;font-size:14px}
.dhf span{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.16);padding:8px 14px;border-radius:999px}
.dhr{position:relative;height:440px}
.dhr .sk{border-radius:34px}
.dhr .sk .lb{font-size:14px;left:12px;bottom:12px;padding:4px 11px}
.dhr .rbadge{width:128px;height:128px}
.dhr .rbadge .c{font-size:38px}

/* categories */
.dcats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px}
.dcats .ct{height:196px;border-radius:30px;padding:20px;transition:translate .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s}
.dcats .ct:hover{translate:0 -7px;box-shadow:0 18px 34px rgba(20,23,31,.14)}
.dcats .ct:hover img{scale:1.1}
.dcats .ct:active{transform:none}
.dcats .ct img{width:132px;height:132px;right:-8px;top:-6px}
.dcats .ct .t{font-size:22px}
.dcats .ct .arr{width:36px;height:36px;right:16px;bottom:16px;transition:translate .25s}
.dcats .ct:hover .arr{translate:4px 0}

/* promo */
.dpromo{position:relative;display:grid;grid-template-columns:1.2fr 1fr;align-items:center;border-radius:40px;padding:44px 52px;overflow:hidden;color:var(--ink);background:linear-gradient(135deg,#FFD21F,#FFB800);min-height:290px}
.dpromo .h{font-size:46px;max-width:480px}
.dpromo img.big{position:absolute;right:30px;bottom:-30px;width:330px;height:330px;object-fit:contain;mix-blend-mode:multiply;animation:bob 5s ease-in-out infinite;--r:-12deg}
.dpts{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.dpts span{background:rgba(255,255,255,.55);border-radius:999px;padding:7px 14px;font-weight:800;font-size:13.5px}

/* steps */
.dsteps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.dsteps .step{padding:24px;border-radius:28px;gap:18px;transition:translate .3s cubic-bezier(.34,1.56,.64,1)}
.dsteps .step:hover{translate:0 -5px}
.dsteps .num{flex:0 0 56px;height:56px;font-size:27px;border-radius:18px}
.dp .road{margin:14px 0 0}

/* store reviews */
.drv{display:grid;grid-template-columns:350px minmax(0,1fr);gap:26px;align-items:start}
.drvl{position:sticky;top:104px;border-radius:34px;padding:28px;color:#fff;background:linear-gradient(135deg,#0E9F6E,#087A55);overflow:hidden}
.drvr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start}
.drvc{border-radius:28px;padding:18px;rotate:var(--r,0deg);box-shadow:0 8px 20px rgba(20,23,31,.08);transition:rotate .3s cubic-bezier(.34,1.56,.64,1),translate .3s}
.drvc:hover{rotate:0deg;translate:0 -5px}
.dp .perk{rotate:var(--r,0deg);transform:none;padding:22px 20px;border-radius:28px;transition:rotate .3s cubic-bezier(.34,1.56,.64,1),translate .3s}
.dp .perk:hover{rotate:0deg;translate:0 -5px}
.dperks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.dp .perk:active{transform:none}

/* review form */
.rvf{background:#fff;border-radius:30px;padding:26px 28px;box-shadow:0 8px 22px rgba(20,23,31,.07);margin-top:22px;animation:up .45s cubic-bezier(.34,1.4,.4,1) both}
.rvg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px}
.rvf .field textarea{min-height:176px}
.stars{display:flex;gap:2px}
.sbtn{border:0;background:transparent;padding:2px;transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.sbtn:hover{transform:scale(1.25) rotate(-8deg)}

/* footer */
.dfoot{margin-top:90px;padding:58px 0 26px}
.dfg{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:36px}
.dfg .fh{font-family:'Nunito',sans-serif;font-weight:900;font-size:17px;margin-bottom:8px}
.dfg a:hover{color:var(--gd);translate:3px 0}
.dfg a{transition:translate .2s,color .2s;width:fit-content}
.dfb{margin-top:30px;padding-top:18px;border-top:2px dotted rgba(14,159,110,.35);font-size:13px;color:#5B6873;line-height:1.5}

/* category */
.dcathead{position:relative;background:#DDF3E8;border-radius:0 0 48px 48px;overflow:hidden;padding:26px 0 30px}
.dcrumb{font-size:13.5px;font-weight:600;color:var(--mut);margin-bottom:16px}
.dcrumb a:hover{color:var(--gd);text-decoration:underline}
.dctool{position:sticky;top:78px;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 0;margin-top:10px;background:linear-gradient(var(--cream) 78%,rgba(255,249,232,0))}
.dseo{display:grid;grid-template-columns:1fr 1.4fr;gap:40px;margin-top:70px;align-items:start}

/* product */
.dpg{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:44px;align-items:start}
.dgal{display:flex;gap:16px}
.dthumbs{display:flex;flex-direction:column;gap:12px;flex:0 0 84px}
.dth{width:84px;height:84px;border-radius:20px;background:#fff;overflow:hidden;position:relative;border:0;padding:0;box-shadow:0 3px 0 rgba(20,23,31,.08);transition:box-shadow .2s,translate .25s cubic-bezier(.34,1.56,.64,1)}
.dth:hover{translate:3px 0}
.dth.on{box-shadow:0 0 0 3px var(--g)}
.dth img{width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply;background:#DDF3E8}
.dth span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#9AA1AE}
.dstage{position:relative;flex:1;min-width:0;aspect-ratio:1/1;border-radius:40px;background:#DDF3E8;overflow:hidden}
.dslide{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;animation:tick .5s both}
.dslide img.big{width:86%;height:86%;object-fit:contain;mix-blend-mode:multiply;animation:bob 6s ease-in-out infinite;--r:0deg}
.dar{position:absolute;top:50%;margin-top:-23px;z-index:5;width:46px;height:46px;border-radius:50%;border:0;background:#fff;color:var(--ink);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(20,23,31,.16);transition:scale .2s cubic-bezier(.34,1.56,.64,1)}
.dar:hover{scale:1.12}
.gct{position:absolute;right:16px;bottom:16px;background:var(--ink);color:#fff;font-weight:800;font-size:13px;padding:6px 13px;border-radius:999px;z-index:3}
.dinfo{position:sticky;top:102px;background:#fff;border-radius:34px;padding:30px;box-shadow:0 10px 28px rgba(20,23,31,.08)}
.dwar{display:flex;align-items:center;gap:14px;background:#FFF6D6;border-radius:20px;padding:12px 16px;margin-top:18px}
.dbuy{display:flex;gap:12px;align-items:stretch;margin:22px 0 14px}
.dbuy .qty{flex:0 0 auto}
.dbuy .qb{height:54px}
.dbuy .btn{flex:1}
.dlink{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;font-weight:700;font-size:14px;color:var(--ink);padding:8px 12px;border-radius:12px;transition:background .2s}
.dlink:hover{background:#F0F1F4}
.blk{background:#fff;padding:30px 34px;border-radius:32px;box-shadow:0 8px 22px rgba(20,23,31,.07)}
.shd{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.shi{width:46px;height:46px;border-radius:15px;display:flex;align-items:center;justify-content:center;color:var(--ink);transform:rotate(-5deg)}
.specg{display:grid;grid-template-columns:1fr 1fr;gap:0 56px}
.spec{display:flex;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:2px dotted #E7E9EE;font-size:15.5px;font-weight:600}
.ph-d{border:2px dashed #C9CEDA;border-radius:22px;text-align:center;font-weight:700;color:#8B93A3;line-height:1.5;display:flex;align-items:center;justify-content:center}
.inf3{display:flex;gap:12px;align-items:center;padding:10px 0}
.rv-c{background:#FFF9E8;border-radius:22px;padding:18px}
.dp .tabx{display:none}

/* modal */
.modal{position:fixed;left:50%;top:50%;width:500px;max-width:94vw;max-height:92vh;overflow:auto;background:var(--cream);border-radius:32px;z-index:70;padding:28px;box-shadow:0 24px 60px rgba(20,23,31,.35);transition:transform .4s cubic-bezier(.34,1.4,.5,1),opacity .25s}

/* cart */
.dstp{display:flex;gap:10px;margin:8px 0 26px}
.dsp{flex:1;display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:800;color:#8B93A3}
.dsp i{display:block;height:7px;border-radius:4px;background:#DCE3DF}
.dsp.on{color:var(--gd)}
.dsp.on i{background:var(--g)}
.dcg{display:grid;grid-template-columns:minmax(0,1fr) 410px;gap:30px;align-items:start}
.cs{background:#fff;border-radius:30px;padding:26px 28px;box-shadow:0 8px 22px rgba(20,23,31,.07);margin-bottom:20px}
.csh{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.csn{flex:0 0 42px;height:42px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-family:'Nunito',sans-serif;font-weight:900;font-size:20px;color:#fff;transform:rotate(-6deg)}
.crow{display:flex;align-items:center;gap:18px;padding:14px;border-radius:24px;background:#FBFCFB;margin-bottom:12px;transition:background .2s,box-shadow .2s}
.crow:hover{background:#fff;box-shadow:0 8px 22px rgba(20,23,31,.08)}
.crow .sth{flex:0 0 96px;height:96px;border-radius:20px}
.crow .mini button{width:38px;height:38px;font-size:19px}
.crow .mini button:hover{background:#E4E7EC}
.crow .rm{border:0;background:#FFE9E6;color:#D64533;width:38px;height:38px;border-radius:13px;font-weight:900;font-size:17px;flex:0 0 38px;transition:scale .2s cubic-bezier(.34,1.56,.64,1)}
.crow .rm:hover{scale:1.12;background:#FFD9D3}
.opt{display:flex;gap:14px;align-items:flex-start;background:#fff;border-radius:20px;padding:16px 18px;box-shadow:inset 0 0 0 2px #E7E9EE;text-align:left;width:100%;border:0;font-family:inherit;font-weight:600;font-size:14px;color:var(--ink);transition:background .2s,box-shadow .2s}
.opt:hover{box-shadow:inset 0 0 0 2px #B9DFCF}
.opt.on{box-shadow:inset 0 0 0 2px var(--g);background:var(--gl)}
.opt .rd{flex:0 0 24px;height:24px;border-radius:50%;box-shadow:inset 0 0 0 2px #C9CEDA;margin-top:2px;transition:box-shadow .2s}
.opt.on .rd{box-shadow:inset 0 0 0 8px var(--g)}
.sumr{display:flex;justify-content:space-between;font-size:15px;font-weight:600;padding:7px 0}
.dsum{position:sticky;top:102px;border-radius:32px;padding:26px;background:linear-gradient(135deg,#FFF6D6,#fff 70%);box-shadow:0 10px 28px rgba(20,23,31,.1)}
.toast.u{padding:8px 8px 8px 18px}
.dp .cf{bottom:48%}
.dp .field input,.dp .field textarea{font-size:15.5px}

/* ======== info pages ======== */
.dp .dhero.sm{padding:34px 0 70px}
.dp .dhero.sm .dhin{min-height:300px;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}
.dp .dhero.sm h1{font-size:54px;margin-top:18px}
.dp .dhero.sm p{max-width:560px;margin:16px 0 24px}
.hcr{font-size:13.5px;font-weight:700;opacity:.9;margin-bottom:18px}
.hcr a:hover{text-decoration:underline}
.hnav{display:flex;gap:10px;flex-wrap:wrap;position:relative;z-index:2}
.hnav a{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.18);box-shadow:inset 0 0 0 2px rgba(255,255,255,.45);border-radius:999px;padding:9px 18px;font-weight:800;font-size:14.5px;transition:background .2s,translate .2s}
.hnav a:hover{background:rgba(255,255,255,.3);translate:0 -2px}
.hnav a.on{background:#fff;color:var(--gd);box-shadow:none}
.hart{position:relative;height:300px}
.hart .big{position:absolute;left:50%;top:50%;width:210px;height:210px;margin:-105px 0 0 -105px;border-radius:64px;background:rgba(255,255,255,.18);box-shadow:inset 0 0 0 3px rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;rotate:-6deg;animation:wob 4s ease-in-out infinite}
.hart .big svg{width:104px;height:104px}
.hart .mini{position:absolute;border-radius:26px;display:flex;align-items:center;justify-content:center}
.ph-e{display:inline-block;background:#FFF4C2;color:#7A5200;border-radius:8px;padding:1px 7px;font-weight:700;box-shadow:inset 0 0 0 1.5px rgba(245,184,0,.6);white-space:normal}
.card2{background:#fff;border-radius:30px;padding:28px 32px;box-shadow:0 8px 22px rgba(20,23,31,.07)}
.card2 p{margin:0 0 12px;font-size:16px;line-height:1.7;color:#374151;font-weight:500}
.card2 p:last-child{margin:0}
.g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:start}
.g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.g4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.vc{border-radius:30px;padding:24px 22px 26px;rotate:var(--r,0deg);transition:rotate .3s cubic-bezier(.34,1.56,.64,1),translate .3s}
.vc:hover{rotate:0deg;translate:0 -6px}
.vc .vi{width:62px;height:62px;border-radius:20px;background:#fff;display:flex;align-items:center;justify-content:center;margin-bottom:16px;animation:wob 3.2s ease-in-out infinite}
.vc b{display:block;font-family:'Nunito',sans-serif;font-weight:900;font-size:21px;line-height:1.15;margin-bottom:8px}
.vc span.t{display:block;font-size:15px;line-height:1.5;font-weight:600;opacity:.8}
.rq{display:flex;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:2px dotted #E7E9EE;font-size:15.5px;font-weight:600;align-items:flex-start}
.rq .k{color:var(--mut);flex:0 0 auto;font-weight:700}
.rq .v{text-align:right;min-width:0}
.rqg{display:grid;grid-template-columns:1fr 1fr;gap:0 56px}
.dl{border-radius:30px;padding:22px 24px;display:flex;gap:18px;align-items:center;transition:translate .3s cubic-bezier(.34,1.56,.64,1)}
.dl:hover{translate:0 -5px}
.dl.v{flex-direction:column;align-items:flex-start;gap:14px;padding:26px 24px}
.dl .di{flex:0 0 64px;height:64px;border-radius:21px;background:#fff;display:flex;align-items:center;justify-content:center;animation:wob 3.4s ease-in-out infinite}
.dl b{display:block;font-family:'Nunito',sans-serif;font-weight:900;font-size:21px}
.dl span.t{display:block;font-size:15px;line-height:1.5;font-weight:600;opacity:.8;margin-top:4px}
.fa{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s cubic-bezier(.2,.8,.2,1)}
.fa.open{grid-template-rows:1fr}
.fa>div{overflow:hidden}
.faq{background:#fff;border-radius:24px;margin-bottom:14px;box-shadow:0 4px 14px rgba(20,23,31,.06);overflow:hidden;scroll-margin-top:110px;transition:box-shadow .2s}
.faq:hover{box-shadow:0 8px 22px rgba(20,23,31,.1)}
.faq>button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:14px;text-align:left;border:0;background:transparent;padding:20px 22px;font-family:'Nunito',sans-serif;font-weight:800;font-size:18px;line-height:1.25;color:var(--ink);cursor:pointer}
.faq .pl{flex:0 0 34px;height:34px;border-radius:50%;background:var(--gl);color:var(--gd);display:flex;align-items:center;justify-content:center;transition:transform .35s cubic-bezier(.34,1.56,.64,1),background .2s}
.faq .pl.open{transform:rotate(135deg);background:var(--sun);color:var(--ink)}
.ab{padding:0 22px 22px;font-size:15.5px;line-height:1.7;color:#374151;font-weight:500}
.ab p{margin:0 0 10px}.ab p:last-child{margin:0}
.cks{list-style:none;padding:0;margin:0}
.cks li{display:flex;gap:12px;align-items:flex-start;margin-bottom:13px;font-size:15.5px;line-height:1.55;font-weight:600}
.cks li i{flex:0 0 26px;height:26px;border-radius:50%;background:var(--gl);color:var(--gd);display:flex;align-items:center;justify-content:center;margin-top:1px}
.on-n{flex:0 0 32px;height:32px;border-radius:10px;background:var(--g);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:16px;transform:rotate(-6deg)}
.draft{display:flex;gap:14px;align-items:flex-start;background:#FFF4C2;border-radius:24px;padding:18px 22px;box-shadow:inset 0 0 0 2px rgba(245,184,0,.55)}
.ofg{display:grid;grid-template-columns:290px minmax(0,1fr);gap:34px;align-items:start;margin-top:24px}
.otoc{position:sticky;top:102px;background:#fff;border-radius:30px;padding:22px 18px 18px;box-shadow:0 10px 28px rgba(20,23,31,.09)}
.otoc .th{font-family:'Nunito',sans-serif;font-weight:900;font-size:19px;margin:0 6px 12px}
.otoc a{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:14px;font-weight:700;font-size:14px;line-height:1.3;transition:background .2s,translate .2s}
.otoc a:hover{background:var(--gl);color:var(--gd);translate:3px 0}
.otoc a .on-n{flex:0 0 28px;height:28px;border-radius:9px;font-size:14px}
.lk{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border-radius:26px;padding:22px 26px;font-weight:800;font-size:18px;font-family:'Nunito',sans-serif;box-shadow:0 6px 18px rgba(20,23,31,.07);transition:translate .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s}
.lk:hover{translate:0 -5px;box-shadow:0 16px 32px rgba(20,23,31,.12)}
.lk i{flex:0 0 38px;height:38px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center}
.gbn{position:relative;overflow:hidden;border-radius:32px;padding:30px 32px;color:#fff;background:linear-gradient(135deg,#0E9F6E,#087A55)}

/* ======== runtime (PHP site) additions for the desktop layout ======== */
body{background:var(--cream)}
.dp{font-size:16px}
.dp .wrap{max-width:1248px}
/* drawer + modal states (toggled by app.js via .on) */
.drawer{transform:translateX(105%);visibility:hidden}
.drawer.on{transform:none;visibility:visible}
.drawer:not(.on){transition:transform .45s cubic-bezier(.34,1.2,.5,1),visibility 0s .45s}
.modal{transform:translate(-50%,-46%) scale(.92);opacity:0;visibility:hidden;pointer-events:none}
.modal.on{transform:translate(-50%,-50%) scale(1);opacity:1;visibility:visible;pointer-events:auto}
.modal:not(.on){transition:transform .3s,opacity .25s,visibility 0s .3s}
.overlay{z-index:60}
.drawer,.modal{z-index:70}
.dwh .icb{background:#fff}
/* header */
.dtop .badge{top:-2px;right:-3px}
.dnav a.on{background:var(--gl);color:var(--gd)}
.dph a{color:inherit}
.dph .pi{flex:0 0 36px}
.dsearch{margin:0}
.dsearch input{min-width:0}
/* cards */
.dgrid .card{min-width:0}
.dp .card .stk{font-size:12.5px}
.dp .srow{box-shadow:0 4px 14px rgba(20,23,31,.05)}
/* category */
.dcathead h1{overflow-wrap:anywhere}
.dctool .chip.on{box-shadow:0 3px 0 #000}
.dempty{text-align:center;padding:70px 0 20px}
.dcats .ct{min-width:0}
/* product gallery (desktop) */
.dslide[hidden]{display:none!important}
.dthumbs .dth{cursor:pointer}
.dwar .num{flex:none}
.dinfo .stk{font-size:14px}
.vbox{border-radius:26px}
.dp .vframe{border-radius:inherit}
.dstage .vslot{position:absolute;inset:0}
.favi{display:flex}
.dlink.on{color:var(--co)}
.dlink.on svg{fill:var(--co)}
.dlink .favi{color:inherit}
.rv-c{margin-bottom:0}
.rv-c .stars{display:flex}
.shopreply{margin-top:10px}
/* review form (desktop) */
.rvf .err{margin:10px 0 0}
.rvf .chip.on{background:#14171F;color:#fff}
/* cart */
.crow .nm{display:-webkit-box}
.dp .crow .mini button{width:38px;height:38px}
.dstp .dsp i{transition:background .4s}
.dsum .fb{box-shadow:none;background:#fff}
.dsum .btn.dis{opacity:.45;pointer-events:none}
.dcg .field.bad input,.dcg .field.bad textarea{box-shadow:inset 0 0 0 2px #E5384D}
.dcg>div>.cs:last-child{margin-bottom:0}
/* thanks */
.dthanks{max-width:860px;margin:0 auto;text-align:center;padding-top:30px;position:relative}
.dthanks .dsteps3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;text-align:left;margin-top:34px}
/* footer */
.dfoot .dfg .l{display:block;padding:7px 0;color:#2F3B46;font-weight:600}
.dfoot .dfg a{display:block;padding:7px 0}
.dfsw{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:13.5px;color:var(--gd);background:#fff;border-radius:999px;padding:8px 16px;box-shadow:0 2px 0 rgba(20,23,31,.08);margin-top:6px;transition:translate .2s}
.dfoot .dfg a.dfsw{display:inline-flex;padding:8px 16px;width:fit-content}
.dfsw:hover{translate:0 -2px}
.dfoot-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
/* static pages (DB html rendered in desktop frame) */
.dpage{margin-top:6px}
.dpage .px{padding-left:0;padding-right:0}
.dpage .sec{display:flex;align-items:center;justify-content:space-between;margin:56px 0 22px;padding:0}
.dpage .sec .h{font-size:34px!important;display:flex!important;align-items:center;gap:14px!important}
.dpage .sec .h>span:first-child:not(.mut){width:16px!important;height:40px!important;border-radius:8px!important;flex:0 0 16px!important}
.dpage .sec .mut{font-size:14px!important}
.dpage .card2{border-radius:30px!important;padding:28px 32px!important}
.dpage .card2 p,.dpage .px>p{font-size:16px!important;line-height:1.7!important}
.dpage .card2 .h{font-size:28px!important}
.dpage .dl{margin-bottom:0}
.dpage .perks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.dpage .vc{padding:24px 22px 26px;border-radius:30px}
.dpage .vc .vi{width:62px;height:62px;margin-bottom:16px}
.dpage .vc b{font-size:21px;margin-bottom:8px}
.dpage .vc span.t{font-size:15px;line-height:1.5}
.dpage .st2 b{font-size:20px}
.dpage .st2 span.t{font-size:15.5px}
.dpage .st2 .num{flex:0 0 52px;height:52px;font-size:25px;border-radius:17px}
.dpage .st2:not(:last-child)::before{left:25px;top:58px}
.dpage .card2:has(>.st2){display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:26px;padding-bottom:20px!important}
.dpage .card2:has(>.st2) .st2{flex-direction:column;padding-bottom:0}
.dpage .card2:has(>.st2) .st2::before{display:none}
.dpage .card2:has(>.st2) .road{grid-column:1/-1}
.dpage .rq{font-size:15.5px;padding:14px 0}
.dpage .card2:has(>.rq){display:grid;grid-template-columns:1fr 1fr;column-gap:56px}
.dpage .card2:has(>.rq)>*:not(.rq){grid-column:1/-1}
.dpage .ck li{font-size:15.5px;margin-bottom:12px}
.dpage .lk{margin-bottom:0;padding:22px 26px;font-size:18px;border-radius:26px}
.dpage .faq{border-radius:24px;margin-bottom:14px}
.dpage .faq>button{font-size:18px;padding:20px 22px}
.dpage .ab{font-size:15.5px;line-height:1.7;padding:0 22px 22px}
.dpage .faq .pl{flex:0 0 34px;height:34px}
.dpage .draft{border-radius:24px;padding:18px 22px}
.dpage .on-n{flex:0 0 32px;height:32px;font-size:16px;border-radius:10px}
.dgrid2{display:grid;gap:22px}
/* generic page block: two-column rhythm on known sections */
.dpage.p-about>.px:nth-of-type(-n+2){display:block}
.dpage.p-about{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:22px;align-items:stretch}
.dpage.p-about>*{grid-column:1/-1;min-width:0}
.dpage.p-about>.px:first-child,.dpage.p-about>.px:nth-child(2){grid-column:auto;padding:0!important}
.dpage.p-about>.px:first-child>.card2,.dpage.p-about>.px:nth-child(2)>div{height:100%}
.dpage.p-about>.px:nth-child(2)>div{padding:34px!important;display:flex;flex-direction:column;justify-content:center;border-radius:34px!important}
.dpage.p-about>.px:nth-child(2) .h{font-size:29px!important;max-width:380px!important}
.dpage .st2 .num{align-self:flex-start;width:52px}
.dpage .px:has(>.dl):has(>.card2){display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:22px}
.dpage .px:has(>.dl):has(>.card2)>.dl{grid-column:span 2;flex-direction:column;align-items:flex-start;padding:26px 24px;gap:14px;margin:0}
.dpage .px:has(>.dl):has(>.card2)>div:not(.dl):not(.card2){grid-column:span 4;border-radius:32px!important;padding:30px 32px!important;position:relative;overflow:hidden}
.dpage .px:has(>.dl):has(>.card2)>.card2{grid-column:span 2;display:flex;gap:18px;align-items:center}
.dpage .px:has(>.dl):has(>.card2)>div:not(.dl):not(.card2) .h{font-size:36px!important}
.dpage .px:has(>.dl):has(>.card2)>div:not(.dl):not(.card2) p{font-size:16px!important;max-width:430px}
.dpage .px:has(>.dl):has(>.card2)>div:not(.dl):not(.card2) .road{margin:18px -32px -30px!important}
.dpage .px:has(.st2) .card2{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px}
.dpage .px:has(.st2) .st2{flex-direction:column;padding-bottom:0}
.dpage .px:has(.st2) .st2::before{display:none}
.dpage .px:has(>.dl):has(>p){display:grid;grid-template-columns:1fr 1fr;gap:22px}
.dpage .px:has(>.dl):has(>p)>p{grid-column:1/-1;margin:0 6px!important}
.dpage .px:has(>.dl):has(>p)>.dl{margin:0}
.dpage .px:has(ul.ck) .card2{display:grid;grid-template-columns:1fr 1fr;gap:26px 48px;align-items:start}
.dpage .px:has(ul.ck) .card2>ul{grid-column:2;grid-row:1/span 2}
.dpage .px:has(ul.ck) .card2>div:first-child,.dpage .px:has(ul.ck) .card2>div:last-child{grid-column:1}
.dpage .px:has(.faq){columns:2;column-gap:22px}
.dpage .px:has(.faq)>.faq{break-inside:avoid}
.dpage.p-delivery>.px:last-child>div{border-radius:34px!important;padding:34px 40px!important;display:flex;align-items:center;justify-content:space-between;gap:30px;position:relative}
.dpage.p-delivery>.px:last-child .h{font-size:28px!important}
.dpage.p-delivery>.px:last-child p{font-size:16px!important}
.dpage.p-delivery>.px:last-child>div>div:last-child{text-align:right;font-size:15.5px!important}
.dpage .road{height:46px}
.dpage .road .truck{bottom:9px}
/* offer: sticky toc + accordions */
.dpage.p-offer{display:grid;grid-template-columns:290px minmax(0,1fr);gap:34px;align-items:start}
.dpage.p-offer>*{grid-column:2;min-width:0}
.dpage.p-offer>.otoc{grid-column:1;grid-row:1/span 3;position:sticky;top:102px}
.dpage .otoc{position:sticky;top:102px;background:#fff;border-radius:30px;padding:22px 18px 18px;box-shadow:0 10px 28px rgba(20,23,31,.09)}
.dpage .otoc .th{font-family:'Nunito',sans-serif;font-weight:900;font-size:19px;margin:0 6px 12px}
.dpage .otoc a{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:14px;font-weight:700;font-size:14px;line-height:1.3;transition:background .2s,translate .2s}
.dpage .otoc a:hover{background:var(--gl);color:var(--gd);translate:3px 0}
.dpage .otoc a .on-n{flex:0 0 28px;height:28px;font-size:14px;border-radius:9px}
.dpage.p-offer>div:empty{display:none}
.dpage .faq{scroll-margin-top:110px}
@media (max-width:1180px){
  .wrap{padding:0 20px}
  .dgrid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .dcats{grid-template-columns:repeat(3,minmax(0,1fr))}
  .dperks{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dph small{display:none}
  .dph>span:last-child{max-width:120px;overflow:hidden;text-overflow:ellipsis}
  .dfg{grid-template-columns:1fr 1fr 1fr}
  .dfg>div:last-child{display:none}
  .dhero h1{font-size:50px}
  .dsearch{min-width:120px}
  .drv{grid-template-columns:300px minmax(0,1fr)}
  .drvr{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dpromo{padding:36px}
  .dpromo img.big{width:260px;height:260px}
}
@media (max-width:980px){
  .dnav a{padding:9px 9px;font-size:13.5px}
  .dph{display:none}
  .dpg{grid-template-columns:1fr}
  .dinfo{position:static}
  .dcg{grid-template-columns:1fr}
  .dsum{position:static}
  .dgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dpage.p-offer{grid-template-columns:1fr}
  .dpage.p-offer>.otoc{display:none}
  .dpage.p-offer>*{grid-column:1}
}
.dslide{animation:none}
.dpage .dl .di{flex:none;width:64px}
.dpage .px:has(ul.ck) .card2>div:first-child{align-self:start}

/* ---- product variants, spec table, description ---- */
a.buy{display:flex;align-items:center;justify-content:center;text-align:center}
.buy[disabled]{background:#E3E5EA;color:#8A909C;box-shadow:none;pointer-events:none}
.stk.off{color:#9AA1AE}.stk.off .dotg{background:#C5CAD3}
.pfrom{font-size:13px;font-weight:700;color:var(--mut);margin-right:-2px}
.vsel{margin:22px 0 0}
.vcap{font-weight:700;font-size:15px;margin-bottom:12px;color:var(--mut)}
.vcap b{color:var(--ink);font-weight:800}
.vchips{display:flex;flex-wrap:wrap;gap:10px}
.vchip{border:0;background:#F4F5F7;box-shadow:inset 0 0 0 2px #E3E5EA;border-radius:16px;padding:10px 18px;font:inherit;font-weight:700;font-size:15px;line-height:1.25;color:var(--ink);text-align:left;display:flex;flex-direction:column;justify-content:center;min-height:48px;cursor:pointer;transition:background .2s,box-shadow .2s}
.vchip:hover{box-shadow:inset 0 0 0 2px var(--g)}
.vchip small{font-size:11.5px;font-weight:600;color:#9AA1AE}
.vchip.on{background:var(--gl);box-shadow:inset 0 0 0 3px var(--g)}
.vchip.out{opacity:.55}
.vchip.out:not(.on){background:#F4F5F7}
.vl{font-size:13px;font-weight:600;color:var(--mut);margin-top:3px}
.spect{width:100%;max-width:900px;border-collapse:collapse;font-size:15.5px}
.spect th,.spect td{padding:13px 0;border-bottom:2px dotted #E7E9EE;vertical-align:top;font-weight:600}
.spect th{color:var(--mut);text-align:left;width:42%;padding-right:24px}
.spect td{text-align:left;overflow-wrap:anywhere}
.spect tr:last-child th,.spect tr:last-child td{border-bottom:0}
.desc{font-size:16px;line-height:1.7;color:var(--mut);max-width:900px;overflow-wrap:anywhere}
.desc p{margin:0 0 14px}.desc>:last-child{margin-bottom:0}
.desc ul,.desc ol{margin:0 0 14px;padding-left:24px}.desc li{margin-bottom:5px}
.desc h2,.desc h3,.desc h4{font-family:'Nunito',sans-serif;font-weight:900;font-size:19px;color:var(--ink);margin:20px 0 8px}
.desc b,.desc strong{color:var(--ink)}
.stk.off .dotg::after{display:none}.stk.off .dotg{background:#C5CAD3}
.dgal{position:relative}
.dthumbs{position:absolute;left:0;top:0;bottom:0;width:84px;overflow-y:auto;scrollbar-width:thin;padding:3px}
.dthumbs + .dstage{margin-left:100px}
.dthumbs .dth{flex:0 0 auto;width:78px;height:78px}
.btn[disabled]{opacity:1;background:#E3E5EA!important;color:#8A909C!important;box-shadow:0 5px 0 #CDD1D9!important}.btn.line[disabled]{background:#fff!important;box-shadow:inset 0 0 0 2px #D7DAE0!important}

/* product photos: no tint, no blend, no looping animation (true colours, sharp) */
.ph::before{display:none!important}
.ph{background:#fff!important;box-shadow:inset 0 0 0 1px rgba(20,23,31,.06)}
.ph img,.gal img,.th img,.dth img,.sth img,.dslide img.big{mix-blend-mode:normal!important}
.gal img,.dslide img.big{animation:none!important}
.th,.dth img,.sth{background:#fff!important}
.gal,.dstage{background:#fff!important}
.dstage{box-shadow:inset 0 0 0 1px rgba(20,23,31,.06)}
