/* atnstore — single lightweight stylesheet, no framework, no webfont download */
:root{
  --bg:#120912;
  --bg-alt:#1c0f1c;
  --surface:#241426;
  --surface-2:#2e1a30;
  --text:#f5eef2;
  --text-dim:#c9b9c8;
  --accent:#ff00bc;
  --accent-2:#ffb020;
  --accent-dim:#810562;
  --accent-hover:#ff38cb;
  --accent-glow:rgba(255,0,188,.35);
  --border:#3a2440;
  --ok:#3ddc84;
  --radius:14px;
  --shadow:0 10px 30px rgba(0,0,0,.35);
  --maxw:1180px;
  font-size:16px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;height:auto}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.container{max-width:var(--maxw);margin:0 auto;padding:0 18px}
h1,h2,h3,h4{line-height:1.2;margin:0 0 .5em;font-weight:700}
h1{font-size:2rem}
h2{font-size:1.5rem}
h3{font-size:1.15rem}
p{margin:0 0 1em}
ul{margin:0 0 1em;padding-left:1.2em}
button, .btn{
  display:inline-block;
  background:var(--accent);
  color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.25);
  border:none;
  padding:.75em 1.4em;
  border-radius:999px;
  font-weight:700;
  cursor:pointer;
  font-size:.95rem;
  text-decoration:none;
  transition:transform .12s ease, background .15s ease, box-shadow .15s ease;
}
.btn:hover{background:var(--accent-hover);text-decoration:none;transform:translateY(-1px);box-shadow:0 6px 20px var(--accent-glow)}
.btn.secondary{background:transparent;color:var(--text);text-shadow:none;border:1px solid var(--accent)}
.btn.secondary:hover{background:var(--surface)}
.btn.block{width:100%;text-align:center}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}

/* Top notice bar */
.announce{background:var(--accent-dim);color:#fff;font-size:.82rem;font-weight:700;padding:.5em 1em;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.35em 1.4em}
.announce-item{white-space:nowrap}
.announce-whatsapp{display:inline-flex;align-items:center;gap:.35em;color:#fff;font-weight:700;white-space:nowrap;text-decoration:none}
.announce-whatsapp:hover{color:#ffe3ee;text-decoration:none}
.announce-whatsapp .wa-icon{flex:0 0 auto}

/* Header — two rows: logo/search/icons on top, category nav as its own
   full-width bar below. Splitting them means the nav never has to fight
   the logo/search/icons for horizontal space, which is what was causing
   it to wrap into a broken multi-line mess on medium-width screens. */
header.site{position:sticky;top:0;z-index:50;background:rgba(18,9,18,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}
.header-top{display:flex;align-items:center;gap:1.1rem;padding:1rem 0}
.logo{font-size:1.35rem;font-weight:800;color:var(--text);letter-spacing:.3px;white-space:nowrap;display:flex;align-items:center}
.logo span{color:var(--accent)}
.logo-img{height:80px;width:auto;display:block}
@media (max-width:600px){.logo-img{height:60px}}
.header-actions{display:flex;align-items:center;gap:1.1rem;margin-left:auto}
.icon-link{position:relative;color:var(--text);font-size:1.4rem}
.icon-link .badge{position:absolute;top:-8px;right:-10px;background:var(--accent);color:#1a0a12;border-radius:999px;font-size:.65rem;font-weight:800;padding:1px 5px;line-height:1.4}
.search-form{display:flex;flex:1;max-width:440px}
.search-form input{flex:1;min-width:0;background:var(--surface);border:1px solid var(--border);color:var(--text);padding:.8em 1.2em;border-radius:999px 0 0 999px;font-size:1.05rem}
.search-form button{border-radius:0 999px 999px 0;padding:.8em 1.4em;font-size:1.05rem;display:inline-flex;align-items:center;justify-content:center}
.search-icon{display:block;flex:0 0 auto}
.nav-toggle{display:none;background:none;border:none;color:var(--text);font-size:1.5rem;padding:0}

/* Category nav bar */
.nav-row{border-top:1px solid var(--border)}
nav.main{
  display:flex;gap:.15rem;align-items:center;flex-wrap:nowrap;
  max-width:var(--maxw);margin:0 auto;padding:.5rem 18px;
}
nav.main > a{color:#fff;font-size:17px;font-weight:600;padding:.5rem .6rem;border-radius:8px;white-space:nowrap;flex:0 0 auto}
nav.main > a:hover{color:var(--text);background:var(--surface);text-decoration:none}

/* Female / Male Sex Toys dropdowns */
.has-dropdown{position:relative;display:flex;align-items:stretch;flex:0 0 auto}
.has-dropdown > a.top-link{display:flex;align-items:center;color:#fff;font-size:17px;font-weight:600;padding:.5rem .3rem .5rem .6rem;border-radius:8px 0 0 8px;white-space:nowrap}
.has-dropdown > a.top-link:hover{color:var(--text);text-decoration:none}
.has-dropdown .dropdown-toggle{display:flex;align-items:center;justify-content:center;background:none;border:none;color:#fff;cursor:pointer;padding:.5rem .5rem;border-radius:0 8px 8px 0;font-size:.7rem;line-height:1}
.has-dropdown:hover > a.top-link,.has-dropdown:hover > .dropdown-toggle,.has-dropdown.open > a.top-link,.has-dropdown.open > .dropdown-toggle{background:var(--surface);color:var(--text)}
.dropdown{display:none;position:absolute;top:100%;left:0;min-width:220px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:.5rem;box-shadow:var(--shadow);z-index:60}
/* Hover-reveal only for devices with a real pointer — prevents dropdowns
   getting "stuck" open on touchscreens, which have no true hover/mouseout. */
@media (hover:hover) and (pointer:fine){
  .has-dropdown:hover .dropdown{display:block}
}
.has-dropdown.open .dropdown{display:block}
.dropdown a{display:block;padding:.55rem .7rem;border-radius:8px;color:#fff;font-size:17px;font-weight:600}
.dropdown a:hover{background:var(--surface-2);color:var(--text);text-decoration:none}
.dropdown .sep{border-top:1px solid var(--border);margin:.4rem .3rem 0;padding-top:.4rem}
.dropdown .sep a{color:var(--accent);font-weight:700}

/* Highlighted "Sale" nav link */
nav.main > a.nav-sale{background:var(--accent);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35);font-weight:800}
nav.main > a.nav-sale:hover{background:var(--accent-hover);color:#fff}

/* Hero */
.hero{background:radial-gradient(circle at 20% 20%,var(--accent-dim),var(--bg) 60%);padding:3.5rem 0 3rem;border-bottom:1px solid var(--border)}
.hero h1{font-size:clamp(1.7rem,4vw,2.6rem);max-width:20ch}
.hero p{color:var(--text-dim);max-width:48ch;font-size:1.05rem}
.hero-actions{display:flex;gap:.8rem;margin-top:1.2rem;flex-wrap:wrap}
.trust-row{display:flex;gap:1.6rem;flex-wrap:wrap;margin-top:2rem;color:#fff;font-size:.85rem}
.trust-row span{display:flex;align-items:center;gap:.4em}

/* Category grid */
.section{padding:2.6rem 0}
.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:1.2rem;gap:1rem;flex-wrap:wrap}
.section-head a{font-size:.85rem;font-weight:700}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}
.cat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;text-align:center;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.cat-card:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 10px 24px var(--accent-glow);text-decoration:none}
.cat-card .thumb{aspect-ratio:1/1;overflow:hidden;background:var(--surface-2)}
.cat-card .thumb img{width:100%;height:100%;object-fit:cover}
.cat-card .name{padding:.7rem .5rem;font-size:.88rem;font-weight:700;color:var(--text)}

/* Product grid — auto-fit (not auto-fill) so a row that's short a card or
   two stretches to fill the full width instead of leaving dangling empty
   column tracks on the right (what "auto-fill" does when a section has
   fewer products than the row can otherwise hold). */
.product-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1.1rem}
.product-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;position:relative;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.product-card:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 10px 24px var(--accent-glow)}
.product-card .thumb{aspect-ratio:1/1;background:var(--surface-2);overflow:hidden;position:relative}
.product-card .thumb img{width:100%;height:100%;object-fit:cover}
.product-card .sale-badge{position:absolute;top:.6rem;left:.6rem;background:var(--accent);color:#1a0a12;font-size:.7rem;font-weight:800;padding:.2em .55em;border-radius:6px}
.product-card .body{padding:.85rem .9rem 1rem;display:flex;flex-direction:column;gap:.35rem;flex:1}
.product-card .title{font-size:.9rem;font-weight:600;color:#fff;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.product-card .title:hover{color:var(--accent)}
.pd-info h1{color:#fff}
.price{font-weight:800;color:var(--accent-2)}
.price del{color:var(--text-dim);font-weight:400;margin-right:.4em}
.price ins{text-decoration:none}
.product-card .add-cart-form{margin-top:auto}
.out-of-stock{color:#ff6767;font-size:.8rem;font-weight:700}

/* Breadcrumbs */
.breadcrumbs{font-size:.82rem;color:var(--text-dim);padding:1rem 0}
.breadcrumbs a{color:var(--text-dim)}
.breadcrumbs a:hover{color:var(--accent)}

/* Product detail */
.product-detail{display:grid;grid-template-columns:1fr 1fr;gap:2.4rem;padding:1.5rem 0 2rem}
@media (max-width:800px){.product-detail{grid-template-columns:1fr}}
.gallery .main-img{aspect-ratio:1/1;background:var(--surface);border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}
.gallery .main-img img{width:100%;height:100%;object-fit:contain}
.gallery .thumbs{display:flex;gap:.5rem;margin-top:.7rem;flex-wrap:wrap}
.gallery .thumbs img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--border);cursor:pointer}
.gallery .thumbs img.active{border-color:var(--accent)}
.pd-info .price{font-size:1.4rem;margin:.5rem 0 1rem}
.pd-info .sku{color:var(--text-dim);font-size:.82rem}
.stock.instock{color:var(--ok);font-weight:700}
.stock.outofstock{color:#ff6767;font-weight:700}
.qty-row{display:flex;align-items:center;gap:.8rem;margin:1.2rem 0}
.qty-stepper{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:999px;overflow:hidden}
.qty-stepper button{background:var(--surface);color:var(--text);border:none;width:34px;height:34px;font-size:1rem;border-radius:0}
.qty-stepper input{width:48px;text-align:center;background:var(--bg);color:var(--text);border:none;border-left:1px solid var(--border);border-right:1px solid var(--border);height:34px}
.pd-cats{font-size:.82rem;color:var(--text-dim);margin-top:1rem}
.pd-cats a{color:var(--text-dim)}
.tabs{margin-top:2.5rem;border-top:1px solid var(--border);padding-top:1.5rem}
/* Was capped at max-width:70ch (a readability-line-length rule meant for
   plain running text) — on desktop, inside the 1180px container, that's
   only around half the width of the product-detail block right above it,
   so the description looked cut off rather than intentionally narrow.
   Dropped the cap so it fills the same width as the rest of the page, and
   justified body paragraphs so the full-width text still reads with an
   even right edge instead of a ragged one. */
/* text-align set on the block itself (inherited by any nested <p> tags a
   rich-text-edited description has), not just on descendant <p> elements —
   some existing product descriptions are stored as plain text with no <p>
   markup at all, and targeting only "p" would silently do nothing there. */
.tabs .content-block{max-width:100%;text-align:justify}
.related{margin-top:2rem}
/* "You May Also Like" reuses the shared .product-grid, but that grid's
   auto-fit columns are deliberately meant to stretch a short row to fill
   the container (see the Homepage/Shop grid comments) — great for a
   catalog listing that's nearly always full, wrong here: a related-products
   rail can legitimately have just 1-3 items (a niche product with few
   catalog-mates), and auto-fit would blow a single card up to the full
   container width, looking broken rather than intentional.
   An earlier fix used auto-fill + minmax(190px,220px) to cap the card size
   instead — that stops the stretch, but auto-fill still works by reserving
   as many tracks as fit the container and only THEN placing items into
   them, and different browsers/versions don't agree on what happens to a
   track auto-fill reserved that no item ends up using (some quietly absorb
   the leftover space into the other cards, some leave it as a visible
   empty box the exact size of a card — confirmed happening in a real
   browser even after a full server restart ruled out caching). Rather than
   depend on that inconsistent leftover-space behavior at all, this uses a
   fixed, explicit column count per breakpoint (matched to a $limit of 10
   in atn_related_products() so every breakpoint's column count divides it
   evenly): there's no "reserved but unfilled" track possible when the
   column count and item count are both fixed numbers chosen to fit
   exactly, so every row — including the first — is always fully populated
   in every browser. */
.related .product-grid{grid-template-columns:repeat(5,1fr)}
@media (max-width:900px){
  .related .product-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:480px){
  .related .product-grid{grid-template-columns:1fr}
}

/* Content pages (about/policies/local-seo pages/blog) */
.content-page{max-width:800px;margin:0 auto;padding:2rem 0 3rem}
.content-page img{border-radius:var(--radius);margin:1rem 0}
.content-page h1{font-size:1.8rem}
.content-page iframe{max-width:100%;border-radius:var(--radius)}

/* Blog post FAQ accordion — admin-editable per post (Admin → Blog Posts →
   edit), rendered here via native <details>/<summary> rather than a
   JS-driven widget: it's keyboard/screen-reader accessible and works with
   zero script, and this content's whole point (an FAQ section) is meant to
   be readable/crawlable even with JS disabled. See atn_faq_jsonld() in
   inc/bootstrap.php for the matching FAQPage structured data emitted
   alongside this markup. */
.faq-section{margin-top:2.5rem;border-top:1px solid var(--border);padding-top:1.5rem}
.faq-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.7rem;overflow:hidden}
.faq-item summary{list-style:none;cursor:pointer;padding:1rem 2.6rem 1rem 1.2rem;font-weight:700;position:relative}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";position:absolute;right:1.2rem;top:50%;transform:translateY(-50%);color:var(--accent);font-size:1.3rem;font-weight:400;line-height:1}
.faq-item[open] summary::after{content:"−"}
.faq-item summary:hover{color:var(--accent)}
.faq-answer{padding:0 1.2rem 1.1rem;color:var(--text-dim);text-align:justify}
/* Homepage FAQ teaser (inc/render-home.php): sits right under its own
   .section-head heading + "View all" link, which already provides the
   visual separation .faq-section's default top border/margin is for on a
   blog post/FAQ page — so that spacing is zeroed out here specifically. */
.faq-section.home-faq-list{margin-top:0;border-top:none;padding-top:0}

/* Sex Toy Videos page — gallery synced from the YouTube channel's feed by
   atn_youtube_sync() (inc/bootstrap.php); this is layout only. Wider than
   the plain prose .content-page pages, so override that max-width back to
   the site's normal container width. */
.videos-page{max-width:var(--maxw)}
.videos-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;margin-bottom:1.8rem}
.videos-page-sub{color:var(--text-dim);margin:.4rem 0 0;font-size:.95rem;max-width:52ch}
.videos-channel-link{display:inline-flex;align-items:center;gap:.5em;white-space:nowrap;flex:0 0 auto}
.videos-empty{text-align:center;padding:3rem 1.5rem;font-size:1rem}

.video-hero{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);margin-bottom:2.6rem}
.video-hero-frame{aspect-ratio:16/9;background:#000}
.video-hero-frame iframe{width:100%;height:100%;border:0;display:block}
.video-hero-info{padding:1.3rem 1.5rem 1.5rem}
.video-hero-info h2{font-size:1.35rem;margin:0 0 .4rem;color:#fff}
.video-hero-date{color:var(--text-dim);font-size:.85rem}

.videos-more-heading{font-size:1.15rem;margin:0 0 1rem;color:#fff}
.video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.3rem;margin-bottom:2rem}
.video-card{display:block;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.video-card:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 10px 24px var(--accent-glow);text-decoration:none}
.video-card-thumb{position:relative;aspect-ratio:16/9;background:var(--surface-2);overflow:hidden}
.video-card-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.video-card-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(18,9,18,.32);opacity:0;transition:opacity .15s ease}
.video-card-play::after{content:'▶';display:flex;align-items:center;justify-content:center;width:50px;height:50px;border-radius:50%;background:rgba(255,255,255,.18);backdrop-filter:blur(2px);color:#fff;font-size:1.2rem;padding-left:4px}
.video-card:hover .video-card-play{opacity:1}
.video-card-body{padding:.85rem .9rem 1rem}
.video-card-title{font-size:.92rem;font-weight:600;color:#fff;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:.4rem}
.video-card-date{color:var(--text-dim);font-size:.8rem}
@media (max-width:600px){
  .videos-page-head{flex-direction:column;align-items:stretch}
  .videos-channel-link{justify-content:center}
}

/* Blog */
.blog-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.4rem}
.blog-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.blog-card img{aspect-ratio:16/10;object-fit:cover}
.blog-card .body{padding:1rem}
.blog-card time{color:var(--text-dim);font-size:.78rem}

/* Cart / checkout */
.cart-table-wrap{overflow-x:auto}
table.cart-table{width:100%;border-collapse:collapse;margin-bottom:1.5rem}
table.cart-table th,table.cart-table td{padding:.7rem .5rem;border-bottom:1px solid var(--border);text-align:left;font-size:.9rem}
table.cart-table img{width:56px;height:56px;object-fit:cover;border-radius:8px}
table.cart-table .qty-stepper button{width:28px;height:28px}
table.cart-table .qty-stepper input{width:36px;height:28px}
.cart-summary{max-width:360px;margin-left:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem}
.cart-summary .row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.2em .6em;margin-bottom:.6rem;font-size:.92rem}
.cart-summary .row>span:last-child{text-align:right}
.cart-summary .row.total{font-weight:800;font-size:1.1rem;border-top:1px solid var(--border);padding-top:.6rem;color:var(--accent-2)}
.empty-state{text-align:center;padding:3rem 1rem;color:var(--text-dim)}

form.checkout-form{display:grid;grid-template-columns:1fr 1fr;gap:1rem 1.2rem;max-width:640px}
form.checkout-form .full{grid-column:1/-1}
@media (max-width:640px){form.checkout-form{grid-template-columns:1fr}}
label{display:block;font-size:.82rem;color:var(--text-dim);margin-bottom:.3rem;font-weight:600}
.field-required{color:var(--accent-2);font-weight:700}
.field-optional{color:var(--text-dim);font-weight:500}
.checkout-cart-block{margin:1.5rem 0 2rem}
.checkout-cart-block h2{margin-bottom:.8rem}
input[type=text],input[type=tel],input[type=email],input[type=number],textarea,select{
  width:100%;background:var(--surface);border:1px solid var(--border);color:var(--text);
  padding:.65em .8em;border-radius:8px;font-size:.92rem;font-family:inherit;
}
textarea{resize:vertical}
input[type=checkbox]{accent-color:var(--accent);width:auto}
.payment-box{grid-column:1/-1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}

/* Order confirmation (checkout success) */
.order-confirm-box{max-width:480px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.3rem 1.5rem;margin-bottom:1.3rem}
.order-confirm-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.2em 1em;padding:.6rem 0;border-bottom:1px solid var(--border)}
.order-confirm-row:last-of-type{border-bottom:none}
.order-confirm-row .label{margin:0;color:var(--text-dim);font-size:.85rem;font-weight:600}
.order-confirm-row .value{font-weight:700;text-align:right}
.order-confirm-row .order-id{color:var(--accent-2);font-size:1.2rem;font-weight:800;letter-spacing:.3px}
.order-confirm-note{color:var(--text-dim);font-size:.85rem;margin:.9rem 0 0}

/* Wishlist / account */
.notice{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.2rem;margin-bottom:1.2rem;font-size:.92rem}
.notice.success{border-color:var(--ok);color:var(--ok)}

/* Footer */
footer.site{border-top:1px solid var(--border);margin-top:3rem;padding:2.6rem 0 1.6rem;background:var(--bg-alt);font-size:.88rem;color:var(--text-dim)}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:2rem}
@media (max-width:800px){.footer-grid{grid-template-columns:1fr 1fr}}
.footer-grid h4{color:var(--text);font-size:.9rem}
.footer-grid ul{list-style:none;padding:0;margin:0}
.footer-grid li{margin-bottom:.5rem}
.footer-grid a{color:var(--text-dim)}
.footer-grid a:hover{color:var(--accent)}
.footer-bottom{text-align:center;margin-top:2rem;padding-top:1.4rem;border-top:1px solid var(--border);font-size:.8rem}
.social-row{display:flex;gap:.7rem;margin-top:.8rem;flex-wrap:wrap}
.social-row a{background:var(--surface);width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text);border:1px solid var(--border);transition:transform .15s ease,background .2s ease,color .15s ease,border-color .15s ease,box-shadow .15s ease}
.social-row a:hover{transform:translateY(-3px);text-decoration:none;border-color:transparent;box-shadow:var(--shadow)}
.social-row a.social-fb:hover{background:#1877F2;color:#fff}
.social-row a.social-ig:hover{background:radial-gradient(circle at 30% 110%,#fdf497 0%,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285AEB 90%);color:#fff}
.social-row a.social-tt:hover{background:#010101;color:#fff}
.social-row a.social-yt:hover{background:#FF0000;color:#fff}

/* Pagination */
.pagination{display:flex;gap:.4rem;justify-content:center;margin-top:2rem}
.pagination a,.pagination span{padding:.5em .9em;border-radius:8px;border:1px solid var(--border);color:var(--text-dim);font-size:.85rem}
.pagination .current{background:var(--accent);color:#1a0a12;border-color:var(--accent);font-weight:700}

/* Filters bar */
.filters-bar{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;margin-bottom:1.4rem;justify-content:space-between}
.filters-bar .result-count{color:var(--text-dim);font-size:.85rem;white-space:nowrap}
.filter-form{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center}
.filter-group{min-width:150px}
.filter-group select{min-width:150px}
.price-range{display:flex;align-items:center;gap:.4rem;min-width:0}
.price-range input{width:110px;min-width:0;padding-left:.6em;padding-right:.4em}
.price-range-sep{color:var(--text-dim)}
.filter-check{
  display:flex;align-items:center;gap:.4rem;margin:0;font-weight:500;font-size:.88rem;
  color:var(--text);white-space:nowrap;cursor:pointer;
}
.btn-sm{padding:.55em 1.1em;font-size:.85rem}
.clear-filters{font-size:.85rem;color:var(--text-dim);text-decoration:underline;white-space:nowrap}
.clear-filters:hover{color:var(--accent)}
@media (max-width:700px){
  .filters-bar{flex-direction:column;align-items:stretch}
  .filter-form{flex-direction:column;align-items:stretch}
  .filter-group,.filter-group select{min-width:0}
  .price-range{width:100%}
  .price-range input{flex:1;width:0}
  .filters-bar .result-count{text-align:right}
}

.whatsapp-fab-wrap{position:fixed;bottom:20px;right:20px;z-index:60;display:flex;flex-direction:column;align-items:center;gap:.55rem}
.whatsapp-fab-label{
  background:#fff;color:#111b21;font-size:.82rem;font-weight:700;
  padding:.5em .95em;border-radius:999px;box-shadow:var(--shadow);
  white-space:nowrap;position:relative;
  animation:wa-label-in .5s ease .5s both;
}
.whatsapp-fab-label::after{
  content:'';position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);
  width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;
}
.whatsapp-fab{
  position:relative;background:linear-gradient(135deg,#25D366,#128C7E);color:#fff;
  width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 26px rgba(37,211,102,.5);
  transition:transform .2s ease,box-shadow .2s ease;
}
.whatsapp-fab:hover{transform:scale(1.08);box-shadow:0 10px 30px rgba(37,211,102,.65);text-decoration:none}
.whatsapp-fab::before{
  content:'';position:absolute;inset:0;border-radius:50%;background:#25D366;
  opacity:.55;z-index:-1;animation:wa-pulse 2.2s ease-out infinite;
}
@keyframes wa-pulse{0%{transform:scale(1);opacity:.55}100%{transform:scale(1.9);opacity:0}}
@keyframes wa-label-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media (max-width:480px){
  .whatsapp-fab-label{display:none}
  .whatsapp-fab{width:52px;height:52px}
}

/* Tablet and phone: below this width the full category bar no longer has
   room to lay out in one row (8 top-level items, two with dropdowns), so
   it collapses behind the hamburger toggle instead of wrapping, clipping,
   or forcing a horizontal scroll. The header-top row wraps too, letting
   the search field drop to its own full-width line.
   Threshold is 1180px (matches --maxw), not 1000px: at the current 17px
   nav font-size the full row needs ~1120px of content width, which the
   1180px container only clears once padding is added back — a narrower
   cutoff left a real dead zone (~1000-1180px, e.g. a 1024px laptop) where
   the row would overflow/clip instead of collapsing. If the nav font-size
   or item count changes again, re-measure nav.scrollWidth vs the
   container and adjust this number rather than assuming 1000px is safe. */
@media (max-width:1180px){
  .header-top{flex-wrap:wrap}
  .search-form{flex:1 1 100%;max-width:none;order:3;margin-top:.6rem}

  .nav-row{border-top:none}
  nav.main{
    display:none;position:absolute;top:100%;left:0;right:0;
    background:var(--bg-alt);flex-direction:column;align-items:stretch;
    max-width:none;margin:0;padding:1rem 1.2rem;
    border-top:1px solid var(--border);border-bottom:1px solid var(--border);
    gap:.1rem;overflow-x:visible;
  }
  nav.main.open{display:flex}
  .nav-toggle{display:block}

  /* Dropdowns become tap-to-expand nested lists — hover doesn't apply,
     and there's no room for a floating overlay. */
  .has-dropdown{flex-direction:column;align-items:stretch;width:100%}
  .has-dropdown > a.top-link{border-radius:8px 8px 0 0}
  .has-dropdown .dropdown-toggle{position:absolute;right:0;top:0;height:100%;border-radius:0 8px 0 0}
  .has-dropdown.open .dropdown{display:block}
  .dropdown{position:static;box-shadow:none;border:none;background:var(--surface-2);margin:0 0 .3rem;min-width:0}
}

/* Homepage promo banner (e.g. "New Arrivals" highlight) — a single
   clickable image with an optional bold headline/CTA overlay, editable
   from Settings > Homepage Promo Banner. */
.promo-banner{
  position:relative;display:block;overflow:hidden;
  border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);
  background:var(--surface);
}
.promo-banner:hover{text-decoration:none;border-color:var(--accent)}
.promo-banner-img{width:100%;height:auto;display:block}
.promo-banner-overlay{
  position:absolute;inset:0;
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:.35em;
  padding:6% 6%;
  background:linear-gradient(90deg,rgba(18,9,18,.72) 0%,rgba(18,9,18,.35) 45%,rgba(18,9,18,0) 75%);
}
.promo-banner-title{
  font-size:clamp(1.4rem,4vw,2.6rem);font-weight:900;line-height:1.05;
  color:#fff;-webkit-text-stroke:1.5px var(--accent);text-shadow:0 3px 0 var(--accent-dim),0 2px 12px rgba(0,0,0,.5);
  text-transform:uppercase;letter-spacing:.02em;
}
.promo-banner-subtitle{
  font-size:clamp(1rem,2.4vw,1.4rem);font-weight:800;color:var(--accent-2);
  text-shadow:0 2px 8px rgba(0,0,0,.5);
}
.promo-banner-btn{
  margin-top:.5em;display:inline-flex;align-items:center;gap:.4em;
  background:var(--accent);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.25);font-weight:800;font-size:clamp(.85rem,1.6vw,1.05rem);
  padding:.65em 1.4em;border-radius:999px;box-shadow:0 6px 18px var(--accent-glow);
}
.promo-banner:hover .promo-banner-btn{background:var(--accent-2);color:#1a0a12;text-shadow:none}
@media (max-width:600px){
  .promo-banner-overlay{
    background:linear-gradient(180deg,rgba(18,9,18,.75) 0%,rgba(18,9,18,.4) 55%,rgba(18,9,18,.05) 100%);
    padding:5% 6%;
  }
}

/* Homepage "Sex Toy Videos" teaser — a single clickable image, editable
   from Settings > Homepage Videos Section. Same shape as .promo-banner. */
.video-teaser{
  position:relative;display:block;overflow:hidden;
  border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);
  background:var(--surface);
}
.video-teaser:hover{text-decoration:none;border-color:var(--accent)}
.video-teaser img{width:100%;height:auto;display:block}
