/* ============================================================
   SHAZIE PRIME TECH SOLUTION — design tokens
   Brand palette extracted from the Shazie Prime logo:
     Primary Blue   #0C4E93  — nav, headings, primary buttons, footer
     Secondary Blue #1A72C5  — hover states, links, secondary buttons, icons
     Accent Cyan    #22C7E8  — CTAs, active states, badges, feature icons
     Light Cyan     #42D8E8  — soft glows, gradient accents
     Background     #FFFFFF  Surface #F5F8FC
     Heading Text   #1F2937  Body/Muted Text #6B7280  Border #E5E7EB
   Old variable names are kept so every existing component rule
   still works — only the values now come from the brand palette.
   (--danger and lime/orange states are remapped to on-brand blue/cyan;
   the WhatsApp buttons keep WhatsApp's own green, since that is a
   third-party brand mark, not part of this site's palette.)
   Type: display = Space Grotesk, body = Inter, data = JetBrains Mono
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500;700&display=swap');

:root{
  /* brand palette */
  --primary:#0C4E93;
  --secondary:#1A72C5;
  --cyan:#22C7E8;
  --cyan-light:#42D8E8;
  --gradient-brand:linear-gradient(135deg,#0C4E93 0%,#1A72C5 45%,#22C7E8 100%);

  /* legacy tokens, now sourced from the brand palette */
  --paper:#FFFFFF;
  --surface:#F5F8FC;
  --ink:#1F2937;
  --muted:#6B7280;
  --line:#E5E7EB;
  --accent:var(--secondary);
  --accent-ink:var(--primary);
  --signal:var(--cyan);
  --signal-ink:var(--primary);
  --danger:var(--primary);
  --radius:2px;
  --max:1240px;
  --gap:24px;
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
html{overflow-x:hidden;}
body{max-width:100%;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'Inter',system-ui,sans-serif;
  font-size:16px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
img,svg{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
ul{list-style:none;margin:0;padding:0;}
button{font-family:inherit;cursor:pointer;}
table{max-width:100%;}
h1,h2,h3,h4{
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;
  line-height:1.1;
  margin:0 0 .5em;
  letter-spacing:-.01em;
}
.mono{font-family:'JetBrains Mono',monospace;}
.wrap{max-width:var(--max);margin:0 auto;padding:0 clamp(16px,4vw,24px);}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
@media (prefers-reduced-motion: reduce){*{animation:none !important;transition:none !important;}}

/* ---------- topbar / nav ---------- */
.topbar{
  background:var(--accent-ink);
  color:var(--paper);
  font-family:'JetBrains Mono',monospace;
  font-size:12px;
  letter-spacing:.03em;
}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;height:34px;}
.topbar a{color:var(--signal);}

header.site{
  background:var(--surface);
  border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:40;
}
header.site .wrap{
  display:flex;align-items:center;justify-content:space-between;
  height:76px;gap:16px;
}
.logo{
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;font-size:22px;letter-spacing:-.02em;
  display:flex;align-items:center;gap:8px;
}
.logo img{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0;display:block;}
nav.main{display:flex;gap:32px;}
nav.main a{
  font-size:14px;font-weight:500;color:var(--ink);
  padding:8px 0;border-bottom:2px solid transparent;
}
nav.main a:hover,nav.main a.active{border-color:var(--accent);color:var(--accent-ink);}
.head-actions{display:flex;align-items:center;gap:18px;}
.icon-btn{position:relative;display:flex;align-items:center;gap:6px;font-size:13px;}
.cart-count{
  background:var(--accent);color:#fff;font-family:'JetBrains Mono',monospace;
  font-size:11px;font-weight:700;min-width:18px;height:18px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;padding:0 2px;
}
.menu-toggle{display:none;background:none;border:none;width:40px;height:40px;align-items:center;justify-content:center;flex-shrink:0;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:13px 22px;border-radius:var(--radius);font-weight:600;font-size:14px;
  border:1px solid var(--accent-ink);background:var(--accent-ink);color:#fff;transition:.15s ease;
}
.btn:hover{background:var(--accent);border-color:var(--accent);}
.btn.outline{background:transparent;color:var(--accent-ink);border-color:var(--accent-ink);}
.btn.outline:hover{background:var(--accent-ink);color:#fff;}
.btn.accent{background:var(--signal);border-color:var(--signal);color:var(--accent-ink);}
.btn.accent:hover{background:var(--accent-ink);border-color:var(--accent-ink);color:#fff;}
.btn.whatsapp{background:#25D366;border-color:#25D366;color:#06210F;}
.btn.whatsapp:hover{background:#1DA851;border-color:#1DA851;color:#fff;}
.btn.block{width:100%;}
.btn.sm{padding:8px 14px;font-size:13px;}
.btn:disabled{opacity:.45;cursor:not-allowed;}

/* ---------- hero (spec-sheet) ---------- */
.hero{border-bottom:1px solid var(--line);background:
  linear-gradient(180deg,#EAF2FB 0%,var(--paper) 100%);}
.hero .wrap{display:grid;grid-template-columns:1fr;gap:48px;padding-top:56px;padding-bottom:56px;align-items:center;}
.hero .eyebrow{
  font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--accent-ink);
  background:rgba(26,114,197,.1);display:inline-block;padding:5px 10px;border-radius:2px;margin-bottom:16px;
}
.hero h1{font-size:clamp(34px,4.4vw,56px);max-width:14ch;}
.hero p.lead{color:var(--muted);font-size:17px;max-width:46ch;margin-bottom:28px;}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;}
.spec-card{
  background:var(--gradient-brand);color:#fff;border-radius:4px;overflow:hidden;
}
.spec-card img{width:100%;aspect-ratio:16/9;object-fit:cover;}
.spec-list{font-family:'JetBrains Mono',monospace;font-size:12.5px;padding:18px 20px;}
.spec-list div{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.18);}
.spec-list div:last-child{border-bottom:none;}
.spec-list span:first-child{color:#CFEBF5;}

/* ---------- premium hero search ---------- */
.search-float{margin-top:-34px;position:relative;z-index:20;margin-bottom:56px;}
.hero-search{position:relative;}
.hero-search-box{
  display:flex;align-items:center;gap:12px;background:var(--paper);
  border:1px solid var(--line);border-radius:16px;padding:6px 8px 6px 20px;
  box-shadow:0 20px 48px rgba(12,78,147,.16);transition:box-shadow .2s ease,border-color .2s ease;
}
.hero-search-box:focus-within{border-color:var(--accent);box-shadow:0 24px 56px rgba(26,114,197,.24);}
.hero-search-icon{color:var(--muted);flex-shrink:0;}
.hero-search-box input{
  flex:1;min-width:0;border:none;outline:none;background:none;font-family:inherit;font-size:16px;
  color:var(--ink);padding:14px 0;
}
.hero-search-box input::placeholder{color:var(--muted);}
.hero-search-clear{
  background:var(--surface);border:none;width:26px;height:26px;border-radius:50%;color:var(--muted);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:.15s ease;
}
.hero-search-clear:hover{background:var(--line);color:var(--ink);}
.hero-search-kbd{
  font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted);
  background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:5px 9px;flex-shrink:0;
}
@media (max-width:640px){.hero-search-kbd{display:none;}}

.hero-search-panel{
  position:absolute;top:calc(100% + 10px);left:0;right:0;background:var(--paper);
  border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 56px rgba(20,22,26,.18);
  overflow:hidden;z-index:50;max-height:70vh;overflow-y:auto;
  animation:searchPanelIn .18s cubic-bezier(.2,.7,.2,1) both;
}
@keyframes searchPanelIn{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:translateY(0);}}
.hero-search-section-label{
  font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted);text-transform:uppercase;
  letter-spacing:.06em;padding:14px 20px 8px;
}
.hero-search-chips{display:flex;gap:8px;flex-wrap:wrap;padding:0 20px 18px;}
.hero-search-chips button{
  padding:8px 14px;border-radius:20px;border:1px solid var(--line);background:var(--surface);
  font-size:13px;font-weight:500;transition:.15s ease;
}
.hero-search-chips button:hover{border-color:var(--accent);color:var(--accent-ink);transform:translateY(-1px);}
.hero-search-result{
  display:flex;align-items:center;gap:14px;padding:10px 20px;cursor:pointer;transition:background .12s ease;
}
.hero-search-result:hover,.hero-search-result.active{background:var(--surface);}
.hero-search-result img{width:44px;height:44px;object-fit:cover;border-radius:8px;border:1px solid var(--line);flex-shrink:0;background:var(--surface);}
.hero-search-result .info{flex:1;min-width:0;}
.hero-search-result .info h5{margin:0;font-size:14px;font-family:'Space Grotesk',sans-serif;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hero-search-result .info span{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted);}
.hero-search-result .price{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:14px;flex-shrink:0;}
.hero-search-viewall{
  display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 20px;
  border-top:1px solid var(--line);background:var(--surface);font-size:13px;font-weight:600;color:var(--accent-ink);
  cursor:pointer;transition:background .15s ease;
}
.hero-search-viewall:hover{background:#EAF2FB;}
.hero-search-empty{padding:28px 20px;text-align:center;color:var(--muted);font-size:14px;}

@media (max-width:720px){
  .search-float{margin-top:-22px;}
  .hero-search-box{padding:4px 6px 4px 16px;border-radius:14px;}
  .hero-search-box input{padding:11px 0;font-size:15px;}
}

/* ---------- hero banner (background image + overlay), used across every page ---------- */
.hero-banner{position:relative;overflow:hidden;background-size:cover;background-position:center;background-repeat:no-repeat;}
.hero.hero-banner{background:none;background-size:cover;background-position:center;background-repeat:no-repeat;}
.hero-banner::after{
  content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(90deg, rgba(2,8,18,.95) 0%, rgba(3,12,26,.92) 22%, rgba(4,16,34,.82) 40%, rgba(6,20,40,.5) 58%, rgba(8,24,46,.15) 75%, transparent 90%);
}
.hero-banner > .wrap{position:relative;z-index:2;}
.hero-banner .eyebrow{color:#fff;background:rgba(4,14,28,.55);border:1px solid rgba(255,255,255,.35);text-shadow:0 1px 4px rgba(0,0,0,.5);}
.hero-banner .tag{color:#fff;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.32);}
.hero-banner h1{color:#fff;text-shadow:0 2px 18px rgba(0,0,0,.4),0 1px 3px rgba(0,0,0,.5);}
.hero-banner p.lead,.hero-banner p.sub{color:rgba(255,255,255,.95);text-shadow:0 1px 10px rgba(0,0,0,.35);}
.hero-banner .btn.outline{color:#fff;border-color:rgba(255,255,255,.75);}
.hero-banner .btn.outline:hover{background:#fff;color:var(--accent-ink);}
.hero-banner .crumb-inline a,.hero-banner .crumb-inline span{color:rgba(255,255,255,.85);}

.hero-bg-1{background-image:url('../images/hero/hero1.webp');}
.hero-bg-2{background-image:url('../images/hero/hero2.webp');}
.hero-bg-3{background-image:url('../images/hero/hero3.webp');}

/* ---------- premium home hero enhancements ---------- */
.hero.hero-banner{padding:0;}
.hero-bg-slides{position:absolute;inset:0;z-index:0;}
.hero-bg-slide{
  position:absolute;inset:0;background-size:cover;background-position:center;background-repeat:no-repeat;
  opacity:0;transition:opacity 1.8s ease;
  animation:heroKenBurns 16s ease-in-out infinite;
}
.hero-bg-slide.active{opacity:1;}
@keyframes heroKenBurns{
  0%{transform:scale(1);}
  50%{transform:scale(1.08);}
  100%{transform:scale(1);}
}

.hero-eyebrow-badge{display:inline-flex;align-items:center;gap:9px;}
.hero-eyebrow-badge .pulse-dot{width:7px;height:7px;border-radius:50%;background:var(--cyan-light);position:relative;flex-shrink:0;}
.hero-eyebrow-badge .pulse-dot::after{
  content:"";position:absolute;inset:-4px;border-radius:50%;border:1.5px solid var(--cyan-light);
  animation:pulseRing 2s ease-out infinite;
}
@keyframes pulseRing{
  0%{transform:scale(.6);opacity:1;}
  100%{transform:scale(1.9);opacity:0;}
}

.hero h1 .grad-text{
  background:linear-gradient(90deg,#fff 0%,var(--cyan-light) 55%,var(--cyan) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 2px 4px rgba(0,0,0,.55)) drop-shadow(0 0 22px rgba(0,0,0,.35));
}

.hero-stats-row{
  display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-top:32px;padding-top:24px;
  border-top:1px solid rgba(255,255,255,.22);
}
.hero-stats-row .stat{display:flex;flex-direction:column;gap:2px;}
.hero-stats-row .stat strong{font-family:'Space Grotesk',sans-serif;font-size:22px;font-weight:700;color:#fff;line-height:1.1;text-shadow:0 1px 6px rgba(0,0,0,.5);}
.hero-stats-row .stat span{font-size:11.5px;color:rgba(255,255,255,.85);text-shadow:0 1px 5px rgba(0,0,0,.5);}
.hero-stats-row .stat-divider{width:1px;height:30px;background:rgba(255,255,255,.25);}

.hero .btn.accent{box-shadow:0 10px 30px rgba(34,199,232,.35);}
.hero .btn.accent:hover{transform:translateY(-2px);box-shadow:0 14px 36px rgba(34,199,232,.5);}
.hero .btn.outline:hover{transform:translateY(-2px);}
.hero .btn .arrow{display:inline-block;transition:transform .2s ease;}
.hero .btn:hover .arrow{transform:translateX(4px);}

.spec-card-wrap{position:relative;}
.spec-card-wrap::before,.spec-card-wrap::after{content:"";position:absolute;border-radius:50%;filter:blur(60px);z-index:0;pointer-events:none;}
.spec-card-wrap::before{width:220px;height:220px;background:var(--cyan);opacity:.35;top:-50px;right:-40px;}
.spec-card-wrap::after{width:180px;height:180px;background:var(--cyan-light);opacity:.28;bottom:-40px;left:-40px;}
.spec-card{position:relative;z-index:1;}
.spec-card.premium{
  background:rgba(9,28,52,.55);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid rgba(255,255,255,.22);box-shadow:0 30px 70px rgba(5,20,45,.45);
}
.spec-card .ribbon{
  position:absolute;top:14px;right:14px;z-index:2;
  background:linear-gradient(90deg,var(--cyan),var(--cyan-light));color:#04263B;
  font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;letter-spacing:.03em;
  padding:6px 12px;border-radius:20px;box-shadow:0 6px 18px rgba(0,0,0,.3);
}

.hero-scroll-cue{
  position:absolute;bottom:16px;left:50%;transform:translateX(-50%);z-index:2;
  display:flex;flex-direction:column;align-items:center;gap:4px;color:rgba(255,255,255,.7);
  font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.1em;
}
.hero-scroll-cue svg{animation:scrollBounce 1.8s ease-in-out infinite;}
@keyframes scrollBounce{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(6px);}
}
@media (max-width:900px){.hero-scroll-cue{display:none;}}
@media (max-width:720px){.hero-stats-row{gap:16px;}.hero-stats-row .stat strong{font-size:19px;}}
@media (prefers-reduced-motion: reduce){
  .hero-bg-slide{animation:none;transition:none;}
  .hero-scroll-cue svg{animation:none;}
  .hero-eyebrow-badge .pulse-dot::after{animation:none;}
}

/* standalone page banner variant (Shop, Product, Cart, About, Contact) */
.page-hero-banner{padding:76px 0;}
.page-hero-banner .tag{margin-bottom:14px;display:inline-block;}
.page-hero-banner h1{font-size:clamp(28px,4vw,44px);max-width:22ch;margin:0;}
.page-hero-banner p.sub{font-size:16px;max-width:52ch;margin-top:12px;}
@media (max-width:640px){
  .page-hero-banner{padding:52px 0;}
}

/* ---------- section heads ---------- */
.section{padding:64px 0;}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:32px;gap:16px;flex-wrap:wrap;}
.section-head .tag{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--accent);letter-spacing:.06em;display:block;margin-bottom:6px;}
.section-head h2{font-size:clamp(24px,3vw,34px);}
.section-head p{color:var(--muted);margin:0;}

/* ---------- category tiles ---------- */
.cats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);}
.cat-card{
  position:relative;border:1px solid var(--line);border-radius:4px;overflow:hidden;background:var(--surface);
  transition:.2s ease;
}
.cat-card:hover{border-color:var(--accent);transform:translateY(-3px);}
.cat-card img{aspect-ratio:1/1;object-fit:cover;}
.cat-card .cat-label{
  position:absolute;left:0;bottom:0;right:0;padding:16px;
  background:linear-gradient(0deg,rgba(12,78,147,.78),transparent);color:#fff;
}
.cat-card .cat-label span{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--signal);display:block;}
.cat-card .cat-label h3{margin:2px 0 0;font-size:20px;color:#fff;}

/* ---------- product grid ---------- */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap);}
.card{
  background:var(--surface);border:1px solid var(--line);border-radius:4px;display:flex;flex-direction:column;
  overflow:hidden;transition:.15s ease;
}
.card:hover{border-color:var(--accent);box-shadow:0 8px 20px rgba(20,22,26,.06);}
.card .thumb{position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--paper);}
.card .thumb img{width:100%;height:100%;object-fit:cover;}
.badge{
  position:absolute;top:10px;left:10px;font-family:'JetBrains Mono',monospace;
  font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:2px;letter-spacing:.03em;
}
.badge.new{background:var(--signal);color:var(--accent-ink);}
.badge.sale{background:var(--danger);color:#fff;}
.badge.out{background:var(--ink);color:#fff;}
.card .body{padding:16px;display:flex;flex-direction:column;gap:6px;flex:1;}
.card .cat-eyebrow{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;}
.card h3{font-size:16px;margin:0;}
.card .price-row{margin-top:auto;display:flex;align-items:center;justify-content:space-between;padding-top:10px;}
.price{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:16px;}
.price.strike{color:var(--muted);text-decoration:line-through;font-weight:400;font-size:13px;margin-right:6px;}
.card .add-btn{
  width:36px;height:36px;border-radius:2px;background:var(--accent-ink);color:#fff;border:none;
  display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;
}
.card .add-btn:hover{background:var(--signal);color:var(--accent-ink);}
.card a.thumb-link{display:block;}

/* ---------- filters ---------- */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:32px;}
.filters button{
  padding:9px 16px;border:1px solid var(--line);background:var(--surface);border-radius:20px;
  font-size:13px;font-weight:500;
}
.filters button.active{background:var(--signal);color:var(--accent-ink);border-color:var(--signal);}
.sort-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;color:var(--muted);font-size:13px;}
.sort-row select{border:1px solid var(--line);border-radius:2px;padding:7px 10px;font-family:inherit;background:var(--surface);}

/* ---------- promo banner ---------- */
.promo{background:var(--accent-ink);color:var(--paper);border-radius:4px;overflow:hidden;display:grid;grid-template-columns:1fr 1fr;align-items:center;}
.promo img{aspect-ratio:4/3;object-fit:cover;}
.promo-copy{padding:40px;}
.promo-copy span{font-family:'JetBrains Mono',monospace;color:var(--signal);font-size:12px;}
.promo-copy h2{color:#fff;font-size:30px;margin:8px 0 12px;}
.promo-copy p{color:#CFE3F2;margin-bottom:22px;max-width:36ch;}

/* ---------- trust strip ---------- */
.trust{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:28px 0;}
.trust div{display:flex;gap:12px;align-items:flex-start;font-size:13px;}
.trust strong{display:block;font-family:'Space Grotesk',sans-serif;font-size:14px;}
.trust svg{flex-shrink:0;color:var(--signal);}

/* ---------- footer ---------- */
footer{background:var(--accent-ink);color:#CFE3F2;margin-top:40px;}
footer .wrap{padding:56px 24px 28px;display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:32px;}
footer h4{color:#fff;font-size:14px;margin-bottom:16px;}
footer .logo{color:#fff;}
footer p.about{font-size:13px;line-height:1.7;max-width:32ch;}
footer ul li{margin-bottom:10px;font-size:13px;}
footer ul a:hover{color:#fff;}
.foot-bottom{border-top:1px solid rgba(255,255,255,.15);padding:18px 24px;font-family:'JetBrains Mono',monospace;font-size:11.5px;display:flex;justify-content:space-between;color:rgba(255,255,255,.6);}
.social{display:flex;gap:10px;margin-top:16px;}
.social a{width:34px;height:34px;border:1px solid rgba(255,255,255,.25);border-radius:2px;display:flex;align-items:center;justify-content:center;}
.social a:hover{border-color:var(--signal);color:var(--signal);}

/* ---------- breadcrumb ---------- */
.crumb{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--muted);padding:18px 0;}
.crumb a:hover{color:var(--accent);}

/* ---------- product detail ---------- */
.pdp{display:grid;grid-template-columns:1fr 1fr;gap:56px;padding:20px 0 64px;}
.gallery-main{border:1px solid var(--line);border-radius:4px;overflow:hidden;aspect-ratio:1/1;margin-bottom:12px;background:var(--surface);position:relative;}
.gallery-main img{width:100%;height:100%;object-fit:cover;display:block;}
.gallery-thumbs{display:flex;gap:10px;}
.gallery-thumbs button{width:76px;height:76px;padding:0;border:1px solid var(--line);border-radius:4px;overflow:hidden;background:none;transition:transform .2s cubic-bezier(.34,1.56,.64,1),border-color .2s ease,box-shadow .25s ease;}
.gallery-thumbs button:hover{transform:translateY(-2px);border-color:var(--accent);}
.gallery-thumbs button.active{border-color:var(--signal);border-width:2px;box-shadow:0 8px 18px rgba(34,199,232,.35);transform:translateY(-2px);}
.gallery-thumbs img{width:100%;height:100%;object-fit:cover;transition:transform .35s cubic-bezier(.2,.7,.2,1);}
.gallery-thumbs button:hover img{transform:scale(1.08);}

/* ---------- premium main-image crossfade / slide / zoom transition ---------- */
#mainImg{transition:transform .7s cubic-bezier(.2,.7,.2,1);will-change:transform;}
.gallery-main:hover #mainImg:not(.leaving){transform:scale(1.035);}

.gallery-layer{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.gallery-layer.entering{
  z-index:3;opacity:0;filter:blur(6px);
  transition:opacity .6s cubic-bezier(.16,.8,.2,1),transform .6s cubic-bezier(.16,.8,.2,1),filter .6s ease;
}
.gallery-layer.entering.from-right{transform:translateX(6%) scale(1.07);}
.gallery-layer.entering.from-left{transform:translateX(-6%) scale(1.07);}
.gallery-layer.entering.active-in{opacity:1;transform:translateX(0) scale(1);filter:blur(0);}
.gallery-layer.leaving{
  z-index:2;
  transition:opacity .5s cubic-bezier(.4,0,.2,1),transform .5s cubic-bezier(.4,0,.2,1),filter .5s ease;
}
.gallery-layer.leaving.active-out{opacity:0;filter:blur(4px);}
.gallery-layer.leaving.to-left.active-out{transform:translateX(-6%) scale(.96);}
.gallery-layer.leaving.to-right.active-out{transform:translateX(6%) scale(.96);}

/* soft glossy sheen sweep on every switch, for a premium showroom feel */
.gallery-main::after{
  content:"";position:absolute;inset:0;z-index:4;pointer-events:none;
  background:linear-gradient(115deg,transparent 42%,rgba(255,255,255,.4) 50%,transparent 58%);
  transform:translateX(-140%);opacity:0;
}
.gallery-main.sheen::after{animation:gallerySheen .75s cubic-bezier(.2,.7,.2,1);}
@keyframes gallerySheen{
  0%{transform:translateX(-140%);opacity:0;}
  18%{opacity:.8;}
  100%{transform:translateX(140%);opacity:0;}
}

/* hover/focus arrow navigation */
.gallery-arrow{
  position:absolute;top:50%;left:14px;width:40px;height:40px;border-radius:50%;
  background:rgba(255,255,255,.92);border:1px solid var(--line);color:var(--accent-ink);
  display:flex;align-items:center;justify-content:center;z-index:5;cursor:pointer;
  opacity:0;transform:translateY(-50%) scale(.82);
  transition:opacity .2s ease,transform .2s cubic-bezier(.34,1.56,.64,1),background .18s ease,color .18s ease;
  box-shadow:0 8px 20px rgba(12,78,147,.18);
}
.gallery-arrow.next{left:auto;right:14px;}
.gallery-main:hover .gallery-arrow,.gallery-main:focus-within .gallery-arrow{opacity:1;transform:translateY(-50%) scale(1);}
.gallery-arrow:hover{background:var(--accent-ink);color:#fff;}
.gallery-arrow:active{transform:translateY(-50%) scale(.92);}

.gallery-count{
  position:absolute;right:14px;bottom:14px;z-index:5;font-family:'JetBrains Mono',monospace;font-size:11.5px;
  background:rgba(12,78,147,.85);color:#fff;padding:4px 10px;border-radius:20px;letter-spacing:.03em;
  opacity:0;transform:translateY(6px);transition:opacity .25s ease,transform .25s ease;
}
.gallery-main:hover .gallery-count,.gallery-main:focus-within .gallery-count{opacity:1;transform:translateY(0);}

@media (hover:none){
  .gallery-arrow,.gallery-count{opacity:1;transform:translateY(-50%) scale(1);}
  .gallery-count{transform:translateY(0);}
}
@media (prefers-reduced-motion: reduce){
  .gallery-layer{transition:opacity .25s ease !important;transform:none !important;filter:none !important;}
  .gallery-main::after{display:none;}
  #mainImg{transition:none;}
  .gallery-main:hover #mainImg{transform:none;}
}
.pdp-info .cat-eyebrow{font-family:'JetBrains Mono',monospace;color:var(--accent);font-size:12px;letter-spacing:.05em;}
.pdp-info h1{font-size:30px;margin:8px 0 12px;}
.pdp-price{display:flex;align-items:center;gap:10px;margin-bottom:16px;}
.pdp-price .price{font-size:26px;}
.stock{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--signal-ink);background:rgba(34,199,232,.18);padding:4px 9px;border-radius:2px;display:inline-block;margin-bottom:20px;}
.stock.low{color:var(--accent-ink);background:rgba(12,78,147,.1);}
.pdp-desc{color:var(--muted);margin-bottom:24px;line-height:1.7;}
.qty-row{display:flex;align-items:center;gap:16px;margin-bottom:20px;}
.qty-box{display:flex;align-items:center;border:1px solid var(--line);border-radius:2px;}
.qty-box button{width:38px;height:40px;background:none;border:none;font-size:16px;}
.qty-box span{width:40px;text-align:center;font-family:'JetBrains Mono',monospace;}
.pdp-actions{display:flex;gap:12px;margin-bottom:32px;}
.specs-table{width:100%;border-collapse:collapse;font-size:14px;}
.specs-table tr{border-bottom:1px solid var(--line);}
.specs-table td{padding:11px 0;}
.specs-table td:first-child{color:var(--muted);width:38%;font-family:'JetBrains Mono',monospace;font-size:12.5px;}

/* ---------- cart page (modern) ---------- */
.cart-steps{display:flex;align-items:center;gap:10px;margin:4px 0 36px;font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--muted);}
.cart-steps .step{display:flex;align-items:center;gap:8px;}
.cart-steps .num{width:22px;height:22px;border-radius:50%;background:var(--line);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;}
.cart-steps .step.active .num{background:var(--accent-ink);}
.cart-steps .step.done .num{background:var(--signal);color:var(--signal-ink);}
.cart-steps .step.active span:last-child{color:var(--ink);font-weight:600;}
.cart-steps .sep{width:28px;height:1px;background:var(--line);}

.cart-layout{display:grid;grid-template-columns:1.55fr 1fr;gap:40px;padding:4px 0 72px;align-items:start;}

.cart-item{
  display:grid;grid-template-columns:88px 1fr auto;gap:18px;align-items:center;
  background:var(--surface);border:1px solid var(--line);border-radius:16px;
  padding:16px;margin-bottom:14px;transition:.18s ease;
  animation:itemIn .35s ease backwards;
}
.cart-item:hover{box-shadow:0 10px 28px rgba(20,22,26,.07);border-color:#dbe0ea;transform:translateY(-1px);}
.cart-item .thumb-wrap{width:88px;height:88px;border-radius:12px;overflow:hidden;background:var(--paper);border:1px solid var(--line);}
.cart-item img{width:100%;height:100%;object-fit:cover;}
.cart-item h4{margin:0 0 4px;font-size:15.5px;}
.cart-item .cat-eyebrow{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--accent);letter-spacing:.04em;}
.cart-item .item-mid{display:flex;flex-direction:column;gap:8px;}
.cart-item .item-controls{display:flex;align-items:center;gap:14px;margin-top:2px;}
.cart-item .line-price{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:15.5px;white-space:nowrap;}
.cart-item .unit-price{display:block;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted);font-weight:400;margin-top:2px;text-align:right;}
.cart-item .remove{
  background:none;border:none;color:var(--muted);font-size:12px;font-family:'JetBrains Mono',monospace;
  display:flex;align-items:center;gap:5px;padding:0;transition:.15s ease;
}
.cart-item .remove:hover{color:var(--danger);}
.qty-box{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--paper);}
.qty-box button{width:30px;height:30px;background:none;border:none;font-size:15px;color:var(--ink);transition:.15s ease;}
.qty-box button:hover{background:var(--accent);color:#fff;}
.qty-box span{width:32px;text-align:center;font-family:'JetBrains Mono',monospace;font-size:13px;}

@keyframes itemIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}

.summary{
  background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:26px;
  position:sticky;top:96px;box-shadow:0 14px 36px rgba(20,22,26,.05);
}
.summary h3{font-size:13.5px;font-family:'JetBrains Mono',monospace;text-transform:uppercase;letter-spacing:.06em;margin-bottom:18px;color:var(--muted);}
.summary-row{display:flex;justify-content:space-between;font-size:14px;padding:8px 0;color:var(--muted);}
.summary-row.total{color:var(--ink);font-weight:700;font-size:19px;border-top:1px dashed var(--line);margin-top:8px;padding-top:16px;}
.summary-row .mono{font-family:'JetBrains Mono',monospace;}
.wa-note{font-size:12px;color:var(--muted);margin-top:14px;line-height:1.6;display:flex;gap:8px;align-items:flex-start;}
.wa-note svg{flex-shrink:0;margin-top:1px;color:var(--accent);}

.field{margin-bottom:14px;}
.field label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px;}
.field input,.field textarea{
  width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;
  font-family:inherit;font-size:16px;background:var(--paper);transition:.15s ease;
}
.field input:focus,.field textarea:focus{border-color:var(--accent);background:var(--surface);outline:none;box-shadow:0 0 0 3px rgba(26,114,197,.12);}
.field textarea{resize:vertical;min-height:70px;}

.btn.whatsapp{box-shadow:0 8px 20px rgba(37,211,102,.25);}
.btn.whatsapp:hover{box-shadow:0 10px 24px rgba(29,168,81,.32);}

/* empty cart */
.empty-cart{text-align:center;padding:72px 20px 60px;}
.empty-cart .empty-badge{
  width:120px;height:120px;border-radius:50%;background:linear-gradient(135deg,#EAF2FB,#DCEEFC);
  display:flex;align-items:center;justify-content:center;margin:0 auto 24px;
}
.empty-cart .empty-badge svg{color:var(--accent);}
.empty-cart h3{font-size:22px;margin-bottom:8px;}
.empty-cart p{color:var(--muted);margin-bottom:26px;}
.empty-shortcuts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:26px;}
.empty-shortcuts a{
  font-family:'JetBrains Mono',monospace;font-size:12px;border:1px solid var(--line);border-radius:20px;
  padding:8px 16px;color:var(--ink);transition:.15s ease;
}
.empty-shortcuts a:hover{border-color:var(--accent);color:var(--accent-ink);background:rgba(26,114,197,.06);}

/* order-sent success state */
.order-success{text-align:center;padding:72px 20px 64px;animation:itemIn .4s ease both;}
.success-ring{
  width:96px;height:96px;border-radius:50%;background:rgba(34,199,232,.15);
  display:flex;align-items:center;justify-content:center;margin:0 auto 22px;
  animation:ringPop .45s cubic-bezier(.34,1.56,.64,1) both;
}
.success-ring svg{color:var(--signal-ink);}
@keyframes ringPop{from{transform:scale(.6);opacity:0;}to{transform:scale(1);opacity:1;}}
.order-success h3{font-size:24px;margin-bottom:8px;}
.order-success p{color:var(--muted);max-width:44ch;margin:0 auto 8px;}
.order-recap{
  display:inline-flex;gap:22px;background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:16px 26px;margin:22px 0 30px;font-family:'JetBrains Mono',monospace;font-size:13px;
}
.order-recap div{text-align:left;}
.order-recap span{display:block;color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;}
.order-recap strong{font-size:16px;}
.success-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}

@media (max-width:640px){
  .cart-item{
    grid-template-columns:64px 1fr;
    grid-template-rows:auto auto;
    row-gap:10px;
  }
  .cart-item .thumb-wrap{grid-row:1 / 3;width:64px;height:64px;}
  .cart-item .item-mid{grid-column:2;grid-row:1;}
  .cart-item .item-price{
    grid-column:2;grid-row:2;
    display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  }
  .cart-item .unit-price{text-align:left;margin-top:0;}
  .order-recap{flex-direction:column;gap:12px;}
}

/* ---------- misc pages ---------- */
.page-hero{padding:48px 0 8px;}
.page-hero h1{font-size:clamp(28px,4vw,42px);}
.content-block{max-width:74ch;color:var(--muted);line-height:1.8;}
.content-block h2{color:var(--ink);font-size:22px;margin-top:32px;}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;padding:20px 0 64px;}
.contact-card{border:1px solid var(--line);background:var(--surface);border-radius:4px;padding:22px;margin-bottom:14px;}
.contact-card strong{font-family:'Space Grotesk',sans-serif;display:block;margin-bottom:4px;}

/* ---------- toast ---------- */
.toast{
  position:fixed;bottom:24px;right:24px;background:var(--accent-ink);color:#fff;padding:14px 20px;border-radius:3px;
  font-size:13px;display:flex;align-items:center;gap:10px;transform:translateY(120%);transition:transform .3s ease;z-index:100;
}
.toast.show{transform:translateY(0);}
.toast .dot{width:8px;height:8px;background:var(--signal);border-radius:50%;flex-shrink:0;}

/* ============================================================
   RESPONSIVE — mobile-first breakpoint system
   1180px  large tablet / small laptop   → tighten grids to 3-up
   960px   tablet                        → hamburger nav kicks in, stack heroes
   768px   large phone / small tablet    → 2-up grids, stacked promo
   540px   phone                         → tighter spacing, full-width actions
   400px   small phone                   → smallest type scale, 1-up grids
   ============================================================ */

/* ---- 1180px: ease the 4-col grid down to 3 before it gets cramped ---- */
@media (max-width:1180px){
  .grid{grid-template-columns:repeat(3,1fr);}
}

/* ---- 960px: tablet — nav becomes a drawer, two-column layouts stack ---- */
@media (max-width:960px){
  .hero .wrap{grid-template-columns:1fr;padding-top:32px;gap:32px;}
  .cats{grid-template-columns:repeat(2,1fr);}
  .grid{grid-template-columns:repeat(3,1fr);}
  .promo{grid-template-columns:1fr;}
  .promo img{aspect-ratio:16/9;}
  .trust{grid-template-columns:repeat(2,1fr);}
  footer .wrap{grid-template-columns:1fr 1fr;}
  .pdp{grid-template-columns:1fr;gap:32px;}
  .cart-layout{grid-template-columns:1fr;}
  .contact-grid{grid-template-columns:1fr;gap:28px;}
  .summary{position:static;}

  nav.main{
    position:fixed;top:76px;left:0;right:0;bottom:0;background:var(--surface);
    flex-direction:column;padding:12px clamp(16px,4vw,24px) 24px;border-bottom:1px solid var(--line);
    gap:2px;display:none;overflow-y:auto;z-index:39;
  }
  nav.main.open{display:flex;}
  nav.main a{padding:14px 4px;border-bottom:1px solid var(--line);font-size:16px;}
  nav.main a:hover,nav.main a.active{border-bottom-color:var(--accent);}
  .menu-toggle{display:flex;}
}

/* ---- 768px: large phone — two-up grids everywhere, roomier touch targets ---- */
@media (max-width:768px){
  .topbar .wrap{height:auto;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 0;font-size:11px;}
  header.site .wrap{gap:10px;height:64px;}
  nav.main{top:64px;}
  .logo{font-size:19px;}
  .logo img{width:32px;height:32px;}
  .head-actions{gap:10px;}

  .hero h1{font-size:clamp(28px,7vw,40px);}
  .hero p.lead{font-size:15.5px;}
  .hero-actions{flex-direction:column;align-items:stretch;}
  .hero-actions .btn{width:100%;}

  .section{padding:44px 0;}
  .section-head{margin-bottom:22px;}
  .cats{grid-template-columns:repeat(2,1fr);gap:14px;}
  .grid{grid-template-columns:repeat(2,1fr);gap:14px;}
  .card .body{padding:12px;}
  .card h3{font-size:14.5px;}
  .price{font-size:14.5px;}

  .promo-copy{padding:28px 22px;}
  .promo-copy h2{font-size:24px;}

  .trust{grid-template-columns:1fr 1fr;gap:16px;padding:22px 0;}

  footer .wrap{grid-template-columns:1fr 1fr;gap:28px 20px;padding:40px clamp(16px,4vw,24px) 22px;}
  .foot-bottom{flex-direction:column;gap:6px;align-items:flex-start;padding:16px clamp(16px,4vw,24px);}

  .pdp-info h1{font-size:24px;}
  .pdp-actions{flex-direction:column;}
  .pdp-actions .btn{width:100%;}
  .gallery-thumbs{overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch;}
  .gallery-thumbs button{flex-shrink:0;}
  .specs-table{font-size:13px;}

  .cart-steps{font-size:11px;gap:6px;}
  .cart-steps .sep{width:16px;}
  .cart-item{padding:12px;column-gap:12px;}
  .cart-item .item-controls{flex-wrap:wrap;}

  .contact-grid{padding:16px 0 44px;}
  .contact-card{padding:18px;}
}

/* ---- 540px: phone ---- */
@media (max-width:540px){
  .wrap{padding:0 16px;}
  h1{font-size:clamp(24px,8vw,32px);}
  .section{padding:36px 0;}

  .grid{grid-template-columns:repeat(2,1fr);gap:10px;}
  .cats{grid-template-columns:1fr;gap:12px;}
  .cat-card img{aspect-ratio:16/9;}

  .filters{gap:8px;}
  .filters button{padding:8px 13px;font-size:12.5px;}
  .sort-row{flex-direction:column;align-items:flex-start;gap:8px;}
  .sort-row select{width:100%;}

  .trust{grid-template-columns:1fr;gap:14px;}
  footer .wrap{grid-template-columns:1fr;text-align:center;gap:26px;justify-items:center;}
  footer .logo{justify-content:center;}
  footer p.about{max-width:none;}
  footer .social{justify-content:center;}
  .foot-bottom{align-items:center;text-align:center;}
  .empty-shortcuts{flex-direction:column;align-items:stretch;}
  .empty-shortcuts a{text-align:center;}
  .success-actions{flex-direction:column;align-items:stretch;}
  .order-recap{width:100%;justify-content:space-between;}

  .btn{padding:13px 18px;min-height:46px;}
  .btn.sm{min-height:38px;}
  .qty-box button{min-width:36px;min-height:36px;}
  .add-btn,.card .add-btn{width:34px;height:34px;}
}

/* ---- 400px: small phones ---- */
@media (max-width:400px){
  .grid{grid-template-columns:1fr;}
  .card{flex-direction:row;}
  .card .thumb{width:104px;height:auto;aspect-ratio:1/1;flex-shrink:0;}
  .card .body{padding:10px 12px;}
  .card .price-row{padding-top:6px;}

  .logo{font-size:17px;}
  .hero .eyebrow{font-size:10.5px;}
  .pdp-price .price{font-size:22px;}
  .gallery-thumbs button{width:60px;height:60px;}
  .specs-table td:first-child{width:44%;}
}

/* ---- Touch-friendly hit areas on any coarse pointer (phones/tablets) ---- */
@media (hover:none) and (pointer:coarse){
  .btn,.filters button,.icon-btn,.qty-box button,.add-btn,nav.main a,.menu-toggle,.remove{min-height:40px;}
  .card .add-btn{min-height:36px;min-width:36px;}
}

/* ---- Respect device safe areas (notches / home indicators) ---- */
.topbar,header.site{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);}
footer{padding-bottom:env(safe-area-inset-bottom);}

/* ============================================================
   MOTION & POLISH LAYER
   Page-load choreography, scroll reveals, hover micro-interactions,
   ambient hero motion, floating WhatsApp dock, header transitions.
   Everything here degrades to a static (but still fully usable) UI
   when prefers-reduced-motion is on, via the global rule up top.
   ============================================================ */

/* ---------- page-load fade ---------- */
body{animation:pageIn .5s cubic-bezier(.2,.7,.2,1) both;}
@keyframes pageIn{from{opacity:0;}to{opacity:1;}}

/* ---------- smoother global easing on existing transitions ---------- */
.btn,.card,.cat-card,.filters button,nav.main a,.icon-btn svg,.qty-box button,
.social a,.empty-shortcuts a,.field input,.field textarea,.cart-item{
  transition-timing-function:cubic-bezier(.2,.7,.2,1);
}

/* ---------- header: gains a soft shadow once the page scrolls ---------- */
header.site{transition:box-shadow .25s ease;}
header.site.scrolled{box-shadow:0 6px 24px rgba(20,22,26,.08);}
.logo img{transition:transform .4s cubic-bezier(.34,1.56,.64,1);}
.logo:hover img{transform:rotate(8deg) scale(1.08);}

/* ---------- nav underline sweep ---------- */
nav.main a{position:relative;overflow:hidden;}
nav.main a::after{
  content:"";position:absolute;left:0;right:100%;bottom:-1px;height:2px;background:var(--accent);
  transition:right .28s cubic-bezier(.2,.7,.2,1);
}
nav.main a:hover::after{right:0;}
nav.main a.active::after{right:0;background:var(--accent);}

/* ---------- cart icon feedback ---------- */
.icon-btn svg{transition:transform .2s cubic-bezier(.34,1.56,.64,1);}
.icon-btn:hover svg{transform:translateY(-2px) scale(1.06);}
.cart-count{transition:transform .18s cubic-bezier(.34,1.56,.64,1);}
.cart-count.bump{animation:cartBump .45s cubic-bezier(.34,1.56,.64,1);}
@keyframes cartBump{0%{transform:scale(1);}35%{transform:scale(1.55);}100%{transform:scale(1);}}
.icon-btn.bump svg{animation:cartShake .45s ease;}
@keyframes cartShake{0%,100%{transform:rotate(0);}25%{transform:rotate(-12deg);}50%{transform:rotate(10deg) scale(1.08);}75%{transform:rotate(-6deg);}}

/* ---------- buttons: shine sweep + lift ---------- */
.btn{position:relative;overflow:hidden;isolation:isolate;transform:translateY(0);transition:transform .2s cubic-bezier(.2,.7,.2,1),background .18s ease,border-color .18s ease,box-shadow .2s ease;}
.btn::before{
  content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.35) 48%,rgba(255,255,255,.35) 54%,transparent 70%);
  transform:translateX(-120%);transition:transform .55s ease;pointer-events:none;
}
.btn:hover::before{transform:translateX(120%);}
.btn > *{position:relative;z-index:2;}
.btn:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(20,22,26,.14);}
.btn.whatsapp:hover{box-shadow:0 14px 28px rgba(29,168,81,.34);}
.btn:active{transform:translateY(0);}

/* ---------- product cards: lift, image zoom, quick-add pop ---------- */
.card{transform:translateY(0);transition:transform .28s cubic-bezier(.2,.7,.2,1),box-shadow .28s ease,border-color .2s ease;}
.card:hover{transform:translateY(-6px);box-shadow:0 20px 40px rgba(20,22,26,.1);}
.card .thumb{position:relative;}
.card .thumb img{transition:transform .5s cubic-bezier(.2,.7,.2,1);}
.card:hover .thumb img{transform:scale(1.07);}
.card .thumb::after{
  content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(20,22,26,.16),transparent 45%);
  opacity:0;transition:opacity .28s ease;pointer-events:none;
}
.card:hover .thumb::after{opacity:1;}
.card .add-btn{transition:transform .2s cubic-bezier(.34,1.56,.64,1),background .18s ease;}
.card .add-btn:hover{transform:scale(1.12) rotate(90deg);}
.card .add-btn:active{transform:scale(.9) rotate(90deg);}
.badge{animation:badgeIn .4s cubic-bezier(.34,1.56,.64,1) both;}
@keyframes badgeIn{from{opacity:0;transform:translateY(-6px) scale(.8);}to{opacity:1;transform:translateY(0) scale(1);}}

/* card entrance stagger — replays automatically whenever cards are (re)rendered,
   e.g. on shop filter/sort, since it's a CSS animation on newly-inserted nodes */
.grid .card{animation:cardIn .5s cubic-bezier(.2,.7,.2,1) backwards;}
.grid .card:nth-child(1){animation-delay:.02s;}
.grid .card:nth-child(2){animation-delay:.07s;}
.grid .card:nth-child(3){animation-delay:.12s;}
.grid .card:nth-child(4){animation-delay:.17s;}
.grid .card:nth-child(5){animation-delay:.22s;}
.grid .card:nth-child(6){animation-delay:.27s;}
.grid .card:nth-child(7){animation-delay:.32s;}
.grid .card:nth-child(8){animation-delay:.37s;}
.grid .card:nth-child(n+9){animation-delay:.4s;}
@keyframes cardIn{from{opacity:0;transform:translateY(18px) scale(.98);}to{opacity:1;transform:translateY(0) scale(1);}}

/* ---------- category tiles: richer hover ---------- */
.cat-card img{transition:transform .55s cubic-bezier(.2,.7,.2,1);}
.cat-card:hover img{transform:scale(1.08);}
.cat-card{box-shadow:0 0 0 rgba(20,22,26,0);}
.cat-card:hover{box-shadow:0 20px 40px rgba(20,22,26,.12);}
.cat-card .cat-label h3{transition:transform .25s ease;}
.cat-card:hover .cat-label h3{transform:translateX(4px);}

/* ---------- promo banner: subtle parallax shine ---------- */
.promo{position:relative;}
.promo img{transition:transform .6s cubic-bezier(.2,.7,.2,1);}
.promo:hover img{transform:scale(1.04);}

/* ---------- hero: ambient gradient motion + entrance ---------- */
.hero{position:relative;overflow:hidden;}
.hero::before,.hero::after{
  content:"";position:absolute;border-radius:50%;filter:blur(60px);z-index:0;pointer-events:none;
  opacity:.5;
}
.hero::before{
  width:420px;height:420px;background:radial-gradient(circle,rgba(26,114,197,.22),transparent 70%);
  top:-140px;right:-80px;animation:floatBlob 14s ease-in-out infinite;
}
.hero::after{
  width:320px;height:320px;background:radial-gradient(circle,rgba(66,216,232,.24),transparent 70%);
  bottom:-120px;left:8%;animation:floatBlob 18s ease-in-out infinite reverse;
}
@keyframes floatBlob{
  0%,100%{transform:translate(0,0) scale(1);}
  33%{transform:translate(24px,18px) scale(1.08);}
  66%{transform:translate(-18px,10px) scale(.95);}
}
.hero .wrap{position:relative;z-index:2;}
.hero .eyebrow,.hero h1,.hero p.lead,.hero-actions{
  animation:heroUp .7s cubic-bezier(.2,.7,.2,1) both;
}
.hero .eyebrow{animation-delay:.02s;}
.hero h1{animation-delay:.08s;}
.hero p.lead{animation-delay:.16s;}
.hero-actions{animation-delay:.24s;}
@keyframes heroUp{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}
/* opacity-only so it never fights with the hover-tilt transform below */
.hero .spec-card{animation:heroFadeIn .7s .2s cubic-bezier(.2,.7,.2,1) both;}
@keyframes heroFadeIn{from{opacity:0;}to{opacity:1;}}
.spec-card{transition:transform .35s cubic-bezier(.2,.7,.2,1);will-change:transform;}
.spec-card img{transition:transform .5s ease;}
.spec-card:hover img{transform:scale(1.03);}
.spec-list div{transition:background .15s ease;}
.spec-list div:hover{background:rgba(255,255,255,.05);}

/* ---------- trust strip: icon pop-in ---------- */
.trust div{transition:transform .2s ease;}
.trust div:hover{transform:translateY(-2px);}
.trust svg{transition:transform .3s cubic-bezier(.34,1.56,.64,1);}
.trust div:hover svg{transform:scale(1.15) rotate(-6deg);}

/* ---------- filters + sort ---------- */
.filters button{transition:transform .18s cubic-bezier(.34,1.56,.64,1),background .15s ease,border-color .15s ease,color .15s ease;}
.filters button:hover{transform:translateY(-2px);border-color:var(--ink);}
.filters button.active{transform:translateY(0);}

/* ---------- scroll-reveal (driven by app.js adding .in) ---------- */
[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);}
[data-reveal].in{opacity:1;transform:translateY(0);}
[data-reveal="left"]{transform:translateX(-28px);}
[data-reveal="left"].in{transform:translateX(0);}
[data-reveal="right"]{transform:translateX(28px);}
[data-reveal="right"].in{transform:translateX(0);}
[data-reveal="scale"]{transform:scale(.94);}
[data-reveal="scale"].in{transform:scale(1);}

/* ---------- footer socials + links ---------- */
.social a{transition:transform .2s cubic-bezier(.34,1.56,.64,1),border-color .15s ease,color .15s ease;}
.social a:hover{transform:translateY(-3px) scale(1.06);}
footer ul a{position:relative;transition:color .15s ease,padding-left .2s ease;}
footer ul a:hover{padding-left:6px;}

/* ---------- floating WhatsApp dock (injected by app.js on every page) ---------- */
.wa-float{
  position:fixed;right:22px;bottom:22px;z-index:120;width:56px;height:56px;border-radius:50%;
  background:#25D366;color:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 12px 28px rgba(37,211,102,.4);transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease;
  transform:scale(1);animation:waPop .5s .8s cubic-bezier(.34,1.56,.64,1) backwards;
}
.wa-float:hover{transform:scale(1.08);box-shadow:0 16px 34px rgba(37,211,102,.5);}
.wa-float::before{
  content:"";position:absolute;inset:0;border-radius:50%;background:#25D366;opacity:.55;
  animation:waPulse 2.4s ease-out infinite;z-index:-1;
}
@keyframes waPop{from{transform:scale(0);}to{transform:scale(1);}}
@keyframes waPulse{0%{transform:scale(1);opacity:.5;}100%{transform:scale(1.9);opacity:0;}}

/* ---------- back-to-top button (injected by app.js) ---------- */
.to-top{
  position:fixed;right:22px;bottom:88px;z-index:120;width:42px;height:42px;border-radius:50%;
  background:var(--accent-ink);color:#fff;border:none;display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;transform:translateY(10px);
  transition:opacity .25s ease,transform .25s ease,background .18s ease;box-shadow:0 10px 22px rgba(20,22,26,.22);
}
.to-top.show{opacity:1;pointer-events:auto;transform:translateY(0);}
.to-top:hover{background:var(--accent);}

@media (max-width:640px){
  .wa-float{width:50px;height:50px;right:14px;bottom:14px;}
  .to-top{width:38px;height:38px;right:16px;bottom:72px;}
}

/* ---------- cursor-following tilt on the hero spec-card (JS sets --mx/--my) ---------- */
@media (hover:hover) and (pointer:fine){
  .spec-card{transform:rotateX(calc((var(--my,.5) - .5) * -6deg)) rotateY(calc((var(--mx,.5) - .5) * 8deg));transform-style:preserve-3d;}
}

@media (prefers-reduced-motion: reduce){
  .wa-float::before{display:none;}
  .wa-float{animation:none;transform:scale(1);}
  [data-reveal]{opacity:1;transform:none;}
}

/* ---------- small branded touches ---------- */
::selection{background:var(--accent);color:#fff;}
html{scrollbar-width:thin;scrollbar-color:var(--accent) var(--paper);}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-track{background:var(--paper);}
::-webkit-scrollbar-thumb{background:#c7cfe0;border-radius:20px;border:2px solid var(--paper);}
::-webkit-scrollbar-thumb:hover{background:var(--accent);}