:root{
    --bg:#F2F5EE;
    --surface:#FFFFFF;
    --surface-alt:#EAF1E4;
    --border:#E0E7D9;
    --line:#D8E2CE;
    --primary:#1E6B45;
    --primary-deep:#123F29;
    --primary-bright:#2FA968;
    --gold:#E2A639;
    --gold-deep:#B9791C;
    --text:#122017;
    --muted:#6C7C6F;
    --danger:#DE5B3F;
    --r-lg:20px;
    --r-md:14px;
    --r-sm:10px;
    font-size:16px;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  .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;
  }
  body{
    background:#DCE4D3;
    color:var(--text);
    font-family:'Manrope',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    display:flex;
    justify-content:center;
    min-height:100vh;
  }
  h1,h2,h3,.display{ font-family:'Space Grotesk','Manrope',sans-serif; }
  .app{
    width:100%;
    max-width:460px;
    background:var(--bg);
    min-height:100vh;
    position:relative;
    box-shadow:0 0 60px rgba(0,0,0,0.18);
    overflow-x:clip; /* 'hidden' membuat position:sticky tidak jalan */
  }
  .view{ display:none; min-height:100vh; padding-bottom:150px; }
  .view.active{ display:block; }
  button{ font-family:inherit; }

  /* ---------- HEADER ---------- */
  /* wrapper melayang: header + search tetap menempel di atas saat scroll */
  .top-fly{
    position:sticky; top:0; z-index:30;
    background:var(--primary);
    transition:box-shadow .25s ease, border-radius .25s ease;
    will-change:box-shadow;
  }
  .top-fly.scrolled{
    box-shadow:0 8px 22px rgba(10,30,18,0.28);
    border-radius:0 0 18px 18px;
  }
  header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:14px 16px 10px;
    background:var(--primary);
    transition:padding .25s ease;
  }
  .top-fly.scrolled header{ padding-top:10px; padding-bottom:8px; }
  .top-fly.scrolled .brand-sub{ display:none; }
  .brand{ display:flex; align-items:center; gap:9px; }
  .brand-mark{
    width:36px;height:36px;border-radius:10px;
    background:var(--gold);
    display:flex;align-items:center;justify-content:center;
    font-weight:800;color:var(--primary-deep);font-size:15px;
    box-shadow:0 2px 0 rgba(0,0,0,0.12) inset;
  }
  .brand-mark-img{ object-fit:contain; background:transparent; box-shadow:none; padding:0; }
  .brand-text{ color:#fff; line-height:1.15; }
  .brand-name{ font-weight:800; font-size:16.5px; letter-spacing:-0.01em; }
  .brand-sub{ font-size:10.5px; color:rgba(255,255,255,0.72); font-weight:600; }
  .header-actions{ display:flex; align-items:center; gap:8px; }
  .icon-btn{
    position:relative;
    width:38px;height:38px;border-radius:11px;
    border:none;
    background:rgba(255,255,255,0.14);
    color:#fff;
    font-size:16px;
    display:flex;align-items:center;justify-content:center;
    cursor:pointer;
  }
  .badge{
    position:absolute; top:-4px; right:-4px;
    min-width:17px; height:17px; padding:0 4px;
    background:var(--gold);
    color:var(--primary-deep);
    border-radius:999px;
    font-size:10px; font-weight:800;
    display:flex;align-items:center;justify-content:center;
    border:2px solid var(--primary);
  }
  .search-wrap{
    padding:0 16px 14px;
    background:transparent;
    transition:padding .25s ease;
  }
  .top-fly.scrolled .search-wrap{ padding-bottom:12px; }
  .search-box{
    position:relative;
    display:flex; align-items:center;
  }
  .search-icon{ position:absolute; left:0; padding:10px 8px 10px 13px; font-size:13px; opacity:0.55; cursor:pointer; }
  #itemSearch{
    width:100%;
    background:#fff;
    border:none;
    border-radius:999px;
    padding:11px 36px 11px 34px;
    color:var(--text);
    font-size:13.5px;
    font-family:inherit;
    font-weight:600;
  }
  #itemSearch::placeholder{ color:#9AA69C; font-weight:500; }
  #itemSearch:focus{ outline:2px solid var(--gold); }
  #itemSearch::-webkit-search-cancel-button{ display:none; }
  .clear-btn{
    position:absolute; right:6px;
    width:24px;height:24px; border:none; border-radius:50%;
    background:var(--surface-alt); color:var(--muted); font-size:11px;
    cursor:pointer; display:flex;align-items:center;justify-content:center;
  }

  /* ---------- PROMO BANNER / SLIDER ---------- */
  .promo-slider{
    margin:14px 16px 4px;
    position:relative;
  }
  .promo-track{
    display:flex;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    scroll-behavior:smooth;
    scrollbar-width:none;
    border-radius:var(--r-lg);
  }
  .promo-track::-webkit-scrollbar{ display:none; }
  .promo{
    flex:0 0 100%;
    scroll-snap-align:start;
    background:linear-gradient(135deg,var(--primary-deep),var(--primary) 70%);
    border-radius:var(--r-lg);
    padding:18px 18px 16px;
    color:#fff;
    position:relative;
    overflow:hidden;
    display:block;
    text-decoration:none;
  }
  .promo::after{
    content:"♻";
    position:absolute;
    right:-6px; bottom:-22px;
    font-size:96px;
    color:rgba(255,255,255,0.08);
    line-height:1;
  }
  .promo-eyebrow{
    display:inline-block;
    background:var(--gold);
    color:var(--primary-deep);
    font-size:10.5px; font-weight:800;
    padding:3px 9px; border-radius:999px;
    letter-spacing:0.03em;
    margin-bottom:9px;
  }
  .promo h2{
    margin:0 0 6px; font-size:21px; line-height:1.22; font-weight:700;
    max-width:24ch; position:relative;
  }
  .promo p{
    margin:0; font-size:12.5px; color:rgba(255,255,255,0.78);
    max-width:30ch; line-height:1.5; position:relative;
  }
  .promo-dots{
    display:flex; justify-content:center; align-items:center;
    gap:6px; margin-top:10px;
  }
  .promo-dot{
    width:6px; height:6px; border-radius:50%;
    background:var(--line);
    border:none; padding:0; cursor:pointer;
    transition:width 0.2s ease, background 0.2s ease, border-radius 0.2s ease;
  }
  .promo-dot.active{ width:18px; border-radius:4px; background:var(--primary); }

  /* ---------- CATEGORY RAIL ---------- */
  .cat-rail{
    display:flex; gap:14px;
    overflow-x:auto;
    padding:16px 16px 6px;
    scrollbar-width:none;
  }
  .cat-rail::-webkit-scrollbar{ display:none; }
  .cat-item{
    flex:none; width:64px;
    display:flex; flex-direction:column; align-items:center; gap:6px;
    background:none; border:none; cursor:pointer;
  }
  .cat-circle{
    width:56px; height:56px; border-radius:50%;
    background:var(--surface);
    border:1.5px solid var(--border);
    display:flex; align-items:center; justify-content:center;
    font-size:23px;
    transition:border-color 0.15s ease, background 0.15s ease;
  }
  .cat-item.active .cat-circle{
    border-color:var(--primary-bright);
    background:var(--surface-alt);
    box-shadow:0 0 0 3px rgba(47,169,104,0.15);
  }
  .cat-label{
    font-size:10.5px; font-weight:700; color:var(--muted);
    text-align:center; line-height:1.2;
  }
  .cat-item.active .cat-label{ color:var(--primary); }

  /* ---------- SECTION ---------- */
  section{ padding:20px 16px 4px; }
  .sec-head{
    display:flex; justify-content:space-between; align-items:baseline;
    margin-bottom:2px;
  }
  .sec-title{ font-size:16.5px; font-weight:800; letter-spacing:-0.01em; margin:0; }
  .sec-hint{ font-size:11.5px; color:var(--muted); font-weight:600; }
  .sec-desc{ font-size:12.5px; color:var(--muted); margin:2px 0 14px; line-height:1.4; }

  .no-result{ text-align:center; padding:34px 16px; color:var(--muted); }
  .no-result span{ font-size:26px; display:block; margin-bottom:8px; }
  .no-result p{ margin:0; font-size:12.5px; max-width:26ch; margin:0 auto; }

  /* ---------- PRODUCT GRID ---------- */
  .grid{ display:grid; grid-template-columns:1fr 1fr; gap:11px; }
  .p-card{
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:var(--r-md);
    padding:12px 12px 14px;
    position:relative;
  }
  .p-thumb{
    width:100%; aspect-ratio:1.5/1;
    border-radius:11px;
    background:var(--surface-alt);
    display:flex; align-items:center; justify-content:center;
    font-size:30px;
    margin-bottom:10px;
    position:relative;
    overflow:hidden;
    cursor:pointer;
  }
  .p-thumb img{
    width:100%; height:100%; object-fit:cover; border-radius:11px;
  }
  .p-thumb .trend{
    position:absolute; top:6px; left:6px;
    background:var(--primary);
    color:#fff; font-size:9px; font-weight:800;
    padding:3px 6px; border-radius:6px;
  }
  .p-name{ font-size:13px; font-weight:700; line-height:1.25; margin-bottom:2px; min-height:33px; }
  .p-desc{ font-size:10.5px; color:var(--muted); margin-bottom:8px; }
  .p-price{
    font-size:13.5px; font-weight:800; color:var(--gold-deep);
    font-family:'Space Grotesk',monospace;
  }
  .p-unit{ font-size:10px; color:var(--muted); font-weight:600; }
  /* Kisaran harga (Hubungi WhatsApp): satu baris, ukuran huruf menyesuaikan lebar kartu (lihat fitPrices) */
  .pr-range{ display:block; white-space:nowrap; overflow:hidden; }
  .p-price.has-range .p-unit{ display:block; margin-top:1px; }
  .pd-price .pr-range{ display:inline; white-space:normal; overflow:visible; }
  .p-cartzone{ margin-top:10px; height:32px; position:relative; }
  .add-btn{
    width:100%; height:32px;
    border:1.5px solid var(--primary);
    background:#fff;
    color:var(--primary);
    border-radius:9px;
    font-weight:800; font-size:12.5px;
    cursor:pointer;
    display:flex; align-items:center; justify-content:center; gap:4px;
  }
  .add-btn:active{ background:var(--surface-alt); }
  .stepper{
    display:flex; align-items:center; justify-content:space-between;
    background:var(--primary);
    border-radius:9px;
    padding:3px;
    height:32px;
  }
  .stepper button{
    flex:none;
    width:26px;height:26px; border-radius:6px; border:none;
    background:rgba(255,255,255,0.16);
    color:#fff; font-size:15px; font-weight:700; cursor:pointer; line-height:1;
  }
  .stepper button:active{ background:var(--gold); color:var(--primary-deep); }
  .stepper .qty{
    font-family:'Space Grotesk',monospace; font-size:12px; font-weight:700;
    color:#fff; min-width:44px; text-align:center;
  }
  /* qty bisa diketik langsung */
  .qty-wrap{ display:inline-flex; align-items:center; justify-content:center; gap:3px; flex:1; min-width:0; }
  .qty-input{
    width:46px; min-width:0; padding:2px 0; border:none; border-radius:5px; outline:none;
    background:transparent; color:inherit; text-align:center;
    font-family:'Space Grotesk',monospace; font-size:12px; font-weight:700;
    -moz-appearance:textfield; appearance:textfield;
  }
  .qty-input:focus{ background:rgba(255,255,255,0.22); }
  .qty-unit{ font-family:'Space Grotesk',monospace; font-size:12px; font-weight:700; color:inherit; }
  .stepper .qty-wrap{ color:#fff; }

  /* ---------- HOW IT WORKS ---------- */
  .steps-rail{ display:flex; gap:10px; overflow-x:auto; padding-bottom:4px; scrollbar-width:none; }
  .steps-rail::-webkit-scrollbar{ display:none; }
  .step-card{
    flex:none; width:198px;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:var(--r-md);
    padding:14px;
  }
  .step-num{
    width:26px;height:26px;border-radius:50%;
    background:var(--surface-alt);
    border:1px solid var(--primary-bright);
    color:var(--primary);
    font-weight:800; font-size:12px;
    display:flex;align-items:center;justify-content:center;
    margin-bottom:10px;
  }
  .step-title{ font-weight:700; font-size:13px; margin-bottom:3px; }
  .step-desc{ font-size:11.5px; color:var(--muted); line-height:1.4; }

  /* ---------- FAQ ---------- */
  .faq-list{ display:flex; flex-direction:column; gap:8px; }
  .faq-item{
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:var(--r-md);
    padding:2px 14px;
  }
  .faq-item[open]{ border-color:var(--primary-bright); }
  .faq-question{
    list-style:none; cursor:pointer;
    display:flex; align-items:center; justify-content:space-between; gap:10px;
    padding:12px 0;
    font-weight:700; font-size:13px; line-height:1.4;
  }
  .faq-question::-webkit-details-marker{ display:none; }
  .faq-icon{
    flex:none; font-size:15px; font-weight:700; color:var(--primary);
    transition:transform .2s ease;
  }
  .faq-item[open] .faq-icon{ transform:rotate(45deg); }
  .faq-answer{
    font-size:12.5px; color:var(--muted); line-height:1.5;
    padding:0 0 14px;
  }

  /* ---------- ABOUT / KONTEN HALAMAN UTAMA ---------- */
  .about-section{
    margin:0 16px 20px; 
    background:var(--surface); 
    border:1px solid var(--border);
    border-radius:var(--r-md); padding:18px 16px;
  }
  .about-title{ font-size:16px; font-weight:800; margin:0 0 10px; line-height:1.35; }
  .about-body{
    font-size:12.5px; color:var(--muted); line-height:1.65; overflow:hidden;
    position:relative;
  }
  .about-body.collapsible{ max-height:130px; }
  .about-body.collapsible::after{
    content:''; position:absolute; left:0; right:0; bottom:0; height:44px;
    background:linear-gradient(to bottom, rgba(255,255,255,0), var(--surface));
  }
  .about-body.expanded{ max-height:none; }
  .about-body.expanded::after{ display:none; }
  .about-body p{ margin:0 0 10px; }
  .about-body ul, .about-body ol{ margin:0 0 10px; padding-left:20px; }
  .about-body a{ color:var(--primary-deep); font-weight:700; }
  .readmore-btn{
    margin-top:10px; border:none; background:none; color:var(--primary-deep);
    font-weight:800; font-size:12px; cursor:pointer; padding:0;
  }

  footer.app-footer{
    padding:22px 16px 10px; text-align:center; color:var(--muted); font-size:11px;
  }

  /* ---------- BOTTOM NAV ---------- */
  .bottom-nav{
    position:fixed; bottom:0; left:50%; transform:translateX(-50%);
    width:100%; max-width:460px;
    background:var(--surface);
    border-top:1px solid var(--border);
    display:flex;
    z-index:60;
    padding:6px 4px calc(env(safe-area-inset-bottom,0px) + 6px);
  }
  .nav-btn{
    flex:1; background:none; border:none; cursor:pointer;
    display:flex; flex-direction:column; align-items:center; gap:3px;
    padding:6px 2px; color:var(--muted);
  }
  .nav-btn .ic{ font-size:18px; }
  .nav-btn .lb{ font-size:10px; font-weight:700; }
  .nav-btn.active{ color:var(--primary); }
  .bottom-nav.hidden{ display:none; }

  /* ---------- STICKY CART BAR ---------- */
  .cart-bar{
    position:fixed; left:50%; transform:translateX(-50%) translateY(0);
    bottom:64px;
    width:100%; max-width:460px;
    background:var(--primary-deep);
    color:#fff;
    display:flex; align-items:center; justify-content:space-between;
    padding:11px 14px;
    z-index:55;
    transition:transform 0.22s ease, visibility 0s linear 0s;
  }
  .cart-bar.hidden{ transform:translateX(-50%) translateY(220%); visibility:hidden; pointer-events:none; transition:transform 0.22s ease, visibility 0s linear 0.22s; }
  .cart-bar-info{ display:flex; flex-direction:column; }
  .cart-bar-count{ font-size:10.5px; color:rgba(255,255,255,0.7); font-weight:600; }
  .cart-bar-amt{ font-size:15px; font-weight:800; font-family:'Space Grotesk',monospace; color:var(--gold); }
  .cart-bar-btn{
    background:var(--gold); color:var(--primary-deep);
    border:none; border-radius:10px;
    padding:10px 16px; font-weight:800; font-size:12.5px;
    cursor:pointer; display:flex; align-items:center; gap:5px;
  }

  /* ---------- CART SHEET ---------- */
  .sheet-overlay{
    position:fixed; inset:0; background:rgba(10,16,11,0.5);
    display:none; align-items:flex-end; justify-content:center; z-index:100;
  }
  .sheet-overlay.show{ display:flex; }
  .sheet{
    width:100%; max-width:460px; max-height:82vh;
    background:var(--bg);
    border-radius:20px 20px 0 0;
    display:flex; flex-direction:column;
    animation:slideup 0.22s ease;
  }
  @keyframes slideup{ from{ transform:translateY(30px); opacity:0; } to{ transform:translateY(0); opacity:1; } }
  .sheet-head{
    display:flex; align-items:center; justify-content:space-between;
    padding:16px 18px 10px;
  }
  .sheet-head h3{ margin:0; font-size:16px; font-weight:800; }
  .sheet-close{
    width:30px;height:30px;border-radius:50%; border:none;
    background:var(--surface-alt); color:var(--text); font-size:13px; cursor:pointer;
  }
  .sheet-body{ overflow-y:auto; padding:0 16px 12px; }
  .cart-list{ border:1px solid var(--border); border-radius:var(--r-md); overflow:hidden; background:var(--surface); }
  .cart-empty{ padding:26px 16px; text-align:center; color:var(--muted); font-size:13px; }
  .cart-row{
    display:flex; justify-content:space-between; align-items:center;
    padding:12px 14px; border-bottom:1px dashed var(--border); font-size:13px; gap:10px;
  }
  .cart-row:last-child{ border-bottom:none; }
  .cart-row .name{ font-weight:700; }
  .cart-row .meta{ font-size:11px; color:var(--muted); margin-top:1px; }
  .cart-row .amt{ font-weight:800; color:var(--gold-deep); font-family:'Space Grotesk',monospace; white-space:nowrap; }
  /* stepper keranjang: lebih besar & responsif (target sentuh min. ~40px) */
  .cart-row{ align-items:center; gap:12px; }
  .cart-row > div:first-child{ flex:1; min-width:0; }
  .cart-row .name{ font-size:15px; }
  .cart-row .meta{ font-size:12px; }
  .cart-row .amt{ font-size:clamp(14px, 4vw, 17px); }
  .cart-row .mini-stepper{
    display:flex; align-items:center; gap:clamp(6px, 2vw, 10px); margin-top:10px;
    width:100%; max-width:240px;
  }
  .cart-row .mini-stepper button{
    flex:none; width:clamp(36px, 10vw, 44px); height:clamp(36px, 10vw, 44px);
    border-radius:10px; border:1px solid var(--border);
    background:var(--surface-alt); color:var(--primary-deep);
    font-size:clamp(18px, 5vw, 22px); font-weight:700; cursor:pointer; line-height:1;
    display:flex; align-items:center; justify-content:center;
  }
  .cart-row .mini-stepper button:active{ background:var(--gold); }
  .cart-row .mini-stepper .qty-wrap{
    flex:1; min-width:0; height:clamp(36px, 10vw, 44px); gap:5px; color:var(--text);
    background:#fff; border:1.5px solid var(--border); border-radius:10px;
  }
  .cart-row .mini-stepper .qty-wrap:focus-within{ border-color:var(--primary); box-shadow:0 0 0 3px rgba(30,107,69,0.15); }
  .cart-row .mini-stepper .qty-input{
    flex:1; width:100%; min-width:0; height:100%; padding:0 0 0 6px;
    font-size:clamp(15px, 4.4vw, 18px); border-radius:0; background:transparent;
  }
  .cart-row .mini-stepper .qty-input:focus{ background:transparent; }
  .cart-row .mini-stepper .qty-unit{ flex:none; padding-right:10px; font-size:clamp(13px, 3.8vw, 15px); color:var(--muted); }
  @media (max-width:360px){
    .cart-row{ flex-wrap:wrap; }
    .cart-row .amt{ width:100%; text-align:right; }
  }
  .sheet-total{
    display:flex; justify-content:space-between; align-items:center;
    padding:14px 16px calc(env(safe-area-inset-bottom,0px) + 14px);
    background:var(--surface); border-top:1px solid var(--border);
  }
  .sheet-total .lbl{ font-size:11.5px; color:var(--muted); font-weight:600; }
  .sheet-total .amt{ font-size:17px; font-weight:800; color:var(--primary-deep); font-family:'Space Grotesk',monospace; }
  .checkout-cta{
    background:var(--primary); color:#fff; border:none; border-radius:11px;
    padding:12px 20px; font-weight:800; font-size:13px; cursor:pointer;
  }
  .checkout-cta:disabled{ opacity:0.5; cursor:not-allowed; }

  /* ---------- PRODUCT DETAIL SHEET ---------- */
  .product-sheet{ max-height:88vh; position:relative; }
  .sheet-drag{
    width:36px; height:4px; border-radius:999px;
    background:var(--border);
    margin:10px auto 0;
    flex:none;
  }
  .product-sheet-close{
    position:absolute; top:12px; right:12px; z-index:5;
    width:32px;height:32px;border-radius:50%; border:none;
    background:rgba(18,32,23,0.55); color:#fff; font-size:13px; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
  }
  .product-sheet-body{ padding:0 0 4px; }
  .pd-image{
    width:100%; aspect-ratio:1.4/1;
    background:var(--surface-alt);
    display:flex; align-items:center; justify-content:center;
    font-size:64px;
    overflow:hidden;
  }
  .pd-image img{ width:100%; height:100%; object-fit:cover; }
  .pd-content{ padding:16px 18px 4px; }
  .pd-name{ font-size:17px; font-weight:800; line-height:1.28; margin-bottom:6px; }
  .pd-desc{ font-size:12.5px; color:var(--muted); line-height:1.55; margin-bottom:12px; }
  .pd-price{
    font-size:19px; font-weight:800; color:var(--gold-deep);
    font-family:'Space Grotesk',monospace;
  }
  .pd-price .p-unit{ font-size:11.5px; }

  /* ---------- CHECKOUT VIEW ---------- */
  .subheader{
    display:flex; align-items:center; gap:10px;
    padding:14px 16px; background:var(--primary); position:sticky; top:0; z-index:30;
  }
  .back-btn{
    width:34px;height:34px;border-radius:10px; border:none;
    background:rgba(255,255,255,0.14); color:#fff; font-size:16px; cursor:pointer;
  }
  .subheader h2{ margin:0; color:#fff; font-size:15.5px; font-weight:800; }

  .summary-card{
    margin:16px 16px 0; background:var(--surface); border:1px solid var(--border);
    border-radius:var(--r-md); padding:14px 16px;
  }
  .summary-toggle{
    display:flex; justify-content:space-between; align-items:center;
    cursor:pointer; user-select:none;
  }
  .summary-toggle .t{ font-size:13px; font-weight:700; }
  .summary-toggle .amt{ font-size:14px; font-weight:800; color:var(--gold-deep); font-family:'Space Grotesk',monospace; }
  .summary-detail{ margin-top:10px; padding-top:10px; border-top:1px dashed var(--border); display:none; }
  .summary-detail.show{ display:block; }
  .summary-line{ display:flex; justify-content:space-between; font-size:12px; color:var(--muted); padding:3px 0; }
  .summary-line b{ color:var(--text); font-weight:700; }

  .form-card{
    margin:14px 16px 0;
    background:var(--surface); border:1px solid var(--border);
    border-radius:var(--r-md); padding:16px;
  }
  .form-card .form-title{ font-size:13.5px; font-weight:800; margin-bottom:12px; }
  .field{ margin-bottom:13px; }
  .field label{
    display:block; font-size:11px; font-weight:700; color:var(--muted);
    text-transform:uppercase; letter-spacing:0.05em; margin-bottom:6px;
  }
  .field input, .field textarea{
    width:100%; background:var(--bg); border:1px solid var(--border); border-radius:9px;
    padding:11px 12px; color:var(--text); font-size:13.5px; font-family:inherit;
  }
  .field input:focus, .field textarea:focus{ outline:none; border-color:var(--primary-bright); }
  .field textarea{ resize:vertical; min-height:60px; }
  .row2{ display:flex; gap:10px; }
  .row2 .field{ flex:1; }

  /* ---------- PICK LOCATION MAP ---------- */
  .map-field{ margin-bottom:13px; }
  .map-field-head{
    display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:6px;
  }
  .map-field-head label{
    font-size:11px; font-weight:700; color:var(--muted);
    text-transform:uppercase; letter-spacing:0.05em;
  }
  .locate-btn{
    display:flex; align-items:center; gap:5px;
    border:1px solid var(--primary-bright); background:var(--surface-alt); color:var(--primary-deep);
    font-size:11px; font-weight:700; padding:6px 10px; border-radius:99px; cursor:pointer;
  }
  .locate-btn:disabled{ opacity:0.6; cursor:wait; }
  .pickup-map{
    width:100%; height:200px; border-radius:12px; overflow:hidden;
    border:1px solid var(--border); background:var(--surface-alt);
  }
  .map-hint{ font-size:11px; color:var(--muted); margin-top:6px; }
  .map-coords{ font-size:11px; color:var(--primary-deep); font-weight:700; margin-top:4px; }

  /* tab metode: Dijemput / Kirim Barang */
  .method-tabs{
    display:flex; gap:4px; padding:4px; margin-bottom:14px;
    background:var(--surface-alt); border-radius:12px;
  }
  .method-tab{
    flex:1; border:none; background:transparent; cursor:pointer;
    padding:10px 8px; border-radius:9px;
    font-size:13px; font-weight:700; color:var(--muted);
    display:flex; align-items:center; justify-content:center; gap:6px;
    transition:background .2s ease, color .2s ease, box-shadow .2s ease;
  }
  .method-tab.active{ background:#fff; color:var(--primary-deep); box-shadow:0 1px 4px rgba(0,0,0,0.12); }
  .radius-notice{
    display:flex; gap:10px; align-items:flex-start;
    background:#FFF4E0; border:1px solid #F0C36B; color:#7A4B00;
    border-radius:12px; padding:11px 12px; margin-bottom:14px;
    font-size:12.5px; line-height:1.5;
  }
  .radius-notice .ico{ font-size:18px; line-height:1.2; flex:none; }
  .radius-notice[hidden]{ display:none; }
  .radius-notice.flash{ animation:radiusFlash .9s ease 2; }
  @keyframes radiusFlash{ 50%{ box-shadow:0 0 0 4px rgba(240,195,107,0.55); } }
  .dropoff-card{
    background:var(--surface-alt); border:1px dashed var(--primary-bright);
    border-radius:12px; padding:12px 14px; margin-bottom:14px; font-size:12.5px; line-height:1.55;
  }
  .dropoff-card[hidden]{ display:none; }
  .dropoff-card .dc-title{ font-weight:800; font-size:13px; color:var(--primary-deep); margin-bottom:6px; }
  .dropoff-card .dc-row{ display:flex; gap:8px; margin-top:3px; }
  .dropoff-card .dc-row span:first-child{ flex:none; }
  .dropoff-card a{ color:var(--primary); font-weight:700; }
  .dropoff-card .dc-steps{ margin:8px 0 0; padding-left:18px; color:var(--muted); }
  .pickup-only[hidden]{ display:none; }

  .checkout-footer{
    position:fixed; left:50%; bottom:0; transform:translateX(-50%);
    width:100%; max-width:460px;
    background:var(--surface); border-top:1px solid var(--border);
    padding:12px 16px calc(env(safe-area-inset-bottom,0px) + 12px);
    display:flex; align-items:center; justify-content:space-between; gap:12px;
    z-index:60;
  }
  .checkout-footer .amt-block .lbl{ font-size:10.5px; color:var(--muted); font-weight:600; }
  .checkout-footer .amt-block .amt{ font-size:15px; font-weight:800; color:var(--primary-deep); font-family:'Space Grotesk',monospace; }
  .submit-btn{
    padding:13px 22px; border:none; border-radius:11px;
    background:var(--primary); color:#fff; font-weight:800; font-size:13px; cursor:pointer;
  }
  .submit-btn:disabled{ opacity:0.5; cursor:not-allowed; }
  .form-note{ font-size:11px; color:var(--muted); text-align:center; margin:10px 16px 0; }

  /* ---------- SUCCESS VIEW ---------- */
  .success-wrap{ padding:60px 24px 24px; text-align:center; }
  .success-check{
    width:74px;height:74px;border-radius:50%;
    background:var(--surface-alt); color:var(--primary);
    display:flex;align-items:center;justify-content:center; font-size:34px;
    margin:0 auto 18px; border:2px solid var(--primary-bright);
  }
  .success-wrap h2{ margin:0 0 6px; font-size:19px; }
  .success-wrap p{ margin:0 0 20px; color:var(--muted); font-size:13px; }
  .ticket-id{
    display:inline-block; background:var(--surface); border:1px dashed var(--primary);
    color:var(--primary-deep); font-family:'Space Grotesk',monospace; font-weight:800;
    padding:8px 16px; border-radius:10px; margin-bottom:22px; font-size:13px;
  }
  .ticket-body{
    text-align:left; background:var(--surface); border:1px solid var(--border);
    border-radius:var(--r-md); padding:14px 16px; margin-bottom:16px;
  }
  .ticket-line{ display:flex; justify-content:space-between; font-size:12.5px; padding:5px 0; color:var(--muted); }
  .ticket-line b{ color:var(--text); font-weight:700; }
  .ticket-total{ display:flex; justify-content:space-between; font-size:15px; font-weight:800; margin-top:6px; padding-top:8px; border-top:1px dashed var(--border); }
  .ticket-total .amt{ color:var(--gold-deep); font-family:'Space Grotesk',monospace; }
  .success-actions{ display:flex; flex-direction:column; gap:10px; }
  .btn-primary{
    padding:13px; border-radius:11px; border:none; background:var(--primary);
    color:#fff; font-weight:800; font-size:13.5px; cursor:pointer;
  }
  .btn-ghost{
    padding:13px; border-radius:11px; border:1px solid var(--border); background:var(--surface);
    color:var(--text); font-weight:700; font-size:13.5px; cursor:pointer;
  }

  /* ---------- AKUN / KONTAK VIEW ---------- */
  .akun-hero{
    position:relative; overflow:hidden; text-align:center; color:#fff;
    background:linear-gradient(160deg,var(--primary-deep) 0%,var(--primary) 70%,var(--primary-bright) 130%);
    padding:34px 20px 64px; border-radius:0 0 30px 30px;
  }
  .akun-hero::before,.akun-hero::after{
    content:''; position:absolute; border-radius:50%; background:rgba(255,255,255,.07); pointer-events:none;
  }
  .akun-hero::before{ width:190px;height:190px; top:-70px; right:-50px; }
  .akun-hero::after{ width:120px;height:120px; bottom:-50px; left:-30px; }
  .akun-hero > *{ position:relative; z-index:1; }
  .akun-hero .avatar{
    width:78px;height:78px;border-radius:50%; background:var(--gold);
    display:flex;align-items:center;justify-content:center; font-size:28px;
    color:var(--primary-deep); font-weight:800; margin:0 auto 12px;
    border:3px solid rgba(255,255,255,.4); box-shadow:0 8px 22px rgba(0,0,0,.22);
  }
  .akun-hero .avatar-img{ object-fit:contain; background:transparent; border:none; box-shadow:none; border-radius:18px; padding:0; }
  .akun-hero h2{ margin:0 0 4px; font-size:19px; letter-spacing:-.01em; }
  .akun-hero p{ margin:0 auto; max-width:300px; font-size:12.5px; color:rgba(255,255,255,0.8); line-height:1.4; }
  .hero-chip{
    display:inline-flex; align-items:center; gap:6px; margin-top:14px; padding:6px 13px;
    border-radius:999px; background:rgba(255,255,255,.15); border:1px solid rgba(255,255,255,.2);
    font-size:11.5px; font-weight:700;
  }
  .hero-chip .live{ width:7px;height:7px;border-radius:50%; background:#7CF0A8; box-shadow:0 0 0 3px rgba(124,240,168,.3); }

  .akun-quick{
    position:relative; z-index:2; margin:-34px 16px 0;
    display:grid; grid-template-columns:repeat(auto-fit,minmax(90px,1fr)); gap:10px;
  }
  .q-btn{
    display:flex; flex-direction:column; align-items:center; gap:7px;
    background:var(--surface); border:1px solid var(--border); border-radius:16px;
    padding:12px 6px 11px; text-decoration:none; color:var(--text);
    font-size:11.5px; font-weight:800; box-shadow:0 8px 18px rgba(18,63,41,.10);
  }
  .q-btn:active{ transform:scale(.97); }
  .q-btn .ic{
    width:40px;height:40px;border-radius:13px; background:var(--surface-alt);
    display:flex;align-items:center;justify-content:center; font-size:19px;
  }
  .q-btn.wa .ic{ background:#25D366; }

  .akun-sec-title{ margin:22px 16px 10px; font-size:14px; font-weight:800; letter-spacing:-.01em; }
  .akun-list{ padding:0 16px; display:flex; flex-direction:column; gap:10px; }
  .akun-item{
    display:flex; align-items:center; gap:12px;
    background:var(--surface); border:1px solid var(--border); border-radius:var(--r-md);
    padding:13px 14px; text-decoration:none; color:var(--text);
  }
  .akun-item .ic{
    flex:none; width:38px;height:38px;border-radius:11px; background:var(--surface-alt);
    display:flex;align-items:center;justify-content:center; font-size:17px;
  }
  .akun-item .tt{ font-weight:700; font-size:13px; }
  .akun-item .ds{ font-size:11.5px; color:var(--muted); line-height:1.4; }

  .map-card{
    margin:0 16px; background:var(--surface); border:1px solid var(--border);
    border-radius:18px; overflow:hidden; box-shadow:0 6px 18px rgba(18,63,41,.07);
  }
  .map-frame{ position:relative; height:220px; background:var(--surface-alt); }
  .map-frame iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
  .map-foot{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 14px; }
  .map-foot .addr{ font-size:12px; color:var(--muted); line-height:1.4; min-width:0; }
  .map-foot .addr b{ display:block; color:var(--text); font-size:13px; margin-bottom:2px; }
  .map-open{
    flex:none; text-decoration:none; background:var(--primary); color:#fff;
    font-weight:800; font-size:12px; padding:9px 13px; border-radius:10px; white-space:nowrap;
  }

  .social-row{ padding:0 16px; display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px; }
  .soc-btn{
    display:flex; align-items:center; gap:11px; padding:13px 14px; border-radius:15px;
    color:#fff; text-decoration:none; font-weight:800; font-size:13.5px;
    box-shadow:0 6px 14px rgba(0,0,0,.12); min-width:0;
  }
  .soc-btn:active{ transform:scale(.98); }
  .soc-btn svg{ flex:none; width:26px; height:26px; }
  .soc-btn span{ min-width:0; }
  .soc-btn small{ display:block; font-weight:600; font-size:10.5px; opacity:.85; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .soc-fb{ background:#1877F2; }
  .soc-fb svg{ fill:#fff; }
  .soc-ig{ background:linear-gradient(45deg,#F9A433 0%,#E1306C 50%,#833AB4 100%); }
  .akun-foot{ text-align:center; font-size:11px; color:var(--muted); padding:22px 16px 6px; }

  /* ---------- TIKET: SALIN KODE & LACAK PESANAN ---------- */
  .ticket-label{ font-size:11px; font-weight:700; color:var(--muted); letter-spacing:.06em; text-transform:uppercase; margin-bottom:6px; }
  .ticket-code-row{ display:flex; align-items:stretch; justify-content:center; gap:8px; margin-bottom:8px; }
  .ticket-code-row .ticket-id{ margin-bottom:0; font-size:17px; letter-spacing:.04em; user-select:all; -webkit-user-select:all; }
  .copy-btn{
    border:1px solid var(--primary); background:var(--surface); color:var(--primary);
    font-weight:800; font-size:12.5px; border-radius:10px; padding:0 14px; cursor:pointer; white-space:nowrap;
  }
  .copy-btn:active{ background:var(--surface-alt); }
  .copy-btn.done{ background:var(--primary); color:#fff; }
  .success-wrap p.ticket-hint{ font-size:11.5px; margin:0 0 20px; }

  .track-home{ padding-top:14px; }
  .track-card{
    background:var(--surface); border:1px solid var(--border); border-radius:var(--r-md);
    padding:14px 14px 12px;
  }
  .track-card-title{ font-size:13.5px; font-weight:800; margin-bottom:10px; }
  .track-card label{ display:block; font-size:12px; font-weight:700; margin-bottom:8px; }
  .track-row{ display:flex; gap:8px; }
  .track-row input{
    flex:1; min-width:0; padding:11px 12px; border-radius:10px; border:1.5px solid var(--border);
    font-size:14px; font-family:'Space Grotesk',monospace; font-weight:700; text-transform:uppercase;
    background:var(--bg); color:var(--text);
  }
  .track-row input::placeholder{ text-transform:none; font-weight:500; font-family:inherit; color:var(--muted); font-size:12.5px; }
  .track-row input:focus{ outline:2px solid var(--gold); border-color:transparent; }
  .track-row button{
    border:none; background:var(--primary); color:#fff; font-weight:800; font-size:13px;
    padding:0 18px; border-radius:10px; cursor:pointer;
  }
  .track-row button:disabled{ opacity:.6; cursor:wait; }
  .track-last{
    margin-top:10px; background:none; border:none; padding:0; cursor:pointer;
    color:var(--primary); font-weight:700; font-size:12px; text-align:left;
  }
  .track-page{ padding:16px; display:flex; flex-direction:column; gap:12px; }
  .track-recent{ margin-top:10px; display:flex; flex-wrap:wrap; gap:6px; align-items:center; font-size:11.5px; color:var(--muted); }
  .track-chip{
    border:1px dashed var(--primary); background:var(--surface-alt); color:var(--primary-deep);
    font-family:'Space Grotesk',monospace; font-weight:800; font-size:11.5px;
    padding:4px 10px; border-radius:8px; cursor:pointer;
  }
  .track-error{
    background:#FDECE7; color:#9A3420; border:1px solid #F4C3B6; border-radius:var(--r-md);
    padding:12px 14px; font-size:12.5px; font-weight:600;
  }
  .track-status{ text-align:center; padding:18px 14px; }
  .track-badge{
    display:inline-block; padding:6px 14px; border-radius:999px; font-size:12.5px; font-weight:800;
    background:var(--surface-alt); color:var(--primary-deep); border:1px solid var(--primary-bright);
  }
  .track-badge.s-pending{ background:#FFF4DC; color:var(--gold-deep); border-color:var(--gold); }
  .track-badge.s-cancelled{ background:#FDECE7; color:#9A3420; border-color:#F4C3B6; }
  .track-code{ margin-top:10px; display:flex; align-items:center; justify-content:center; gap:8px; }
  .track-code b{ font-family:'Space Grotesk',monospace; font-size:16px; letter-spacing:.04em; }
  .track-code .copy-btn{ padding:5px 10px; font-size:11.5px; }
  .track-msg{ margin:10px 0 0; font-size:12.5px; color:var(--muted); line-height:1.45; }
  .tl{ list-style:none; margin:0; padding:0; }
  .tl li{ position:relative; display:flex; gap:12px; padding:0 0 18px; font-size:13px; color:var(--muted); font-weight:600; }
  .tl li:last-child{ padding-bottom:0; }
  .tl li::before{
    content:''; position:absolute; left:10px; top:22px; bottom:0; width:2px; background:var(--border);
  }
  .tl li:last-child::before{ display:none; }
  .tl .dot{
    flex:none; width:22px; height:22px; border-radius:50%; border:2px solid var(--border);
    background:var(--surface); display:flex; align-items:center; justify-content:center;
    font-size:11px; color:#fff; z-index:1;
  }
  .tl li.done{ color:var(--text); }
  .tl li.done::before{ background:var(--primary-bright); }
  .tl li.done .dot{ background:var(--primary-bright); border-color:var(--primary-bright); }
  .tl li.current{ color:var(--primary-deep); font-weight:800; }
  .tl li.current .dot{ box-shadow:0 0 0 4px rgba(47,169,104,.2); }
  .tl li.bad .dot{ background:var(--danger); border-color:var(--danger); }
  .tl li.bad{ color:#9A3420; font-weight:800; }
  .track-actions{ display:flex; flex-direction:column; gap:10px; }
  .track-actions a{ text-decoration:none; text-align:center; }

  /* ---------- POPUP VERIFIKASI 4 DIGIT HP ---------- */
  .pin-overlay{
    position:fixed; inset:0; z-index:120; background:rgba(18,32,23,.55);
    display:flex; align-items:center; justify-content:center; padding:20px;
  }
  .pin-overlay[hidden]{ display:none; }
  .pin-box{
    width:100%; max-width:340px; background:var(--surface); border-radius:18px;
    padding:22px 20px 18px; text-align:center; box-shadow:0 18px 50px rgba(0,0,0,.28);
  }
  .pin-title{ font-size:16px; font-weight:800; margin-bottom:6px; }
  .pin-desc{ margin:0 0 14px; font-size:12.5px; color:var(--muted); line-height:1.5; }
  .pin-desc b{ color:var(--text); }
  #pinInput{
    width:100%; box-sizing:border-box; text-align:center; font-family:'Space Grotesk',monospace;
    font-size:26px; font-weight:800; letter-spacing:.5em; padding:12px 6px 12px 16px;
    border:1.5px solid var(--border); border-radius:12px; background:var(--bg); color:var(--text);
  }
  #pinInput:focus{ outline:2px solid var(--gold); border-color:transparent; }
  .pin-error{ margin-top:10px; font-size:12px; font-weight:700; color:#9A3420; }
  .pin-actions{ display:flex; gap:10px; margin-top:16px; }
  .pin-actions button{ flex:1; }

  /* ---------- NAV BAWAH SEBAGAI LINK + HALAMAN TERPISAH ---------- */
  a.nav-btn{ text-decoration:none; }
  a.back-btn{ display:inline-flex; align-items:center; justify-content:center; text-decoration:none; }
  .app-footer .legal-links{ margin-bottom:6px; }
  .app-footer .legal-links a{ color:var(--primary-deep); font-weight:700; text-decoration:none; }
  .app-footer .legal-links .sep{ margin:0 6px; opacity:.5; }
  .form-note a{ color:var(--primary-deep); font-weight:700; }
  .page-view{ display:block; min-height:100vh; padding-bottom:150px; }

  /* ---------- HALAMAN LEGAL (/privacy, /terms) ---------- */
  .legal-page{ padding:16px; }
  .legal-card{
    background:var(--surface); border:1px solid var(--border); border-radius:var(--r-md);
    padding:18px 16px; font-size:13px; line-height:1.65; color:var(--text);
  }
  .legal-card h1{ margin:0 0 4px; font-size:19px; letter-spacing:-.01em; }
  .legal-card .legal-meta{ font-size:11.5px; color:var(--muted); margin:0 0 14px; }
  .legal-card h2{ margin:18px 0 6px; font-size:14px; font-weight:800; }
  .legal-card p{ margin:0 0 10px; color:var(--muted); }
  .legal-card ul{ margin:0 0 10px; padding-left:20px; color:var(--muted); }
  .legal-card li{ margin-bottom:4px; }
  .legal-card a{ color:var(--primary-deep); font-weight:700; }
  .legal-card b{ color:var(--text); }
  .legal-switch{ display:flex; gap:10px; margin-top:14px; }
  .legal-switch a{
    flex:1; text-align:center; text-decoration:none; padding:11px; border-radius:11px;
    border:1px solid var(--border); background:var(--surface); color:var(--text);
    font-weight:700; font-size:12.5px;
  }