/* ============================================================
   FairDee Shop — Storefront components (ต่อจาก app.css)
   ============================================================ */

/* ---------- header ---------- */
.site-head{position:sticky; top:env(safe-area-inset-top,0px); z-index:60; background:color-mix(in srgb,var(--bg) 88%, transparent);
  backdrop-filter:saturate(150%) blur(14px); border-bottom:1px solid var(--line)}
.head-inner{display:flex; align-items:center; gap:20px; height:64px}
.brand{display:flex; align-items:center; flex:none}
.brand-logo{height:34px; width:auto}
.head-nav{display:flex; gap:6px; margin-inline:auto}
.nav-link{padding:8px 14px; border-radius:var(--r-pill); font-size:15px; font-weight:500; color:var(--ink-2); transition:.15s}
.nav-link:hover{color:var(--ink); background:var(--bg-2)}
.nav-link.on{color:var(--navy); font-weight:600}
.head-actions{display:flex; align-items:center; gap:4px; flex:none}
.icon-btn{display:inline-grid; place-items:center; width:44px; height:44px; border-radius:50%; background:transparent;
  border:0; color:var(--ink); cursor:pointer; transition:background .15s}
.icon-btn:hover{background:var(--bg-2)}
.cart-btn{position:relative}
.cart-count{position:absolute; top:5px; right:5px; min-width:18px; height:18px; padding:0 5px; border-radius:9px;
  background:var(--orange); color:#fff; font-size:11px; font-weight:700; display:grid; place-items:center}
@media (max-width:820px){ .head-nav{display:none} }

/* mobile bottom nav */
.mobile-nav{display:none}
@media (max-width:820px){
  .mobile-nav{display:flex; position:fixed; bottom:0; left:0; right:0; z-index:60; background:var(--bg);
    border-top:1px solid var(--line); padding:6px 6px calc(6px + env(safe-area-inset-bottom,0px)); justify-content:space-around}
  .mobile-nav .nav-link{flex:1; text-align:center; font-size:13px; padding:8px 4px}
  body{padding-bottom:64px}
}

/* referral banner */
.ref-banner{background:var(--navy-50); color:var(--navy-700); font-size:14px; padding:9px 0; border-bottom:1px solid var(--line)}
.ref-banner b{font-weight:700}

/* ---------- cover (ภาพหน้าปกเต็มความกว้าง) ---------- */
.cover{background:var(--bg-2)}
.cover a{display:block}
.cover img{width:100%; height:auto; display:block}
@media (min-width:1100px){ .cover img{max-height:74vh; object-fit:cover; object-position:center} }

/* ---------- hero ---------- */
.hero{background:var(--bg-2); overflow:hidden}
.hero-grid{display:grid; grid-template-columns:1.05fr 1fr; gap:40px; align-items:center; padding-block:56px}
.hero h1{font-size:clamp(30px,5vw,52px); font-weight:800; line-height:1.08}
.hero .lead{font-size:clamp(16px,2.3vw,20px); color:var(--ink-2); margin-top:16px; max-width:40ch}
.hero-cta{display:flex; gap:12px; margin-top:28px; flex-wrap:wrap}
.hero-media{aspect-ratio:4/3; border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-2); background:var(--bg)}
.hero-media img{width:100%; height:100%; object-fit:cover}
@media (max-width:820px){ .hero-grid{grid-template-columns:1fr; gap:24px; padding-block:36px; text-align:center}
  .hero .lead{margin-inline:auto} .hero-cta{justify-content:center} }

/* section head */
.sec-head{display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:28px; flex-wrap:wrap}
.sec-head h2{font-size:clamp(24px,3.4vw,34px); font-weight:800}
.sec-head p{color:var(--ink-2); margin-top:6px}
.see-all{font-weight:600; color:var(--navy)}

/* ---------- product grid / cards ---------- */
.prod-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:22px}
.prod-card{display:flex; flex-direction:column; background:var(--bg); border:1px solid var(--line); border-radius:var(--r);
  overflow:hidden; transition:transform .18s ease, box-shadow .18s ease}
.prod-card:hover{transform:translateY(-3px); box-shadow:var(--sh-2)}
.pc-media{position:relative; aspect-ratio:1/1; background:var(--bg-2); overflow:hidden}
.pc-media img{width:100%; height:100%; object-fit:cover; transition:transform .3s}
.prod-card:hover .pc-media img{transform:scale(1.04)}
.pc-tag{position:absolute; top:12px; left:12px}
.pc-body{padding:16px 16px 18px; display:flex; flex-direction:column; gap:6px; flex:1}
.pc-name{font-size:17px; font-weight:700}
.pc-desc{font-size:13.5px; color:var(--ink-2); flex:1}
.pc-foot{display:flex; align-items:center; justify-content:space-between; margin-top:10px; gap:10px}
.pc-price{font-size:19px; font-weight:800; color:var(--ink)}
.soldout-mask{position:absolute; inset:0; background:rgba(255,255,255,.55); display:grid; place-items:center}
:root[data-theme="dark"] .soldout-mask, :root:not([data-theme="light"]) .soldout-mask{background:rgba(0,0,0,.5)}

/* ---------- toolbar (products page) ---------- */
.toolbar{display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin-bottom:24px}
.chip-row{display:flex; gap:8px; flex-wrap:wrap}
.chip{padding:8px 16px; border-radius:var(--r-pill); border:1.5px solid var(--line); background:var(--bg);
  font-size:14px; font-weight:600; color:var(--ink-2); cursor:pointer; min-height:40px}
.chip.on{background:var(--navy); color:#fff; border-color:var(--navy)}
.toolbar .select{max-width:200px; margin-left:auto}

/* ---------- product detail ---------- */
.pd-grid{display:grid; grid-template-columns:1.1fr 1fr; gap:44px; padding-block:40px}
@media (max-width:860px){ .pd-grid{grid-template-columns:1fr; gap:28px} }
.gallery-main{aspect-ratio:1/1; border-radius:var(--r-lg); overflow:hidden; background:var(--bg-2)}
.gallery-main img{width:100%; height:100%; object-fit:cover}
.gallery-thumbs{display:flex; gap:10px; margin-top:12px}
.gthumb{width:70px; height:70px; border-radius:var(--r-sm); overflow:hidden; border:2px solid transparent; cursor:pointer; background:var(--bg-2)}
.gthumb.on{border-color:var(--navy)}
.gthumb img{width:100%; height:100%; object-fit:cover}
.pd-title{font-size:clamp(26px,4vw,38px); font-weight:800}
.pd-price{font-size:28px; font-weight:800; margin-top:10px}
.pd-block{margin-top:22px; padding-top:22px; border-top:1px solid var(--line)}
.pd-block h4{font-size:15px; margin-bottom:8px}
.size-grid{display:flex; gap:10px; flex-wrap:wrap; margin-top:6px}
.size-btn{min-width:56px; min-height:48px; padding:0 14px; border-radius:var(--r-sm); border:1.5px solid var(--line);
  background:var(--bg); font-weight:700; cursor:pointer; position:relative; color:var(--ink)}
.size-btn:hover:not(:disabled){border-color:var(--navy)}
.size-btn.on{border-color:var(--navy); background:var(--navy-50); color:var(--navy-700)}
.size-btn:disabled{opacity:.4; cursor:not-allowed; text-decoration:line-through}
.size-avail{font-size:13px; color:var(--ink-2); margin-top:8px; min-height:20px}
.stepper{display:inline-flex; align-items:center; border:1.5px solid var(--line); border-radius:var(--r-pill); overflow:hidden}
.stepper button{width:44px; height:46px; border:0; background:var(--bg); font-size:20px; cursor:pointer; color:var(--ink)}
.stepper button:hover{background:var(--bg-2)}
.stepper .sv{min-width:44px; text-align:center; font-weight:700; font-variant-numeric:tabular-nums}
.buy-row{display:flex; gap:12px; align-items:center; margin-top:20px; flex-wrap:wrap}
.size-table{width:100%; border-collapse:collapse; font-size:14px; margin-top:8px}
.size-table th, .size-table td{padding:8px 10px; border-bottom:1px solid var(--line-2); text-align:left}
.size-table th{color:var(--ink-2); font-weight:600}

/* ---------- cart drawer ---------- */
.drawer-back{position:fixed; inset:0; background:rgba(15,22,34,.45); opacity:0; pointer-events:none; transition:.25s; z-index:90}
.drawer-back.show{opacity:1; pointer-events:auto}
.cart-drawer{position:fixed; top:0; right:0; height:100%; width:400px; max-width:92vw; background:var(--bg); z-index:100;
  transform:translateX(100%); transition:transform .28s ease; display:flex; flex-direction:column; box-shadow:var(--sh-3)}
.cart-drawer.open{transform:translateX(0)}
.cart-head{display:flex; align-items:center; justify-content:space-between; padding:18px 20px; border-bottom:1px solid var(--line)}
.cart-head h3{font-size:19px}
.cart-body{flex:1; overflow:auto; padding:8px 20px}
.cart-foot{padding:18px 20px calc(18px + env(safe-area-inset-bottom,0px)); border-top:1px solid var(--line); background:var(--bg-3)}
.cart-item{display:flex; gap:12px; padding:14px 0; border-bottom:1px solid var(--line-2)}
.ci-img{width:64px; height:64px; border-radius:var(--r-sm); object-fit:cover; background:var(--bg-2); flex:none}
.ci-main{flex:1}
.ci-name{font-weight:700; font-size:15px}
.ci-meta{font-size:13px; color:var(--ink-2); margin:2px 0 8px}
.ci-right{text-align:right; display:flex; flex-direction:column; align-items:flex-end; gap:6px}
.qty{display:inline-flex; align-items:center; border:1.5px solid var(--line); border-radius:var(--r-pill)}
.qbtn{width:32px; height:32px; border:0; background:transparent; font-size:17px; cursor:pointer; color:var(--ink)}
.qn{min-width:26px; text-align:center; font-weight:700; font-size:14px}
.link-danger{background:none; border:0; color:var(--danger); font-size:13px; font-weight:600; cursor:pointer; padding:0}
.sum-row{display:flex; justify-content:space-between; padding:5px 0; font-size:15px}
.sum-row.total{font-size:18px; font-weight:800; border-top:1px solid var(--line); margin-top:6px; padding-top:12px}

/* ---------- search overlay ---------- */
.search-back{position:fixed; inset:0; background:rgba(15,22,34,.5); z-index:110; display:none; padding:14vh 16px 16px; justify-content:center}
.search-back.show{display:flex}
.search-box{width:100%; max-width:600px; background:var(--bg); border-radius:var(--r-lg); box-shadow:var(--sh-3); overflow:hidden; height:max-content; max-height:70vh; display:flex; flex-direction:column}
.search-row{display:flex; align-items:center; gap:10px; padding:14px 16px; border-bottom:1px solid var(--line); color:var(--ink-2)}
.search-input{flex:1; border:0; background:transparent; font-size:17px; color:var(--ink); outline:none; font-family:inherit}
.search-results{overflow:auto; padding:8px}
.search-item{display:flex; gap:12px; align-items:center; padding:10px 12px; border-radius:var(--r-sm)}
.search-item:hover{background:var(--bg-2)}
.search-item img{width:48px; height:48px; border-radius:8px; object-fit:cover; background:var(--bg-2)}
.si-name{font-weight:700} .si-meta{font-size:13px; color:var(--ink-2)}

/* ---------- footer ---------- */
.site-foot{background:var(--bg-2); border-top:1px solid var(--line); margin-top:40px; padding-top:48px}
.foot-grid{display:grid; grid-template-columns:1.6fr 1fr 1.7fr; gap:32px; padding-bottom:32px}
.foot-logo{height:30px; width:auto}
.foot-h{font-size:14px; margin-bottom:12px}
.foot-list{list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:8px; font-size:14px; color:var(--ink-2)}
.foot-steps{margin:0; padding-left:20px; display:flex; flex-direction:column; gap:4px; font-size:13.5px; color:var(--ink-2); line-height:1.5}
.foot-link{color:var(--navy); font-weight:600}
.foot-social{display:flex; flex-wrap:wrap; gap:10px; margin-bottom:14px}
.social-btn{display:inline-flex; align-items:center; gap:8px; padding:9px 16px; border-radius:10px; font-weight:600; font-size:14px; color:#fff; text-decoration:none; line-height:1; min-height:40px}
.social-btn svg{width:20px; height:20px; flex:0 0 auto}
.social-btn.fb{background:#1877F2}
.social-btn.fb:hover{background:#0f66d0}
.social-btn.line{background:#06C755}
.social-btn.line:hover{background:#05a948}
.foot-addr{font-size:14px; color:var(--ink-2); line-height:1.6; margin:0; max-width:34ch}
/* ---------- coupon chips (checkout) ---------- */
.coupon-chip{border:1.5px dashed var(--orange); background:transparent; color:var(--ink); border-radius:10px; padding:9px 12px; font-size:13px; cursor:pointer; min-height:40px; line-height:1.2}
.coupon-chip b{color:var(--orange)}
.coupon-chip:hover{background:var(--bg-2)}
.coupon-chip.on{background:var(--orange); color:#fff; border-style:solid}
.coupon-chip.on b{color:#fff}
.coupon-chip.on:hover{background:var(--orange)}
.foot-bottom{display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; padding-block:18px; border-top:1px solid var(--line); font-size:13px; color:var(--ink-2)}
@media (max-width:720px){ .foot-grid{grid-template-columns:1fr 1fr} }
@media (max-width:460px){ .foot-grid{grid-template-columns:1fr} }

/* ---------- points / reward band ---------- */
.points-band{display:flex; align-items:center; gap:22px; padding:26px 30px; border-radius:22px;
  background:linear-gradient(120deg, var(--navy) 0%, var(--navy-700) 100%); color:#fff;
  box-shadow:0 14px 34px rgba(21,84,162,.22)}
.points-band .pb-icon{font-size:40px; line-height:1; flex:0 0 auto}
.points-band .pb-main{flex:1 1 auto; min-width:0}
.points-band .pb-title{font-size:clamp(20px,2.6vw,27px); font-weight:800; color:#fff; margin:0}
.points-band .pb-sub{margin:6px 0 0; font-size:clamp(15px,1.8vw,17px); color:rgba(255,255,255,.92)}
.points-band .pb-note{margin:8px 0 0; font-size:14px; color:rgba(255,255,255,.75)}
.points-band .btn{flex:0 0 auto; white-space:nowrap}
@media (max-width:640px){
  .points-band{flex-direction:column; align-items:flex-start; text-align:left; gap:14px; padding:22px}
  .points-band .btn{width:100%; text-align:center}
}

/* ---------- testimonial carousel ---------- */
.tm-head{text-align:center; max-width:640px; margin:0 auto 8px}
.tm-head .eyebrow{display:block; margin-bottom:10px}
.tm-head h2{font-size:clamp(26px,3.6vw,36px); font-weight:800}
.tm-head .muted{margin-top:8px; font-size:clamp(15px,2vw,18px)}
.tm-wrap{position:relative; margin-top:28px}
.tm-track{display:flex; gap:20px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth;
  padding:10px 4px 24px; -webkit-overflow-scrolling:touch; scrollbar-width:none}
.tm-track::-webkit-scrollbar{display:none}
.tm-card{flex:0 0 82%; scroll-snap-align:center; background:var(--bg); border:1px solid var(--line);
  border-radius:var(--r-lg); box-shadow:var(--sh-2); padding:30px 26px; position:relative; overflow:hidden;
  min-height:210px; display:flex; flex-direction:column; justify-content:space-between}
@media (min-width:600px){ .tm-card{flex:0 0 46%} }
@media (min-width:900px){ .tm-card{flex:0 0 calc(33.333% - 14px)}; .tm-track{scroll-snap-align:start} }
.tm-quote{position:absolute; top:-6px; right:18px; font-size:120px; line-height:1; color:var(--navy);
  opacity:.09; font-family:Georgia,"Times New Roman",serif; pointer-events:none; z-index:0}
.tm-text{font-size:17px; line-height:1.75; color:var(--ink); position:relative; z-index:1}
.tm-who{display:flex; align-items:center; gap:12px; margin-top:22px; position:relative; z-index:1}
.tm-avatar{width:44px; height:44px; border-radius:50%; background:var(--navy-50); color:var(--navy);
  display:grid; place-items:center; font-weight:800; font-size:18px; flex:none; overflow:hidden}
.tm-avatar img{width:100%; height:100%; object-fit:cover}
.tm-name{font-weight:700; font-size:15px}
.tm-meta{font-size:13px; color:var(--ink-2)}
.tm-arrow{position:absolute; top:50%; transform:translateY(-50%); width:46px; height:46px; border-radius:50%;
  border:1px solid var(--line); background:var(--bg); color:var(--navy); font-size:26px; line-height:1;
  cursor:pointer; display:none; place-items:center; box-shadow:var(--sh-1); z-index:3; transition:.15s}
.tm-arrow:hover{background:var(--navy); color:#fff; border-color:var(--navy)}
.tm-prev{left:-10px} .tm-next{right:-10px}
@media (min-width:900px){ .tm-arrow{display:grid} }

/* feature strip */
.feat-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px}
@media (max-width:720px){ .feat-grid{grid-template-columns:1fr} }
.feat{padding:24px; border:1px solid var(--line); border-radius:var(--r); background:var(--bg)}
.feat h3{font-size:18px; margin-bottom:8px}
.feat p{color:var(--ink-2); font-size:15px}
