/* ==========================================================================
   POJOK WIRAUSAHA MAHASISWA — PGSD UPI Kampus Serang
   style.css — mobile-first, vanilla CSS, tanpa framework
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. DESIGN TOKENS
   -------------------------------------------------------------------------- */
:root{
  /* brand */
  --maroon-50:#FDF2F4;
  --maroon-100:#FBE3E7;
  --maroon-200:#F5C3CB;
  --maroon-400:#DB4A63;
  --maroon-500:#C42A45;
  --maroon-600:#AB2039;
  --maroon-700:#8B1830;
  --maroon-800:#6E1226;

  /* netral */
  --white:#FFFFFF;
  --cream:#FFF8F3;
  --cream-2:#FFF3EC;
  --offwhite:#FBF9F9;
  --ink:#1E1A1D;
  --ink-2:#3B3238;
  --muted:#6E6068;
  --muted-2:#9A8D94;
  --line:#EFE6E8;
  --line-2:#E4D8DC;

  /* aksen pendukung */
  --mint:#0F9B6C;
  --amber:#B26B00;
  --violet:#6D4AA8;

  /* radius */
  --r-xs:8px;
  --r-sm:12px;
  --r:16px;
  --r-lg:22px;
  --r-xl:30px;
  --r-full:999px;

  /* shadow */
  --sh-1:0 1px 2px rgba(30,26,29,.05), 0 1px 3px rgba(30,26,29,.05);
  --sh-2:0 4px 10px -2px rgba(30,26,29,.07), 0 10px 24px -8px rgba(30,26,29,.10);
  --sh-3:0 10px 20px -6px rgba(30,26,29,.10), 0 24px 48px -16px rgba(30,26,29,.16);
  --sh-brand:0 10px 22px -8px rgba(196,42,69,.45);

  /* layout */
  --container:1180px;
  --pad:20px;
  --nav-h:68px;

  /* motion */
  --ease:cubic-bezier(.22,.61,.36,1);
  --t-fast:.16s var(--ease);
  --t:.28s var(--ease);
  --t-slow:.5s var(--ease);

  /* type */
  --font-display:'Plus Jakarta Sans','Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --font-body:'Inter','Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;

  /* default warna kategori (dioverride inline oleh JS) */
  --c1:#EFE9EC;
  --c2:#CBBFC5;
}

/* --------------------------------------------------------------------------
   2. RESET
   -------------------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 16px)}
body{
  margin:0;
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.65;
  color:var(--ink);
  background:var(--white);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg,video{display:block;max-width:100%}
img{height:auto}
h1,h2,h3,h4{font-family:var(--font-display);line-height:1.18;margin:0;letter-spacing:-.02em;color:var(--ink)}
p{margin:0}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none}
ul,ol{margin:0;padding:0;list-style:none}
:focus-visible{outline:3px solid var(--maroon-400);outline-offset:2px;border-radius:6px}
::selection{background:var(--maroon-200);color:var(--maroon-800)}

/* --------------------------------------------------------------------------
   3. UTILITAS
   -------------------------------------------------------------------------- */
.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--pad)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:12px;top:-60px;z-index:200;background:var(--maroon-600);color:#fff;padding:10px 16px;border-radius:var(--r-sm);transition:top var(--t)}
.skip-link:focus{top:12px}
.icon{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.icon--sm{width:16px;height:16px}
.grad-text{background:linear-gradient(100deg,var(--maroon-500),var(--maroon-700) 55%,#D2542C);-webkit-background-clip:text;background-clip:text;color:transparent}

.eyebrow{
  display:inline-flex;align-items:center;gap:7px;
  font-family:var(--font-display);font-size:.75rem;font-weight:700;
  letter-spacing:.11em;text-transform:uppercase;color:var(--maroon-600);
  background:var(--maroon-50);border:1px solid var(--maroon-100);
  padding:6px 13px;border-radius:var(--r-full);margin-bottom:16px;
}
.eyebrow .icon{width:15px;height:15px}
.eyebrow--muted{background:var(--cream-2);border-color:var(--line)}
.eyebrow--light{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.28);color:#fff}

/* --------------------------------------------------------------------------
   4. TOMBOL & KONTROL
   -------------------------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:var(--font-display);font-weight:700;font-size:.94rem;
  padding:13px 22px;border-radius:var(--r-full);
  border:1.5px solid transparent;white-space:nowrap;
  transition:transform var(--t-fast),box-shadow var(--t),background var(--t),color var(--t),border-color var(--t);
}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0)}
.btn--sm{padding:9px 16px;font-size:.86rem}
.btn--lg{padding:15px 28px;font-size:1rem}
.btn--block{width:100%}

.btn--primary{background:var(--maroon-600);color:#fff;box-shadow:var(--sh-brand)}
.btn--primary:hover{background:var(--maroon-700);box-shadow:0 14px 26px -10px rgba(139,24,48,.55)}
.btn--outline{background:#fff;color:var(--maroon-700);border-color:var(--line-2)}
.btn--outline:hover{border-color:var(--maroon-400);background:var(--maroon-50)}
.btn--soft{background:var(--cream-2);color:var(--ink-2);border-color:var(--line)}
.btn--soft:hover{background:var(--maroon-50);color:var(--maroon-700);border-color:var(--maroon-200)}
.btn--ghost{background:rgba(255,255,255,.72);color:var(--ink);border-color:var(--line-2);backdrop-filter:blur(6px)}
.btn--ghost:hover{background:#fff;border-color:var(--maroon-300,var(--maroon-200))}
.btn--light{background:#fff;color:var(--maroon-700);box-shadow:0 12px 30px -12px rgba(0,0,0,.45)}
.btn--light:hover{background:var(--maroon-50)}
.btn--wa{background:#1FA855;color:#fff;box-shadow:0 10px 20px -10px rgba(31,168,85,.7)}
.btn--wa:hover{background:#178C46}
.btn--wa .icon{fill:currentColor;stroke:none}

.icon-btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:42px;height:42px;border-radius:var(--r-full);
  background:var(--cream-2);border:1px solid var(--line);color:var(--ink-2);
  transition:background var(--t),color var(--t),border-color var(--t),transform var(--t-fast);
}
.icon-btn:hover{background:var(--maroon-50);color:var(--maroon-600);border-color:var(--maroon-200);transform:translateY(-1px)}
.fav-count{
  position:absolute;top:-4px;right:-4px;min-width:19px;height:19px;padding:0 5px;
  display:grid;place-items:center;border-radius:var(--r-full);
  background:var(--maroon-600);color:#fff;font-size:.68rem;font-weight:700;line-height:1;
  border:2px solid #fff;
}

.chip{
  display:inline-flex;align-items:center;gap:7px;
  padding:9px 16px;border-radius:var(--r-full);
  background:#fff;border:1.5px solid var(--line-2);
  font-family:var(--font-display);font-size:.87rem;font-weight:600;color:var(--ink-2);
  transition:all var(--t-fast);white-space:nowrap;
}
.chip:hover{border-color:var(--maroon-300,var(--maroon-200));background:var(--maroon-50);color:var(--maroon-700)}
.chip[aria-pressed="true"]{background:var(--maroon-600);border-color:var(--maroon-600);color:#fff;box-shadow:var(--sh-brand)}
.chip__count{font-size:.75rem;opacity:.7;font-weight:700}

.chip-mini{
  background:#fff;border:1px solid var(--line-2);border-radius:var(--r-full);
  padding:3px 11px;font-size:.8rem;font-weight:600;color:var(--muted);
  transition:all var(--t-fast);
}
.chip-mini:hover{color:var(--maroon-600);border-color:var(--maroon-200);background:var(--maroon-50)}

.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.field--grow{flex:1}
.field__label{font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2)}
.select{
  appearance:none;-webkit-appearance:none;
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236E6068' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center;
  border:1.5px solid var(--line-2);border-radius:var(--r-sm);
  padding:10px 38px 10px 14px;font-size:.9rem;font-weight:500;color:var(--ink-2);
  transition:border-color var(--t),box-shadow var(--t);cursor:pointer;
}
.select:hover{border-color:var(--maroon-200)}
.select:focus{border-color:var(--maroon-400);box-shadow:0 0 0 3px var(--maroon-100);outline:none}

/* --------------------------------------------------------------------------
   5. NAVBAR
   -------------------------------------------------------------------------- */
.nav{
  position:sticky;top:0;z-index:90;
  background:rgba(255,255,255,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;
  transition:background var(--t),box-shadow var(--t),border-color var(--t);
}
.nav--scrolled,.nav--solid{background:rgba(255,255,255,.94);border-bottom-color:var(--line);box-shadow:0 4px 18px -12px rgba(30,26,29,.3)}
.nav__inner{display:flex;align-items:center;gap:14px;min-height:var(--nav-h)}

.brand{display:flex;align-items:center;gap:11px;margin-right:auto;transition:transform var(--t-fast)}
.brand:hover{transform:translateY(-1px)}
.brand__logo{width:40px;height:40px;border-radius:12px;flex:none}
.brand__text{display:flex;flex-direction:column;line-height:1.15}
.brand__name{font-family:var(--font-display);font-weight:800;font-size:1.02rem;letter-spacing:-.02em}
.brand__sub{font-size:.68rem;font-weight:600;color:var(--muted-2);letter-spacing:.02em}

.nav__menu{display:flex;align-items:center;gap:4px}
.nav__link{
  position:relative;padding:9px 13px;border-radius:var(--r-sm);
  font-family:var(--font-display);font-size:.9rem;font-weight:600;color:var(--ink-2);
  transition:color var(--t),background var(--t);
}
.nav__link:hover{color:var(--maroon-600);background:var(--maroon-50)}
.nav__link::after{
  content:'';position:absolute;left:13px;right:13px;bottom:4px;height:2px;
  background:var(--maroon-600);border-radius:2px;transform:scaleX(0);transform-origin:left;
  transition:transform var(--t);
}
.nav__link:hover::after,.nav__link.is-active::after{transform:scaleX(1)}
.nav__link.is-active{color:var(--maroon-700)}
.nav__link--mobile-only{display:none}
.nav__cta{margin-left:8px}
.nav__actions{display:flex;align-items:center;gap:8px}
.nav__toggle{display:none}
.icon--close{display:none}
.nav-backdrop{position:fixed;inset:0;background:rgba(30,26,29,.35);z-index:85;backdrop-filter:blur(2px);animation:fade .25s var(--ease)}

/* --------------------------------------------------------------------------
   5b. BANNER DATA CONTOH
   -------------------------------------------------------------------------- */
.demo-banner{background:#3B3238;color:#FFE9C7;font-size:.82rem;line-height:1.5}
.demo-banner__inner{display:flex;align-items:center;gap:11px;padding-block:9px;flex-wrap:wrap}
.demo-banner__tag{
  flex:none;background:#F2B705;color:#3A2B00;
  font-family:var(--font-display);font-size:.66rem;font-weight:800;
  letter-spacing:.09em;text-transform:uppercase;
  padding:4px 10px;border-radius:var(--r-full);
}
.demo-banner p{margin:0}

/* --------------------------------------------------------------------------
   5c. PANEL "BELUM ADA DATA"
   -------------------------------------------------------------------------- */
.kosong-panel{
  display:flex;flex-direction:column;align-items:center;text-align:center;
  padding:clamp(34px,6vw,64px) clamp(20px,4vw,48px);
  border-radius:var(--r-xl);
  background:linear-gradient(160deg,var(--cream),var(--cream-2));
  border:1.5px dashed var(--line-2);
}
.kosong-panel__icon{
  display:grid;place-items:center;width:64px;height:64px;border-radius:20px;
  background:#fff;color:var(--mint);box-shadow:var(--sh-2);margin-bottom:18px;
}
.kosong-panel__icon .icon{width:28px;height:28px}
.kosong-panel__title{font-size:clamp(1.4rem,4vw,2.05rem);font-weight:800;text-wrap:balance}
.kosong-panel__sub{margin-top:12px;color:var(--muted);font-size:clamp(.94rem,2vw,1.04rem);max-width:56ch}
.kosong-panel__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:11px;margin-top:26px}
.kosong-panel__langkah{
  display:flex;flex-wrap:wrap;justify-content:center;gap:10px 26px;
  margin-top:32px;padding-top:24px;border-top:1px dashed var(--line-2);width:100%;
  font-size:.86rem;font-weight:600;color:var(--ink-2);
}
.kosong-panel__langkah li{display:flex;align-items:center;gap:9px}
.kosong-panel__langkah span{
  display:grid;place-items:center;width:24px;height:24px;flex:none;
  border-radius:var(--r-full);background:var(--maroon-600);color:#fff;
  font-family:var(--font-display);font-size:.76rem;font-weight:800;
}

/* --------------------------------------------------------------------------
   6. HERO
   -------------------------------------------------------------------------- */
.hero{position:relative;overflow:hidden;padding:clamp(38px,7vw,78px) 0 clamp(28px,5vw,44px);background:linear-gradient(180deg,var(--cream) 0%,#fff 78%)}
.hero__decor{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.blob{position:absolute;border-radius:50%;filter:blur(52px);opacity:.5}
.blob--1{width:380px;height:380px;background:#FFD9C7;top:-130px;right:-90px}
.blob--2{width:320px;height:320px;background:#FFC9D4;bottom:-140px;left:-100px;opacity:.42}
.blob--3{width:240px;height:240px;background:#D9E7FF;top:38%;right:34%;opacity:.34}
.grid-dots{
  position:absolute;inset:0;
  background-image:radial-gradient(circle at 1px 1px,rgba(110,96,104,.16) 1px,transparent 0);
  background-size:26px 26px;
  -webkit-mask-image:radial-gradient(ellipse 65% 55% at 50% 40%,#000 25%,transparent 72%);
  mask-image:radial-gradient(ellipse 65% 55% at 50% 40%,#000 25%,transparent 72%);
  opacity:.6;
}
.hero__inner{position:relative;display:grid;gap:34px;align-items:center}
.hero__title{font-size:clamp(2.15rem,7.2vw,4rem);font-weight:800;letter-spacing:-.035em}
.hero__sub{margin-top:16px;font-size:clamp(1rem,2.4vw,1.14rem);color:var(--muted);max-width:56ch}
.hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.hero__note{display:flex;align-items:center;gap:8px;margin-top:22px;font-size:.86rem;font-weight:600;color:var(--muted-2)}
.hero__note .icon{width:17px;height:17px;color:var(--mint)}

.hero__visual{position:relative;min-height:300px;display:none}
.hero__ring{
  position:absolute;inset:8% 12%;border-radius:50%;
  border:1.5px dashed var(--line-2);
  background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.9),rgba(255,248,243,.35));
}
.float-card{
  position:absolute;display:flex;align-items:center;gap:11px;
  background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  padding:11px 15px 11px 11px;box-shadow:var(--sh-3);
  animation:floaty 7s ease-in-out infinite;
}
.float-card img{width:46px;height:46px;border-radius:13px;flex:none}
.float-card div{display:flex;flex-direction:column;line-height:1.25}
.float-card strong{font-family:var(--font-display);font-size:.86rem;font-weight:700;white-space:nowrap}
.float-card span{font-size:.82rem;font-weight:700;color:var(--maroon-600)}
.float-card--1{top:6%;left:2%;animation-delay:0s}
.float-card--2{top:34%;right:0;animation-delay:-1.6s}
.float-card--3{bottom:16%;left:8%;animation-delay:-3.2s}
.float-card--4{bottom:2%;right:8%;animation-delay:-4.8s}

@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-13px)}}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* ---------- search bar ---------- */
.searchbar{
  position:relative;display:flex;align-items:center;gap:8px;
  background:#fff;border:1.5px solid var(--line-2);border-radius:var(--r-full);
  padding:7px 7px 7px 18px;box-shadow:var(--sh-2);
  margin-top:clamp(24px,4vw,40px);
  transition:border-color var(--t),box-shadow var(--t);
}
.searchbar:focus-within{border-color:var(--maroon-400);box-shadow:0 0 0 4px var(--maroon-100),var(--sh-2)}
.searchbar__icon{color:var(--muted-2);flex:none}
.searchbar__input{flex:1;min-width:0;border:0;background:none;padding:11px 4px;font-size:.98rem;outline:none}
.searchbar__input::placeholder{color:var(--muted-2)}
.searchbar__input::-webkit-search-cancel-button{display:none}
.searchbar__clear{display:grid;place-items:center;width:30px;height:30px;border-radius:var(--r-full);color:var(--muted);background:var(--cream-2);transition:all var(--t-fast)}
.searchbar__clear:hover{background:var(--maroon-50);color:var(--maroon-600)}
.searchbar__btn{flex:none}
.searchbar__hint{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:13px;font-size:.83rem;color:var(--muted-2);padding-left:6px}

/* --------------------------------------------------------------------------
   7. STATISTIK
   -------------------------------------------------------------------------- */
.stats{padding:clamp(26px,4vw,40px) 0}
.stats__grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:12px;
  background:linear-gradient(135deg,var(--maroon-700),var(--maroon-500) 60%,#D2542C);
  border-radius:var(--r-xl);padding:clamp(22px,3.4vw,34px);
  box-shadow:0 24px 50px -26px rgba(139,24,48,.7);
}
.stat{display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;color:#fff;padding:8px 4px}
.stat__icon{width:22px;height:22px;opacity:.72;margin-bottom:4px}
.stat__num{font-family:var(--font-display);font-size:clamp(1.75rem,5.6vw,2.5rem);font-weight:800;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.stat__label{font-size:.8rem;font-weight:600;opacity:.86;letter-spacing:.01em}

/* --------------------------------------------------------------------------
   8. SECTION
   -------------------------------------------------------------------------- */
.section{padding:clamp(46px,7vw,84px) 0}
.section--soft{background:linear-gradient(180deg,#fff,var(--cream) 40%,#fff)}
.section--tight{padding-top:0}
.section--value{background:var(--cream)}
.section__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:clamp(24px,3.5vw,38px)}
.section__head--center{justify-content:center;text-align:center}
.section__head--center .eyebrow{margin-inline:auto;display:inline-flex}
.section__title{font-size:clamp(1.55rem,4.2vw,2.35rem);font-weight:800}
.section__title--sm{font-size:clamp(1.2rem,3vw,1.5rem)}
.section__sub{margin-top:9px;color:var(--muted);font-size:clamp(.94rem,2vw,1.03rem);max-width:60ch}
.subheading{font-size:1.15rem;font-weight:700;margin:38px 0 18px}

.grid{display:grid;gap:14px}
.grid--produk{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid--seller{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid--promo{grid-template-columns:repeat(1,minmax(0,1fr))}
.grid--cerita{grid-template-columns:repeat(1,minmax(0,1fr))}

/* --------------------------------------------------------------------------
   9. KATEGORI
   -------------------------------------------------------------------------- */
.cat-scroller{margin-inline:calc(var(--pad) * -1);padding-inline:var(--pad);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.cat-scroller::-webkit-scrollbar{display:none}
.cat-grid{display:grid;grid-auto-flow:column;grid-auto-columns:132px;gap:12px;padding-bottom:6px}
.cat-card{
  display:flex;flex-direction:column;align-items:flex-start;gap:8px;
  padding:16px 15px;border-radius:var(--r-lg);text-align:left;width:100%;
  background:var(--c1);
  background:linear-gradient(150deg,var(--c1),color-mix(in srgb,var(--c1) 55%,#fff));
  border:1.5px solid var(--c2);
  border-color:color-mix(in srgb,var(--c2) 32%,transparent);
  transition:transform var(--t),box-shadow var(--t),border-color var(--t);
}
.cat-card:hover{transform:translateY(-4px);box-shadow:var(--sh-2);border-color:color-mix(in srgb,var(--c2) 70%,transparent)}
.cat-card[aria-pressed="true"]{border-color:var(--maroon-600);box-shadow:0 0 0 2px var(--maroon-100),var(--sh-2)}
.cat-card__emoji{
  font-size:1.42rem;line-height:1;width:42px;height:42px;display:grid;place-items:center;
  background:rgba(255,255,255,.82);border-radius:14px;box-shadow:var(--sh-1);
}
.cat-card__name{font-family:var(--font-display);font-size:.9rem;font-weight:700;color:var(--ink);line-height:1.25}
.cat-card__count{font-size:.75rem;font-weight:600;color:var(--ink-2);opacity:.62}

/* --------------------------------------------------------------------------
   10. PRODUCT CARD
   -------------------------------------------------------------------------- */
.card{
  position:relative;display:flex;flex-direction:column;
  background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  overflow:hidden;box-shadow:var(--sh-1);
  transition:transform var(--t),box-shadow var(--t),border-color var(--t);
}
.card:hover{transform:translateY(-5px);box-shadow:var(--sh-3);border-color:var(--line-2)}
.card__media{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--cream-2)}
.card__media[data-act]{cursor:pointer}
.card__img{width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease)}
.card:hover .card__img{transform:scale(1.07)}

/* Ilustrasi kategori: dipakai saat produk tidak punya foto.
   Digambar sebagai SVG inline, jadi selalu tajam di ukuran berapa pun. */
.card__art{display:block;width:100%;height:100%;transition:transform .55s var(--ease)}
.card:hover .card__art{transform:scale(1.05)}
.rail-card .card__art{aspect-ratio:1/1}
.detail__media .card__art,.feature__media .card__art{height:100%;min-height:inherit}
.seller-card__logo.card__art{width:48px;height:48px;flex:none;border-radius:14px}
.feature__avatar.card__art{width:46px;height:46px;flex:none;border-radius:var(--r-full)}
.toko-hero__logo.card__art{width:96px;height:96px;flex:none;border-radius:26px}
.card__badges{position:absolute;top:9px;left:9px;display:flex;flex-wrap:wrap;gap:5px;max-width:calc(100% - 60px)}
.badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:4px 9px;border-radius:var(--r-full);
  font-family:var(--font-display);font-size:.66rem;font-weight:800;
  letter-spacing:.05em;text-transform:uppercase;
  background:rgba(255,255,255,.94);color:var(--ink-2);
  box-shadow:var(--sh-1);backdrop-filter:blur(4px);
}
.badge--kategori{background:var(--c1);color:#3A2B31;border:1px solid var(--c2)}
.badge--kategori{background:color-mix(in srgb,var(--c1) 88%,#fff);border-color:color-mix(in srgb,var(--c2) 45%,transparent)}
.badge--new{background:var(--mint);color:#fff}
.badge--promo{background:var(--maroon-600);color:#fff}
.badge--best{background:#F2B705;color:#3A2B00}

.fav-btn{
  position:absolute;top:9px;right:9px;width:36px;height:36px;
  display:grid;place-items:center;border-radius:var(--r-full);
  background:rgba(255,255,255,.92);color:var(--muted);box-shadow:var(--sh-1);
  backdrop-filter:blur(4px);transition:all var(--t-fast);
}
.fav-btn:hover{background:#fff;color:var(--maroon-600);transform:scale(1.08)}
.fav-btn .icon{width:18px;height:18px;transition:fill var(--t-fast),transform var(--t-fast)}
.fav-btn[aria-pressed="true"]{color:var(--maroon-600)}
.fav-btn[aria-pressed="true"] .icon{fill:var(--maroon-600);animation:pop .32s var(--ease)}
@keyframes pop{0%{transform:scale(.7)}55%{transform:scale(1.25)}100%{transform:scale(1)}}

.card__body{display:flex;flex-direction:column;gap:6px;padding:13px 14px 14px;flex:1}
.card__title{font-size:.98rem;font-weight:700;line-height:1.3}
.card__title-btn{
  font:inherit;color:inherit;text-align:left;padding:0;width:100%;
  display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  transition:color var(--t-fast);
}
.card__title-btn:hover{color:var(--maroon-600)}
.card__store{display:inline-flex;align-items:center;gap:5px;font-size:.79rem;font-weight:600;color:var(--maroon-600)}
.card__store .icon{width:14px;height:14px}
.card__price{font-family:var(--font-display);font-size:1.16rem;font-weight:800;color:var(--ink);letter-spacing:-.02em;margin-top:2px}
.card__meta{font-size:.76rem;color:var(--muted);line-height:1.5}
.card__loc{display:inline-flex;align-items:center;gap:4px;font-size:.74rem;color:var(--muted-2)}
.card__loc .icon{width:13px;height:13px}
.card__rating{display:inline-flex;align-items:center;gap:4px;font-size:.76rem;font-weight:700;color:var(--amber)}
.card__rating .icon{width:13px;height:13px;fill:currentColor;stroke:none}
.card__actions{display:flex;gap:7px;margin-top:auto;padding-top:11px}
.card__actions .btn{flex:1;padding:10px 10px;font-size:.82rem;gap:6px}
.card__actions .btn .icon{width:16px;height:16px}

/* skeleton */
.skeleton{border-radius:var(--r-lg);overflow:hidden;background:#fff;border:1px solid var(--line)}
.sk{background:linear-gradient(90deg,#F1EBED 25%,#F9F5F6 37%,#F1EBED 63%);background-size:400% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:8px}
.skeleton__media{aspect-ratio:4/3;border-radius:0}
.skeleton__body{padding:14px;display:flex;flex-direction:column;gap:9px}
.sk--sm{height:11px;width:60%}
.sk--md{height:15px;width:88%}
.sk--lg{height:21px;width:48%}
.sk--btn{height:38px;border-radius:var(--r-full)}
@keyframes shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}

/* --------------------------------------------------------------------------
   11. TOOLBAR / FILTER
   -------------------------------------------------------------------------- */
.toolbar{display:flex;flex-direction:column;gap:16px;margin-bottom:26px}
.chips{
  display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;
  margin-inline:calc(var(--pad) * -1);padding-inline:var(--pad);scrollbar-width:none;
  -webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 42px),transparent 100%);
  mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 42px),transparent 100%);
}
.chips::-webkit-scrollbar{display:none}
.toolbar__row{
  display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;
  padding:14px 16px;background:var(--offwhite);border:1px solid var(--line);border-radius:var(--r-lg);
}
.result-count{font-size:.92rem;font-weight:600;color:var(--ink-2)}
.result-count b{color:var(--maroon-700)}
.loadmore{display:flex;justify-content:center;margin-top:28px}

/* --------------------------------------------------------------------------
   12. EMPTY & ERROR
   -------------------------------------------------------------------------- */
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:9px;padding:52px 20px}
.empty--sm{padding:34px 20px}
.empty__art{width:64px;height:64px;color:var(--maroon-200);stroke-width:1.4;margin-bottom:6px}
.empty h3{font-size:1.12rem;font-weight:700}
.empty p{color:var(--muted);font-size:.94rem;max-width:42ch}
.empty .btn{margin-top:12px}

.alert{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:18px 20px;border-radius:var(--r-lg);
  background:#FFF6F7;border:1.5px solid var(--maroon-200);color:var(--maroon-800);
}
.alert .icon{color:var(--maroon-500);flex:none}
.alert div{display:flex;flex-direction:column;flex:1;min-width:200px}
.alert strong{font-family:var(--font-display);font-size:.98rem}
.alert span{font-size:.88rem;color:var(--maroon-700);opacity:.85}

/* --------------------------------------------------------------------------
   13. WIRAUSAHA / SELLER
   -------------------------------------------------------------------------- */
.feature{
  display:grid;gap:0;border-radius:var(--r-xl);overflow:hidden;
  background:#fff;border:1px solid var(--line);box-shadow:var(--sh-2);
}
.feature__media{position:relative;aspect-ratio:16/11;background:var(--cream-2)}
.feature__media img{width:100%;height:100%;object-fit:cover}
.feature__tag{position:absolute;top:14px;left:14px;background:var(--maroon-600);color:#fff;padding:6px 13px;border-radius:var(--r-full);font-family:var(--font-display);font-size:.7rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.feature__body{padding:clamp(22px,4vw,40px);display:flex;flex-direction:column;justify-content:center;gap:14px}
.feature__name{font-size:clamp(1.4rem,3.6vw,2rem);font-weight:800}
.feature__quote{font-family:var(--font-display);font-size:clamp(1rem,2.2vw,1.16rem);font-style:italic;color:var(--ink-2);line-height:1.6;border-left:3px solid var(--maroon-200);padding-left:16px}
.feature__person{display:flex;align-items:center;gap:11px}
.feature__avatar{width:46px;height:46px;border-radius:var(--r-full);object-fit:cover;border:2px solid var(--maroon-100)}
.feature__person strong{display:block;font-family:var(--font-display);font-size:.98rem}
.feature__person span{font-size:.82rem;color:var(--muted)}
.feature__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}

.seller-card{
  display:flex;flex-direction:column;gap:9px;padding:16px;
  background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--sh-1);transition:transform var(--t),box-shadow var(--t);
}
.seller-card:hover{transform:translateY(-4px);box-shadow:var(--sh-2)}
.seller-card__top{display:flex;align-items:center;gap:11px}
.seller-card__logo{width:48px;height:48px;border-radius:14px;object-fit:cover;flex:none;border:1px solid var(--line)}
.seller-card__name{font-family:var(--font-display);font-size:.98rem;font-weight:700;line-height:1.25}
.seller-card__owner{font-size:.78rem;color:var(--muted)}
.seller-card__desc{font-size:.84rem;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.seller-card__foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:8px;border-top:1px dashed var(--line)}
.seller-card__count{font-size:.78rem;font-weight:700;color:var(--maroon-600)}
.linklike{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-display);font-size:.83rem;font-weight:700;color:var(--maroon-600);transition:gap var(--t-fast)}
.linklike:hover{gap:9px}
.linklike .icon{width:15px;height:15px}

/* --------------------------------------------------------------------------
   14. PROMO
   -------------------------------------------------------------------------- */
.promo-card{
  position:relative;display:flex;flex-direction:column;gap:10px;
  padding:20px;border-radius:var(--r-lg);overflow:hidden;
  background:linear-gradient(140deg,#FFF4EE,#FFE9EE);
  border:1.5px dashed var(--maroon-200);
}
.promo-card::after{content:'';position:absolute;width:120px;height:120px;border-radius:50%;background:rgba(196,42,69,.08);right:-40px;top:-40px}
.promo-card__badge{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;background:var(--maroon-600);color:#fff;padding:5px 12px;border-radius:var(--r-full);font-family:var(--font-display);font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.promo-card__title{font-size:1.12rem;font-weight:800;position:relative}
.promo-card__desc{font-size:.88rem;color:var(--ink-2);position:relative}
.promo-card__meta{display:flex;flex-wrap:wrap;gap:10px;font-size:.78rem;color:var(--muted);position:relative}
.promo-card__meta b{color:var(--maroon-700);font-weight:700}
.promo-card__actions{display:flex;gap:8px;margin-top:6px;position:relative;flex-wrap:wrap}

/* --------------------------------------------------------------------------
   15. NILAI
   -------------------------------------------------------------------------- */
.value-grid{display:grid;gap:14px;grid-template-columns:1fr}
.value-card{
  padding:26px 22px;border-radius:var(--r-xl);background:#fff;
  border:1px solid var(--line);box-shadow:var(--sh-1);
  transition:transform var(--t),box-shadow var(--t);
}
.value-card:hover{transform:translateY(-5px);box-shadow:var(--sh-2)}
.value-card__icon{display:grid;place-items:center;width:52px;height:52px;border-radius:17px;margin-bottom:14px}
.value-card__icon .icon{width:24px;height:24px}
.value-card--1 .value-card__icon{background:#E4F0FF;color:#2A6BB5}
.value-card--2 .value-card__icon{background:var(--maroon-50);color:var(--maroon-600)}
.value-card--3 .value-card__icon{background:#E3F6EC;color:var(--mint)}
.value-card h3{font-size:1.2rem;font-weight:800;margin-bottom:7px}
.value-card p{color:var(--muted);font-size:.94rem}

/* --------------------------------------------------------------------------
   16. CERITA
   -------------------------------------------------------------------------- */
.story-card{
  display:flex;flex-direction:column;background:#fff;
  border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--sh-1);transition:transform var(--t),box-shadow var(--t);
}
.story-card:hover{transform:translateY(-5px);box-shadow:var(--sh-3)}
.story-card__media{aspect-ratio:16/9;overflow:hidden;background:var(--cream-2)}
.story-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease)}
.story-card:hover .story-card__media img{transform:scale(1.06)}
.story-card__body{padding:17px 18px 20px;display:flex;flex-direction:column;gap:9px;flex:1}
.story-card__title{font-size:1.06rem;font-weight:800;line-height:1.32}
.story-card__excerpt{font-size:.89rem;color:var(--muted);display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.story-card__by{font-size:.78rem;font-weight:600;color:var(--maroon-600)}
.story-card .linklike{margin-top:auto;padding-top:8px}

/* --------------------------------------------------------------------------
   17. RAIL (terakhir dilihat)
   -------------------------------------------------------------------------- */
.rail{display:flex;gap:12px;overflow-x:auto;padding:4px var(--pad) 12px;margin-inline:calc(var(--pad) * -1);scroll-snap-type:x mandatory;scrollbar-width:none}
.rail::-webkit-scrollbar{display:none}
.rail-card{
  flex:none;width:168px;scroll-snap-align:start;
  background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
  box-shadow:var(--sh-1);transition:transform var(--t),box-shadow var(--t);text-align:left;
}
.rail-card:hover{transform:translateY(-4px);box-shadow:var(--sh-2)}
.rail-card img{width:100%;aspect-ratio:1/1;object-fit:cover}
.rail-card__body{padding:10px 11px 12px;display:flex;flex-direction:column;gap:2px}
.rail-card__title{font-family:var(--font-display);font-size:.84rem;font-weight:700;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rail-card__price{font-size:.84rem;font-weight:800;color:var(--maroon-600)}

/* --------------------------------------------------------------------------
   18. CTA
   -------------------------------------------------------------------------- */
.cta{padding:clamp(44px,7vw,76px) 0}
.cta__inner{
  position:relative;overflow:hidden;isolation:isolate;
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;
  padding:clamp(34px,6vw,64px) clamp(22px,5vw,54px);
  border-radius:var(--r-xl);color:#fff;
  background:linear-gradient(135deg,var(--maroon-800),var(--maroon-600) 55%,#C9532F);
  box-shadow:0 30px 60px -30px rgba(110,18,38,.8);
}
.cta__decor{position:absolute;inset:0;z-index:-1;pointer-events:none}
.blob--4{width:300px;height:300px;background:#FF9A76;top:-120px;left:-60px;opacity:.32}
.blob--5{width:260px;height:260px;background:#FFC2CE;bottom:-120px;right:-40px;opacity:.28}
.cta__title{font-size:clamp(1.5rem,4.4vw,2.5rem);font-weight:800;max-width:20ch}
.cta__sub{margin:12px 0 24px;font-size:clamp(.96rem,2.2vw,1.1rem);opacity:.9;max-width:52ch}
.cta__note{margin-top:16px;font-size:.82rem;opacity:.72}

/* --------------------------------------------------------------------------
   19. FOOTER
   -------------------------------------------------------------------------- */
.footer{background:var(--offwhite);border-top:1px solid var(--line);padding-top:clamp(38px,5vw,58px)}
.footer__grid{display:grid;gap:30px;grid-template-columns:1fr;padding-bottom:34px}
.footer__brand .brand{margin-bottom:14px}
.footer__tagline{font-family:var(--font-display);font-weight:700;font-size:.9rem;color:var(--maroon-600);margin-bottom:10px}
.footer__desc{font-size:.88rem;color:var(--muted);max-width:46ch}
.footer__col{display:flex;flex-direction:column;gap:9px}
.footer__col h3{font-size:.78rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--muted-2);margin-bottom:3px}
.footer__col a{font-size:.9rem;color:var(--ink-2);width:fit-content;transition:color var(--t),transform var(--t-fast)}
.footer__col a:hover{color:var(--maroon-600);transform:translateX(3px)}
.footer__small{font-size:.82rem;color:var(--muted-2)}
.footer__bottom{border-top:1px solid var(--line);padding:20px 0 30px;display:flex;flex-direction:column;gap:12px}
.disclaimer{font-size:.78rem;color:var(--muted-2);line-height:1.6;max-width:88ch}
.disclaimer strong{color:var(--muted)}
.copyright{font-size:.8rem;color:var(--muted-2)}

/* --------------------------------------------------------------------------
   20. MODAL
   -------------------------------------------------------------------------- */
.modal{position:fixed;inset:0;z-index:120;display:grid;place-items:end center}
.modal__overlay{position:absolute;inset:0;background:rgba(30,26,29,.5);backdrop-filter:blur(3px);animation:fade .25s var(--ease)}
.modal__dialog{
  position:relative;width:100%;max-width:940px;max-height:92vh;overflow-y:auto;
  background:#fff;border-radius:var(--r-xl) var(--r-xl) 0 0;
  box-shadow:0 -20px 60px -20px rgba(0,0,0,.4);
  animation:slideUp .34s var(--ease);
}
.modal__dialog--narrow{max-width:720px}
@keyframes slideUp{from{transform:translateY(36px);opacity:0}to{transform:translateY(0);opacity:1}}
.modal__close{
  position:absolute;top:14px;right:14px;z-index:3;
  width:38px;height:38px;display:grid;place-items:center;border-radius:var(--r-full);
  background:rgba(255,255,255,.92);color:var(--ink-2);box-shadow:var(--sh-2);
  backdrop-filter:blur(4px);transition:all var(--t-fast);
}
.modal__close:hover{background:var(--maroon-600);color:#fff;transform:rotate(90deg)}
.modal__body{display:block}
body.is-locked{overflow:hidden}

.detail{display:grid;gap:0}
.detail__media{position:relative;aspect-ratio:4/3;background:var(--cream-2)}
.detail__media img{width:100%;height:100%;object-fit:cover}
.detail__badges{position:absolute;top:14px;left:14px;display:flex;flex-wrap:wrap;gap:6px}
.detail__body{padding:22px var(--pad) 30px;display:flex;flex-direction:column;gap:13px}
.detail__store{display:inline-flex;align-items:center;gap:6px;font-size:.86rem;font-weight:700;color:var(--maroon-600)}
.detail__title{font-size:clamp(1.35rem,4vw,1.85rem);font-weight:800}
.detail__price{font-family:var(--font-display);font-size:clamp(1.5rem,4.4vw,2rem);font-weight:800;color:var(--maroon-700);letter-spacing:-.03em}
.detail__desc{color:var(--ink-2);font-size:.96rem;line-height:1.72}
.detail__list{display:grid;gap:10px;padding:16px;border-radius:var(--r);background:var(--offwhite);border:1px solid var(--line)}
.detail__row{display:flex;gap:12px;font-size:.88rem;align-items:flex-start}
.detail__row dt{flex:none;width:112px;color:var(--muted-2);font-weight:600}
.detail__row dd{margin:0;color:var(--ink-2);font-weight:600}
.detail__varian-wrap{display:flex;flex-direction:column;gap:8px}
.detail__varian{display:flex;flex-wrap:wrap;gap:7px}
.varian{background:var(--cream-2);border:1px solid var(--line);border-radius:var(--r-full);padding:5px 13px;font-size:.82rem;font-weight:600;color:var(--ink-2)}
.detail__actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:4px}
.detail__actions .btn--wa{flex:1 1 100%;white-space:normal;text-align:center}
.detail__actions .btn--outline{flex:1 1 140px}
.detail__socials{display:flex;flex-wrap:wrap;gap:9px}
.social-link{display:inline-flex;align-items:center;gap:7px;padding:9px 15px;border-radius:var(--r-full);background:var(--cream-2);border:1px solid var(--line);font-size:.85rem;font-weight:600;transition:all var(--t-fast)}
.social-link:hover{background:var(--maroon-50);color:var(--maroon-700);border-color:var(--maroon-200);transform:translateY(-2px)}
.detail__note{font-size:.76rem;color:var(--muted-2);line-height:1.6;border-top:1px dashed var(--line);padding-top:12px}

.story-detail{padding:26px var(--pad) 34px;display:flex;flex-direction:column;gap:14px}
.story-detail img{width:100%;border-radius:var(--r);aspect-ratio:16/9;object-fit:cover}
.story-detail h2{font-size:clamp(1.35rem,4vw,1.8rem);font-weight:800}
.story-detail__meta{font-size:.85rem;color:var(--maroon-600);font-weight:600}
.story-detail p{color:var(--ink-2);line-height:1.78;font-size:.97rem}

/* --------------------------------------------------------------------------
   21. TOAST
   -------------------------------------------------------------------------- */
.toast{
  position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(14px);
  z-index:200;display:flex;align-items:center;gap:10px;
  background:var(--ink);color:#fff;padding:13px 20px;border-radius:var(--r-full);
  box-shadow:var(--sh-3);font-size:.9rem;font-weight:600;
  opacity:0;transition:opacity var(--t),transform var(--t);max-width:calc(100vw - 32px);
}
.toast.is-show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast .icon{color:#5FD39B;width:18px;height:18px}

/* --------------------------------------------------------------------------
   22. HALAMAN TOKO
   -------------------------------------------------------------------------- */
.page-toko{padding:24px 0 60px;min-height:70vh}
.backlink{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-display);font-size:.88rem;font-weight:700;color:var(--maroon-600);margin-bottom:20px;transition:gap var(--t-fast)}
.backlink:hover{gap:11px}
.toko-hero{
  display:grid;gap:20px;align-items:center;
  padding:clamp(22px,4vw,36px);border-radius:var(--r-xl);
  background:linear-gradient(140deg,var(--cream),var(--cream-2));
  border:1px solid var(--line);margin-bottom:34px;
}
.toko-hero__logo{width:96px;height:96px;border-radius:26px;object-fit:cover;border:3px solid #fff;box-shadow:var(--sh-2)}
.toko-hero__name{font-size:clamp(1.5rem,4.4vw,2.2rem);font-weight:800}
.toko-hero__tag{font-size:1rem;color:var(--maroon-600);font-weight:700;margin-top:4px}
.toko-hero__owner{margin-top:10px;font-size:.92rem;color:var(--muted)}
.toko-hero__desc{margin-top:12px;color:var(--ink-2);font-size:.95rem;max-width:62ch}
.toko-hero__actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}
.promo-toko:not(:empty){margin-top:44px}
.page-toko .section__head{margin-top:8px}

/* --------------------------------------------------------------------------
   23. REVEAL ANIMATION
   -------------------------------------------------------------------------- */
.reveal{opacity:0;transform:translateY(18px)}
.reveal.is-in{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .6s var(--ease)}

/* --------------------------------------------------------------------------
   24. RESPONSIVE
   -------------------------------------------------------------------------- */
@media (max-width:900px){
  .nav__menu{
    position:fixed;top:var(--nav-h);left:0;right:0;z-index:88;
    flex-direction:column;align-items:stretch;gap:2px;
    background:#fff;border-bottom:1px solid var(--line);
    padding:14px var(--pad) 22px;box-shadow:var(--sh-3);
    transform:translateY(-14px);opacity:0;pointer-events:none;
    transition:opacity var(--t),transform var(--t);
    max-height:calc(100vh - var(--nav-h));overflow-y:auto;
  }
  .nav__menu.is-open{transform:translateY(0);opacity:1;pointer-events:auto}
  .nav__link{padding:13px 12px;font-size:.98rem;border-radius:var(--r-sm)}
  .nav__link::after{display:none}
  .nav__link--mobile-only{display:block}
  .nav__cta{display:none}
  .nav__toggle{display:inline-flex}
  .nav__toggle[aria-expanded="true"] .icon--menu{display:none}
  .nav__toggle[aria-expanded="true"] .icon--close{display:block}
}

@media (max-width:599px){
  .badge{font-size:.6rem;padding:3px 8px;letter-spacing:.03em}
  .card__badges{gap:4px;max-width:calc(100% - 54px)}
  .fav-btn{width:33px;height:33px}
}

@media (min-width:600px){
  :root{--pad:24px}
  .grid{gap:18px}
  .grid--produk{grid-template-columns:repeat(3,minmax(0,1fr))}
  .grid--cerita,.grid--promo{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid--seller{grid-template-columns:repeat(3,minmax(0,1fr))}
  .stats__grid{grid-template-columns:repeat(4,1fr)}
  .value-grid{grid-template-columns:repeat(3,1fr)}
  .cat-grid{grid-auto-columns:148px}
  .modal{place-items:center}
  .modal__dialog{border-radius:var(--r-xl);max-height:88vh;animation:zoomIn .3s var(--ease)}
  @keyframes zoomIn{from{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}
  .detail__body{padding:26px 30px 32px}
  .story-detail{padding:30px 32px 38px}
  .toko-hero{grid-template-columns:auto 1fr;gap:28px;align-items:center}
  .footer__grid{grid-template-columns:1.5fr 1fr 1fr 1fr}
  .footer__bottom{flex-direction:row;align-items:center;justify-content:space-between}
}

@media (min-width:900px){
  :root{--pad:32px;--nav-h:74px}
  .hero__inner{grid-template-columns:1.06fr .94fr;gap:40px}
  .hero__visual{display:block;min-height:440px}
  .grid--produk{grid-template-columns:repeat(4,minmax(0,1fr))}
  .grid--cerita{grid-template-columns:repeat(4,minmax(0,1fr))}
  .grid--promo{grid-template-columns:repeat(3,minmax(0,1fr))}
  .grid--seller{grid-template-columns:repeat(4,minmax(0,1fr))}
  .feature{grid-template-columns:.95fr 1.05fr}
  .feature__media{aspect-ratio:auto;height:100%;min-height:340px}
  .detail{grid-template-columns:1fr 1fr}
  .detail__media{aspect-ratio:auto;height:100%;min-height:420px}
  .detail__body{padding:34px 36px 38px;max-height:88vh;overflow-y:auto}
  .toolbar{flex-direction:column}
  /* auto-fit: menyesuaikan berapa pun jumlah kategori yang punya produk */
  .cat-grid{grid-auto-flow:row;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));grid-auto-columns:auto}
  .cat-scroller{overflow:visible;margin-inline:0;padding-inline:0}
}

@media (min-width:1100px){
  .hero__title{font-size:4.05rem}
}

/* --------------------------------------------------------------------------
   25. AKSESIBILITAS & CETAK
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important}
  .reveal{opacity:1;transform:none}
}

@media print{
  .nav,.hero__visual,.cta,.toast,.modal,.searchbar,.toolbar,.loadmore{display:none !important}
  body{background:#fff}
  .card{break-inside:avoid;box-shadow:none}
}
