@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@600;700;800&family=Inter:wght@400;500;600;700&display=swap');

:root{
  /* Rebranded from orange to the real brand blue — variable names kept as
     --orange/-dark/-light (hundreds of usages throughout this theme) since this
     is a value swap, not a rename; renaming would touch every rule for no
     visible benefit. -dark/-light are derived to match the same relationship
     the orange shades had (dark = hover/richer, light = pale tinted background
     for badges/icon circles), not just linear lightness shifts, since blue's
     much darker base lightness (19% vs orange's 52%) made proportional deltas
     produce near-black/mid-blue instead of a usable hover/tint pair. */
  --orange:#14274E;
  --orange-dark:#0b1a38;
  --orange-light:#e9edf7;
  --ink:#14141c;
  --body:#54545f;
  --muted:#8b8b96;
  --line:#ececf0;
  --bg:#f6f6f8;
  --white:#fff;
  --red:#e63a2e;
  --gold:#ffa800;
  --navy:#0d0e14;
  --navy-2:#181a24;
  --radius:14px;
  --radius-sm:8px;
  --shadow:0 10px 30px rgba(20,20,28,.08);
  --shadow-lg:0 20px 50px rgba(20,20,28,.16);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;color:var(--body);background:var(--bg);line-height:1.55;font-size:15px}
h1,h2,h3,h4,.logo,.hero-sub,.tab,.btn,.add-cart,.finder-label{font-family:'Poppins','Inter',sans-serif}
a{text-decoration:none;color:inherit}
img{max-width:100%;display:block}
.container{max-width:1320px;margin:0 auto;padding:0 20px}
svg{display:block}

/* ===== Page loader =====
   Markup: partials-free, injected directly at the top of layout.blade.php's
   <body> so it's the very first thing painted — covers the page while images/
   fonts/the header's own queries finish, instead of a blank white flash.
   Faded out by a small inline script on window 'load' (adds .is-loaded). */
#creckkLoader{position:fixed;inset:0;z-index:9999;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;transition:opacity .45s ease,visibility .45s ease}
#creckkLoader.is-loaded{opacity:0;visibility:hidden;pointer-events:none}
.creckk-loader-logo{width:240px;height:auto;animation:creckkLoaderPulse 1.7s ease-in-out infinite}
.creckk-loader-bar{position:relative;display:block;width:120px;height:4px;border-radius:4px;background:var(--line);overflow:hidden}
.creckk-loader-bar span{position:absolute;top:0;left:0;height:100%;width:40%;border-radius:4px;background:var(--orange);animation:creckkLoaderSweep 1.15s cubic-bezier(.4,0,.2,1) infinite}
@keyframes creckkLoaderPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.94)}}
@keyframes creckkLoaderSweep{0%{left:-40%}100%{left:100%}}
@media(max-width:760px){
  .creckk-loader-logo{width:170px}
  .creckk-loader-bar{width:96px}
}

/* topbar */
.topbar{background:var(--navy);color:#c7c8d4;font-size:12.5px}
.topbar-inner{display:flex;justify-content:space-between;align-items:center;height:38px}
/* .offer sits on the dark navy topbar — var(--orange) is now a dark navy blue
   itself (see :root comment above), so it reads as near-invisible dark-on-dark
   here; the light tint variant keeps the same brand hue but is actually visible. */
.offer strong{color:var(--orange-light);font-weight:700}
.offer a{color:#fff;text-decoration:underline;font-weight:700;margin-left:4px}
#creckkOfferTextInner{transition:opacity .25s}
/* If the offer text is off, .top-links is the only .topbar-inner child left —
   space-between would otherwise drop it to the start (left) edge instead of
   its usual right-aligned spot. */
.top-links{margin-left:auto}
.top-links a{margin-left:22px;color:#9fa0ae;font-weight:500;transition:color .15s}
.top-links a:hover{color:#fff}

/* header */
.header{background:var(--white);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.header-inner{display:flex;align-items:center;gap:26px;height:64px}
.logo{font-size:28px;font-weight:800;letter-spacing:-.5px;color:var(--ink);line-height:1;display:flex;flex-direction:column}
.logo::after{content:"Auto Accessories";font-family:'Inter',sans-serif;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--orange);margin-top:3px}
.logo.light{color:#fff}
.logo.light::after{color:var(--orange)}
.searchbar{position:relative;flex:1;display:flex;align-items:stretch;height:36px;border:2px solid var(--ink);border-radius:10px;max-width:580px;transition:border-color .15s}
.searchbar:focus-within{border-color:var(--orange)}
.search-cat{position:relative;display:flex;align-items:center;gap:6px;background:#f6f6f8;padding:0 16px;font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;border-right:1px solid var(--line);border-top-left-radius:8px;border-bottom-left-radius:8px;cursor:pointer}
.searchbar input{flex:1;min-width:0;border:none;outline:none;padding:0 16px;font-size:14px;font-family:'Inter',sans-serif}
/* Clear (×) button — own flex slot between the input and Search button, only
   shown once the user has typed something (see main.js). */
.search-clear{display:none;align-items:center;justify-content:center;flex-shrink:0;width:34px;border:none;background:none;color:var(--muted);cursor:pointer}
.search-clear:hover{color:var(--ink)}
.search-clear.is-visible{display:flex}
.search-btn{background:var(--orange);color:#fff;border:none;padding:0 22px;font-weight:700;font-size:12px;letter-spacing:.5px;text-transform:uppercase;cursor:pointer;transition:background .15s;border-top-right-radius:8px;border-bottom-right-radius:8px;flex-shrink:0}
.search-btn:hover{background:var(--orange-dark)}

/* Search suggestions dropdown — creckk-theme's own custom dropdown (see
   main.js), not jQuery UI's autocomplete widget (whose stock renderer can't
   show a thumbnail per row). Appended to <body> and positioned via inline
   top/left/width computed from #itemSearch's real screen position (main.js),
   NOT position:absolute against .searchbar — .searchbar lives inside
   .header-inner, which gets a deliberate overflow-x:hidden guard on mobile
   (see header.blade.php's inline <style> comment) for an unrelated narrow-
   screen bug; being a descendant of that meant this dropdown was silently
   clipped/invisible on mobile despite otherwise-correct layout. This is the
   same reason #searchCatPanel/#locationPanel are siblings of <header>
   instead of nested where their trigger buttons are — same class of bug. */
.search-suggest{display:none;position:fixed;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:1000;max-height:420px;overflow-y:auto;padding:6px;font-family:'Inter',sans-serif}
.search-suggest.is-open{display:block}
.search-suggest-head{font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);padding:8px 12px 4px}
.search-suggest-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;text-decoration:none;color:var(--ink);cursor:pointer}
.search-suggest-item:hover,.search-suggest-item.is-active{background:var(--orange-light);color:var(--orange)}
.search-suggest-thumb{width:36px;height:36px;border-radius:8px;object-fit:contain;background:linear-gradient(135deg,#f7f7f9,#eef0f3);border:1px solid var(--line);flex-shrink:0}
.search-suggest-thumb-placeholder{width:36px;height:36px;border-radius:8px;background:var(--bg);flex-shrink:0}
.search-suggest-label{font-size:13px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.search-suggest-empty{padding:14px 12px;font-size:12.5px;color:var(--muted);text-align:center}
.help{text-align:right;line-height:1.3;white-space:nowrap}
.help-label{display:block;font-size:11.5px;color:var(--muted);font-weight:500}
.help-phone{font-weight:700;color:var(--orange);font-size:16px}
.header-icons{display:flex;align-items:center;gap:6px}
.hicon{color:var(--ink);transition:color .15s;display:flex;align-items:center;background:none;border:none;font:inherit;cursor:pointer;padding:0}
.hicon:hover{color:var(--orange)}
.hicon-box{position:relative;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s}
.hicon:hover .hicon-box{background:var(--orange-light)}
.hicon svg{width:21px;height:21px;display:block}
.hicon .badge{position:absolute;top:0;right:1px;background:var(--orange);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0 3px;border:2px solid #fff;line-height:1}

/* main nav */
.mainnav{background:var(--orange);box-shadow:0 2px 0 rgba(0,0,0,.04)}
.mainnav-inner{display:flex;align-items:center;height:27px;gap:0}
/* .seller-btn normally pushes itself to the far right (margin-left:auto below),
   leaving .mainnav-menu flush left — with no seller button rendered (logged-in
   users), that left-alignment leaves a lopsided empty gap on the right instead
   of using the freed-up space, so center the menu across the full bar instead. */
.mainnav-inner.mainnav-inner-centered{justify-content:center}
.mainnav-menu{list-style:none;display:flex;height:100%}
.mainnav-cat{position:relative;height:100%}
.mainnav-cat-btn{display:flex;align-items:center;gap:6px;height:100%;padding:0 16px;background:none;border:none;color:#fff;font-weight:700;font-size:13.5px;font-family:'Inter',sans-serif;cursor:pointer;transition:background .15s}
.mainnav-cat-btn .chev{font-size:11px;transition:transform .15s}
.mainnav-cat-btn[aria-expanded="true"]{background:rgba(0,0,0,.08)}
.mainnav-cat-btn[aria-expanded="true"] .chev{transform:rotate(180deg)}
.mainnav-cat:hover .mainnav-cat-btn{background:rgba(0,0,0,.08)}
.mainnav-dropdown{position:absolute;top:100%;left:0;min-width:220px;background:#fff;border-radius:0 0 var(--radius) var(--radius);box-shadow:var(--shadow-lg);border:1px solid var(--line);border-top:none;padding:8px;z-index:60}
.mainnav-dropdown[hidden]{display:none}
.mainnav-dropdown a{display:block;padding:9px 12px;border-radius:8px;color:var(--ink);font-weight:600;font-size:13px;transition:background .15s}
.mainnav-dropdown a:hover{background:var(--orange-light);color:var(--orange)}
/* width:max-content shrinks the panel to fit its widest row ("Shop By Car") instead
   of a fixed 280px — that both removes the leftover white space past the text and,
   combined with .cat-item's own justify-content:space-between below, makes every
   row's chevron land at that same right edge (the panel's real width), rather than
   ragged at a different x per row depending on that row's own text length. */
.cat-panel{position:absolute;top:calc(100% + 10px);left:0;width:max-content;min-width:200px;max-width:280px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-lg);border:1px solid var(--line);padding:8px;z-index:60}
.cat-panel[hidden]{display:none}
/* Desktop dropdown doesn't need a title/close bar (click-outside or the toggle
   itself closes it) — only shown on mobile, where the panel becomes a centered
   modal (see the mobile override below). */
#searchCatPanelHead{display:none}
.cat-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;border-radius:8px;color:var(--ink);font-weight:600;font-size:13.5px;transition:background .15s}
.cat-item:hover{background:var(--orange-light);color:var(--orange)}
.cat-item-box{display:flex;align-items:center;gap:12px;min-width:0}
.cat-item .cat-item-ic{width:34px;height:34px;border-radius:8px;background:var(--orange-light);color:var(--orange);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cat-item .cat-item-ic svg{width:18px;height:18px}
.cat-item .chev{color:var(--muted);font-size:12px;flex-shrink:0;transition:transform .15s}
.cat-item.active{background:var(--orange-light);color:var(--orange)}
.cat-item.active .chev{transform:rotate(90deg)}
/* Desktop: breaks out of the list's normal flow into a flyout beside the whole
   panel (anchored to .cat-panel's own position:absolute box via left:100%) —
   only the active category's children show, swapped on hover. */
/* width:max-content — same fix as .cat-panel: shrink to fit the widest row
   ("Maruti Suzuki") instead of a fixed 260px, so justify-content:space-between
   on .cat-child-item puts every chevron at that same (near) edge, close to the
   text, rather than stranded at a fixed width unrelated to the label lengths. */
.cat-children{position:absolute;top:0;left:100%;margin-left:10px;width:max-content;min-width:180px;max-width:260px;max-height:420px;overflow-y:auto;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-lg);border:1px solid var(--line);padding:8px;display:flex;flex-direction:column;gap:2px}
.cat-children[hidden]{display:none}
.cat-child-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:8px;color:var(--ink);font-weight:500;font-size:12.5px;transition:background .15s}
.cat-child-item:hover{background:var(--orange-light);color:var(--orange)}
.cat-child-item .chev{color:var(--muted);font-size:11px;flex-shrink:0;transition:transform .15s}
.cat-child-item.active{background:var(--orange-light);color:var(--orange)}
.cat-child-item.active .chev{transform:rotate(90deg)}
/* Icon + label kept as one unit so justify-content:space-between above (which
   places the chevron) only opens a gap before the chevron, not between the icon
   and its own label too — that's what "space between" would otherwise do across
   all 3 flex children (icon, label, chevron) rather than just the last one. */
.cat-child-box{display:flex;align-items:center;gap:8px;min-width:0}
.cat-child-ic{width:38px;height:38px;border-radius:8px;background:var(--orange-light);flex-shrink:0;overflow:hidden;display:block}
/* Real brand logos (Shop By Car's children) — object-fit:contain instead of
   cover so the actual logo shows in full rather than getting cropped to fill a
   square, and no colored badge behind it, since brand marks read correctly on a
   plain background, not floating inside an orange circle. */
.cat-child-ic-brand{background:none;border-radius:0;width:32px;height:32px}
/* padding:9px 20px made this taller than .mainnav-inner's own height (27px,
   halved from the theme's original 54px per earlier request), so it overflowed
   above/below the bar instead of sitting centered inside it. */
.seller-btn{margin-left:auto;background:var(--ink);color:#fff;font-weight:700;font-size:11.5px;letter-spacing:.3px;padding:4px 16px;border-radius:6px;transition:transform .15s,background .15s;line-height:1.3}
.seller-btn:hover{background:#000;transform:translateY(-1px)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:8px;border:none;border-radius:9px;padding:14px 28px;font-weight:700;font-size:13px;letter-spacing:.4px;text-transform:uppercase;cursor:pointer;transition:transform .15s,box-shadow .15s}
.btn-dark{background:var(--ink);color:#fff}
.btn-dark:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.btn-light{background:#fff;color:var(--ink)}
.btn-light:hover{transform:translateY(-2px)}
.btn-orange{background:var(--orange);color:#fff}
.btn-orange:hover{background:var(--orange-dark);transform:translateY(-2px)}

/* hero row */
.hero-row{display:grid;grid-template-columns:1fr 340px;gap:14px;margin-top:16px}
.hero{position:relative;background:linear-gradient(135deg,#eef0f3,#f7f7f9);border-radius:var(--radius);padding:50px;display:flex;align-items:center;overflow:hidden;min-height:380px;isolation:isolate}
.hero::before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,#dfe2e7 1.5px,transparent 1.5px);background-size:22px 22px;opacity:.5;z-index:-1}
.hero-kicker{display:inline-block;color:var(--orange);font-weight:700;font-size:14px;background:var(--orange-light);padding:6px 14px;border-radius:20px;letter-spacing:.3px}
.hero h1{font-size:44px;line-height:1.08;font-weight:800;margin:18px 0 12px;letter-spacing:-1.2px;color:var(--ink);text-transform:uppercase}
.hero-sub{font-size:13.5px;color:var(--body);font-weight:600;margin-bottom:26px}
.hero-sub strong{color:var(--orange)}
.hero-art{margin-left:auto;position:relative;width:300px;height:300px;flex-shrink:0}
.art-glow{position:absolute;inset:8%;border-radius:50%;background:radial-gradient(circle,rgba(239,95,28,.14),transparent 72%)}
.art-ring{position:absolute;inset:3%;border:2px dashed rgba(20,20,28,.10);border-radius:50%}
.art-shadow{position:absolute;bottom:8%;left:50%;transform:translateX(-50%);width:56%;height:20px;background:radial-gradient(ellipse,rgba(15,15,20,.24),transparent 72%);border-radius:50%}
.collage{position:absolute;inset:0}
.collage .part{position:absolute;filter:drop-shadow(0 12px 16px rgba(20,20,28,.16));color:var(--ink)}
.collage .p-wheel{width:222px;height:222px;top:28px;left:40px;color:#22232c}
.collage .p-disc{width:128px;height:128px;bottom:30px;left:-6px;color:var(--red);opacity:.92}
.hero-dots{position:absolute;bottom:22px;left:50px;display:flex;gap:8px}
.dot{width:9px;height:9px;border-radius:50%;background:#d5d8de;cursor:pointer}
.dot.on{background:var(--orange);width:22px;border-radius:5px}

.side-banners{display:grid;grid-template-rows:1fr 1fr;gap:20px}
.side-banner{position:relative;border-radius:var(--radius);padding:24px;display:flex;flex-direction:column;justify-content:center;overflow:hidden;isolation:isolate}
.side-banner .sb-icon{position:absolute;right:-18px;bottom:-18px;width:130px;height:130px;opacity:.16;z-index:-1}
.side-banner.dark{background:radial-gradient(circle at 80% 20%,#232635,var(--navy));color:#fff}
.side-banner.dark .sb-icon{color:#fff}
.side-banner.gold{background:linear-gradient(135deg,var(--orange),#2152b5);color:#fff}
.side-banner.gold .sb-icon{color:#fff}
.sb-price{font-size:12.5px;font-weight:700;opacity:.85;text-transform:uppercase;letter-spacing:.4px}
.side-banner h3{font-size:23px;font-weight:800;margin:6px 0;text-transform:uppercase;letter-spacing:-.3px}
.sb-desc{font-size:12.5px;opacity:.85;margin-bottom:10px}
.sb-link{font-weight:700;font-size:12px;text-decoration:underline;text-underline-offset:3px;text-transform:uppercase;letter-spacing:.5px}
.sb-link.light{color:#fff}

/* car select (header) */
.car-select{position:relative}
.car-select-label{font-size:11px;font-weight:700;color:var(--ink);line-height:1.15;text-align:left;margin-left:2px}
.car-select-label small{display:block;color:var(--muted);font-weight:500;font-size:10px}
.car-badge{position:absolute;bottom:0;right:1px;width:15px;height:15px;background:#12b76a;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid #fff}
.car-badge[hidden]{display:none}
.car-badge svg{width:9px;height:9px}
.car-panel{position:absolute;top:calc(100% + 14px);right:0;width:280px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:18px;display:flex;flex-direction:column;gap:10px;z-index:60;border:1px solid var(--line)}
.car-panel[hidden]{display:none}
.car-panel-head{font-weight:700;font-size:13.5px;color:var(--ink);margin-bottom:2px}
.car-panel .plate{width:100%}
.car-panel .plate input{flex:1;width:auto}
.car-panel-or{color:var(--muted);font-size:12px;font-weight:600;text-align:center}
.car-panel select{height:42px;border:1px solid var(--line);border-radius:8px;padding:0 14px;font-size:13px;background:#fff;font-family:'Inter',sans-serif;color:var(--ink);width:100%}
.car-panel-btn{width:100%;padding:12px;margin-top:2px}

.plate{display:flex;align-items:center;background:#fff;border-radius:8px;overflow:hidden;height:42px;box-shadow:var(--shadow)}
.plate input{border:none;outline:none;padding:0 12px;font-size:15px;letter-spacing:1px;width:100%;font-family:'Inter',sans-serif}
.plate-highlight{border:2px solid var(--orange);box-shadow:0 0 0 3px rgba(239,95,28,.15)}

/* top categories */
.category-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.category-tile{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:28px 16px;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;transition:all .15s}
.category-tile:hover{border-color:var(--orange);transform:translateY(-4px);box-shadow:var(--shadow)}
.category-tile .cat-ic{width:58px;height:58px;border-radius:50%;background:var(--orange-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.category-tile .cat-ic svg{width:26px;height:26px}
.category-tile span:last-child{font-size:13px;font-weight:700;color:var(--ink)}

/* services */
.services{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:18px}
.service{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:flex;align-items:center;gap:14px;transition:box-shadow .15s,border-color .15s;min-width:0}
.service:hover{box-shadow:var(--shadow);border-color:transparent}
.svc-ic{width:46px;height:46px;border-radius:50%;background:var(--orange-light);color:var(--orange);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.svc-ic svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8}
.service>div{min-width:0}
.service strong{display:block;font-size:14px;color:var(--ink);overflow-wrap:break-word}
.service small{color:var(--muted);font-size:12.5px}

/* product sections */
.product-section{margin-top:26px}
.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;flex-wrap:wrap;gap:12px}
.section-head h2{font-size:26px;font-weight:800;color:var(--ink);letter-spacing:-.5px}
.tabs{display:flex;gap:8px;flex-wrap:wrap}
.tab{background:#fff;border:1px solid var(--line);border-radius:24px;padding:9px 18px;font-size:12.5px;font-weight:700;color:var(--body);cursor:pointer;text-transform:uppercase;letter-spacing:.3px;transition:all .15s}
.tab.active,.tab:hover{background:var(--orange);color:#fff;border-color:var(--orange)}
.arrows{display:flex;gap:8px}
.arrow{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:#fff;font-size:16px;cursor:pointer;transition:all .15s}
.arrow:hover{background:var(--orange);border-color:var(--orange);color:#fff}
.see-more{font-size:13px;font-weight:700;color:var(--ink);display:inline-flex;align-items:center;gap:6px;transition:color .15s}
.see-more:hover{color:var(--orange)}
.see-more span{transition:transform .15s}
.see-more:hover span{transform:translateX(3px)}

.product-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.card{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:box-shadow .2s,border-color .2s,transform .2s}
.card:hover{box-shadow:var(--shadow-lg);border-color:transparent;transform:translateY(-4px)}
.card-img{position:relative;aspect-ratio:1/1;width:88%;margin:8px auto 0;border-radius:10px;background:linear-gradient(135deg,#f7f7f9,#eef0f3);display:flex;align-items:center;justify-content:center}
.card-img svg{width:60%;height:60%;max-width:110px;max-height:110px;stroke-width:1.7}
.card .card-img{aspect-ratio:auto;height:160px}
.disc{position:absolute;top:10px;left:10px;background:var(--red);color:#fff;font-size:9px;font-weight:800;padding:3px 6px;border-radius:6px;letter-spacing:.3px;z-index:1}
.disc.new{background:#12b76a}
.wish{position:absolute;top:10px;right:10px;width:24px;height:24px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);cursor:pointer;transition:transform .15s;z-index:1}
.wish:hover{transform:scale(1.1)}
/* Real heart emoji instead of an SVG outline — swap glyph (not just color) between
   saved/unsaved, since emoji ignore CSS color/fill. Both spans render always; only
   the one matching the current add-wishlist/remove-wishlist state is shown — this
   stays correct after wishlist.js toggles that class client-side too, no extra JS. */
/* Explicit emoji font stack — without it, some Windows/Chrome combos fall back
   to a generic symbol font for these glyphs (text presentation instead of
   emoji presentation), which renders as a plain outline with a stray
   underline/dash artifact under the heart instead of a clean glyph. */
.wish-emoji{display:none;font-size:13px;line-height:1;font-family:'Segoe UI Emoji','Apple Color Emoji','Noto Color Emoji',sans-serif;font-style:normal;text-decoration:none}
.wish.add-wishlist .wish-emoji-off{display:block}
.wish.remove-wishlist .wish-emoji-on{display:block}
.card-body{padding:5px 10px}
.card-title{font-size:11.5px;line-height:1.3;height:15px;overflow:hidden;margin:0 0 3px;white-space:nowrap;text-overflow:ellipsis;color:var(--ink);font-weight:500}
.price{display:flex;align-items:baseline;gap:8px;margin-bottom:0}
.price .now{font-size:12px;font-weight:800;color:var(--ink);font-family:'Poppins',sans-serif}
.price .was{font-size:9px;color:#b9b9c2;text-decoration:line-through}
.add-cart{margin-top:3px;width:100%;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:4px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;cursor:pointer;transition:all .15s}
.add-cart:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.add-cart.dark{background:var(--ink);color:#fff;border-color:var(--ink)}
.add-cart.added-to-cart{background:#e9f9ee;color:#12b76a;border-color:#b8ecca;cursor:default}
.add-cart.added-to-cart:hover{background:#e9f9ee;color:#12b76a;border-color:#b8ecca}
.add-cart.dark:hover{background:var(--orange);border-color:var(--orange)}

/* promo banners */
.promo{position:relative;border-radius:var(--radius);padding:30px;min-height:160px;display:flex;flex-direction:column;justify-content:center;overflow:hidden;isolation:isolate}
.promo .pr-icon{position:absolute;right:-20px;bottom:-20px;width:150px;height:150px;opacity:.08;z-index:-1;color:var(--ink)}
.promo.light{background:linear-gradient(135deg,#f2f3f5,#e8eaed)}
.pr-price{font-size:12.5px;font-weight:700;opacity:.8;text-transform:uppercase;letter-spacing:.4px}
.promo h3{font-size:25px;font-weight:800;margin:8px 0 2px;text-transform:uppercase;letter-spacing:-.4px}
.pr-desc{font-size:13px;opacity:.85;margin-bottom:12px}

/* seasonal promo grid */
.promo-grid2{display:grid;grid-template-columns:1fr 1.5fr 1fr;gap:14px;margin-top:14px}
.pg2-stack{display:grid;grid-template-rows:1fr 1fr;gap:14px}
.promo.small{padding:18px 20px;min-height:0}
.promo.small h3{font-size:16px;margin:2px 0 0}
.promo.small .pr-price{font-size:10.5px}
.promo.small .sb-link{font-size:11px;margin-top:6px;display:inline-block}
.promo-tall{position:relative;border-radius:var(--radius);background:radial-gradient(circle at 20% 20%,#232635,var(--navy) 70%);color:#fff;padding:36px 32px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;overflow:hidden;isolation:isolate}
.promo-tall .pr-icon{position:absolute;right:-30px;bottom:-30px;width:220px;height:220px;opacity:.1;color:#fff;z-index:-1}
.promo-tall .studio-kicker{margin-bottom:10px}
.promo-tall h3{font-size:24px;font-weight:800;text-transform:uppercase;letter-spacing:-.4px;margin-bottom:10px}
.promo-tall p{font-size:13px;color:#9a9bab;margin-bottom:18px;max-width:260px}
/* 5-panel banner boxes (pure images, no text) — height was previously set inline
   in the blade template, which beats any @media rule regardless of specificity,
   so it could never shrink on mobile. Moved here as classes instead. */
.p5-side{padding:0;height:151px}
.p5-center{padding:0;height:320px}

/* best deals of the week */
.deals-row{display:grid;grid-template-columns:240px 1fr;gap:14px;align-items:stretch}
.deal-feature{position:relative;height:100%;border-radius:var(--radius);background:radial-gradient(circle at 85% 15%,#232635,var(--navy) 70%);color:#fff;padding:28px 26px;text-align:left;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;overflow:hidden;isolation:isolate}
.deal-feature .pr-icon{position:absolute;right:-24px;bottom:-24px;width:170px;height:170px;opacity:.12;color:#fff;z-index:-1}
.deal-feature .disc{top:16px;left:16px}
.deal-feature .pr-price{color:#fff}
.deal-feature .deal-info{width:100%}
.deal-feature h4{font-size:18px;font-weight:800;color:#fff;text-transform:uppercase;letter-spacing:-.3px;margin:6px 0 14px;max-width:85%}
.deal-feature .price{justify-content:flex-start;margin-bottom:18px}
.deal-feature .price .now{color:#fff;font-size:18px}
.deal-feature .price .was{color:#9a9bab}
.deal-feature .add-cart.dark{width:auto;padding:11px 26px;background:transparent;border:2px solid rgba(255,255,255,.55);color:#fff}
.deal-feature .add-cart.dark:hover{background:#fff;color:var(--ink);border-color:#fff}
.countdown{display:flex;gap:8px;margin-bottom:16px}
.countdown div{background:var(--orange-light);border-radius:8px;padding:8px 4px;min-width:44px}
.countdown strong{display:block;font-size:16px;color:var(--ink);font-family:'Poppins',sans-serif;font-weight:800}
.countdown small{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-weight:600}
.deal-feature .countdown div{background:rgba(255,255,255,.1)}
.deal-feature .countdown strong{color:#fff}
.deal-feature .countdown small{color:#9a9bab}
.deals-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}

/* recent products */
.recent-row{display:grid;grid-template-columns:1fr 240px;gap:14px}
.recent-grid{grid-template-columns:repeat(4,1fr)}
.recent-visual{height:100%}
.recent-visual h3{font-size:22px}

/* combo products */
.combo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.combo-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;text-align:center;transition:all .15s}
.combo-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px);border-color:transparent}
.combo-card .card-img{border-radius:10px;margin-bottom:16px}
.combo-card h4{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:10px;min-height:38px}
.combo-price{font-family:'Poppins',sans-serif;font-weight:800;font-size:19px;color:var(--ink);margin-bottom:16px}
.btn-view{display:block;width:100%;background:var(--ink);color:#fff;border:none;border-radius:8px;padding:12px;font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;cursor:pointer;transition:background .15s}
.btn-view:hover{background:var(--orange)}

/* shared kicker badge (used on promo-tall) */
.studio-kicker{display:inline-block;color:var(--orange);text-transform:uppercase;letter-spacing:2px;font-size:11px;font-weight:700;background:rgba(239,95,28,.15);padding:5px 12px;border-radius:20px}

/* shop by brand */
.brand-shop{margin-top:26px}
.brand-shop-row{overflow:hidden;padding-top:8px;padding-bottom:8px}
.brand-track{display:flex;gap:14px;width:max-content;animation:brandScroll 30s linear infinite}
.brand-shop-row:hover .brand-track{animation-play-state:paused}
.brand-chip{flex:0 0 auto;min-width:160px;height:78px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-family:'Poppins',sans-serif;font-weight:800;font-size:17px;color:var(--ink);letter-spacing:.2px;transition:border-color .15s,color .15s,box-shadow .15s,transform .15s}
.brand-chip:hover{border-color:var(--orange);color:var(--orange);transform:translateY(-3px);box-shadow:var(--shadow)}
@keyframes brandScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* brand story */
.story-row{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;margin-top:26px;border-radius:var(--radius);overflow:hidden}
.story-col{background:radial-gradient(circle at 20% 20%,#1c1e29,var(--navy) 70%);padding:38px 32px}
.story-col:nth-child(2){background:radial-gradient(circle at 80% 30%,#20222d,var(--navy) 70%)}
.story-col:nth-child(3){background:radial-gradient(circle at 30% 80%,#1a1c26,var(--navy) 70%)}
/* Same dark-on-dark issue as .offer above — .story-col has a dark navy
   background, so this needs the light tint of the brand blue, not var(--orange)
   itself, to actually be visible. */
.story-kicker{display:block;text-transform:uppercase;letter-spacing:2px;font-size:12px;color:var(--orange-light);font-weight:700;margin-bottom:8px}
.story-col h3{font-size:27px;font-weight:800;text-transform:uppercase;letter-spacing:-.4px;color:#fff}
/* Same dark-on-dark issue as .story-kicker above. */
.story-col h3 span{color:var(--orange-light)}
.story-col p{margin-top:12px;color:#9a9bab;font-size:13.5px;line-height:1.7;max-width:260px}

/* cinematic closing banner */
.cinematic{position:relative;background:radial-gradient(circle at 20% 35%,#1b1d28,var(--navy) 55%);overflow:hidden;padding:36px 20px;margin-top:32px;isolation:isolate}
.cinematic-icon{position:absolute;right:-90px;top:50%;transform:translateY(-50%);width:260px;height:260px;color:rgba(255,255,255,.05)}
.cinematic::after{content:"";position:absolute;left:-140px;bottom:-180px;width:440px;height:440px;background:radial-gradient(circle,rgba(239,95,28,.18),transparent 70%);z-index:-1}
.cinematic-inner{max-width:640px;margin:0 auto;text-align:center;position:relative;z-index:1}
/* Same dark-on-dark issue as .offer/.story-kicker above — .cinematic has a dark
   navy background. */
.cinematic-kicker{display:inline-block;color:var(--orange-light);text-transform:uppercase;letter-spacing:3px;font-size:12px;font-weight:700;margin-bottom:8px}
.cinematic h2{color:#fff;font-size:24px;font-weight:800;line-height:1.15;letter-spacing:-1px;text-transform:uppercase;margin-bottom:14px}
.cinematic .btn{padding:10px 20px;font-size:11px}
.btn-outline{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.55)}
.btn-outline:hover{background:#fff;color:var(--ink);border-color:#fff;transform:translateY(-2px)}
.btn-outline span{display:inline-block;transition:transform .15s}
.btn-outline:hover span{transform:translateX(4px)}
.cinematic + .footer{margin-top:0}

/* footer */
.footer{background:var(--navy);color:#9a9bab;margin-top:32px;padding-top:36px}
.footer-inner{display:grid;grid-template-columns:1.8fr 1fr 1fr 1fr 1fr;gap:28px;padding-bottom:34px}
/* Plain pass-through on desktop — .foot-links-wrap's own children (Useful Links,
   Categories, Contact us) become direct grid items of .footer-inner, same as if
   the wrapper didn't exist. Only the mobile breakpoint below turns this wrapper
   into a real box so it can multi-column-pack them instead. */
.foot-links-wrap{display:contents}
.foot-col p{font-size:13px;margin-top:14px;line-height:1.8;max-width:260px}
.foot-col h4{color:#fff;font-size:15px;margin-bottom:16px;font-weight:700}
.foot-col a{display:block;font-size:13px;margin-bottom:10px;color:#9a9bab;transition:color .15s}
.foot-col a:hover{color:var(--orange)}
.foot-social{display:flex;flex-wrap:wrap;gap:10px;margin-top:2px}
.foot-social a{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center;color:#c7c8d4}
.foot-social a:hover{background:var(--orange);color:#fff}
.foot-social svg{width:16px;height:16px;fill:currentColor}

.foot-app{margin-top:22px}
.foot-app-label{display:block;font-size:11.5px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.4px;margin-bottom:10px}
/* Badge artwork is only 130x38px natively — capping at that width instead of
   stretching it wider keeps it crisp instead of visibly upscaled/blurry. */
.foot-app-btns{display:flex;flex-direction:column;gap:8px;max-width:130px}
/* Real Google Play / App Store badge artwork (admin-uploaded, already has its own
   dark background + rounded corners baked in) — the button itself is just a
   transparent, lifting wrapper, not a second box drawn around it. */
.app-btn{display:block;border-radius:8px;overflow:hidden;box-shadow:0 4px 14px rgba(0,0,0,.25);transition:transform .18s,box-shadow .18s}
.app-btn:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.35)}
.app-btn svg{display:block;width:100%;height:auto}

.foot-accordion summary{cursor:default;display:flex;align-items:center;justify-content:space-between;list-style:none}
.foot-accordion summary::-webkit-details-marker{display:none}
.foot-accordion summary h4{margin-bottom:0}
.foot-chev{display:none;color:#9a9bab;font-size:12px;transition:transform .2s}
.foot-links{display:flex;flex-direction:column;margin-top:16px}

.foot-contact{display:flex;align-items:center;gap:10px}
.foot-contact-ic{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center;color:var(--orange);flex-shrink:0}
.foot-contact-ic svg{width:15px;height:15px}

.foot-bottom{border-top:1px solid rgba(255,255,255,.08);text-align:center;padding:18px;font-size:12.5px;color:#6d6e7d}

/* responsive */
@media(max-width:980px){
  .hero-row{grid-template-columns:1fr}
  .side-banners{grid-template-columns:1fr 1fr;grid-template-rows:none}
  .product-grid{grid-template-columns:repeat(3,1fr)}
  .card .card-img{height:140px}
  .footer-inner{grid-template-columns:1fr 1fr}
  .story-row{grid-template-columns:1fr}
  .cinematic-icon{width:220px;height:220px}
  .promo-grid2{grid-template-columns:1fr}
  .pg2-stack{grid-template-columns:1fr 1fr;grid-template-rows:none}
  .deals-row{grid-template-columns:1fr}
  .deals-grid{grid-template-columns:repeat(2,1fr)}
  .combo-grid{grid-template-columns:repeat(2,1fr)}
  .recent-row{grid-template-columns:1fr}
  .recent-grid{grid-template-columns:repeat(3,1fr);order:2}
  .recent-visual{min-height:180px;order:1}
}
@media(max-width:760px){
  .topbar,.help,.mainnav{display:none}
  .header-inner{flex-wrap:wrap;justify-content:space-between;height:auto;padding-top:clamp(8px,2.5vw,14px);padding-bottom:clamp(8px,2.5vw,14px);gap:clamp(4px,2vw,10px)}
  .header{position:sticky;top:0}
  .logo{font-size:clamp(23px,7vw,28px);flex-shrink:0}
  .logo::after{font-size:clamp(8px,2.3vw,10px);letter-spacing:1px;margin-top:1px}
  .searchbar{order:3;max-width:100%;width:100%;min-width:0;flex-basis:100%;height:38px;border-width:1.5px}
  .searchbar input{min-width:0;padding:0 8px;font-size:12px}
  .search-cat{padding:0 6px;font-size:9.5px;gap:2px}
  .search-cat .caret{font-size:8px}
  .search-btn{padding:0 8px;font-size:10px}
  .search-clear{width:28px}
  .search-clear svg{width:13px;height:13px}
  /* .searchbar is already full-width on mobile (see above), and
     .search-suggest tracks it exactly (left:0;right:0 against .searchbar's
     own position:relative) — just touch-target sizing left to do here. */
  .search-suggest{max-height:60vh}
  .search-suggest-item{padding:10px}
  .search-suggest-thumb,.search-suggest-thumb-placeholder{width:40px;height:40px}
  /* width:max-content (used on desktop to remove excess white space) triggers a
     browser intrinsic-sizing bug here: #searchCatPanel now has ~45 descendants
     total (8 categories + their .cat-children + 29 sibling .cat-grandchildren
     panels for Shop By Car's brands), and the max-content computation over that
     tree was blowing panel content out thousands of pixels off-screen on mobile.
     A fixed width sidesteps the intrinsic-sizing pass entirely. */
  /* Centered fixed modal (same pattern as #locationPanel) rather than anchored
     under the toggle — #searchCatPanel is now a body-level sibling of <header>,
     not a descendant of #searchCatToggle, so "anchored under the toggle" isn't
     meaningful here without JS-computed positioning, and centering sidesteps
     needing that on mobile entirely. */
  #searchCatPanel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:calc(100vw - 32px);max-width:340px;max-height:calc(100vh - 140px);overflow-y:auto;padding:4px;display:flex;flex-direction:column;gap:4px}
  /* An ID selector (#searchCatPanel above) has higher specificity than the base
     .cat-panel[hidden]{display:none} rule, so without this it stayed visible
     regardless of the hidden attribute — same "author display rule beats
     [hidden]" class of bug seen elsewhere in this file, just via specificity
     this time instead of source order. */
  #searchCatPanel[hidden]{display:none}
  #searchCatPanelHead{display:flex;align-items:center;justify-content:space-between;padding:10px 10px 10px 14px;margin:-4px -4px 4px;border-bottom:1px solid var(--line);font-weight:700;font-size:14px;color:var(--ink);position:sticky;top:-4px;background:#fff;z-index:1}
  #searchCatPanelClose{background:none;border:none;font-size:22px;line-height:1;color:var(--muted);cursor:pointer;padding:4px 6px}
  .cat-item{background:none;justify-content:space-between;gap:8px;padding:4px 6px;font-size:11px}
  .cat-item:hover{background:none}
  .cat-item-box{background:var(--orange-light);padding:4px 8px;border-radius:6px;gap:6px}
  .cat-item:hover .cat-item-box{background:#cfd9ed}
  /* width/height:auto here relied on the icon always being an inline SVG (which
     sizes sensibly from its own viewBox) — the real category icons are uploaded
     <img> raster files, and width:100% (set inline on the img) resolving against
     an "auto" (content-sized) parent falls back to the image's raw natural pixel
     dimensions, which can be enormous for an unoptimized admin upload. That's what
     was blowing the whole mobile category list out to thousands of pixels tall. */
  .cat-item .cat-item-ic{background:none;width:24px;height:24px;color:var(--orange)}
  .cat-item .cat-item-ic svg{width:13px;height:13px}
  .cat-item .chev{font-size:10px}
  /* No room for a side flyout on a phone screen — children expand inline as an
     accordion instead, right under their parent, pushing the rest of the list
     down within the panel's own scroll area. */
  .cat-children{position:static;left:auto;top:auto;margin-left:0;width:100%;max-width:none;max-height:none;overflow:visible;background:none;box-shadow:none;border:none;border-radius:0;padding:2px 0 4px 22px;gap:0}
  .cat-grandchildren{padding-left:44px}
  .cat-child-item{padding:6px 8px;font-size:11px;gap:8px}
  .cat-child-item .chev{font-size:10px}
  .cat-child-ic{width:28px;height:28px;border-radius:6px}
  .header-icons{gap:clamp(0px,1vw,6px);flex-shrink:0}
  .hicon-box{width:clamp(38px,11vw,42px);height:clamp(38px,11vw,42px)}
  .hicon svg{width:52%;height:52%}
  .car-select-label{display:none}
  .hicon .badge{width:clamp(14px,4vw,17px);height:clamp(14px,4vw,17px);min-width:clamp(14px,4vw,17px);font-size:clamp(8px,2vw,10px);border-width:1.5px}
  .services{grid-template-columns:repeat(4,1fr);gap:8px}
  .service{flex-direction:column;text-align:center;padding:14px 6px;gap:8px}
  .svc-ic{width:38px;height:38px}
  .svc-ic svg{width:17px;height:17px}
  .service strong{font-size:11px;line-height:1.3}
  .service small{font-size:9.5px;line-height:1.3}
  .product-grid{grid-template-columns:repeat(2,1fr);gap:12px}
  .card .card-img{height:110px}
  .combo-card{padding:14px;min-width:0}
  .combo-card h4{overflow-wrap:break-word;word-break:break-word}
  .combo-grid{gap:10px}
  .promo-row{grid-template-columns:1fr}
  .hero-row{grid-template-columns:1fr clamp(84px,26vw,110px);margin-top:12px;gap:8px}
  .hero{padding:7px;flex-direction:column;align-items:flex-start;min-height:0}
  .hero h1{font-size:clamp(11px,3.4vw,15px);margin:3px 0 2px;line-height:1.08}
  .hero-kicker{font-size:clamp(7px,2.1vw,8.5px);padding:2px 5px}
  .hero-sub{font-size:clamp(6.5px,2vw,9px);margin-bottom:4px}
  .hero .btn{padding:4px 9px;font-size:clamp(8px,2.3vw,10px)}
  .hero-copy{width:100%}
  .hero-art{margin:2px auto 0;width:clamp(34px,10vw,56px);height:clamp(34px,10vw,56px)}
  .collage{transform:scale(.11);transform-origin:top left}
  .hero-dots{left:7px;bottom:3px}
  .hero-dots .dot{width:5px;height:5px}
  .side-banners{grid-template-columns:1fr;grid-template-rows:1fr 1fr;gap:6px}
  .side-banner{padding:8px}
  .side-banner .sb-icon{width:50px;height:50px;right:-8px;bottom:-8px}
  .side-banner h3{font-size:clamp(9.5px,2.8vw,12px);margin:1px 0;line-height:1.1}
  .sb-price{font-size:clamp(6.5px,1.8vw,8px)}
  .sb-desc{font-size:clamp(6.5px,1.8vw,8px);margin-bottom:2px}
  .sb-link{font-size:clamp(6.5px,1.8vw,8px)}
  .finder-inner{padding:10px 14px;gap:6px}
  .finder-label{font-size:11px;gap:5px;width:100%}
  .finder-label svg{width:14px;height:14px}
  .plate{height:32px}
  .plate input{font-size:12px;padding:0 8px}
  .finder-or{font-size:10px}
  .finder select{height:32px;font-size:11px;padding:0 8px}
  .finder .btn{height:32px;padding:0 16px;font-size:10px}
  .footer{padding-top:28px}
  .footer-inner{grid-template-columns:1fr 1fr;gap:0 14px;padding-bottom:10px}
  .foot-brand{grid-column:1/-1;padding-bottom:18px;margin-bottom:6px;border-bottom:1px solid rgba(255,255,255,.08);text-align:center}
  .foot-brand .logo{display:inline-block}
  .foot-brand p{margin-left:auto;margin-right:auto}
  .foot-brand .foot-social{justify-content:center}
  .foot-brand .foot-app{display:flex;flex-direction:column;align-items:center}
  .foot-brand .foot-app-btns{align-items:center}
  .foot-col:not(.foot-accordion):not(.foot-brand){padding:14px 0;border-bottom:1px solid rgba(255,255,255,.08)}
  /* Real masonry packing: CSS multi-column fills the left track fully (Useful
     Links) before flowing remaining blocks (Categories, then Contact us) into
     the right track — so Contact us lands right where the shorter column's
     content ends, instead of starting a whole new row below the taller one. */
  .foot-links-wrap{grid-column:1/-1;display:block;column-count:2;column-gap:14px}
  .foot-links-wrap .foot-col{break-inside:avoid;-webkit-column-break-inside:avoid}
  .foot-col h4{font-size:13.5px;margin-bottom:0}
  .foot-accordion summary{cursor:pointer;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.08)}
  .foot-chev{display:block}
  .foot-accordion[open] summary{border-bottom:none}
  .foot-accordion .foot-links{margin-top:2px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.08)}
  .foot-app-btns{max-width:none;flex-direction:row}
  .foot-app-btns .app-btn{flex:0 0 auto;width:130px}
  .category-grid{gap:6px}
  /* A grid item's default min-width is its content's min-content size — for a
     long unbroken word (e.g. "Freshener") that's wider than this tile's fair
     1fr share, so the whole grid can't shrink that far and overflows past the
     screen edge on narrower phones (the last tile visibly cropped off). min-width:0
     lets the tile shrink to its share; word-break lets the label wrap inside it
     instead of overflowing its own box. */
  .category-tile{padding:10px 4px;gap:6px;border-radius:10px;min-width:0}
  .category-tile .cat-ic{width:34px;height:34px}
  .category-tile .cat-ic svg{width:16px;height:16px}
  .category-tile span:last-child{font-size:8.5px;line-height:1.15;overflow-wrap:break-word;word-break:break-word}
  .brand-track{gap:8px}
  .brand-chip{min-width:0;width:calc((100vw - 64px)/4);height:60px;font-size:12px}

  /* seasonal promo grid — keep pairs side-by-side, trim padding */
  .pg2-stack{grid-template-columns:1fr 1fr;grid-template-rows:none;gap:10px}
  .p5-side{height:90px}
  /* Shorter box crops the tall banner image more; the "FOUR SUBTLE UPGRADES"
     text sits in the upper portion of that image, so anchor the crop to the
     top instead of the default center — otherwise it cuts the text off. */
  .p5-center{height:150px}
  .p5-center img{object-position:top}
  .promo.small{padding:14px 16px}
  .promo.small h3{font-size:14px}
  .promo-tall{padding:16px 18px}
  .promo-tall .studio-kicker{margin-bottom:6px;padding:3px 10px;font-size:10px}
  .promo-tall h3{font-size:16px;margin-bottom:4px;line-height:1.2}
  .promo-tall p{font-size:11px;margin-bottom:8px;line-height:1.4}
  .promo-tall .btn{padding:7px 16px;font-size:10.5px}
  .promo-tall .pr-icon{width:150px;height:150px}
  .promo-grid2{gap:10px;margin-top:14px}

  .deals-grid{grid-template-columns:repeat(2,1fr)}
  .deal-feature{height:auto;min-height:140px;padding:8px 10px;min-width:0}
  .recent-visual{min-height:140px}
  .deal-feature .disc{top:6px;left:6px;padding:2px 4px;font-size:7.5px}
  .deal-feature .deal-info{margin-top:12px}
  .deal-feature .pr-price{font-size:8px}
  .deal-feature .pr-icon{width:48px;height:48px}
  .deal-feature h4{font-size:10px;margin:1px 0 4px;max-width:78%}
  .deal-feature .price{margin-bottom:4px}
  .deal-feature .price .now{font-size:12px}
  .deal-feature .add-cart.dark{padding:5px 12px;font-size:7.5px}
  .countdown{gap:2px;margin-bottom:4px}
  .countdown div{padding:1px 2px;min-width:0;flex:1}
  .countdown strong{font-size:8px}
  .countdown small{font-size:5.5px}
  .combo-grid{grid-template-columns:repeat(2,1fr)}
  .recent-grid{grid-template-columns:repeat(2,1fr)}

  /* brand story — all 3 banners visible in one row on mobile */
  .story-row{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;border-radius:var(--radius);margin-top:20px}
  .story-col{border-radius:10px;padding:12px 8px}
  .story-kicker{font-size:7.5px;letter-spacing:1px;margin-bottom:3px}
  .story-col h3{font-size:12px;letter-spacing:-.2px}
  .story-col p{font-size:8px;margin-top:4px;line-height:1.35;max-width:none}

  .cinematic{padding:24px 16px;margin-top:20px}
  .cinematic-icon{width:130px;height:130px;right:-20px}
  .cinematic-kicker{font-size:9px;letter-spacing:2px;margin-bottom:6px}
  .cinematic h2{font-size:16px;line-height:1.2;margin-bottom:10px}
  .cinematic .btn{padding:8px 16px;font-size:10px;gap:5px}
  .section-head{align-items:center}
  .section-head .see-more{white-space:nowrap}
  /* Base width still comes from each tab's own text (so the short labels don't
     force the long one to wrap), but flex-grow:1 then shares out whatever's left
     over equally, so the row fills the full width instead of leaving a gap. */
  .tabs{flex-wrap:nowrap;width:100%;gap:clamp(3px,1.3vw,5px)}
  .tab{padding:clamp(6px,2.1vw,8px) clamp(3px,1.6vw,6px);font-size:clamp(7.5px,2.1vw,9px);line-height:1;flex:1 1 auto;text-align:center;white-space:nowrap}
}
@media(max-width:360px){
  .service{padding:12px 4px}
  .service strong{font-size:10.5px}
  .service small{font-size:9px}
}

/* ===== Cart drawer =====
   Chrome (backdrop, panel, head, subtitle bar, empty state, footer) is fully
   theme-styled below. #cart-header's ITEM ROWS are different: cart.js rebuilds
   that whole list from scratch after every add/remove/qty-change using its own
   hardcoded template (shared with the real site's Tailwind-based drawer), so
   rather than fight that, the utility-class shims further down give that exact
   markup this theme's look regardless of which one rendered it — the initial
   Blade version below, or cart.js's regenerated version after an update. */
#cartDrawerBackdrop{
  position:fixed;inset:0;background:rgba(20,20,28,.45);
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
  z-index:900;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .25s;
}
#cartDrawerBackdrop.is-open{opacity:1;visibility:visible}
.cart-drawer-container{
  position:fixed;top:0;right:0;bottom:0;
  width:400px;max-width:calc(100vw - 40px);
  background:#fff;z-index:950;
  display:flex;flex-direction:column;
  box-shadow:var(--shadow-lg);
  transform:translateX(100%);
  transition:transform .3s cubic-bezier(.4,0,.2,1);
}
.cart-drawer-container.is-open{transform:translateX(0)}
.cart-drawer-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 20px;border-bottom:1px solid var(--line);
  font-family:'Poppins',sans-serif;font-weight:800;font-size:17px;color:var(--ink);
  flex-shrink:0;
}
#cartDrawerClose{background:none;border:none;font-size:24px;line-height:1;color:var(--muted);cursor:pointer;padding:0}
.cart-subtitle-bar{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 20px;font-size:12.5px;font-weight:600;color:var(--muted);
  border-bottom:1px solid var(--line);flex-shrink:0;
}
.cart-subtitle-bar #cart-item-count-badge{
  background:var(--orange);color:#fff;font-size:11px;font-weight:700;
  min-width:20px;height:20px;border-radius:10px;display:inline-flex;
  align-items:center;justify-content:center;padding:0 6px;
}
#emptyCart{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;color:var(--muted);padding:40px 20px;text-align:center;
}
#emptyCart svg{opacity:.35}
#emptyCart p{font-size:14px;font-weight:600;color:var(--body)}
.cart-footer-actions{
  flex-shrink:0;border-top:1px solid var(--line);padding:16px 20px;
  display:flex;flex-direction:column;gap:10px;
}
.cart-drawer-subtotal{display:flex;align-items:center;justify-content:space-between;font-size:14px;color:var(--body);margin-bottom:2px}
.cart-drawer-subtotal span:last-child{font-family:'Poppins',sans-serif;font-weight:800;font-size:18px;color:var(--ink)}
.cart-footer-actions .btn{width:100%;text-align:center;padding:12px;font-size:13px}

/* ---- Utility-class shims: the exact Tailwind classes cart.js's hardcoded
   #cart-header item template uses (see public/dist/js/custom/site/cart.js's
   updateCart() function) — Tailwind itself isn't loaded in this theme, so these
   give those specific classes real definitions instead of leaving them inert. ---- */
#cart-header{scrollbar-width:thin}
.flex{display:flex}
.flex-1{flex:1 1 0%}
.flex-col{flex-direction:column}
.flex-wrap{flex-wrap:wrap}
.items-center{align-items:center}
.items-start{align-items:flex-start}
.justify-center{justify-content:center}
.justify-between{justify-content:space-between}
.gap-2{gap:8px}
.gap-4{gap:16px}
.gap-x-3{column-gap:12px}
.gap-y-1{row-gap:4px}
.relative{position:relative}
.block{display:block}
.shrink-0{flex-shrink:0}
.min-w-0{min-width:0}
.w-3{width:12px}
.w-4{width:16px}
.w-8{width:32px}
.w-20{width:80px}
.h-3{height:12px}
.h-4{height:16px}
.h-8{height:32px}
.h-20{height:80px}
.w-full{width:100%}
.h-full{height:100%}
.p-0\.5{padding:2px}
.p-1{padding:4px}
.px-6{padding-left:24px;padding-right:24px}
.py-2{padding-top:8px;padding-bottom:8px}
.py-5{padding-top:20px;padding-bottom:20px}
.mt-1{margin-top:4px}
.mt-4{margin-top:16px}
.-mt-1{margin-top:-4px}
.-mr-1{margin-right:-4px}
.space-y-2>*+*{margin-top:8px}
.overflow-hidden{overflow:hidden}
.overflow-y-auto{overflow-y:auto}
.break-words{overflow-wrap:break-word}
.object-cover{object-fit:cover}
.rounded-md{border-radius:8px}
.rounded-full{border-radius:9999px}
.border{border:1px solid var(--line)}
.border-b{border-bottom:1px solid var(--line)}
.group:last-child.border-b,.cart-item-header:last-child{border-bottom:0}
.font-medium{font-weight:500}
.font-bold{font-weight:700}
.leading-tight{line-height:1.25}
.text-sm{font-size:14px}
.text-base{font-size:16px}
.text-\[13px\]{font-size:13px}
.text-\[15px\]{font-size:15px}
.text-center{text-align:center}
.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.transition-opacity{transition:opacity .15s ease}
.transition-colors{transition:color .15s ease,background-color .15s ease,border-color .15s ease}
.focus\:outline-none:focus{outline:none}
.hover\:opacity-70:hover{opacity:.7}
.hover\:bg-gray-100:hover{background:#f3f4f6}
.hover\:text-red-500:hover{color:var(--red)}
/* Semantic theme hooks the template uses instead of raw color utilities —
   these map straight onto this theme's own palette. */
.cart-theme-text-dark{color:var(--ink)}
.cart-theme-text-muted{color:var(--muted)}
.cart-theme-bg-alt{background:var(--bg)}
.cart-theme-border{border-color:var(--line)}
.cart-theme-border-dark{border-color:var(--line)}

/* Qty stepper +/- buttons in the cart drawer/page (cart.js's own hardcoded
   template) render as plain transparent circles by default with only the
   pill's own faint light border — too washed out. Keep them unfilled, just
   give each circle its own dark outline instead of a solid fill. */
.cart-page-item-qty-dec,
.cart-page-item-qty-inc{background:#fff;color:var(--ink);border:1.5px solid var(--ink);transition:background .15s,color .15s}
.cart-page-item-qty-dec:hover,
.cart-page-item-qty-inc:hover{background:var(--ink);color:#fff}

@media (max-width:760px){
  .cart-drawer-container{width:calc(100vw - 48px);max-width:340px}
}

/* ===== Account sidebar (My Account nav: Dashboard/Orders/Wishlist/etc.) =====
   Shared across account pages via partials/account-sidebar.blade.php — wrap it
   and the page content in a container with class "acct-wrap" (260px sidebar +
   1fr content, same 2-column pattern as .shop-wrap/.blog-wrap). */
.acct-wrap{display:grid;grid-template-columns:240px 1fr;gap:22px;align-items:start;margin-top:18px;margin-bottom:36px}
.acct-sidebar{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;position:sticky;top:100px}
.acct-nav{display:flex;flex-direction:column}
.acct-nav-item{display:flex;align-items:center;gap:12px;padding:13px 18px;font-size:13.5px;font-weight:600;color:var(--body);border-bottom:1px solid var(--line);transition:background .15s,color .15s}
.acct-nav-item:last-child{border-bottom:none}
.acct-nav-item svg{width:18px;height:18px;flex-shrink:0}
.acct-nav-item:hover{background:var(--bg);color:var(--ink)}
.acct-nav-item.is-active{background:var(--orange-light);color:var(--orange);font-weight:700}
.acct-nav-item.acct-nav-logout{color:var(--red)}
.acct-nav-item.acct-nav-logout:hover{background:#fdecea}

@media(max-width:980px){
  .acct-wrap{grid-template-columns:1fr}
  .acct-sidebar{position:static}
  .acct-nav{flex-direction:row;flex-wrap:wrap}
  .acct-nav-item{flex:1 1 auto;justify-content:center;border-bottom:none;border-right:1px solid var(--line);padding:10px 12px;font-size:12px}
  .acct-nav-item:last-child{border-right:none}
}
@media(max-width:760px){
  .acct-nav-item span{display:none}
  .acct-nav-item{padding:10px}
}
