:root{
--bg:hsla(263,17%,10%,1);--bg-card:hsla(263,11%,17%,1);--bg-light:hsla(263,14%,16%,1);
--text:hsla(263,6%,91%,1);--text-sub:hsla(263,0%,53%,1);
--primary:#2eda8a;--primary-hsl:hsla(152,70%,52%,1);--secondary:#9ac94a;
--border:rgba(255,255,255,0.06);
--shadow:0 1px 3px rgba(0,0,0,.04),0 4px 12px rgba(0,0,0,.03);--shadow-hover:0 4px 12px rgba(0,0,0,.06),0 16px 40px rgba(0,0,0,.06);
--radius:10px;--gap:15px;
--font-heading:'DM Sans',system-ui,sans-serif;
--font-body:'Rubik',system-ui,sans-serif;
--font-size:17px;--line-height:1.73;
--heading-weight:600;
--heading-transform:uppercase;
--heading-spacing:0.001em;
--content-width:91%;--nav-height:68px;
--transition:0.19s cubic-bezier(.2,.8,.2,1);
--columns:3;
--btn-radius:10px;
}

/* ================================================================
   PriceRadar Design System — Inspired by PriceSpy + Geizhals + 2026
   ================================================================ */

/* ================================================================
   1. MODERN RESET + ROOT ENHANCEMENTS
   ================================================================ */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%;
hanging-punctuation:first last;-webkit-font-smoothing:antialiased;
text-rendering:optimizeLegibility}
body{font-family:var(--font-body);background:var(--bg);color:var(--text);
font-size:var(--font-size);line-height:var(--line-height);
-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
min-height:100dvh;overflow-x:hidden;
background-image:
radial-gradient(ellipse at 15% 50%,color-mix(in srgb,var(--primary) 3%,transparent) 0%,transparent 50%),
radial-gradient(ellipse at 85% 15%,color-mix(in srgb,var(--secondary) 3%,transparent) 0%,transparent 45%),
radial-gradient(circle at 50% 100%,var(--bg-light) 0%,transparent 35%)}
img,picture,video,canvas,svg{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none;transition:color 250ms cubic-bezier(.4,0,.2,1)}
a:hover{color:var(--primary)}
button,input,select,textarea{font:inherit;color:inherit;border:none;outline:none;background:none}
button{cursor:pointer}
ul,ol{list-style:none}
table{border-collapse:collapse;border-spacing:0}
p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}
input,button,textarea,select{font:inherit}
@media(prefers-reduced-motion:reduce){
*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;
transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* Selection */
::selection{background:var(--primary);color:#fff}
::-moz-selection{background:var(--primary);color:#fff}

/* Scrollbar — PriceSpy-thin style */
::-webkit-scrollbar{width:7px;height:7px}
::-webkit-scrollbar-track{background:var(--bg-light);border-radius:4px}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px;
border:2px solid var(--bg-light)}
::-webkit-scrollbar-thumb:hover{background:var(--text-sub)}
*{scrollbar-width:thin;scrollbar-color:var(--border) var(--bg-light)}

/* Focus-visible for accessibility */
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:2px}

/* ================================================================
   2. FLUID TYPOGRAPHY — PriceSpy Mulish-inspired scale
   ================================================================ */
h1{font-family:var(--font-heading);font-weight:var(--heading-weight);
text-transform:var(--heading-transform);letter-spacing:var(--heading-spacing);
font-size:clamp(1.875rem,1.2rem + 2.8vw,3rem);line-height:1.1;margin-bottom:.5em;
text-wrap:balance}
h2{font-family:var(--font-heading);font-weight:var(--heading-weight);
text-transform:var(--heading-transform);letter-spacing:var(--heading-spacing);
font-size:clamp(1.4rem,.95rem + 2vw,2.25rem);line-height:1.15;margin-bottom:.45em;
text-wrap:balance}
h3{font-family:var(--font-heading);font-weight:var(--heading-weight);
text-transform:var(--heading-transform);letter-spacing:var(--heading-spacing);
font-size:clamp(1.15rem,.9rem + 1.2vw,1.625rem);line-height:1.2;margin-bottom:.4em}
h4{font-family:var(--font-heading);font-weight:var(--heading-weight);
text-transform:var(--heading-transform);letter-spacing:var(--heading-spacing);
font-size:clamp(1rem,.88rem + .65vw,1.25rem);line-height:1.28;margin-bottom:.35em}
h5{font-family:var(--font-heading);font-weight:var(--heading-weight);
text-transform:var(--heading-transform);letter-spacing:var(--heading-spacing);
font-size:clamp(.9rem,.84rem + .35vw,1.1rem);line-height:1.32;margin-bottom:.3em}
h6{font-family:var(--font-heading);font-weight:600;
text-transform:uppercase;letter-spacing:.06em;
font-size:clamp(.78rem,.74rem + .2vw,.9rem);line-height:1.4;margin-bottom:.25em;
color:var(--text-sub)}

/* Section title with animated gradient underline */
.section-title{position:relative;display:inline-block;padding-bottom:12px;margin-bottom:28px}
.section-title::after{content:'';position:absolute;bottom:0;left:0;
width:0;height:3px;border-radius:3px;
background:linear-gradient(90deg,var(--primary),var(--secondary));
transition:width .5s cubic-bezier(.4,0,.2,1)}
.section-title.visible::after,.section-title:hover::after{width:64px}

/* Brand label — Geizhals compact uppercase style */
.brand-label{font-size:10px;text-transform:uppercase;letter-spacing:.1em;
color:var(--text-sub);font-weight:700;line-height:1.5}

/* Price text with tabular nums + gradient */
.price-text{font-family:var(--font-heading);font-weight:800;
font-variant-numeric:tabular-nums;
background:linear-gradient(135deg,var(--primary),var(--secondary));
-webkit-background-clip:text;-webkit-text-fill-color:transparent;
background-clip:text}

.old-price{color:var(--text-sub);text-decoration:line-through;
text-decoration-color:color-mix(in srgb,var(--text-sub) 60%,transparent);
text-decoration-thickness:1.5px;font-size:.85em;font-variant-numeric:tabular-nums}

/* Rating stars via CSS gradients — no images needed */
.rating-stars{display:inline-flex;align-items:center;gap:1px;
font-size:0;line-height:1}
.rating-stars .star{display:inline-block;width:14px;height:14px;
background:linear-gradient(90deg,#f59e0b var(--fill,100%),var(--border) var(--fill,100%));
clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.rating-stars .star.half{--fill:50%}
.rating-stars .star.empty{--fill:0%}

.meta-text{font-size:12px;color:var(--text-sub);line-height:1.55}
p{margin-bottom:1em}

/* ================================================================
   3. LAYOUT — PriceSpy 1356px container + CSS Grid auto-fill
   ================================================================ */
.container{max-width:var(--content-width);margin:0 auto;
padding:0 clamp(16px,3vw,24px);width:100%}
.container-narrow{max-width:960px;margin:0 auto;
padding:0 clamp(16px,3vw,24px);width:100%}

/* Product grid with auto-fill for fluid column count */
.product-grid{display:grid;
grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
gap:var(--gap);align-items:stretch}

/* Explicit column variants */
.product-grid.cols-2{grid-template-columns:repeat(2,1fr)}
.product-grid.cols-3{grid-template-columns:repeat(3,1fr)}
.product-grid.cols-4{grid-template-columns:repeat(var(--columns),1fr)}
.product-grid.cols-5{grid-template-columns:repeat(5,1fr)}

/* List view — Geizhals horizontal layout */
.list-view{display:flex;flex-direction:column;gap:12px}
.list-view .product-card{flex-direction:row;max-height:180px}
.list-view .product-card .card-image{width:200px;min-width:200px;padding-top:0;
height:100%}
.list-view .product-card .card-image img{position:relative;inset:auto;
height:100%;padding:12px}
.list-view .product-card .card-info{flex-direction:row;flex-wrap:wrap;
align-items:center;gap:16px;padding:16px 20px}
.list-view .card-title{flex:1 1 300px;min-height:auto;
-webkit-line-clamp:1;font-size:15px}
.list-view .card-price{font-size:20px;margin-top:0;padding-top:0}
.list-view .card-meta{flex:0 0 auto}

/* Sidebar + content layout */
.two-col-layout{display:grid;grid-template-columns:280px 1fr;gap:32px;align-items:start}
.two-col-layout aside{position:sticky;top:calc(var(--nav-height) + 16px);
max-height:calc(100dvh - var(--nav-height) - 32px);overflow-y:auto}
.three-col-layout{display:grid;grid-template-columns:240px 1fr 280px;gap:24px;align-items:start}
section{padding:clamp(32px,5vw,56px) 0}

/* ================================================================
   4. NAVIGATION — PriceSpy-level glassmorphism sticky nav
   ================================================================ */
nav,.site-nav{position:sticky;top:0;z-index:1000;height:var(--nav-height);
display:flex;align-items:center;padding:0 clamp(16px,3vw,24px);
background:rgba(255,255,255,.68);
backdrop-filter:blur(20px) saturate(180%);
-webkit-backdrop-filter:blur(20px) saturate(180%);
border-bottom:1px solid color-mix(in srgb,var(--border) 50%,transparent);
transition:all 250ms cubic-bezier(.4,0,.2,1);
will-change:transform}
nav.scrolled,.site-nav.scrolled{
box-shadow:0 1px 3px rgba(0,0,0,.04),0 4px 12px rgba(0,0,0,.03);
background:rgba(255,255,255,.85)}
nav .nav-inner{max-width:var(--content-width);margin:0 auto;width:100%;
display:flex;align-items:center;justify-content:space-between;gap:20px}
nav .logo{font-family:var(--font-heading);font-weight:800;
font-size:clamp(18px,2.2vw,22px);color:var(--primary);white-space:nowrap;
letter-spacing:-.02em;transition:transform 250ms cubic-bezier(.4,0,.2,1)}
nav .logo:hover{transform:scale(1.02)}

/* Nav links with animated underline indicator */
.nav-links{display:flex;align-items:center;gap:2px}
.nav-link{position:relative;padding:8px 14px;font-size:14px;font-weight:600;
color:var(--text);border-radius:var(--radius);
transition:all 250ms cubic-bezier(.4,0,.2,1)}
.nav-link::after{content:'';position:absolute;bottom:2px;left:14px;right:14px;
height:2px;background:var(--primary);border-radius:2px;
transform:scaleX(0);transform-origin:center;
transition:transform 300ms cubic-bezier(.4,0,.2,1)}
.nav-link:hover{color:var(--primary);background:color-mix(in srgb,var(--primary) 6%,transparent)}
.nav-link:hover::after,.nav-link.active::after{transform:scaleX(1)}
.nav-link.active{color:var(--primary);font-weight:700}

/* Search bar — PriceSpy 500px+ with focus expansion */
.nav-search{display:flex;align-items:center;gap:8px;
background:var(--bg-light);border:1.5px solid var(--border);
border-radius:calc(var(--radius) + 6px);padding:8px 16px;
width:clamp(200px,40vw,540px);
transition:all 350ms cubic-bezier(.4,0,.2,1)}
.nav-search:focus-within{width:clamp(280px,50vw,600px);
border-color:var(--primary);
box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 12%,transparent),
0 4px 16px rgba(0,0,0,.06);
background:var(--bg-card)}
.nav-search svg,.nav-search .search-icon{color:var(--text-sub);flex-shrink:0;
width:18px;height:18px;transition:color 250ms ease}
.nav-search:focus-within svg,.nav-search:focus-within .search-icon{color:var(--primary)}
.nav-search input{flex:1;background:none;border:none;outline:none;font-size:14px;
font-weight:500;color:var(--text);min-width:0}
.nav-search input::placeholder{color:var(--text-sub);font-weight:400}
.nav-search kbd{display:none;padding:2px 6px;font-size:10px;
background:var(--bg);border:1px solid var(--border);border-radius:3px;
color:var(--text-sub);font-family:inherit;line-height:1.3}
@media(min-width:769px){.nav-search kbd{display:inline-block}}

/* Mega-menu with smooth reveal */
.nav-dropdown,.mega-menu{position:absolute;top:calc(100% + 4px);left:50%;
transform:translateX(-50%) translateY(-8px);min-width:240px;
background:var(--bg-card);border:1px solid var(--border);
border-radius:calc(var(--radius) + 2px);
box-shadow:0 12px 48px rgba(0,0,0,.1),0 4px 16px rgba(0,0,0,.05);
padding:8px 0;opacity:0;visibility:hidden;pointer-events:none;
transition:all 250ms cubic-bezier(.4,0,.2,1)}
.nav-link:hover>.nav-dropdown,.nav-link:hover>.mega-menu,
.nav-link:focus-within>.nav-dropdown{opacity:1;visibility:visible;
pointer-events:auto;transform:translateX(-50%) translateY(0)}
.mega-menu{min-width:560px;padding:24px;
display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.mega-menu-section{display:flex;flex-direction:column;gap:4px}
.mega-menu-heading{font-size:11px;text-transform:uppercase;letter-spacing:.08em;
font-weight:700;color:var(--text-sub);padding:4px 0 8px;
border-bottom:1px solid var(--border);margin-bottom:4px}
.nav-dropdown a{display:flex;align-items:center;gap:10px;
padding:8px 20px;font-size:13px;font-weight:500;border-radius:4px;
transition:all 200ms ease}
.nav-dropdown a:hover,.mega-menu a:hover{
background:color-mix(in srgb,var(--primary) 6%,transparent);color:var(--primary)}

/* Hamburger with animated X morph */
.hamburger{display:none;flex-direction:column;gap:5px;padding:8px;cursor:pointer;
position:relative;z-index:1001}
.hamburger span{display:block;width:22px;height:2px;background:var(--text);
border-radius:2px;transition:all 300ms cubic-bezier(.4,0,.2,1);
transform-origin:center}
.hamburger.active span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.hamburger.active span:nth-child(2){opacity:0;transform:scaleX(0)}
.hamburger.active span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* Mobile menu */
.mobile-menu{display:none;position:fixed;inset:0;top:var(--nav-height);z-index:999;
background:var(--bg-card);padding:24px;overflow-y:auto;
transform:translateY(-100%);opacity:0;
transition:all 350ms cubic-bezier(.4,0,.2,1)}
.mobile-menu.active{display:block;transform:translateY(0);opacity:1;
animation:slideDown .35s cubic-bezier(.4,0,.2,1) forwards}
.mobile-menu a{display:flex;align-items:center;gap:12px;
padding:14px 0;font-size:16px;font-weight:500;
border-bottom:1px solid var(--border);
transition:color 200ms ease}
.mobile-menu a:hover{color:var(--primary)}

/* ================================================================
   5. PRODUCT CARDS — PriceSpy-grade with micro-interactions
   ================================================================ */
.product-card{background:var(--bg-card);border:1px solid var(--border);
border-radius:var(--radius);overflow:hidden;
transition:all 350ms cubic-bezier(.2,.8,.2,1);
box-shadow:var(--shadow);position:relative;display:flex;flex-direction:column;
will-change:transform,box-shadow}
.product-card:hover{transform:translateY(-3px);
box-shadow:var(--shadow-hover);
border-color:color-mix(in srgb,var(--primary) 40%,var(--border))}

/* Card image with aspect-ratio trick + gradient overlay */
.card-image{position:relative;overflow:hidden;background:var(--bg-light);
padding-top:100%;display:block}
.card-image img{position:absolute;inset:0;width:100%;height:100%;
object-fit:contain;padding:16px;
transition:transform .5s cubic-bezier(.2,.8,.2,1),opacity .3s ease}
.product-card:hover .card-image img{transform:scale(1.06)}
.card-image::after{content:'';position:absolute;inset:0;
background:linear-gradient(180deg,transparent 50%,rgba(0,0,0,.03) 100%);
pointer-events:none;opacity:0;transition:opacity 300ms ease}
.product-card:hover .card-image::after{opacity:1}

/* Badge — gradient green pill, top-right, PriceSpy-style */
.card-badge,.savings-badge{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;
padding:5px 12px;border-radius:20px;font-size:11px;font-weight:700;
position:absolute;top:12px;right:12px;z-index:2;
box-shadow:0 2px 8px rgba(34,197,94,.3);letter-spacing:.02em;
line-height:1.3}
.card-badge.hot{background:linear-gradient(135deg,#ef4444,#dc2626)}
.card-badge.new{background:linear-gradient(135deg,var(--primary),var(--secondary))}

/* Wishlist / quick-action overlay */
.card-actions{position:absolute;top:12px;left:12px;z-index:3;
display:flex;flex-direction:column;gap:6px;
opacity:0;transform:translateX(-8px);
transition:all 300ms cubic-bezier(.4,0,.2,1)}
.product-card:hover .card-actions{opacity:1;transform:translateX(0)}
.card-actions button{width:32px;height:32px;border-radius:50%;
background:rgba(255,255,255,.9);backdrop-filter:blur(8px);
border:1px solid var(--border);display:flex;align-items:center;justify-content:center;
font-size:14px;transition:all 200ms ease;cursor:pointer;
box-shadow:0 2px 6px rgba(0,0,0,.06)}
.card-actions button:hover{background:var(--primary);color:#fff;
border-color:var(--primary);transform:scale(1.1)}

/* Card info section */
.card-info{padding:16px 18px 18px;flex:1;display:flex;flex-direction:column;gap:4px}
.card-brand{font-size:10px;text-transform:uppercase;letter-spacing:.1em;
color:var(--text-sub);font-weight:700;margin-bottom:2px}
.card-title{font-size:14px;font-weight:600;line-height:1.35;color:var(--text);
display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
overflow:hidden;text-overflow:ellipsis;min-height:2.7em;
transition:color 200ms ease}
.product-card:hover .card-title{color:var(--primary)}

/* Price — PriceSpy 20px bold tabular-nums accent */
.card-price{font-family:var(--font-heading);font-size:20px;font-weight:700;
color:var(--primary);font-variant-numeric:tabular-nums;
margin-top:auto;padding-top:8px;letter-spacing:-.01em}
.card-old-price{font-size:13px;color:var(--text-sub);text-decoration:line-through;
text-decoration-thickness:1.5px;text-decoration-color:color-mix(in srgb,var(--text-sub) 60%,transparent);
margin-left:6px;display:inline;font-variant-numeric:tabular-nums}
.card-price-row{display:flex;align-items:baseline;gap:4px;flex-wrap:wrap;
margin-top:auto;padding-top:8px}

/* Meta line — 11px flex between, muted */
.card-meta{display:flex;align-items:center;justify-content:space-between;
font-size:11px;color:var(--text-sub);margin-top:6px;gap:8px}
.card-merchants{display:inline-flex;align-items:center;gap:4px;font-size:11px;
color:var(--text-sub)}
.card-merchants img{width:14px;height:14px;border-radius:2px;object-fit:contain}
.card-merchants span{font-weight:600}

/* Rating in cards */
.card-rating{display:inline-flex;align-items:center;gap:2px;color:#f59e0b;font-size:13px}
.card-rating .star{display:inline-block;width:14px;height:14px;
background:currentColor;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.card-rating .count{color:var(--text-sub);font-size:11px;margin-left:3px}

/* Compare button — opacity:0, reveals on card:hover with translateY */
.card-compare-btn{position:absolute;bottom:0;left:0;right:0;
background:linear-gradient(135deg,var(--primary),var(--secondary));
color:#fff;text-align:center;padding:12px;font-size:13px;font-weight:700;
opacity:0;transform:translateY(10px);
transition:all 300ms cubic-bezier(.2,.8,.2,1);
letter-spacing:.02em;backdrop-filter:blur(4px)}
.product-card:hover .card-compare-btn{opacity:1;transform:translateY(0)}

/* -- Card Variants -- */
/* Horizontal layout for list-view */
.card-horizontal{flex-direction:row}
.card-horizontal .card-image{padding-top:0;width:200px;min-width:200px;
min-height:160px;flex-shrink:0}
.card-horizontal .card-image img{position:relative;inset:auto;height:100%;padding:12px}
.card-horizontal .card-info{padding:16px 20px;justify-content:center}
.card-horizontal .card-compare-btn{position:static;opacity:1;transform:none;
width:auto;border-radius:var(--btn-radius);margin-top:8px;padding:8px 16px;
display:inline-flex;align-self:flex-start}

/* Compact variant */
.card-compact .card-image{padding-top:65%}
.card-compact .card-info{padding:10px 12px;gap:2px}
.card-compact .card-title{font-size:12px;-webkit-line-clamp:1;min-height:auto}
.card-compact .card-price{font-size:16px}
.card-compact .card-brand{font-size:9px}

/* Featured — 2x span, larger everything */
.card-featured{grid-column:span 2}
.card-featured .card-image{padding-top:55%}
.card-featured .card-title{font-size:18px;-webkit-line-clamp:2;min-height:auto}
.card-featured .card-price{font-size:28px}
.card-featured .card-info{padding:20px 24px 24px}

/* Minimal card variant */
.card-minimal{border:none;box-shadow:none;background:transparent}
.card-minimal:hover{box-shadow:var(--shadow);background:var(--bg-card)}
.card-minimal .card-image{border-radius:var(--radius);margin:8px 8px 0}

/* ================================================================
   6. PRICE COMPARISON TABLE — Geizhals-inspired data density
   ================================================================ */
.price-table-wrap{border-radius:calc(var(--radius) + 2px);overflow:hidden;
box-shadow:var(--shadow);background:var(--bg-card);
border:1px solid var(--border)}
.price-table{width:100%;border-collapse:separate;border-spacing:0;
background:var(--bg-card)}
.price-table th{text-align:left;font-size:11px;text-transform:uppercase;
letter-spacing:.08em;color:var(--text-sub);font-weight:700;padding:14px 20px;
background:var(--bg-light);border-bottom:2px solid var(--border);
position:sticky;top:0;z-index:1;white-space:nowrap}
.price-table th:first-child{border-radius:var(--radius) 0 0 0}
.price-table th:last-child{border-radius:0 var(--radius) 0 0}
.price-table td{padding:16px 20px;border-bottom:1px solid var(--border);font-size:14px;
background:var(--bg-card);transition:background 200ms ease;vertical-align:middle}
.price-table tr:last-child td{border-bottom:none}
.price-table tbody tr:hover td{
background:color-mix(in srgb,var(--primary) 3%,var(--bg-card))}

/* Best price row — Geizhals-style left accent border */
.price-row{transition:all 250ms ease}
.price-row.best{position:relative}
.price-row.best td{background:color-mix(in srgb,var(--primary) 4%,var(--bg-card))}
.price-row.best td:first-child{border-left:3px solid var(--primary);padding-left:17px}

/* Merchant name with logo space */
.merchant-name{font-weight:600;font-size:14px;color:var(--text);display:flex;
align-items:center;gap:10px;white-space:nowrap}
.merchant-name img,.merchant-name .merchant-logo{width:28px;height:28px;
border-radius:6px;object-fit:contain;background:var(--bg-light);
padding:2px;border:1px solid var(--border)}
.merchant-name .merchant-rating{font-size:11px;color:var(--text-sub);font-weight:400;
margin-left:auto}

/* Price cell — font-display 18px bold, tabular-nums */
.price-cell{font-family:var(--font-heading);font-size:18px;font-weight:800;
color:var(--primary);font-variant-numeric:tabular-nums;white-space:nowrap}
.price-cell .price-shipping{display:block;font-size:11px;font-weight:400;
color:var(--text-sub);margin-top:2px;font-family:var(--font-body)}

/* Stock indicators — Geizhals color dots */
.stock-yes{display:inline-flex;align-items:center;gap:6px;color:#16a34a;
font-size:13px;font-weight:600}
.stock-yes::before{content:'';width:6px;height:6px;border-radius:50%;
background:#22c55e;box-shadow:0 0 6px rgba(34,197,94,.4);flex-shrink:0}
.stock-no{display:inline-flex;align-items:center;gap:6px;color:var(--text-sub);
font-size:13px}
.stock-no::before{content:'';width:6px;height:6px;border-radius:50%;
background:var(--border);flex-shrink:0}
.stock-limited{display:inline-flex;align-items:center;gap:6px;color:#f59e0b;
font-size:13px;font-weight:500}
.stock-limited::before{content:'';width:6px;height:6px;border-radius:50%;
background:#f59e0b;box-shadow:0 0 4px rgba(245,158,11,.3);flex-shrink:0}

/* Best price tag — accent gradient pill */
.best-tag{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;
padding:4px 12px;border-radius:20px;font-size:9px;font-weight:800;
text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;
box-shadow:0 2px 8px rgba(0,0,0,.1);display:inline-flex;align-items:center}

/* Go/Buy button — accent gradient pill with hover lift+glow + ::after arrow */
.go-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;
background:linear-gradient(135deg,var(--primary),var(--secondary));
color:#fff;border-radius:var(--btn-radius);font-weight:700;border:none;cursor:pointer;
transition:all 250ms cubic-bezier(.4,0,.2,1);font-family:var(--font-body);
padding:10px 22px;font-size:13px;letter-spacing:.02em;
box-shadow:0 2px 8px rgba(0,0,0,.1);position:relative;overflow:hidden}
.go-btn::after{content:'92';display:inline-block;font-size:14px;
transition:transform 250ms cubic-bezier(.4,0,.2,1);margin-left:2px}
.go-btn:hover{transform:translateY(-2px);
box-shadow:0 6px 20px color-mix(in srgb,var(--primary) 25%,rgba(0,0,0,.15));
filter:brightness(1.06)}
.go-btn:hover::after{transform:translateX(3px)}
.go-btn:active{transform:translateY(0);box-shadow:0 2px 6px rgba(0,0,0,.1)}

/* Price history mini-chart placeholder */
.price-history-spark{height:40px;width:120px;display:flex;align-items:flex-end;gap:1px}
.price-history-spark .bar{flex:1;background:color-mix(in srgb,var(--primary) 25%,transparent);
border-radius:1px 1px 0 0;min-height:2px;transition:height 300ms ease}
.price-history-spark .bar.current{background:var(--primary)}

/* ================================================================
   7. HERO SECTION — Full-width gradient, centered search
   ================================================================ */
.hero{padding:clamp(56px,8vw,96px) 0 clamp(48px,7vw,72px);text-align:center;
position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;inset:0;
background:radial-gradient(ellipse at 50% 0%,
color-mix(in srgb,var(--primary) 5%,var(--bg-light)) 0%,transparent 65%),
radial-gradient(ellipse at 80% 100%,
color-mix(in srgb,var(--secondary) 4%,transparent) 0%,transparent 50%);
pointer-events:none}
.hero::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;
background:linear-gradient(90deg,transparent,var(--border),transparent)}
.hero-title{font-family:var(--font-heading);font-weight:900;
font-size:clamp(2rem,1.4rem + 3.2vw,3.5rem);line-height:1.08;
letter-spacing:-.03em;margin-bottom:16px;position:relative;
text-wrap:balance}
.hero-subtitle{font-size:clamp(1rem,.85rem + .65vw,1.25rem);color:var(--text-sub);
max-width:640px;margin:0 auto 36px;line-height:1.65;text-wrap:balance}

/* Hero search — PriceSpy 640px max, shadow, focus ring */
.hero-search{display:flex;align-items:center;max-width:640px;margin:0 auto;
background:var(--bg-card);border:2px solid var(--border);
border-radius:calc(var(--radius) + 8px);
padding:6px 6px 6px 20px;
box-shadow:0 4px 16px rgba(0,0,0,.04),0 12px 40px rgba(0,0,0,.04);
transition:all 350ms cubic-bezier(.4,0,.2,1)}
.hero-search:focus-within{border-color:var(--primary);
box-shadow:0 8px 32px rgba(0,0,0,.06),
0 0 0 4px color-mix(in srgb,var(--primary) 10%,transparent);
transform:translateY(-1px)}
.hero-search input{flex:1;padding:14px 0;font-size:16px;border:none;outline:none;
background:none;color:var(--text);font-weight:500}
.hero-search input::placeholder{color:var(--text-sub);font-weight:400}
.hero-search button{background:linear-gradient(135deg,var(--primary),var(--secondary));
color:#fff;border:none;border-radius:var(--radius);padding:14px 32px;
font-weight:700;font-size:14px;cursor:pointer;
transition:all 250ms cubic-bezier(.4,0,.2,1);white-space:nowrap;
box-shadow:0 2px 8px rgba(0,0,0,.08)}
.hero-search button:hover{filter:brightness(1.08);
transform:translateY(-1px);
box-shadow:0 4px 16px rgba(0,0,0,.12)}

/* Hero stats row */
.hero-stats{display:flex;justify-content:center;gap:clamp(24px,4vw,48px);
margin-top:32px;flex-wrap:wrap}
.hero-stat{text-align:center}
.hero-stat-value{font-family:var(--font-heading);font-weight:800;
font-size:clamp(1.25rem,2vw,1.75rem);color:var(--primary);
font-variant-numeric:tabular-nums}
.hero-stat-label{font-size:12px;color:var(--text-sub);margin-top:2px;font-weight:500}

/* ================================================================
   8. CATEGORIES — Auto-fill grid + horizontal scroll pills
   ================================================================ */
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));
gap:16px}
.cat-card{background:var(--bg-card);border:1px solid var(--border);
border-radius:var(--radius);padding:20px 16px;text-align:center;
transition:all 250ms cubic-bezier(.4,0,.2,1);cursor:pointer;
display:flex;flex-direction:column;align-items:center;gap:6px}
.cat-card:hover{transform:translateY(-2px);border-color:var(--primary);
box-shadow:0 8px 24px rgba(0,0,0,.05)}
.cat-card .cat-icon{font-size:28px;margin-bottom:4px;
width:48px;height:48px;display:flex;align-items:center;justify-content:center;
background:color-mix(in srgb,var(--primary) 6%,transparent);
border-radius:12px;transition:background 250ms ease}
.cat-card:hover .cat-icon{background:color-mix(in srgb,var(--primary) 12%,transparent)}
.cat-card .cat-name{font-size:13px;font-weight:600;color:var(--text);line-height:1.3}
.cat-card .cat-count{font-size:11px;color:var(--text-sub);font-weight:500}

/* Horizontal pill scroll with snap */
.cat-pill{display:flex;gap:10px;overflow-x:auto;padding:4px 0;
-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;
scroll-snap-type:x mandatory;mask-image:linear-gradient(90deg,transparent,#000 2%,#000 98%,transparent)}
.cat-pill::-webkit-scrollbar{display:none}
.cat-pill a{flex-shrink:0;padding:8px 20px;border-radius:50px;font-size:13px;
font-weight:600;background:var(--bg-light);color:var(--text-sub);
border:1px solid var(--border);transition:all 250ms cubic-bezier(.4,0,.2,1);
white-space:nowrap;scroll-snap-align:start}
.cat-pill a:hover,.cat-pill a.active{background:var(--primary);color:#fff;
border-color:var(--primary);box-shadow:0 4px 12px color-mix(in srgb,var(--primary) 20%,rgba(0,0,0,.1))}

/* ================================================================
   9. FOOTER — Dark bg, 5-column grid, disclosure box
   ================================================================ */
.site-footer{background:#1a1a1a;color:#a0a0a0;
border-top:1px solid rgba(255,255,255,.06);padding:64px 0 0;margin-top:80px}
.footer-grid{display:grid;
grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
gap:40px;margin-bottom:40px}
@media(min-width:1200px){.footer-grid{grid-template-columns:1.5fr repeat(4,1fr)}}

/* Footer headings — white 13px uppercase */
.footer-heading{font-family:var(--font-heading);font-weight:700;font-size:13px;
text-transform:uppercase;letter-spacing:.1em;color:#fff;margin-bottom:18px}

/* Footer links with ::before animated underline on hover */
.footer-link{display:block;padding:6px 0;font-size:13px;color:#888;
transition:all 250ms ease;position:relative}
.footer-link::before{content:'';position:absolute;bottom:4px;left:0;
width:0;height:1px;background:var(--primary);
transition:width 300ms cubic-bezier(.4,0,.2,1)}
.footer-link:hover{color:#fff;transform:translateX(3px)}
.footer-link:hover::before{width:100%}

/* Disclosure — semi-transparent box */
.footer-disclosure{font-size:11px;color:#666;line-height:1.7;
background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.05);
border-radius:var(--radius);padding:20px 24px;margin-top:16px}

.footer-bottom{display:flex;align-items:center;justify-content:space-between;
flex-wrap:wrap;gap:16px;padding:24px 0;
border-top:1px solid rgba(255,255,255,.06);font-size:12px;color:#666}
.footer-bottom a{color:#888;transition:color 200ms ease}
.footer-bottom a:hover{color:var(--primary)}
.footer-social{display:flex;gap:12px}
.footer-social a{width:32px;height:32px;border-radius:50%;
background:rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center;
font-size:14px;color:#888;transition:all 250ms ease}
.footer-social a:hover{background:var(--primary);color:#fff;transform:translateY(-2px)}

/* ================================================================
   10. BUTTONS — 250ms cubic-bezier transitions, gradient primary
   ================================================================ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
padding:10px 24px;font-size:14px;font-weight:600;border-radius:var(--btn-radius);
border:none;cursor:pointer;
transition:all 250ms cubic-bezier(.4,0,.2,1);
font-family:var(--font-body);text-decoration:none;white-space:nowrap;
line-height:1.4;position:relative;overflow:hidden;
-webkit-tap-highlight-color:transparent}
.btn:active{transform:scale(.97)}

/* Primary — gradient + shadow + hover lift */
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--secondary));
color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.btn-primary:hover{filter:brightness(1.06);transform:translateY(-2px);
box-shadow:0 6px 20px color-mix(in srgb,var(--primary) 25%,rgba(0,0,0,.12))}

/* Secondary — subtle bg */
.btn-secondary{background:var(--bg-light);color:var(--text);
border:1px solid var(--border)}
.btn-secondary:hover{background:var(--bg);border-color:var(--primary);
color:var(--primary)}

/* Outline — 1px border + fill on hover */
.btn-outline{background:transparent;color:var(--primary);
border:1.5px solid var(--primary)}
.btn-outline:hover{background:var(--primary);color:#fff;
box-shadow:0 4px 12px color-mix(in srgb,var(--primary) 20%,rgba(0,0,0,.1))}

/* Ghost — minimal */
.btn-ghost{background:transparent;color:var(--text-sub)}
.btn-ghost:hover{background:var(--bg-light);color:var(--text)}

/* Danger */
.btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;
box-shadow:0 2px 8px rgba(239,68,68,.2)}
.btn-danger:hover{filter:brightness(1.08);transform:translateY(-2px)}

/* Sizes — sm/md/lg */
.btn-sm{padding:6px 14px;font-size:12px;gap:5px}
.btn-md{padding:10px 24px;font-size:14px}
.btn-lg{padding:14px 32px;font-size:16px;gap:10px}
.btn-xl{padding:16px 40px;font-size:18px;gap:12px}
.btn-block{display:flex;width:100%}

/* Button icon */
.btn .btn-icon{width:18px;height:18px;flex-shrink:0}
.btn-sm .btn-icon{width:14px;height:14px}
.btn-lg .btn-icon{width:20px;height:20px}

/* Button group */
.btn-group{display:inline-flex;border-radius:var(--btn-radius);overflow:hidden}
.btn-group .btn{border-radius:0;border-right:1px solid rgba(255,255,255,.2)}
.btn-group .btn:first-child{border-radius:var(--btn-radius) 0 0 var(--btn-radius)}
.btn-group .btn:last-child{border-radius:0 var(--btn-radius) var(--btn-radius) 0;
border-right:none}

/* ================================================================
   11. BREADCRUMB — flex 12px, accent links, muted separator
   ================================================================ */
.breadcrumb{font-size:12px;color:var(--text-sub);margin:16px 0;display:flex;
flex-wrap:wrap;gap:6px;align-items:center;line-height:1.5}
.breadcrumb a{color:var(--text-sub);font-weight:500;
transition:color 200ms ease}
.breadcrumb a:hover{color:var(--primary)}
.breadcrumb .sep{opacity:.35;font-size:10px;user-select:none}
.breadcrumb .current{color:var(--text);font-weight:600;pointer-events:none}

/* ================================================================
   12. FILTER PANEL — Geizhals-style sticky sidebar
   ================================================================ */
.filter-panel{position:sticky;top:calc(var(--nav-height) + 16px);
max-height:calc(100dvh - var(--nav-height) - 32px);overflow-y:auto;
background:var(--bg-card);border:1px solid var(--border);
border-radius:var(--radius);padding:0;
scrollbar-width:thin}
.filter-header{display:flex;align-items:center;justify-content:space-between;
padding:16px 20px;border-bottom:1px solid var(--border);
font-weight:700;font-size:14px;position:sticky;top:0;
background:var(--bg-card);z-index:1}
.filter-header .filter-clear{font-size:12px;color:var(--primary);
font-weight:600;cursor:pointer;transition:opacity 200ms ease}
.filter-header .filter-clear:hover{opacity:.7}

.filter-section{padding:16px 20px;border-bottom:1px solid var(--border)}
.filter-section:last-child{border-bottom:none}
.filter-section-title{font-size:12px;font-weight:700;text-transform:uppercase;
letter-spacing:.05em;color:var(--text);margin-bottom:12px;
display:flex;align-items:center;justify-content:space-between;cursor:pointer}
.filter-section-title::after{content:'';width:8px;height:8px;
border-right:1.5px solid var(--text-sub);border-bottom:1.5px solid var(--text-sub);
transform:rotate(45deg);transition:transform 200ms ease;flex-shrink:0}
.filter-section.collapsed .filter-section-title::after{transform:rotate(-135deg)}
.filter-section.collapsed .filter-options{display:none}

/* Custom checkbox — Geizhals clean style */
.filter-checkbox{display:flex;align-items:center;gap:10px;padding:5px 0;
cursor:pointer;font-size:13px;color:var(--text);
transition:color 150ms ease}
.filter-checkbox:hover{color:var(--primary)}
.filter-checkbox input[type="checkbox"]{-webkit-appearance:none;appearance:none;
width:16px;height:16px;border:1.5px solid var(--border);border-radius:3px;
flex-shrink:0;position:relative;cursor:pointer;
transition:all 200ms ease;background:var(--bg-card)}
.filter-checkbox input[type="checkbox"]:checked{background:var(--primary);
border-color:var(--primary)}
.filter-checkbox input[type="checkbox"]:checked::after{content:'';position:absolute;
left:4px;top:1px;width:5px;height:9px;
border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.filter-checkbox .filter-count{margin-left:auto;font-size:11px;
color:var(--text-sub);font-weight:500;
background:var(--bg-light);padding:1px 6px;border-radius:8px;min-width:24px;
text-align:center}

/* Price range filter */
.filter-range{display:flex;align-items:center;gap:8px;margin-top:8px}
.filter-range input{flex:1;padding:8px 10px;font-size:12px;
background:var(--bg-light);border:1px solid var(--border);
border-radius:var(--radius);text-align:center;min-width:0;
transition:border-color 200ms ease}
.filter-range input:focus{border-color:var(--primary)}
.filter-range .range-sep{color:var(--text-sub);font-size:12px;flex-shrink:0}

/* Active filter tags */
.filter-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.filter-tag{display:inline-flex;align-items:center;gap:4px;
padding:4px 10px;font-size:11px;font-weight:600;
background:color-mix(in srgb,var(--primary) 8%,transparent);
color:var(--primary);border-radius:20px;cursor:pointer;
transition:all 200ms ease}
.filter-tag:hover{background:color-mix(in srgb,var(--primary) 15%,transparent)}
.filter-tag .remove{font-size:13px;line-height:1;opacity:.6;
transition:opacity 150ms ease}
.filter-tag:hover .remove{opacity:1}

/* ================================================================
   13. ANIMATIONS + KEYFRAMES
   ================================================================ */
@keyframes fadeInUp{
from{opacity:0;transform:translateY(20px)}
to{opacity:1;transform:translateY(0)}
}
@keyframes fadeInDown{
from{opacity:0;transform:translateY(-16px)}
to{opacity:1;transform:translateY(0)}
}
@keyframes fadeIn{
from{opacity:0}
to{opacity:1}
}
@keyframes slideDown{
from{opacity:0;transform:translateY(-12px)}
to{opacity:1;transform:translateY(0)}
}
@keyframes slideUp{
from{opacity:0;transform:translateY(12px)}
to{opacity:1;transform:translateY(0)}
}
@keyframes slideInRight{
from{opacity:0;transform:translateX(20px)}
to{opacity:1;transform:translateX(0)}
}
@keyframes scaleIn{
from{opacity:0;transform:scale(.92)}
to{opacity:1;transform:scale(1)}
}
@keyframes pulse{
0%,100%{opacity:1}
50%{opacity:.5}
}
@keyframes shimmer{
0%{background-position:-200% 0}
100%{background-position:200% 0}
}
@keyframes spin{
to{transform:rotate(360deg)}
}
@keyframes bounceIn{
0%{opacity:0;transform:scale(.3)}
50%{opacity:1;transform:scale(1.05)}
70%{transform:scale(.9)}
100%{transform:scale(1)}
}
@keyframes ripple{
0%{transform:scale(0);opacity:.5}
100%{transform:scale(4);opacity:0}
}
@keyframes progressBar{
0%{width:0}
100%{width:100%}
}

/* Animation classes */
.animate-in{animation:fadeInUp .5s cubic-bezier(.4,0,.2,1) both}
.animate-fade{animation:fadeIn .4s ease both}
.animate-scale{animation:scaleIn .35s cubic-bezier(.4,0,.2,1) both}
.animate-slide-right{animation:slideInRight .4s cubic-bezier(.4,0,.2,1) both}

/* Delay utilities */
.animate-delay-1{animation-delay:.1s}
.animate-delay-2{animation-delay:.2s}
.animate-delay-3{animation-delay:.3s}
.animate-delay-4{animation-delay:.4s}
.animate-delay-5{animation-delay:.5s}
.animate-delay-6{animation-delay:.6s}

/* Skeleton loading shimmer — 2026 pattern */
.skeleton{background:linear-gradient(90deg,
var(--bg-light) 25%,
color-mix(in srgb,var(--bg-light) 50%,var(--bg)) 37%,
var(--bg-light) 63%);
background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;
border-radius:var(--radius);color:transparent !important;
user-select:none;pointer-events:none}
.skeleton *{visibility:hidden}
.skeleton-text{height:14px;border-radius:4px;margin-bottom:8px}
.skeleton-text.short{width:60%}
.skeleton-text.medium{width:80%}
.skeleton-title{height:20px;border-radius:4px;margin-bottom:12px;width:70%}
.skeleton-image{width:100%;padding-top:100%;border-radius:var(--radius)}
.skeleton-btn{height:40px;width:120px;border-radius:var(--btn-radius)}
.skeleton-avatar{width:40px;height:40px;border-radius:50%}

.pulse{animation:pulse 2s ease-in-out infinite}
.spin{animation:spin 1s linear infinite}

/* ================================================================
   14. RESPONSIVE BREAKPOINTS
   ================================================================ */

/* Desktop XL down */
@media(max-width:1400px){
.three-col-layout{grid-template-columns:220px 1fr}
.three-col-layout>:last-child{display:none}
}

/* Desktop down */
@media(max-width:1200px){
.product-grid{grid-template-columns:repeat(3,1fr)}
.product-grid.cols-5{grid-template-columns:repeat(4,1fr)}
.card-featured{grid-column:span 2}
.two-col-layout{grid-template-columns:240px 1fr;gap:24px}
.footer-grid{grid-template-columns:repeat(3,1fr)}
.mega-menu{min-width:480px;grid-template-columns:repeat(2,1fr)}
.hero-stats{gap:24px}
}

/* Tablet landscape down */
@media(max-width:992px){
.product-grid{grid-template-columns:repeat(2,1fr)}
.product-grid.cols-5,.product-grid.cols-4{grid-template-columns:repeat(3,1fr)}
.card-featured{grid-column:span 2}
.two-col-layout{grid-template-columns:1fr;gap:0}
.two-col-layout aside,.filter-panel{position:static;max-height:none;display:none}
.two-col-layout aside.show,.filter-panel.show{display:block}
.three-col-layout{grid-template-columns:1fr}
.hero{padding:clamp(48px,6vw,64px) 0 clamp(40px,5vw,52px)}
.hero-title{font-size:clamp(1.6rem,1rem + 3vw,2.5rem)}
.nav-links{display:none}
.hamburger{display:flex}
.mega-menu,.nav-dropdown{display:none}
.footer-grid{grid-template-columns:repeat(2,1fr);gap:32px}
.list-view .product-card{max-height:none}
.list-view .product-card .card-image{width:160px;min-width:160px}
}

/* Tablet portrait down */
@media(max-width:768px){
.product-grid{grid-template-columns:repeat(2,1fr);gap:12px}
.product-grid.cols-5,.product-grid.cols-4,.product-grid.cols-3{
grid-template-columns:repeat(2,1fr)}
.card-featured{grid-column:span 1}
.card-horizontal,.list-view .product-card{flex-direction:column;max-height:none}
.card-horizontal .card-image,.list-view .product-card .card-image{
width:100%;min-width:auto;padding-top:60%}
.card-horizontal .card-image img,.list-view .product-card .card-image img{
position:absolute;inset:0;height:100%}
.list-view .product-card .card-info{flex-direction:column;gap:6px}
.list-view .card-title{flex:1 1 auto}
.container{padding:0 16px}
section{padding:clamp(24px,4vw,36px) 0}
.hero{padding:48px 0 36px}
.hero-search{flex-direction:column;padding:12px;gap:8px;max-width:100%}
.hero-search input{width:100%;text-align:center}
.hero-search button{width:100%}
.hero-stats{gap:16px}
.hero-stat-value{font-size:1.25rem}
.price-table{font-size:12px}
.price-table th,.price-table td{padding:10px 12px}
.price-cell{font-size:16px}
.cat-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}
.cat-card .cat-icon{width:40px;height:40px;font-size:22px}
.footer-grid{grid-template-columns:1fr 1fr;gap:24px}
.footer-bottom{flex-direction:column;text-align:center;gap:12px}
.card-compare-btn{opacity:1;transform:translateY(0)}
.card-actions{opacity:1;transform:translateX(0)}
nav .nav-search{min-width:0;flex:1;width:auto}
}

/* Mobile down */
@media(max-width:576px){
.product-grid{grid-template-columns:1fr;gap:16px}
.product-grid.cols-compact{grid-template-columns:repeat(2,1fr);gap:10px}
.card-compact .card-image{padding-top:50%}
.hero-title{font-size:1.5rem;letter-spacing:-.02em}
.hero-subtitle{font-size:.9rem}
.breadcrumb{font-size:11px;gap:4px}
.btn-lg{padding:12px 24px;font-size:14px}
.btn-xl{padding:14px 28px;font-size:16px}
.cat-grid{grid-template-columns:repeat(2,1fr)}
.footer-grid{grid-template-columns:1fr}
.go-btn{width:100%;justify-content:center}
.price-table-wrap{margin:0 -16px;border-radius:0;border-left:none;border-right:none}
.price-table{display:block;overflow-x:auto;white-space:nowrap;
-webkit-overflow-scrolling:touch}
nav,.site-nav{padding:0 12px;height:56px}
.nav-search{min-width:0;flex:1}
.card-actions{flex-direction:row;top:8px;left:8px}
.card-badge,.savings-badge{top:8px;right:8px;font-size:10px;padding:4px 8px}
.filter-section{padding:12px 16px}
.hero-stats{flex-direction:column;gap:12px}
}

/* Tiny screens */
@media(max-width:380px){
.product-grid.cols-compact{grid-template-columns:1fr}
.card-price{font-size:18px}
.card-title{font-size:13px}
.hero-search button{padding:12px 20px;font-size:13px}
}

/* ================================================================
   15. UTILITIES
   ================================================================ */

/* Text utilities */
.text-accent{color:var(--primary)}
.text-muted{color:var(--text-sub)}
.text-success{color:#16a34a}
.text-warning{color:#f59e0b}
.text-danger{color:#ef4444}
.text-center{text-align:center}
.text-right{text-align:right}
.text-left{text-align:left}
.text-small{font-size:12px}
.text-xs{font-size:11px}
.text-lg{font-size:18px}
.text-xl{font-size:22px}
.text-balance{text-wrap:balance}
.text-tabular{font-variant-numeric:tabular-nums}
.font-heading{font-family:var(--font-heading)}
.font-bold{font-weight:700}
.font-semibold{font-weight:600}
.font-medium{font-weight:500}

/* Background utilities */
.bg-card{background:var(--bg-card)}
.bg-light{background:var(--bg-light)}
.bg-primary{background:var(--primary);color:#fff}
.bg-gradient{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff}

/* Flexbox utilities */
.flex{display:flex}
.inline-flex{display:inline-flex}
.flex-center{display:flex;align-items:center;justify-content:center}
.flex-between{display:flex;align-items:center;justify-content:space-between}
.flex-start{display:flex;align-items:flex-start}
.flex-end{display:flex;align-items:flex-end;justify-content:flex-end}
.flex-col{display:flex;flex-direction:column}
.flex-wrap{flex-wrap:wrap}
.flex-1{flex:1 1 0%}
.items-center{align-items:center}
.items-start{align-items:flex-start}
.justify-center{justify-content:center}
.justify-between{justify-content:space-between}

/* Gap utilities — 4px base unit like Geizhals */
.gap-xs{gap:4px}
.gap-sm{gap:8px}
.gap-md{gap:16px}
.gap-lg{gap:24px}
.gap-xl{gap:32px}

/* Truncation */
.truncate-1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.truncate-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
overflow:hidden;text-overflow:ellipsis}
.truncate-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;
overflow:hidden;text-overflow:ellipsis}

/* Accessibility */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Display */
.relative{position:relative}
.absolute{position:absolute}
.sticky{position:sticky}
.hidden{display:none}
.block{display:block}
.inline-block{display:inline-block}
.grid{display:grid}
.overflow-hidden{overflow:hidden}
.overflow-auto{overflow:auto}

/* Spacing */
.mb-0{margin-bottom:0}.mb-1{margin-bottom:8px}.mb-2{margin-bottom:16px}
.mb-3{margin-bottom:24px}.mb-4{margin-bottom:32px}.mb-5{margin-bottom:48px}
.mt-0{margin-top:0}.mt-1{margin-top:8px}.mt-2{margin-top:16px}
.mt-3{margin-top:24px}.mt-4{margin-top:32px}.mt-5{margin-top:48px}
.mx-auto{margin-left:auto;margin-right:auto}
.p-0{padding:0}.p-1{padding:8px}.p-2{padding:16px}.p-3{padding:24px}.p-4{padding:32px}
.px-1{padding-left:8px;padding-right:8px}.px-2{padding-left:16px;padding-right:16px}
.py-1{padding-top:8px;padding-bottom:8px}.py-2{padding-top:16px;padding-bottom:16px}

/* Border + radius */
.rounded{border-radius:var(--radius)}.rounded-lg{border-radius:calc(var(--radius) + 4px)}
.rounded-full{border-radius:9999px}.rounded-none{border-radius:0}
.border{border:1px solid var(--border)}
.border-t{border-top:1px solid var(--border)}
.border-b{border-bottom:1px solid var(--border)}
.border-primary{border-color:var(--primary)}

/* Shadow utilities */
.shadow-sm{box-shadow:0 1px 2px rgba(0,0,0,.04),0 1px 4px rgba(0,0,0,.03)}
.shadow{box-shadow:var(--shadow)}
.shadow-md{box-shadow:0 4px 12px rgba(0,0,0,.06),0 8px 24px rgba(0,0,0,.06)}
.shadow-lg{box-shadow:0 8px 24px rgba(0,0,0,.08),0 24px 48px rgba(0,0,0,.08)}
.shadow-hover{box-shadow:var(--shadow-hover)}
.shadow-none{box-shadow:none}

/* Sizing */
.w-full{width:100%}
.h-full{height:100%}
.min-h-screen{min-height:100dvh}

/* Opacity */
.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-100{opacity:1}

/* Interaction */
.pointer{cursor:pointer}
.no-select{user-select:none}
.transition{transition:all var(--transition)}
.transition-fast{transition:all 150ms ease}
.transition-slow{transition:all 400ms ease}

/* Glassmorphism utility — 2026 */
.glass{background:rgba(255,255,255,.6);backdrop-filter:blur(16px) saturate(180%);
-webkit-backdrop-filter:blur(16px) saturate(180%);
border:1px solid rgba(255,255,255,.2)}
.glass-dark{background:rgba(0,0,0,.4);backdrop-filter:blur(16px) saturate(180%);
-webkit-backdrop-filter:blur(16px) saturate(180%);
border:1px solid rgba(255,255,255,.08);color:#fff}

/* Dividers */
.divider{height:1px;background:var(--border);margin:24px 0}
.divider-gradient{height:1px;
background:linear-gradient(90deg,transparent,var(--border),transparent);margin:24px 0}

/* Badges / Tags */
.tag{display:inline-flex;align-items:center;gap:4px;
padding:3px 10px;font-size:11px;font-weight:600;
background:var(--bg-light);color:var(--text-sub);
border-radius:20px;border:1px solid var(--border)}
.tag-primary{background:color-mix(in srgb,var(--primary) 10%,transparent);
color:var(--primary);border-color:color-mix(in srgb,var(--primary) 20%,transparent)}
.tag-success{background:rgba(34,197,94,.08);color:#16a34a;
border-color:rgba(34,197,94,.15)}
.tag-warning{background:rgba(245,158,11,.08);color:#d97706;
border-color:rgba(245,158,11,.15)}

/* Tooltip */
[data-tooltip]{position:relative}
[data-tooltip]::before{content:attr(data-tooltip);position:absolute;
bottom:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(4px);
padding:5px 10px;font-size:11px;font-weight:500;white-space:nowrap;
background:#1a1a1a;color:#fff;border-radius:4px;
opacity:0;visibility:hidden;pointer-events:none;
transition:all 200ms cubic-bezier(.4,0,.2,1);z-index:100}
[data-tooltip]:hover::before{opacity:1;visibility:visible;
transform:translateX(-50%) translateY(0)}

/* View toggle — Grid/List switch like Geizhals */
.view-toggle{display:inline-flex;border:1px solid var(--border);
border-radius:var(--radius);overflow:hidden}
.view-toggle button{padding:8px 12px;background:var(--bg-card);
border:none;cursor:pointer;font-size:14px;color:var(--text-sub);
transition:all 200ms ease;display:flex;align-items:center}
.view-toggle button.active{background:var(--primary);color:#fff}
.view-toggle button:hover:not(.active){background:var(--bg-light)}

/* Sort dropdown */
.sort-select{display:inline-flex;align-items:center;gap:6px;
padding:8px 14px;font-size:13px;font-weight:500;
background:var(--bg-card);border:1px solid var(--border);
border-radius:var(--radius);cursor:pointer;color:var(--text);
transition:border-color 200ms ease;
-webkit-appearance:none;appearance:none;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
background-repeat:no-repeat;background-position:right 10px center;
padding-right:30px}
.sort-select:focus{border-color:var(--primary)}

/* Notification dot */
.has-notification{position:relative}
.has-notification::after{content:'';position:absolute;top:-2px;right:-2px;
width:8px;height:8px;border-radius:50%;background:#ef4444;
border:2px solid var(--bg-card)}

/* Loading spinner */
.spinner{width:20px;height:20px;border:2px solid var(--border);
border-top-color:var(--primary);border-radius:50%;animation:spin .6s linear infinite}
.spinner-lg{width:32px;height:32px;border-width:3px}

/* Empty state */
.empty-state{text-align:center;padding:48px 24px;color:var(--text-sub)}
.empty-state-icon{font-size:48px;margin-bottom:16px;opacity:.5}
.empty-state-title{font-size:18px;font-weight:600;color:var(--text);margin-bottom:8px}
.empty-state-text{font-size:14px;max-width:400px;margin:0 auto 24px;line-height:1.6}

/* ================================================================
   NEW COMPONENTS — PriceRunner/Idealo/Keepa/CamelCamelCamel Features
   ================================================================ */

/* Price History Chart */
.price-chart-container{background:var(--bg-card);border:1px solid var(--border);
border-radius:calc(var(--radius) + 4px);padding:24px;margin:24px 0}
.price-chart-bars{display:flex;align-items:flex-end;gap:4px;height:120px;
padding:8px 0;border-bottom:1px solid var(--border)}
.price-chart-bar{flex:1;background:linear-gradient(180deg,var(--primary),color-mix(in srgb,var(--primary) 60%,var(--secondary)));
border-radius:3px 3px 0 0;min-width:12px;transition:all .3s ease;position:relative;cursor:pointer}
.price-chart-bar:hover{filter:brightness(1.15);transform:scaleY(1.05);transform-origin:bottom}
.price-chart-bar.low{background:linear-gradient(180deg,#10b981,#059669)}
.price-chart-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:16px;
text-align:center}
.price-chart-stats dt{font-size:11px;text-transform:uppercase;letter-spacing:.05em;
color:var(--text-sub);margin-bottom:4px}
.price-chart-stats dd{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}
.price-chart-stats dd.low{color:#10b981}
.price-chart-stats dd.high{color:#ef4444}
.price-chart-toggle{display:inline-flex;gap:4px;margin-bottom:16px}
.price-chart-toggle button{padding:4px 12px;font-size:12px;font-weight:600;
border-radius:20px;border:1px solid var(--border);background:var(--bg);
color:var(--text-sub);cursor:pointer;transition:all .2s ease}
.price-chart-toggle button.active,.price-chart-toggle button:hover{
background:var(--primary);color:#fff;border-color:var(--primary)}

/* "LOWEST PRICE" Badge */
.lowest-price-badge{display:inline-flex;align-items:center;gap:6px;
padding:4px 12px;font-size:11px;font-weight:800;text-transform:uppercase;
letter-spacing:.05em;color:#fff;border-radius:20px;
background:linear-gradient(135deg,#10b981,#059669);
box-shadow:0 2px 8px rgba(16,185,129,.3);animation:badge-pulse 2s ease infinite}
@keyframes badge-pulse{0%,100%{box-shadow:0 2px 8px rgba(16,185,129,.3)}
50%{box-shadow:0 2px 16px rgba(16,185,129,.5)}}

/* Deal Score Circle */
.deal-score{width:40px;height:40px;border-radius:50%;display:flex;
align-items:center;justify-content:center;font-size:13px;font-weight:800;
color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.2);position:absolute;top:8px;left:8px;
z-index:2}

/* Merchant Trust & Shipping Info */
.merchant-trust{display:flex;align-items:center;gap:8px;font-size:12px;
color:var(--text-sub)}
.merchant-verified{display:inline-flex;align-items:center;gap:3px;
padding:2px 8px;background:#dbeafe;color:#1d4ed8;border-radius:12px;
font-size:10px;font-weight:700}
.merchant-shipping{display:flex;align-items:center;gap:12px;font-size:12px;
color:var(--text-sub);flex-wrap:wrap}
.merchant-shipping span{display:flex;align-items:center;gap:4px}
.merchant-buyers{font-size:11px;color:#f59e0b;font-weight:600}

/* Variant Selector (Idealo-style) */
.variant-selector{display:flex;gap:16px;flex-wrap:wrap;margin:16px 0}
.variant-group{display:flex;flex-direction:column;gap:6px}
.variant-group label{font-size:12px;font-weight:600;color:var(--text-sub);
text-transform:uppercase;letter-spacing:.04em}
.variant-options{display:flex;gap:6px;flex-wrap:wrap}
.variant-btn{padding:6px 14px;font-size:13px;font-weight:500;
border:1.5px solid var(--border);border-radius:var(--radius);
background:var(--bg-card);cursor:pointer;transition:all .2s ease;color:var(--text)}
.variant-btn:hover,.variant-btn.active{border-color:var(--primary);
color:var(--primary);background:color-mix(in srgb,var(--primary) 6%,transparent)}
.variant-color{width:28px;height:28px;border-radius:50%;border:2px solid var(--border);
cursor:pointer;transition:all .2s ease;position:relative}
.variant-color:hover,.variant-color.active{border-color:var(--primary);
box-shadow:0 0 0 2px var(--primary);transform:scale(1.1)}
.variant-color.active::after{content:'\2713';position:absolute;inset:0;
display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;
text-shadow:0 1px 2px rgba(0,0,0,.5)}

/* Lightning Deals Section */
.lightning-section{background:linear-gradient(135deg,#dc2626,#b91c1c);
color:#fff;border-radius:calc(var(--radius) + 4px);padding:24px;margin:24px 0;
position:relative;overflow:hidden}
.lightning-section::before{content:'';position:absolute;top:-50%;right:-20%;
width:300px;height:300px;background:rgba(255,255,255,.05);border-radius:50%}
.lightning-title{font-size:clamp(18px,2.5vw,24px);font-weight:800;
display:flex;align-items:center;gap:12px;margin-bottom:16px}
.lightning-timer{display:inline-flex;gap:4px;align-items:center}
.lightning-timer span{background:rgba(0,0,0,.3);padding:4px 8px;
border-radius:4px;font-size:16px;font-weight:700;min-width:32px;text-align:center;
font-variant-numeric:tabular-nums}
.lightning-timer small{font-size:10px;opacity:.7}

/* Price Drop Section */
.price-drop-card{display:flex;align-items:center;gap:16px;
padding:16px;background:var(--bg-card);border:1px solid var(--border);
border-radius:var(--radius);transition:all .3s ease}
.price-drop-card:hover{border-color:var(--primary);transform:translateY(-2px);
box-shadow:var(--shadow-hover)}
.price-drop-arrow{color:#10b981;font-size:24px;font-weight:700}
.price-drop-old{color:var(--text-sub);text-decoration:line-through;font-size:14px}
.price-drop-new{color:#10b981;font-size:20px;font-weight:700}
.price-drop-pct{background:#10b981;color:#fff;padding:2px 8px;
border-radius:12px;font-size:12px;font-weight:700}

/* Cookie Consent */
.cookie-banner{position:fixed;bottom:0;left:0;right:0;z-index:9999;
background:var(--bg-card);border-top:1px solid var(--border);
box-shadow:0 -4px 20px rgba(0,0,0,.1);padding:16px 24px;
display:flex;align-items:center;justify-content:space-between;gap:16px;
flex-wrap:wrap;font-size:13px;animation:slideUp .4s ease}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.cookie-banner button{padding:8px 20px;border-radius:var(--btn-radius);
font-weight:600;font-size:13px;cursor:pointer;transition:all .2s ease}
.cookie-accept{background:var(--primary);color:#fff;border:none}
.cookie-accept:hover{filter:brightness(1.1)}

/* Back to Top */
.back-to-top{position:fixed;bottom:24px;right:24px;z-index:999;
width:44px;height:44px;border-radius:50%;background:var(--primary);color:#fff;
display:flex;align-items:center;justify-content:center;font-size:18px;
box-shadow:0 4px 12px rgba(0,0,0,.15);cursor:pointer;
transition:all .3s ease;opacity:.8}
.back-to-top:hover{opacity:1;transform:translateY(-3px);
box-shadow:0 6px 20px rgba(0,0,0,.2)}

/* Compare Bar (sticky bottom) */
.compare-bar{position:fixed;bottom:0;left:0;right:0;z-index:998;
background:var(--bg-card);border-top:2px solid var(--primary);
box-shadow:0 -4px 20px rgba(0,0,0,.1);padding:12px 24px;
display:flex;align-items:center;justify-content:space-between;gap:16px;
transform:translateY(100%);transition:transform .3s ease}
.compare-bar.visible{transform:translateY(0)}

/* Price Distribution Bar */
.price-dist-bar{height:8px;background:var(--bg-light);border-radius:4px;
position:relative;margin:8px 0 16px;overflow:hidden}
.price-dist-fill{height:100%;border-radius:4px;
background:linear-gradient(90deg,#10b981,#f59e0b,#ef4444);
transition:width .3s ease}
.price-dist-markers{display:flex;justify-content:space-between;
font-size:10px;color:var(--text-sub);margin-top:4px}

/* Sparkline (inline mini chart) */
.sparkline{display:inline-flex;align-items:flex-end;gap:1px;height:20px}
.sparkline-bar{width:4px;border-radius:1px;
background:var(--primary);opacity:.6;transition:opacity .2s ease}
.sparkline-bar:hover{opacity:1}
.sparkline-bar.trend-down{background:#10b981}
.sparkline-bar.trend-up{background:#ef4444}

/* View Toggle Improvements */
.view-toggle-bar{display:flex;align-items:center;justify-content:space-between;
padding:12px 0;border-bottom:1px solid var(--border);margin-bottom:20px;flex-wrap:wrap;gap:12px}

/* Tag */
.tag{display:inline-flex;align-items:center;gap:4px;
padding:4px 12px;font-size:12px;font-weight:600;
border-radius:20px;border:1px solid var(--border);
background:var(--bg-card);color:var(--text);
transition:all .2s ease;cursor:pointer;white-space:nowrap}
.tag:hover{border-color:var(--primary);color:var(--primary);
background:color-mix(in srgb,var(--primary) 6%,transparent)}

/* Print */
@media print{
nav,.site-nav,.hamburger,.mobile-menu,.card-compare-btn,.card-actions,
.filter-panel,.go-btn,.hero-search button,.btn,.footer-social,
.cookie-banner,.back-to-top,.compare-bar,.lightning-section{display:none !important}
body{background:#fff;color:#000;font-size:12pt}
.product-card{break-inside:avoid;box-shadow:none;border:1px solid #ddd}
.site-footer{background:#fff;color:#333;border-top:1px solid #ddd}
}

/* ================================================================
   Category Template Renderer (CTR) — Shared Components
   ================================================================ */
.ctr-section{margin:28px 0}
.ctr-section-title{font-size:clamp(18px,2.5vw,24px);font-weight:700;margin-bottom:16px;display:flex;align-items:center;gap:10px;font-family:var(--font-heading)}
.ctr-icon{font-size:1.2em}

/* === 1. Specs Table / Electronics === */
.ctr-score-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.ctr-score-card{display:flex;gap:16px;align-items:center;padding:20px;background:var(--bg-card,#fff);border-radius:var(--radius,12px);border:1px solid var(--border,#e5e7eb);transition:transform 0.2s,box-shadow 0.2s}
.ctr-score-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.08)}
.ctr-score-ring{width:72px;height:72px;border-radius:50%;background:conic-gradient(var(--score-color,#22c55e) calc(var(--score,0) * 1%),#e5e7eb 0);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative}
.ctr-score-ring::before{content:'';position:absolute;inset:6px;border-radius:50%;background:var(--bg-card,#fff)}
.ctr-score-num{position:relative;z-index:1;font-size:22px;font-weight:800;color:var(--score-color)}
.ctr-score-info{min-width:0}
.ctr-score-title{font-weight:600;font-size:14px;color:var(--text);text-decoration:none;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctr-score-title:hover{color:var(--primary)}
.ctr-score-price{font-size:20px;font-weight:700;color:var(--primary);margin-top:4px}
.ctr-score-meta{font-size:12px;color:var(--text-muted);margin-top:2px}

/* Matrix */
.ctr-matrix-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.ctr-matrix{width:100%;border-collapse:collapse;background:var(--bg-card,#fff);border-radius:var(--radius);overflow:hidden}
.ctr-matrix th,.ctr-matrix td{padding:12px 16px;border-bottom:1px solid var(--border,#e5e7eb)}
.ctr-matrix-corner{width:140px}
.ctr-matrix-head{text-align:center;padding:16px 12px !important;background:var(--bg-alt,#f9fafb)}
.ctr-matrix-img{width:64px;height:64px;object-fit:contain;margin:0 auto 8px;display:block}
.ctr-matrix-name{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctr-matrix-price{font-size:16px;font-weight:700;color:var(--primary);margin-top:4px}
.ctr-matrix-cell{text-align:center;font-size:14px}
.ctr-matrix-label{font-weight:600;font-size:13px;white-space:nowrap}

/* Benchmark Bars */
.ctr-bench-item{margin-bottom:12px}
.ctr-bench-label{display:flex;justify-content:space-between;font-size:13px;margin-bottom:4px}
.ctr-bench-val{font-weight:700}
.ctr-bench-bar{height:8px;background:var(--bg-alt,#f1f5f9);border-radius:4px;overflow:hidden}
.ctr-bench-fill{height:100%;border-radius:4px;transition:width 0.6s ease}

/* VS Compare */
.ctr-vs-wrap{display:flex;align-items:center;justify-content:center;gap:24px;padding:32px 0}
.ctr-vs-card{text-align:center;flex:1;max-width:280px;padding:24px;background:var(--bg-card,#fff);border-radius:var(--radius);border:1px solid var(--border);transition:transform 0.2s}
.ctr-vs-card:hover{transform:scale(1.02)}
.ctr-vs-img{width:120px;height:120px;object-fit:contain;margin:0 auto 12px;display:block}
.ctr-vs-name{font-size:14px;font-weight:600;margin-bottom:8px}
.ctr-vs-price{font-size:22px;font-weight:700;color:var(--primary)}
.ctr-vs-badge{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--secondary,#6366f1));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:16px;flex-shrink:0;box-shadow:0 4px 12px rgba(0,0,0,.15)}

/* === 2. Fashion / Size Chart === */
.ctr-style-bar{display:flex;gap:8px;flex-wrap:wrap;overflow-x:auto;padding-bottom:4px}
.ctr-style-pill{padding:8px 20px;border-radius:24px;border:1.5px solid var(--accent,#ec4899);background:transparent;color:var(--accent);font-size:13px;font-weight:600;cursor:pointer;transition:all 0.2s;white-space:nowrap}
.ctr-style-pill:hover{background:var(--accent);color:#fff}

.ctr-lookbook-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px}
.ctr-look-card{text-decoration:none;color:inherit;display:block;border-radius:var(--radius);overflow:hidden;background:var(--bg-card,#fff);border:1px solid var(--border);transition:transform 0.3s,box-shadow 0.3s;position:relative}
.ctr-look-card:hover{transform:translateY(-4px);box-shadow:0 12px 32px rgba(0,0,0,.1)}
.ctr-look-large{grid-row:span 2}
.ctr-look-img-wrap{position:relative;overflow:hidden;aspect-ratio:3/4}
.ctr-look-img{width:100%;height:100%;object-fit:cover;transition:transform 0.5s}
.ctr-look-card:hover .ctr-look-img{transform:scale(1.06)}
.ctr-look-overlay{position:absolute;inset:0;background:rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 0.3s}
.ctr-look-card:hover .ctr-look-overlay{opacity:1}
.ctr-look-quick{color:#fff;font-weight:700;font-size:14px;padding:8px 20px;border:2px solid #fff;border-radius:24px}
.ctr-look-info{padding:14px}
.ctr-look-brand{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);font-weight:600}
.ctr-look-title{font-size:14px;font-weight:600;margin:4px 0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctr-look-price-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.ctr-look-price{font-weight:700;font-size:16px;color:var(--primary)}
.ctr-look-old{text-decoration:line-through;color:var(--text-muted);font-size:13px}
.ctr-look-colors{display:flex;gap:6px;margin-bottom:6px}
.ctr-color-dot{width:16px;height:16px;border-radius:50%;border:1.5px solid #ddd;cursor:pointer}
.ctr-look-sizes{display:flex;gap:4px;flex-wrap:wrap}
.ctr-size-tag{font-size:11px;padding:2px 8px;border:1px solid var(--border);border-radius:4px;color:var(--text-muted)}
.ctr-trend-badge{position:absolute;top:12px;left:12px;z-index:2;color:#fff;font-size:10px;font-weight:700;padding:3px 10px;border-radius:4px;letter-spacing:0.5px}

/* Size Table */
.ctr-size-table-wrap{overflow-x:auto}
.ctr-size-table{width:100%;border-collapse:collapse;background:var(--bg-card,#fff);border-radius:var(--radius);overflow:hidden;font-size:14px}
.ctr-size-table th,.ctr-size-table td{padding:12px 20px;border-bottom:1px solid var(--border);text-align:center}
.ctr-size-table th{background:var(--bg-alt,#f9fafb);font-weight:700}
.ctr-size-label{font-weight:700;color:var(--primary)}

/* === 3. Grocery / Unit Price === */
.ctr-basket-list{display:flex;flex-direction:column;gap:12px}
.ctr-basket-item{display:flex;align-items:center;gap:12px;padding:16px;background:var(--bg-card,#fff);border-radius:var(--radius);border:1px solid var(--border);transition:box-shadow 0.2s}
.ctr-basket-item:hover{box-shadow:0 4px 12px rgba(0,0,0,.06)}
.ctr-basket-check{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}
.ctr-basket-img{width:56px;height:56px;object-fit:contain;flex-shrink:0;border-radius:8px}
.ctr-basket-info{flex:1;min-width:0}
.ctr-basket-name{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctr-basket-weight{font-size:12px;color:var(--text-muted)}
.ctr-basket-prices{text-align:right;min-width:100px}
.ctr-basket-price{font-weight:700;font-size:16px;color:var(--primary)}
.ctr-basket-unit{font-size:11px;color:var(--text-muted)}
.ctr-basket-qty{display:flex;align-items:center;gap:8px}
.ctr-qty-btn{width:28px;height:28px;border-radius:50%;border:1px solid var(--border);background:var(--bg-alt);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center}
.ctr-qty-num{font-weight:700;font-size:14px;min-width:20px;text-align:center}
.ctr-basket-total{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--bg-alt);border-radius:var(--radius);margin-top:16px;font-weight:700;font-size:18px}
.ctr-eco-badge{font-size:10px;padding:2px 8px;border-radius:10px;font-weight:700;display:inline-block;margin-top:2px}
.ctr-eco-organic{background:#22c55e22;color:#16a34a}

/* Store comparison bars */
.ctr-store-compare{display:flex;flex-direction:column;gap:10px}
.ctr-store-row{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--bg-card,#fff);border-radius:var(--radius);border:1px solid var(--border)}
.ctr-store-row.ctr-store-cheapest{border-color:#22c55e;background:#22c55e08}
.ctr-store-name{font-weight:600;font-size:14px;min-width:100px}
.ctr-store-bar-wrap{flex:1;height:12px;background:var(--bg-alt);border-radius:6px;overflow:hidden}
.ctr-store-bar{height:100%;border-radius:6px;transition:width 0.6s ease}
.ctr-store-total{font-weight:700;font-size:16px;min-width:80px;text-align:right}
.ctr-cheapest-tag{font-size:10px;background:#22c55e;color:#fff;padding:2px 8px;border-radius:10px;font-weight:700}

/* === 4. Rating Focus / Beauty & Books === */
.ctr-rating-overview{display:flex;gap:32px;align-items:center;padding:24px;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);flex-wrap:wrap}
.ctr-rating-big{text-align:center;min-width:120px}
.ctr-rating-num{font-size:48px;font-weight:800;color:var(--primary);line-height:1}
.ctr-rating-stars-big{font-size:20px;color:#eab308;margin:6px 0}
.ctr-rating-total{font-size:13px;color:var(--text-muted)}
.ctr-rating-dist{flex:1;min-width:200px}
.ctr-rating-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ctr-rating-stars{font-size:12px;color:#eab308;min-width:80px}
.ctr-rating-bar-wrap{flex:1;height:8px;background:var(--bg-alt);border-radius:4px;overflow:hidden}
.ctr-rating-bar{height:100%;border-radius:4px}
.ctr-rating-count{font-size:12px;color:var(--text-muted);min-width:30px;text-align:right}

.ctr-review-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.ctr-review-card{display:block;text-decoration:none;color:inherit;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;transition:transform 0.2s,box-shadow 0.2s;position:relative}
.ctr-review-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.08)}
.ctr-review-img{width:100%;aspect-ratio:1;object-fit:contain;background:var(--bg-alt)}
.ctr-review-info{padding:14px}
.ctr-review-brand{font-size:11px;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-muted);font-weight:600}
.ctr-review-title{font-size:14px;font-weight:600;margin:4px 0}
.ctr-review-rating{font-size:13px;margin:4px 0;display:flex;align-items:center;gap:4px}
.ctr-review-price{font-size:18px;font-weight:700;color:var(--primary)}
.ctr-bestfor-tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}
.ctr-bestfor-tag{font-size:10px;padding:3px 8px;border-radius:12px;background:color-mix(in srgb,var(--accent,#f472b6) 12%,transparent);color:var(--accent,#f472b6);font-weight:600;border:1px solid color-mix(in srgb,var(--accent) 20%,transparent)}
.ctr-award-badge{position:absolute;top:12px;right:12px;color:#fff;font-size:11px;font-weight:700;padding:4px 12px;border-radius:20px;z-index:2}

/* === 5. Compatibility / Automotive === */
.ctr-vehicle-selector{display:flex;gap:12px;flex-wrap:wrap;padding:24px;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border)}
.ctr-vehicle-select{flex:1;min-width:140px;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;background:var(--bg);cursor:pointer}
.ctr-vehicle-btn{padding:12px 28px;border:none;border-radius:var(--radius);color:#fff;font-weight:700;font-size:14px;cursor:pointer}

.ctr-fit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.ctr-fit-card{display:block;text-decoration:none;color:inherit;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);padding:16px;transition:transform 0.2s,box-shadow 0.2s}
.ctr-fit-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.07)}
.ctr-fit-badges{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.ctr-oem-badge{font-size:10px;padding:3px 10px;border-radius:10px;background:#3b82f622;color:#3b82f6;font-weight:700}
.ctr-aftermarket-badge{font-size:10px;padding:3px 10px;border-radius:10px;background:#f5970622;color:#d97706;font-weight:700}
.ctr-fit-verified{font-size:10px;color:#22c55e;font-weight:600}
.ctr-fit-img{width:80px;height:80px;object-fit:contain;float:right;margin-left:12px}
.ctr-fit-info{}
.ctr-fit-title{font-weight:600;font-size:14px;margin-bottom:4px}
.ctr-fit-brand{font-size:12px;color:var(--text-muted)}
.ctr-fit-price{font-size:20px;font-weight:700;color:var(--primary);margin:6px 0}
.ctr-fit-meta{display:flex;gap:12px;font-size:12px;color:var(--text-muted)}

.ctr-compat-list{display:flex;flex-direction:column;gap:8px}
.ctr-compat-item{padding:10px 16px;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);font-size:14px}

/* === 6. Visual Grid / Home === */
.ctr-room-bar{display:flex;gap:8px;flex-wrap:wrap;overflow-x:auto}
.ctr-room-tab{padding:10px 24px;border-radius:8px;border:1.5px solid var(--border);background:transparent;font-size:14px;font-weight:600;cursor:pointer;transition:all 0.2s}
.ctr-room-tab:hover,.ctr-room-active{background:var(--accent,#d97706);color:#fff;border-color:var(--accent)}

.ctr-visual-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;grid-auto-flow:dense}
.ctr-visual-card{text-decoration:none;color:inherit;border-radius:var(--radius);overflow:hidden;background:var(--bg-card);border:1px solid var(--border);transition:transform 0.3s,box-shadow 0.3s}
.ctr-visual-card:hover{transform:translateY(-4px);box-shadow:0 12px 32px rgba(0,0,0,.1)}
.ctr-visual-tall{grid-row:span 2}
.ctr-visual-img-wrap{position:relative;overflow:hidden;aspect-ratio:1}
.ctr-visual-tall .ctr-visual-img-wrap{aspect-ratio:2/3}
.ctr-visual-img{width:100%;height:100%;object-fit:cover;transition:transform 0.5s}
.ctr-visual-card:hover .ctr-visual-img{transform:scale(1.05)}
.ctr-visual-hover{position:absolute;bottom:0;left:0;right:0;padding:12px;background:linear-gradient(transparent,rgba(0,0,0,.6));color:#fff;opacity:0;transition:opacity 0.3s}
.ctr-visual-card:hover .ctr-visual-hover{opacity:1}
.ctr-visual-dims{font-size:12px}
.ctr-visual-info{padding:14px}
.ctr-visual-title{font-size:14px;font-weight:600;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctr-visual-price{font-size:18px;font-weight:700;color:var(--primary)}
.ctr-visual-material{font-size:12px;color:var(--text-muted);margin-top:2px}
.ctr-visual-finishes{display:flex;gap:4px;margin-top:6px}
.ctr-finish-dot{width:18px;height:18px;border-radius:4px;border:1px solid #ddd;cursor:pointer}

/* === 7. Bundle Deal / Baby & Pets === */
.ctr-stage-bar{display:flex;gap:8px;flex-wrap:wrap}
.ctr-stage-pill{padding:10px 20px;border-radius:24px;border:1.5px solid var(--accent,#b45309);background:transparent;color:var(--accent);font-size:13px;font-weight:600;cursor:pointer;transition:all 0.2s}
.ctr-stage-pill:hover,.ctr-stage-active{background:var(--accent);color:#fff}

.ctr-bundle-builder{display:grid;grid-template-columns:1fr 280px;gap:24px}
@media (max-width:768px){.ctr-bundle-builder{grid-template-columns:1fr}}
.ctr-bundle-items{display:flex;flex-direction:column;gap:10px}
.ctr-bundle-item{display:flex;align-items:center;gap:12px;padding:12px;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border)}
.ctr-bundle-check{width:18px;height:18px;accent-color:var(--primary)}
.ctr-bundle-img{width:48px;height:48px;object-fit:contain;border-radius:8px}
.ctr-bundle-info{flex:1;min-width:0}
.ctr-bundle-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctr-bundle-price{font-size:15px;font-weight:700;color:var(--primary)}
.ctr-bundle-summary{padding:20px;background:var(--bg-alt);border-radius:var(--radius);border:1px solid var(--border)}
.ctr-bundle-row{display:flex;justify-content:space-between;padding:8px 0;font-size:14px}
.ctr-bundle-save{color:#22c55e;font-weight:600}
.ctr-bundle-final{font-size:18px;font-weight:700;border-top:2px solid var(--border);padding-top:12px;margin-top:8px}
.ctr-bundle-btn{width:100%;padding:14px;border:none;border-radius:var(--radius);color:#fff;font-weight:700;font-size:15px;cursor:pointer;margin-top:16px}

/* === 8. Subscription / Health & Office === */
.ctr-sub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.ctr-sub-card{display:flex;text-decoration:none;color:inherit;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;transition:transform 0.2s,box-shadow 0.2s}
.ctr-sub-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.07)}
.ctr-sub-img{width:100px;height:100px;object-fit:contain;background:var(--bg-alt);flex-shrink:0;padding:8px}
.ctr-sub-info{padding:14px;flex:1}
.ctr-sub-title{font-weight:600;font-size:14px;margin-bottom:2px}
.ctr-sub-brand{font-size:12px;color:var(--text-muted)}
.ctr-sub-pricing{display:flex;gap:12px;margin-top:10px}
.ctr-sub-onetime,.ctr-sub-recurring{flex:1;padding:8px 12px;border-radius:8px;text-align:center}
.ctr-sub-onetime{background:var(--bg-alt)}
.ctr-sub-recurring{border:2px solid var(--primary);background:color-mix(in srgb,var(--primary) 5%,transparent)}
.ctr-sub-label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:0.5px;font-weight:600;margin-bottom:2px}
.ctr-sub-amount{display:block;font-size:18px;font-weight:700}
.ctr-sub-save{display:block;font-size:10px;color:#22c55e;font-weight:700;margin-top:2px}

.ctr-sub-options{display:flex;gap:12px;flex-wrap:wrap}
.ctr-sub-option{flex:1;min-width:140px;padding:16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;position:relative}
.ctr-sub-popular{border-width:2px}
.ctr-sub-pop-label{position:absolute;top:-10px;left:50%;transform:translateX(-50%);color:#fff;font-size:10px;font-weight:700;padding:2px 12px;border-radius:10px;white-space:nowrap}

/* === 9. Performance / Sports === */
.ctr-perf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}
.ctr-perf-card{background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);padding:20px;transition:box-shadow 0.2s}
.ctr-perf-card:hover{box-shadow:0 6px 20px rgba(0,0,0,.07)}
.ctr-perf-header{display:flex;gap:16px;align-items:center;margin-bottom:16px}
.ctr-perf-img{width:72px;height:72px;object-fit:contain;border-radius:8px;flex-shrink:0}
.ctr-perf-name{font-weight:600;font-size:14px}
.ctr-perf-price{font-size:20px;font-weight:700;color:var(--primary);margin:2px 0}
.ctr-perf-overall{display:inline-block;color:#fff;font-size:12px;font-weight:700;padding:3px 12px;border-radius:12px}
.ctr-perf-metrics{display:flex;flex-direction:column;gap:8px}
.ctr-perf-metric{display:flex;align-items:center;gap:8px}
.ctr-perf-label{font-size:12px;color:var(--text-muted);min-width:80px}
.ctr-perf-bar-bg{flex:1;height:6px;background:var(--bg-alt);border-radius:3px;overflow:hidden}
.ctr-perf-bar-fill{height:100%;border-radius:3px;transition:width 0.6s ease}
.ctr-perf-score{font-size:12px;font-weight:700;min-width:24px;text-align:right}
.ctr-perf-activities{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.ctr-activity-tag{font-size:11px;padding:3px 10px;border-radius:12px;background:color-mix(in srgb,var(--accent,#16a34a) 10%,transparent);color:var(--accent);font-weight:600}
.ctr-perf-link{display:block;text-align:right;font-size:13px;font-weight:600;margin-top:12px;text-decoration:none}

/* Picks */
.ctr-picks-wrap{display:flex;gap:24px;justify-content:center;flex-wrap:wrap}
.ctr-pick-card{flex:1;max-width:280px;text-align:center;padding:24px;background:var(--bg-card);border-radius:var(--radius);border:2px solid var(--border);position:relative}
.ctr-pick-label{position:absolute;top:-12px;left:50%;transform:translateX(-50%);color:#fff;font-size:11px;font-weight:700;padding:4px 16px;border-radius:16px;white-space:nowrap}
.ctr-pick-img{width:100px;height:100px;object-fit:contain;margin:12px auto;display:block}
.ctr-pick-name{font-size:14px;font-weight:600;margin:8px 0}
.ctr-pick-price{font-size:22px;font-weight:700;color:var(--primary)}

/* === 10. General Enhanced === */
.ctr-hot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.ctr-hot-card{display:flex;text-decoration:none;color:inherit;gap:12px;padding:16px;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);transition:transform 0.2s,box-shadow 0.2s;position:relative;overflow:hidden}
.ctr-hot-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.08)}
.ctr-hot-score{position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800}
.ctr-hot-img{width:80px;height:80px;object-fit:contain;flex-shrink:0;border-radius:8px}
.ctr-hot-info{flex:1;min-width:0}
.ctr-hot-title{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:6px}
.ctr-hot-price-row{display:flex;align-items:center;gap:8px}
.ctr-hot-price{font-size:18px;font-weight:700;color:var(--primary)}
.ctr-hot-trend{font-size:12px;font-weight:600}
.ctr-hot-stores{font-size:12px;color:var(--text-muted);margin-top:4px}

/* Deal badge big */
.ctr-deal-badge-big{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:100px;height:100px;border-radius:50%;color:#fff;margin:12px auto}
.ctr-deal-num{font-size:36px;font-weight:800;line-height:1}
.ctr-deal-label{font-size:11px;font-weight:600;margin-top:2px}

/* Shared product detail extras */
.ctr-size-selector{display:flex;gap:8px;flex-wrap:wrap}
.ctr-size-btn{width:44px;height:44px;border-radius:8px;border:1.5px solid var(--border);background:transparent;font-size:13px;font-weight:600;cursor:pointer;transition:all 0.2s}
.ctr-size-btn:hover,.ctr-size-active{background:var(--accent,#ec4899);color:#fff;border-color:var(--accent)}
.ctr-size-hint{font-size:13px;color:var(--text-muted);margin-top:8px}

.ctr-unit-table{display:flex;flex-direction:column;gap:8px}
.ctr-unit-row{display:flex;justify-content:space-between;padding:10px 16px;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);font-size:14px}

.ctr-aspect-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ctr-aspect-name{font-size:13px;min-width:100px;color:var(--text-muted)}
.ctr-aspect-bar-bg{flex:1;height:6px;background:var(--bg-alt);border-radius:3px;overflow:hidden}
.ctr-aspect-bar{height:100%;border-radius:3px}
.ctr-aspect-score{font-size:13px;font-weight:700;min-width:28px;text-align:right}

.ctr-detail-item{padding:8px 0;font-size:14px;border-bottom:1px solid var(--border)}

/* Dark mode adjustments — CTR */
.dark .ctr-score-ring::before{background:var(--bg-card,#1f2937)}
.dark .ctr-basket-item,.dark .ctr-store-row,.dark .ctr-fit-card,.dark .ctr-sub-card{border-color:rgba(255,255,255,.1)}

/* Responsive — CTR */
@media (max-width:640px){
.ctr-score-grid{grid-template-columns:1fr}
.ctr-vs-wrap{flex-direction:column}
.ctr-rating-overview{flex-direction:column;text-align:center}
.ctr-vehicle-selector{flex-direction:column}
.ctr-sub-pricing{flex-direction:column}
.ctr-picks-wrap{flex-direction:column;align-items:center}
.ctr-perf-grid{grid-template-columns:1fr}
}
:root{--skin-card-shadow:0 2px 12px rgba(0,0,0,.1);--skin-card-border:1px solid var(--border);--skin-hover-transform:translateY(-4px);}
.nav-mode-gs{position:sticky;top:0;z-index:1000}.gs-top{padding:12px 20px;gap:20px;max-width:1100px;margin:0 auto}.gs-search{flex:1;max-width:640px;border-radius:24px;padding:0 16px}.gs-search input{border:none;padding:12px 0;font-size:15px}.gs-chips{max-width:1100px;margin:0 auto;padding:4px 20px 10px;gap:8px;overflow-x:auto}.gs-chips .cat-pill{border-radius:20px;font-size:13px}.gs-icon{margin-right:10px}