/* ===== Bahku — e-commerce modern: koral identitas brand + navy =====
   Font: Inter (standar e-commerce internasional) untuk seluruh antarmuka, di-host sendiri.
   Warna brand: koral #F45D52. Tema gelap = hitam flat, tema terang = putih. Pengatur tema: assets/theme.js */
@font-face{font-family:"Inter";src:url(fonts/inter-latin-wght-normal.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}

:root{
  color-scheme:dark;
  --brand:#F45D52; --brand-d:#E04538;
  --bg:#000; --surface:#111; --surface2:#1c1c1c; --glass:rgba(0,0,0,.88);
  --line:rgba(255,255,255,.12); --line2:rgba(255,255,255,.26);
  --text:#f5f5f5; --muted:#a3a3a3; --accent:#F45D52; --accent-text:#ff7a70;
  --pri:#F45D52; --pri-fg:#fff; --ring:rgba(244,93,82,.30);
  --ok:#3ecf8e; --ok-bg:rgba(62,207,142,.12); --warn:#ffb84d; --warn-bg:rgba(255,184,77,.12); --danger:#ff9a92;
  --shadow:0 18px 40px rgba(0,0,0,.7); --float:0 20px 50px rgba(0,0,0,.75),0 2px 8px rgba(0,0,0,.6);
  --r:12px; --nav-h:64px; --hdr-h:72px; --stick:calc(var(--hdr-h) + 33px);
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
html[data-theme="light"]{
  color-scheme:light;
  --bg:#fff; --surface:#f6f7fb; --surface2:#eceef6; --glass:rgba(255,255,255,.9);
  --line:rgba(10,14,42,.10); --line2:rgba(10,14,42,.24);
  --text:#0a0e2a; --muted:#5d6384; --accent:#F45D52; --accent-text:#D43B2E;
  --pri:#F45D52; --pri-fg:#fff; --ring:rgba(244,93,82,.25);
  --ok:#117a50; --ok-bg:rgba(17,122,80,.09); --warn:#8f5d00; --warn-bg:rgba(143,93,0,.09); --danger:#c0392b;
  --shadow:0 18px 40px rgba(10,14,42,.14); --float:0 18px 44px rgba(10,14,42,.14),0 2px 6px rgba(10,14,42,.06);
}

*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{overflow-x:hidden;overscroll-behavior-x:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{overflow:clip;touch-action:manipulation}
html{scroll-behavior:smooth}
body{font:400 15px/1.55 var(--sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  font-feature-settings:"cv11","ss03";font-variant-numeric:tabular-nums;padding-bottom:calc(var(--nav-h) + 20px + env(safe-area-inset-bottom));min-height:100vh;transition:background-color .35s,color .35s}
::selection{background:var(--brand);color:#fff}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
[hidden]{display:none!important}

/* ---------- Header ---------- */
.top{position:sticky;top:0;z-index:20;background:var(--glass);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);
  padding:12px 16px 14px;padding-top:calc(12px + env(safe-area-inset-top));border-bottom:1px solid var(--line)}
.top-in{position:relative;display:grid;grid-template-columns:1fr auto;grid-template-areas:"brand tsw" "search search";gap:12px;align-items:center;max-width:760px;margin:0 auto}
.brand{grid-area:brand;display:flex;align-items:center;gap:11px;font:800 1.15rem/1 var(--sans);letter-spacing:.16em}
.brand .logo{width:28px;height:28px;color:var(--brand);transition:transform .4s cubic-bezier(.2,1.2,.4,1)}
.tsw-wrap{grid-area:tsw;display:flex}
.search{grid-area:search;position:relative}
.search.has-ic>i{position:absolute;left:14px;top:50%;transform:translateY(-50%);display:flex;color:var(--muted);pointer-events:none}
.search.has-ic input{padding-left:42px}
.search input{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:12px 14px;outline:none;transition:border-color .2s,box-shadow .2s}
.search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}
.search input::placeholder{color:var(--muted)}

/* ---------- Saklar tema ---------- */
.tsw{position:relative;width:60px;height:32px;border-radius:99px;border:1px solid var(--line2);background:var(--surface);cursor:pointer;padding:0;flex:none;transition:background .3s,border-color .3s}
.tsw .k{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--pri);color:var(--pri-fg);display:flex;align-items:center;justify-content:center;
  transform:translateX(28px);transition:transform .35s cubic-bezier(.3,.8,.2,1)}
.tsw .k svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tsw .i-sun{display:none}
html[data-theme="light"] .tsw .k{transform:none}
html[data-theme="light"] .tsw .i-sun{display:block}
html[data-theme="light"] .tsw .i-moon{display:none}
.tsw:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* ---------- Tipografi ---------- */
main{max-width:760px;margin:0 auto;padding:22px 16px}
h1{font:700 2.4rem/1.08 var(--sans);letter-spacing:-.03em;text-wrap:balance}
h2{font:700 1.45rem/1.2 var(--sans);margin-bottom:14px;letter-spacing:-.02em}
.accent{color:var(--accent-text)}
.muted{color:var(--muted)}
.small{font-size:.84rem}
.amount{font:700 2rem/1.1 var(--sans);margin-top:2px}

/* ---------- Hero ---------- */
.hero{position:relative;padding:14px 0 6px;margin-bottom:30px;border-bottom:1px solid var(--line)}
.hero::after{content:"";position:absolute;left:0;bottom:-1px;height:2px;width:100%;background:var(--accent);transform-origin:left;animation:draw 1.4s cubic-bezier(.65,0,.2,1) .15s both}
.hero h1{animation:rise 1s cubic-bezier(.2,.7,.2,1) both}
@keyframes draw{from{transform:scaleX(0)}to{transform:none}}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.hero p{margin-top:14px;color:var(--muted);font-size:1.05rem;max-width:38ch}
.perks{list-style:none;display:grid;margin-top:26px;border-top:1px solid var(--line)}
.perks li{display:flex;align-items:center;gap:12px;font-size:.92rem;padding:13px 0;border-bottom:1px solid var(--line)}
.perks li:last-child{border-bottom:0}
.perks .ic{color:var(--accent-text);width:20px;height:20px}

/* ---------- Kategori & judul bagian ---------- */
.chips{display:flex;gap:26px;overflow-x:auto;margin:0 -16px 24px;padding:0 16px;border-bottom:1px solid var(--line);scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--muted);padding:13px 0;font-size:.95rem;font-weight:400;cursor:pointer;white-space:nowrap;transition:color .2s,border-color .2s}
.chip.on{color:var(--text);border-bottom-color:var(--accent);font-weight:600}
.sec-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:0 0 18px}
.sec-head h2{margin:0}
.sec-head span{font-size:.84rem;color:var(--muted)}

/* ---------- Produk ---------- */
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:26px 14px}
.card{display:flex;flex-direction:column;gap:7px;min-width:0}
.card .thumb{margin-bottom:5px}
.card .nm{font-weight:500;font-size:.98rem;line-height:1.3;min-height:2.6em}
.card .pr{font:700 1.1rem/1.2 var(--sans);letter-spacing:-.01em}
.card .pr small{font:400 .8rem var(--sans);color:var(--muted)}
.card .meta{display:flex;justify-content:space-between;gap:8px;font-size:.78rem;color:var(--muted);padding-bottom:4px}
.card .meta .low{color:var(--warn)}
.card.out{opacity:.5}
.empty{grid-column:1/-1;text-align:center;color:var(--muted);padding:56px 0}
.sk{height:300px;border-radius:var(--r);background:linear-gradient(100deg,var(--surface) 30%,var(--surface2) 50%,var(--surface) 70%) 0 0/300% 100%;animation:sh 1.4s linear infinite}
@keyframes sh{to{background-position:-300% 0}}

/* ---------- Tombol ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--pri);color:var(--pri-fg);border:1px solid var(--pri);border-radius:var(--r);min-height:48px;
  padding:12px 20px;font-weight:600;font-size:.95rem;letter-spacing:0;cursor:pointer;width:100%;transition:background .2s,border-color .2s,color .2s,transform .15s,opacity .2s}
.btn:active{transform:scale(.985);background:var(--brand-d);border-color:var(--brand-d)}
.btn.ghost{background:transparent;border-color:var(--line2);color:var(--text)}
.btn.ghost:active{background:var(--surface);border-color:var(--line2)}
.btn.sm{padding:9px 14px;min-height:40px;width:auto;font-size:.9rem}
.btn[disabled]{opacity:.4;pointer-events:none}
.add{margin-top:auto}
.card .btn.add{background:transparent;color:var(--accent-text);border-color:var(--accent)}
.card .btn.add[disabled]{border-color:var(--line2)}
.stepper{display:flex;align-items:center;justify-content:space-between;background:transparent;border:1px solid var(--accent);border-radius:var(--r);margin-top:auto;min-height:48px}
.stepper button{width:44px;height:46px;background:none;border:0;color:var(--text);font-size:1.35rem;font-weight:300;cursor:pointer;transition:background .2s}
.stepper span{font-weight:600}

/* ---------- Bar keranjang ---------- */
.cartbar{position:fixed;left:12px;right:12px;bottom:calc(var(--nav-h) + 10px + env(safe-area-inset-bottom));z-index:15;max-width:736px;margin:0 auto;
  background:var(--pri);color:var(--pri-fg);border-radius:var(--r);padding:13px 18px;box-shadow:var(--shadow);font-weight:500}
.cartbar small{display:block;font-weight:300;opacity:.8;font-size:.78rem}
.cartbar a .ic{vertical-align:-.2em;margin-right:6px}

/* ---------- Navigasi bawah (HP) ---------- */
.bottom{position:fixed;left:0;right:0;bottom:0;z-index:25;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);
  background:var(--glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line);display:flex;justify-content:center}
.bottom a{flex:1;max-width:250px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:.74rem;font-weight:400;letter-spacing:.03em;color:var(--muted);position:relative;transition:color .2s}
.bottom a::before{content:"";position:absolute;top:-1px;left:30%;right:30%;height:2px;background:var(--accent);transform:scaleX(0);transition:transform .3s}
.bottom a i{display:flex;align-items:center;justify-content:center;width:44px;height:28px;font-style:normal}
.bottom a i .ic{width:22px;height:22px}
.bottom a.on{color:var(--accent-text);font-weight:600}
.bottom a .ic{transition:fill .25s,stroke-width .25s}
.bottom a.on .ic{fill:color-mix(in srgb,currentColor 16%,transparent);stroke-width:1.6}
.bottom a.on::before{transform:none}
.bottom b{position:absolute;top:6px;left:calc(50% + 6px);background:var(--pri);color:var(--pri-fg);border-radius:99px;font-size:.68rem;font-weight:600;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;padding:0 5px}

/* ---------- Kotak, daftar, formulir ---------- */
.box{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:14px}
.line{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"th info sub" "th step step";column-gap:14px;row-gap:8px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}
.line .thumb.mini{grid-area:th;align-self:start}
.line .info{grid-area:info;min-width:0}
.line .sub{grid-area:sub;align-self:start;font-weight:500;white-space:nowrap}
.line .stepper{grid-area:step;width:116px;margin:0}
.line:last-child{border-bottom:0}
.line .info b{display:block;font-size:.98rem;font-weight:500}
.row{display:flex;justify-content:space-between;gap:12px;padding:5px 0}
.row.total{font:700 1.25rem/1.2 var(--sans);border-top:1px solid var(--line);margin-top:10px;padding-top:14px}
.free{color:var(--ok);font-weight:500}
.note{font-size:.84rem;border-radius:var(--r);padding:11px 13px;margin-top:10px;background:var(--warn-bg);color:var(--warn)}
.note.ok{background:var(--ok-bg);color:var(--ok)}
.note .ic.sm{margin-right:2px}
.progress{height:4px;border-radius:9px;background:var(--line);overflow:hidden;margin-top:9px}
.progress i{display:block;height:100%;border-radius:9px;background:var(--accent)}
label{display:block;font-size:.84rem;font-weight:500;color:var(--muted);margin:16px 0 6px;letter-spacing:.02em}
input[type=text],input[type=tel],select,textarea{width:100%;background:var(--bg);border:1px solid var(--line2);border-radius:var(--r);padding:12px 13px;outline:none;transition:border-color .2s,box-shadow .2s}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}
textarea{min-height:84px;resize:vertical}
.err{color:var(--danger);font-size:.82rem;margin-top:4px}
.steps{counter-reset:s;list-style:none}
.steps li{counter-increment:s;display:flex;gap:14px;padding:8px 0;font-size:.94rem}
.steps li::before{content:counter(s);flex:none;width:26px;height:26px;border-radius:50%;border:1px solid var(--accent);color:var(--accent-text);font:600 .82rem var(--sans);display:flex;align-items:center;justify-content:center}
.pay{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;margin-top:8px}
.qris{display:block;max-width:240px;width:100%;margin:12px auto;border-radius:var(--r);background:#fff}
.stack{display:grid;gap:10px}
.pill{display:inline-block;font-size:.74rem;font-weight:500;border-radius:99px;padding:3px 11px;background:var(--warn-bg);color:var(--warn)}
.toast{position:fixed;left:50%;bottom:calc(var(--nav-h) + 80px);transform:translate(-50%,20px);background:var(--pri);color:var(--pri-fg);padding:11px 20px;border-radius:var(--r);font-size:.9rem;font-weight:500;
  opacity:0;pointer-events:none;transition:.25s;z-index:40;width:max-content;max-width:90vw;text-align:center;box-shadow:var(--shadow)}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------- Ikon & foto produk ---------- */
.ic{width:1.25em;height:1.25em;flex:none;stroke-width:1.5;transition:transform .25s ease,color .25s ease}
.ic.sm{width:1.05em;height:1.05em;vertical-align:-.17em}
.ic-wa{fill:currentColor;stroke:none}
.bigic{display:flex;justify-content:center;margin-bottom:12px;color:var(--accent-text)}
.bigic .ic{width:46px;height:46px;stroke-width:1.1}
.bigic.ok{color:var(--ok)}
.bigic.ok .ic{animation:pop .5s cubic-bezier(.2,1.4,.4,1) both}
@keyframes pop{from{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}
.thumb{position:relative;aspect-ratio:4/3;border-radius:var(--r);overflow:hidden;background:var(--surface)}
.thumb img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.thumb .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--accent-text)}
.thumb .ph::after{content:"";position:absolute;width:78px;height:78px;border-radius:50%;border:1px solid var(--line2);transition:transform .5s cubic-bezier(.2,1,.4,1),border-color .3s}
.thumb .ph .ic{position:relative;z-index:1;width:34px;height:34px;stroke-width:1.1;transition:transform .5s cubic-bezier(.2,1,.4,1)}
.thumb.mini{width:56px;flex:none;aspect-ratio:1}
.thumb.mini .ph::after{display:none}
.thumb.mini .ph .ic{width:22px;height:22px}
.card.out .thumb img{filter:grayscale(1)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Footer ---------- */
.foot{margin-top:40px;border-top:1px solid var(--line);color:var(--muted);font-size:.88rem}
.foot-in{max-width:760px;margin:0 auto;padding:28px 16px 12px}
.foot .brand{color:var(--text);margin-bottom:12px}
.foot-tag{max-width:36ch}
.foot-col{display:none}
.foot-col h3{font:600 1rem/1.2 var(--sans);color:var(--text);margin-bottom:16px}
.foot-col ul{list-style:none;display:grid;gap:11px}
.foot-col a{transition:color .2s}
.foot-wa{display:inline-flex;align-items:center;gap:10px;margin-top:16px;color:var(--text);font-weight:500}
.foot-wa .ic{width:22px;height:22px;color:#25d366}
.foot-bottom{display:flex;flex-direction:column;gap:6px;margin-top:22px;padding-top:16px;border-top:1px solid var(--line);font-size:.8rem}
.wa-float{display:none}

@media (hover:hover) and (pointer:fine){
  .card:not(.out):hover .thumb img{transform:scale(1.05)}
  .card:not(.out):hover .thumb .ph .ic{transform:scale(1.1)}
  .card:not(.out):hover .thumb .ph::after{transform:scale(1.14);border-color:var(--accent)}
  .btn:hover{background:var(--brand-d);border-color:var(--brand-d);opacity:1}
  .btn.ghost:hover{opacity:1;border-color:var(--accent);background:var(--surface);color:var(--text)}
  .card .btn.add:hover{opacity:1;background:var(--pri);color:var(--pri-fg);border-color:var(--pri)}
  .chip:hover{color:var(--text)}
  .stepper button:hover{background:var(--surface2)}
  .bottom a:hover{color:var(--text)}
  .brand:hover .logo{transform:rotate(-6deg) scale(1.08)}
  .foot-col a:hover{color:var(--text)}
  .foot-wa:hover{text-decoration:underline;text-underline-offset:4px}
  .line:hover .thumb.mini .ph .ic{transform:scale(1.1)}
  .tsw:hover{border-color:var(--accent)}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

@media (min-width:520px){.line{grid-template-columns:auto 1fr 116px auto;grid-template-areas:"th info step sub"}.line .thumb.mini,.line .sub{align-self:center}}
@media (min-width:600px){.grid{grid-template-columns:repeat(3,1fr)}h1{font-size:2.9rem}}
@media (min-width:860px){
  body{padding-bottom:0}
  .top{padding:0 20px}
  .top-in{max-width:1320px;height:var(--hdr-h);grid-template-columns:auto minmax(160px,520px);justify-content:start;grid-template-areas:"brand search";gap:36px;padding-right:290px}
  .tsw-wrap{position:absolute;right:0;top:50%;transform:translateY(-50%)}
  .bottom{top:0;bottom:auto;left:50%;transform:translateX(-50%);width:min(1360px,100%);height:var(--hdr-h);padding:0 96px 0 20px;background:none;border:0;backdrop-filter:none;-webkit-backdrop-filter:none;justify-content:flex-end;gap:2px;pointer-events:none}
  .bottom a{flex:none;max-width:none;flex-direction:row;gap:8px;height:42px;align-self:center;padding:0 14px 0 8px;font-size:.95rem;pointer-events:auto}
  .bottom a::before{top:auto;bottom:0;left:14px;right:14px}
  .bottom a i{width:30px;height:30px}
  .bottom b{position:static;margin-left:2px}
  main{max-width:1360px;padding:32px 20px 24px}
  .grid{grid-template-columns:repeat(4,1fr);gap:32px 20px}
  .hero{padding:30px 0 0;margin-bottom:44px}
  .card .nm{min-height:1.3em}
  h1{font-size:3.6rem;line-height:1.04}
  .hero>div{display:grid;grid-template-columns:1fr 320px;gap:48px;align-items:end}
  .hero p{font-size:1.15rem;margin:0 0 10px}
  .chips{margin:0 0 28px;padding:0}
  .perks{grid-template-columns:repeat(3,1fr);margin-top:44px}
  .perks li{padding:22px 0 24px;border-bottom:0}
  .perks li+li{border-left:1px solid var(--line);padding-left:28px}
  .cartbar{max-width:min(1320px,calc(100vw - 200px));bottom:24px}
  .toast{bottom:96px}
  .foot{margin-top:96px;background:var(--surface)}
  .foot-in{max-width:1360px;padding:72px 20px 0;display:grid;grid-template-columns:1.5fr 1fr 1.25fr 1.25fr;gap:56px;align-items:start}
  .foot-brand{display:block}
  .foot-col{display:block}
  .foot-bottom{grid-column:1/-1;flex-direction:row;justify-content:space-between;margin-top:32px;padding:22px 0 30px}
  .wa-float{display:flex;position:fixed;right:24px;bottom:24px;z-index:30;align-items:center;height:54px;padding:5px;border-radius:99px;
    background:var(--glass);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);
    border:1px solid var(--line2);box-shadow:var(--float);color:var(--text);
    transition:border-color .3s,box-shadow .3s,transform .3s cubic-bezier(.2,1,.4,1);animation:waIn .7s cubic-bezier(.2,.7,.2,1) .6s both}
  .wa-ic{flex:none;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;
    background:color-mix(in srgb,#25d366 14%,transparent);color:#25d366;transition:background .3s,color .3s}
  .wa-ic .ic{width:22px;height:22px}
  .wa-txt{display:flex;flex-direction:column;justify-content:center;line-height:1.2;white-space:nowrap;overflow:hidden;max-width:0;opacity:0;
    transition:max-width .45s cubic-bezier(.2,.8,.2,1),opacity .3s,margin .45s;animation:waHint 7s cubic-bezier(.2,.8,.2,1) 1.8s both}
  .wa-txt b{font-size:.88rem;font-weight:600;letter-spacing:-.005em}
  .wa-txt small{font-size:.72rem;color:var(--muted)}
  .wa-float:focus-visible,.wa-float:hover{border-color:var(--accent)}
  .wa-float:focus-visible .wa-txt,.wa-float:hover .wa-txt{max-width:140px!important;opacity:1!important;margin:0 14px 0 10px!important}
  .wa-float:hover .wa-ic{background:#25d366;color:#fff}
  .wa-float:hover{transform:translateY(-2px)}
  @keyframes waIn{from{opacity:0;transform:translateY(14px) scale(.9)}to{opacity:1;transform:none}}
  @keyframes waHint{0%,6%{max-width:0;opacity:0;margin:0}16%,78%{max-width:140px;opacity:1;margin:0 14px 0 10px}92%,100%{max-width:0;opacity:0;margin:0}}
}
@media (min-width:860px) and (max-width:1099px){
  h1{font-size:3rem}
  .bottom a span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}   /* ikon saja agar header tidak sesak */
  .bottom a{padding:0 8px}
  .bottom b{position:absolute;top:2px;right:0;margin:0}
}
@media (min-width:1100px){.top-in{padding-right:520px}}

/* ---------- Layout belanja & card melayang (khusus desktop) ---------- */
.fcard,.side{display:none}
.fhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.fhead b{display:inline-flex;align-items:center;gap:8px;font-size:1rem;font-weight:700;letter-spacing:-.01em}
.freset{display:inline-flex;align-items:center;gap:5px;background:none;border:0;color:var(--accent-text);font-size:.8rem;font-weight:600;cursor:pointer;padding:4px 2px}
.freset:hover{text-decoration:underline;text-underline-offset:3px}

@media (min-width:860px){
  main.narrow{max-width:800px}
  .shop{display:grid;grid-template-columns:264px minmax(0,1fr);gap:24px;align-items:start}  /* card sticky berhenti di dasar area belanja, tidak menimpa footer */
  .shop>.fcard,.shop>.side{grid-row:1}
  .shop>.fcard{grid-column:1}
  .shop-main{grid-row:1}
  .foot{position:relative;z-index:8;background:var(--bg)}
  .shop .chips{display:none}
  .shop-main{grid-column:2;min-width:0}
  .shop .grid{grid-template-columns:repeat(2,1fr);gap:28px 20px}
  .shop .card .nm{min-height:2.6em}
  .shop .hero{padding-top:6px;margin-bottom:32px}
  .shop .hero>div{display:block}
  .shop .hero h1{font-size:2.8rem}
  .shop .hero p{margin:14px 0 0}
  .shop .perks{grid-template-columns:1fr;margin-top:26px}
  .shop .perks li{padding:13px 0;border-bottom:1px solid var(--line)}
  .shop .perks li:last-child{border-bottom:0}
  .shop .perks li+li{border-left:0;padding-left:0}
  .sec-head h2{font-size:1.5rem}

  .float{background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--float);padding:20px;animation:floatin .55s cubic-bezier(.2,.7,.2,1) both}
  @keyframes floatin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
  .fcard{display:block;position:sticky;will-change:max-height;z-index:5;top:var(--stick);align-self:start;max-height:calc(100vh - var(--stick) - 20px);overflow:auto;overscroll-behavior:contain;scrollbar-width:none}
  .fcard::-webkit-scrollbar{display:none}
  .fgroup{padding:16px 0;border-top:1px solid var(--line)}
  .fgroup:first-of-type{border-top:0;padding-top:8px}
  .fgroup h3{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
  .fopt{display:flex;align-items:center;gap:8px;margin:0 -10px;padding:9px 10px;border-radius:10px;cursor:pointer;font-size:.92rem;font-weight:400;color:var(--text);letter-spacing:0;transition:background .15s,color .15s}
  .fopt input{position:absolute;opacity:0;pointer-events:none}
  .fopt span{flex:1;min-width:0}
  .fopt em{font-style:normal;font-size:.78rem;color:var(--muted);background:var(--surface2);border-radius:99px;padding:1px 8px;min-width:24px;text-align:center}
  .fopt:hover{background:var(--surface2)}
  .fopt.on{background:rgba(244,93,82,.12);color:var(--accent-text);font-weight:600}
  .fopt.on em{background:var(--brand);color:#fff}
  .fopt:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:1px}
  .fgroup select{padding:10px 12px}
  .frange{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;color:var(--muted)}
  .frange input{padding:10px 11px;font-size:.9rem;min-width:0}
  .fcheck{display:flex;align-items:center;gap:10px;margin:0;cursor:pointer;font-size:.92rem;font-weight:400;color:var(--text);letter-spacing:0}
  .fcheck input{width:18px;height:18px;accent-color:var(--brand);cursor:pointer}

  .side .ccard+.ccard{margin-top:16px}
  .ccard .row.total{font-size:1.1rem}
  .clist{list-style:none;max-height:clamp(120px,calc(100vh - 520px),260px);overflow:auto;margin:6px -4px 0;padding:0 4px;scrollbar-width:thin}
  .clist li{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);font-size:.9rem}
  .clist .cn{min-width:0;font-weight:500}
  .clist .cn small{display:block;color:var(--muted);font-weight:400;font-size:.78rem;margin-top:2px}
  .clist b{white-space:nowrap;font-weight:600}
  .cempty{text-align:center;padding:22px 8px 8px;color:var(--muted)}
  .cempty .ic{width:38px;height:38px;stroke-width:1.2;color:var(--accent-text);margin-bottom:10px}
  .cempty p{color:var(--text);font-weight:600;margin-bottom:2px}
  .help b{font-size:.98rem;font-weight:700}
  .help p{margin-top:6px}
  .help .foot-wa{margin-top:12px}
}
@media (min-width:860px) and (max-height:820px){
  .fcard.float{padding:16px 18px}
  .fcard .fgroup{padding:11px 0}
  .fcard .fgroup:first-of-type{padding-top:4px}
  .fcard .fopt{padding:6px 10px}
}
@media (min-width:860px) and (max-height:700px){
  .fcard.float{padding:12px 16px}
  .fcard .fgroup{padding:8px 0}
  .fcard .fgroup h3{margin-bottom:6px}
  .fcard .fopt{padding:4px 10px;font-size:.88rem}
  .fcard .fhead{margin-bottom:0}
}
@media (min-width:1000px) and (max-width:1199px){.shop .grid{grid-template-columns:repeat(3,1fr)}}
@media (min-width:1200px){
  .shop{grid-template-columns:264px minmax(0,1fr) 300px}
  .shop .perks{grid-template-columns:repeat(3,1fr)}
  .shop .perks li{padding:18px 0 20px;border-bottom:0}
  .shop .perks li+li{border-left:1px solid var(--line);padding-left:20px}
  .shop>.side{grid-column:3}
  .side{display:block;position:sticky;z-index:5;top:var(--stick);align-self:start}
  body .cartbar{display:none}          /* ringkasan keranjang sudah ada di card kanan */
}
@media (min-width:1340px){.shop .grid{grid-template-columns:repeat(3,1fr)}}

/* Tombol utama di halaman keranjang/checkout: selalu selebar kotak di atasnya */
#view>.btn{display:flex;width:100%}

/* ---------- Hero animasi: kata bergulir + adegan fajar & pengiriman ---------- */
.hl{font:700 2.3rem/1.12 var(--sans);letter-spacing:-.03em;animation:rise 1s cubic-bezier(.2,.7,.2,1) both}
.hl>span{display:block}
.hl-roll{height:1.12em;overflow:hidden;color:var(--brand)}
.hl-track{display:block;animation:roll 11s cubic-bezier(.7,0,.2,1) infinite}
.hl-track b{display:block;height:1.12em;font-weight:700}
@keyframes roll{0%,18%{transform:none}25%,43%{transform:translateY(-20%)}50%,68%{transform:translateY(-40%)}75%,93%{transform:translateY(-60%)}100%{transform:translateY(-80%)}}
@media (min-width:600px){.hl{font-size:2.9rem}}

/* ---------- Hero: animasi alur bisnis (Packing → Muat → Antar → Diterima), satu siklus 16 dtk ----------
   Semua animasi memakai durasi sama (--T) agar sinkron. Persentase: packing 0–22 · muat 22–36 · antar 36–72 · diterima 72–96. */
.scene{--T:16s;position:relative;height:152px;margin-top:26px;overflow:hidden;border:1px solid var(--line);border-radius:18px;
  background:radial-gradient(ellipse 60% 90% at 50% 100%,rgba(244,93,82,.16),transparent 72%),var(--surface)}
.stages{position:absolute;left:12px;right:12px;top:12px;display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;z-index:4}
.sg{display:inline-flex;align-items:center;gap:6px;font-size:.68rem;font-weight:600;letter-spacing:.02em;padding:3px 10px;border-radius:99px;border:1px solid var(--line);color:var(--muted);background:transparent;white-space:nowrap}
.sg+.sg::before{content:"";position:absolute;margin-left:-14px;width:6px;height:6px;border-top:1.5px solid var(--line2);border-right:1.5px solid var(--line2);transform:rotate(45deg) scale(.7)}
.sg b{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;font-size:.6rem;font-weight:700;background:var(--surface2);color:inherit}
.s1{animation:sg1 var(--T) infinite}.s2{animation:sg2 var(--T) infinite}.s3{animation:sg3 var(--T) infinite}.s4{animation:sg4 var(--T) infinite}
@keyframes sg1{0%,21.5%{color:var(--accent-text);border-color:var(--accent);background:rgba(244,93,82,.10)}22.5%,100%{color:var(--muted);border-color:var(--line);background:transparent}}
@keyframes sg2{0%,21.5%{color:var(--muted);border-color:var(--line);background:transparent}22.5%,35.5%{color:var(--accent-text);border-color:var(--accent);background:rgba(244,93,82,.10)}36.5%,100%{color:var(--muted);border-color:var(--line);background:transparent}}
@keyframes sg3{0%,35.5%{color:var(--muted);border-color:var(--line);background:transparent}36.5%,71.5%{color:var(--accent-text);border-color:var(--accent);background:rgba(244,93,82,.10)}72.5%,100%{color:var(--muted);border-color:var(--line);background:transparent}}
@keyframes sg4{0%,71.5%{color:var(--muted);border-color:var(--line);background:transparent}72.5%,95.5%{color:var(--ok);border-color:var(--ok);background:var(--ok-bg)}96.5%,100%{color:var(--muted);border-color:var(--line);background:transparent}}

.ground{position:absolute;left:0;right:0;bottom:0;height:44px;background:var(--bg);border-top:1px solid var(--line2);overflow:hidden;z-index:2}
.road{position:absolute;left:0;right:0;bottom:7px;height:1px;background:repeating-linear-gradient(90deg,var(--line2) 0 10px,transparent 10px 22px)}
.stn{position:absolute;bottom:44px;z-index:3;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--accent-text)}
.stn small{font-size:.58rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.stn .ic{width:36px;height:36px;stroke-width:1.4}
.wh{left:12px}.cu{right:12px}
.cu .ic{position:relative;z-index:1}
.cu .ring{position:absolute;left:50%;bottom:0;width:36px;height:36px;margin-left:-18px;border-radius:50%;border:1px solid var(--ok);opacity:0;animation:kring var(--T) infinite}
.cu .done{position:absolute;top:10px;right:-4px;z-index:2;width:18px;height:18px;color:var(--ok);background:var(--surface);border-radius:50%;opacity:0;animation:kdone var(--T) infinite}
.cu .done .ic{width:18px;height:18px;stroke-width:2}
@keyframes kring{0%,80%{opacity:0;transform:scale(.6)}81%{opacity:.9}92%,100%{opacity:0;transform:scale(2.3)}}
@keyframes kdone{0%,80%{opacity:0;transform:scale(0)}83%{opacity:1;transform:scale(1.25)}85%,95%{opacity:1;transform:scale(1)}97%,100%{opacity:0;transform:scale(.6)}}

/* packing: bahan jatuh ke kardus, kardus disegel */
.pi{position:absolute;bottom:72px;left:calc(70px + var(--dx));z-index:3;width:20px;height:20px;color:var(--muted);opacity:0;animation:kdrop var(--T) infinite both}
.pi .ic{width:20px;height:20px;stroke-width:1.5;display:block}
@keyframes kdrop{0%{opacity:0;transform:translate(0,-22px) scale(1)}1.5%{opacity:1;transform:translate(0,-6px) scale(1)}5.5%{opacity:1;transform:translate(calc(var(--dx) * -1),30px) scale(.5)}6.5%,100%{opacity:0;transform:translate(calc(var(--dx) * -1),34px) scale(.3)}}
.dock{position:absolute;left:66px;bottom:44px;z-index:3;width:28px;height:28px;color:var(--accent-text);opacity:0;animation:kdock var(--T) infinite}
.dock svg{position:absolute;inset:0;width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.dock .o{animation:kopen var(--T) infinite}
.dock .s{opacity:0;animation:kshut var(--T) infinite}
@keyframes kdock{0%{opacity:0;transform:none}2%,25%{opacity:1;transform:none}33%{opacity:1;transform:translate(13px,34px) scale(.5)}34%,100%{opacity:0;transform:translate(13px,34px) scale(.5)}}
@keyframes kopen{0%,19.5%{opacity:1}20%,100%{opacity:0}}
@keyframes kshut{0%,19.5%{opacity:0;transform:scale(1)}21%{opacity:1;transform:scale(1.28)}24%,100%{opacity:1;transform:scale(1)}}

/* truk: parkir di dok → muat → antar → bongkar */
.truck{position:absolute;bottom:8px;left:84px;width:30px;height:30px;color:var(--accent-text);animation:kdrive var(--T) infinite}
.truck .ic{width:30px;height:30px;stroke-width:1.5;display:block;animation:bump .45s ease-in-out infinite alternate}
.truck::before{content:"";position:absolute;left:-18px;top:11px;width:14px;height:2px;border-radius:2px;background:currentColor;box-shadow:4px 7px 0 currentColor,-2px 14px 0 currentColor;opacity:0;animation:kspeed var(--T) infinite}
.cargo{position:absolute;left:4px;bottom:11px;width:12px;height:11px;border-radius:2px;background:var(--accent);opacity:0;animation:kcargo var(--T) infinite}
.cargo::after{content:"";position:absolute;left:5px;top:0;bottom:0;width:2px;background:rgba(255,255,255,.55)}
@keyframes kdrive{0%{left:84px;opacity:0}3%{left:84px;opacity:1}36%{left:84px;animation-timing-function:cubic-bezier(.5,0,.25,1)}70%,94%{left:calc(100% - 130px);opacity:1}97%{left:calc(100% - 130px);opacity:0}97.1%,100%{left:84px;opacity:0}}
@keyframes bump{to{transform:translateY(-1px)}}
@keyframes kspeed{0%,37%{opacity:0}41%,65%{opacity:.6}70%,100%{opacity:0}}
@keyframes kcargo{0%,32%{opacity:0;transform:translateY(-8px)}35%,72%{opacity:1;transform:none}73.5%,100%{opacity:0;transform:none}}
.out{position:absolute;right:107px;bottom:30px;z-index:3;width:22px;height:22px;color:var(--accent-text);opacity:0;animation:kout var(--T) infinite}
.out .ic{width:22px;height:22px;stroke-width:1.6;display:block}
@keyframes kout{0%,72.5%{opacity:0;transform:none}74%{opacity:1;transform:translateY(-8px)}80%{opacity:1;transform:translate(68px,-10px) scale(.75)}82%,100%{opacity:0;transform:translate(76px,-10px) scale(.4)}}
@media (min-width:860px){.shop .hl{font-size:2.9rem}}
@media (max-width:420px){.sg{padding:3px 8px;font-size:.64rem}.sg+.sg::before{display:none}}
@media (prefers-reduced-motion:reduce){.sg{animation:none}}

/* ---------- Dropdown bertema (global, semua <select>) — logika di assets/select.js ---------- */
:root{--menu-bg:#181818}
html[data-theme="light"]{--menu-bg:#fff}
.dd{position:relative;width:100%}
.dd-native{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none;border:0;padding:0;box-shadow:none}
.dd-btn{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:46px;padding:10px 12px 10px 14px;text-align:left;cursor:pointer;
  background:linear-gradient(180deg,var(--surface),var(--bg));border:1px solid var(--line2);border-radius:var(--r);outline:none;
  transition:border-color .2s,box-shadow .2s,background .2s}
.dd-btn:hover{border-color:var(--accent)}
.dd-btn:focus-visible,.dd.open .dd-btn{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}
.dd-val{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.dd-val.ph{color:var(--muted);font-weight:400}
.dd-chev{flex:none;width:18px;height:18px;fill:none;stroke:var(--muted);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s cubic-bezier(.3,.8,.2,1),stroke .2s}
.dd-btn:hover .dd-chev,.dd.open .dd-chev{stroke:var(--accent)}
.dd.open .dd-chev{transform:rotate(180deg)}
.dd.is-disabled .dd-btn{opacity:.55;cursor:not-allowed;border-color:var(--line)}
.dd.is-disabled .dd-btn:hover{border-color:var(--line)}
.fgroup .dd-btn{min-height:42px;padding:8px 10px 8px 12px}

.dd-menu{position:fixed;z-index:200;list-style:none;margin:0;padding:6px;overflow:auto;overscroll-behavior:contain;outline:none;scrollbar-width:thin;
  background:var(--menu-bg);border:1px solid var(--line2);border-radius:14px;box-shadow:var(--float);
  transform-origin:top center;animation:ddin .16s cubic-bezier(.2,.8,.2,1) both}
.dd-menu.up{transform-origin:bottom center}
@keyframes ddin{from{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}
.dd-menu li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:9px;cursor:pointer;font-size:.92rem;color:var(--text);transition:background .12s,color .12s}
.dd-menu li+li{margin-top:2px}
.dd-menu li.act{background:rgba(244,93,82,.10)}
.dd-menu li.ph{color:var(--muted)}
.dd-menu li[aria-selected="true"]{color:var(--accent-text);font-weight:600;background:rgba(244,93,82,.12)}
.dd-menu li[aria-selected="true"].act{background:rgba(244,93,82,.2)}
.dd-menu li[aria-disabled="true"]{opacity:.4;cursor:not-allowed}
.dd-check{flex:none;width:16px;height:16px;fill:none;stroke:var(--brand);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;opacity:0;transform:scale(.6);transition:opacity .15s,transform .2s cubic-bezier(.3,1.4,.5,1)}
.dd-menu li[aria-selected="true"] .dd-check{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.dd-menu{animation:none}.dd-chev,.dd-check{transition:none}}

/* ---------- Rentang harga: dua titik geser ---------- */
.prange{--th:22px;--a:0;--b:1}
.pr-vals{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.pr-v{flex:1;min-width:0;text-align:center;white-space:nowrap;font-size:.84rem;font-weight:600;padding:7px 6px;border-radius:10px;background:var(--bg);border:1px solid var(--line2)}
.pr-sep{color:var(--muted)}
.pr-track{position:relative;height:var(--th)}
.pr-rail,.pr-fill{position:absolute;top:50%;height:4px;margin-top:-2px;border-radius:9px}
.pr-rail{left:0;right:0;background:var(--line2)}
.pr-fill{left:calc(var(--th)/2 + (100% - var(--th))*var(--a));right:calc(var(--th)/2 + (100% - var(--th))*(1 - var(--b)));background:var(--accent)}
.pr-track input{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:0;background:none;box-shadow:none;outline:none;
  -webkit-appearance:none;appearance:none;pointer-events:none;z-index:3}
.pr-track input:focus{border:0;box-shadow:none}
.pr-track input[data-f="min"]{z-index:2}
.prange.flip input[data-f="min"]{z-index:4}   /* titik yang di ujung kanan harus tetap bisa diraih */
.pr-track input::-webkit-slider-runnable-track{height:var(--th);background:transparent;border:0}
.pr-track input::-moz-range-track{height:var(--th);background:transparent;border:0}
.pr-track input::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;box-sizing:border-box;pointer-events:auto;width:var(--th);height:var(--th);border-radius:50%;
  background:#fff;border:2px solid var(--brand);box-shadow:0 2px 8px rgba(0,0,0,.4);cursor:grab;transition:transform .15s,box-shadow .15s}
.pr-track input::-moz-range-thumb{box-sizing:border-box;pointer-events:auto;width:var(--th);height:var(--th);border-radius:50%;
  background:#fff;border:2px solid var(--brand);box-shadow:0 2px 8px rgba(0,0,0,.4);cursor:grab;transition:transform .15s,box-shadow .15s}
.pr-track input:hover::-webkit-slider-thumb{transform:scale(1.1)}
.pr-track input:hover::-moz-range-thumb{transform:scale(1.1)}
.pr-track input:active::-webkit-slider-thumb{cursor:grabbing;box-shadow:0 0 0 6px var(--ring),0 2px 8px rgba(0,0,0,.4)}
.pr-track input:active::-moz-range-thumb{cursor:grabbing;box-shadow:0 0 0 6px var(--ring),0 2px 8px rgba(0,0,0,.4)}
.pr-track input:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 5px var(--ring),0 2px 8px rgba(0,0,0,.4)}
.pr-track input:focus-visible::-moz-range-thumb{box-shadow:0 0 0 5px var(--ring),0 2px 8px rgba(0,0,0,.4)}
.pr-ends{display:flex;justify-content:space-between;margin-top:8px;font-size:.74rem;color:var(--muted)}
@media (pointer:coarse){.prange{--th:28px}}

/* Mobile: font input 16px agar iOS tidak zoom saat fokus (harus di akhir agar mengalahkan font:inherit) */
@media (max-width:859px){input,select,textarea,.search input{font-size:16px}}

.fmore{display:flex;align-items:center;gap:6px;margin:4px 0 0;padding:8px 0;background:none;border:0;color:var(--accent-text);font-size:.86rem;font-weight:600;cursor:pointer}
.fmore .ic{transition:transform .25s}
.fmore[aria-expanded="true"] .ic{transform:rotate(180deg)}
.fmore:hover{text-decoration:underline;text-underline-offset:3px}
