/* --- PART 2 - Helper components (helper.css) --- */
﻿/* ================================================================
   helper.css — Shared styles for frameword helper files
   Sections:
     §0  Reset + base
     §1  Demo scaffolding (idx, sc-label, schema-box, variant preview)
     §2  Card scroller — shared track + nav
     §3  CS-01 Standard leaflet card
     §4  CS-02 Cinematic dark poster
     §5  CS-03 Landscape article
     §6  CS-04 Numbered feature
     §7  CS-05 Glass on gradient
     §8  CS-06 Tall editorial
     §9  CS-07 Wide panoramic
     §10 CS-08 Polaroid
     §11 CS-09 Flip card
     §12 CS-10 Layered depth
     §13 Floating social bar (fsb structure)
     §14 FSB themes (fs1–fs4)
     §15 Back to top buttons (bt01–bt05)
     §16 Keyframes
     §17 Responsive (320px up)
================================================================ */

/* ──────────────────────────────────────────────────────────────
   §0  Reset + base
────────────────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;overflow-x:clip}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--surface-color,#f8fafc);color:var(--text-strong,#1e293b);overflow-x:clip}

/* Section Composer visibility toggle (eyebrow/title/subtitle "Hide X" switches
   in sp-pageedit.js) — target the outermost wrapper unique to that field so no
   padding/margin/min-height is left behind holding space when hidden. */
.pe-hidden{display:none!important}

/* No link, no button — global, every section-library template (318
   occurrences, always on an <a>, never wrapping an image — verified across
   the whole library before adding this). sp-pageedit.js's renderLink sets
   href="" literally (trimmed, so whitespace-only input counts too) when an
   admin clears a Link field; this hides that CTA everywhere instead of
   leaving a dead, unclickable button visible. Untouched templates still
   ship href="#" as a placeholder, so nothing changes for a freshly-inserted
   section — this only fires once a field is deliberately emptied. */
a[data-pageedit="link"][href=""]{display:none}

/* Restore native list markers for admin-typed rich-text content (issue
   #104). Tailwind's own preflight reset ships in output.css as
   `menu,ol,ul{list-style:none;margin:0;padding:0}` — global, unconditional,
   and correct for THIS library's own components, since every one of them
   (.ls01-list, .sc02-list, etc.) carries its own class and deliberately
   re-declares its own marker style (often still none, for a custom
   ::before-icon bullet). A raw <ul>/<ol> typed into a data-pageedit="html"
   field via sp-pageedit.js's renderHtml toolbar (execCommand
   insertUnorderedList/insertOrderedList) carries NO class at all, so it
   fell straight through that reset with nothing re-enabling markers —
   bullets and numbers alike rendered as nothing. :not([class]) scopes this
   re-enable to exactly that case: it can never match any of this library's
   own styled lists, which all carry a class. */
ul:not([class]){list-style:disc;padding-left:1.5rem}
ol:not([class]){list-style:decimal;padding-left:1.5rem}
ul:not([class]) ul:not([class]){list-style:circle}
ol:not([class]) ol:not([class]),ul:not([class]) ol:not([class]){list-style:lower-alpha}

/* Preview defaults — framework overrides these via Settings */
:root{
  --primary-color:#fcd703;
  --primary-dark:#b8940a;
  --primary-text:#ffffff;
  --bg-color:#ffffff;
  --text-color:#374151;
  --text-strong:#111827;
  --text-muted:#6b7280;
  --card-bg:#ffffff;
  --card-border:#e5e7eb;
  --surface-color:#f8fafc;
  --card-radius:12px;
  --card-shadow:0 4px 24px rgba(0,0,0,.08);
  --card-shadow-hover:0 12px 40px rgba(0,0,0,.14);

  /* Type scale */
  --fs-h1:clamp(3rem,7vw,6rem);
  --fs-h2:clamp(1.8rem,4vw,3rem);
  --fs-h3:clamp(1.3rem,2.5vw,2rem);
  --fs-h4:clamp(1.1rem,2vw,1.5rem);
  --fs-h5:clamp(.95rem,1.5vw,1.15rem);
  --fs-body:clamp(.9rem,1.2vw,1rem);
  --fs-sm:.875rem;
  --fs-xs:.75rem;
  --fs-btn:.92rem;
  --heading-font:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}

/* ──────────────────────────────────────────────────────────────
   §1  Demo scaffolding
────────────────────────────────────────────────────────────── */
.idx{padding:2.5rem clamp(1rem,8vw,5rem) 2rem;background:var(--bg-color,#fff);border-bottom:1px solid var(--card-border,#e2e8f0)}
.idx h1{font-size:clamp(1.3rem,2.5vw,2rem);font-weight:900;color:var(--text-strong,#0f172a);margin-bottom:.25rem}
.idx p{color:var(--text-color,#374151);font-size:var(--fs-sm,.86rem);max-width:600px;line-height:1.6}
.idx code{background:var(--surface-color,#f1f5f9);padding:.12rem .38rem;border-radius:4px;font-size:var(--fs-sm,.78rem);color:var(--text-strong,#0f172a)}
.schema-box{background:var(--surface-color,#f8fafc);border:1px solid var(--card-border,#e2e8f0);border-radius:8px;padding:1rem 1.4rem;margin-top:1rem;font-size:var(--fs-xs,.76rem);color:var(--text-color,#475569);line-height:1.9}
.schema-box strong{color:var(--text-strong,#0f172a);font-size:var(--fs-sm,.8rem)}
.schema-field{display:inline-block;background:#e0f2fe;color:#0369a1;padding:.1rem .45rem;border-radius:4px;margin:.1rem;font-size:var(--fs-xs,.7rem);font-weight:600}
.schema-note{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--fs-xs,.72rem);font-weight:700;padding:.2rem .6rem;border-radius:4px;margin-left:.4rem}
.schema-note.pending{background:#fef3c7;color:#92400e}
.sc-label{padding:1rem clamp(1rem,8vw,5rem);background:#0f172a;color:rgba(255,255,255,.3);font-size:var(--fs-xs,.6rem);letter-spacing:.22em;text-transform:uppercase;border-top:1px solid rgba(255,255,255,.07)}

/* Variant preview wrapper */
.variants-section{background:var(--bg-color,#fff);padding:3rem clamp(1rem,8vw,5rem) 4rem}
.variants-section h2{font-size:1rem;font-weight:800;color:var(--text-strong,#0f172a);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.4rem}
.variants-section > p{font-size:var(--fs-xs,.78rem);color:var(--text-muted,#64748b);margin-bottom:2rem}
.variants-grid{display:flex;flex-wrap:wrap;gap:2rem;align-items:flex-end}
.variant-block{display:flex;flex-direction:column;align-items:center;gap:1rem}
.variant-label{font-size:var(--fs-xs,.62rem);font-weight:700;color:var(--text-muted,#94a3b8);letter-spacing:.1em;text-transform:uppercase;text-align:center}
.vp{display:flex;flex-direction:column;gap:8px;padding:12px 10px;border-radius:16px}
.vp-item{display:flex;align-items:center;justify-content:flex-end;gap:7px}
.vp-btn{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.13)}
.vp-btn svg{width:18px;height:18px;display:block}
.vp-call .vp-btn{width:46px;height:46px}
.vp-call .vp-btn svg{width:20px;height:20px}
/* BTT variant preview chip */
.vp-btt{width:90px;height:110px;border-radius:12px;display:flex;align-items:flex-end;justify-content:flex-end;padding:10px}
.vp-btt-btn{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
/* Helper label below preview */
.wrap{display:flex;flex-direction:column;align-items:center;gap:.9rem}
.lbl{font-size:var(--fs-xs,.62rem);font-weight:700;color:var(--text-muted,#94a3b8);letter-spacing:.1em;text-transform:uppercase}

/* ──────────────────────────────────────────────────────────────
   §2  Card scroller — shared track + nav
────────────────────────────────────────────────────────────── */
.sc-section{padding:var(--sec-buf-t,var(--gbuf-v,4rem)) var(--sec-buf-r,var(--gbuf-h,0)) var(--sec-buf-b,var(--gbuf-v,4rem)) var(--sec-buf-l,var(--gbuf-h,0))}
/* Product List (pl-01/pl-02) — tighter section padding than the shared
   .sc-section default; own class so it never affects CardScroller/Clients/
   Hero templates that also use .sc-section. */
.pl-section{padding:var(--sec-buf-t,var(--gbuf-v,4rem)) var(--sec-buf-r,var(--gbuf-h,0)) var(--sec-buf-b,var(--gbuf-v,4rem)) var(--sec-buf-l,var(--gbuf-h,0))}
.sc-inner{max-width:1280px;margin:0 auto;padding:0 clamp(1rem,5vw,4rem)}
.sc-header{text-align:center;margin-bottom:2.5rem}
.sc-header-row{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:2rem;flex-wrap:wrap}
.sc-header-row .sc-header{text-align:left;margin-bottom:0}
.sc-tag{display:inline-block;font-size:var(--eyebrow-font-size,var(--fs-xs,.62rem));font-weight:800;letter-spacing:var(--eyebrow-letter-spacing,.2em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--eyebrow-color-dark,var(--text-muted,#64748b));margin-bottom:.5rem}
.sc-title{font-size:clamp(1.3rem,3.2vw,2.4rem);font-weight:900;color:var(--text-strong,#0f172a);line-height:1.1;letter-spacing:-.02em}
.sc-sub{font-size:var(--fs-body,.88rem);color:var(--text-color,#374151);margin-top:.45rem}
.sc-track-wrap{position:relative}
.sc-track::-webkit-scrollbar{display:none}
/* padding-top/bottom exist purely so hover box-shadows have room to render before this
   track's own computed overflow-y (forced to 'auto' by the overflow-x:auto rule) clips
   them — bumped up since several card templates' hover shadows exceeded the old 4px/16px. */
.sc-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:20px;padding:12px 0 28px}
.sc-track>*{scroll-snap-align:start;flex-shrink:0}

/* Nav buttons — base state now reads --snav-bg/-border/-color (previously only :hover
   consumed --snav-hover/-hover-color, so the existing color-config panel had no visible
   effect on the resting state). --snav-size added for admin-configurable button size. */
.sc-nav{display:flex;justify-content:center;gap:.6rem;margin-top:1.2rem}
/* .sc-btn — the inline-flex row-toolbar sibling of .snav (card scrollers,
   testimonial/gallery strips): same --btn-n-* wiring and .btnnav-ico icon
   as .snav, but normal-flow flex instead of absolute-positioned, since it
   sits in a row next to other controls rather than overlaid on a slide.
   NAME COLLISION: input.css (embed/templates/manage/cluster/sms-config.html)
   has an entirely unrelated ".sc-btn" (a small admin "+ Provider"/"Save"
   text button) that sets padding, min-width:max-content, flex:0 0 auto,
   white-space:nowrap, line-height, gap -- none of which this rule
   declares, so they leaked through uncontested and clamped the button's
   width past its own calc()'d value (min-width beats width per the CSS
   box model), rendering a visibly non-circular oval. Found live
   2026-09-24 ("edges are not smooth"). Patched by explicitly overriding
   every property the admin rule sets that this one doesn't, rather than
   renaming the class (a bigger, riskier change touching every template
   + mirror + test that references .sc-btn). */
.sc-btn{width:calc(var(--snav-size,var(--btn-n-size,40px)) * var(--hero-navscale,1));height:calc(var(--snav-size,var(--btn-n-size,40px)) * var(--hero-navscale,1));min-width:0;min-height:0;max-width:none;max-height:none;padding:0;margin:0;gap:0;flex:0 0 auto;white-space:normal;line-height:normal;font-weight:normal;border-radius:var(--btn-n-radius,50%);overflow:hidden;isolation:isolate;position:relative;border:var(--btn-n-border,1.5px solid var(--snav-border,#cbd5e1));box-shadow:var(--btn-n-shadow,none);background:var(--snav-bg,var(--btn-n-bg,var(--bg-color,#fff)));cursor:pointer;font-size:var(--btn-n-fs,var(--fs-body,1rem));color:var(--snav-color,var(--btn-n-text,var(--text-color,#475569)));display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .2s,color .2s,border-color .2s,box-shadow .2s,transform .2s,filter .2s}
.sc-btn::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;transition:transform .4s ease,opacity .3s ease;background-color:var(--btn-n-bg-hover,var(--primary-color,#0f172a));transform:translateX(var(--btn-n-hover-tx,0%));opacity:var(--btn-n-hover-oi,0)}
.sc-btn:hover{background:var(--snav-hover,var(--btn-n-bg-hover,var(--primary-color,#0f172a)));color:var(--snav-hover-color,var(--btn-n-text-hover,var(--text-inverse,#fff)));border-color:var(--btn-n-border-hover,var(--snav-hover,var(--btn-n-bg-hover,var(--primary-color,#0f172a))));box-shadow:var(--btn-n-shadow-hover,var(--btn-n-shadow,none));transform:var(--btn-n-transform,none);filter:var(--btn-n-hover-filter,none)}
.sc-btn:hover::before{transform:translateX(0);opacity:var(--btn-n-hover-ot,0)}
.sc-inline-nav{display:flex;gap:.5rem;flex-shrink:0}
.sc-btn-outline{width:var(--snav-size,36px);height:var(--snav-size,36px);border-radius:50%;border:1.5px solid var(--snav-border,#cbd5e1);background:var(--snav-bg,var(--btn-n-bg,var(--bg-color,#fff)));cursor:pointer;font-size:var(--fs-body,.9rem);color:var(--snav-color,var(--btn-n-text,var(--text-color,#475569)));display:flex;align-items:center;justify-content:center;transition:all .16s}
.sc-btn-outline svg{width:45%;height:45%}
.sc-btn-outline:hover{background:var(--snav-hover,#f0fdf4);border-color:var(--snav-hover-color,#10b981);color:var(--snav-hover-color,#10b981)}
.sc-btn-dark{width:var(--snav-size,38px);height:var(--snav-size,38px);border-radius:50%;border:1.5px solid var(--snav-border,rgba(255,255,255,.15));background:var(--snav-bg,rgba(255,255,255,.05));cursor:pointer;font-size:var(--fs-body,.95rem);color:var(--snav-color,rgba(255,255,255,.65));display:flex;align-items:center;justify-content:center;transition:all .16s}
.sc-btn-dark svg{width:45%;height:45%}
.sc-btn-dark:hover{background:var(--snav-hover,rgba(255,255,255,.15));color:var(--snav-hover-color,#fff)}
.sc-btn-ghost{width:var(--snav-size,38px);height:var(--snav-size,38px);border-radius:50%;border:1.5px solid var(--snav-border,rgba(255,255,255,.25));background:var(--snav-bg,rgba(255,255,255,.08));cursor:pointer;font-size:var(--fs-body,.95rem);color:var(--snav-color,rgba(255,255,255,.7));display:flex;align-items:center;justify-content:center;transition:all .16s}
.sc-btn-ghost svg{width:45%;height:45%}
.sc-btn-ghost:hover{background:var(--snav-hover,rgba(255,255,255,.2));color:var(--snav-hover-color,#fff)}
.sc-pill-nav{display:flex;justify-content:center;gap:.5rem;margin-top:1.3rem;flex-wrap:wrap}
.sc-btn-pill{padding:.45rem 1.3rem;border-radius:999px;border:1.5px solid var(--snav-border,var(--card-border,#e2e8f0));background:var(--snav-bg,var(--btn-n-bg,var(--bg-color,#fff)));cursor:pointer;font-size:var(--fs-xs,.76rem);font-weight:700;color:var(--snav-color,var(--btn-n-text,var(--text-color,#475569)));transition:all .16s}
.sc-btn-pill:hover{background:var(--snav-hover,#6366f1);color:var(--snav-hover-color,#fff);border-color:var(--snav-hover,#6366f1)}

/* ──────────────────────────────────────────────────────────────
   §3  CS-01 Standard leaflet card
────────────────────────────────────────────────────────────── */
.h-leaflet-card{flex:0 0 270px;scroll-snap-align:start;background:var(--card-bg,#fff);border-radius:12px;overflow:hidden;border:1px solid var(--card-border,#e2e8f0);box-shadow:0 2px 8px rgba(0,0,0,.06);transition:box-shadow .22s,transform .22s;display:flex;flex-direction:column}
.h-leaflet-card:hover{box-shadow:0 8px 28px rgba(0,0,0,.1);transform:translateY(-3px)}
/* "Card style: No card (plain)" — class toggled by the style-config panel (see
   sp-pageedit.js renderStyleConfig) since box-shadow can't be zeroed via calc() the
   way border-width/background can. !important needed to beat each card's own inline
   border/background/box-shadow (which read the admin's Border width/Shadow/Background
   controls and would otherwise always win over a plain class rule). */
.cs01-no-card .h-leaflet-card,.cs01-no-card .h-leaflet-card:hover{border:none!important;box-shadow:none!important;background:transparent!important}
.h-leaflet-body{padding:1.1rem 1.2rem 1.4rem;display:flex;flex-direction:column;flex:1;gap:.4rem}
.h-leaflet-tag{display:inline-block;font-size:var(--fs-xs,.62rem);font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#6366f1;background:#eef2ff;padding:.2rem .55rem;border-radius:4px;width:fit-content}
.leaflet-title{font-size:var(--fs-body,.95rem);font-weight:700;color:var(--text-strong,#0f172a);line-height:1.35;margin-top:.1rem}
.leaflet-desc{line-height:1.55;flex:1}
.h-leaflet-view-btn{display:inline-flex;align-items:center;gap:.3rem;margin-top:.8rem;font-size:var(--fs-sm,.78rem);font-weight:700;color:var(--primary-color,#6366f1);text-decoration:none;transition:gap .18s}
.h-leaflet-view-btn:hover{gap:.55rem}
.h-leaflet-view-btn::after{content:'→'}

/* ──────────────────────────────────────────────────────────────
   §4  CS-02 Cinematic dark poster
────────────────────────────────────────────────────────────── */
/* overflow:hidden lived on .cs2-card itself, which clips a box's OWN box-shadow along
   with its content — that's why the shadow looked cut off. The rounded-corner clipping
   (needed so the poster image respects --cs02-radius) now lives on the inner .cs2-clip
   wrapper instead, leaving .cs2-card free to cast its shadow uncropped. */
.cs2-card{flex:0 0 220px;scroll-snap-align:start;border-radius:16px;box-shadow:0 4px 24px rgba(0,0,0,.4);transition:transform .22s,box-shadow .22s;cursor:pointer;display:flex;flex-direction:column}
.cs2-card:hover{transform:scale(1.03);box-shadow:0 10px 40px rgba(0,0,0,.55)}
.cs2-clip{border-radius:inherit;overflow:hidden;display:flex;flex-direction:column;flex:1}
.cs02-no-card .cs2-card,.cs02-no-card .cs2-card:hover{border:none!important;box-shadow:none!important;background:transparent!important}
/* Poster image is a real <img> (object-fit:cover), not a CSS background-image — the
   asset-resolution/rewrite pipeline that turns the placeholder filename into a real served
   URL only touches <img src> attributes, so a background-image: url('banner_1.jpg') never
   got rewritten and silently failed to load, showing nothing under the overlay. */
.cs2-img{height:280px;position:relative;display:flex;align-items:flex-end;overflow:hidden}
.cs2-img>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.cs2-overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:1.2rem;background:linear-gradient(to top,rgba(0,0,0,.9) 0%,rgba(0,0,0,.2) 55%,transparent 100%)}
/* Tag/title reuse the SAME Eyebrow/Heading Typography vars the section header uses
   (--cs02-tag-color/--cs02-title-color), instead of separate hardcoded whites, so one
   pair of controls governs both the section heading and each card's overlay text. */
.cs2-tag{font-size:var(--cs02-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--cs02-tag-color,rgba(255,255,255,.5));margin-bottom:.4rem;display:block}
.cs2-title{font-size:var(--cs02-fs-body,var(--fs-body));font-weight:800;color:var(--cs02-title-color,#ffffff);line-height:1.25}
/* Footer band gets its OWN dedicated color control (--cs02-foot-bg) rather than sharing
   --cs02-inner-bg (the mostly-invisible card-root background, hidden under the poster
   image) — the two are visually unrelated so conflating them was confusing to configure.
   min-height keeps the band a stable size so a 3-line-clamped meta doesn't reflow card
   height card-to-card. */
.cs2-foot{background:var(--cs02-foot-bg,#111827);padding:.85rem 1.1rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.6rem;min-height:88px}
.cs2-meta{font-size:var(--cs02-fs-sm,var(--fs-sm));color:var(--cs02-foot-text-color,#94a3b8);line-height:1.45;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cs2-btn{font-size:var(--cs02-fs-xs,var(--fs-xs));font-weight:700;color:var(--cs02-btn-color,#818cf8);white-space:nowrap;text-decoration:none;flex-shrink:0;padding:.35rem .8rem;border:1px solid color-mix(in srgb,var(--cs02-btn-color,#818cf8) 40%,transparent);border-radius:999px;transition:all .16s}
.cs2-btn:hover{background:var(--cs02-btn-color,#818cf8);color:#fff}

/* ──────────────────────────────────────────────────────────────
   §5  CS-03 Landscape article
────────────────────────────────────────────────────────────── */
.cs3-track{gap:14px}
.cs3-card{flex:0 0 340px;scroll-snap-align:start;background:var(--card-bg,#fff);border-radius:12px;border:1px solid var(--card-border,#e2e8f0);overflow:hidden;display:flex;flex-direction:row;box-shadow:0 1px 4px rgba(0,0,0,.04);transition:box-shadow .2s,transform .2s}
.cs3-card:hover{box-shadow:0 6px 20px rgba(0,0,0,.08);transform:translateY(-2px)}
.cs03-no-card .cs3-card,.cs03-no-card .cs3-card:hover{border:none!important;box-shadow:none!important;background:transparent!important}
.cs3-img{width:100px;flex-shrink:0;position:relative;overflow:hidden}
.cs3-img img{width:100%;height:100%;object-fit:cover;display:block}
.cs3-accent{position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--cs3-accent,#10b981)}
.cs3-body{padding:.85rem 1rem .9rem .75rem;display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:0}
.cs3-tag{font-size:var(--cs03-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--cs3-accent,#10b981)}
.cs3-title{font-size:var(--cs03-fs-body,var(--fs-body));font-weight:700;color:var(--text-strong,#0f172a);line-height:1.3}
.cs3-desc{color:var(--cs03-desc-color,#64748b);line-height:1.5;flex:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cs3-foot{display:flex;align-items:center;justify-content:space-between;margin-top:.5rem}
.cs3-time{font-size:var(--cs03-fs-sm,var(--fs-sm));color:var(--text-muted,#94a3b8);font-weight:600}
.cs3-btn{font-size:var(--cs03-fs-sm,var(--fs-sm));font-weight:700;color:var(--cs3-accent,#10b981);flex-shrink:0}
.cs3-btn:hover{text-decoration:underline}

/* ──────────────────────────────────────────────────────────────
   §6  CS-04 Numbered feature
────────────────────────────────────────────────────────────── */
.cs4-track{gap:16px}
.cs4-card{flex:0 0 230px;scroll-snap-align:start;background:var(--card-bg,#fff);border-radius:14px;border:1px solid var(--card-border,#e2e8f0);padding:1.6rem 1.4rem 1.4rem;position:relative;overflow:hidden;box-shadow:0 1px 6px rgba(0,0,0,.05);transition:box-shadow .2s,transform .2s;display:flex;flex-direction:column;gap:.4rem}
/* Top bar derives from the SAME per-item "Number Badge Color" (--cs4-num) instead of an
   independent hardcoded gradient — was two unrelated colors on one card with no way to
   keep them in sync. color-mix darkens the (usually pastel) badge tint into a deep bar. */
.cs4-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:color-mix(in srgb,var(--cs4-num,#e0e7ff) 65%,black)}
.cs4-card:hover{box-shadow:0 8px 28px rgba(0,0,0,.1);transform:translateY(-3px)}
.cs04-no-card .cs4-card,.cs04-no-card .cs4-card:hover{border:none!important;box-shadow:none!important;background:transparent!important}
.cs04-no-card .cs4-card::before{display:none}
.cs4-num{font-size:3.2rem;font-weight:900;color:var(--cs4-num,#e0e7ff);line-height:1;letter-spacing:-.04em}
.cs4-title{font-size:var(--cs04-fs-body,var(--fs-body));font-weight:800;color:var(--text-strong,#0f172a);line-height:1.3;margin-top:.1rem}
.cs4-desc{color:var(--cs04-desc-color,#64748b);line-height:1.55;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cs4-btn{font-size:var(--cs04-fs-sm,var(--fs-sm));font-weight:700;color:var(--cs4-link,#6366f1);text-decoration:none;margin-top:.5rem;display:inline-flex;align-items:center;transition:gap .15s}
.cs4-btn::after{content:'→'}
.cs4-btn:hover{gap:.4rem}

/* ──────────────────────────────────────────────────────────────
   §7  CS-05 Glass on gradient
────────────────────────────────────────────────────────────── */
.cs5-bg{background:linear-gradient(135deg,#1e1b4b 0%,#312e81 38%,#4c1d95 68%,#6b21a8 100%)}
.cs5-track{gap:16px}
/* Glass tint is composed from a color + opacity pair (--cs05-card-bg/--cs05-card-opacity)
   instead of one hardcoded rgba — lets the admin pick any hue at any translucency, not
   just white at a fixed 10%. Opacity is stored as a plain 0-1 decimal (the standard for
   every opacity control in this library), converted to color-mix's percentage syntax via
   calc(... * 100%). Hover bumps opacity by +0.07 to keep the same "brighten on hover" feel
   regardless of the chosen base opacity. */
.cs5-card{flex:0 0 220px;scroll-snap-align:start;border-radius:20px;background:color-mix(in srgb,var(--cs05-card-bg,#ffffff) calc(var(--cs05-card-opacity,0.1) * 100%),transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.2);padding:1.6rem 1.3rem 1.5rem;display:flex;flex-direction:column;gap:.4rem;transition:background .22s,transform .22s,box-shadow .22s}
.cs5-card:hover{background:color-mix(in srgb,var(--cs05-card-bg,#ffffff) calc((var(--cs05-card-opacity,0.1) + 0.07) * 100%),transparent);transform:translateY(-5px);box-shadow:0 16px 48px rgba(0,0,0,.35)}
.cs5-icon{width:52px;height:52px;border-radius:13px;overflow:hidden;border:1px solid rgba(255,255,255,.25);flex-shrink:0;margin-bottom:.3rem}
.cs5-icon img{width:100%;height:100%;object-fit:cover;display:block}
.cs5-tag{font-size:var(--cs05-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:rgba(255,255,255,.45)}
.cs5-title{font-size:var(--cs05-fs-body,var(--fs-body));font-weight:800;color:#fff;line-height:1.3}
.cs5-desc{color:var(--cs05-desc-color,rgba(255,255,255,.58));line-height:1.55;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cs5-btn{font-size:var(--cs05-fs-sm,var(--fs-sm));font-weight:700;color:var(--cs05-btn-color,#c4b5fd);text-decoration:none;margin-top:.4rem;display:inline-flex;align-items:center;gap:.25rem;transition:color .15s}
.cs5-btn::after{content:'→'}
.cs5-btn:hover{color:#fff}

/* ──────────────────────────────────────────────────────────────
   §8  CS-06 Tall editorial
────────────────────────────────────────────────────────────── */
.cs6-track{gap:22px}
.cs6-card{flex:0 0 270px;scroll-snap-align:start;border-radius:22px;overflow:hidden;background:var(--card-bg,#fff);box-shadow:0 4px 20px rgba(0,0,0,.08);transition:transform .26s,box-shadow .26s;display:flex;flex-direction:column;height:440px}
.cs6-card:hover{transform:translateY(-7px);box-shadow:0 20px 56px rgba(0,0,0,.14)}
.cs6-img{height:56%;flex-shrink:0;overflow:hidden;position:relative}
.cs6-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .45s}
.cs6-card:hover .cs6-img img{transform:scale(1.07)}
/* Tint is derived from the SAME per-item "Accent Color" (--cs6-accent) instead of an
   independent hardcoded --cs6-tint — was two unrelated colors on one card with no way to
   keep them in sync. color-mix lightens the accent into a pale tint for the body fill. */
.cs6-body{flex:1;padding:1.4rem 1.5rem 1.6rem;position:relative;overflow:hidden;background:color-mix(in srgb,var(--cs6-accent,#f97316) 8%,white);display:flex;flex-direction:column;gap:.4rem}
.cs6-ghost{position:absolute;right:-8px;bottom:-28px;font-size:8rem;font-weight:900;color:rgba(0,0,0,.05);line-height:1;pointer-events:none;letter-spacing:-.05em;user-select:none}
.cs6-tag{display:inline-block;font-size:var(--cs06-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--cs6-accent,#f97316);width:fit-content}
.cs6-title{font-size:1.05rem;font-weight:800;color:var(--text-strong,#0f172a);line-height:1.28;letter-spacing:-.01em}
.cs6-desc{font-size:var(--cs06-fs-sm,var(--fs-sm));color:var(--cs06-desc-color,#64748b);line-height:1.55;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cs6-btn{font-size:var(--cs06-fs-xs,var(--fs-xs));font-weight:700;color:var(--cs6-accent,#f97316);text-decoration:none;margin-top:.5rem;display:inline-flex;align-items:center;gap:.28rem;transition:gap .15s}
.cs6-btn::after{content:'→'}
.cs6-btn:hover{gap:.44rem}

/* ──────────────────────────────────────────────────────────────
   §9  CS-07 Wide panoramic
────────────────────────────────────────────────────────────── */
.cs7-track{gap:18px}
.cs7-card{flex:0 0 400px;scroll-snap-align:start;border-radius:18px;overflow:hidden;background:var(--card-bg,#fff);box-shadow:0 2px 14px rgba(0,0,0,.07);display:flex;flex-direction:row;height:230px;transition:box-shadow .22s,transform .22s}
.cs7-card:hover{box-shadow:0 12px 36px rgba(0,0,0,.11);transform:translateY(-4px)}
.cs07-no-card .cs7-card,.cs07-no-card .cs7-card:hover{border:none!important;box-shadow:none!important;background:transparent!important}
.cs7-img{width:48%;flex-shrink:0;overflow:hidden;position:relative}
.cs7-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .42s}
.cs7-card:hover .cs7-img img{transform:scale(1.07)}
.cs7-body{flex:1;padding:1.4rem 1.3rem;display:flex;flex-direction:column;justify-content:center;gap:.4rem;min-width:0}
.cs7-eyebrow{display:flex;align-items:center;gap:.4rem}
.cs7-dot{width:7px;height:7px;border-radius:50%;background:var(--cs7-color,#6366f1);flex-shrink:0}
.cs7-cat{font-size:var(--cs07-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--cs7-color,#6366f1)}
.cs7-title{font-size:var(--cs07-fs-body,var(--fs-body));font-weight:800;color:var(--text-strong,#0f172a);line-height:1.25;letter-spacing:-.01em}
.cs7-desc{font-size:var(--cs07-fs-body,var(--fs-body));color:var(--cs07-desc-color,#64748b);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cs7-foot{display:flex;align-items:center;justify-content:space-between;margin-top:.4rem;gap:.5rem;flex-wrap:wrap}
.cs7-meta{font-size:var(--cs07-fs-sm,var(--fs-sm));color:var(--cs07-meta-color,#94a3b8);font-weight:600}
.cs7-btn{font-size:var(--cs07-fs-sm,var(--fs-sm));font-weight:700;color:var(--cs7-color,#6366f1);text-decoration:none;padding:.3rem .75rem;border:1.5px solid var(--cs7-color,#6366f1);border-radius:999px;transition:all .15s;flex-shrink:0}
.cs7-btn:hover{background:var(--cs7-color,#6366f1);color:#fff}

/* ──────────────────────────────────────────────────────────────
   §10 CS-08 Polaroid
────────────────────────────────────────────────────────────── */
.cs8-track{gap:22px;padding:16px 4px 24px}
.cs8-card{flex:0 0 240px;scroll-snap-align:start;background:var(--card-bg,#fff);padding:12px 12px 44px;border-radius:3px;box-shadow:0 8px 28px rgba(0,0,0,.12),0 1px 4px rgba(0,0,0,.06);display:flex;flex-direction:column;transition:transform .3s,box-shadow .3s}
.cs8-card:nth-child(odd){transform:rotate(-1.2deg)}
.cs8-card:nth-child(even){transform:rotate(1.1deg)}
.cs8-card:nth-child(3n){transform:rotate(-0.5deg)}
.cs8-card:hover{transform:rotate(0deg) scale(1.04) !important;box-shadow:0 20px 56px rgba(0,0,0,.18)}
.cs8-img{width:100%;aspect-ratio:1/1;overflow:hidden;position:relative}
.cs8-img img{width:100%;height:100%;object-fit:cover;display:block}
.cs8-caption{padding:.9rem .3rem .2rem;text-align:center}
.cs8-title{font-size:var(--cs08-fs-body,var(--fs-body));font-weight:700;color:var(--cs08-caption-title-color,#1e293b);font-family:Georgia,'Times New Roman',serif;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cs8-sub{font-size:var(--cs08-fs-xs,var(--fs-xs));color:var(--cs08-caption-color,#94a3b8);margin-top:.25rem;font-style:italic}

/* ──────────────────────────────────────────────────────────────
   §11 CS-09 Flip card
────────────────────────────────────────────────────────────── */
.cs9-track{gap:20px}
.cs9-wrap{flex:0 0 270px;scroll-snap-align:start;height:390px;perspective:1100px;cursor:pointer}
.cs9-inner{width:100%;height:100%;position:relative;transform-style:preserve-3d;transition:transform .58s cubic-bezier(.4,0,.2,1)}
.cs9-wrap:hover .cs9-inner,.cs9-wrap.flipped .cs9-inner{transform:rotateY(180deg)}
.cs9-front,.cs9-back{position:absolute;inset:0;border-radius:20px;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.cs9-front{background:var(--card-bg,#fff);box-shadow:0 4px 22px rgba(0,0,0,.09)}
.cs9-back{transform:rotateY(180deg);background:#6366f1;box-shadow:0 4px 22px rgba(0,0,0,.18);display:flex;flex-direction:column;padding:2rem 1.6rem;justify-content:flex-end}
.cs9-front img{width:100%;height:68%;object-fit:cover;display:block}
.cs9-front-body{padding:1.1rem 1.3rem 1.4rem}
.cs9-front-tag{font-size:var(--cs09-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--cs09-front-tag-color,#94a3b8)}
.cs9-front-title{font-size:var(--cs09-fs-body,var(--fs-body));font-weight:800;color:var(--text-strong,#0f172a);line-height:1.28;margin-top:.35rem}
/* Back-card text (hint/title/desc) shares ONE color control — they're all painted on
   the same admin-configurable --cs09-back-bg, so they need to move together if the back
   background is switched from dark to light, or the default white becomes unreadable. */
.cs9-back-hint{font-size:var(--cs09-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:color-mix(in srgb,var(--cs09-back-text-color,#ffffff) 45%,transparent);margin-bottom:auto}
.cs9-back-title{font-size:1.35rem;font-weight:900;color:var(--cs09-back-text-color,#ffffff);line-height:1.18;letter-spacing:-.02em;margin-bottom:.7rem}
.cs9-back-desc{font-size:var(--cs09-fs-sm,var(--fs-sm));color:color-mix(in srgb,var(--cs09-back-text-color,#ffffff) 72%,transparent);line-height:1.55;margin-bottom:1.4rem;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.cs9-back-btn{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--cs09-fs-xs,var(--fs-xs));font-weight:800;color:var(--cs09-btn-color,#ffffff);text-decoration:none;background:color-mix(in srgb,var(--cs09-btn-color,#ffffff) 18%,transparent);border:1.5px solid color-mix(in srgb,var(--cs09-btn-color,#ffffff) 40%,transparent);padding:.55rem 1.1rem;border-radius:999px;transition:background .15s;width:fit-content}
.cs9-back-btn:hover{background:color-mix(in srgb,var(--cs09-btn-color,#ffffff) 30%,transparent)}
.cs9-flip-hint{position:absolute;top:12px;right:14px;font-size:var(--cs09-fs-xs,var(--fs-xs));font-weight:700;color:var(--text-muted,#94a3b8);letter-spacing:.08em;text-transform:uppercase;background:var(--surface-color,#f8fafc);padding:.2rem .5rem;border-radius:999px}

/* ──────────────────────────────────────────────────────────────
   §12 CS-10 Layered depth
────────────────────────────────────────────────────────────── */
.cs10-track{gap:28px;padding:14px 4px 22px}
.cs10-wrap{flex:0 0 300px;scroll-snap-align:start;position:relative}
/* Offset box derives from the SAME section-level "Accent color" (--cs10-accent) that
   already drives the tag + button, at a light tone, instead of an independent hardcoded
   blue that never matched a custom accent. */
.cs10-wrap::before{content:'';position:absolute;inset:0;border-radius:22px;background:color-mix(in srgb,var(--cs10-accent,#2563eb) 25%,white);transform:translate(9px,9px);transition:transform .26s;z-index:0}
.cs10-wrap:hover::before{transform:translate(14px,14px)}
/* background/border-radius/box-shadow dropped — every instance already sets these inline
   via --cs10-inner-bg/--cs10-radius/--cs10-shadow, so the class-level fallbacks were dead
   weight. height:100% makes the card actually fill .cs10-wrap's stretched flex height
   (siblings already stretch equal-tall via .sc-track's default align-items:stretch) — the
   4th/user-added card with a taller image was leaving the others short without it. */
.cs10-card{position:relative;z-index:1;overflow:hidden;transition:transform .26s;display:flex;flex-direction:column;height:100%}
.cs10-wrap:hover .cs10-card{transform:translate(-3px,-3px)}
.cs10-img-wrap{width:100%;height:200px;position:relative;overflow:hidden}
.cs10-img{width:100%;height:100%;object-fit:cover;display:block}
.cs10-body{padding:1.5rem 1.5rem 1.7rem;display:flex;flex-direction:column;gap:.45rem;flex:1}
.cs10-tag{display:inline-block;font-size:var(--cs10-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--cs10-accent,#2563eb);background:color-mix(in srgb,var(--cs10-accent,#2563eb) 15%,white);padding:.2rem .55rem;border-radius:4px;width:fit-content}
.cs10-title{font-size:1.05rem;font-weight:800;color:var(--text-strong,#0f172a);line-height:1.28;letter-spacing:-.01em}
.cs10-desc{font-size:var(--cs10-fs-sm,var(--fs-sm));color:var(--cs10-desc-color,#64748b);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cs10-foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto}
.cs10-meta{font-size:var(--cs10-fs-xs,var(--fs-xs));color:var(--cs10-meta-color,#94a3b8);font-weight:600}
.cs10-btn{font-size:var(--cs10-fs-xs,var(--fs-xs));font-weight:700;color:var(--cs10-accent,#2563eb);text-decoration:none;display:inline-flex;align-items:center;gap:.25rem;transition:gap .15s}
.cs10-btn::after{content:'→'}
.cs10-btn:hover{gap:.4rem}

/* ──────────────────────────────────────────────────────────────
   §13 Floating social bar — structure
   Position (side/anchor/offset) is per-template (--fsN-side/-anchor/-offset)
   rather than a shared bridged var: each variant already carries its own
   .fsN class for color scoping, so attribute-selectors keyed to that same
   class read the LITERAL inline-style text directly — no bridging needed,
   and bridging would break this exact trick (a bridge var's inline text
   never changes even when the value it points to does).
────────────────────────────────────────────────────────────── */
/* transform:...!important: every fs1..fs8 template offers a Reveal
   Animation field (defaulting to "fade-up") applied via data-aos
   DIRECTLY on this same .fsb element (sp-pageedit.js's aosType handler
   sets it on "the section itself"). AOS's own CSS (aos.css) sets
   `transform` on [data-aos=...] elements for the fade/slide/zoom/flip
   animations, and since aos.css's <link> loads AFTER this stylesheet
   with the same specificity (a plain class vs. a plain attribute
   selector), AOS's rule wins the cascade and completely REPLACES (not
   composes with) this translateY(-50%) -- only one `transform` value can
   apply. The centering offset was silently dropped, landing the bar
   with its TOP edge at the viewport's vertical centre instead of being
   centred itself -- visibly pushed down by about half its own height.
   Found live 2026-09-24 ("position center selected but it's pushed
   downwards"), present on every one of the 8 templates by default
   (fade-up being everyone's default Reveal Animation).
   !important is the targeted fix -- an earlier attempt switched to
   top:0;bottom:0;margin:auto 0 (transform-free centering) to sidestep
   the conflict entirely, but that broke the bar's flex layout outright
   ("complete logic is lost" -- icons scattered across the full viewport
   height instead of grouped together), reverted the same day. */
.fsb{
  position:fixed;width:max-content;right:0;left:auto;top:50%;bottom:auto;transform:translateY(-50%) !important;
  display:flex;flex-direction:column;gap:6px;
  padding:10px 0 10px 10px;z-index:9999
}
.fsb-item{display:flex;align-items:center;justify-content:flex-end;gap:8px;position:relative}
.fsb-item[hidden]{display:none}
.fsb-label{
  position:absolute;top:50%;right:calc(100% + 10px);
  font-size:var(--fs-xs,.68rem);font-weight:700;white-space:nowrap;
  background:#1e293b;color:#fff;padding:.28rem .65rem;border-radius:6px;
  opacity:0;transform:translateY(-50%) translateX(8px);transition:opacity .18s,transform .18s;pointer-events:none
}
.fsb-label::after{
  content:'';position:absolute;right:-5px;top:50%;transform:translateY(-50%);
  border:5px solid transparent;border-left-color:var(--text-strong,#1e293b)
}
.fsb-item:hover .fsb-label{opacity:1;transform:translateY(-50%) translateX(0)}
.fsb-btn{
  width:44px;height:44px;border-radius:50%;border:none;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;text-decoration:none;flex-shrink:0;
  transition:transform .18s,box-shadow .18s;
  box-shadow:0 2px 10px rgba(0,0,0,.15);position:relative
}
.fsb-btn:hover{transform:translateX(-5px);box-shadow:0 4px 18px rgba(0,0,0,.22)}
.fsb-btn svg{width:20px;height:20px;display:block}
.fsb-call .fsb-btn{width:50px;height:50px}
.fsb-call .fsb-btn svg{width:22px;height:22px}
.fsb-divider{width:36px;height:1px;background:rgba(0,0,0,.12);margin:2px 4px;align-self:flex-end}

/* Shared side/anchor toggle mixin — repeated per template class below since
   attribute-selector matching must be scoped to that template's own class. */

/* FS-01 White pill + per-platform brand icon color */
.fs1 .fsb-btn{background:var(--fs1-bar-bg,#ffffff);border-radius:var(--fs1-radius,50%);box-shadow:var(--fs1-shadow,0 2px 10px rgba(0,0,0,.15))}
.fs1-call .fsb-btn{color:var(--fs1-call-color,#16a34a)}
.fs1-wa .fsb-btn{color:var(--fs1-wa-color,#25D366)}
.fs1-ig .fsb-btn{color:var(--fs1-ig-color,#e1306c)}
.fs1-fb .fsb-btn{color:var(--fs1-fb-color,#1877f2)}
.fs1-yt .fsb-btn{color:var(--fs1-yt-color,#ff0000)}
.fs1-li .fsb-btn{color:var(--fs1-li-color,#0077b5)}
.fs1-tw .fsb-btn{color:var(--fs1-tw-color,#000000)}
.fs1 .fsb-divider{background:var(--fs1-divider-color,rgba(0,0,0,.12))}

.fs1[style*="--fs1-side:left"],.fs1[style*="--fs1-side: left"]{right:auto;left:0;padding:10px 10px 10px 0}
.fs1[style*="--fs1-side:left"] .fsb-btn:hover,.fs1[style*="--fs1-side: left"] .fsb-btn:hover{transform:translateX(5px)}
.fs1[style*="--fs1-side:left"] .fsb-item,.fs1[style*="--fs1-side: left"] .fsb-item{justify-content:flex-start}
.fs1[style*="--fs1-side:left"] .fsb-divider,.fs1[style*="--fs1-side: left"] .fsb-divider{align-self:flex-start}
.fs1[style*="--fs1-side:left"] .fsb-label,.fs1[style*="--fs1-side: left"] .fsb-label{right:auto;left:calc(100% + 10px);transform:translateY(-50%) translateX(-8px)}
.fs1[style*="--fs1-side:left"] .fsb-item:hover .fsb-label,.fs1[style*="--fs1-side: left"] .fsb-item:hover .fsb-label{transform:translateY(-50%) translateX(0)}
.fs1[style*="--fs1-side:left"] .fsb-label::after,.fs1[style*="--fs1-side: left"] .fsb-label::after{right:auto;left:-5px;transform:translateY(-50%) rotate(180deg)}
.fs1[style*="--fs1-anchor:top"],.fs1[style*="--fs1-anchor: top"]{top:var(--fs1-offset,80px);bottom:auto;transform:none !important}
.fs1[style*="--fs1-anchor:bottom"],.fs1[style*="--fs1-anchor: bottom"]{top:auto;bottom:var(--fs1-offset,80px);transform:none !important}

/* FS-02 Filled brand-color buttons, white icon */
.fs2 .fsb-btn{color:var(--fs2-icon-color,var(--icon-color,#ffffff));border-radius:var(--fs2-radius,50%);box-shadow:var(--fs2-shadow,0 2px 10px rgba(0,0,0,.15))}
.fs2-call .fsb-btn{background:var(--fs2-call-bg,#16a34a)}
.fs2-wa .fsb-btn{background:var(--fs2-wa-bg,#25D366)}
.fs2-ig .fsb-btn{background:var(--fs2-ig-bg,linear-gradient(135deg,#f58529,#dd2a7b,#8134af))}
.fs2-fb .fsb-btn{background:var(--fs2-fb-bg,#1877f2)}
.fs2-yt .fsb-btn{background:var(--fs2-yt-bg,#ff0000)}
.fs2-li .fsb-btn{background:var(--fs2-li-bg,#0077b5)}
.fs2-tw .fsb-btn{background:var(--fs2-tw-bg,#000000)}
.fs2 .fsb-divider{background:var(--fs2-divider-color,rgba(0,0,0,.12))}

.fs2[style*="--fs2-side:left"],.fs2[style*="--fs2-side: left"]{right:auto;left:0;padding:10px 10px 10px 0}
.fs2[style*="--fs2-side:left"] .fsb-btn:hover,.fs2[style*="--fs2-side: left"] .fsb-btn:hover{transform:translateX(5px)}
.fs2[style*="--fs2-side:left"] .fsb-item,.fs2[style*="--fs2-side: left"] .fsb-item{justify-content:flex-start}
.fs2[style*="--fs2-side:left"] .fsb-divider,.fs2[style*="--fs2-side: left"] .fsb-divider{align-self:flex-start}
.fs2[style*="--fs2-side:left"] .fsb-label,.fs2[style*="--fs2-side: left"] .fsb-label{right:auto;left:calc(100% + 10px);transform:translateY(-50%) translateX(-8px)}
.fs2[style*="--fs2-side:left"] .fsb-item:hover .fsb-label,.fs2[style*="--fs2-side: left"] .fsb-item:hover .fsb-label{transform:translateY(-50%) translateX(0)}
.fs2[style*="--fs2-side:left"] .fsb-label::after,.fs2[style*="--fs2-side: left"] .fsb-label::after{right:auto;left:-5px;transform:translateY(-50%) rotate(180deg)}
.fs2[style*="--fs2-anchor:top"],.fs2[style*="--fs2-anchor: top"]{top:var(--fs2-offset,80px);bottom:auto;transform:none !important}
.fs2[style*="--fs2-anchor:bottom"],.fs2[style*="--fs2-anchor: bottom"]{top:auto;bottom:var(--fs2-offset,80px);transform:none !important}

/* FS-03 Dark monochrome social icons, accent call button, green WhatsApp */
.fs3 .fsb-btn{background:var(--fs3-social-bg,#0f172a);color:var(--fs3-social-color,#ffffff);border-radius:var(--fs3-radius,50%)}
.fs3-call .fsb-btn{background:var(--fs3-call-bg,#6366f1)}
.fs3-wa .fsb-btn{background:var(--fs3-wa-bg,#25D366)}
.fs3 .fsb-divider{background:var(--fs3-divider-color,rgba(148,163,184,.4))}

.fs3[style*="--fs3-side:left"],.fs3[style*="--fs3-side: left"]{right:auto;left:0;padding:10px 10px 10px 0}
.fs3[style*="--fs3-side:left"] .fsb-btn:hover,.fs3[style*="--fs3-side: left"] .fsb-btn:hover{transform:translateX(5px)}
.fs3[style*="--fs3-side:left"] .fsb-item,.fs3[style*="--fs3-side: left"] .fsb-item{justify-content:flex-start}
.fs3[style*="--fs3-side:left"] .fsb-divider,.fs3[style*="--fs3-side: left"] .fsb-divider{align-self:flex-start}
.fs3[style*="--fs3-side:left"] .fsb-label,.fs3[style*="--fs3-side: left"] .fsb-label{right:auto;left:calc(100% + 10px);transform:translateY(-50%) translateX(-8px)}
.fs3[style*="--fs3-side:left"] .fsb-item:hover .fsb-label,.fs3[style*="--fs3-side: left"] .fsb-item:hover .fsb-label{transform:translateY(-50%) translateX(0)}
.fs3[style*="--fs3-side:left"] .fsb-label::after,.fs3[style*="--fs3-side: left"] .fsb-label::after{right:auto;left:-5px;transform:translateY(-50%) rotate(180deg)}
.fs3[style*="--fs3-anchor:top"],.fs3[style*="--fs3-anchor: top"]{top:var(--fs3-offset,80px);bottom:auto;transform:none !important}
.fs3[style*="--fs3-anchor:bottom"],.fs3[style*="--fs3-anchor: bottom"]{top:auto;bottom:var(--fs3-offset,80px);transform:none !important}

/* FS-04 Ghost / outline buttons */
.fs4 .fsb-btn{background:var(--fs4-bar-bg,rgba(255,255,255,.92));border:var(--fs4-border-w,1.5px) solid var(--fs4-social-border,#e2e8f0);color:var(--fs4-social-color,#475569);box-shadow:0 1px 6px rgba(0,0,0,.08);border-radius:var(--fs4-radius,50%)}
.fs4-call .fsb-btn{border-color:var(--fs4-call-color,#16a34a);color:var(--fs4-call-color,#16a34a)}
.fs4-wa .fsb-btn{border-color:var(--fs4-wa-color,#25D366);color:var(--fs4-wa-color,#25D366)}
.fs4 .fsb-item:hover .fsb-btn{background:var(--surface-color,#f8fafc);box-shadow:0 3px 14px rgba(0,0,0,.12)}
.fs4 .fsb-divider{background:var(--fs4-divider-color,#e2e8f0)}

.fs4[style*="--fs4-side:left"],.fs4[style*="--fs4-side: left"]{right:auto;left:0;padding:10px 10px 10px 0}
.fs4[style*="--fs4-side:left"] .fsb-btn:hover,.fs4[style*="--fs4-side: left"] .fsb-btn:hover{transform:translateX(5px)}
.fs4[style*="--fs4-side:left"] .fsb-item,.fs4[style*="--fs4-side: left"] .fsb-item{justify-content:flex-start}
.fs4[style*="--fs4-side:left"] .fsb-divider,.fs4[style*="--fs4-side: left"] .fsb-divider{align-self:flex-start}
.fs4[style*="--fs4-side:left"] .fsb-label,.fs4[style*="--fs4-side: left"] .fsb-label{right:auto;left:calc(100% + 10px);transform:translateY(-50%) translateX(-8px)}
.fs4[style*="--fs4-side:left"] .fsb-item:hover .fsb-label,.fs4[style*="--fs4-side: left"] .fsb-item:hover .fsb-label{transform:translateY(-50%) translateX(0)}
.fs4[style*="--fs4-side:left"] .fsb-label::after,.fs4[style*="--fs4-side: left"] .fsb-label::after{right:auto;left:-5px;transform:translateY(-50%) rotate(180deg)}
.fs4[style*="--fs4-anchor:top"],.fs4[style*="--fs4-anchor: top"]{top:var(--fs4-offset,80px);bottom:auto;transform:none !important}
.fs4[style*="--fs4-anchor:bottom"],.fs4[style*="--fs4-anchor: bottom"]{top:auto;bottom:var(--fs4-offset,80px);transform:none !important}

/* FS-05 Frosted-glass panel on a gradient background */
.fs5{background:var(--fs5-grad,linear-gradient(145deg,#1e1b4b,#6b21a8));border-radius:var(--fs5-radius,16px);padding:14px 12px;gap:0}
.fs5-inner{background:rgba(255,255,255,var(--fs5-glass-opacity,.1));backdrop-filter:blur(var(--fs5-blur,12px));-webkit-backdrop-filter:blur(var(--fs5-blur,12px));border:1px solid rgba(255,255,255,.2);border-radius:14px;padding:10px 8px;display:flex;flex-direction:column;gap:7px}
.fs5 .fsb-btn{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);width:46px;height:46px}
.fs5 .fsb-call .fsb-btn{width:46px;height:46px}
.fs5 .fsb-btn svg{width:20px;height:20px}
.fs5-call .fsb-btn{color:var(--fs5-call-color,#ffffff)}
.fs5-wa .fsb-btn{color:var(--fs5-wa-color,#4ade80)}
.fs5-ig .fsb-btn{color:var(--fs5-ig-color,#f9a8d4)}
.fs5-fb .fsb-btn{color:var(--fs5-fb-color,#93c5fd)}
.fs5-yt .fsb-btn{color:var(--fs5-yt-color,#fca5a5)}
.fs5-li .fsb-btn{color:var(--fs5-li-color,#93c5fd)}
.fs5-tw .fsb-btn{color:var(--fs5-tw-color,#e2e8f0)}
.fs5 .fsb-divider{background:rgba(255,255,255,.15);margin:1px 4px}

.fs5[style*="--fs5-side:left"],.fs5[style*="--fs5-side: left"]{right:auto;left:0;padding:10px 10px 10px 0}
.fs5[style*="--fs5-side:left"] .fsb-btn:hover,.fs5[style*="--fs5-side: left"] .fsb-btn:hover{transform:translateX(5px)}
.fs5[style*="--fs5-side:left"] .fsb-item,.fs5[style*="--fs5-side: left"] .fsb-item{justify-content:flex-start}
.fs5[style*="--fs5-side:left"] .fsb-divider,.fs5[style*="--fs5-side: left"] .fsb-divider{align-self:flex-start}
.fs5[style*="--fs5-side:left"] .fsb-label,.fs5[style*="--fs5-side: left"] .fsb-label{right:auto;left:calc(100% + 10px);transform:translateY(-50%) translateX(-8px)}
.fs5[style*="--fs5-side:left"] .fsb-item:hover .fsb-label,.fs5[style*="--fs5-side: left"] .fsb-item:hover .fsb-label{transform:translateY(-50%) translateX(0)}
.fs5[style*="--fs5-side:left"] .fsb-label::after,.fs5[style*="--fs5-side: left"] .fsb-label::after{right:auto;left:-5px;transform:translateY(-50%) rotate(180deg)}
.fs5[style*="--fs5-anchor:top"],.fs5[style*="--fs5-anchor: top"]{top:var(--fs5-offset,80px);bottom:auto;transform:none !important}
.fs5[style*="--fs5-anchor:bottom"],.fs5[style*="--fs5-anchor: bottom"]{top:auto;bottom:var(--fs5-offset,80px);transform:none !important}

/* FS-06 Squircle buttons, soft pastel tinted backgrounds */
.fs6 .fsb-btn{border-radius:var(--fs6-radius,.875rem);box-shadow:none}
.fs6-call .fsb-btn{background:var(--fs6-call-bg,#dcfce7);color:var(--fs6-call-color,#16a34a)}
.fs6-wa .fsb-btn{background:var(--fs6-wa-bg,#d1fae5);color:var(--fs6-wa-color,#059669)}
.fs6-ig .fsb-btn{background:var(--fs6-ig-bg,#fce7f3);color:var(--fs6-ig-color,#e1306c)}
.fs6-fb .fsb-btn{background:var(--fs6-fb-bg,#dbeafe);color:var(--fs6-fb-color,#1877f2)}
.fs6-yt .fsb-btn{background:var(--fs6-yt-bg,#fee2e2);color:var(--fs6-yt-color,#ff0000)}
.fs6-li .fsb-btn{background:var(--fs6-li-bg,#dbeafe);color:var(--fs6-li-color,#0077b5)}
.fs6-tw .fsb-btn{background:var(--fs6-tw-bg,#f1f5f9);color:var(--fs6-tw-color,#000000)}
.fs6 .fsb-divider{background:var(--fs6-divider-color,#e2e8f0)}

.fs6[style*="--fs6-side:left"],.fs6[style*="--fs6-side: left"]{right:auto;left:0;padding:10px 10px 10px 0}
.fs6[style*="--fs6-side:left"] .fsb-btn:hover,.fs6[style*="--fs6-side: left"] .fsb-btn:hover{transform:translateX(5px)}
.fs6[style*="--fs6-side:left"] .fsb-item,.fs6[style*="--fs6-side: left"] .fsb-item{justify-content:flex-start}
.fs6[style*="--fs6-side:left"] .fsb-divider,.fs6[style*="--fs6-side: left"] .fsb-divider{align-self:flex-start}
.fs6[style*="--fs6-side:left"] .fsb-label,.fs6[style*="--fs6-side: left"] .fsb-label{right:auto;left:calc(100% + 10px);transform:translateY(-50%) translateX(-8px)}
.fs6[style*="--fs6-side:left"] .fsb-item:hover .fsb-label,.fs6[style*="--fs6-side: left"] .fsb-item:hover .fsb-label{transform:translateY(-50%) translateX(0)}
.fs6[style*="--fs6-side:left"] .fsb-label::after,.fs6[style*="--fs6-side: left"] .fsb-label::after{right:auto;left:-5px;transform:translateY(-50%) rotate(180deg)}
.fs6[style*="--fs6-anchor:top"],.fs6[style*="--fs6-anchor: top"]{top:var(--fs6-offset,80px);bottom:auto;transform:none !important}
.fs6[style*="--fs6-anchor:bottom"],.fs6[style*="--fs6-anchor: bottom"]{top:auto;bottom:var(--fs6-offset,80px);transform:none !important}

/* FS-07 Size hierarchy — large call, medium WhatsApp, smaller social icons */
.fs7 .fsb-item{justify-content:flex-end}
.fs7 .fsb-call .fsb-btn{width:var(--fs7-call-size,56px);height:var(--fs7-call-size,56px);border-radius:50%;background:var(--fs7-call-bg,#16a34a);color:var(--fs7-call-color,#ffffff);box-shadow:0 4px 16px color-mix(in srgb,var(--fs7-call-bg,#16a34a) 40%,transparent)}
.fs7-wa .fsb-btn{width:var(--fs7-wa-size,46px);height:var(--fs7-wa-size,46px);border-radius:50%;background:var(--fs7-wa-bg,#25D366);color:var(--fs7-wa-color,#ffffff);box-shadow:0 3px 12px color-mix(in srgb,var(--fs7-wa-bg,#25D366) 35%,transparent)}
.fs7-ig .fsb-btn,.fs7-fb .fsb-btn,.fs7-yt .fsb-btn,.fs7-li .fsb-btn,.fs7-tw .fsb-btn{width:var(--fs7-social-size,36px);height:var(--fs7-social-size,36px);border-radius:50%;background:var(--fs7-social-bg,#ffffff);box-shadow:0 1px 6px rgba(0,0,0,.1)}
.fs7-ig .fsb-btn{color:var(--fs7-ig-color,#e1306c)}
.fs7-fb .fsb-btn{color:var(--fs7-fb-color,#1877f2)}
.fs7-yt .fsb-btn{color:var(--fs7-yt-color,#ff0000)}
.fs7-li .fsb-btn{color:var(--fs7-li-color,#0077b5)}
.fs7-tw .fsb-btn{color:var(--fs7-tw-color,#000000)}
.fs7 .fsb-divider{background:var(--fs7-divider-color,#e2e8f0)}

.fs7[style*="--fs7-side:left"],.fs7[style*="--fs7-side: left"]{right:auto;left:0;padding:10px 10px 10px 0}
.fs7[style*="--fs7-side:left"] .fsb-btn:hover,.fs7[style*="--fs7-side: left"] .fsb-btn:hover{transform:translateX(5px)}
.fs7[style*="--fs7-side:left"] .fsb-item,.fs7[style*="--fs7-side: left"] .fsb-item{justify-content:flex-start}
.fs7[style*="--fs7-side:left"] .fsb-divider,.fs7[style*="--fs7-side: left"] .fsb-divider{align-self:flex-start}
.fs7[style*="--fs7-side:left"] .fsb-label,.fs7[style*="--fs7-side: left"] .fsb-label{right:auto;left:calc(100% + 10px);transform:translateY(-50%) translateX(-8px)}
.fs7[style*="--fs7-side:left"] .fsb-item:hover .fsb-label,.fs7[style*="--fs7-side: left"] .fsb-item:hover .fsb-label{transform:translateY(-50%) translateX(0)}
.fs7[style*="--fs7-side:left"] .fsb-label::after,.fs7[style*="--fs7-side: left"] .fsb-label::after{right:auto;left:-5px;transform:translateY(-50%) rotate(180deg)}
.fs7[style*="--fs7-anchor:top"],.fs7[style*="--fs7-anchor: top"]{top:var(--fs7-offset,80px);bottom:auto;transform:none !important}
.fs7[style*="--fs7-anchor:bottom"],.fs7[style*="--fs7-anchor: bottom"]{top:auto;bottom:var(--fs7-offset,80px);transform:none !important}

/* FS-08 Neon-glow buttons on near-black background */
.fs8{background:var(--fs8-bar-bg,#0a0a0f);border-radius:var(--fs8-radius,1rem);padding:12px 10px}
.fs8 .fsb-btn{background:var(--fs8-bar-bg,#0a0a0f);width:46px;height:46px}
.fs8 .fsb-call .fsb-btn{width:46px;height:46px}
.fs8 .fsb-btn svg{width:20px;height:20px}
.fs8-call .fsb-btn{color:var(--fs8-call-color,#4ade80);border:1px solid color-mix(in srgb,var(--fs8-call-color,#4ade80) 25%,transparent);box-shadow:0 0 14px color-mix(in srgb,var(--fs8-call-color,#4ade80) 45%,transparent)}
.fs8-wa .fsb-btn{color:var(--fs8-wa-color,#4ade80);border:1px solid color-mix(in srgb,var(--fs8-wa-color,#4ade80) 20%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--fs8-wa-color,#4ade80) 30%,transparent)}
.fs8-ig .fsb-btn{color:var(--fs8-ig-color,#f9a8d4);border:1px solid color-mix(in srgb,var(--fs8-ig-color,#f9a8d4) 20%,transparent);box-shadow:0 0 10px color-mix(in srgb,#e1306c 35%,transparent)}
.fs8-fb .fsb-btn{color:var(--fs8-fb-color,#93c5fd);border:1px solid color-mix(in srgb,var(--fs8-fb-color,#93c5fd) 20%,transparent);box-shadow:0 0 10px color-mix(in srgb,#1877f2 35%,transparent)}
.fs8-yt .fsb-btn{color:var(--fs8-yt-color,#fca5a5);border:1px solid color-mix(in srgb,var(--fs8-yt-color,#fca5a5) 20%,transparent);box-shadow:0 0 10px color-mix(in srgb,#ff0000 30%,transparent)}
.fs8-li .fsb-btn{color:var(--fs8-li-color,#93c5fd);border:1px solid color-mix(in srgb,var(--fs8-li-color,#93c5fd) 20%,transparent);box-shadow:0 0 10px color-mix(in srgb,#0077b5 35%,transparent)}
.fs8-tw .fsb-btn{color:var(--fs8-tw-color,#e2e8f0);border:1px solid color-mix(in srgb,var(--fs8-tw-color,#e2e8f0) 20%,transparent);box-shadow:0 0 10px color-mix(in srgb,#e2e8f0 30%,transparent)}
.fs8 .fsb-divider{background:var(--fs8-divider-color,rgba(255,255,255,.08))}

.fs8[style*="--fs8-side:left"],.fs8[style*="--fs8-side: left"]{right:auto;left:0;padding:10px 10px 10px 0}
.fs8[style*="--fs8-side:left"] .fsb-btn:hover,.fs8[style*="--fs8-side: left"] .fsb-btn:hover{transform:translateX(5px)}
.fs8[style*="--fs8-side:left"] .fsb-item,.fs8[style*="--fs8-side: left"] .fsb-item{justify-content:flex-start}
.fs8[style*="--fs8-side:left"] .fsb-divider,.fs8[style*="--fs8-side: left"] .fsb-divider{align-self:flex-start}
.fs8[style*="--fs8-side:left"] .fsb-label,.fs8[style*="--fs8-side: left"] .fsb-label{right:auto;left:calc(100% + 10px);transform:translateY(-50%) translateX(-8px)}
.fs8[style*="--fs8-side:left"] .fsb-item:hover .fsb-label,.fs8[style*="--fs8-side: left"] .fsb-item:hover .fsb-label{transform:translateY(-50%) translateX(0)}
.fs8[style*="--fs8-side:left"] .fsb-label::after,.fs8[style*="--fs8-side: left"] .fsb-label::after{right:auto;left:-5px;transform:translateY(-50%) rotate(180deg)}
.fs8[style*="--fs8-anchor:top"],.fs8[style*="--fs8-anchor: top"]{top:var(--fs8-offset,80px);bottom:auto;transform:none !important}
.fs8[style*="--fs8-anchor:bottom"],.fs8[style*="--fs8-anchor: bottom"]{top:auto;bottom:var(--fs8-offset,80px);transform:none !important}


/* ──────────────────────────────────────────────────────────────
   §15 Back to top buttons
────────────────────────────────────────────────────────────── */
/* BT-01 Classic round */
.bt01{
  width:52px;height:52px;border-radius:50%;
  background:var(--primary-color,#6366f1);color:#fff;
  border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 18px rgba(99,102,241,.4);transition:transform .2s,box-shadow .2s
}
.bt01:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(99,102,241,.55)}

/* BT-02 Pill + label */
.bt02{
  height:46px;padding:0 1.4rem;border-radius:999px;
  background:#0f172a;color:#fff;border:none;cursor:pointer;
  display:flex;align-items:center;gap:.5rem;
  font-size:var(--fs-xs,.78rem);font-weight:800;letter-spacing:.06em;
  box-shadow:0 4px 16px rgba(15,23,42,.25);transition:transform .2s,background .2s
}
.bt02:hover{background:#1e293b;transform:translateY(-3px)}

/* BT-03 Progress ring */
.bt03-wrap{position:relative;width:56px;height:56px;cursor:pointer}
.bt03-ring{position:absolute;inset:0;transform:rotate(-90deg)}
.bt03-ring .track{fill:none;stroke:#e2e8f0;stroke-width:3}
.bt03-ring .prog{fill:none;stroke:var(--primary-color,#6366f1);stroke-width:3;stroke-linecap:round;stroke-dasharray:138.23;stroke-dashoffset:55}
.bt03-inner{
  position:absolute;inset:7px;border-radius:50%;
  background:var(--card-bg,#fff);border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  color:var(--text-strong,#0f172a);box-shadow:0 2px 10px rgba(0,0,0,.09);transition:background .2s
}
.bt03-wrap:hover .bt03-inner{background:var(--surface-color,#f8fafc)}

/* BT-04 Frosted glass */
.bt04-wrap{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#a78bfa);display:flex;align-items:center;justify-content:center}
.bt04{
  width:48px;height:48px;border-radius:50%;
  background:rgba(255,255,255,.18);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:1.5px solid rgba(255,255,255,.42);color:#fff;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 18px rgba(0,0,0,.15);transition:background .2s,transform .2s
}
.bt04:hover{background:rgba(255,255,255,.3);transform:translateY(-3px)}

/* BT-05 Neon pulse */
.bt05{
  width:52px;height:52px;border-radius:50%;background:#0a0a0f;
  border:1.5px solid rgba(99,102,241,.5);color:#818cf8;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  animation:bttPulse 2.4s ease-out infinite;transition:border-color .2s,color .2s
}
.bt05:hover{border-color:rgba(99,102,241,.9);color:#c7d2fe}

/* Shared fixed bottom-right placement + scroll-triggered visibility,
   applied alongside whichever bt0N variant class is rendered.
   initBackToTop() toggles .is-vis (simple mode) or .visible (ring/advanced
   mode) — both are handled here so any variant works without extra JS. */
.v-btt-pos{position:fixed;bottom:1.75rem;right:1.75rem;z-index:900;opacity:0;transform:translateY(8px);transition:opacity .3s,transform .3s;pointer-events:none}
.v-btt-pos.is-vis,.v-btt-pos.visible{opacity:1;transform:translateY(0);pointer-events:auto}
@media(max-width:600px){.v-btt-pos{bottom:1.1rem;right:1.1rem}}
/* Clear the fixed .v-tabbar app bottom-nav bar (input.css) — same
   pointer:coarse condition it uses, so a shrunk desktop window with a
   mouse (which never shows .v-tabbar) doesn't get pushed up for nothing.
   Without this the back-to-top button sat on top of the tab bar. */
@media(max-width:991px) and (pointer:coarse){.v-btt-pos{bottom:calc(6.2rem + env(safe-area-inset-bottom,0px))}}

/* ──────────────────────────────────────────────────────────────
   §16 Keyframes
────────────────────────────────────────────────────────────── */
@keyframes fsbPulse{
  0%{box-shadow:0 0 0 0 rgba(22,163,74,.5),0 2px 10px rgba(0,0,0,.15)}
  70%{box-shadow:0 0 0 10px rgba(22,163,74,0),0 2px 10px rgba(0,0,0,.15)}
  100%{box-shadow:0 0 0 0 rgba(22,163,74,0),0 2px 10px rgba(0,0,0,.15)}
}
.fsb-call .fsb-btn{animation:fsbPulse 2.2s ease-out infinite}
.fsb-call .fsb-btn:hover{animation:none}

@keyframes bttPulse{
  0%{box-shadow:0 0 0 0 rgba(99,102,241,.6)}
  70%{box-shadow:0 0 0 12px rgba(99,102,241,0)}
  100%{box-shadow:0 0 0 0 rgba(99,102,241,0)}
}

/* ──────────────────────────────────────────────────────────────
   §17 Responsive — 320px and up
────────────────────────────────────────────────────────────── */

/* 320px–479px: smallest phones */
@media(max-width:480px){
  /* Scroller section padding — now governed by the global/per-section
     buffer system (see .sc-section's base rule above); no separate
     smallest-phone tier needed. */

  /* CS-01: shrink card slightly */
  .h-leaflet-card{flex:0 0 240px}

  /* CS-02: shrink poster */
  .cs2-card{flex:0 0 200px}
  .cs2-img{height:240px}

  /* CS-03: narrow landscape card */
  .cs3-card{flex:0 0 290px}
  .cs3-img{width:85px}

  /* CS-06: shorter on small phones */
  .cs6-card{flex:0 0 250px;height:400px}
  .cs6-ghost{font-size:5.5rem}

  /* CS-07: stack vertically on small screens */
  .cs7-card{flex:0 0 280px;flex-direction:column;height:auto}
  .cs7-img{width:100%;height:160px}
  .cs7-body{padding:1rem 1.1rem 1.2rem}

  /* CS-08: smaller polaroid */
  .cs8-card{flex:0 0 200px;padding:10px 10px 38px}

  /* CS-09: flip card narrower */
  .cs9-wrap{flex:0 0 240px;height:360px}

  /* CS-10: depth card narrower */
  .cs10-wrap{flex:0 0 260px}
  .cs10-img-wrap{height:170px}

  /* FSB: compact on very small screens */
  .fsb{gap:4px;padding:7px 0 7px 7px}
  .fsb-btn{width:36px;height:36px}
  .fsb-btn svg{width:16px;height:16px}
  .fsb-call .fsb-btn{width:42px;height:42px}
  .fsb-call .fsb-btn svg{width:18px;height:18px}
  .fsb-label{display:none}

  /* BTT: BT-02 pill smaller text */
  .bt02{height:40px;padding:0 1rem;font-size:var(--fs-xs,.72rem)}
}

/* 480px–639px */
@media(min-width:480px){
  .h-leaflet-card{flex:0 0 260px}
  .cs2-card{flex:0 0 230px}
  .cs3-card{flex:0 0 320px}
  .cs7-card{flex:0 0 360px}
  .cs9-wrap{flex:0 0 260px}
  .cs10-wrap{flex:0 0 280px}
}

/* 640px–1023px */
@media(min-width:640px){
  .h-leaflet-card{flex:0 0 280px}
  .cs2-card{flex:0 0 240px}
  .cs3-card{flex:0 0 350px}
  .cs5-card{flex:0 0 240px}
  .cs7-card{flex:0 0 420px;flex-direction:row;height:230px}
  .cs7-img{width:48%;height:100%}
  .cs9-wrap{flex:0 0 270px}
  .cs10-wrap{flex:0 0 300px}
  /* FSB restore normal on 640+ */
  .fsb-btn{width:44px;height:44px}
  .fsb-btn svg{width:20px;height:20px}
  .fsb-call .fsb-btn{width:50px;height:50px}
  .fsb-call .fsb-btn svg{width:22px;height:22px}
}

/* 1024px+ */
@media(min-width:1024px){
  .h-leaflet-card{flex:0 0 calc(25% - 15px)}
  .cs2-card{flex:0 0 270px}
  .cs5-card{flex:0 0 250px}
  .cs7-card{flex:0 0 460px}
}

/* Cards-per-view — universal, applies to any direct child of .sc-track (all 10 card
   types), placed AFTER every fixed-width breakpoint override above so it wins on
   source order (same specificity as .hNN-card/.csNN-card — one class each). Each
   section sets its own --cs-cards-* overrides inline via style-config, scoped to
   that section's subtree only (siblings/other sections unaffected by inheritance). */
.sc-track>*{flex:0 0 calc((100% - (var(--cs-cards-0,1) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-0,1))}
@media(min-width:480px){.sc-track>*{flex-basis:calc((100% - (var(--cs-cards-1,var(--cs-cards-0,1)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-1,var(--cs-cards-0,1)))}}
@media(min-width:640px){.sc-track>*{flex-basis:calc((100% - (var(--cs-cards-2,var(--cs-cards-1,2)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-2,var(--cs-cards-1,2)))}}
@media(min-width:768px){.sc-track>*{flex-basis:calc((100% - (var(--cs-cards-3,var(--cs-cards-2,3)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-3,var(--cs-cards-2,3)))}}
@media(min-width:1024px){.sc-track>*{flex-basis:calc((100% - (var(--cs-cards-4,var(--cs-cards-3,4)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-4,var(--cs-cards-3,4)))}}
@media(min-width:1280px){.sc-track>*{flex-basis:calc((100% - (var(--cs-cards-5,var(--cs-cards-4,5)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-5,var(--cs-cards-4,5)))}}

/* The dp-store Product List component is sometimes embedded as the sole child
   of a section's own .sc-track scroller (e.g. pl-02 "Featured Titles"). GRID
   mode (.v-plist) must fill that track — not get sized down as if it were one
   scroller card — and the track itself must stop behaving like a horizontal-
   scroll carousel; a responsive grid wraps rows down the page like any normal
   block. CAROUSEL mode is now a self-contained Swiper.js instance (.swiper —
   see productListSwiperHTML in dpstore/store.go) that does its own scrolling,
   sizing and snapping entirely internally; .sc-track must get out of its way
   the same way it does for grid, and once display:block, a block-level .swiper
   child fills 100% width on its own — no explicit width override needed like
   .v-plist gets. (Nesting the carousel's cards one level inside a hand-rolled
   scroll-snap wrapper was tried first — sizing, gap and snap all fought the
   extra depth; Swiper is the framework's already-proven answer to exactly
   this problem, used by every other slider template.) */
.sc-track>.v-plist{flex:1 1 100%;width:100%}
.sc-track:has(>.v-plist),.sc-track:has(>.swiper){display:block;overflow-x:visible;scroll-snap-type:none;padding:0}

/* Prev/Next nav buttons (pl-02's own .sc-inline-nav, a sibling of .sc-track-wrap
   under the shared .sc-inner ancestor) are redundant once the embedded slot is
   a dp-store component: GRID has nothing to scroll to, and CAROUSEL renders its
   own prev/next buttons as part of the .swiper markup itself. Hidden whenever
   either is present so there's never two sets of nav controls for one section. */
.sc-inner:has(.v-plist) .sc-inline-nav,.sc-inner:has(.swiper) .sc-inline-nav{display:none}

/* ──────────────────────────────────────────────────────────────
   §18 Common preview utilities (section-label, gap-section,
       parallax, scroll-hint, wave)
────────────────────────────────────────────────────────────── */
/* Pill label used in blockquote, columns, cta, googlemap */
/* Section vertical gap */

/* CSS parallax — background-attachment:fixed (iOS ignores, desktop only) */
.parallax{background-attachment:fixed;background-size:cover;background-position:center;background-repeat:no-repeat}

/* Vertical "SCROLL ——" hint */
.scroll-hint{
  position:absolute;right:1.5rem;top:50%;transform:translateY(-50%) rotate(90deg);
  font-size:var(--fs-xs,.58rem);font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(255,255,255,.35);pointer-events:none;
}

/* Wave shape at bottom of section */
.wave-bottom{position:absolute;bottom:-1px;left:0;right:0;overflow:hidden;line-height:0}

/* ──────────────────────────────────────────────────────────────
   §19 CTA buttons (btn-white / pink / blue / grad / ghost / primary)
────────────────────────────────────────────────────────────── */
.btn-white{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 2rem;background:var(--bg-color,#fff);color:#111;border-radius:99px;font-size:var(--fs-sm,.85rem);font-weight:700;text-decoration:none;white-space:nowrap;transition:background .2s,box-shadow .2s}
.btn-white:hover{background:#f3f4f6}
.btn-pink{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 2rem;background:linear-gradient(135deg,#f43f5e,#ec4899);color:#fff;border-radius:99px;font-size:var(--fs-sm,.85rem);font-weight:700;text-decoration:none;white-space:nowrap;transition:opacity .2s}
.btn-pink:hover{opacity:.88}
.btn-blue{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 2rem;background:#2563eb;color:#fff;border-radius:99px;font-size:var(--fs-sm,.85rem);font-weight:700;text-decoration:none;white-space:nowrap;transition:background .2s}
.btn-blue:hover{background:#1d4ed8}
.btn-grad{display:inline-flex;align-items:center;gap:.5rem;padding:.8rem 2.5rem;background:linear-gradient(135deg,#a855f7,#ec4899);color:#fff;border-radius:99px;font-size:var(--fs-sm,.85rem);font-weight:700;text-decoration:none;white-space:nowrap;transition:opacity .2s}
.btn-grad:hover{opacity:.88}
.btn-ghost{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 2rem;background:rgba(255,255,255,.15);color:#fff;border-radius:99px;font-size:var(--fs-sm,.85rem);font-weight:700;text-decoration:none;white-space:nowrap;border:1.5px solid rgba(255,255,255,.35);backdrop-filter:blur(8px);transition:background .2s}
.btn-ghost:hover{background:rgba(255,255,255,.25)}
.btn-primary{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 2rem;background:var(--primary-color);color:var(--text-strong);border-radius:99px;font-size:var(--fs-sm,.85rem);font-weight:700;text-decoration:none;white-space:nowrap;transition:background .2s}
.btn-primary:hover{background:var(--primary-dark);color:#fff}

/* ──────────────────────────────────────────────────────────────
   §20 Column layout utilities (COL-01 – COL-10)
────────────────────────────────────────────────────────────── */
.col-wrap{padding:0 1.5rem;max-width:1280px;margin:0 auto}
/* Thin hairline vertical divider */
.vdivider{width:1px;background:var(--card-border);flex-shrink:0;align-self:stretch}
/* Sticky sidebar column */
.sticky-col{position:sticky;top:2rem;align-self:start}
/* Circular icon container */
.icon-circle{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
/* Eyebrow / super-label */
.sup-label{font-size:var(--fs-xs,.68rem);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);display:block;margin-bottom:.5rem}
/* Large stat number */
.stat-num{font-size:clamp(2.2rem,5vw,3.5rem);font-weight:900;line-height:1}
/* Accent rule above stat */
.stat-rule{width:40px;height:3px;background:var(--primary-color);margin-bottom:1.25rem;border-radius:2px}
/* Pull quote left border */
.pull-quote{border-left:4px solid var(--primary-color);padding:.75rem 1.25rem;font-size:1.05rem;font-weight:700;font-style:italic;color:var(--text-strong);line-height:1.5}
/* Negative margin offset for magazine layouts */
.offset-up{margin-top:-3.5rem}
@media(max-width:768px){
  .col-2,.col-3,.col-4,.col-asym,.col-sticky{flex-direction:column !important}
  .offset-up{margin-top:0}
  .vdivider{width:100%;height:1px}
}

/* ──────────────────────────────────────────────────────────────
   §21 Blockquote variants (BQ-01 – BQ-10)
────────────────────────────────────────────────────────────── */
/* BQ-01 Classic Centered */
.bq01{text-align:center;padding:3rem 2rem}
.bq01-mark{font-size:5rem;line-height:.8;color:var(--primary-color);font-family:Georgia,serif;font-weight:700;margin-bottom:.5rem}
.bq01-text{font-size:var(--fs-body,1.15rem);font-style:italic;color:var(--text-strong);line-height:1.75;max-width:600px;margin:0 auto 1.5rem}
.bq01-line{width:40px;height:2px;background:var(--primary-color);margin:.75rem auto}
.bq01-avatar{width:52px;height:52px;border-radius:50%;object-fit:cover;margin:0 auto .6rem;display:block;border:3px solid var(--primary-color)}
.bq01-name{font-weight:700;font-size:var(--fs-body,.9rem);color:var(--text-strong)}
.bq01-role{font-size:var(--fs-sm,.78rem);color:var(--text-muted)}
/* BQ-02 Left Border */
.bq02{border-left:4px solid var(--primary-color);padding:1.25rem 1.75rem;background:var(--card-bg);border-radius:0 var(--card-radius) var(--card-radius) 0;box-shadow:var(--card-shadow)}
.bq02-text{font-size:var(--fs-body,1.05rem);font-style:italic;color:var(--text-strong);line-height:1.7;margin-bottom:1rem}
.bq02-footer{display:flex;align-items:center;gap:.75rem}
.bq02-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0}
.bq02-name{font-size:var(--fs-sm,.85rem);font-weight:700;color:var(--text-strong)}
.bq02-role{font-size:var(--fs-xs,.75rem);color:var(--text-muted)}
/* BQ-03 Card + Big Quote Mark */
.bq03{background:var(--card-bg);border-radius:var(--card-radius);box-shadow:var(--card-shadow);padding:2rem 1.75rem 1.5rem;position:relative;transition:box-shadow .2s}
.bq03:hover{box-shadow:var(--card-shadow-hover)}
.bq03-mark{font-size:4rem;line-height:.7;color:var(--primary-color);font-family:Georgia,serif;font-weight:700;margin-bottom:.5rem}
.bq03-text{font-size:var(--fs-body,.95rem);color:var(--text-color);line-height:1.7;margin-bottom:1.25rem}
.bq03-footer{display:flex;align-items:center;gap:.75rem;border-top:1px solid var(--card-border);padding-top:1rem}
.bq03-avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;flex-shrink:0}
.bq03-name{font-size:var(--fs-sm,.85rem);font-weight:700;color:var(--text-strong)}
.bq03-role{font-size:var(--fs-xs,.74rem);color:var(--text-muted)}
/* BQ-04 Dark Inverted */
.bq04{background:var(--text-strong);border-radius:var(--card-radius);padding:2.5rem 2rem;text-align:center}
.bq04-mark{font-size:4rem;line-height:.8;color:var(--primary-color);font-family:Georgia,serif;font-weight:700}
.bq04-text{font-size:var(--fs-body,1.05rem);font-style:italic;color:#e5e7eb;line-height:1.75;margin:.75rem 0 1.5rem}
.bq04-line{width:36px;height:2px;background:var(--primary-color);margin:.75rem auto}
.bq04-name{font-weight:700;font-size:var(--fs-body,.88rem);color:#fff}
.bq04-role{font-size:var(--fs-xs,.76rem);color:#9ca3af;margin-top:.2rem}
/* BQ-05 Side Avatar */
.bq05{display:flex;gap:1.5rem;align-items:flex-start;background:var(--card-bg);border-radius:var(--card-radius);box-shadow:var(--card-shadow);padding:1.75rem}
.bq05-avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;flex-shrink:0;border:3px solid var(--primary-color)}
.bq05-divider{width:1px;background:var(--card-border);flex-shrink:0;align-self:stretch}
.bq05-body{flex:1}
.bq05-mark{font-size:2.5rem;line-height:.6;color:var(--primary-color);font-family:Georgia,serif;font-weight:700}
.bq05-text{font-size:var(--fs-body,.95rem);font-style:italic;color:var(--text-strong);line-height:1.7;margin:.4rem 0 1rem}
.bq05-name{font-size:var(--fs-sm,.85rem);font-weight:700;color:var(--text-strong)}
.bq05-role{font-size:var(--fs-xs,.76rem);color:var(--text-muted)}
/* BQ-06 Magazine Pull Quote */
.bq06{text-align:center;padding:2.5rem 1rem;border-top:2px solid var(--text-strong);border-bottom:2px solid var(--text-strong)}
.bq06-text{font-size:clamp(1.4rem,3vw,2rem);font-weight:300;font-style:italic;color:var(--text-strong);line-height:1.4;letter-spacing:-.01em;margin-bottom:1.25rem}
.bq06-name{font-size:var(--fs-sm,.8rem);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}
.bq06-accent{display:inline-block;width:28px;height:2px;background:var(--primary-color);vertical-align:middle;margin-right:.5rem}
/* BQ-07 Full-Width with BG Image */
.bq07{position:relative;border-radius:var(--card-radius);overflow:hidden;min-height:300px;display:flex;align-items:center;justify-content:center}
.bq07-bg{position:absolute;inset:0}
.bq07-bg img{width:100%;height:100%;object-fit:cover;display:block}
.bq07-overlay{position:absolute;inset:0;background:rgba(17,24,39,.72)}
.bq07-content{position:relative;z-index:1;text-align:center;padding:3rem 2rem;max-width:680px}
.bq07-mark{font-size:5rem;line-height:.7;color:var(--primary-color);font-family:Georgia,serif;font-weight:700}
.bq07-text{font-size:var(--fs-body,1.15rem);font-style:italic;color:#fff;line-height:1.75;margin:.5rem 0 1.5rem}
.bq07-line{width:40px;height:2px;background:var(--primary-color);margin:.75rem auto}
.bq07-name{font-size:var(--fs-body,.88rem);font-weight:700;color:#fff}
.bq07-role{font-size:var(--fs-xs,.76rem);color:rgba(255,255,255,.65)}
/* BQ-08 Social / Tweet Card */
.bq08{background:var(--card-bg);border-radius:var(--card-radius);box-shadow:var(--card-shadow);padding:1.5rem;transition:box-shadow .2s}
.bq08:hover{box-shadow:var(--card-shadow-hover)}
.bq08-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}
.bq08-brand{display:flex;align-items:center;gap:.6rem}
.bq08-avatar{width:44px;height:44px;border-radius:50%;object-fit:cover}
.bq08-name{font-size:var(--fs-sm,.85rem);font-weight:700;color:var(--text-strong);display:flex;align-items:center;gap:.3rem}
.bq08-handle{font-size:var(--fs-xs,.76rem);color:var(--text-muted)}
.bq08-icon{color:#1d9bf0;flex-shrink:0}
.bq08-text{font-size:var(--fs-body,.95rem);color:var(--text-strong);line-height:1.65;margin-bottom:1rem}
.bq08-meta{font-size:var(--fs-xs,.74rem);color:var(--text-muted);padding-top:.75rem;border-top:1px solid var(--card-border)}
.bq08-check{display:inline-block;width:14px;height:14px;background:#1d9bf0;border-radius:50%;color:#fff;font-size:var(--fs-xs,.55rem);line-height:14px;text-align:center;font-weight:900}
/* BQ-09 Alternating Image & Quote — full-bleed split rows, sides alternate
   per item via nth-child(even). --bq09-cols-* controls the OUTER grid
   (default 1 = stacked full-width rows matching the reference image); each
   item's own image+panel split stays a horizontal flex row regardless of
   column count, just narrower at higher column counts. */
.bq09-grid{display:grid;grid-template-columns:repeat(var(--bq09-cols-mobile,1),1fr);gap:var(--bq09-gap,0rem)}
.bq09-item{display:flex;align-items:stretch;min-height:var(--bq09-min-h,420px);border:var(--bq09-border-w,0px) solid var(--bq09-border-c,#000000);border-radius:var(--bq09-radius,0rem);box-shadow:var(--bq09-shadow,none);overflow:hidden}
.bq09-item:nth-child(even){flex-direction:row-reverse}
.bq09-img-side{flex:1 1 50%;min-width:0}
.bq09-img-side img{width:100%;height:100%;object-fit:cover;display:block}
.bq09-panel{flex:1 1 50%;min-width:0;display:flex;flex-direction:column;justify-content:center;padding:clamp(1.75rem,4vw,3.5rem)}
.bq09-mark{font-family:Georgia,serif;font-size:3rem;line-height:1;font-weight:700;margin-bottom:.5rem}
.bq09-quote{font-size:clamp(1.05rem,1.8vw,1.4rem);line-height:1.6;margin-bottom:1.25rem}
.bq09-author{font-size:var(--bq09-fs-sm,var(--fs-sm));font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.bq09-author::before{content:'— '}
@media(min-width:640px){.bq09-grid{grid-template-columns:repeat(var(--bq09-cols-tablet,1),1fr)}}
@media(min-width:1024px){.bq09-grid{grid-template-columns:repeat(var(--bq09-cols-desktop,1),1fr)}}
@media(min-width:1280px){.bq09-grid{grid-template-columns:repeat(var(--bq09-cols-wide,1),1fr)}}
@media(max-width:640px){.bq09-item,.bq09-item:nth-child(even){flex-direction:column}.bq09-img-side{min-height:220px}}
/* BQ-10 Speech Bubble */
.bq10-wrap{display:flex;flex-direction:column;align-items:center}
.bq10-bubble{background:var(--card-bg);border-radius:var(--card-radius);box-shadow:var(--card-shadow);padding:1.75rem 2rem;position:relative;text-align:center;max-width:380px}
.bq10-bubble::after{content:'';position:absolute;bottom:-12px;left:50%;transform:translateX(-50%);border:12px solid transparent;border-top-color:var(--card-bg);border-bottom:0;filter:drop-shadow(0 3px 2px rgba(0,0,0,.07))}
.bq10-mark{font-size:2.5rem;line-height:.7;color:var(--primary-color);font-family:Georgia,serif;font-weight:700;margin-bottom:.4rem}
.bq10-text{font-size:var(--fs-body,.93rem);font-style:italic;color:var(--text-strong);line-height:1.65}
.bq10-tail{height:24px}
.bq10-avatar{width:60px;height:60px;border-radius:50%;object-fit:cover;border:3px solid var(--primary-color);margin-top:.25rem}
.bq10-name{font-size:var(--fs-sm,.84rem);font-weight:700;color:var(--text-strong);margin-top:.5rem}
.bq10-role{font-size:var(--fs-xs,.74rem);color:var(--text-muted)}

/* ──────────────────────────────────────────────────────────────
   §23 Lists (LS-01 – LS-12) + TOC + section wrappers
────────────────────────────────────────────────────────────── */
/* TOC nav */
.toc strong{color:#fcd703;font-size:var(--fs-sm,.8rem);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}
.toc a{color:var(--text-muted,#94a3b8);font-size:var(--fs-xs,.78rem);text-decoration:none;white-space:nowrap;padding:.25rem .6rem;border-radius:4px;transition:background .15s,color .15s}
.toc a:hover{background:#334155;color:#f1f5f9}
/* Section wrapper */
.sec-label{background:#1e293b;color:#fcd703;font-size:var(--fs-xs,.7rem);font-weight:800;letter-spacing:.14em;text-transform:uppercase;padding:.45rem 1.2rem;display:inline-block}
.sec-inner{padding:5rem clamp(1.5rem,5vw,3rem);max-width:1200px;margin:0 auto}
/* Layout helpers */
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:center}
.three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4rem;align-items:start}
/* Typography helpers */
.sec-p{font-size:var(--fs-body,.95rem);color:var(--text-muted,#64748b);line-height:1.8;margin-bottom:1.8rem}
/* List buttons */
.btn-pill{display:inline-block;padding:.6rem 1.8rem;border-radius:50px;background:#fcd703;color:var(--text-strong,#0f172a);font-size:var(--fs-sm,.82rem);font-weight:800;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;align-self:flex-start}
.btn-outline{display:inline-block;padding:.6rem 1.8rem;border:2px solid #0f172a;border-radius:3px;font-size:var(--fs-sm,.82rem);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-strong,#0f172a);text-decoration:none;align-self:flex-start}
.img-cover{width:100%;height:100%;object-fit:cover}
/* LS-01 Checkmark list */
.ls01-list{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:.9rem 2.5rem}
.ls01-list li{display:flex;align-items:flex-start;gap:.75rem;font-size:var(--fs-body,.93rem);color:var(--text-color);line-height:1.6}
.ls01-tick{flex-shrink:0;width:20px;height:20px;border-radius:50%;background:#fcd703;display:flex;align-items:center;justify-content:center;margin-top:.1rem}
/* LS-02 Numbered list */
.ls02-list{list-style:none;display:flex;flex-direction:column;gap:0}
.ls02-item{display:flex;align-items:flex-start;gap:1.6rem;padding:1.6rem 0;border-bottom:1px solid #f1f5f9}
.ls02-item:last-child{border-bottom:none}
.ls02-num{font-size:2.4rem;font-weight:900;color:#f1f5f9;line-height:1;flex-shrink:0;width:3rem;text-align:right}
.ls02-body h4{font-size:1rem;font-weight:800;color:var(--text-strong,#0f172a);margin-bottom:.35rem}
.ls02-body p{font-size:var(--fs-sm,.88rem);color:var(--text-color,#374151);line-height:1.7}
/* LS-03 Icon list */
.ls03-list{list-style:none;display:flex;flex-direction:column;gap:1.4rem}
.ls03-item{display:flex;align-items:flex-start;gap:1.1rem}
.ls03-icon{flex-shrink:0;width:44px;height:44px;border-radius:8px;display:flex;align-items:center;justify-content:center}
.ls03-icon.y{background:#fefce8}
.ls03-icon.b{background:#ecfeff}
.ls03-icon.o{background:#fff7ed}
.ls03-icon.g{background:#f0fdf4}
.ls03-body h4{font-size:var(--fs-body,.98rem);font-weight:800;color:var(--text-strong,#0f172a);margin-bottom:.3rem}
.ls03-body p{font-size:var(--fs-sm,.87rem);color:var(--text-color,#374151);line-height:1.65}
/* LS-04 Bordered card list */
.ls04-list{list-style:none;display:flex;flex-direction:column;gap:.6rem}
.ls04-item{display:flex;align-items:center;gap:1rem;padding:1.1rem 1.4rem;border:1px solid var(--card-border,#e2e8f0);background:var(--card-bg,#fff);transition:box-shadow .2s,border-color .2s}
.ls04-item:hover{border-color:#fcd703;box-shadow:0 4px 20px rgba(0,0,0,.06)}
.ls04-dot{width:10px;height:10px;border-radius:50%;background:#fcd703;flex-shrink:0}
.ls04-item span{font-size:var(--fs-body,.93rem);color:var(--text-color);font-weight:500}
.ls04-tag{margin-left:auto;font-size:var(--fs-xs,.7rem);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted,#94a3b8);background:var(--surface-color,#f8fafc);padding:.2rem .6rem;border-radius:3px}
/* LS-05 Timeline */
.ls05-list{list-style:none;position:relative;padding-left:2rem}
.ls05-list::before{content:'';position:absolute;left:.4rem;top:.5rem;bottom:.5rem;width:2px;background:#e2e8f0}
.ls05-item{position:relative;padding-left:1.8rem;padding-bottom:2rem}
.ls05-item:last-child{padding-bottom:0}
.ls05-dot{position:absolute;left:-1.6rem;top:.2rem;width:16px;height:16px;border-radius:50%;background:#fcd703;border:3px solid #fff;box-shadow:0 0 0 2px #fcd703}
.ls05-item h4{font-size:var(--fs-body,.98rem);font-weight:800;color:var(--text-strong,#0f172a);margin-bottom:.3rem}
.ls05-item p{font-size:var(--fs-sm,.87rem);color:var(--text-color,#374151);line-height:1.65}
.ls05-year{font-size:var(--fs-xs,.72rem);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted,#94a3b8);margin-bottom:.4rem}
/* LS-06 Arrow list */
.ls06-list{list-style:none;display:flex;flex-direction:column;gap:.4rem}
.ls06-item{display:flex;align-items:center;gap:.8rem;padding:.6rem 0;border-bottom:1px solid #f8fafc}
.ls06-item:last-child{border-bottom:none}
.ls06-arrow{flex-shrink:0;width:20px;height:20px;border-radius:50%;background:transparent;display:flex;align-items:center;justify-content:center}
.ls06-item span{font-size:var(--fs-body,.93rem);color:var(--text-color)}
/* LS-07 3-col checklist */
.ls07-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem 2.5rem}
.ls07-item{display:flex;align-items:center;gap:.7rem;font-size:var(--fs-body,.9rem);color:var(--text-color);padding:.5rem 0}
.ls07-check{flex-shrink:0;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center}
/* LS-08 Progress bar list */
.ls08-list{list-style:none;display:flex;flex-direction:column;gap:1.4rem}
.ls08-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.45rem}
.ls08-label{font-size:var(--fs-body,.9rem);font-weight:700;color:var(--text-strong,#0f172a)}
.ls08-pct{font-size:var(--fs-sm,.85rem);font-weight:800;color:#fcd703}
.ls08-track{height:6px;background:var(--surface-color,#f1f5f9);border-radius:50px;overflow:hidden}
.ls08-fill{height:100%;border-radius:50px;background:linear-gradient(90deg,#fcd703,#f97316);transition:width 1s ease}
/* LS-09 Image + list — uses .ls03-item */
.ls09-img{border-radius:4px;overflow:hidden;height:480px}
.ls09-img img{width:100%;height:100%;object-fit:cover}
/* LS-10 Badge list */
.ls10-list{list-style:none;display:flex;flex-direction:column;gap:.6rem}
.ls10-item{display:flex;align-items:center;gap:1rem}
.ls10-badge{flex-shrink:0;font-size:var(--fs-xs,.6rem) !important;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:.15rem .55rem;border-radius:50px;background:#fefce8;color:#92400e;white-space:nowrap;border:1px solid #fde68a}
.ls10-item span{font-size:var(--fs-body,.93rem);color:var(--text-color)}
/* LS-11 Accordion */
.ls11-item{border-bottom:1px solid #f1f5f9}
.ls11-btn{width:100%;display:flex;align-items:center;justify-content:space-between;padding:1.2rem 0;background:none;border:none;cursor:pointer;text-align:left;gap:1rem}
.ls11-btn-title{font-size:var(--fs-body,.98rem);font-weight:700;color:var(--text-strong,#0f172a)}
.ls11-btn-icon{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--surface-color,#f8fafc);border:1px solid var(--card-border,#e2e8f0);display:flex;align-items:center;justify-content:center;transition:background .2s,transform .25s}
.ls11-item.open .ls11-btn-icon{background:#fcd703;border-color:#fcd703;transform:rotate(45deg)}
.ls11-body{display:none;padding-bottom:1.2rem}
.ls11-item.open .ls11-body{display:block}
.ls11-body p{font-size:var(--fs-body,.9rem);color:var(--text-color,#374151);line-height:1.75}
/* LS-12 Two-tone split */
.ls12-wrap{display:grid;grid-template-columns:1fr 1fr;gap:0}
.ls12-col{padding:3.5rem}
.ls12-col:first-child{background:#0f172a;color:#f8fafc}
.ls12-col:last-child{background:#fefce8}
.ls12-col h3{font-size:1.2rem;font-weight:800;margin-bottom:1.5rem}
.ls12-col:first-child h3{color:#fcd703}
.ls12-col:last-child h3{color:var(--text-strong,#0f172a)}
.ls12-list{list-style:none;display:flex;flex-direction:column;gap:.9rem}
.ls12-item{display:flex;align-items:flex-start;gap:.8rem;font-size:var(--fs-body,.9rem);line-height:1.6}
.ls12-col:first-child .ls12-item{color:#cbd5e1}
.ls12-col:last-child .ls12-item{color:var(--text-color)}
.ls12-dot{flex-shrink:0;width:6px;height:6px;border-radius:50%;margin-top:.55rem}
.ls12-col:first-child .ls12-dot{background:#fcd703}
.ls12-col:last-child .ls12-dot{background:#92400e}

/* ──────────────────────────────────────────────────────────────
   §24 Responsive additions for §19–§23 (320px and up)
────────────────────────────────────────────────────────────── */
@media(max-width:768px){
  .two-col,.three-col{grid-template-columns:1fr;gap:2.5rem}
}
@media(max-width:768px){
  .ls12-wrap{grid-template-columns:1fr}
}
@media(max-width:640px){
  /* Global mobile side-gutter for content templates using
     var(--sec-buf-l,var(--gbuf-h,0)) lives in internal/tenant/models.go's
     CSSVars() (the --gbuf-h fallback there), NOT here — a :root rule in
     this file can never win against the per-org :root{...} block base.html
     renders after this stylesheet's own <link> tag; same selector
     specificity, later in source order always wins regardless of media
     query. See that fallback's comment for the full explanation. */
  .ls01-list{grid-template-columns:1fr}
  .ls07-grid{grid-template-columns:repeat(2,1fr)}
  .sec-inner{padding:3rem 1.5rem}
  .ls12-col{padding:2.5rem 1.5rem}
  /* CTA full-width on mobile */
  .btn-white,.btn-pink,.btn-blue,.btn-grad,.btn-ghost,.btn-primary{
    justify-content:center;width:100%;max-width:280px
  }
  /* Column col-wrap padding */
  .col-wrap{padding:0 1rem}
  .offset-up{margin-top:0}
  .toc{padding:1.25rem 1rem;gap:.75rem}
}
@media(max-width:640px){
  .ls07-grid{grid-template-columns:1fr}
}
@media(max-width:480px){
  .bq05{flex-direction:column}
  .bq05-avatar{width:56px;height:56px}
  .bq07-content{padding:2rem 1.25rem}
  .bq10-bubble{max-width:280px;padding:1.25rem 1.5rem}
  .stat-num{font-size:clamp(1.8rem,8vw,2.6rem)}
}

/* ──────────────────────────────────────────────────────────────
   §25 Tab Templates (TB-01 – TB-R2)
────────────────────────────────────────────────────────────── */
/* ── Shared tab image ── */

/* ── Tab panels: hide non-active ── */
[data-tab-panel] { display:none; }
[data-tab-panel].active { display:block; }

/* ── TB-01 / TB-03 · Dark pill tabs ── */
.tb-pill.active {
  background:var(--btn-p-bg,var(--text-strong));
  color:var(--btn-p-text,#fff);
  border-color:var(--btn-p-bg,var(--text-strong));
}

/* ── TB-03 · Gold pill tabs ── */
.tb-pill-gold.active {
  background:var(--btn-a-bg,var(--primary-color));
  color:var(--btn-a-text,var(--text-strong));
  border-color:var(--btn-a-bg,var(--primary-color));
}

/* ── TB-04 / TB-R1 · Underline tabs ── */
.tb-ul.active { color:var(--text-strong); border-bottom-color:var(--text-strong); }

/* ── TB-01 · Step items ── */

/* ── TB-08 · Vertical sidebar tabs ── */
.tb-vert svg { flex-shrink:0; }
.tb-vert.active { background:var(--primary-color); color:var(--text-strong); }

/* ── TB-X · Boxed icon tabs ── */
.tb-icon-btn svg { color:var(--text-muted); transition:color .2s; }
.tb-icon-btn:hover svg { color:var(--primary-dark); }
.tb-icon-btn.active {
  background:var(--primary-color);
  border-color:var(--primary-color);
  color:var(--text-strong);
  box-shadow:0 4px 12px rgba(252,215,3,.35);
}
.tb-icon-btn.active svg { color:var(--text-strong); }

/* ── TB-R1 · Floating stat badge ── */

/* ── TB-R1 · Learn More button ── */
.learn-btn .arrow {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:36px;
  height:36px;
  border-radius:50%;
  border:1.5px solid var(--text-strong);
  font-size:1.1rem;
  transition:background .2s, color .2s;
}
.learn-btn:hover .arrow { background:var(--text-strong); color:#fff; }

/* ── TB-R2 · Boxed border tabs ── */
.tb-box:first-child { border-radius:.3rem 0 0 .3rem; }
.tb-box.active { background:var(--text-strong); color:#fff; border-color:var(--text-strong); }

/* ── TB-R2 · Circular stamp badge ── */
.badge-stamp svg { width:100%; height:100%; }
@keyframes rotateBadge { to { transform:rotate(360deg); } }

@media (max-width:768px) {
  .stat-float { display:none; }
  .badge-stamp { width:80px; height:80px; bottom:-1rem; right:-1rem; }
  #tb08-btns { border-right:none; padding-right:0; border-bottom:1px solid #f1f5f9; padding-bottom:1rem; flex-direction:row; flex-wrap:wrap; }
}

/* --------------------------------------------------------------
   §27 Price Tables (PT-01 - PT-10)
   Cards, feature rows, perks, image cards, menu rows and table
   rows are all true add/remove loops — "featured" styling on
   PT-01/02/03/04/06/08 is applied structurally via :nth-child(2)
   (the middle card of the default 3, matching the source design)
   rather than a fixed per-slot class, so it keeps working no
   matter how many cards an admin adds or removes.
-------------------------------------------------------------- */
.pt-wrap { padding:var(--sec-buf-t,var(--gbuf-v,4rem)) var(--sec-buf-r,var(--gbuf-h,0)) var(--sec-buf-b,var(--gbuf-v,4rem)) var(--sec-buf-l,var(--gbuf-h,0)); max-width:1200px; margin:0 auto; }
.price-label { font-size:var(--fs-xs,.72rem); font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--text-muted); margin-bottom:.25rem; }
.price-big { font-size:2.6rem; font-weight:900; color:var(--text-strong); line-height:1; }
.price-cur { font-size:1.2rem; font-weight:800; vertical-align:super; }
.price-per { font-size:var(--fs-sm,.85rem); font-weight:600; color:var(--text-muted); }
.badge-pop { display:inline-block; padding:.3rem .8rem; background:var(--primary-color); border-radius:99px; font-size:var(--fs-xs,.7rem); font-weight:800; color:var(--text-strong); }
.feat-list { list-style:none; display:flex; flex-direction:column; gap:.7rem; margin:1.25rem 0; }
.feat-item { display:flex; align-items:center; gap:.65rem; font-size:var(--fs-sm,.86rem); color:var(--text-strong); }
.feat-check { width:22px; height:22px; border-radius:50%; background:var(--primary-color); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.feat-check svg { width:11px; height:11px; }
.pt-cta { display:block; text-align:center; padding:.75rem 1.5rem; border-radius:99px; font-size:var(--fs-sm,.85rem); font-weight:800; text-decoration:none; border:1.5px solid transparent; cursor:pointer; transition:background .2s,border-color .2s; }
.pt01-grid,.pt02-grid,.pt03-grid,.pt06-grid,.pt08-cards { display:grid; gap:1.5rem; justify-content:center; align-items:start; }
.pt01-grid { grid-template-columns:repeat(var(--pt01-cols-d,3),minmax(0,340px)); }
.pt01-card { background:var(--pt01-normal-bg,var(--card-bg,#fff)); color:var(--pt01-normal-fg,var(--text-strong)); border:var(--pt01-normal-bw,1.5px) solid var(--pt01-normal-border,var(--card-border,#e2e8f0)); border-radius:var(--pt01-normal-radius,var(--card-radius)); box-shadow:var(--pt01-normal-shadow,none); padding:2rem; display:flex; flex-direction:column; transition:box-shadow .2s,transform .2s; }
.pt01-card:hover { box-shadow:var(--pt01-normal-shadow-hover,var(--card-shadow-hover)); }
.pt01-card .badge-pop { display:none; }
.pt01-card:nth-child(2) { background:var(--pt01-feat-bg,#0f172a); color:var(--pt01-feat-fg,#fff); border-width:var(--pt01-feat-bw,1.5px); border-color:var(--pt01-feat-border,var(--text-strong,#0f172a)); border-radius:var(--pt01-feat-radius,var(--card-radius)); box-shadow:var(--pt01-feat-shadow,0 16px 48px rgba(15,23,42,.28)); transform:translateY(-12px); }
.pt01-card:nth-child(2) .badge-pop { display:inline-block; }
.pt01-card:nth-child(2) .price-label { color:var(--pt01-feat-muted,var(--text-muted,#64748b)); }
.pt01-card:nth-child(2) .price-big { color:var(--pt01-feat-accent,#fcd703); }
.pt01-card:nth-child(2) .feat-item { color:var(--pt01-feat-fg2,#cbd5e1); }
.pt01-card:nth-child(2) .price-per { color:var(--pt01-feat-muted,var(--text-muted,#64748b)); }
.toggle-wrap { display:flex; align-items:center; gap:.75rem; justify-content:center; margin-bottom:2.5rem; }
.toggle-label { font-size:var(--fs-sm,.85rem); font-weight:700; color:var(--text-muted); }
.toggle-label.active { color:var(--text-strong); }
.toggle-switch { width:48px; height:26px; background:#e2e8f0; border-radius:99px; position:relative; cursor:pointer; transition:background .2s; }
.toggle-switch.on { background:var(--primary-color); }
.toggle-knob { width:20px; height:20px; border-radius:50%; background:var(--card-bg,#fff); position:absolute; top:3px; left:3px; transition:transform .2s; box-shadow:0 1px 4px rgba(0,0,0,.15); }
.toggle-switch.on .toggle-knob { transform:translateX(22px); }
.save-pill { padding:.3rem .85rem; background:#dcfce7; color:#15803d; border-radius:99px; font-size:var(--fs-xs,.72rem); font-weight:700; }
.pt02-grid { grid-template-columns:repeat(var(--pt02-cols-d,3),minmax(0,320px)); }
.pt02-card { background:var(--pt02-normal-bg,var(--card-bg,#fff)); color:var(--pt02-normal-fg,var(--text-strong)); border:var(--pt02-normal-bw,1.5px) solid var(--pt02-normal-border,var(--card-border,#e2e8f0)); border-radius:var(--pt02-normal-radius,var(--card-radius)); box-shadow:var(--pt02-normal-shadow,none); padding:2rem; display:flex; flex-direction:column; position:relative; transition:box-shadow .2s,transform .2s; }
.pt02-card:hover { box-shadow:var(--card-shadow-hover); }
.pt02-card .pt02-badge { display:none; }
.pt02-card:nth-child(2) { background:var(--pt02-feat-bg,var(--card-bg,#fff)); color:var(--pt02-feat-fg,var(--text-strong)); border-color:var(--pt02-feat-border,var(--primary-color)); box-shadow:var(--pt02-feat-shadow,0 0 0 2px var(--primary-color),0 16px 40px rgba(252,215,3,.18)); transform:translateY(-10px); }
.pt02-card:nth-child(2) .pt02-badge { display:block; }
.pt02-badge { position:absolute; top:-14px; left:50%; transform:translateX(-50%); }
.pt02-price-y, .pt02-price-m { display:none; }
.pt02-price-y.show, .pt02-price-m.show { display:block; }
.old-price { font-size:var(--fs-sm,.85rem); text-decoration:line-through; color:var(--text-muted); margin-bottom:.2rem; }
.pt03-grid { grid-template-columns:repeat(var(--pt03-cols-d,2),minmax(0,420px)); }
.pt03-card { background:var(--pt03-normal-bg,var(--card-bg,#fff)); color:var(--pt03-normal-fg,var(--text-strong)); border:var(--pt03-normal-bw,1.5px) solid var(--pt03-normal-border,var(--card-border,#e2e8f0)); border-radius:var(--pt03-normal-radius,var(--card-radius)); box-shadow:var(--pt03-normal-shadow,none); padding:2rem; display:flex; flex-direction:column; transition:box-shadow .2s; }
.pt03-card .badge-pop { display:none; }
.pt03-card:nth-child(2) { background:var(--pt03-feat-bg,#0f172a); color:var(--pt03-feat-fg,#fff); border-color:var(--pt03-feat-border,var(--text-strong,#0f172a)); box-shadow:var(--pt03-feat-shadow,none); }
.pt03-card:nth-child(2) .badge-pop { display:inline-block; }
.pt03-card:nth-child(2) .price-label { color:var(--pt03-feat-muted,var(--text-muted,#64748b)); }
.pt03-card:nth-child(2) .price-big { color:var(--pt03-feat-accent,#fcd703); }
.pt03-card:nth-child(2) .feat-item { color:var(--pt03-feat-fg2,#cbd5e1); }
.pt03-perks { display:flex; flex-wrap:wrap; gap:.4rem; margin:1rem 0; }
.pt03-perk { padding:.3rem .75rem; background:var(--surface-color,#f1f5f9); border-radius:99px; font-size:var(--pt03-fs-xs,var(--fs-xs)); font-weight:700; color:var(--text-muted); }
.pt03-card:nth-child(2) .pt03-perk { background:#1e293b; color:var(--text-muted,#94a3b8); }
.pt04-tabs { display:flex; justify-content:center; gap:.5rem; margin-bottom:2.5rem; flex-wrap:wrap; }
.pt04-tab { padding:.6rem 1.4rem; border-radius:99px; border:1.5px solid var(--card-border,#e2e8f0); background:var(--card-bg,#fff); font-size:var(--pt04-fs-sm,var(--fs-sm)); font-weight:700; color:var(--text-muted); cursor:pointer; transition:all .2s; display:flex; align-items:center; gap:.5rem; }
.pt04-tab.active { background:var(--text-strong); color:#fff; border-color:var(--text-strong); }
.pt04-save { padding:.2rem .6rem; background:#dcfce7; color:#15803d; border-radius:99px; font-size:var(--pt04-fs-xs,var(--fs-xs)); font-weight:700; }
.pt04-tab.active .pt04-save { background:#1e293b; color:#6ee7b7; }
.pt04-panels > div { display:none; grid-template-columns:repeat(var(--pt04-cols-d,3),minmax(0,300px)); gap:1.5rem; justify-content:center; }
.pt04-panels > div.active { display:grid; }
.pt04-card { background:var(--pt04-normal-bg,var(--card-bg,#fff)); color:var(--pt04-normal-fg,var(--text-strong)); border:var(--pt04-normal-bw,1.5px) solid var(--pt04-normal-border,var(--card-border,#e2e8f0)); border-radius:var(--pt04-normal-radius,var(--card-radius)); box-shadow:var(--pt04-normal-shadow,none); padding:2rem; display:flex; flex-direction:column; position:relative; transition:box-shadow .2s; }
.pt04-card:hover { box-shadow:var(--card-shadow-hover); }
.pt04-card .pt04-tag,.pt04-card .badge-pop { display:none; }
.pt04-card:nth-child(2) { background:var(--pt04-feat-bg,var(--card-bg,#fff)); color:var(--pt04-feat-fg,var(--text-strong)); border-color:var(--pt04-feat-border,var(--primary-color)); box-shadow:var(--pt04-feat-shadow,0 0 0 2px var(--primary-color)); }
.pt04-card:nth-child(2) .pt04-tag { display:block; }
.pt04-card:nth-child(2) .badge-pop { display:inline-block; }
.pt04-tag { position:absolute; top:-14px; left:50%; transform:translateX(-50%); white-space:nowrap; }
.intro-2col { display:flex; flex-wrap:wrap; gap:2.5rem; align-items:center; }
.intro-2col > div { flex:1; min-width:260px; }
.pt05-grid { display:flex; flex-direction:column; border-top:1px solid #f1f5f9; }
.pt05-item { display:flex; align-items:center; gap:1.25rem; padding:1.25rem 0; border-bottom:1px solid #f1f5f9; transition:background .15s; }
.pt05-item:hover { background:#fafafa; padding-left:.75rem; }
.pt05-icon { width:40px; height:40px; border-radius:.5rem; background:#fefce8; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.pt05-body { flex:1; }
.pt05-body h4 { font-size:var(--pt05-fs-body,var(--fs-body)); font-weight:800; color:var(--text-strong); margin:0 0 .2rem; }
.pt05-body p { font-size:var(--pt05-fs-sm,var(--fs-sm)); color:var(--text-muted); margin:0; }
.pt05-price { font-size:1.1rem; font-weight:900; color:var(--text-strong); white-space:nowrap; }
.pt05-price span { font-size:var(--pt05-fs-xs,var(--fs-xs)); font-weight:600; color:var(--text-muted); display:block; }
.pt06-grid { grid-template-columns:repeat(var(--pt06-cols-d,3),minmax(0,320px)); }
.pt06-card { border-radius:var(--pt06-normal-radius,var(--card-radius)); overflow:hidden; border:var(--pt06-normal-bw,1.5px) solid var(--pt06-normal-border,var(--card-border,#e2e8f0)); box-shadow:var(--pt06-normal-shadow,none); display:flex; flex-direction:column; transition:box-shadow .2s; }
.pt06-card:hover { box-shadow:var(--card-shadow-hover); }
.pt06-card .badge-pop { display:none; }
.pt06-card:nth-child(2) { border-color:var(--pt06-feat-border,transparent); box-shadow:var(--pt06-feat-shadow,0 12px 40px rgba(15,23,42,.2)); }
.pt06-card:nth-child(2) .badge-pop { display:inline-block; }
.pt06-head { padding:2rem; background:var(--pt06-normal-bg,var(--surface-color,#f8fafc)); color:var(--pt06-normal-fg,var(--text-strong)); }
.pt06-card:nth-child(2) .pt06-head { background:var(--pt06-feat-bg,#0f172a); }
.pt06-card:nth-child(2) .pt06-head .price-label { color:var(--pt06-feat-muted,var(--text-muted,#64748b)); }
.pt06-card:nth-child(2) .pt06-head .price-big { color:var(--pt06-feat-accent,#fcd703); }
.pt06-card:nth-child(2) .pt06-head h3 { color:var(--pt06-feat-fg,#fff); }
.pt06-card:nth-child(2) .pt06-head .price-per { color:var(--pt06-feat-muted,var(--text-muted,#64748b)); }
.pt06-duration { font-size:var(--pt06-fs-xs,var(--fs-xs)); color:var(--text-muted); margin-top:.35rem; }
.pt06-card:nth-child(2) .pt06-duration { color:var(--text-color,#475569); }
.pt06-body { padding:1.5rem 2rem 2rem; background:var(--pt06-normal-bg2,var(--card-bg,#fff)); flex:1; display:flex; flex-direction:column; }
.pt07-grid { display:grid; grid-template-columns:repeat(var(--pt07-cols-d,3),minmax(0,1fr)); gap:var(--pt07-gap,0); max-width:960px; margin:0 auto; }
.pt07-card { position:relative; overflow:hidden; aspect-ratio:3/4; }
.pt07-card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.pt07-card:hover img { transform:scale(1.06); }
.pt07-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.85) 0%,rgba(0,0,0,.1) 60%,transparent 100%); display:flex; flex-direction:column; justify-content:flex-end; padding:1.25rem; gap:.4rem; }
.pt07-tag { padding:.25rem .7rem; background:var(--primary-color); border-radius:99px; font-size:var(--pt07-fs-xs,var(--fs-xs)); font-weight:800; color:var(--text-strong); width:fit-content; }
.pt07-overlay h3 { font-size:var(--pt07-fs-body,var(--fs-body)); font-weight:900; color:#fff; margin:0; }
.pt07-overlay p { font-size:var(--pt07-fs-sm,var(--fs-sm)); color:rgba(255,255,255,.8); margin:0; line-height:1.5; }
.pt07-price-row { display:flex; align-items:center; justify-content:space-between; margin-top:.4rem; }
.pt07-prc { font-size:1.25rem; font-weight:900; color:#fcd703; }
.pt07-btn { padding:.4rem 1rem; background:var(--primary-color); color:var(--text-strong); border-radius:99px; font-size:var(--pt07-fs-xs,var(--fs-xs)); font-weight:800; text-decoration:none; transition:background .2s; }
.pt07-btn:hover { background:var(--card-bg,#fff); }
.pt08-cards { grid-template-columns:repeat(var(--pt08-cols-d,3),minmax(0,340px)); gap:0; }
.pt08-card { padding:2.4rem 2rem; border:1px solid var(--pt08-normal-border,#e2e8f0); background:var(--pt08-normal-bg,var(--card-bg,#fff)); color:var(--pt08-normal-fg,var(--text-strong)); position:relative; }
.pt08-card .badge-pop { display:none; }
.pt08-card:nth-child(2) { border:none; background:var(--pt08-feat-bg,#0f172a); color:var(--pt08-feat-fg,#94a3b8); }
.pt08-card:nth-child(2) .badge-pop { display:inline-block; position:absolute; top:-12px; left:50%; transform:translateX(-50%); white-space:nowrap; }
.pt08-card:nth-child(2) .price-big { color:var(--pt08-feat-accent,#fcd703); }
.pt08-card:nth-child(2) .price-big .price-cur { color:var(--pt08-feat-accent,#fcd703); }
.pt08-card:nth-child(2) .price-label { color:var(--pt08-feat-fg,#94a3b8); }
.pt08-card:nth-child(2) .feat-item { color:var(--pt08-feat-fg2,#cbd5e1); }
.pt08-card:nth-child(2) hr { border-top-color:#1e293b; }
.sec-pad { padding:0 2rem; }
.pt09-grid { display:grid; grid-template-columns:repeat(var(--pt09-cols-d,2),minmax(0,1fr)); gap:0 3rem; }
.pt09-item { display:flex; align-items:flex-start; gap:1rem; padding:1.25rem 0; border-bottom:1px solid #f1f5f9; }
.pt09-img { width:72px; height:56px; border-radius:.5rem; object-fit:cover; flex-shrink:0; }
.pt09-body { flex:1; }
.pt09-body h4 { font-size:var(--pt09-fs-body,var(--fs-body)); font-weight:800; color:var(--text-strong); margin:0 0 .2rem; display:flex; align-items:center; flex-wrap:wrap; gap:.4rem; }
.pt09-body p { font-size:var(--pt09-fs-sm,var(--fs-sm)); color:var(--text-muted); margin:0; line-height:1.5; }
.pt09-prc { font-size:1rem; font-weight:900; color:var(--text-strong); margin-top:.35rem; }
.chef-badge { padding:.2rem .6rem; background:#fef9c3; border-radius:99px; font-size:var(--fs-xs,.65rem); font-weight:800; color:#92400e; }
.pt10-table { width:100%; border-collapse:collapse; font-size:var(--pt10-fs-sm,var(--fs-sm)); }
.pt10-table th { padding:.9rem 1.1rem; font-weight:800; font-size:var(--pt10-fs-xs,var(--fs-xs)); letter-spacing:.06em; text-transform:uppercase; background:#0f172a; color:var(--text-muted,#94a3b8); border-bottom:2px solid #1e293b; text-align:left; }
.pt10-table th.hl { background:var(--pt10-hl-bg,#1e3a5f); color:var(--pt10-hl-fg,#fff); }
.pt10-table td { padding:.8rem 1.1rem; border-bottom:1px solid #f1f5f9; color:var(--text-strong); vertical-align:middle; }
.pt10-table td.hl { background:var(--pt10-hl-cell-bg,#fffbeb); }
.pt10-table tr:hover td { background:#fafafa; }
.pt10-table tr:hover td.hl { background:var(--pt10-hl-cell-hover,#fef3c7); }
.feature-col { font-size:var(--fs-sm,.84rem); font-weight:600; color:var(--text-muted); }
.tick-y { color:#15803d; font-weight:800; }
.tick-n { color:#cbd5e1; }
.tick-p { font-size:var(--fs-sm,.78rem); font-weight:700; color:#1d4ed8; }
@media (max-width:768px) {
  .pt01-grid { grid-template-columns:repeat(var(--pt01-cols-t,2),minmax(0,1fr)); }
  .pt02-grid { grid-template-columns:repeat(var(--pt02-cols-t,2),minmax(0,1fr)); }
  .pt06-grid { grid-template-columns:repeat(var(--pt06-cols-t,2),minmax(0,1fr)); }
  .pt08-cards { grid-template-columns:repeat(var(--pt08-cols-t,2),minmax(0,1fr)); }
  .pt01-card:nth-child(2),.pt02-card:nth-child(2) { transform:none; }
  .pt03-grid { grid-template-columns:repeat(var(--pt03-cols-t,1),minmax(0,1fr)); }
  .pt04-panels > div { grid-template-columns:repeat(var(--pt04-cols-t,2),minmax(0,1fr)); }
  .pt07-grid { grid-template-columns:repeat(var(--pt07-cols-t,2),minmax(0,1fr)); }
}
@media (max-width:768px) {
  .pt09-grid { grid-template-columns:repeat(var(--pt09-cols-t,1),minmax(0,1fr)); }
  .pt10-table { font-size:var(--pt10-fs-xs,var(--fs-xs)); }
  .pt10-table th, .pt10-table td { padding:.6rem .75rem; }
}
@media (max-width:640px) {
  .pt01-grid { grid-template-columns:repeat(var(--pt01-cols-m,1),minmax(0,1fr)); }
  .pt02-grid { grid-template-columns:repeat(var(--pt02-cols-m,1),minmax(0,1fr)); }
  .pt04-panels > div { grid-template-columns:repeat(var(--pt04-cols-m,1),minmax(0,1fr)); }
  .pt06-grid { grid-template-columns:repeat(var(--pt06-cols-m,1),minmax(0,1fr)); }
  .pt07-grid { grid-template-columns:repeat(var(--pt07-cols-m,1),minmax(0,1fr)); }
  .pt08-cards { grid-template-columns:repeat(var(--pt08-cols-m,1),minmax(0,1fr)); }
  .pt03-grid { grid-template-columns:repeat(var(--pt03-cols-m,1),minmax(0,1fr)); }
  .pt09-grid { grid-template-columns:repeat(var(--pt09-cols-m,1),minmax(0,1fr)); }
}

/* --------------------------------------------------------------
   §27b Price Tables — text / badge / tick / button theming
   (scoped by a unique ptNN-sec class on each section root so
   these overrides never leak onto other sections that share
   the same global .badge-pop/.pt-cta classes elsewhere.)
-------------------------------------------------------------- */
.pt-wrap .feat-check svg path { stroke:currentColor; }
.pt01-sec .eyebrow { color:var(--pt01-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color))); }section[style*="--pt01-eyebrow-mode:light"] .pt01-sec .eyebrow,section[style*="--pt01-eyebrow-mode: light"] .pt01-sec .eyebrow{color:var(--pt01-eyebrow-color,var(--eyebrow-color-light,var(--primary-color)))}
.pt01-sec .sec-h { color:var(--pt01-heading-color,var(--text-strong)); }
.pt01-sec .sec-sub { color:var(--pt01-sub-color,var(--text-muted)); }
.pt01-sec .feat-check { background:var(--pt01-tick-bg,var(--primary-color)); color:var(--pt01-tick-fg,#0f172a); }
.pt01-sec .pt01-card:nth-child(2) .feat-check { background:var(--pt01-feat-tick-bg,var(--primary-color)); color:var(--pt01-feat-tick-fg,#0f172a); }
.pt01-sec .badge-pop { background:var(--pt01-badge-bg,var(--primary-color)); color:var(--pt01-badge-fg,var(--text-strong)); }
.pt01-sec .pt01-card .pt-cta { background:var(--pt01-normal-btn-bg,transparent); color:var(--pt01-normal-btn-fg,var(--text-strong)); border-color:var(--pt01-normal-btn-border,var(--card-border,#e2e8f0)); border-width:var(--pt01-normal-btn-bw,1.5px); padding:var(--pt01-normal-btn-pad,.75rem 1.5rem); }
.pt01-sec .pt01-card:nth-child(2) .pt-cta { background:var(--pt01-feat-btn-bg,var(--primary-color)); color:var(--pt01-feat-btn-fg,var(--text-strong)); border-color:var(--pt01-feat-btn-border,transparent); border-width:var(--pt01-feat-btn-bw,0px); padding:var(--pt01-feat-btn-pad,.75rem 1.5rem); }
.pt02-sec .eyebrow { color:var(--pt02-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color))); }section[style*="--pt02-eyebrow-mode:light"] .pt02-sec .eyebrow,section[style*="--pt02-eyebrow-mode: light"] .pt02-sec .eyebrow{color:var(--pt02-eyebrow-color,var(--eyebrow-color-light,var(--primary-color)))}
.pt02-sec .sec-h { color:var(--pt02-heading-color,var(--text-strong)); }
.pt02-sec .sec-sub { color:var(--pt02-sub-color,var(--text-muted)); }
.pt02-sec .feat-check { background:var(--pt02-tick-bg,var(--primary-color)); color:var(--pt02-tick-fg,#0f172a); }
.pt02-sec .pt02-card:nth-child(2) .feat-check { background:var(--pt02-feat-tick-bg,var(--primary-color)); color:var(--pt02-feat-tick-fg,#0f172a); }
.pt02-sec .badge-pop { background:var(--pt02-badge-bg,var(--primary-color)); color:var(--pt02-badge-fg,var(--text-strong)); }
.pt02-sec .save-pill { background:var(--pt02-savepill-bg,var(--primary-color)); color:var(--pt02-savepill-fg,var(--text-strong)); }
.pt02-sec .pt02-card .pt-cta { background:var(--pt02-normal-btn-bg,transparent); color:var(--pt02-normal-btn-fg,var(--text-strong)); border-color:var(--pt02-normal-btn-border,var(--card-border,#e2e8f0)); border-width:var(--pt02-normal-btn-bw,1.5px); padding:var(--pt02-normal-btn-pad,.75rem 1.5rem); }
.pt02-sec .pt02-card:nth-child(2) .pt-cta { background:var(--pt02-feat-btn-bg,var(--primary-color)); color:var(--pt02-feat-btn-fg,var(--text-strong)); border-color:var(--pt02-feat-btn-border,transparent); border-width:var(--pt02-feat-btn-bw,0px); padding:var(--pt02-feat-btn-pad,.75rem 1.5rem); }
.pt03-sec .eyebrow { color:var(--pt03-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color))); }section[style*="--pt03-eyebrow-mode:light"] .pt03-sec .eyebrow,section[style*="--pt03-eyebrow-mode: light"] .pt03-sec .eyebrow{color:var(--pt03-eyebrow-color,var(--eyebrow-color-light,var(--primary-color)))}
.pt03-sec .sec-h { color:var(--pt03-heading-color,var(--text-strong)); }
.pt03-sec .sec-sub { color:var(--pt03-sub-color,var(--text-muted)); }
.pt03-sec .feat-check { background:var(--pt03-tick-bg,var(--primary-color)); color:var(--pt03-tick-fg,#0f172a); }
.pt03-sec .pt03-card:nth-child(2) .feat-check { background:var(--pt03-feat-tick-bg,var(--primary-color)); color:var(--pt03-feat-tick-fg,#0f172a); }
.pt03-sec .badge-pop { background:var(--pt03-badge-bg,var(--primary-color)); color:var(--pt03-badge-fg,var(--text-strong)); }
.pt03-sec .pt03-card .pt03-perk { background:var(--pt03-perk-bg,var(--surface-color,#f1f5f9)); color:var(--pt03-perk-fg,var(--text-muted)); }
.pt03-sec .pt03-card:nth-child(2) .pt03-perk { background:var(--pt03-feat-perk-bg,#1e293b); color:var(--pt03-feat-perk-fg,var(--text-muted,#94a3b8)); }
.pt03-sec .pt03-card .pt-cta { background:var(--pt03-normal-btn-bg,transparent); color:var(--pt03-normal-btn-fg,var(--text-strong)); border-color:var(--pt03-normal-btn-border,var(--card-border,#e2e8f0)); border-width:var(--pt03-normal-btn-bw,1.5px); padding:var(--pt03-normal-btn-pad,.75rem 1.5rem); }
.pt03-sec .pt03-card:nth-child(2) .pt-cta { background:var(--pt03-feat-btn-bg,var(--primary-color)); color:var(--pt03-feat-btn-fg,var(--text-strong)); border-color:var(--pt03-feat-btn-border,transparent); border-width:var(--pt03-feat-btn-bw,0px); padding:var(--pt03-feat-btn-pad,.75rem 1.5rem); }
.pt04-sec .eyebrow { color:var(--pt04-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color))); }section[style*="--pt04-eyebrow-mode:light"] .pt04-sec .eyebrow,section[style*="--pt04-eyebrow-mode: light"] .pt04-sec .eyebrow{color:var(--pt04-eyebrow-color,var(--eyebrow-color-light,var(--primary-color)))}
.pt04-sec .sec-h { color:var(--pt04-heading-color,var(--text-strong)); }
.pt04-sec .sec-sub { color:var(--pt04-sub-color,var(--text-muted)); }
.pt04-sec .feat-check { background:var(--pt04-tick-bg,var(--primary-color)); color:var(--pt04-tick-fg,#0f172a); }
.pt04-sec .pt04-card:nth-child(2) .feat-check { background:var(--pt04-feat-tick-bg,var(--primary-color)); color:var(--pt04-feat-tick-fg,#0f172a); }
.pt04-sec .badge-pop { background:var(--pt04-badge-bg,var(--primary-color)); color:var(--pt04-badge-fg,var(--text-strong)); }
.pt04-sec .pt04-save { background:var(--pt04-savebadge-bg,var(--primary-color)); color:var(--pt04-savebadge-fg,var(--text-strong)); }
.pt04-sec .pt04-card .pt-cta { background:var(--pt04-normal-btn-bg,transparent); color:var(--pt04-normal-btn-fg,var(--text-strong)); border-color:var(--pt04-normal-btn-border,var(--card-border,#e2e8f0)); border-width:var(--pt04-normal-btn-bw,1.5px); padding:var(--pt04-normal-btn-pad,.75rem 1.5rem); }
.pt04-sec .pt04-card:nth-child(2) .pt-cta { background:var(--pt04-feat-btn-bg,var(--primary-color)); color:var(--pt04-feat-btn-fg,var(--text-strong)); border-color:var(--pt04-feat-btn-border,transparent); border-width:var(--pt04-feat-btn-bw,0px); padding:var(--pt04-feat-btn-pad,.75rem 1.5rem); }
.pt06-sec .eyebrow { color:var(--pt06-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color))); }section[style*="--pt06-eyebrow-mode:light"] .pt06-sec .eyebrow,section[style*="--pt06-eyebrow-mode: light"] .pt06-sec .eyebrow{color:var(--pt06-eyebrow-color,var(--eyebrow-color-light,var(--primary-color)))}
.pt06-sec .sec-h { color:var(--pt06-heading-color,var(--text-strong)); }
.pt06-sec .sec-sub { color:var(--pt06-sub-color,var(--text-muted)); }
.pt06-sec .feat-check { background:var(--pt06-tick-bg,var(--primary-color)); color:var(--pt06-tick-fg,#0f172a); }
.pt06-sec .pt06-card:nth-child(2) .feat-check { background:var(--pt06-feat-tick-bg,var(--primary-color)); color:var(--pt06-feat-tick-fg,#0f172a); }
.pt06-sec .badge-pop { background:var(--pt06-badge-bg,var(--primary-color)); color:var(--pt06-badge-fg,var(--text-strong)); }
.pt06-sec .pt06-card .pt-cta { background:var(--pt06-normal-btn-bg,transparent); color:var(--pt06-normal-btn-fg,var(--text-strong)); border-color:var(--pt06-normal-btn-border,var(--card-border,#e2e8f0)); border-width:var(--pt06-normal-btn-bw,1.5px); padding:var(--pt06-normal-btn-pad,.75rem 1.5rem); }
.pt06-sec .pt06-card:nth-child(2) .pt-cta { background:var(--pt06-feat-btn-bg,var(--primary-color)); color:var(--pt06-feat-btn-fg,var(--text-strong)); border-color:var(--pt06-feat-btn-border,transparent); border-width:var(--pt06-feat-btn-bw,0px); padding:var(--pt06-feat-btn-pad,.75rem 1.5rem); }
.pt07-sec .eyebrow { color:var(--pt07-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color))); }section[style*="--pt07-eyebrow-mode:light"] .pt07-sec .eyebrow,section[style*="--pt07-eyebrow-mode: light"] .pt07-sec .eyebrow{color:var(--pt07-eyebrow-color,var(--eyebrow-color-light,var(--primary-color)))}
.pt07-sec .sec-h { color:var(--pt07-heading-color,var(--text-strong)); }
.pt07-sec .sec-sub { color:var(--pt07-sub-color,var(--text-muted)); }
.pt07-sec .pt07-tag { background:var(--pt07-tag-bg,var(--primary-color)); color:var(--pt07-tag-fg,var(--text-strong)); }
.pt07-sec .pt07-btn { background:var(--pt07-btn-bg,var(--primary-color)); color:var(--pt07-btn-fg,var(--text-strong)); }
.pt07-sec .pt07-btn:hover { background:var(--pt07-btn-bg-hover,var(--card-bg,#fff)); }
.pt07-sec .pt07-prc { color:var(--pt07-price-color,#fcd703); }
.pt08-sec .eyebrow { color:var(--pt08-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color))); }section[style*="--pt08-eyebrow-mode:light"] .pt08-sec .eyebrow,section[style*="--pt08-eyebrow-mode: light"] .pt08-sec .eyebrow{color:var(--pt08-eyebrow-color,var(--eyebrow-color-light,var(--primary-color)))}
.pt08-sec .sec-h { color:var(--pt08-heading-color,var(--text-strong)); }
.pt08-sec .sec-sub { color:var(--pt08-sub-color,var(--text-muted)); }
.pt08-sec .feat-check { background:var(--pt08-tick-bg,var(--primary-color)); color:var(--pt08-tick-fg,#0f172a); }
.pt08-sec .pt08-card:nth-child(2) .feat-check { background:var(--pt08-feat-tick-bg,var(--primary-color)); color:var(--pt08-feat-tick-fg,#0f172a); }
.pt08-sec .badge-pop { background:var(--pt08-badge-bg,var(--primary-color)); color:var(--pt08-badge-fg,var(--text-strong)); }
.pt08-sec .pt08-card .pt-cta { background:var(--pt08-normal-btn-bg,transparent); color:var(--pt08-normal-btn-fg,var(--text-strong)); border-color:var(--pt08-normal-btn-border,var(--card-border,#e2e8f0)); border-width:var(--pt08-normal-btn-bw,1.5px); padding:var(--pt08-normal-btn-pad,.75rem 1.5rem); }
.pt08-sec .pt08-card:nth-child(2) .pt-cta { background:var(--pt08-feat-btn-bg,var(--primary-color)); color:var(--pt08-feat-btn-fg,var(--text-strong)); border-color:var(--pt08-feat-btn-border,transparent); border-width:var(--pt08-feat-btn-bw,0px); padding:var(--pt08-feat-btn-pad,.75rem 1.5rem); }
.pt09-sec .eyebrow { color:var(--pt09-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color))); }section[style*="--pt09-eyebrow-mode:light"] .pt09-sec .eyebrow,section[style*="--pt09-eyebrow-mode: light"] .pt09-sec .eyebrow{color:var(--pt09-eyebrow-color,var(--eyebrow-color-light,var(--primary-color)))}
.pt09-sec .sec-h { color:var(--pt09-heading-color,var(--text-strong)); }
.pt09-sec .sec-sub { color:var(--pt09-sub-color,var(--text-muted)); }
.pt09-sec .chef-badge { background:var(--pt09-badge-bg,#fef9c3); color:var(--pt09-badge-fg,#92400e); }
.pt05-sec .eyebrow { color:var(--pt05-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color))); }section[style*="--pt05-eyebrow-mode:light"] .pt05-sec .eyebrow,section[style*="--pt05-eyebrow-mode: light"] .pt05-sec .eyebrow{color:var(--pt05-eyebrow-color,var(--eyebrow-color-light,var(--primary-color)))}
.pt05-sec .sec-h { color:var(--pt05-heading-color,var(--text-strong)); }
.pt05-sec .sec-sub { color:var(--pt05-sub-color,var(--text-muted)); }
.pt05-sec .pt05-price { color:var(--pt05-price-color,var(--text-strong)); }
.pt10-sec .eyebrow { color:var(--pt10-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color))); }section[style*="--pt10-eyebrow-mode:light"] .pt10-sec .eyebrow,section[style*="--pt10-eyebrow-mode: light"] .pt10-sec .eyebrow{color:var(--pt10-eyebrow-color,var(--eyebrow-color-light,var(--primary-color)))}
.pt10-sec .sec-h { color:var(--pt10-heading-color,var(--text-strong)); }
.pt10-sec .sec-sub { color:var(--pt10-sub-color,var(--text-muted)); }
.pt10-sec .pt10-table .pt-cta { background:var(--pt10-normal-btn-bg,transparent); color:var(--pt10-normal-btn-fg,var(--text-strong)); border-color:var(--pt10-normal-btn-border,var(--card-border,#e2e8f0)); border-width:var(--pt10-normal-btn-bw,1.5px); padding:var(--pt10-normal-btn-pad,.75rem 1.5rem); }
.pt10-sec .pt10-table .hl .pt-cta { background:var(--pt10-feat-btn-bg,var(--primary-color)); color:var(--pt10-feat-btn-fg,var(--text-strong)); border-color:var(--pt10-feat-btn-border,transparent); border-width:var(--pt10-feat-btn-bw,0px); padding:var(--pt10-feat-btn-pad,.75rem 1.5rem); }

/* --------------------------------------------------------------
   §27c Process Steps — section container (background / max-width / padding)
   Background + vertical padding live on the OUTER <section> (full-bleed,
   edge-to-edge) — max-width lives on the INNER .ps-wrap it contains, so
   the background always spans the full viewport while the content stays
   centered and width-constrained. .ps-wrap's own vertical padding is
   zeroed out here (moved to the outer section) to avoid doubling it; its
   horizontal padding + margin:auto centering are left untouched.
-------------------------------------------------------------- */
.ps01-sec { background:var(--ps01-section-bg,transparent) !important; padding-top:var(--ps01-pad-y,var(--gbuf-v,3.5rem)) !important; padding-bottom:var(--ps01-pad-y,var(--gbuf-v,3.5rem)) !important; }
.ps01-sec > .ps-wrap { max-width:var(--ps01-max-width,68.75rem) !important; padding-top:0 !important; padding-bottom:0 !important; }
.ps02-sec { background:var(--ps02-section-bg,transparent) !important; padding-top:var(--ps02-pad-y,var(--gbuf-v,3.5rem)) !important; padding-bottom:var(--ps02-pad-y,var(--gbuf-v,3.5rem)) !important; }
.ps02-sec > .ps-wrap { max-width:var(--ps02-max-width,68.75rem) !important; padding-top:0 !important; padding-bottom:0 !important; }
.ps03-sec { background:var(--ps03-section-bg,transparent) !important; padding-top:var(--ps03-pad-y,var(--gbuf-v,3.5rem)) !important; padding-bottom:var(--ps03-pad-y,var(--gbuf-v,3.5rem)) !important; }
.ps03-sec > .ps-wrap { max-width:var(--ps03-max-width,68.75rem) !important; padding-top:0 !important; padding-bottom:0 !important; }
.ps04-sec { background:var(--ps04-section-bg,transparent) !important; padding-top:var(--ps04-pad-y,var(--gbuf-v,3.5rem)) !important; padding-bottom:var(--ps04-pad-y,var(--gbuf-v,3.5rem)) !important; }
.ps04-sec > .ps-wrap { max-width:var(--ps04-max-width,68.75rem) !important; padding-top:0 !important; padding-bottom:0 !important; }
.ps08-sec { background:var(--ps08-section-bg,transparent) !important; padding-top:var(--ps08-pad-y,var(--gbuf-v,3.5rem)) !important; padding-bottom:var(--ps08-pad-y,var(--gbuf-v,3.5rem)) !important; }
.ps08-sec > .ps-wrap { max-width:var(--ps08-max-width,68.75rem) !important; padding-top:0 !important; padding-bottom:0 !important; }
.ps09-sec { background:var(--ps09-section-bg,transparent) !important; padding-top:var(--ps09-pad-y,var(--gbuf-v,3.5rem)) !important; padding-bottom:var(--ps09-pad-y,var(--gbuf-v,3.5rem)) !important; }
.ps09-sec > .ps-wrap { max-width:var(--ps09-max-width,68.75rem) !important; padding-top:0 !important; padding-bottom:0 !important; }
.ps10-sec { background:var(--ps10-section-bg,transparent) !important; padding-top:var(--ps10-pad-y,var(--gbuf-v,3.5rem)) !important; padding-bottom:var(--ps10-pad-y,var(--gbuf-v,3.5rem)) !important; }
.ps10-sec > .ps-wrap { max-width:var(--ps10-max-width,68.75rem) !important; padding-top:0 !important; padding-bottom:0 !important; }
.ps11-sec { background:var(--ps11-section-bg,transparent) !important; padding-top:var(--ps11-pad-y,var(--gbuf-v,3.5rem)) !important; padding-bottom:var(--ps11-pad-y,var(--gbuf-v,3.5rem)) !important; }
.ps11-sec > .ps-wrap { max-width:var(--ps11-max-width,68.75rem) !important; padding-top:0 !important; padding-bottom:0 !important; }
.ps12-sec { background:var(--ps12-section-bg,transparent) !important; padding-top:var(--ps12-pad-y,var(--gbuf-v,3.5rem)) !important; padding-bottom:var(--ps12-pad-y,var(--gbuf-v,3.5rem)) !important; }
.ps12-sec > .ps-wrap { max-width:var(--ps12-max-width,68.75rem) !important; padding-top:0 !important; padding-bottom:0 !important; }

/* --------------------------------------------------------------
   §28 Interactive Banners (IB-01 - IB-12)
-------------------------------------------------------------- */
.pt-wrap.flush { padding:0; max-width:none; }
.ib01-wrap { display:flex; height:520px; overflow:hidden; border-radius:var(--card-radius); }
.ib01-panel { flex:1; position:relative; overflow:hidden; cursor:pointer; transition:flex .5s cubic-bezier(.4,0,.2,1); min-width:60px; }
.ib01-panel.active { flex:5; }
.ib01-panel img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s; }
.ib01-panel.active img { transform:scale(1.04); }
.ib01-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.75) 0%,rgba(0,0,0,.1) 60%,transparent 100%); display:flex; flex-direction:column; justify-content:flex-end; padding:2rem; }
.ib01-label { writing-mode:vertical-rl; text-orientation:mixed; font-size:var(--ib01-fs-xs,var(--fs-xs)); font-weight:700; color:rgba(255,255,255,.8); letter-spacing:.1em; text-transform:uppercase; margin-bottom:auto; }
.ib01-panel.active .ib01-label { display:none; }
.ib01-title { font-size:1.6rem; font-weight:900; color:#fff; margin:0 0 .4rem; line-height:1.2; opacity:0; transform:translateY(12px); transition:opacity .4s .15s, transform .4s .15s; }
.ib01-panel.active .ib01-title { opacity:1; transform:translateY(0); }
.ib01-desc { font-size:var(--ib01-fs-body,var(--fs-body)); color:rgba(255,255,255,.85); line-height:1.65; margin:0 0 .75rem; opacity:0; transform:translateY(8px); transition:opacity .35s .25s, transform .35s .25s; }
.ib01-panel.active .ib01-desc { opacity:1; transform:translateY(0); }
.ib01-link { display:inline-flex; align-items:center; gap:.5rem; font-size:var(--ib01-fs-sm,var(--fs-sm)); font-weight:800; color:var(--primary-color); text-decoration:none; opacity:0; transition:opacity .3s .3s; }
.ib01-panel.active .ib01-link { opacity:1; }
.ib01-link svg { width:16px; height:16px; flex-shrink:0; }
.ib02-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:1.5rem; }
.ib02-card { position:relative; overflow:hidden; border-radius:var(--card-radius); aspect-ratio:3/4; }
.ib02-card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.ib02-card:hover img { transform:scale(1.07); }
.ib02-base { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.7) 0%,transparent 60%); display:flex; flex-direction:column; justify-content:flex-end; padding:1.25rem; }
.ib02-base h3,.ib02-base h4 { font-size:var(--fs-body,1.05rem); font-weight:900; color:#fff; margin:0; }
.ib02-base span { font-size:var(--fs-xs,.75rem); color:rgba(255,255,255,.7); font-weight:600; }
.ib02-overlay { position:absolute; inset:0; background:rgba(252,215,3,.92); display:flex; flex-direction:column; align-items:center; justify-content:center; padding:1.5rem; gap:1rem; text-align:center; opacity:0; transform:translateY(8px); transition:opacity .3s, transform .3s; }
.ib02-card:hover .ib02-overlay { opacity:1; transform:translateY(0); }
.ib02-icon { display:none; }
.ib02-overlay h3 { font-size:var(--fs-body,1.05rem); font-weight:900; color:var(--text-strong); margin:0; }
.ib02-overlay p { font-size:var(--fs-sm,.82rem); color:var(--text-strong); opacity:.8; line-height:1.6; margin:0; flex:1; }
.ib02-btn { padding:.55rem 1.3rem; background:var(--text-strong); color:#fff; border-radius:99px; font-size:var(--fs-sm,.78rem); font-weight:800; text-decoration:none; }
.ib03-grid { display:grid; grid-template-columns:repeat(3,minmax(0,380px)); gap:1.5rem; justify-content:center; }
.ib03-card { position:relative; overflow:hidden; border-radius:var(--card-radius); aspect-ratio:4/3; cursor:pointer; }
.ib03-card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.ib03-card:hover img { transform:scale(1.06); }
.ib03-tint { position:absolute; inset:0; background:rgba(0,0,0,.45); transition:background .3s; }
.ib03-card:hover .ib03-tint { background:rgba(0,0,0,.6); }
.ib03-num { position:absolute; top:1.25rem; left:1.25rem; font-size:3.5rem; font-weight:900; color:rgba(255,255,255,.18); line-height:1; }
.ib03-content { position:absolute; inset:0; display:flex; flex-direction:column; justify-content:flex-end; padding:1.5rem; gap:.3rem; }
.ib03-cat { font-size:var(--fs-xs,.68rem); font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--primary-color); }
.ib03-content h3 { font-size:1.05rem; font-weight:900; color:#fff; margin:0 0 .35rem; }
.ib03-body { overflow:hidden; max-height:0; opacity:0; transform:translateY(8px); transition:max-height .35s ease, opacity .3s .05s, transform .3s .05s; }
.ib03-card:hover .ib03-body { max-height:160px; opacity:1; transform:translateY(0); }
.ib03-body p { font-size:var(--fs-sm,.82rem); color:rgba(255,255,255,.8); line-height:1.6; margin:0; }
.ib03-readmore { display:inline-flex; align-items:center; gap:.4rem; font-size:var(--fs-xs,.76rem); font-weight:800; color:var(--primary-color); text-decoration:none; margin-top:.4rem; }
.ib03-readmore svg { width:14px; height:14px; flex-shrink:0; stroke:currentColor; fill:none; stroke-linecap:round; stroke-linejoin:round; }
.ib04-grid { display:grid; grid-template-columns:2fr 1fr 1fr; grid-template-rows:1fr 1fr; gap:.75rem; height:520px; }
.ib04-c1 { grid-column:1; grid-row:1/3; }
.ib04-c2 { grid-column:2; grid-row:1; }
.ib04-c3 { grid-column:2; grid-row:2; }
.ib04-c4 { grid-column:3; grid-row:1/3; }
.ib04-card { position:relative; overflow:hidden; border-radius:.5rem; cursor:pointer; }
.ib04-card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.ib04-card:hover img { transform:scale(1.06); }
.ib04-tint { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.65) 0%,transparent 55%); }
.ib04-base { position:absolute; bottom:0; left:0; right:0; padding:1.25rem; display:flex; flex-direction:column; gap:.3rem; transition:opacity .3s; }
.ib04-base span { font-size:var(--fs-sm,.78rem); font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.85); }
.ib04-card:hover .ib04-base { opacity:0; }
.ib04-content { position:absolute; inset:0; display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-end; padding:1.25rem; gap:.3rem; opacity:0; transform:translateY(6px); transition:opacity .3s, transform .3s; }
.ib04-card:hover .ib04-content { opacity:1; transform:translateY(0); }
.ib04-content h3 { font-size:var(--fs-body,.95rem); font-weight:900; color:#fff; margin:0; }
.ib04-content p { font-size:var(--fs-sm,.78rem); color:rgba(255,255,255,.8); margin:0; line-height:1.6; }
.ib04-plus { width:36px; height:36px; border-radius:50%; background:rgba(255,255,255,.2); backdrop-filter:blur(4px); display:flex; align-items:center; justify-content:center; color:#fff; cursor:pointer; transition:background .2s; }
.ib04-plus svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-linecap:round; }
.ib04-card:hover .ib04-plus { background:var(--primary-color); color:var(--text-strong); }
.ib05-wrap { display:flex; flex-direction:column; }
.ib05-row { display:flex; flex-wrap:wrap; align-items:stretch; }
.ib05-row.reverse { flex-direction:row-reverse; }
.ib05-img { flex:1; min-width:300px; overflow:hidden; min-height:380px; }
.ib05-img img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.ib05-row:hover .ib05-img img { transform:scale(1.04); }
.ib05-body { flex:1; min-width:280px; padding:4rem 3.5rem; display:flex; flex-direction:column; justify-content:center; gap:1rem; background:var(--card-bg,#fff); }
.ib05-row:nth-child(even) .ib05-body { background:#fafafa; }
.ib05-tag { display:inline-block; padding:.3rem .85rem; background:#fefce8; border-radius:99px; font-size:var(--fs-xs,.7rem); font-weight:700; color:var(--primary-dark); width:fit-content; }
.ib05-body h3 { font-size:1.5rem; font-weight:900; color:var(--text-strong); margin:0; line-height:1.25; }
.ib05-body p { font-size:var(--fs-body,.9rem); color:var(--text-muted); line-height:1.8; margin:0; }
.ib05-arrow { display:inline-flex; align-items:center; gap:.65rem; font-size:var(--fs-xs,.78rem); font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--text-strong); text-decoration:none; margin-top:.5rem; }
.ib05-arrow svg { width:16px; height:16px; flex-shrink:0; stroke:currentColor; fill:none; stroke-linecap:round; stroke-linejoin:round; transition:transform .2s; }
.ib05-arrow:hover svg { transform:translateX(4px); }
.ib06-wrap { position:relative; overflow:hidden; border-radius:var(--card-radius); max-width:860px; margin:0 auto; user-select:none; }
.ib06-before, .ib06-after { position:absolute; inset:0; }
.ib06-before img, .ib06-after img { width:100%; height:100%; object-fit:cover; display:block; }
.ib06-before { clip-path:inset(0 50% 0 0); }
.ib06-handle { position:absolute; top:0; bottom:0; left:50%; transform:translateX(-50%); width:4px; background:var(--card-bg,#fff); cursor:ew-resize; display:flex; align-items:center; justify-content:center; z-index:3; }
.ib06-knob { width:40px; height:40px; border-radius:50%; background:var(--card-bg,#fff); box-shadow:0 2px 12px rgba(0,0,0,.25); display:flex; align-items:center; justify-content:center; gap:2px; pointer-events:none; flex-shrink:0; }
.ib06-knob svg { width:8px; height:14px; stroke:var(--text-strong); fill:none; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.8; }
.ib06-label { position:absolute; top:1rem; padding:.4rem 1rem; background:rgba(0,0,0,.5); backdrop-filter:blur(4px); border-radius:99px; font-size:var(--fs-xs,.75rem); font-weight:700; color:#fff; pointer-events:none; z-index:2; }
.ib06-label.l { left:1rem; }
.ib06-label.r { right:1rem; }
.ib07-grid { display:grid; grid-template-columns:repeat(3,minmax(0,320px)); gap:1.5rem; justify-content:center; }
.ib07-scene { perspective:800px; }
.ib07-card { position:relative; overflow:hidden; border-radius:var(--card-radius); aspect-ratio:3/4; transform-style:preserve-3d; transition:transform .1s; cursor:pointer; }
.ib07-card img { width:100%; height:100%; object-fit:cover; display:block; }
.ib07-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.7) 0%,transparent 55%); display:flex; flex-direction:column; justify-content:flex-end; padding:1.25rem; gap:.3rem; }
.ib07-badge { position:absolute; top:1rem; left:1rem; padding:.3rem .8rem; background:var(--primary-color); border-radius:99px; font-size:var(--fs-xs,.68rem); font-weight:800; color:var(--text-strong,#111); letter-spacing:.04em; }
.ib07-price { font-size:1.15rem; font-weight:900; color:var(--primary-color); }
.ib07-overlay h3 { font-size:var(--fs-btn,.92rem); font-weight:900; color:#fff; margin:0; }
.ib07-overlay p { font-size:var(--fs-xs,.78rem); color:rgba(255,255,255,.8); margin:0; }
.ib07-shine { position:absolute; inset:0; background:linear-gradient(135deg,rgba(255,255,255,.15) 0%,transparent 60%); pointer-events:none; opacity:0; transition:opacity .3s; }
.ib07-card:hover .ib07-shine { opacity:1; }
.ib08-wrap { position:relative; overflow:hidden; background:#0f172a; border-radius:var(--card-radius); padding:3rem 2rem; display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem; align-items:start; }
.ib08-spotlight { position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle 400px at var(--mx,50%) var(--my,50%),rgba(252,215,3,.12) 0%,transparent 70%); }
.ib08-cell { padding:2rem; border:1px solid rgba(255,255,255,.07); border-radius:var(--card-radius); background:rgba(255,255,255,.04); backdrop-filter:blur(4px); display:flex; flex-direction:column; gap:.75rem; transition:border-color .3s, background .3s; }
.ib08-cell:hover { border-color:rgba(252,215,3,.3); background:rgba(252,215,3,.06); }
.ib08-num { font-size:3rem; font-weight:900; color:rgba(252,215,3,.25); line-height:1; }
.ib08-icon { width:44px; height:44px; }
.ib08-cell h3 { font-size:var(--fs-btn,.92rem); font-weight:800; color:#f1f5f9; margin:0; }
.ib08-cell p { font-size:var(--fs-sm,.83rem); color:var(--text-muted,#94a3b8); line-height:1.7; margin:0; }
.ib08-cell a { display:inline-flex; align-items:center; gap:.4rem; font-size:var(--fs-sm,.78rem); font-weight:700; color:var(--primary-color); text-decoration:none; margin-top:auto; }
.ib08-cell a svg { width:14px; height:14px; stroke:currentColor; fill:none; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
@keyframes marqueeScroll { from { transform:translateX(0); } to { transform:translateX(-50%); } }
.ib09-wrap { overflow:hidden; padding:1.5rem 0; }
.ib09-track { display:flex; gap:1.5rem; width:max-content; animation:marqueeScroll 30s linear infinite; }
.ib09-track2 { display:flex; gap:1.5rem; width:max-content; animation:marqueeScroll 38s linear infinite reverse; margin-top:1.5rem; }
.ib09-track:hover,.ib09-track2:hover { animation-play-state:paused; }
.ib09-card { width:280px; flex-shrink:0; border-radius:var(--card-radius); overflow:hidden; position:relative; aspect-ratio:4/3; }
.ib09-card img { width:100%; height:100%; object-fit:cover; display:block; }
.ib09-card-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.65) 0%,transparent 55%); display:flex; flex-direction:column; justify-content:flex-end; padding:1rem; }
.ib09-card-overlay span { font-size:var(--ib09-fs-xs,var(--fs-xs)); font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--primary-color); display:block; margin-bottom:.2rem; }
.ib09-card-overlay h4 { font-size:var(--ib09-fs-body,var(--fs-body)); font-weight:800; color:#fff; margin:0; }
.ib09-card-overlay p { font-size:var(--ib09-fs-xs,var(--fs-xs)); color:rgba(255,255,255,.75); margin:.2rem 0 0; }
.ib10-wrap { position:relative; overflow:hidden; min-height:580px; display:flex; align-items:center; }
.ib10-bg { position:absolute; inset:-30%; background-size:cover; background-position:center; will-change:background-position; }
.ib10-bg img { width:100%; height:100%; object-fit:cover; display:block; }
.ib10-overlay { position:absolute; inset:0; background:rgba(0,0,0,.5); }
.ib10-content { position:relative; z-index:1; max-width:620px; padding:3rem 4rem; display:flex; flex-direction:column; gap:1.25rem; }
.ib10-tag { display:inline-block; padding:.35rem 1rem; background:var(--primary-color); border-radius:99px; font-size:var(--fs-xs,.7rem); font-weight:800; color:var(--text-strong); width:fit-content; }
.ib10-content h2 { font-size:2.5rem; font-weight:900; color:#fff; margin:0; line-height:1.2; }
.ib10-content p { font-size:var(--fs-body,.95rem); color:rgba(255,255,255,.85); line-height:1.8; margin:0; }
.ib10-btns { display:flex; flex-wrap:wrap; gap:1rem; }
.ib10-btn-p { padding:.75rem 1.75rem; background:var(--primary-color); color:var(--text-strong); border-radius:99px; font-size:var(--fs-sm,.85rem); font-weight:800; text-decoration:none; transition:background .2s; }
.ib10-btn-p:hover { background:var(--card-bg,#fff); }
.ib10-btn-s { padding:.75rem 1.75rem; background:rgba(255,255,255,.15); color:#fff; border:1.5px solid rgba(255,255,255,.4); border-radius:99px; font-size:var(--fs-sm,.85rem); font-weight:800; text-decoration:none; backdrop-filter:blur(4px); transition:background .2s; }
.ib10-btn-s:hover { background:rgba(255,255,255,.25); }
.ib10-stats { position:absolute; bottom:2rem; right:3rem; display:flex; gap:2.5rem; z-index:1; }
.ib10-stat { text-align:center; }
.ib10-stat strong { display:block; font-size:1.8rem; font-weight:900; color:#fff; }
.ib10-stat span { display:block; font-size:var(--fs-xs,.72rem); color:rgba(255,255,255,.7); }
.ib11-grid { display:grid; grid-template-columns:repeat(3,1fr); grid-auto-rows:220px; gap:1rem; }
.ib11-card { position:relative; overflow:hidden; border-radius:var(--card-radius); cursor:pointer; }
.ib11-card:nth-child(1) { grid-column:1; grid-row:1/3; }
.ib11-card:nth-child(2) { grid-column:2; grid-row:1; }
.ib11-card:nth-child(3) { grid-column:3; grid-row:1; }
.ib11-card:nth-child(4) { grid-column:2; grid-row:2; }
.ib11-card:nth-child(5) { grid-column:3; grid-row:2; }
.ib11-min-h { height:100%; overflow:hidden; }
.ib11-card img { width:100%; height:100% !important; object-fit:cover; display:block; }
.ib11-card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.ib11-card:hover img { transform:scale(1.06); }
.ib11-info { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.7) 0%,transparent 55%); display:flex; flex-direction:column; justify-content:flex-end; padding:1.25rem; opacity:0; transition:opacity .3s; }
.ib11-card:hover .ib11-info { opacity:1; }
.ib11-cat { font-size:var(--fs-xs,.68rem); font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--primary-color); }
.ib11-info h3,.ib11-info h4 { font-size:var(--fs-body,.95rem); font-weight:900; color:#fff; margin:.25rem 0; }
.ib11-plus { position:absolute; bottom:1rem; left:1rem; z-index:2; width:32px; height:32px; border-radius:50%; background:var(--primary-color); display:flex; align-items:center; justify-content:center; color:var(--text-strong); }
.ib11-plus svg { width:14px; height:14px; stroke:currentColor; fill:none; stroke-linecap:round; }
.ib12-wrap { position:relative; overflow:hidden; border-radius:var(--card-radius); min-height:520px; display:flex; align-items:flex-end; }
.ib12-wrap > img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.ib12-wrap:hover > img { transform:scale(1.03); }
.ib12-overlay { position:relative; z-index:1; width:100%; background:linear-gradient(to top,rgba(0,0,0,.82) 0%,rgba(0,0,0,.1) 55%,transparent 100%); padding:2.5rem; display:flex; flex-direction:column; gap:.6rem; }
.ib12-tag { width:fit-content; }
.ib12-overlay h2 { font-size:2rem; font-weight:900; color:#fff; margin:0; line-height:1.2; }
.ib12-overlay p { font-size:var(--fs-body,.9rem); color:rgba(255,255,255,.85); line-height:1.7; margin:0; max-width:560px; }
.ib12-play { width:64px; height:64px; border-radius:50%; background:var(--primary-color); border:none; display:flex; align-items:center; justify-content:center; margin-top:1.25rem; cursor:pointer; transition:transform .2s, box-shadow .2s; }
.ib12-play svg { width:24px; height:24px; flex-shrink:0; }
.ib12-play:hover { transform:scale(1.08); box-shadow:0 0 0 8px rgba(252,215,3,.25); }
@media (max-width:768px) {
  /* IB-01: vertical accordion stack on mobile */
  .ib01-wrap { flex-direction:column; height:auto; }
  .ib01-panel { flex:none; min-width:unset; min-height:64px; height:64px; transition:height .45s cubic-bezier(.4,0,.2,1); }
  .ib01-panel.active { flex:none; height:300px; }
  .ib01-label { writing-mode:horizontal-tb; text-orientation:mixed; font-size:var(--ib01-fs-xs,var(--fs-xs)); }
  .ib01-panel.active .ib01-label { display:none; }
  .ib01-overlay { padding:1rem 1.25rem; }
  /* IB-03: single column on mobile */
  .ib03-grid { grid-template-columns:1fr; }
  /* IB-07: single column on mobile */
  .ib07-grid { grid-template-columns:minmax(0,360px); justify-content:center; }
  /* IB-08: single column on mobile */
  .ib08-wrap { grid-template-columns:1fr; padding:1.5rem 1rem; }

  .ib04-grid { grid-template-columns:1fr 1fr; height:auto; }
  .ib04-c1, .ib04-c4 { grid-column:1/3; grid-row:auto; }
  .ib04-c2, .ib04-c3 { grid-column:auto; grid-row:auto; }
  .ib05-row, .ib05-row.reverse { flex-direction:column; }
  .ib10-content { padding:2rem; }
  .ib10-stats { display:none; }
  .ib11-grid { grid-template-columns:1fr 1fr; grid-auto-rows:200px; }
  .ib11-card:nth-child(1) { grid-column:1/3; grid-row:1; }
  .ib11-card:nth-child(2),.ib11-card:nth-child(3),.ib11-card:nth-child(4),.ib11-card:nth-child(5) { grid-column:auto; grid-row:auto; }
  .ib09-card { width:220px; }
}


/* --------------------------------------------------------------
   §31 Process Steps (PS-01 - PS-09)
   NOTE: an entire earlier/unused draft of this family (different
   class shapes: ps01-row, ps02-timeline, ps03-grid/item/num,
   ps04-cards/badge, ps05-wrap/row/col, ps06-path/item/line/circle,
   ps07-cols/col, ps08-num/tag, ps09-split/trigger/t-title) was
   removed here — it was never used by any live template, but it
   coincidentally shared a few selectors (.ps01-step p, .ps04-card
   p, .ps08-card p, .ps09-item.open) with the real templates below,
   which silently leaked stray declarations like font-size past the
   real rule (CSS cascades per-property, not per-block — a property
   only declared in the dead rule still applies even when a later,
   "winning" rule matches the same selector but never mentions that
   property). If you add new PS templates, grep the class name
   against the WHOLE file first, not just this section.
-------------------------------------------------------------- */
.ps-wrap { padding:3.5rem 2rem; max-width:1100px; margin:0 auto; }


/* --------------------------------------------------------------
   §33 Parallax Scrolling (PX-01 - PX-08)
-------------------------------------------------------------- */
.px-wrap { padding:3.5rem 2rem; max-width:1200px; margin:0 auto; }
.px01-section { position:relative; height:420px; overflow:hidden; border-radius:var(--card-radius); }
.px01-bg { position:absolute; inset:-60px 0; background-attachment:fixed; background-size:cover; background-position:center; }
.px01-overlay { position:absolute; inset:0; background:rgba(0,0,0,.48); display:flex; align-items:center; justify-content:center; }
.px01-content { text-align:center; color:#fff; padding:2rem; }
.px01-content h2 { font-size:clamp(1.75rem,4vw,3rem); font-weight:900; margin:0 0 1rem; line-height:1.2; }
.px01-content p { font-size:clamp(.88rem,2vw,1.05rem); color:rgba(255,255,255,.85); max-width:560px; margin:0 auto; line-height:1.75; }
.px02-cards { display:flex; flex-wrap:wrap; gap:1.5rem; }
.px02-card { flex:1; min-width:240px; height:300px; border-radius:var(--card-radius); overflow:hidden; position:relative; }
.px02-card-bg { position:absolute; inset:-40px 0; background-size:cover; background-position:center; transition:transform .1s linear; }
.px02-card-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.72),transparent 55%); }
.px02-card-body { position:absolute; bottom:1.5rem; left:1.5rem; right:1.5rem; color:#fff; }
.px02-card-body h3 { font-size:1rem; font-weight:900; margin:0 0 .35rem; }
.px02-card-body p { font-size:var(--fs-sm,.82rem); color:rgba(255,255,255,.8); line-height:1.65; margin:0; }
.px03-split { display:flex; flex-wrap:wrap; gap:3rem; align-items:center; }
.px03-sticky { flex:1; min-width:280px; position:sticky; top:2rem; }
.px03-sticky-img { width:100%; border-radius:var(--card-radius); display:block; }
.px03-items { flex:1; min-width:280px; display:flex; flex-direction:column; gap:1.5rem; }
.px03-item { padding:1.75rem; background:var(--card-bg,#fff); border-radius:var(--card-radius); box-shadow:var(--card-shadow); display:flex; flex-direction:column; gap:.6rem; }
.px03-item h3 { font-size:var(--fs-body,.95rem); font-weight:800; color:var(--text-strong); margin:0; }
.px03-item p { font-size:var(--fs-sm,.85rem); color:var(--text-muted); line-height:1.75; margin:0; }
.px04-scene { position:relative; height:500px; overflow:hidden; border-radius:var(--card-radius); }
.px04-layer { position:absolute; inset:0; background-size:cover; background-position:center; }
.px04-layer-sky { z-index:1; }
.px04-layer-mid { z-index:2; }
.px04-layer-front { z-index:3; }
.px04-content { position:absolute; inset:0; z-index:4; display:flex; align-items:center; justify-content:center; text-align:center; color:#fff; padding:2rem; }
.px04-content h2 { font-size:clamp(1.75rem,4vw,3.5rem); font-weight:900; text-shadow:0 2px 16px rgba(0,0,0,.4); margin:0 0 1rem; }
.px04-content p { font-size:clamp(.88rem,2vw,1.1rem); color:rgba(255,255,255,.85); max-width:520px; margin:0 auto; }
.px05-strip { position:relative; height:340px; overflow:hidden; }
.px05-bg { position:absolute; inset:-80px 0; background-size:cover; background-position:center; }
.px05-strip-overlay { position:absolute; inset:0; display:flex; align-items:center; }
.px05-stat-row { display:flex; flex-wrap:wrap; justify-content:center; gap:3rem; width:100%; padding:2rem; }
.px05-stat { text-align:center; color:#fff; }
.px05-stat-num { font-size:clamp(2rem,5vw,3.5rem); font-weight:900; display:block; line-height:1; }
.px05-stat-lbl { font-size:var(--fs-sm,.82rem); font-weight:700; opacity:.8; letter-spacing:.06em; text-transform:uppercase; margin-top:.35rem; display:block; }
.px06-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:0; }
.px06-pane { position:relative; height:320px; overflow:hidden; }
.px06-pane-bg { position:absolute; inset:-40px 0; background-size:cover; background-position:center; transition:transform .1s linear; }
.px06-pane-overlay { position:absolute; inset:0; background:rgba(0,0,0,.48); display:flex; align-items:flex-end; }
.px06-pane-body { padding:1.5rem; color:#fff; }
.px06-pane-body h3 { font-size:var(--fs-btn,.92rem); font-weight:900; margin:0 0 .35rem; }
.px06-pane-body p { font-size:var(--fs-sm,.8rem); color:rgba(255,255,255,.8); line-height:1.65; margin:0; }
.px07-fullscreen { position:relative; height:100vh; max-height:680px; overflow:hidden; }
.px07-bg { position:absolute; inset:-80px 0; background-size:cover; background-position:center; }
.px07-overlay { position:absolute; inset:0; background:rgba(0,0,0,.55); display:flex; align-items:center; justify-content:center; }
.px07-content { text-align:center; color:#fff; padding:2rem; max-width:680px; }
.px07-content h2 { font-size:clamp(2rem,5vw,4rem); font-weight:900; margin:0 0 1.25rem; line-height:1.15; }
.px07-content p { font-size:clamp(.9rem,2vw,1.1rem); color:rgba(255,255,255,.85); margin:0 0 2rem; line-height:1.8; }
.px08-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:1.5rem; }
.px08-card { padding:1.75rem; background:var(--card-bg,#fff); border-radius:var(--card-radius); box-shadow:var(--card-shadow); display:flex; flex-direction:column; gap:.65rem; opacity:0; transform:translateY(40px); transition:opacity .6s ease, transform .6s ease; }
.px08-card.visible { opacity:1; transform:translateY(0); }
.px08-card:nth-child(2) { transition-delay:.1s; }
.px08-card:nth-child(3) { transition-delay:.2s; }
.px08-card:nth-child(4) { transition-delay:.3s; }
.px08-icon { width:44px; height:44px; border-radius:.5rem; background:#fefce8; display:flex; align-items:center; justify-content:center; }
.px08-card h3 { font-size:var(--fs-btn,.92rem); font-weight:800; color:var(--text-strong); margin:0; }
.px08-card p { font-size:var(--fs-sm,.84rem); color:var(--text-muted); line-height:1.7; margin:0; flex:1; }
@media (max-width:768px) {
  .px03-split { flex-direction:column; }
  .px03-sticky { position:static; }
}

/* §TI-shimmer — sweep pseudo-element (needs ::after, not expressible in Tailwind) */
.ti-shimmer{position:relative;overflow:hidden}
.ti-shimmer::after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.18) 50%,transparent 60%);transform:translateX(-100%);animation:tiShimmer 2.8s linear infinite;pointer-events:none}
@keyframes tiShimmer{to{transform:translateX(200%)}}

/* §TI-expand — clickable/expandable image affordance for [data-action="vmodal-open"] triggers.
   Positioning/cursor only — the actual blinking icon uses the framework's existing
   .v-zoom-overlay/.v-zoom-btn markup (see "clickable image affordance" block, zoomRing keyframe),
   inserted as real child markup inside the wrapper so it always renders (not hover-only). */
.v-img-expand{position:relative;cursor:zoom-in}
img.v-img-expand{cursor:zoom-in}
@media (prefers-reduced-motion:reduce){.v-zoom-btn::before,.v-zoom-btn::after{animation:none}}

/* §TI Card on/off — when --tiXX-card:0 is set, zero out all card styling via var cascade */
section[style*="--ti01-card:0"],section[style*="--ti01-card: 0"]{--ti01-img-r:0;--ti01-img-sh:none;--ti01-img-bw:0px}
section[style*="--ti02-card:0"],section[style*="--ti02-card: 0"]{--ti02-img-r:0;--ti02-img-sh:none;--ti02-img-bw:0px}
section[style*="--ti03-card:0"],section[style*="--ti03-card: 0"]{--ti03-img-r:0;--ti03-img-sh:none;--ti03-img-bw:0px}
section[style*="--ti04-card:0"],section[style*="--ti04-card: 0"]{--ti04-img-r:0;--ti04-img-sh:none;--ti04-img-bw:0px}
section[style*="--ti05-card:0"],section[style*="--ti05-card: 0"]{--ti05-img-r:0;--ti05-img-sh:none;--ti05-img-bw:0px}
section[style*="--ti06-card:0"],section[style*="--ti06-card: 0"]{--ti06-img-r:0;--ti06-img-sh:none;--ti06-img-bw:0px}
section[style*="--ti07-card:0"],section[style*="--ti07-card: 0"]{--ti07-img-r:0;--ti07-img-sh:none;--ti07-img-bw:0px}
section[style*="--ti08-card:0"],section[style*="--ti08-card: 0"]{--ti08-img-r:0;--ti08-img-sh:none;--ti08-img-bw:0px}
section[style*="--ti09-card:0"],section[style*="--ti09-card: 0"]{--ti09-img-r:0;--ti09-img-sh:none;--ti09-img-bw:0px}
section[style*="--ti10-card:0"],section[style*="--ti10-card: 0"]{--ti10-img-r:0;--ti10-img-sh:none;--ti10-img-bw:0px}
section[style*="--ti11-card:0"],section[style*="--ti11-card: 0"]{--ti11-img-r:0;--ti11-img-sh:none;--ti11-img-bw:0px}
section[style*="--ti12-card:0"],section[style*="--ti12-card: 0"]{--ti12-img-r:0;--ti12-img-sh:none;--ti12-img-bw:0px}
section[style*="--ti13-card:0"],section[style*="--ti13-card: 0"]{--ti13-img-r:0;--ti13-img-sh:none;--ti13-img-bw:0px}
section[style*="--ti14-card:0"],section[style*="--ti14-card: 0"]{--ti14-img-r:0;--ti14-img-sh:none;--ti14-img-bw:0px}
section[style*="--ti15-card:0"],section[style*="--ti15-card: 0"]{--ti15-img-r:0;--ti15-img-sh:none;--ti15-img-bw:0px}
section[style*="--ti16-card:0"],section[style*="--ti16-card: 0"]{--ti16-img-r:0;--ti16-img-sh:none;--ti16-img-bw:0px}

/* §TI Clickable image on/off — when --tiXX-clickable:0 is set, disable the vmodal-open trigger
   entirely via pointer-events AND hide the .v-zoom-overlay badge (otherwise the pulsing icon
   would still render even though clicking no longer does anything) */
section[style*="--ti01-clickable:0"] [data-action="vmodal-open"],section[style*="--ti01-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti02-clickable:0"] [data-action="vmodal-open"],section[style*="--ti02-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti03-clickable:0"] [data-action="vmodal-open"],section[style*="--ti03-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti04-clickable:0"] [data-action="vmodal-open"],section[style*="--ti04-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti05-clickable:0"] [data-action="vmodal-open"],section[style*="--ti05-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti06-clickable:0"] [data-action="vmodal-open"],section[style*="--ti06-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti07-clickable:0"] [data-action="vmodal-open"],section[style*="--ti07-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti08-clickable:0"] [data-action="vmodal-open"],section[style*="--ti08-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti09-clickable:0"] [data-action="vmodal-open"],section[style*="--ti09-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti10-clickable:0"] [data-action="vmodal-open"],section[style*="--ti10-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti11-clickable:0"] [data-action="vmodal-open"],section[style*="--ti11-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti12-clickable:0"] [data-action="vmodal-open"],section[style*="--ti12-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti13-clickable:0"] [data-action="vmodal-open"],section[style*="--ti13-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti14-clickable:0"] [data-action="vmodal-open"],section[style*="--ti14-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti15-clickable:0"] [data-action="vmodal-open"],section[style*="--ti15-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti16-clickable:0"] [data-action="vmodal-open"],section[style*="--ti16-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--im01-clickable:0"] [data-action="vmodal-open"],section[style*="--im01-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ti01-clickable:0"] .v-zoom-overlay,section[style*="--ti01-clickable: 0"] .v-zoom-overlay,
section[style*="--ti02-clickable:0"] .v-zoom-overlay,section[style*="--ti02-clickable: 0"] .v-zoom-overlay,
section[style*="--ti03-clickable:0"] .v-zoom-overlay,section[style*="--ti03-clickable: 0"] .v-zoom-overlay,
section[style*="--ti04-clickable:0"] .v-zoom-overlay,section[style*="--ti04-clickable: 0"] .v-zoom-overlay,
section[style*="--ti05-clickable:0"] .v-zoom-overlay,section[style*="--ti05-clickable: 0"] .v-zoom-overlay,
section[style*="--ti06-clickable:0"] .v-zoom-overlay,section[style*="--ti06-clickable: 0"] .v-zoom-overlay,
section[style*="--ti07-clickable:0"] .v-zoom-overlay,section[style*="--ti07-clickable: 0"] .v-zoom-overlay,
section[style*="--ti08-clickable:0"] .v-zoom-overlay,section[style*="--ti08-clickable: 0"] .v-zoom-overlay,
section[style*="--ti09-clickable:0"] .v-zoom-overlay,section[style*="--ti09-clickable: 0"] .v-zoom-overlay,
section[style*="--ti10-clickable:0"] .v-zoom-overlay,section[style*="--ti10-clickable: 0"] .v-zoom-overlay,
section[style*="--ti11-clickable:0"] .v-zoom-overlay,section[style*="--ti11-clickable: 0"] .v-zoom-overlay,
section[style*="--ti12-clickable:0"] .v-zoom-overlay,section[style*="--ti12-clickable: 0"] .v-zoom-overlay,
section[style*="--ti13-clickable:0"] .v-zoom-overlay,section[style*="--ti13-clickable: 0"] .v-zoom-overlay,
section[style*="--ti14-clickable:0"] .v-zoom-overlay,section[style*="--ti14-clickable: 0"] .v-zoom-overlay,
section[style*="--ti15-clickable:0"] .v-zoom-overlay,section[style*="--ti15-clickable: 0"] .v-zoom-overlay,
section[style*="--ti16-clickable:0"] .v-zoom-overlay,section[style*="--ti16-clickable: 0"] .v-zoom-overlay{display:none}
section[style*="--im01-clickable:0"] .v-zoom-overlay,section[style*="--im01-clickable: 0"] .v-zoom-overlay{display:none}

/* §TI Column Split + Gap (all 16 TextImage templates) — admin-configurable
   left/right column ratio via CSS Grid `fr` units (proportional to the row
   itself, unlike vw/em which would be relative to the viewport or font-size
   instead — see feedback discussion, vw specifically would drift depending
   on how much of the viewport the section's own max-width consumes). A
   single --tiNN-gap value covers both axes: it's the column-gap in the
   2-column desktop layout below, and automatically becomes the row-gap the
   moment grid-cols-1 (Tailwind, unchanged) takes over below 1024px — no
   separate horizontal/vertical fields or extra media query needed for the
   gap half of this at all. The two originally asymmetric-by-span templates
   (ti02 Editorial 3:2, ti07 Magazine Portrait 2:3) keep their original
   visual ratio as this field's default, now admin-adjustable like every
   other template instead of being permanently fixed. */
.ti01-cols{gap:var(--ti01-gap,2.5rem)}
@media(min-width:1024px){.ti01-cols{grid-template-columns:var(--ti01-split,1fr 1fr)}}
/* Image position: swap which column the image sits in on desktop (grid item order) */
@media(min-width:1024px){
  section[style*="--ti01-img-side:left"] .ti01-cols>*:first-child,section[style*="--ti01-img-side: left"] .ti01-cols>*:first-child{order:2}
  section[style*="--ti01-img-side:left"] .ti01-cols>*:last-child,section[style*="--ti01-img-side: left"] .ti01-cols>*:last-child{order:1}
}
/* TextImage family — sections saved BEFORE the .tiNN-cols / --sec-buf hooks existed.
   (1) Their wrapper padding reads the retired --sec-pad-v / --sec-pad-h vars (always falling back to 4rem), so the global
       buffers and the Buffer Top/Bottom/Left/Right fields did nothing. Any element still carrying that expression now uses
       the current padding expression.
   (2) Their grid is plain "lg:grid-cols-2 gap-x-14 gap-y-10" without the .tiNN-cols class, so Column Split / Gap had no effect.
   Same rules as the .tiNN-cols ones below, aimed at the older markup (matched by group id; :not(.tiNN-cols) keeps current
   sections out of it). Image position (Feature Classic) is handled too. */
[style*="--sec-pad-v"]{padding:var(--sec-buf-t,var(--gbuf-v,4rem)) var(--sec-buf-r,var(--gbuf-h,0)) var(--sec-buf-b,var(--gbuf-v,4rem)) var(--sec-buf-l,var(--gbuf-h,0)) !important}
@media(min-width:1024px){
  section[data-group-id^="ti-tl-01-"] > div > .grid.lg\:grid-cols-2:not(.ti01-cols){grid-template-columns:var(--ti01-split,1fr 1fr);column-gap:var(--ti01-gap,2.5rem);row-gap:var(--ti01-gap,2.5rem)}
  section[data-group-id^="ti-tl-02-"] > div > .grid.lg\:grid-cols-2:not(.ti02-cols){grid-template-columns:var(--ti02-split,3fr 2fr);column-gap:var(--ti02-gap,2.5rem);row-gap:var(--ti02-gap,2.5rem)}
  section[data-group-id^="ti-tl-03-"] > div > .grid.lg\:grid-cols-2:not(.ti03-cols){grid-template-columns:var(--ti03-split,1fr 1fr);column-gap:var(--ti03-gap,2.5rem);row-gap:var(--ti03-gap,2.5rem)}
  section[data-group-id^="ti-tl-04-"] > div > .grid.lg\:grid-cols-2:not(.ti04-cols){grid-template-columns:var(--ti04-split,1fr 1fr);column-gap:var(--ti04-gap,2.5rem);row-gap:var(--ti04-gap,2.5rem)}
  section[data-group-id^="ti-tl-05-"] > div > .grid.lg\:grid-cols-2:not(.ti05-cols){grid-template-columns:var(--ti05-split,1fr 1fr);column-gap:var(--ti05-gap,2.5rem);row-gap:var(--ti05-gap,2.5rem)}
  section[data-group-id^="ti-il-01-"] > div > .grid.lg\:grid-cols-2:not(.ti06-cols){grid-template-columns:var(--ti06-split,1fr 1fr);column-gap:var(--ti06-gap,2.5rem);row-gap:var(--ti06-gap,2.5rem)}
  section[data-group-id^="ti-il-02-"] > div > .grid.lg\:grid-cols-2:not(.ti07-cols){grid-template-columns:var(--ti07-split,2fr 3fr);column-gap:var(--ti07-gap,2.5rem);row-gap:var(--ti07-gap,2.5rem)}
  section[data-group-id^="ti-il-03-"] > div > .grid.lg\:grid-cols-2:not(.ti08-cols){grid-template-columns:var(--ti08-split,1fr 1fr);column-gap:var(--ti08-gap,2.5rem);row-gap:var(--ti08-gap,2.5rem)}
  section[data-group-id^="ti-il-04-"] > div > .grid.lg\:grid-cols-2:not(.ti09-cols){grid-template-columns:var(--ti09-split,1fr 1fr);column-gap:var(--ti09-gap,2.5rem);row-gap:var(--ti09-gap,2.5rem)}
  section[data-group-id^="ti-il-05-"] > div > .grid.lg\:grid-cols-2:not(.ti10-cols){grid-template-columns:var(--ti10-split,1fr 1fr);column-gap:var(--ti10-gap,2.5rem);row-gap:var(--ti10-gap,2.5rem)}
  section[data-group-id^="ti-tl-06-"] > div > .grid.lg\:grid-cols-2:not(.ti11-cols){grid-template-columns:var(--ti11-split,1fr 1fr);column-gap:var(--ti11-gap,2.5rem);row-gap:var(--ti11-gap,2.5rem)}
  section[data-group-id^="ti-il-06-"] > div > .grid.lg\:grid-cols-2:not(.ti12-cols){grid-template-columns:var(--ti12-split,1fr 1fr);column-gap:var(--ti12-gap,2.5rem);row-gap:var(--ti12-gap,2.5rem)}
  section[data-group-id^="ti-tl-07-"] > div > .grid.lg\:grid-cols-2:not(.ti13-cols){grid-template-columns:var(--ti13-split,1fr 1fr);column-gap:var(--ti13-gap,2.5rem);row-gap:var(--ti13-gap,2.5rem)}
  section[data-group-id^="ti-tl-08-"] > div > .grid.lg\:grid-cols-2:not(.ti14-cols){grid-template-columns:var(--ti14-split,1fr 1fr);column-gap:var(--ti14-gap,2.5rem);row-gap:var(--ti14-gap,2.5rem)}
  section[data-group-id^="ti-il-07-"] > div > .grid.lg\:grid-cols-2:not(.ti15-cols){grid-template-columns:var(--ti15-split,1fr 1fr);column-gap:var(--ti15-gap,2.5rem);row-gap:var(--ti15-gap,2.5rem)}
  section[data-group-id^="ti-tl-09-"] > div > .grid.lg\:grid-cols-2:not(.ti16-cols){grid-template-columns:var(--ti16-split,1fr 1fr);column-gap:var(--ti16-gap,2.5rem);row-gap:var(--ti16-gap,2.5rem)}
  section[data-group-id^="ti-tl-01-"][style*="--ti01-img-side:left"] > div > .grid.lg\:grid-cols-2:not(.ti01-cols) > *:first-child,section[data-group-id^="ti-tl-01-"][style*="--ti01-img-side: left"] > div > .grid.lg\:grid-cols-2:not(.ti01-cols) > *:first-child{order:2}
  section[data-group-id^="ti-tl-01-"][style*="--ti01-img-side:left"] > div > .grid.lg\:grid-cols-2:not(.ti01-cols) > *:last-child,section[data-group-id^="ti-tl-01-"][style*="--ti01-img-side: left"] > div > .grid.lg\:grid-cols-2:not(.ti01-cols) > *:last-child{order:1}
}
/* Gallery IG-07 (Card with Title + Full Image Modal) saved BEFORE it used the global buffers: its section carries a fixed
   inline padding (clamp(3rem,6vw,4.5rem) 0), so the Buffer Top/Bottom/Left/Right settings and Settings > Spacing did
   nothing on those pages. Same padding expression the current template ships, applied by class so old pages follow
   the global (and per-section) buffers too. */
section[data-group-id^="ig-07"]{padding:var(--sec-buf-t,var(--gbuf-v,4rem)) var(--sec-buf-r,var(--gbuf-h,0)) var(--sec-buf-b,var(--gbuf-v,4rem)) var(--sec-buf-l,var(--gbuf-h,0)) !important}
.ti02-cols{gap:var(--ti02-gap,2.5rem)}
@media(min-width:1024px){.ti02-cols{grid-template-columns:var(--ti02-split,3fr 2fr)}}
.ti03-cols{gap:var(--ti03-gap,2.5rem)}
@media(min-width:1024px){.ti03-cols{grid-template-columns:var(--ti03-split,1fr 1fr)}}
.ti04-cols{gap:var(--ti04-gap,2.5rem)}
@media(min-width:1024px){.ti04-cols{grid-template-columns:var(--ti04-split,1fr 1fr)}}
.ti05-cols{gap:var(--ti05-gap,2.5rem)}
@media(min-width:1024px){.ti05-cols{grid-template-columns:var(--ti05-split,1fr 1fr)}}
.ti06-cols{gap:var(--ti06-gap,2.5rem)}
@media(min-width:1024px){.ti06-cols{grid-template-columns:var(--ti06-split,1fr 1fr)}}
.ti07-cols{gap:var(--ti07-gap,2.5rem)}
@media(min-width:1024px){.ti07-cols{grid-template-columns:var(--ti07-split,2fr 3fr)}}
.ti08-cols{gap:var(--ti08-gap,2.5rem)}
@media(min-width:1024px){.ti08-cols{grid-template-columns:var(--ti08-split,1fr 1fr)}}
.ti09-cols{gap:var(--ti09-gap,2.5rem)}
@media(min-width:1024px){.ti09-cols{grid-template-columns:var(--ti09-split,1fr 1fr)}}
.ti10-cols{gap:var(--ti10-gap,2.5rem)}
@media(min-width:1024px){.ti10-cols{grid-template-columns:var(--ti10-split,1fr 1fr)}}
.ti11-cols{gap:var(--ti11-gap,2.5rem)}
@media(min-width:1024px){.ti11-cols{grid-template-columns:var(--ti11-split,1fr 1fr)}}
.ti12-cols{gap:var(--ti12-gap,2.5rem)}
@media(min-width:1024px){.ti12-cols{grid-template-columns:var(--ti12-split,1fr 1fr)}}
.ti13-cols{gap:var(--ti13-gap,2.5rem)}
@media(min-width:1024px){.ti13-cols{grid-template-columns:var(--ti13-split,1fr 1fr)}}
.ti14-cols{gap:var(--ti14-gap,2.5rem)}
@media(min-width:1024px){.ti14-cols{grid-template-columns:var(--ti14-split,1fr 1fr)}}
.ti15-cols{gap:var(--ti15-gap,2.5rem)}
@media(min-width:1024px){.ti15-cols{grid-template-columns:var(--ti15-split,1fr 1fr)}}
.ti16-cols{gap:var(--ti16-gap,2.5rem)}
@media(min-width:1024px){.ti16-cols{grid-template-columns:var(--ti16-split,1fr 1fr)}}

/* §IG Clickable image on/off (Gallery ig-01..06) — same convention as §TI above:
   when --igNN-clickable:0 is set, disable the vmodal-open trigger via pointer-events AND
   hide the .v-zoom-overlay badge. Default stays clickable — this only fires when explicitly
   set to 0. See feedback_clickable_image_thumbrule memory. */
section[style*="--ig01-clickable:0"] [data-action="vmodal-open"],section[style*="--ig01-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ig02-clickable:0"] [data-action="vmodal-open"],section[style*="--ig02-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ig03-clickable:0"] [data-action="vmodal-open"],section[style*="--ig03-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ig04-clickable:0"] [data-action="vmodal-open"],section[style*="--ig04-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ig05-clickable:0"] [data-action="vmodal-open"],section[style*="--ig05-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ig06-clickable:0"] [data-action="vmodal-open"],section[style*="--ig06-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ig01-clickable:0"] .v-zoom-overlay,section[style*="--ig01-clickable: 0"] .v-zoom-overlay,
section[style*="--ig02-clickable:0"] .v-zoom-overlay,section[style*="--ig02-clickable: 0"] .v-zoom-overlay,
section[style*="--ig03-clickable:0"] .v-zoom-overlay,section[style*="--ig03-clickable: 0"] .v-zoom-overlay,
section[style*="--ig04-clickable:0"] .v-zoom-overlay,section[style*="--ig04-clickable: 0"] .v-zoom-overlay,
section[style*="--ig05-clickable:0"] .v-zoom-overlay,section[style*="--ig05-clickable: 0"] .v-zoom-overlay,
section[style*="--ig06-clickable:0"] .v-zoom-overlay,section[style*="--ig06-clickable: 0"] .v-zoom-overlay{display:none}

/* §IG-11 Clickable image on/off (Gallery — Full Image Slider) — same convention as §IG above. */
section[style*="--ig11-clickable:0"] [data-action="vmodal-open"],section[style*="--ig11-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ig11-clickable:0"] .v-zoom-overlay,section[style*="--ig11-clickable: 0"] .v-zoom-overlay{display:none}

/* §IG-07 Clickable image on/off (Gallery — Card with Title + Full Image Modal) — same convention as above. */
section[style*="--ig07-clickable:0"] [data-action="vmodal-open"],section[style*="--ig07-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ig07-clickable:0"] .v-zoom-overlay_right_corner,section[style*="--ig07-clickable: 0"] .v-zoom-overlay_right_corner{display:none}

/* §TM-04/TM-06 Clickable card on/off (Team bio modal) — same convention as above. */
section[style*="--tm04-clickable:0"] [data-action="vmodal-open"],section[style*="--tm04-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--tm06-clickable:0"] [data-action="vmodal-open"],section[style*="--tm06-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}

/* §TS-08 Clickable tile on/off (Testimonials full-quote modal) — same convention as above. */
section[style*="--ts08-clickable:0"] [data-action="vmodal-open"],section[style*="--ts08-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}

/* §COL Clickable image on/off (COL-01/01b/09, CO-12/13) — same convention as §TI above:
   when --xNN-clickable:0 is set, disable the vmodal-open trigger via pointer-events AND
   hide the .v-zoom-overlay badge. MUST ship with every new clickable image, no exceptions
   — see feedback_clickable_image_thumbrule memory. */
section[style*="--col01-clickable:0"] [data-action="vmodal-open"],section[style*="--col01-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--col01b-clickable:0"] [data-action="vmodal-open"],section[style*="--col01b-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--col09-clickable:0"] [data-action="vmodal-open"],section[style*="--col09-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--co12-clickable:0"] [data-action="vmodal-open"],section[style*="--co12-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--co13-clickable:0"] [data-action="vmodal-open"],section[style*="--co13-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--col01-clickable:0"] .v-zoom-overlay,section[style*="--col01-clickable: 0"] .v-zoom-overlay,
section[style*="--col01b-clickable:0"] .v-zoom-overlay,section[style*="--col01b-clickable: 0"] .v-zoom-overlay,
section[style*="--col09-clickable:0"] .v-zoom-overlay,section[style*="--col09-clickable: 0"] .v-zoom-overlay,
section[style*="--co12-clickable:0"] .v-zoom-overlay,section[style*="--co12-clickable: 0"] .v-zoom-overlay,
section[style*="--co13-clickable:0"] .v-zoom-overlay,section[style*="--co13-clickable: 0"] .v-zoom-overlay{display:none}

/* §CS Clickable image on/off (CardScroller CS-01/02/03/06/07/08/10 — CS-05's icons and
   CS-09's flip-card photo are intentionally excluded, see feedback_clickable_image_thumbrule) */
section[style*="--cs01-clickable:0"] [data-action="vmodal-open"],section[style*="--cs01-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--cs02-clickable:0"] [data-action="vmodal-open"],section[style*="--cs02-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--cs03-clickable:0"] [data-action="vmodal-open"],section[style*="--cs03-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--cs06-clickable:0"] [data-action="vmodal-open"],section[style*="--cs06-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--cs07-clickable:0"] [data-action="vmodal-open"],section[style*="--cs07-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--cs08-clickable:0"] [data-action="vmodal-open"],section[style*="--cs08-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--cs10-clickable:0"] [data-action="vmodal-open"],section[style*="--cs10-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--cs01-clickable:0"] .v-zoom-overlay,section[style*="--cs01-clickable: 0"] .v-zoom-overlay,
section[style*="--cs02-clickable:0"] .v-zoom-overlay,section[style*="--cs02-clickable: 0"] .v-zoom-overlay,
section[style*="--cs06-clickable:0"] .v-zoom-overlay,section[style*="--cs06-clickable: 0"] .v-zoom-overlay,
section[style*="--cs07-clickable:0"] .v-zoom-overlay,section[style*="--cs07-clickable: 0"] .v-zoom-overlay,
section[style*="--cs08-clickable:0"] .v-zoom-overlay,section[style*="--cs08-clickable: 0"] .v-zoom-overlay,
section[style*="--cs10-clickable:0"] .v-zoom-overlay,section[style*="--cs10-clickable: 0"] .v-zoom-overlay{display:none}
section[style*="--cs03-clickable:0"] .v-zoom-overlay_right_corner,section[style*="--cs03-clickable: 0"] .v-zoom-overlay_right_corner{display:none}

/* §TI Responsive — Text+Image template mobile */
@media (max-width:1023px) {
  /* Clip absolute floating badge elements (overflow from negative positioning) */
  .ti-grid > div.relative { overflow:hidden; }
  .il-img-col { overflow:hidden; }
}
@media (max-width:768px) {
  /* TL-02: giant drifting bg number has margin-bottom:-3rem which pushes content up — reduce on mobile */
  .v-drift-l { margin-bottom:-1rem !important; font-size:clamp(4rem,18vw,8rem) !important; }
  /* TL-04 portrait: reduce circular portrait size so ring-orbit decorations stay contained */
  .ring-orbit { width:200px !important; height:200px !important; top:50%; left:50%; transform:translate(-50%,-50%) !important; animation:none !important; }
  .ring-orbit-2 { width:240px !important; height:240px !important; }
}
@media (max-width:480px) {
  /* Reduce ring-orbit further on tiny screens */
  .ring-orbit { width:160px !important; height:160px !important; }
  .ring-orbit-2 { width:195px !important; height:195px !important; }
}

/* ── §25 Accordion — AC-01 through AC-07 (config-driven via --acNN-* vars) ── */
/* Smooth expand/collapse — base collapsed state + transition only.
   The actual open-state max-height is set inline by initAccordion() in
   theme.js, measured from body.scrollHeight, so the animation is pixel-
   accurate regardless of answer length (a fixed CSS cap like 800px wastes
   most of the transition on invisible motion once real height is reached,
   which reads as a snap/bounce rather than a smooth expand/collapse). This
   CSS-only max-height:0 is just the pre-JS/no-JS fallback for closed items. */
[data-ac-item] [data-ac-body] { max-height:0; overflow:hidden; transition:max-height .32s cubic-bezier(.4,0,.2,1); }

/* Icon indicator — collapsed (.ac-ic-c) / expanded (.ac-ic-e) glyph swap.
   Default = chevron; per-kind overrides matched by CSS var SUBSTRING on the
   section's inline style (e.g. --ac01-ic-c:plus). Rules are written once —
   the substring selector matches any --acNN-ic-c/-ic-e var regardless of
   which numbered template set it, same technique as the TextImage card
   on/off toggle. */
.ac-ic-wrap{position:relative;width:20px;height:20px;flex-shrink:0;display:inline-block}
.ac-ic-c,.ac-ic-e{position:absolute;inset:0;width:100%;height:100%;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:70% 70%;mask-size:70% 70%;transition:opacity .2s ease;opacity:1;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E")}
.ac-ic-e{opacity:0;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}
[data-ac-item].ac-open .ac-ic-c{opacity:0}
[data-ac-item].ac-open .ac-ic-e{opacity:1}
[style*="-ic-c:plus"] .ac-ic-c,[style*="-ic-c: plus"] .ac-ic-c{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E")}
[style*="-ic-c:arrow"] .ac-ic-c,[style*="-ic-c: arrow"] .ac-ic-c{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E")}
[style*="-ic-c:caret"] .ac-ic-c,[style*="-ic-c: caret"] .ac-ic-c{-webkit-mask-size:60% 60%;mask-size:60% 60%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black' stroke='none'%3E%3Cpath d='M8 5l8 7-8 7z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black' stroke='none'%3E%3Cpath d='M8 5l8 7-8 7z'/%3E%3C/svg%3E")}
[style*="-ic-c:none"] .ac-ic-c,[style*="-ic-c: none"] .ac-ic-c{display:none}
[style*="-ic-e:minus"] .ac-ic-e,[style*="-ic-e: minus"] .ac-ic-e{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E")}
[style*="-ic-e:cross"] .ac-ic-e,[style*="-ic-e: cross"] .ac-ic-e{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E")}
[style*="-ic-e:arrow"] .ac-ic-e,[style*="-ic-e: arrow"] .ac-ic-e{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M6 13l6 6 6-6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M6 13l6 6 6-6'/%3E%3C/svg%3E")}
[style*="-ic-e:caret"] .ac-ic-e,[style*="-ic-e: caret"] .ac-ic-e{-webkit-mask-size:60% 60%;mask-size:60% 60%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black' stroke='none'%3E%3Cpath d='M5 8l7 8 7-8z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black' stroke='none'%3E%3Cpath d='M5 8l7 8 7-8z'/%3E%3C/svg%3E")}
[style*="-ic-e:none"] .ac-ic-e,[style*="-ic-e: none"] .ac-ic-e{display:none}

/* Per-item topic icon (data-pageedit="svg") — small subtle glyph before the question text */
.ac-topic-ico{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.15em;height:1.15em;opacity:.8}
.ac-topic-ico svg{width:100%;height:100%}

/* AC-01 — Image + Accordion */
.ac01-img-wrap { position:relative; overflow:hidden; }
.ac01-stat { position:absolute; bottom:1.5rem; right:1.5rem; background:var(--primary-color); padding:1rem 1.25rem; border-radius:var(--card-radius); text-align:center; }
.ac01-stat-num { font-size:2rem; font-weight:900; color:var(--text-strong); line-height:1; }
.ac01-stat-lbl { font-size:var(--ac01-fs-xs,var(--fs-xs)); font-weight:700; color:var(--text-strong); margin-top:.25rem; line-height:1.4; }
.ac01-eyebrow { font-size:var(--eyebrow-font-size,var(--fs-xs,.68rem)); font-weight:800; letter-spacing:var(--eyebrow-letter-spacing,.14em); text-transform:var(--eyebrow-text-transform,uppercase); color:var(--text-muted); margin-bottom:.5rem; }
.ac01-item { border-bottom:1px solid var(--card-border); padding:0 1rem; transition:background .2s; }
.ac01-item.ac-open{ background:var(--ac01-active-bg,transparent); }
.ac01-btn { width:100%; display:flex; align-items:center; gap:.65rem; padding:1rem 0; background:none; border:none; cursor:pointer; text-align:left; font-size:var(--ac01-fs-body,var(--fs-body)); font-weight:600; color:var(--ac01-header-color,var(--text-strong)); }
.ac01-btn > .ac-q{ flex:1; }
.ac01-item.ac-open .ac01-btn{ color:var(--ac01-active-text,var(--ac01-header-color,var(--text-strong))); }
.ac01-body-inner { text-align:left; font-size:var(--ac01-fs-body,var(--fs-body)); color:var(--ac01-body-color,var(--text-color)); line-height:1.75; padding:.25rem 0 1rem 1.85rem; }

/* AC-02 — Left Heading + Right FAQ */
.ac02-item { border-bottom:1px solid var(--card-border); padding:0 1rem; transition:background .2s; }
.ac02-item.ac-open{ background:var(--ac02-active-bg,transparent); }
.ac02-btn { width:100%; display:flex; align-items:center; gap:.65rem; padding:1.1rem 0; background:none; border:none; cursor:pointer; text-align:left; font-size:var(--ac02-fs-body,var(--fs-body)); font-weight:600; color:var(--ac02-header-color,var(--text-strong)); }
.ac02-btn > .ac-q{ flex:1; }
.ac02-item.ac-open .ac02-btn{ color:var(--ac02-active-text,var(--ac02-header-color,var(--text-strong))); }
.ac02-body-inner { text-align:left; font-size:var(--ac02-fs-body,var(--fs-body)); color:var(--ac02-body-color,var(--text-color)); line-height:1.75; padding:.25rem 0 1rem 1.85rem; }

/* AC-03 — Dark Hero + Accordion */
.ac03-eyebrow { font-size:var(--eyebrow-font-size,var(--fs-xs,.65rem)); font-weight:800; letter-spacing:var(--eyebrow-letter-spacing,.16em); text-transform:var(--eyebrow-text-transform,uppercase); color:var(--primary-color); margin-bottom:.75rem; }
.ac03-item { border-bottom:1px solid rgba(255,255,255,.15); transition:background .2s; }
.ac03-item.ac-open{ background:var(--ac03-active-bg,transparent); }
.ac03-btn { width:100%; display:flex; align-items:center; gap:.65rem; padding:1rem 0; background:none; border:none; cursor:pointer; text-align:left; font-size:var(--ac03-fs-body,var(--fs-body)); font-weight:600; color:var(--ac03-header-color,rgba(255,255,255,.75)); }
.ac03-btn > .ac-q{ flex:1; }
.ac03-item.ac-open .ac03-btn { color:var(--ac03-active-text,#fff); }
.ac03-body-inner { text-align:left; font-size:var(--ac03-fs-body,var(--fs-body)); color:var(--ac03-body-color,rgba(255,255,255,.7)); line-height:1.8; padding:.25rem 0 1rem 1.85rem; }
.ac03-cta { display:inline-flex; align-items:center; padding:.65rem 1.75rem; background:var(--primary-color); color:var(--text-strong); border-radius:99px; font-size:var(--ac03-fs-sm,var(--fs-sm)); font-weight:800; text-decoration:none; transition:opacity .2s; }
.ac03-cta:hover { opacity:.85; }

/* AC-04 — Numbered Accordion */
/* Numbering is a CSS counter, not static per-item text — a duplicated item
   (via the admin's "add item" control) clones the FIRST item's markup, and
   a hardcoded "01"/"ac-open" baked into that markup would get copied onto
   every new item verbatim (duplication has no idea these should differ per
   item), producing every item reading "01" and every item starting open.
   counter-reset/-increment recompute the number from each item's actual
   position, so it's correct no matter how many items exist or which one was
   duplicated from. ac04-num's own text content is now decorative filler
   only (kept for no-JS/no-CSS-counter-support fallback) — visually replaced
   by the ::before counter. */
[data-ac-group] { counter-reset: ac04ctr; }
.ac04-item { counter-increment: ac04ctr; display:flex; align-items:flex-start; gap:1.5rem; padding:1.25rem 1rem; border-bottom:1px solid var(--card-border); transition:background .2s; }
.ac04-item.ac-open{ background:var(--ac04-active-bg,transparent); }
.ac04-num { font-size:0; line-height:1; flex-shrink:0; width:2.5rem; text-align:right; transition:color .2s; }
.ac04-num::before { content:counter(ac04ctr,decimal-leading-zero); font-size:2rem; font-weight:900; color:var(--card-border); }
.ac04-item.ac-open .ac04-num::before { color:var(--primary-color); }
.ac04-content { flex:1; }
.ac04-btn { width:100%; display:flex; align-items:center; gap:.65rem; background:none; border:none; cursor:pointer; text-align:left; font-size:var(--ac04-fs-body,var(--fs-body)); font-weight:700; color:var(--ac04-header-color,var(--text-strong)); padding:0; }
.ac04-btn > .ac-q{ flex:1; }
.ac04-item.ac-open .ac04-btn{ color:var(--ac04-active-text,var(--ac04-header-color,var(--text-strong))); }
.ac04-body-inner { text-align:left; font-size:var(--ac04-fs-body,var(--fs-body)); color:var(--ac04-body-color,var(--text-color)); line-height:1.75; padding:.75rem 0 .25rem 1.85rem; }

/* AC-05 — Colored Active Row */
.ac05-item { border-radius:8px; transition:background .2s; }
.ac05-item.ac-open { background:var(--ac05-active-bg,var(--primary-color)); }
.ac05-btn { width:100%; display:flex; align-items:center; gap:.65rem; padding:.9rem 1rem; background:none; border:none; cursor:pointer; text-align:left; font-size:var(--ac05-fs-body,var(--fs-body)); font-weight:600; color:var(--ac05-header-color,var(--text-strong)); border-bottom:1px solid var(--card-border); }
.ac05-btn > .ac-q{ flex:1; }
.ac05-item.ac-open .ac05-btn { border-bottom-color:rgba(0,0,0,.08); color:var(--ac05-active-text,var(--ac05-header-color,var(--text-strong))); }
.ac05-body-inner { text-align:left; font-size:var(--ac05-fs-body,var(--fs-body)); color:var(--ac05-body-color,var(--text-color)); line-height:1.75; padding:.5rem 1rem 1rem 2.7rem; }

/* AC-06 — Icon Accordion */
.ac06-item { background:var(--ac06-inner-bg,#ffffff); border:var(--ac06-border-w,1px) solid var(--ac06-border-c,var(--card-border)); border-radius:var(--ac06-radius,var(--card-radius)); margin-bottom:.75rem; overflow:hidden; transition:box-shadow .2s,background .2s; }
.ac06-item.ac-open { box-shadow:var(--ac06-shadow,var(--card-shadow)); background:var(--ac06-active-bg,transparent); }
.ac06-btn { width:100%; display:flex; align-items:center; gap:1rem; padding:1rem 1.25rem; background:none; border:none; cursor:pointer; text-align:left; }
.ac06-icon-box { flex-shrink:0; width:40px; height:40px; border-radius:8px; background:var(--surface-color,#f8fafc); display:flex; align-items:center; justify-content:center; color:var(--text-muted); transition:background .2s,color .2s; }
.ac06-icon-box .ac-topic-ico{ width:20px; height:20px; opacity:1; }
.ac06-label { flex:1; font-size:var(--ac06-fs-body,var(--fs-body)); font-weight:600; color:var(--ac06-header-color,var(--text-strong)); text-align:left; }
.ac06-item.ac-open .ac06-label{ color:var(--ac06-active-text,var(--ac06-header-color,var(--text-strong))); }
.ac06-body-inner { text-align:left; font-size:var(--ac06-fs-body,var(--fs-body)); color:var(--ac06-body-color,var(--text-color)); line-height:1.75; padding:.5rem 1.25rem 1.25rem 3.5rem; }

/* AC-07 — Ported FAQ */
.ac07-item { border-bottom:1px solid var(--card-border); padding:0 .25rem; transition:background .2s; }
.ac07-item.ac-open{ background:var(--ac07-active-bg,transparent); }
.ac07-btn { width:100%; display:flex; align-items:center; gap:.65rem; padding:1.25rem 0; background:none; border:none; cursor:pointer; text-align:left; font-size:var(--ac07-fs-body,var(--fs-body)); font-weight:600; color:var(--ac07-header-color,var(--text-strong)); }
.ac07-btn > .ac-q{ flex:1; }
.ac07-item.ac-open .ac07-btn{ color:var(--ac07-active-text,var(--ac07-header-color,var(--text-strong))); }
.ac07-body-inner { text-align:left; font-size:var(--ac07-fs-body,var(--fs-body)); color:var(--ac07-body-color,var(--text-color)); line-height:1.75; padding:.25rem 0 1.25rem 1.85rem; }

/* §AC Card on/off — when --acNN-card:0 is set, zero out card styling via var cascade */
section[style*="--ac01-card:0"],section[style*="--ac01-card: 0"]{--ac01-radius:0;--ac01-shadow:none;--ac01-border-w:0px}
section[style*="--ac02-card:0"],section[style*="--ac02-card: 0"]{--ac02-radius:0;--ac02-shadow:none;--ac02-border-w:0px}
section[style*="--ac03-card:0"],section[style*="--ac03-card: 0"]{--ac03-radius:0;--ac03-shadow:none;--ac03-border-w:0px}
section[style*="--ac04-card:0"],section[style*="--ac04-card: 0"]{--ac04-radius:0;--ac04-shadow:none;--ac04-border-w:0px}
section[style*="--ac05-card:0"],section[style*="--ac05-card: 0"]{--ac05-radius:0;--ac05-shadow:none;--ac05-border-w:0px}
section[style*="--ac06-card:0"],section[style*="--ac06-card: 0"]{--ac06-radius:0;--ac06-shadow:none;--ac06-border-w:0px}
section[style*="--ac07-card:0"],section[style*="--ac07-card: 0"]{--ac07-radius:0;--ac07-shadow:none;--ac07-border-w:0px}

/* §AC Clickable image on/off (AC-01) — when --ac01-clickable:0 is set, disable the
   vmodal-open trigger via pointer-events AND hide the .v-zoom-overlay badge */
section[style*="--ac01-clickable:0"] [data-action="vmodal-open"],section[style*="--ac01-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ac01-clickable:0"] .v-zoom-overlay,section[style*="--ac01-clickable: 0"] .v-zoom-overlay{display:none}

/* §BQ Clickable image on/off (BQ-03) — same pattern as AC-01 above.
   THUMB RULE: any template image wired with data-action="vmodal-open" MUST
   ship with a matching --tplNN-clickable style-config select (default "1")
   PLUS this pointer-events/display:none enforcement pair — never one
   without the other. */
section[style*="--bq03-clickable:0"] [data-action="vmodal-open"],section[style*="--bq03-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--bq03-clickable:0"] .v-zoom-overlay,section[style*="--bq03-clickable: 0"] .v-zoom-overlay{display:none}

@media(max-width:640px){
  .ac01-img-wrap { min-height:220px; }
  .ac04-item { gap:1rem; }
  .ac04-num { font-size:1.5rem; width:2rem; }
  .ac01-body-inner,.ac02-body-inner,.ac03-body-inner,.ac04-body-inner,.ac07-body-inner{ padding-left:1.35rem; }
  .ac05-body-inner{ padding-left:1rem; }
  .ac06-body-inner{ padding-left:1.25rem; }
}

/* ── §38 Clients — CL-01 through CL-10 ── */

/* cl-chip: brand icon + label */
.cl-chip { display:inline-flex; flex-direction:column; align-items:center; gap:.45rem; cursor:default; }
.cl-chip img { width:40px; height:40px; object-fit:contain; filter:grayscale(1) opacity(.45); transition:filter .25s; }
.cl-chip:hover img { filter:grayscale(0) opacity(1); }
.cl-chip span { font-size:var(--fs-xs,.72rem); font-weight:700; color:var(--text-muted); }
.cl-chip.sm img { width:28px; height:28px; }
.cl-chip.sm span { font-size:var(--fs-xs,.65rem); }
.cl-chip.lg img { width:56px; height:56px; }
.cl-chip.lg span { font-size:var(--fs-sm,.82rem); }

/* marquee */
@keyframes mqScroll { from { transform:translateX(0); } to { transform:translateX(-50%); } }
.marquee-track { display:flex; align-items:center; gap:3rem; width:max-content; animation:mqScroll 28s linear infinite; padding:1rem 0; }
.marquee-track.rev  { animation-direction:reverse; }
.marquee-track.slow { animation-duration:42s; }
.marquee-wrap:hover .marquee-track { animation-play-state:paused; }
.marquee-stack { display:flex; flex-direction:column; gap:1.5rem; }

/* bordered logo grid */
.logo-grid { display:grid; grid-template-columns:repeat(5,1fr); background:var(--card-border); gap:1px; border:1px solid var(--card-border); }
.logo-cell { background:var(--card-bg,#fff); display:flex; align-items:center; justify-content:center; padding:1.75rem 1rem; }

/* logo carousel — CL-05 */
.lc-track-wrap { position:relative; display:flex; align-items:center; gap:.5rem; }
.lc-track { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; gap:1rem; scroll-behavior:smooth; -webkit-overflow-scrolling:touch; flex:1; padding:.5rem 0; scrollbar-width:none; }
.lc-track::-webkit-scrollbar { display:none; }
.lc-item { scroll-snap-align:start; flex-shrink:0; display:flex; align-items:center; justify-content:center; padding:.75rem 1.5rem; background:var(--card-bg,#fff); border-radius:var(--card-radius); border:1px solid var(--card-border); }
.lc-btn { width:36px; height:36px; border-radius:50%; border:1.5px solid var(--card-border); background:var(--card-bg,#fff); display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0; color:var(--text-strong); transition:background .2s,border-color .2s; }
.lc-btn:hover { background:var(--primary-color); border-color:var(--primary-color); }

/* testimonial cards — CL-06 */
.h-testi-card { background:var(--card-bg,#fff); border-radius:var(--card-radius); border:1px solid var(--card-border); padding:1.75rem; box-shadow:var(--card-shadow); display:flex; flex-direction:column; gap:1rem; }
.quote-mark { font-size:3rem; line-height:.8; color:var(--primary-color); font-weight:900; }
.star-row { display:flex; gap:.2rem; }
.star { color:var(--primary-color); font-size:var(--fs-body,.95rem); }

/* stats — CL-07 */
.cl-stat-num { font-size:clamp(1.8rem,4vw,2.8rem); font-weight:900; color:var(--text-strong); line-height:1; }
.cl-stat-lbl { font-size:var(--fs-xs,.78rem); color:var(--text-muted); margin-top:.35rem; }

/* partner tiers — CL-10 */
.tier-label { display:inline-flex; align-items:center; gap:.4rem; font-size:var(--fs-xs,.72rem); font-weight:800; letter-spacing:.08em; text-transform:uppercase; padding:.3rem .85rem; border-radius:99px; white-space:nowrap; }
.tier-gold   { background:#fefce8; color:#92400e; border:1px solid #fcd703; }
.tier-silver { background:var(--surface-color,#f8fafc); color:var(--text-color,#475569); border:1px solid #cbd5e1; }
.tier-bronze { background:#fff7ed; color:#92400e; border:1px solid #fed7aa; }

@media(max-width:640px) { .logo-grid { grid-template-columns:repeat(3,1fr); } }
@media(max-width:480px) { .logo-grid { grid-template-columns:repeat(2,1fr); } }

/* ── §37 Banners — BN-01 through BN-10 ── */

/* Shared scaffold + utilities */
.pad { padding:2.5rem clamp(1rem,4vw,3rem); }
.badge { display:inline-block; padding:.25rem .75rem; background:var(--primary-color); color:var(--text-strong); border-radius:99px; font-size:var(--fs-xs,.7rem); font-weight:800; letter-spacing:.06em; }
.badge-dark { display:inline-block; padding:.2rem .65rem; background:var(--text-strong); color:#fff; border-radius:99px; font-size:var(--fs-xs,.68rem); font-weight:800; letter-spacing:.06em; }
.arr-btn { display:flex; align-items:center; justify-content:center; width:44px; height:44px; border-radius:50%; background:rgba(255,255,255,.2); backdrop-filter:blur(8px); border:1.5px solid rgba(255,255,255,.35); flex-shrink:0; transition:background .2s; }
.arr-btn:hover { background:rgba(255,255,255,.35); }
.arr-btn svg { width:16px; height:16px; stroke:#fff; stroke-width:2.5; fill:none; }

/* BN-01 — image cards */
.bn01-wrap { max-width:1280px; margin:0 auto; }
.bn01-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.bn01-grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }
.bn01-grid-4 { display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; }
.bn01-card { position:relative; overflow:hidden; border-radius:var(--card-radius); aspect-ratio:4/3; }
.bn01-card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.bn01-card:hover img { transform:scale(1.04); }
.bn01-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.65) 0%,transparent 55%); }
.bn01-badge { position:absolute; top:.75rem; left:.75rem; }
.bn01-body { position:absolute; bottom:0; left:0; right:0; padding:1rem 1.1rem; display:flex; align-items:flex-end; justify-content:space-between; gap:.5rem; }
.bn01-title { font-size:1rem; font-weight:800; color:#fff; line-height:1.2; }
.bn01-sub { font-size:var(--fs-xs,.78rem); color:rgba(255,255,255,.75); margin-top:.2rem; }

/* BN-02 — product promo */
.bn02-grid { display:grid; grid-template-columns:1fr 1fr; gap:1.5rem; }
.bn02-card { position:relative; border-radius:var(--card-radius); overflow:hidden; background:linear-gradient(135deg,#f97316,#ef4444); display:flex; min-height:200px; }
.bn02-card.b { background:linear-gradient(135deg,#3b82f6,#1d4ed8); }
.bn02-ghost { position:absolute; right:-.5rem; top:50%; transform:translateY(-50%); font-size:6rem; font-weight:900; color:rgba(255,255,255,.08); line-height:1; pointer-events:none; user-select:none; }
.bn02-left { flex:1; padding:1.75rem 1.5rem; display:flex; flex-direction:column; justify-content:space-between; z-index:1; }
.bn02-kicker { font-size:var(--fs-xs,.7rem); font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.8); margin-bottom:.4rem; }
.bn02-h { font-size:clamp(1.4rem,3vw,2.1rem); font-weight:900; color:#fff; line-height:1.1; }
.bn02-btn { display:inline-flex; align-items:center; padding:.6rem 1.5rem; background:var(--card-bg,#fff); color:var(--text-strong); border-radius:var(--btn-p-radius,99px); font-size:var(--fs-sm,.875rem); font-weight:800; text-decoration:none; align-self:flex-start; transition:opacity .2s; }
.bn02-btn:hover { opacity:.9; }
.bn02-img { width:45%; position:relative; flex-shrink:0; }
.bn02-img img { width:100%; height:100%; object-fit:cover; }
.bn02-badge-round { position:absolute; top:1rem; right:1rem; width:64px; height:64px; border-radius:50%; background:var(--primary-color); display:flex; align-items:center; justify-content:center; text-align:center; font-size:var(--fs-xs,.65rem); font-weight:900; color:var(--text-strong); line-height:1.2; }

/* BN-03 — editorial grid */
.bn03-grid { display:grid; grid-template-columns:repeat(3,1fr); min-height:480px; }
.bn03-col { position:relative; overflow:hidden; }
.bn03-col img { width:100%; height:100%; object-fit:cover; display:block; }
.bn03-overlay-text { position:absolute; bottom:0; left:0; right:0; padding:2rem 1.75rem; background:linear-gradient(to top,rgba(0,0,0,.7) 0%,transparent 100%); }
.bn03-tag { display:inline-block; font-size:var(--fs-xs,.65rem); font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--primary-color); margin-bottom:.6rem; }
.bn03-h { font-size:clamp(1.2rem,2.5vw,1.8rem); font-weight:900; color:#fff; line-height:1.15; margin-bottom:1rem; }
.bn03-view-btn { display:inline-flex; align-items:center; gap:.4rem; font-size:var(--fs-sm,.82rem); font-weight:700; color:#fff; text-decoration:none; }
.bn03-view-btn svg { width:16px; height:16px; stroke:#fff; stroke-width:2.5; fill:none; }

/* BN-04 — sale banner */
.bn04 { display:flex; border-radius:var(--card-radius); overflow:hidden; background:var(--text-strong); min-height:280px; }
.bn04-img { width:45%; flex-shrink:0; }
.bn04-img img { width:100%; height:100%; object-fit:cover; display:block; }
.bn04-right { flex:1; padding:2.5rem 2rem; display:flex; flex-direction:column; justify-content:center; gap:.75rem; }
.bn04-eyebrow { font-size:var(--eyebrow-font-size,var(--fs-xs,.68rem)); font-weight:800; letter-spacing:var(--eyebrow-letter-spacing,.14em); text-transform:var(--eyebrow-text-transform,uppercase); color:rgba(255,255,255,.5); }
.bn04-pct { font-size:clamp(3rem,8vw,5rem); font-weight:900; color:#fff; line-height:1; }
.bn04-pct span { color:var(--primary-color); }
.bn04-tagline { font-size:var(--fs-body,.95rem); color:rgba(255,255,255,.75); }
.bn04-code { display:inline-flex; align-items:center; gap:.6rem; font-size:var(--fs-sm,.82rem); color:rgba(255,255,255,.6); }
.bn04-code strong { color:#fff; background:rgba(255,255,255,.1); padding:.2rem .75rem; border-radius:4px; letter-spacing:.06em; }
.bn04-btn { display:inline-flex; align-items:center; gap:.5rem; padding:.7rem 1.75rem; background:var(--btn-a-bg,var(--primary-color)); color:var(--btn-a-text,var(--text-strong)); border-radius:var(--btn-a-radius,99px); font-size:var(--fs-sm,.85rem); font-weight:800; text-decoration:none; align-self:flex-start; transition:opacity .2s; }
.bn04-btn svg { width:16px; height:16px; stroke:currentColor; fill:none; }
.bn04-btn:hover { opacity:.88; }

/* BN-05 — large + 2 stacked */
.bn05-grid { display:grid; grid-template-columns:1fr 1fr; grid-template-rows:1fr 1fr; gap:1rem; min-height:480px; }
.bn05-main { grid-row:span 2; position:relative; overflow:hidden; border-radius:var(--card-radius); }
.bn05-main img { width:100%; height:100%; object-fit:cover; display:block; }
.bn05-main-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.65) 0%,transparent 60%); }
.bn05-main-body { position:absolute; bottom:0; left:0; right:0; padding:1.75rem; }
.bn05-title-lg { font-size:clamp(1.4rem,2.5vw,2rem); font-weight:900; color:#fff; line-height:1.15; margin-bottom:.4rem; }
.bn05-sub-lg { font-size:var(--fs-sm,.85rem); color:rgba(255,255,255,.75); margin-bottom:1rem; }
.bn05-small { position:relative; overflow:hidden; border-radius:var(--card-radius); }
.bn05-small img { width:100%; height:100%; object-fit:cover; display:block; }
.bn05-small-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.6) 0%,transparent 65%); }
.bn05-small-body { position:absolute; bottom:0; left:0; right:0; padding:1.25rem; display:flex; align-items:flex-end; justify-content:space-between; }
.bn05-title-sm { font-size:1rem; font-weight:800; color:#fff; }
.bn05-sub-sm { font-size:var(--fs-xs,.78rem); color:rgba(255,255,255,.7); margin-top:.15rem; }

/* BN-06 — 4-col mini */
.bn06-wrap { max-width:1280px; margin:0 auto; }
.bn06-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; }
.bn06-card { position:relative; overflow:hidden; border-radius:var(--card-radius); aspect-ratio:3/4; cursor:pointer; }
.bn06-card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.bn06-card:hover img { transform:scale(1.05); }
.bn06-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.6) 0%,transparent 60%); }
.bn06-body { position:absolute; bottom:0; left:0; right:0; padding:1rem; }
.bn06-cat { font-size:var(--fs-xs,.65rem); font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.65); margin-bottom:.25rem; }
.bn06-h { font-size:1rem; font-weight:900; color:#fff; line-height:1.2; }

/* BN-07 — billboard */
.bn07 { position:relative; border-radius:var(--card-radius); overflow:hidden; min-height:440px; }
.bn07 > img { width:100%; height:100%; object-fit:cover; display:block; position:absolute; inset:0; }
.bn07-overlay { position:absolute; inset:0; background:linear-gradient(90deg,rgba(0,0,0,.65) 0%,transparent 70%); }
.bn07-content { position:relative; z-index:1; padding:3.5rem 3rem; max-width:560px; display:flex; flex-direction:column; gap:1rem; min-height:440px; justify-content:center; }
.bn07-eyebrow { font-size:var(--eyebrow-font-size,var(--fs-xs,.65rem)); font-weight:800; letter-spacing:var(--eyebrow-letter-spacing,.16em); text-transform:var(--eyebrow-text-transform,uppercase); color:rgba(255,255,255,.6); }
.bn07-h { font-size:clamp(1.6rem,3.5vw,2.6rem); font-weight:900; color:#fff; line-height:1.1; }
.bn07-p { font-size:var(--fs-body,.9rem); color:rgba(255,255,255,.75); line-height:1.7; max-width:440px; }
.bn07-btn { display:inline-flex; align-items:center; gap:.5rem; padding:.75rem 2rem; background:var(--btn-a-bg,var(--primary-color)); color:var(--btn-a-text,var(--text-strong)); border-radius:var(--btn-a-radius,99px); font-size:var(--fs-sm,.85rem); font-weight:800; text-decoration:none; align-self:flex-start; transition:opacity .2s; }
.bn07-btn svg { width:16px; height:16px; stroke:currentColor; fill:none; }
.bn07-btn:hover { opacity:.88; }

/* BN-08 — strip banners */
.bn08-strip { display:grid; grid-template-columns:320px 1fr; overflow:hidden; border-radius:var(--card-radius); margin-bottom:1rem; }
.bn08-strip:last-child { margin-bottom:0; }
.bn08-img { overflow:hidden; }
.bn08-img img { width:100%; height:100%; object-fit:cover; display:block; }
.bn08-text { display:flex; align-items:center; justify-content:space-between; padding:1.5rem 2rem; gap:1.5rem; flex-wrap:wrap; }
.bn08-body { flex:1; }
.bn08-kicker { font-size:var(--fs-xs,.68rem); font-weight:800; letter-spacing:.12em; text-transform:uppercase; margin-bottom:.3rem; }
.bn08-h { font-size:clamp(1rem,2vw,1.3rem); font-weight:900; margin-bottom:.3rem; }
.bn08-sub { font-size:var(--fs-sm,.82rem); line-height:1.55; }
.bn08-action { flex-shrink:0; }
.bn08-btn { display:inline-block; padding:.6rem 1.5rem; border-radius:var(--btn-p-radius,99px); font-size:var(--fs-sm,.82rem); font-weight:800; text-decoration:none; white-space:nowrap; transition:opacity .2s; }
.bn08-btn:hover { opacity:.85; }

/* BN-09 — announcement bars */
.bn09-bar { display:flex; align-items:center; justify-content:center; gap:.75rem; padding:.65rem 1.25rem; font-size:var(--fs-sm,.83rem); flex-wrap:wrap; }
.bn09-bar-text { flex:1; text-align:center; }
.bn09-bar-link { font-weight:700; text-decoration:none; }
.bn09-close { background:none; border:none; cursor:pointer; font-size:1.2rem; line-height:1; padding:0 .25rem; margin-left:auto; flex-shrink:0; }

/* BN-10 — countdown bar */
.bn10-bar { display:flex; align-items:center; justify-content:center; gap:1.5rem; padding:.75rem 1.5rem; flex-wrap:wrap; }
.bn10-text-group { display:flex; flex-direction:column; gap:.1rem; }
.bn10-label { font-size:var(--fs-xs,.65rem); font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.bn10-title { font-size:var(--fs-body,.9rem); font-weight:800; }
.bn10-divider { width:1px; height:2rem; background:currentColor; opacity:.2; }
.bn10-clock { display:flex; align-items:center; gap:.4rem; }
.bn10-unit { text-align:center; }
.bn10-num { font-size:1.4rem; font-weight:900; font-variant-numeric:tabular-nums; display:block; min-width:2ch; }
.bn10-lbl { font-size:var(--fs-xs,.58rem); font-weight:700; letter-spacing:.08em; text-transform:uppercase; margin-top:.1rem; }
.bn10-colon { font-size:1.2rem; font-weight:900; line-height:1; align-self:center; margin-bottom:.8rem; }
.bn10-cta { display:inline-flex; align-items:center; padding:.55rem 1.4rem; border-radius:99px; font-size:var(--fs-sm,.82rem); font-weight:800; text-decoration:none; white-space:nowrap; transition:opacity .2s; }
.bn10-cta:hover { opacity:.88; }

@media(max-width:768px){
  .bn01-grid-4,.bn06-grid { grid-template-columns:repeat(2,1fr); }
}
@media(max-width:768px){
  .bn01-grid,.bn02-grid { grid-template-columns:1fr; }
  .bn01-grid-3 { grid-template-columns:1fr 1fr; }
  .bn03-grid { grid-template-columns:1fr; min-height:auto; }
  .bn04 { flex-direction:column; }
  .bn04-img { width:100%; height:200px; }
  .bn05-grid { grid-template-columns:1fr; grid-template-rows:auto; min-height:auto; }
  .bn05-main { grid-row:auto; min-height:280px; }
  .bn07-content { padding:2rem 1.5rem; min-height:320px; }
  .bn08-strip { grid-template-columns:1fr; }
  .bn08-img { height:160px; }
  .bn10-bar { gap:.75rem; }
}
@media(max-width:480px){
  .bn01-grid-3 { grid-template-columns:1fr; }
}


/* ── §36 Demo scaffolding — page-level layout for helper preview files ── */
.demo-page{min-height:100vh;background:linear-gradient(160deg,#f0f9ff 0%,#f8fafc 60%)}
.demo-nav{background:var(--bg-color,#fff);border-bottom:1px solid var(--card-border,#e2e8f0);padding:.85rem clamp(1rem,8vw,5rem);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem}
.demo-nav .logo{font-weight:900;font-size:1.1rem;color:var(--text-strong,#0f172a);letter-spacing:-.02em}
.demo-nav .links{display:flex;gap:1.2rem;flex-wrap:wrap}
.demo-nav .links a{font-size:var(--fs-sm,.82rem);color:var(--text-color,#475569);text-decoration:none;font-weight:500}
.demo-hero{padding:4rem clamp(1rem,8vw,5rem) 3rem;max-width:700px}
.demo-hero p{font-size:var(--fs-xs,.72rem);font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:#6366f1;margin-bottom:.7rem}
.demo-hero h1{font-size:clamp(1.8rem,5vw,3.5rem);font-weight:900;color:var(--text-strong,#0f172a);line-height:1.05;letter-spacing:-.03em;margin-bottom:1.1rem}
.demo-hero .sub{font-size:1rem;color:var(--text-muted,#64748b);line-height:1.65;max-width:520px}
.demo-content{padding:2.5rem clamp(1rem,8vw,5rem);display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;max-width:1200px}
.demo-card{background:var(--bg-color,#fff);border-radius:14px;padding:1.4rem;border:1px solid var(--card-border,#e2e8f0);box-shadow:0 1px 6px rgba(0,0,0,.04)}
.demo-card h3{font-size:var(--fs-body,.95rem);font-weight:700;color:var(--text-strong,#0f172a);margin-bottom:.4rem}
.demo-card p{font-size:var(--fs-sm,.8rem);color:var(--text-color,#374151);line-height:1.6}
@media(max-width:480px){.demo-nav .links{display:none}}

/* ── §35 Testimonial extras (testi-right panel, OrganicVertical) ── */
@media(max-width:768px) {
  .h-testi-new-wrap { grid-template-columns:1fr; }
  .h-testi-right    { display:none; }
}

/* ── §43 Feature Bars (FB-01–FB-15) ── */

/* Section label */
.section-label{background:#0f172a;color:#fcd703;font-size:var(--fs-xs,.65rem);font-weight:800;letter-spacing:.14em;text-transform:uppercase;padding:.55rem 1.1rem;display:flex;align-items:center;gap:.75rem}
.section-label span{color:var(--text-color,#475569);font-weight:600;letter-spacing:.05em;text-transform:none}

/* CSS-only particles */
.cp{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.cp s{position:absolute;left:var(--x,50%);top:var(--y,50%);width:var(--sz,4px);height:var(--sz,4px);border-radius:50%;background:var(--c,rgba(252,215,3,.2));opacity:0;animation:var(--a,cpFloat) var(--dur,6s) ease-in-out var(--d,0s) infinite}
.cp s.rg{border-radius:50%}
.cp s.sq{border-radius:0;transform:rotate(var(--rot,45deg))}
.cp s.cr{border-radius:2px;width:var(--sz,4px);height:calc(var(--sz,4px)*3);transform:rotate(var(--rot,45deg))}
@keyframes cpFloat{0%{opacity:var(--olo,.06);transform:translate(0,0)}50%{opacity:var(--ohi,.2);transform:translate(var(--dx,0px),var(--dy,-12px))}100%{opacity:var(--olo,.06);transform:translate(0,0)}}
@keyframes cpRise{0%{opacity:0;transform:translate(0,0)}30%{opacity:var(--ohi,.3)}100%{opacity:0;transform:translate(var(--rx,0px),var(--ry,-60px))}}
@keyframes cpDrift{0%{opacity:0;transform:translate(0,0) rotate(var(--rot,45deg))}40%{opacity:var(--ohi,.2)}100%{opacity:0;transform:translate(var(--dx,10px),var(--dy,-8px)) rotate(calc(var(--rot,45deg) + 90deg))}}
@keyframes cpPop{0%{opacity:0;transform:scale(.5) rotate(var(--rot,45deg))}30%{opacity:var(--ohi,.25);transform:scale(1.4)}100%{opacity:0;transform:scale(.8) rotate(calc(var(--rot,45deg)+90deg))}}

/* Feature bar text defaults — body size + color token, no hardcoding */
[id^="fb"] p { font-size:var(--fs-body,.93rem); }
[id^="fb"] p:not([style*="color"]) { color:var(--text-color); }

/* Particle wrapper */
.ptcl-wrap{position:absolute;inset:0;pointer-events:none;z-index:0}

/* Shimmer sweep on badge circles */
.ptcl-shimmer-bar{position:absolute;top:0;left:-70%;width:50%;height:100%;background:linear-gradient(to right,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-15deg);animation:fbShimmer var(--dur,3.5s) ease-in-out var(--delay,0s) infinite}
@keyframes fbShimmer{0%{left:-70%;opacity:0}20%{opacity:1}60%{left:130%;opacity:1}100%{left:130%;opacity:0}}

/* Icon pulse rings — filled expanding circles, matches static page pattern.
   No scale animation on the element itself — avoids overriding transform:translate()
   on absolutely-centred play buttons. Rings alone are the visual signal. */
.icon-pulse{position:relative}
.icon-pulse::before,.icon-pulse::after{content:'';position:absolute;inset:0;border-radius:inherit;background:color-mix(in srgb,var(--primary-color,#fcd703) 38%,transparent);animation:fbRingExpand 2.1s ease-out infinite;pointer-events:none}
.icon-pulse::after{animation-delay:.7s}
@keyframes fbRingExpand{0%{transform:scale(1);opacity:.85}100%{transform:scale(2.4);opacity:0}}

/* Stat number glow (no-op class, present for targeting) */
.num-glow{display:block}

/* Accent underline bar under stat numbers */
.num-underline{display:block;height:3px;border-radius:99px;background:var(--primary-color,#fcd703);transform-origin:left;animation:fbBarGrow .7s cubic-bezier(.22,.68,0,1.2) var(--delay,.2s) both}
@keyframes fbBarGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* Marquee tracks */
.marquee-wrap{overflow:hidden;width:100%}
.marquee-l{display:flex;width:max-content;animation:fbScrollLeft var(--speed,28s) linear infinite}
.marquee-r{display:flex;width:max-content;animation:fbScrollRight var(--speed,18s) linear infinite}
.marquee-wrap:hover .marquee-l,.marquee-wrap:hover .marquee-r{animation-play-state:paused}
@keyframes fbScrollLeft{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes fbScrollRight{from{transform:translateX(-50%)}to{transform:translateX(0)}}

/* Dot grid for dark sections */
.dot-grid-light{background-image:radial-gradient(circle,rgba(255,255,255,.06) 1px,transparent 1px);background-size:24px 24px}

/* Ghost number (FB-13) */
.ghost-num{font-size:clamp(2.5rem,6vw,4.5rem);font-weight:900;line-height:1;color:transparent;-webkit-text-stroke:1.5px #e2e8f0;text-stroke:1.5px #e2e8f0;display:block;letter-spacing:-.02em}

/* Rating pill (FB-14) */
.rating-pill{display:inline-flex;align-items:center;background:var(--primary-color,#fcd703);color:var(--text-strong,#111827);font-size:var(--fs-body,.9rem);font-weight:800;padding:.4rem 1rem;border-radius:99px;letter-spacing:.06em;white-space:nowrap}

/* ═══════════════════════════════════════════════════════════════════
   §46  HERO SECTIONS  (22.1 TypeCentred · 22.3 TypeSplit · 22.4 TypeKinetic
         22.6 TypeMinimal · 22.7 TypeDark · 22.8 TypeBrand
         22.9 TypeGradient · 22.10 TypeWithProduct)
   ═══════════════════════════════════════════════════════════════════ */

/* ── Section spacing ───────────────────────────────────────────── */
.section-gap{height:4rem}

/* ── shared hero primitives ──────────────────────────────────────── */
.hs-wrap-x{padding-left:1.5rem;padding-right:1.5rem;max-width:80rem;margin:0 auto}

/* HS-01 TypeCentred */
.hs01-blob{position:absolute;z-index:0;width:36rem;aspect-ratio:1155/678;filter:blur(64px);opacity:.18;pointer-events:none;background:var(--hs01-blob-c,#fcd703);border-radius:9999px}
.hs01-blob-a{top:-6rem;left:calc(50% - 10rem)}
.hs01-blob-b{bottom:-4rem;right:calc(50% - 16rem)}
.hs01-wrap{position:relative;z-index:1;margin:0 auto;padding:clamp(3rem,6vw,5rem) 1.5rem;text-align:center}
.hs01-eyebrow{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:2rem}
.hs01-eyebrow span{font-size:var(--eyebrow-font-size,.72rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.2em);text-transform:uppercase}
.hs01-wrap h1{font-size:var(--fs-h1,clamp(2.4rem,6vw,4rem));font-weight:900;line-height:1.05;letter-spacing:-.04em;text-wrap:balance}
.hs01-hl{position:relative;display:inline-block}
.hs01-hl>span:first-child{position:relative;z-index:1}
.hs01-hl-bar{position:absolute;bottom:.08em;left:0;right:0;height:.25em;border-radius:2px;z-index:0;opacity:.45}
.hs01-desc{margin:1.5rem auto 0;max-width:36rem;font-size:1.05rem;line-height:1.7}
.hs01-ctas{margin-top:2.25rem;display:flex;align-items:center;justify-content:center;gap:1.5rem;flex-wrap:wrap}
.hs01-link{font-size:.9rem;font-weight:700;text-decoration:none}
.hs01-proof{margin-top:3rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:1.5rem}
.hs01-avatars{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#6b7280}
.hs01-avatars img{width:1.75rem;height:1.75rem;border-radius:50%;object-fit:cover;margin-left:-.5rem;box-shadow:0 0 0 2px #fff}
.hs01-avatars img:first-child{margin-left:0}
.hs01-sep{width:1px;height:1rem;background:#e5e7eb}
.hs01-rating{display:flex;align-items:center;gap:.35rem;font-size:.85rem;color:#6b7280}

/* HS-02 TypeSplit */
.hs02-tint{position:absolute;inset-block:0;right:0;width:50%;z-index:0;pointer-events:none}
.hs02-grid{position:relative;z-index:1;display:grid;gap:3rem 3rem;align-items:center;padding:clamp(3rem,6vw,4.5rem) 1.5rem;max-width:80rem;margin:0 auto}
@media(min-width:1024px){.hs02-grid{grid-template-columns:1fr 1fr}}
.hs02-eyebrow{display:flex;align-items:center;gap:.5rem;margin-bottom:1.25rem}

.hs02-eyebrow span:last-child{font-size:var(--eyebrow-font-size,.72rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.18em);text-transform:var(--eyebrow-text-transform,uppercase);width:100%}
.hs02-grid h1{font-size:var(--fs-h1,clamp(2.2rem,5vw,3.6rem));font-weight:900;line-height:1.05;letter-spacing:-.04em}
.hs02-desc{margin-top:1rem;font-size:.95rem;line-height:1.75;max-width:32rem}
.hs02-list{list-style:none;margin:1.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:1rem}
.hs02-list li{display:flex;gap:.75rem}
.hs02-check{flex-shrink:0;width:1.25rem;height:1.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-top:.15rem}
.hs02-check svg{width:.7rem;height:.7rem}
.hs02-list li>div>p:first-child{font-size:.88rem;font-weight:700;color:#111827}
.hs02-list li>div>p:last-child{font-size:.82rem;color:#6b7280;margin-top:.15rem}
.hs02-ctas{margin-top:2rem;display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}
.hs02-link{font-size:.88rem;font-weight:700;text-decoration:none}
.hs02-imgcol{position:relative}
.hs02-imgcol img{width:100%;object-fit:cover}
.hs02-chip{position:absolute;bottom:-1rem;left:-1rem;border-radius:.75rem;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:.75rem 1rem}
.hs02-chip p:first-child{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin:0 0 .15rem}
.hs02-chip p:last-child{font-size:1.05rem;font-weight:900;margin:0}
@media(max-width:1024px){.hs02-grid{grid-template-columns:1fr}.hs02-chip{display:none}}

/* HS-03 TypeKinetic */
.hs03-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.2;z-index:0}
.hs03-overlay{position:absolute;inset:0;z-index:0}
.hs03-wrap{position:relative;z-index:1;padding:clamp(3.5rem,7vw,5.5rem) 1.5rem;max-width:80rem;margin:0 auto}
.hs03-eyebrow{font-size:var(--eyebrow-font-size,.72rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.22em);text-transform:var(--eyebrow-text-transform,uppercase);margin:0 0 2rem}
.hs03-stack{display:flex;flex-direction:column;gap:0}
.hs03-word{font-size:var(--fs-h1,clamp(2.4rem,7vw,4.5rem));font-weight:900;line-height:1;letter-spacing:-.04em}
.hs03-outline{color:transparent!important;-webkit-text-stroke:1px rgba(255,255,255,.55)}
.hs03-row{margin-top:3rem;display:flex;flex-wrap:wrap;align-items:center;gap:2rem}
.hs03-stats{display:flex;gap:2rem}
.hs03-stats>div>p:first-child{font-size:1.4rem;font-weight:900;line-height:1;margin:0}
.hs03-stats>div>p:last-child{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;margin:.25rem 0 0}
.hs03-vsep{width:1px;height:2.25rem;background:rgba(255,255,255,.1)}
.hs03-ctas{display:flex;gap:.75rem;margin-left:auto;flex-wrap:wrap}
.hs03-link{font-size:.85rem;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:.35rem;padding:.7rem 1.25rem;border-radius:9999px;border:1px solid rgba(255,255,255,.2)}
@media(max-width:640px){.hs03-ctas{margin-left:0}}

/* HS-04 TypeDark */
.hs04-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:0}
.hs04-overlay{position:absolute;inset:0;z-index:0}
.hs04-wrap{position:relative;z-index:1;padding:clamp(3.5rem,7vw,5.5rem) 1.5rem;max-width:80rem;margin:0 auto}
.hs04-inner{max-width:36rem}
.hs04-eyebrow{display:flex;align-items:center;gap:.5rem;margin-bottom:1.25rem}

.hs04-eyebrow span:last-child{font-size:var(--eyebrow-font-size,.72rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.18em);text-transform:var(--eyebrow-text-transform,uppercase);width:100%}
.hs04-inner h1{font-size:var(--fs-h1,clamp(2.2rem,5vw,3.6rem));font-weight:900;line-height:1.05;letter-spacing:-.04em}
.hs04-desc{margin-top:1rem;font-size:.95rem;line-height:1.75;max-width:32rem}
.hs04-ctas{margin-top:2rem;display:flex;flex-wrap:wrap;gap:1rem}
.hs04-link{font-size:.85rem;font-weight:700;text-decoration:none;padding:.75rem 1.5rem;border-radius:9999px;border:1px solid rgba(255,255,255,.2)}
.hs04-statsbar{position:relative;z-index:1;display:flex;flex-wrap:wrap;border-top:1px solid rgba(255,255,255,.1)}
.hs04-statsbar>div{flex:1 1 120px;min-width:120px;padding:1.1rem 1.75rem;border-right:1px solid rgba(255,255,255,.1)}
.hs04-statsbar>div:last-child{border-right:0}
.hs04-statsbar p:first-child{font-size:1.2rem;font-weight:900;line-height:1;margin:0}
.hs04-statsbar p:last-child{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;margin:.25rem 0 0}

/* HS-05 TypeBrand */
.hs05-line{height:3px}
.hs05-wrap{max-width:64rem;margin:0 auto;text-align:center}
.hs05-wrap.hs05-hide-strip .hs05-strip{display:none}
.hs05-hide-lines .hs05-line{display:none}
.hs05-mark{display:flex;justify-content:center;margin-bottom:1.5rem}
.hs05-mark svg{width:2.25rem;height:2.25rem}
.hs05-eyebrow{font-size:var(--eyebrow-font-size,.72rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.28em);text-transform:var(--eyebrow-text-transform,uppercase);margin:0 0 1rem;width:100%;justify-content:center}
.hs05-wrap h1{font-size:var(--hs05-heading-fs,clamp(3rem,10vw,6.5rem));font-weight:900;letter-spacing:-.05em;line-height:.92;text-wrap:balance}
.hs05-tagline{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.25rem}
.hs05-tagline span{height:1px;flex:1;max-width:4rem}
.hs05-tagline p{font-size:.72rem;font-weight:500;letter-spacing:.4em;text-transform:uppercase;margin:0;white-space:nowrap}
.hs05-cta{margin-top:2.25rem}
.hs05-strip{margin-top:3rem;text-align:center}
.hs05-strip img{width:100%;object-fit:cover;aspect-ratio:12/5;max-height:var(--hs05-img-h,280px);box-shadow:var(--hs05-shadow,0 20px 40px -12px rgba(0,0,0,.2));background:var(--hs05-img-bg,#f1f5f9)}
/* "No card" = plain original image: no shadow, no forced 12/5 crop box —
   the image sizes itself from its own dimensions, only ever shrinking
   (never enlarging) to fit the strip's max height. */
.hs05-no-card .hs05-strip img{box-shadow:none;width:auto;max-width:100%;height:auto;aspect-ratio:auto;object-fit:contain;background:transparent;display:inline-block}

/* HS-06 TypeGradient */
.hs06-grid{position:relative;z-index:1;display:grid;gap:3rem;align-items:center;padding:clamp(4rem,8vw,6rem) 1.5rem;max-width:80rem;margin:0 auto}
@media(min-width:1024px){.hs06-grid{grid-template-columns:1fr 1fr}}
.hs06-eyebrow{display:flex;align-items:center;gap:.5rem;margin-bottom:1.25rem}

.hs06-eyebrow span:last-child{font-size:var(--eyebrow-font-size,.72rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.18em);text-transform:var(--eyebrow-text-transform,uppercase);width:100%}
.hs06-grid h1{font-size:var(--fs-h1,clamp(2.2rem,5vw,3.6rem));font-weight:900;line-height:1.05;letter-spacing:-.04em;color:#fff}
.hs06-desc{margin-top:1rem;font-size:.95rem;line-height:1.75;max-width:32rem}
.hs06-ctas{margin-top:2rem;display:flex;flex-wrap:wrap;gap:1rem}
.hs06-link{font-size:.85rem;font-weight:700;text-decoration:none;padding:.75rem 1.25rem;border-radius:9999px;border:1px solid rgba(255,255,255,.2)}
.hs06-cards{display:flex;flex-direction:column;gap:1rem}
.hs06-card{border-radius:var(--card-radius,12px);border:1px solid;padding:1.5rem;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.hs06-card p:first-child{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin:0 0 .25rem}
.hs06-card p:nth-child(2){font-size:1.5rem;font-weight:900;line-height:1;margin:0}
.hs06-card p:last-child{font-size:.85rem;margin:.4rem 0 0;line-height:1.5}
@media(max-width:1024px){.hs06-grid{grid-template-columns:1fr}}

/* HS-07 TypeSpotlight */
.hs07-spotlight{position:absolute;inset:0;z-index:0;pointer-events:none;transition:background .15s ease-out}
@media(prefers-reduced-motion:reduce){.hs07-spotlight{transition:none}}
.hs07-wrap{position:relative;z-index:1;padding:clamp(4rem,8vw,6.5rem) 1.5rem;max-width:44rem;margin:0 auto;text-align:center}
.hs07-eyebrow{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1.5rem}

.hs07-eyebrow span:last-child{font-size:var(--eyebrow-font-size,.72rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.18em);text-transform:var(--eyebrow-text-transform,uppercase);width:100%}
.hs07-wrap h1{font-size:var(--fs-h1,clamp(2.4rem,6vw,4rem));font-weight:900;line-height:1.05;letter-spacing:-.04em;text-wrap:balance}
.hs07-desc{margin:1.25rem auto 0;max-width:30rem;font-size:.95rem;line-height:1.75}
.hs07-ctas{margin-top:2.25rem;display:flex;align-items:center;justify-content:center;gap:1rem;flex-wrap:wrap}
.hs07-link{font-size:.85rem;font-weight:700;text-decoration:none;padding:.75rem 1.5rem;border-radius:9999px;border:1px solid rgba(255,255,255,.2)}
.hs07-badge{margin:2.5rem auto 0;display:inline-flex;flex-direction:column;gap:.2rem;border-radius:.75rem;padding:.85rem 1.5rem;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.hs07-badge p:first-child{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin:0}
.hs07-badge p:last-child{font-size:.95rem;font-weight:800;margin:0}

/* HS-08 — Fixed Panel Slider: a static promo column beside a full Swiper
   carousel, both rendered as full-bleed background images (an absolutely-
   positioned object-fit:cover <img> + scrim, since the image field always
   binds to <img src> — there's no literal CSS background-image mode).
   Fixed panel collapses away below 768px — matches how this grocery/retail
   reference layout behaves on tablet/mobile (only the carousel remains,
   full width). Height + column gap are both admin-configurable. */
.hs08-grid{display:grid;overflow:hidden}
.hs08-fixed{position:relative;overflow:hidden}
.hs08-fixed-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.hs08-fixed-overlay{position:absolute;inset:0;z-index:1}
/* Fixed panel + slide text are absolutely positioned "floating" layers —
   default position is Center (both offset vars default 2vw) — swapped via
   admin-picked --hs08-fixed-text-pos/--hs08-slide-text-pos (one of
   tl/tc/tr/l/c/r/bl/bc/br) below. Each selector is paired with a
   space-after-colon variant because element.style.setProperty() serializes
   with a space — see feedback_style_attr_selector_space. */
.hs08-fixed-body{position:absolute;z-index:2;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;text-align:center;gap:1rem;max-width:calc(100% - 2 * var(--hs08-fixed-text-offset,2vw))}
.hs08-fixed-body h3{font-size:1.15rem;font-weight:800;line-height:1.3;margin:0}
.hs08-slider-wrap{position:relative;overflow:hidden}
.hs08-slider-wrap .swiper,.hs08-slider-wrap .swiper-wrapper{height:100%}
.hs08-slide{position:relative;overflow:hidden}
.hs08-slide-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.hs08-slide-overlay{position:absolute;inset:0;z-index:1}
.hs08-slide-text{position:absolute;z-index:2;top:50%;left:50%;transform:translate(-50%,-50%);max-width:min(480px,calc(100% - 2 * var(--hs08-slide-text-offset,2vw)))}
.hs08-eyebrow{font-size:var(--eyebrow-font-size,.85rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,normal);text-transform:var(--eyebrow-text-transform,none);margin:0 0 .5rem}
.hs08-slide-text h2{font-size:clamp(1.6rem,3.5vw,2.75rem);font-weight:800;line-height:1.15;margin:0 0 .75rem}
.hs08-subheading{font-size:1rem;line-height:1.6;margin:0 0 1.25rem}
.hs08-dots{left:0;right:0;display:flex;justify-content:center;gap:.35rem}
section[style*="--hs08-fixed-text-pos:tl"] .hs08-fixed-body,section[style*="--hs08-fixed-text-pos: tl"] .hs08-fixed-body{top:var(--hs08-fixed-text-offset,2vw);left:var(--hs08-fixed-text-offset,2vw);right:auto;bottom:auto;transform:none}
section[style*="--hs08-fixed-text-pos:tc"] .hs08-fixed-body,section[style*="--hs08-fixed-text-pos: tc"] .hs08-fixed-body{top:var(--hs08-fixed-text-offset,2vw);left:50%;right:auto;bottom:auto;transform:translateX(-50%)}
section[style*="--hs08-fixed-text-pos:tr"] .hs08-fixed-body,section[style*="--hs08-fixed-text-pos: tr"] .hs08-fixed-body{top:var(--hs08-fixed-text-offset,2vw);right:var(--hs08-fixed-text-offset,2vw);left:auto;bottom:auto;transform:none}
section[style*="--hs08-fixed-text-pos:l"] .hs08-fixed-body,section[style*="--hs08-fixed-text-pos: l"] .hs08-fixed-body{top:50%;left:var(--hs08-fixed-text-offset,2vw);right:auto;bottom:auto;transform:translateY(-50%)}
section[style*="--hs08-fixed-text-pos:c"] .hs08-fixed-body,section[style*="--hs08-fixed-text-pos: c"] .hs08-fixed-body{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%,-50%)}
section[style*="--hs08-fixed-text-pos:r"] .hs08-fixed-body,section[style*="--hs08-fixed-text-pos: r"] .hs08-fixed-body{top:50%;right:var(--hs08-fixed-text-offset,2vw);left:auto;bottom:auto;transform:translateY(-50%)}
section[style*="--hs08-fixed-text-pos:bl"] .hs08-fixed-body,section[style*="--hs08-fixed-text-pos: bl"] .hs08-fixed-body{bottom:var(--hs08-fixed-text-offset,2vw);left:var(--hs08-fixed-text-offset,2vw);right:auto;top:auto;transform:none}
section[style*="--hs08-fixed-text-pos:bc"] .hs08-fixed-body,section[style*="--hs08-fixed-text-pos: bc"] .hs08-fixed-body{bottom:var(--hs08-fixed-text-offset,2vw);left:50%;right:auto;top:auto;transform:translateX(-50%)}
section[style*="--hs08-fixed-text-pos:br"] .hs08-fixed-body,section[style*="--hs08-fixed-text-pos: br"] .hs08-fixed-body{bottom:var(--hs08-fixed-text-offset,2vw);right:var(--hs08-fixed-text-offset,2vw);left:auto;top:auto;transform:none}
section[style*="--hs08-slide-text-pos:tl"] .hs08-slide-text,section[style*="--hs08-slide-text-pos: tl"] .hs08-slide-text{top:var(--hs08-slide-text-offset,2vw);left:var(--hs08-slide-text-offset,2vw);right:auto;bottom:auto;transform:none}
section[style*="--hs08-slide-text-pos:tc"] .hs08-slide-text,section[style*="--hs08-slide-text-pos: tc"] .hs08-slide-text{top:var(--hs08-slide-text-offset,2vw);left:50%;right:auto;bottom:auto;transform:translateX(-50%)}
section[style*="--hs08-slide-text-pos:tr"] .hs08-slide-text,section[style*="--hs08-slide-text-pos: tr"] .hs08-slide-text{top:var(--hs08-slide-text-offset,2vw);right:var(--hs08-slide-text-offset,2vw);left:auto;bottom:auto;transform:none}
section[style*="--hs08-slide-text-pos:l"] .hs08-slide-text,section[style*="--hs08-slide-text-pos: l"] .hs08-slide-text{top:50%;left:var(--hs08-slide-text-offset,2vw);right:auto;bottom:auto;transform:translateY(-50%)}
section[style*="--hs08-slide-text-pos:c"] .hs08-slide-text,section[style*="--hs08-slide-text-pos: c"] .hs08-slide-text{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%,-50%)}
section[style*="--hs08-slide-text-pos:r"] .hs08-slide-text,section[style*="--hs08-slide-text-pos: r"] .hs08-slide-text{top:50%;right:var(--hs08-slide-text-offset,2vw);left:auto;bottom:auto;transform:translateY(-50%)}
section[style*="--hs08-slide-text-pos:bl"] .hs08-slide-text,section[style*="--hs08-slide-text-pos: bl"] .hs08-slide-text{bottom:var(--hs08-slide-text-offset,2vw);left:var(--hs08-slide-text-offset,2vw);right:auto;top:auto;transform:none}
section[style*="--hs08-slide-text-pos:bc"] .hs08-slide-text,section[style*="--hs08-slide-text-pos: bc"] .hs08-slide-text{bottom:var(--hs08-slide-text-offset,2vw);left:50%;right:auto;top:auto;transform:translateX(-50%)}
section[style*="--hs08-slide-text-pos:br"] .hs08-slide-text,section[style*="--hs08-slide-text-pos: br"] .hs08-slide-text{bottom:var(--hs08-slide-text-offset,2vw);right:var(--hs08-slide-text-offset,2vw);left:auto;top:auto;transform:none}
@media(max-width:767px){
  .hs08-grid{grid-template-columns:1fr !important;min-height:0 !important}
  .hs08-slider-wrap{order:1;min-height:var(--hs08-height,60svh)}
  .hs08-fixed{order:2;height:280px}
}

/* ═══════════════════════════════════════════════════════════════════
   §47  HORIZONTAL LIST  (HL-01 → HL-11)
   ═══════════════════════════════════════════════════════════════════ */

/* ── TOC nav ───────────────────────────────────────────────────── */
.toc strong{font-size:var(--fs-xs,.7rem);font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:rgba(255,255,255,.4);margin-right:.5rem}
.toc a{font-size:var(--fs-xs,.75rem);font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;transition:color .15s}
.toc a:hover{color:#fcd703}

/* ── Section backgrounds ───────────────────────────────────────── */
.sec{margin:0}

.sec.charcoal{background:#1e2535}
.sec.charcoal .sec-label{color:rgba(255,255,255,.2);border-bottom-color:rgba(255,255,255,.06)}

/* ── Shared inner wrapper ──────────────────────────────────────── */
.hl-wrap{max-width:900px;margin:0 auto;padding:3rem clamp(1.25rem,4vw,2.5rem)}

/* ── SVG defaults for icon SVGs ────────────────────────────────── */
.hl01-icon svg,.hl03-arrow svg,.hl01-link svg{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hl04-icon svg,.hl10-icon svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hl10-chevron{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hl06-check svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hl09-label svg{fill:none;stroke:currentColor;stroke-width:2}

/* ══════════════════
   HL-01 Icon list
══════════════════ */
.hl01-list{display:flex;flex-direction:column;gap:0}
.hl01-item{display:flex;gap:1.25rem;padding:1.5rem 0;border-bottom:1px solid #f1f5f9}
.hl01-item:last-child{border-bottom:none}
.hl01-icon{flex-shrink:0;width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}
.hl01-icon svg{width:22px;height:22px}
.hl01-title{font-size:1rem;font-weight:700;color:var(--text-strong,#111827);margin-bottom:.35rem}
.hl01-desc{line-height:1.65;margin-bottom:.75rem}
.hl01-link{display:inline-flex;align-items:center;gap:.25rem;font-size:var(--hl01-fs-sm,var(--fs-sm));font-weight:700;color:var(--primary-dark,#b8940a);text-decoration:none}
.hl01-link svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.5}
.hl01-link:hover{text-decoration:underline}

/* ══════════════════
   HL-02 Bold number
══════════════════ */
.hl02-list{display:grid;grid-template-columns:repeat(var(--hl02-cols-mobile,1),1fr);gap:var(--hl02-gap,1.5rem)}
@media(min-width:640px){.hl02-list{grid-template-columns:repeat(var(--hl02-cols-tablet,2),1fr)}}
@media(min-width:1024px){.hl02-list{grid-template-columns:repeat(var(--hl02-cols-desktop,4),1fr)}}
@media(min-width:1280px){.hl02-list{grid-template-columns:repeat(var(--hl02-cols-wide,4),1fr)}}
.hl02-item{display:flex;flex-direction:column;gap:.75rem}
.hl02-num{font-size:2.5rem;font-weight:900;line-height:1;letter-spacing:-.04em}
.hl02-line{height:2px;width:100%;background:#e5e7eb;border-radius:2px}
.hl02-tag{font-size:var(--hl02-fs-xs,var(--fs-xs));font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted,#6b7280)}
.hl02-title{font-size:var(--hl02-fs-body,var(--fs-body));font-weight:700;color:var(--text-strong,#111827);line-height:1.4;margin-top:.2rem}
.hl02-desc{line-height:1.65;margin-top:.35rem}

/* ══════════════════
   HL-03 Thumbnail list
══════════════════ */
.hl03-list{display:flex;flex-direction:column;gap:0}
.hl03-item{display:flex;align-items:center;gap:1.25rem;padding:1.1rem 0;border-bottom:1px solid #f1f5f9;cursor:pointer;transition:background .15s}
.hl03-item:last-child{border-bottom:none}
.hl03-item:hover{background:#fafafa}
.hl03-thumb{flex-shrink:0;width:100px;height:66px;border-radius:8px;overflow:hidden}
.hl03-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.hl03-cat{font-size:var(--hl03-fs-xs,var(--fs-xs));font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--primary-dark,#b8940a);margin-bottom:.3rem}
.hl03-title{font-weight:600;line-height:1.45}
.hl03-meta{display:flex;gap:.5rem;font-size:var(--hl03-fs-xs,var(--fs-xs));color:var(--text-muted,#9ca3af);margin-top:.3rem}
.hl03-arrow{flex-shrink:0;margin-left:auto;width:32px;height:32px;border-radius:50%;background:var(--surface-color,#f1f5f9);display:flex;align-items:center;justify-content:center;transition:background .2s}
.hl03-item:hover .hl03-arrow{background:#e5e7eb}
.hl03-arrow svg{width:16px;height:16px;stroke:#6b7280;fill:none;stroke-width:2.5;stroke-linecap:round}

/* ══════════════════
   HL-04 Coloured icon box
══════════════════ */
.hl04-list{display:flex;flex-direction:column;gap:0}
.hl04-item{display:flex;align-items:flex-start;gap:1.1rem;padding:1.25rem 0;border-bottom:1px solid var(--card-border,#e2e8f0)}
.hl04-item:last-child{border-bottom:none}
.hl04-icon{flex-shrink:0;width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center}
.hl04-icon svg{width:20px;height:20px}
.hl04-title{font-size:var(--fs-btn,.92rem);font-weight:700;color:var(--text-strong,#111827);margin-bottom:.3rem}
.hl04-desc{line-height:1.6}
.hl04-badge{flex-shrink:0;margin-left:auto;align-self:flex-start;font-size:var(--hl04-fs-xs,var(--fs-xs));font-weight:700;letter-spacing:.06em;padding:.28rem .7rem;border-radius:99px}

/* ══════════════════
   HL-05 Step process
══════════════════ */
.hl05-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;position:relative}
.hl05-step{position:relative;padding-top:1rem;padding-right:1.5rem}
.hl05-num-wrap{position:relative;margin-bottom:1.25rem}
.hl05-num-wrap::after{content:'';position:absolute;left:calc(44px + .75rem);top:50%;width:calc(100% - 44px - .75rem);height:2px;background:#e5e7eb;transform:translateY(-50%)}
.hl05-step:last-child .hl05-num-wrap::after{display:none}
.hl05-num{width:44px;height:44px;border-radius:50%;background:var(--text-strong,#111827);color:#fff;font-size:var(--hl05-fs-sm,var(--fs-sm));font-weight:800;display:flex;align-items:center;justify-content:center;position:relative;z-index:1}
.hl05-title{font-size:var(--fs-btn,.92rem);font-weight:700;color:var(--text-strong,#111827);margin-bottom:.4rem}
.hl05-desc{line-height:1.6}

/* ══════════════════
   HL-06 Split feature
══════════════════ */
.hl06-grid{display:grid;grid-template-columns:1fr 1fr}
.hl06-col{display:flex;flex-direction:column}
.hl06-row{display:flex;gap:1rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--card-border,#e2e8f0);align-items:flex-start}
.hl06-col:first-child .hl06-row{border-right:1px solid var(--card-border,#e2e8f0)}
.hl06-check{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:#f0fdf4;display:flex;align-items:center;justify-content:center;margin-top:.1rem}
.hl06-check svg{width:14px;height:14px}
.hl06-title{font-size:var(--hl06-fs-sm,var(--fs-sm));font-weight:700;color:var(--text-strong,#111827);margin-bottom:.25rem}
.hl06-desc{line-height:1.6}

/* ══════════════════
   HL-07 Dark number card
══════════════════ */
.hl07-list{display:flex;flex-direction:column;gap:0}
.hl07-item{display:flex;align-items:flex-start;gap:1.25rem;padding:1.25rem 0;border-bottom:1px solid rgba(255,255,255,.06)}
.hl07-item:last-child{border-bottom:none}
.hl07-num{flex-shrink:0;font-size:2rem;font-weight:900;line-height:1;letter-spacing:-.04em;min-width:2.5rem}
.hl07-title{font-size:var(--hl07-fs-body,var(--fs-body));font-weight:700;color:#fff;margin-bottom:.35rem}
.hl07-desc{color:rgba(255,255,255,.5);line-height:1.65}
.hl07-pill{flex-shrink:0;margin-left:auto;align-self:flex-start;font-size:var(--hl07-fs-xs,var(--fs-xs));font-weight:700;letter-spacing:.06em;padding:.3rem .8rem;border-radius:99px;white-space:nowrap}

/* ══════════════════
   HL-08 Timeline
══════════════════ */
.hl08-timeline{display:flex;flex-direction:column;gap:0;position:relative;padding-left:1rem}
.hl08-timeline::before{content:'';position:absolute;left:calc(7rem + 5px);top:0;bottom:0;width:2px;background:var(--hl08-line,#e5e7eb)}
.hl08-item{display:flex;gap:1.5rem;padding:1rem 0 1.5rem;position:relative}
.hl08-date{flex-shrink:0;width:4.5rem;text-align:right;padding-top:.25rem}
.hl08-yr{font-size:1rem;font-weight:900;color:var(--text-strong,#111827);line-height:1}
.hl08-mo{font-size:var(--hl08-fs-xs,var(--fs-xs));font-weight:600;color:var(--text-muted,#9ca3af);text-transform:uppercase;letter-spacing:.08em;margin-top:.1rem}
.hl08-content{position:relative;padding-left:1.5rem}
.hl08-content::before{content:'';position:absolute;left:-1px;top:.4rem;width:12px;height:12px;border-radius:50%;background:var(--hl08-dot,#fcd703);border:2px solid #fff;box-shadow:0 0 0 2px #e5e7eb}
.hl08-tag{font-size:var(--hl08-fs-xs,var(--fs-xs));font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--primary-dark,#b8940a);margin-bottom:.3rem}
.hl08-title{font-size:var(--hl08-fs-body,var(--fs-body));font-weight:700;color:var(--text-strong,#111827);margin-bottom:.4rem}
.hl08-desc{line-height:1.65}

/* ══════════════════
   HL-09 Skill bars
══════════════════ */
.hl09-list{display:flex;flex-direction:column;gap:1.1rem}
.hl09-item{display:flex;align-items:center;gap:1rem}
.hl09-label{display:flex;align-items:center;gap:.5rem;min-width:180px;font-size:var(--hl09-fs-sm,var(--fs-sm));font-weight:600;color:var(--text-color,#374151)}
.hl09-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.hl09-bar-track{flex:1;height:8px;background:#e5e7eb;border-radius:99px;overflow:hidden}
.hl09-bar-fill{height:100%;border-radius:99px;width:0;transition:width 1.2s cubic-bezier(.4,0,.2,1)}
.hl09-pct{font-size:var(--hl09-fs-sm,var(--fs-sm));font-weight:700;color:var(--text-color,#374151);min-width:2.5rem;text-align:right}

/* ══════════════════
   HL-10 Dark accordion
══════════════════ */
.hl10-list{display:flex;flex-direction:column;gap:.5rem}
.hl10-item{border-radius:10px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);overflow:hidden;transition:background .2s}
.hl10-item.ac-open{background:rgba(255,255,255,.07)}
.hl10-header{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;cursor:pointer;user-select:none}
.hl10-left{display:flex;align-items:center;gap:.85rem;flex:1;min-width:0}
.hl10-icon{flex-shrink:0;width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center}
.hl10-icon svg{width:18px;height:18px}
.hl10-htitle{font-size:var(--hl10-fs-body,var(--fs-body));font-weight:700;color:#fff}
.hl10-hsub{font-size:var(--hl10-fs-xs,var(--fs-xs));color:rgba(255,255,255,.38);margin-top:.1rem}
.hl10-tag{flex-shrink:0;font-size:var(--hl10-fs-xs,var(--fs-xs));font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.25rem .65rem;border-radius:99px;background:rgba(255,255,255,.08);color:rgba(255,255,255,.4)}
.hl10-chevron{flex-shrink:0;width:18px;height:18px;stroke:rgba(255,255,255,.3);transition:transform .25s;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.hl10-item.ac-open .hl10-chevron{transform:rotate(180deg)}
.hl10-body{max-height:0;overflow:hidden;transition:max-height .35s ease,padding .25s}
.hl10-item.ac-open .hl10-body{padding:0 1.25rem 1.25rem}
.hl10-point{color:rgba(255,255,255,.55);padding:.4rem 0 .4rem 1.1rem;position:relative;line-height:1.55}
.hl10-point::before{content:'';position:absolute;left:0;top:.75rem;width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.2)}

/* Display-font pool for HL-11's "Range Font" picker -- self-hosted
   (embed/fonts/, also registered in configs/fonts.json for the org-wide
   Theme font picker), declared here as plain static @font-face so they
   render even when the org's chosen theme font is something else
   entirely (this section picks its OWN font independent of the theme's
   body/heading choice). Paths are relative to THIS file's own served
   location (/vsp/css/vendor/theme.css), resolving to /vsp/fonts/...
   regardless of any base-path prefix in front of /vsp/. */
@font-face{font-family:"Fredoka";src:url("../../fonts/Fredoka-700.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Baloo 2";src:url("../../fonts/Baloo2-700.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Luckiest Guy";src:url("../../fonts/LuckiestGuy-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Bungee";src:url("../../fonts/Bungee-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Sora";src:url("../../fonts/Sora-700.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Manrope";src:url("../../fonts/Manrope-700.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"DM Serif Display";src:url("../../fonts/DMSerifDisplay-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}

/* ══════════════════
   HL-11 Number range
══════════════════ */
.hl11-list{display:grid;grid-template-columns:repeat(var(--hl11-cols-mobile,2),1fr);row-gap:var(--hl11-row-gap,1.5rem)}
@media(min-width:640px){.hl11-list{grid-template-columns:repeat(var(--hl11-cols-tablet,3),1fr)}}
@media(min-width:1024px){.hl11-list{grid-template-columns:repeat(var(--hl11-cols-desktop,6),1fr)}}
@media(min-width:1280px){.hl11-list{grid-template-columns:repeat(var(--hl11-cols-wide,6),1fr)}}
.hl11-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;padding:.5rem .5rem;text-decoration:none;border-left:1px solid var(--hl11-divider,#e5e7eb);transition:opacity .15s}
.hl11-item:first-child{border-left:none}
.hl11-item:hover{opacity:.72}
.hl11-range{font-family:var(--hl11-range-font,"Fredoka"),system-ui,sans-serif;font-size:var(--hl11-range-fs,clamp(1.5rem,4.5vw,2.25rem));font-weight:700;line-height:1;letter-spacing:-.01em;color:var(--hl11-range-color,#ec4899);font-variant-numeric:tabular-nums;white-space:nowrap}
.hl11-caption{font-size:var(--hl11-caption-fs,var(--fs-xs));font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--hl11-caption-color,#9ca3af)}
.hl11-caption:empty{display:none}
@media(min-width:640px){.hl11-item{padding:.5rem 1rem}}
/* Dividers only look right when every item sits in one single row --
   the moment items wrap onto a second row (mobile always, and tablet
   whenever the item count exceeds its 3-per-row default), whichever
   item starts the new row inherits a leftover border-left that visually
   reads as a stray line, not a real separator. Kept only from desktop
   up, where the default 6-per-row config typically matches this
   template's usual 5-6 item count (no wrap). */
@media(max-width:1023px){.hl11-item{border-left:none}}

/* ══════════════════
   HL-12 Number dash title
══════════════════ */
/* Content-sized items (not equal-width grid columns) -- a grid split into
   even 1fr columns left a huge gap before the divider whenever an item's
   text was shorter than its column, while the NEXT item's text started
   right after the divider with only its own fixed padding -- visibly
   unequal gaps either side of the same line. Flex items size to their
   own content instead, so the divider always sits exactly --hl12-gap
   away from the text on both sides, regardless of how long any item's
   title is. flex-wrap covers narrow screens (items drop to their own
   row when they no longer fit). */
.hl12-list{display:flex;flex-wrap:wrap;justify-content:space-between;row-gap:var(--hl12-row-gap,1.5rem)}
.hl12-item{display:flex;flex-direction:column;gap:.3rem;padding:0 var(--hl12-gap,1.5rem);border-left:1px solid var(--hl12-divider,#e5e7eb)}
.hl12-item:first-child{padding-left:0;border-left:none}
.hl12-head{display:flex;align-items:baseline;gap:.5rem}
.hl12-num{font-family:var(--font-voice,Georgia,serif);font-size:var(--hl12-num-fs,1.15rem);color:var(--hl12-num-color,#111827)}
.hl12-dash{font-weight:700}
.hl12-title{font-family:var(--font-voice,Georgia,serif);font-size:var(--hl12-title-fs,1.15rem);color:var(--hl12-title-color,#111827)}
.hl12-caption{font-size:var(--hl12-caption-fs,var(--fs-xs));color:var(--hl12-caption-color,#9ca3af)}
.hl12-caption:empty{display:none}

/* ── HL responsive ───────────────────────────────────────────── */
@media(max-width:768px){
  .hl05-steps{grid-template-columns:1fr 1fr}
  .hl05-step:nth-child(2) .hl05-num-wrap::after{display:none}
  .hl06-grid{grid-template-columns:1fr}
  .hl06-col:first-child .hl06-row{border-right:none}
}
@media(max-width:480px){
  .hl05-steps{grid-template-columns:1fr}
  .hl05-num-wrap::after{display:none !important}
  .hl09-label{min-width:130px}
  .hl03-arrow{display:none}
  .hl04-item{flex-wrap:wrap}
  .hl04-badge{margin-left:0;margin-top:.5rem}
  .hl07-item{flex-wrap:wrap}
  .hl07-pill{margin-left:0;margin-top:.5rem}
  .hl08-timeline::before{left:calc(5.75rem + 5px)}
  .hl08-date{width:3.25rem}
  .hl10-tag{display:none}
}

/* ═══════════════════════════════════════════════════════════════════
   §48  ICON WITH TEXT  (IT-01 → IT-13)
   ═══════════════════════════════════════════════════════════════════ */

/* ── Shared ────────────────────────────────────────────────────── */
.it-wrap{max-width:1100px;margin:0 auto;padding:1.5rem}
.sec.dark{background:#0f172a}
.sec.dark .sec-label{color:rgba(255,255,255,.2);border-bottom-color:rgba(255,255,255,.06)}

/* Global SVG reset for all IT icons */
.it-svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;display:block}

/* Shared text primitives */
.eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.68rem));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.18em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--eyebrow-color-dark,var(--primary-dark,#b8940a));margin-bottom:.75rem}
/* Site-wide eyebrow marker — the small decorative shape before every
   eyebrow's text (a line by default). ONE rule reaches every eyebrow in the
   entire library via the data-pageedit-label="Eyebrow" attribute every
   eyebrow element already carries in its saved markup — no per-template
   markup or config field needed, and it already reaches every
   already-published page (this is an attribute already present in saved
   HTML, unlike a style-config field which needs a schema self-heal + isn't
   retroactive to old markup).
   Shape/visibility are controlled entirely by Settings → Colors Extended →
   Eyebrow marker (EyebrowMarkerEnabled/Shape in tenant.ThemeConfig), which
   resolves to the --eyebrow-marker-* vars below at :root. The marker's own
   color is deliberately NEVER a separate setting — background/border use
   currentColor, so it always automatically matches whatever THIS eyebrow's
   own text color resolves to (each template's own Light/Dark/Custom
   choice), never fighting or duplicating that per-template chain.
   :not(.cst-eyebrow) excludes the one eyebrow in the library styled as a
   filled/outlined pill badge (full-bleed-slider) — a line marker inside a
   rounded pill background would look broken; every other eyebrow in the
   library is plain text with no badge chrome, so is safe to flex+mark. */
[data-pageedit-label="Eyebrow"]:not(.cst-eyebrow){display:inline-flex;align-items:center;gap:var(--eyebrow-gap,.5rem)}
[data-pageedit-label="Eyebrow"]:not(.cst-eyebrow)::before{content:'';display:var(--eyebrow-marker-display,block);flex-shrink:0;width:var(--eyebrow-marker-w,1.75rem);height:var(--eyebrow-marker-h,2px);border-radius:var(--eyebrow-marker-radius,0);background:var(--eyebrow-marker-bg,currentColor);border:var(--eyebrow-marker-border,none);transform:var(--eyebrow-marker-transform,none);-webkit-mask-image:var(--eyebrow-marker-mask,none);mask-image:var(--eyebrow-marker-mask,none);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}
.sec-h{font-size:clamp(1.5rem,3vw,2.2rem);font-weight:900;color:var(--text-strong,#111827);line-height:1.15;margin-bottom:.75rem}
.sec-sub{color:var(--text-color,#374151);line-height:1.7;margin-bottom:2.5rem}
.intro-center{text-align:center;margin-bottom:2.75rem}
.intro-center .sec-h{margin-bottom:.5rem}

/* ── IT-01 · 3-Col Icon Top ────────────────────────────────────── */
.it01-grid{display:grid;grid-template-columns:repeat(var(--it01-cols-mobile,1),1fr);gap:2rem}
.it01-item{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.75rem}
.it01-icon{width:52px;height:52px;border-radius:14px;background:var(--it01-icon-bg,var(--icon-bg,var(--surface-color,#f8fafc)));border:1px solid var(--card-border,#e5e7eb);display:flex;align-items:center;justify-content:center;color:var(--it01-icon-color,var(--icon-color,var(--text-strong,#111827)));flex-shrink:0}
.it01-icon svg{width:35px;height:35px}
.it01-item h3{font-size:var(--it01-fs-body,var(--fs-body));font-weight:700;color:var(--text-strong,#111827)}
.it01-item p{color:var(--text-color,#374151);line-height:1.65}

/* ── IT-02 · Icon Left List ────────────────────────────────────── */
.it02-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.25rem 2.5rem}
.it02-item{display:flex;gap:1rem;padding:.85rem .85rem;border-bottom:1px solid #f1f5f9;align-items:flex-start}
.it02-icon{flex-shrink:0;width:52px;height:52px;border-radius:10px;background:var(--surface-color,#f8fafc);border:1px solid var(--card-border,#e5e7eb);display:flex;align-items:center;justify-content:center;color:var(--text-strong,#111827);padding:13px;box-sizing:border-box}
.it02-icon svg{width:100%;height:100%}
.it02-body h3{font-size:var(--fs-body,.9rem);font-weight:700;color:var(--text-strong,#111827);margin-bottom:.2rem}
.it02-body p{font-size:var(--fs-sm,.82rem);color:var(--text-color,#374151);line-height:1.6}

/* ── IT-03 · 4-Col Colored Box Cards ──────────────────────────── */
.it03-grid{display:grid;grid-template-columns:repeat(var(--it03-cols-mobile,1),1fr);gap:1.25rem}
.it03-card{background:var(--card-bg,#fff);border:var(--it03-card-border-w,1px) solid var(--it03-card-border-c,#e5e7eb);border-radius:var(--it03-card-radius,.875rem);box-shadow:var(--it03-card-shadow,none);padding:1.5rem;display:flex;flex-direction:column;gap:.6rem;transition:box-shadow .2s,transform .2s}
.it03-card:hover{box-shadow:0 8px 32px rgba(0,0,0,.09);transform:translateY(-3px)}
.it03-icon{width:44px;height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;margin-bottom:.25rem}
.it03-icon svg{width:20px;height:20px;stroke:var(--it03-item-icon-color,#fff)}
.it03-icon.c1{background:#2563eb}
.it03-icon.c2{background:#9333ea}
.it03-icon.c3{background:#0891b2}
.it03-icon.c4{background:#f59e0b}
.it03-card h3{font-size:var(--fs-btn,.92rem);font-weight:700;color:var(--text-strong,#111827)}
.it03-card p{color:var(--text-color,#374151);line-height:1.6;flex:1}
.it03-link{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--it03-fs-sm,var(--fs-sm));font-weight:700;color:var(--primary-dark,#b8940a);text-decoration:none;margin-top:.25rem}
.it03-link svg{width:14px;height:14px}
.it03-link:hover{text-decoration:underline}

/* ── IT-04 · Soft Badge Glow ────────────────────────────────────── */
.it04-grid{display:grid;grid-template-columns:repeat(var(--it04-cols-mobile,2),1fr);gap:2rem 1.25rem}
.it04-item{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.85rem;padding:1rem 0}
.it04-badge-wrap{position:relative;width:64px;height:64px;display:flex;align-items:center;justify-content:center}
.it04-glow{display:var(--it04-glow-display,none);position:absolute;inset:-10px;border-radius:var(--it04-badge-radius,1.25rem);background:var(--it04-item-badge-bg,var(--it04-badge-bg,var(--icon-bg,#fde3e8)));animation:it04-pulse 2.2s ease-in-out infinite}
.it04-eyebrow{color:var(--it04-eyebrow-color,var(--eyebrow-color-dark,#b8940a))}
section[style*="--it04-eyebrow-mode:light"] .it04-eyebrow,section[style*="--it04-eyebrow-mode: light"] .it04-eyebrow{color:var(--it04-eyebrow-color,var(--eyebrow-color-light,#b8940a))}
.it04-heading{color:var(--it04-heading-color,#111827)}
.it04-badge{position:relative;width:100%;height:100%;border-radius:var(--it04-badge-radius,1.25rem);display:flex;align-items:center;justify-content:center}
.it04-badge svg{width:26px;height:26px;stroke:var(--it04-item-icon-color,var(--it04-icon-color,var(--icon-color,#9f1239)))}
.it04-label{font-size:var(--it04-fs-sm,var(--fs-sm));font-weight:600;color:var(--it04-label-color,#111827)}
@keyframes it04-pulse{0%,100%{transform:scale(1);opacity:.55}50%{transform:scale(1.18);opacity:0}}
@media (prefers-reduced-motion:reduce){.it04-glow{animation:none!important;opacity:.35}}

/* ── IT-05 · Numbered Steps ────────────────────────────────────── */
.it05-grid{display:grid;grid-template-columns:repeat(var(--it05-cols-mobile,1),1fr);gap:1.5rem;position:relative}
.it05-grid::before{content:'';position:absolute;top:1.5rem;left:2rem;right:2rem;height:2px;background:var(--it05-line,#e5e7eb)}
.it05-item{display:flex;flex-direction:column;gap:.6rem;padding-top:.5rem}
.it05-num{width:48px;height:48px;border-radius:50%;background:var(--primary-color,#fcd703);color:var(--text-strong,#111827);font-size:var(--it05-fs-sm,var(--fs-sm));font-weight:900;display:flex;align-items:center;justify-content:center;position:relative;z-index:1;margin-bottom:.5rem;box-shadow:0 0 0 4px #fff,0 0 0 6px #e5e7eb}
.it05-item h3{font-size:var(--fs-btn,.92rem);font-weight:700;color:var(--text-strong,#111827)}
.it05-item p{color:var(--text-color,#374151);line-height:1.6}

/* ── IT-06 · Large Icon Bold Cards ────────────────────────────── */
.it06-grid{display:grid;grid-template-columns:repeat(var(--it06-cols-mobile,1),1fr);gap:1.5rem}
.it06-card{border-radius:var(--it06-card-radius,1.125rem);border:var(--it06-card-border-w,0px) solid var(--it06-card-border-c,transparent);box-shadow:var(--it06-card-shadow,none);padding:2.25rem 2rem;position:relative;overflow:hidden;min-height:280px;display:flex;flex-direction:column;gap:.75rem}
.it06-card.bg1{background:linear-gradient(135deg,#1e3a5f,#2563eb)}
.it06-card.bg2{background:linear-gradient(135deg,#1a1a2e,#6d28d9)}
.it06-card.bg3{background:linear-gradient(135deg,#064e3b,#059669)}
.it06-bg-icon{position:absolute;right:-1rem;bottom:-1rem;opacity:.08;color:#fff;pointer-events:none}
.it06-bg-icon svg{width:160px;height:160px}
.it06-tag{font-size:var(--it06-fs-xs,var(--fs-xs));font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,1);margin-bottom:.25rem}
.it06-icon-wrap{width:52px;height:52px;border-radius:14px;background:var(--it06-item-icon-bg,rgba(255,255,255,.12));display:flex;align-items:center;justify-content:center;color:var(--it06-item-icon-color,#fff)}
.it06-icon-wrap svg{width:24px;height:24px}
.it06-card h3{font-size:1.05rem;font-weight:800;color:var(--it06-item-fg,#fff);line-height:1.3}
.it06-card p{color:var(--it06-item-fg,#fff);line-height:1.65;flex:1}

/* ── IT-07 · Minimal Line Split ────────────────────────────────── */
.it07-split{display:grid;grid-template-columns:1fr 1.4fr;gap:4rem;align-items:center}
.it07-intro h2{font-size:clamp(1.5rem,3vw,2.2rem);font-weight:900;color:var(--text-strong,#111827);line-height:1.15;margin-bottom:1rem}
.it07-intro p{color:var(--text-color,#374151);line-height:1.7;margin-bottom:1.5rem}
.it07-cta{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--it07-fs-sm,var(--fs-sm));font-weight:700;color:var(--text-strong,#111827);text-decoration:none}
.it07-cta svg{width:16px;height:16px}
.it07-cta:hover{color:var(--primary-dark,#b8940a)}
.it07-list{display:flex;flex-direction:column;gap:0}
.it07-item{display:flex;gap:1.1rem;padding:1.25rem 0;border-bottom:1px solid #f1f5f9;align-items:flex-start}
.it07-item:last-child{border-bottom:none}
.it07-icon{flex-shrink:0;width:40px;height:40px;border-radius:10px;background:var(--it07-icon-bg,var(--icon-bg,var(--surface-color,#f8fafc)));border:1px solid var(--card-border,#e5e7eb);display:flex;align-items:center;justify-content:center;color:var(--it07-icon-color,var(--icon-color,var(--text-strong,#111827)))}
.it07-icon svg{width:18px;height:18px}
.it07-body h3{font-size:var(--it07-fs-body,var(--fs-body));font-weight:700;color:var(--text-strong,#111827);margin-bottom:.25rem}
.it07-body p{color:var(--text-color,#374151);line-height:1.6}

/* ── IT-08 · Bordered Offset Number ───────────────────────────── */
.it08-grid{display:grid;grid-template-columns:repeat(var(--it08-cols-mobile,1),1fr);gap:1.25rem}
.it08-card{background:var(--card-bg,#fff);border:var(--it08-card-border-w,1px) solid var(--it08-card-border-c,#e5e7eb);border-radius:var(--it08-card-radius,.875rem);box-shadow:var(--it08-card-shadow,none);padding:1.75rem 1.5rem 1.5rem;position:relative}
.it08-num{position:absolute;top:1rem;right:1.25rem;font-size:2rem;font-weight:900;color:var(--it08-num-color,#f1f5f9);line-height:1;letter-spacing:-.04em}
.it08-icon{width:44px;height:44px;border-radius:11px;background:var(--it08-item-icon-bg,#111827);display:flex;align-items:center;justify-content:center;color:var(--it08-item-icon-color,#fff);margin-bottom:1rem}
.it08-icon svg{width:20px;height:20px;stroke:var(--it08-item-icon-color,#fff)}
.it08-card h3{font-size:var(--fs-btn,.92rem);font-weight:700;color:var(--text-strong,#111827);margin-bottom:.4rem}
.it08-card p{color:var(--text-color,#374151);line-height:1.6}

/* ── IT-09 · Split Image + Grid ────────────────────────────────── */
.it09-split{display:grid;grid-template-columns:1fr 1fr;min-height:500px}
.it09-img{overflow:hidden}
.it09-img img{width:100%;height:100%;object-fit:cover;display:block}
.it09-body{padding:3.5rem clamp(2rem,4vw,3rem);display:flex;flex-direction:column;justify-content:center}
.it09-body h2{font-size:clamp(1.4rem,2.5vw,1.9rem);font-weight:900;color:var(--text-strong,#111827);margin:.5rem 0}
.it09-body>p{font-size:var(--fs-sm,.88rem);color:var(--text-muted,#6b7280);line-height:1.65;margin-bottom:1.75rem}
.it09-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem 1.5rem}
.it09-item{display:flex;gap:.75rem;align-items:flex-start}
.it09-dot{flex-shrink:0;width:32px;height:32px;border-radius:8px;background:color-mix(in srgb,var(--primary-color,#fcd703) 14%,transparent);display:flex;align-items:center;justify-content:center;color:var(--primary-dark,#b8940a)}
.it09-dot svg{width:15px;height:15px}
.it09-item h4{font-size:var(--fs-sm,.84rem);font-weight:700;color:var(--text-strong,#111827);margin-bottom:.15rem}
.it09-item p{font-size:var(--fs-xs,.78rem);color:var(--text-color,#374151);line-height:1.55}

/* ── IT-10 · Alternating Rows ──────────────────────────────────── */
.it10-row{display:flex;align-items:center;background:var(--card-bg,#fff);gap:0}
.it10-row.rev{flex-direction:row-reverse;background:var(--surface-color,#f8fafc)}
.it10-icon-panel{flex:0 0 280px;display:flex;align-items:center;justify-content:center;padding:3rem;color:var(--text-strong,#111827);background:inherit;min-height:220px}
.it10-text{flex:1;padding:3rem clamp(1.5rem,4vw,3rem)}
.it10-text .eyebrow{margin-bottom:.5rem}
.it10-text h3{font-size:clamp(1.15rem,2.5vw,1.6rem);font-weight:800;color:var(--text-strong,#111827);line-height:1.25;margin-bottom:.75rem}
.it10-text p{font-size:var(--fs-sm,.88rem);color:var(--text-color,#374151);line-height:1.7;margin-bottom:1.1rem}
.it10-link{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--fs-sm,.82rem);font-weight:700;color:var(--text-strong,#111827);text-decoration:none}
.it10-link svg{width:16px;height:16px}
.it10-link:hover{color:var(--primary-dark,#b8940a)}

/* ── IT-11 · Checklist Split ───────────────────────────────────── */
.it11-cols{display:grid;grid-template-columns:1fr 1.5fr;gap:4rem;align-items:start}
.it11-intro h2{font-size:clamp(1.4rem,2.5vw,1.9rem);font-weight:900;color:var(--text-strong,#111827);line-height:1.2;margin-bottom:.75rem}
.it11-intro p{font-size:var(--fs-sm,.88rem);color:var(--text-color,#374151);line-height:1.7}
.it11-list{display:flex;flex-direction:column;gap:.25rem}
.it11-item{display:flex;gap:.85rem;padding:.85rem 0;border-bottom:1px solid #f1f5f9;align-items:flex-start}
.it11-item:last-child{border-bottom:none}
.it11-check{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:color-mix(in srgb,var(--primary-color,#fcd703) 18%,transparent);display:flex;align-items:center;justify-content:center;color:var(--primary-dark,#b8940a);margin-top:.1rem}
.it11-check svg{width:11px;height:11px}
.it11-body h4{font-size:var(--fs-sm,.88rem);font-weight:700;color:var(--text-strong,#111827);margin-bottom:.2rem}
.it11-body p{font-size:var(--fs-sm,.8rem);color:var(--text-color,#374151);line-height:1.6}

/* ── IT-12 · Pill Tag SaaS ─────────────────────────────────────── */
.it12-grid{display:grid;grid-template-columns:repeat(var(--it12-cols-mobile,1),1fr);gap:1.5rem}
.it12-item{background:var(--card-bg,#fff);border:var(--it12-card-border-w,1px) solid var(--it12-card-border-c,#e5e7eb);border-radius:var(--it12-card-radius,.875rem);box-shadow:var(--it12-card-shadow,none);padding:1.5rem;display:flex;flex-direction:column;gap:.6rem;transition:box-shadow .2s}
.it12-item:hover{box-shadow:0 6px 24px rgba(0,0,0,.07)}
.it12-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.28rem .7rem .28rem .3rem;border-radius:99px;background:var(--surface-color,#f8fafc);border:1px solid var(--card-border,#e5e7eb);width:fit-content;margin-bottom:.25rem}
.it12-pill-icon{width:22px;height:22px;border-radius:50%;background:var(--it12-item-pill-bg,#111827);display:flex;align-items:center;justify-content:center;color:var(--it12-item-pill-icon-color,#fff)}
.it12-pill-icon svg{width:11px;height:11px}
.it12-pill-label{font-size:var(--it12-fs-xs,var(--fs-xs));font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted,#6b7280)}
.it12-item h3{font-size:var(--fs-btn,.92rem);font-weight:700;color:var(--text-strong,#111827)}
.it12-item p{color:var(--text-color,#374151);line-height:1.6;flex:1}

/* ── IT-13 · Accordion + Image ─────────────────────────────────── */
.it13-cols{display:grid;grid-template-columns:1fr 1.2fr;gap:3.5rem;align-items:start}
.it13-img{border-radius:16px;overflow:hidden;position:sticky;top:5rem}
.it13-img img{width:100%;height:100%;object-fit:cover;display:block}
.it13-accordion{display:flex;flex-direction:column;gap:.25rem}
.it13-panel{border-bottom:1px solid #f1f5f9}
.it13-panel:last-child{border-bottom:none}
.it13-trigger{width:100%;display:flex;align-items:center;gap:.85rem;padding:.9rem .5rem .9rem .75rem;background:none;border:none;cursor:pointer;text-align:left}
.it13-t-icon{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--surface-color,#f8fafc);border:1px solid var(--card-border,#e5e7eb);display:flex;align-items:center;justify-content:center;color:var(--text-strong,#111827);transition:background .2s,border-color .2s}
.it13-t-icon svg{width:16px;height:16px}
.it13-panel.open .it13-t-icon{background:var(--primary-color,#fcd703);border-color:var(--primary-color,#fcd703)}
.it13-t-title{flex:1;font-size:var(--fs-btn,.92rem);font-weight:700;color:var(--text-strong,#111827)}
.it13-chevron{flex-shrink:0;color:var(--text-muted,#94a3b8);transition:transform .25s}
.it13-chevron svg{width:16px;height:16px;stroke:#94a3b8;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}
.it13-panel.open .it13-chevron{transform:rotate(180deg)}
.it13-body{max-height:0;overflow:hidden;transition:max-height .35s ease,padding .25s}
.it13-panel.open .it13-body{max-height:200px;padding:0 0 1rem 3.3rem}

/* --------------------------------------------------------------
   §49 Marquee Templates (MQ-01 – MQ-07)
-------------------------------------------------------------- */

/* ── Shared marquee primitives ──────────────────────────────── */
@keyframes mqLeft  { from{transform:translateX(0)} to{transform:translateX(-50%)} }
@keyframes mqRight { from{transform:translateX(-50%)} to{transform:translateX(0)} }

.mq-overflow { overflow:hidden; width:100%; }
.mq-track { display:flex; align-items:center; width:max-content; white-space:nowrap; }
.mq-track.left  { animation:mqLeft  var(--dur,30s) linear infinite; }
.mq-track.right { animation:mqRight var(--dur,30s) linear infinite; }
.mq-track:hover { animation-play-state:paused; }

.mq-fade { -webkit-mask-image:linear-gradient(to right,transparent 0%,#000 8%,#000 92%,transparent 100%); mask-image:linear-gradient(to right,transparent 0%,#000 8%,#000 92%,transparent 100%); }

.mq-chip { display:inline-flex; align-items:center; gap:.5rem; padding:.45rem 1rem; background:var(--surface-color,#f8fafc); border:1px solid var(--card-border,#e5e7eb); border-radius:99px; font-size:var(--fs-sm,.82rem); font-weight:600; color:var(--text-strong,#111); margin:0 .4rem; white-space:nowrap; }
.mq-chip svg { width:15px; height:15px; stroke:currentColor; fill:none; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }

/* ── MQ-01 · Hero Image + Centered Scroller ────────────────── */
#mq01 { position:relative; min-height:75vh; overflow:hidden; display:flex; flex-direction:column; justify-content:flex-end; }
.mq01-bg { position:absolute; inset:0; background:#0f172a; }
.mq01-bg img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; transition:opacity 1.8s ease; }
.mq01-bg::after { content:''; position:absolute; inset:0; z-index:1; background:linear-gradient(to bottom,rgba(0,0,0,.05) 0%,rgba(0,0,0,.45) 55%,rgba(0,0,0,.85) 100%); }
/* scroller above text */
.mq01-scroller { order:0; position:relative; z-index:2; padding:1.75rem 0 1.25rem; }
.mq01-scroller .mq-fade { -webkit-mask-image:none; mask-image:none; } /* no edge fade */
.mq01-top { order:1; position:relative; z-index:2; padding:1rem 3.5rem 3rem; max-width:820px; display:flex; flex-direction:column; gap:1rem; }
.mq01-eyebrow { display:inline-flex; align-items:center; gap:.65rem; font-size:var(--eyebrow-font-size,var(--fs-xs,.7rem)); font-weight:700; letter-spacing:var(--eyebrow-letter-spacing,.18em); text-transform:var(--eyebrow-text-transform,uppercase); color:var(--primary-color,#fcd703); }
.mq01-sub { font-size:clamp(1rem,1.6vw,1.2rem); color:rgba(255,255,255,.78); line-height:1.75; margin:0; max-width:560px; font-weight:400; }
.mq01-btns { display:flex; flex-wrap:wrap; gap:.75rem; margin-top:.25rem; }
.mq01-btn-p { padding:.72rem 1.9rem; background:var(--primary-color,#fcd703); color:var(--text-strong,#111); border-radius:99px; font-size:var(--fs-sm,.88rem); font-weight:800; text-decoration:none; }
.mq01-btn-s { padding:.72rem 1.9rem; background:rgba(255,255,255,.1); color:#fff; border:1.5px solid rgba(255,255,255,.28); border-radius:99px; font-size:var(--fs-sm,.88rem); font-weight:600; text-decoration:none; }
.mq01-item { font-size:clamp(3.2rem,7vw,6.5rem); font-weight:900; color:#fff; text-transform:lowercase; padding:0 1.5rem; letter-spacing:-.03em; line-height:1; }
.mq01-dot { font-size:clamp(2.5rem,5.5vw,5rem); color:var(--primary-color,#fcd703); font-weight:900; padding:0 .2rem; }
@media(max-width:768px){
  #mq01 { min-height:80vh; }
  .mq01-top { padding:1rem 1.5rem 2.5rem; }
  .mq01-item { font-size:clamp(2.4rem,10vw,4rem); }
}

/* ── MQ-02 · Feature Chip Rows ─────────────────────────────── */
#mq02 { padding:4rem 0; }
.mq02-head { text-align:center; padding:0 1.5rem 2.5rem; }
.mq02-head h2 { font-size:clamp(1.6rem,3vw,2.4rem); font-weight:900; color:var(--text-strong,#111); margin:0 0 .5rem; }
.mq02-head p { font-size:var(--fs-body,.9rem); color:var(--text-muted,#6b7280); margin:0; }
.mq02-rows { display:flex; flex-direction:column; gap:1rem; }

/* ── MQ-03 · Dark Dual-Row ──────────────────────────────────── */
#mq03 { background:#0f172a; padding:3rem 0; overflow:hidden; }
.mq03-row { padding:.5rem 0; }
.mq03-item { font-size:clamp(2.5rem,6vw,5rem); font-weight:600; color:rgba(255,255,255,.85); text-transform:lowercase; padding:0 1.5rem; letter-spacing:-.02em; }
.mq03-item .period { color:var(--primary-color,#fcd703); }

/* ── MQ-04 · Outlined Text ──────────────────────────────────── */
#mq04 { padding:4rem 0; overflow:hidden; }
.mq04-label { text-align:center; font-size:var(--fs-xs,.72rem); font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--text-muted,#6b7280); margin-bottom:1.5rem; }
.mq04-row { padding:.3rem 0; }
.mq04-item { font-size:clamp(3rem,7vw,6rem); font-weight:900; color:transparent; -webkit-text-stroke:2px #111; text-transform:uppercase; padding:0 1.5rem; line-height:1.1; }
.mq04-item.light-outline { -webkit-text-stroke:2px #d1d5db; }
.mq04-sep { display:inline-block; width:12px; height:12px; border-radius:50%; background:#111; vertical-align:middle; margin:0 .5rem; }
.mq04-item.light-outline ~ .mq04-sep,.mq04-row:last-child .mq04-sep { background:#d1d5db; }

/* ── MQ-04a · Solid Light Color ─────────────────────────────── */
#mq04a { padding:4rem 0; overflow:hidden; }
.mq04a-label { text-align:center; font-size:var(--fs-xs,.72rem); font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--text-muted,#6b7280); margin-bottom:1.5rem; }
.mq04a-row { padding:.3rem 0; }
.mq04a-item { font-size:clamp(3rem,7vw,6rem); font-weight:900; color:#c8d0db; text-transform:uppercase; padding:0 1.5rem; line-height:1.1; }
.mq04a-item.light { color:#e2e8f0; }
.mq04a-sep { display:inline-block; width:12px; height:12px; border-radius:50%; background:#c8d0db; vertical-align:middle; margin:0 .5rem; }
.mq04a-sep.light { background:#e2e8f0; }

/* ── MQ-04b · Outlined Text — Primary Color Stroke ──────────── */
#mq04b { padding:4rem 0; overflow:hidden; }
.mq04b-label { text-align:center; font-size:var(--fs-xs,.72rem); font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--text-muted,#6b7280); margin-bottom:1.5rem; }
.mq04b-row { padding:.3rem 0; overflow:hidden; }
.mq04b-item { font-size:var(--mq-size,clamp(3rem,7vw,6rem)); font-weight:900; color:transparent; -webkit-text-stroke:var(--mq-stroke-width,2px) var(--mq-stroke,var(--primary-color,#fcd703)); text-transform:uppercase; padding:0 1.5rem; line-height:1.1; }
.mq04b-item.muted { -webkit-text-stroke:var(--mq-stroke-width,2px) color-mix(in srgb, var(--mq-stroke,var(--primary-color,#fcd703)) 35%, transparent); }
.mq04b-sep { display:inline-block; width:12px; height:12px; border-radius:50%; background:var(--mq-sep,var(--primary-color,#fcd703)); vertical-align:middle; margin:0 .5rem; }
.mq04b-sep.muted { background:color-mix(in srgb, var(--mq-sep,var(--primary-color,#fcd703)) 35%, transparent); }

/* ── MQ-05 · Dark Scrolling-BG + Foreground Card ───────────── */
#mq05 { position:relative; background:#0f172a; overflow:hidden; min-height:480px; display:flex; align-items:center; justify-content:center; padding:5rem 1.5rem; }
.mq05-bg { position:absolute; inset:0; display:flex; flex-direction:column; justify-content:space-around; pointer-events:none; }
.mq05-bg-row { padding:.4rem 0; }
.mq05-bg-item { font-size:clamp(2rem,5vw,4rem); font-weight:900; color:rgba(255,255,255,.06); text-transform:uppercase; padding:0 1.5rem; letter-spacing:.05em; }
.mq05-fg { position:relative; z-index:1; background:rgba(255,255,255,.05); backdrop-filter:blur(16px); border:1px solid rgba(255,255,255,.12); border-radius:1.5rem; padding:3rem 3.5rem; max-width:560px; text-align:center; display:flex; flex-direction:column; gap:1rem; align-items:center; }
.mq05-badge { padding:.3rem .9rem; background:var(--primary-color,#fcd703); border-radius:99px; font-size:var(--fs-xs,.68rem); font-weight:800; color:#111; text-transform:uppercase; letter-spacing:.08em; }
.mq05-heading { font-size:clamp(1.8rem,4vw,3rem); font-weight:900; color:#fff; margin:0; line-height:1.15; }
.mq05-sub { font-size:var(--fs-body,.9rem); color:rgba(255,255,255,.65); line-height:1.7; margin:0; }
.mq05-btn { display:inline-flex; align-items:center; gap:.5rem; padding:.7rem 1.75rem; background:var(--primary-color,#fcd703); color:#111; border-radius:99px; font-size:var(--fs-sm,.82rem); font-weight:800; text-decoration:none; }
.mq05-btn svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }

/* ── MQ-06 · Light Scrolling-BG + Foreground Card ──────────── */
#mq06 { position:relative; background:var(--surface-color,#f8fafc); overflow:hidden; min-height:480px; display:flex; align-items:center; justify-content:center; padding:5rem 1.5rem; }
.mq06-bg { position:absolute; inset:0; display:flex; flex-direction:column; justify-content:space-around; pointer-events:none; }
.mq06-bg-row { padding:.4rem 0; }
.mq06-bg-item { font-size:clamp(2rem,5vw,4rem); font-weight:900; color:rgba(100,116,139,.08); text-transform:uppercase; padding:0 1.5rem; letter-spacing:.05em; }
.mq06-fg { position:relative; z-index:1; background:var(--card-bg,#fff); border:1px solid var(--card-border,#e5e7eb); border-radius:1.5rem; padding:3rem 3.5rem; max-width:560px; text-align:center; display:flex; flex-direction:column; gap:1rem; align-items:center; box-shadow:0 8px 32px rgba(0,0,0,.08); }
.mq06-badge { padding:.3rem .9rem; background:#fefce8; border-radius:99px; font-size:var(--fs-xs,.68rem); font-weight:800; color:var(--primary-dark,#b8940a); text-transform:uppercase; letter-spacing:.08em; }
.mq06-heading { font-size:clamp(1.8rem,4vw,3rem); font-weight:900; color:var(--text-strong,#111); margin:0; line-height:1.15; }
.mq06-sub { font-size:var(--fs-body,.9rem); color:var(--text-muted,#6b7280); line-height:1.7; margin:0; }
.mq06-btns { display:flex; flex-wrap:wrap; gap:.75rem; justify-content:center; }
.mq06-btn-p { padding:.65rem 1.5rem; background:var(--primary-color,#fcd703); color:#111; border-radius:99px; font-size:var(--fs-sm,.82rem); font-weight:800; text-decoration:none; }
.mq06-btn-s { padding:.65rem 1.5rem; background:var(--surface-color,#f1f5f9); color:var(--text-strong,#111); border-radius:99px; font-size:var(--fs-sm,.82rem); font-weight:700; text-decoration:none; }

/* ── MQ-07 · No-Image Hero Dark ────────────────────────────── */
#mq07 { background:#0f172a; overflow:hidden; display:flex; flex-direction:column; }
.mq07-top { padding:5rem 3rem 3rem; max-width:700px; margin:0 auto; text-align:center; display:flex; flex-direction:column; align-items:center; gap:1.25rem; }
.mq07-eyebrow { font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem)); font-weight:700; letter-spacing:var(--eyebrow-letter-spacing,.14em); text-transform:var(--eyebrow-text-transform,uppercase); color:var(--primary-color,#fcd703); }
.mq07-sub { font-size:var(--fs-body,1rem); color:rgba(255,255,255,.7); line-height:1.75; margin:0; }
.mq07-btns { display:flex; flex-wrap:wrap; gap:.75rem; justify-content:center; }
.mq07-btn-p { padding:.65rem 1.6rem; background:var(--primary-color,#fcd703); color:#111; border-radius:99px; font-size:var(--fs-sm,.82rem); font-weight:800; text-decoration:none; }
.mq07-btn-s { padding:.65rem 1.6rem; background:rgba(255,255,255,.1); color:#fff; border:1.5px solid rgba(255,255,255,.2); border-radius:99px; font-size:var(--fs-sm,.82rem); font-weight:700; text-decoration:none; }
.mq07-scroller { padding:2rem 0 4rem; border-top:1px solid rgba(255,255,255,.08); }
.mq07-item { font-size:clamp(2.5rem,6vw,5rem); font-weight:800; color:#fff; text-transform:lowercase; padding:0 1.5rem; }
.mq07-dot { font-size:clamp(2rem,5vw,4rem); color:var(--primary-color,#fcd703); padding:0 .3rem; }

@media(max-width:768px){
  .mq01-top,.mq07-top { padding:3rem 1.5rem 2rem; }
  .mq05-fg,.mq06-fg { padding:2rem 1.5rem; }
}
.it13-body p{font-size:var(--fs-sm,.83rem);color:var(--text-color,#374151);line-height:1.7}

/* ── IT responsive ─────────────────────────────────────────────── */
@media(max-width:1024px){
  .it07-split,.it11-cols,.it13-cols{grid-template-columns:1fr}
  .it13-img{position:static;max-height:280px}
  .it09-split{grid-template-columns:1fr}
  .it09-img{max-height:300px}
}
@media(max-width:768px){
  .it02-grid{grid-template-columns:repeat(2,1fr)}
  .it04-grid{grid-template-columns:1fr}
  .it10-row,.it10-row.rev{flex-direction:column}
  .it10-icon-panel{flex:none;width:100%;min-height:120px;padding:2rem}
}
@media(max-width:480px){
  .it02-grid,.it09-grid{grid-template-columns:1fr}
}

/* IT-01/03/04/05/06/08/12 — admin-configurable items-per-row via CSS vars */
@media(min-width:640px){
  .it01-grid{grid-template-columns:repeat(var(--it01-cols-tablet,2),1fr)}
  .it03-grid{grid-template-columns:repeat(var(--it03-cols-tablet,2),1fr)}
  .it04-grid{grid-template-columns:repeat(var(--it04-cols-tablet,4),1fr)}
  .it05-grid{grid-template-columns:repeat(var(--it05-cols-tablet,2),1fr)}
  .it06-grid{grid-template-columns:repeat(var(--it06-cols-tablet,2),1fr)}
  .it08-grid{grid-template-columns:repeat(var(--it08-cols-tablet,2),1fr)}
  .it12-grid{grid-template-columns:repeat(var(--it12-cols-tablet,2),1fr)}
}
@media(min-width:1024px){
  .it01-grid{grid-template-columns:repeat(var(--it01-cols-desktop,3),1fr)}
  .it03-grid{grid-template-columns:repeat(var(--it03-cols-desktop,4),1fr)}
  .it04-grid{grid-template-columns:repeat(var(--it04-cols-desktop,4),1fr)}
  .it05-grid{grid-template-columns:repeat(var(--it05-cols-desktop,4),1fr)}
  .it06-grid{grid-template-columns:repeat(var(--it06-cols-desktop,3),1fr)}
  .it08-grid{grid-template-columns:repeat(var(--it08-cols-desktop,3),1fr)}
  .it12-grid{grid-template-columns:repeat(var(--it12-cols-desktop,3),1fr)}
}
@media(min-width:1280px){
  .it01-grid{grid-template-columns:repeat(var(--it01-cols-wide,3),1fr)}
  .it03-grid{grid-template-columns:repeat(var(--it03-cols-wide,4),1fr)}
  .it04-grid{grid-template-columns:repeat(var(--it04-cols-wide,4),1fr)}
  .it05-grid{grid-template-columns:repeat(var(--it05-cols-wide,4),1fr)}
  .it06-grid{grid-template-columns:repeat(var(--it06-cols-wide,3),1fr)}
  .it08-grid{grid-template-columns:repeat(var(--it08-cols-wide,3),1fr)}
  .it12-grid{grid-template-columns:repeat(var(--it12-cols-wide,3),1fr)}
}
@media(max-width:640px){
  .it05-grid::before{display:none}
}

/* ══════════════════════════════════════════════════════════════════
   §50  Media / Video Templates — VP-01 through VP-08
══════════════════════════════════════════════════════════════════ */

/* shared */
.mv-wrap { max-width:1100px; margin:0 auto; padding:0 1.5rem; }
.sec.black { background:#0a0a0a; }

/* play triangle */
.play-tri { display:block; width:0; height:0; border-top:9px solid transparent; border-bottom:9px solid transparent; border-left:16px solid currentColor; margin-left:3px; }

@keyframes playPulse { 0%,100%{ box-shadow:0 0 0 0 var(--play-pulse-color,rgba(255,255,255,.55)); } 50%{ box-shadow:0 0 0 14px transparent; } }
.vp01-btn,.vp02-playbtn,.vp03-inner,.vp05-playbtn,.vp06-play-circle,.vp07-circle { animation:playPulse 2s ease-in-out infinite; }

/* VP-01 */
.vp01-outer { position:relative; border-radius:12px; overflow:hidden; cursor:pointer; }
.vp01-outer:hover .vp01-btn { transform:translate(-50%,-50%) scale(1.1); }
.vp01-img { width:100%; aspect-ratio:16/9; object-fit:cover; display:block; }
.vp01-btn { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:72px; height:72px; border-radius:50%; background:rgba(255,255,255,.9); display:flex; align-items:center; justify-content:center; color:#111; transition:transform .2s,background .2s; box-shadow:0 4px 24px rgba(0,0,0,.25); }
.vp01-btn:hover { background:var(--card-bg,#fff); }

/* VP-02 */
.vp02-frame-wrap { border-radius:var(--vp02-frame-radius,1rem); }
.vp02-screen { position:relative; border-radius:8px; overflow:hidden; cursor:pointer; }
.vp02-screen img { width:100%; aspect-ratio:16/9; object-fit:cover; display:block; }
.vp02-playbtn { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:64px; height:64px; border-radius:50%; background:var(--primary-color,#fcd703); display:flex; align-items:center; justify-content:center; transition:transform .2s; box-shadow:0 4px 20px rgba(0,0,0,.4); }
.vp02-screen:hover .vp02-playbtn { transform:translate(-50%,-50%) scale(1.1); }

/* VP-03 */
.vp03-outer { position:relative; overflow:hidden; cursor:pointer; min-height:var(--vp03-h,320px); }
.vp03-outer img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; filter:grayscale(1); transition:filter .4s; }
.vp03-outer:hover img { filter:grayscale(.3); }
.vp03-badge-wrap { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:160px; height:160px; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.vp03-ring { position:absolute; inset:0; animation:rotBadge 10s linear infinite; }
.vp03-ring svg { width:100%; height:100%; fill:none; }
.vp03-ring text { fill:#fff; font-size:13px; font-weight:700; letter-spacing:1px; }
@keyframes rotBadge { to { transform:rotate(360deg); } }
.vp03-inner { position:relative; width:52px; height:52px; border-radius:50%; background:rgba(255,255,255,.9); display:flex; align-items:center; justify-content:center; color:#111; }

/* VP-04 */
.vp04-outer { position:relative; border-radius:var(--vp04-radius,.75rem); overflow:hidden; }
.vp04-iframe-wrap { position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.vp04-iframe-wrap iframe { position:absolute; top:50%; left:50%; width:200%; height:200%; transform:translate(-50%,-50%); border:none; }
.vp04-overlay { position:absolute; inset:0; display:flex; flex-direction:column; justify-content:center; padding:3rem; background:linear-gradient(to right,rgba(0,0,0,.75) 0%,rgba(0,0,0,.4) 60%,transparent 100%); }
.vp04-overlay h2 { font-size:clamp(1.6rem,4vw,3rem); font-weight:900; color:#fff; margin:.5rem 0 1rem; line-height:1.15; }
.vp04-overlay p { font-size:var(--vp04-fs-body,var(--fs-body)); color:rgba(255,255,255,.8); max-width:460px; line-height:1.7; }
.vp04-tag { display:inline-block; padding:.3rem .9rem; background:var(--primary-color,#fcd703); border-radius:99px; font-size:var(--vp04-fs-xs,var(--fs-xs)); font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:#111; margin-bottom:.5rem; }
.vp04-note { margin-top:.75rem; font-size:var(--vp04-fs-xs,var(--fs-xs)); color:var(--text-muted,#94a3b8); text-align:center; }
.vp04-note code { background:var(--surface-color,#f1f5f9); padding:.1rem .4rem; border-radius:4px; }

/* VP-05 */
.vp05-grid { display:grid; grid-template-columns:1fr 1fr; gap:3rem; align-items:center; }
.vp05-text { display:flex; flex-direction:column; gap:1.25rem; }
.vp05-text h2 { font-size:clamp(1.6rem,3vw,2.6rem); font-weight:900; color:#fff; margin:0; line-height:1.2; }
.vp05-text p { font-size:var(--vp05-fs-body,var(--fs-body)); color:rgba(255,255,255,.7); line-height:1.7; margin:0; }
.vp05-stat-row { display:flex; gap:2rem; }
.vp05-stat strong { display:block; font-size:1.6rem; font-weight:900; color:#fff; }
.vp05-stat span { display:block; font-size:var(--vp05-fs-xs,var(--fs-xs)); color:rgba(255,255,255,.5); font-weight:600; }
.vp05-video { position:relative; border-radius:var(--vp05-radius,.75rem); overflow:hidden; cursor:pointer; }
.vp05-video img { width:100%; aspect-ratio:16/9; object-fit:cover; display:block; transition:transform .4s; }
.vp05-video:hover img { transform:scale(1.04); }
.vp05-playbtn { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:60px; height:60px; border-radius:50%; background:rgba(255,255,255,.92); display:flex; align-items:center; justify-content:center; color:#111; }
.vp05-duration { position:absolute; bottom:.75rem; right:.75rem; background:rgba(0,0,0,.7); color:#fff; font-size:var(--vp05-fs-xs,var(--fs-xs)); font-weight:700; padding:.2rem .55rem; border-radius:4px; }

/* VP-06 */
.vp06-grid { display:grid; grid-template-columns:repeat(var(--vp06-cols-mobile,1),1fr); gap:1.5rem; }
@media(min-width:640px){.vp06-grid{grid-template-columns:repeat(var(--vp06-cols-tablet,2),1fr)}}
@media(min-width:1024px){.vp06-grid{grid-template-columns:repeat(var(--vp06-cols-desktop,3),1fr)}}
@media(min-width:1280px){.vp06-grid{grid-template-columns:repeat(var(--vp06-cols-wide,3),1fr)}}
.vp06-card { border-radius:var(--vp06-radius,.75rem); overflow:hidden; background:var(--card-bg,#fff); box-shadow:0 2px 12px rgba(0,0,0,.08); cursor:pointer; transition:box-shadow .2s,transform .2s; }
.vp06-card:hover { box-shadow:0 8px 32px rgba(0,0,0,.14); transform:translateY(-3px); }
.vp06-thumb { position:relative; overflow:hidden; }
.vp06-thumb img { width:100%; aspect-ratio:16/9; object-fit:cover; display:block; transition:transform .35s; }
.vp06-card:hover .vp06-thumb img { transform:scale(1.06); }
.vp06-chip { position:absolute; top:.75rem; left:.75rem; background:var(--primary-color,#fcd703); color:#111; font-size:var(--vp06-fs-xs,var(--fs-xs)); font-weight:800; padding:.25rem .65rem; border-radius:99px; letter-spacing:.05em; text-transform:uppercase; }
.vp06-dur { position:absolute; bottom:.65rem; right:.65rem; background:rgba(0,0,0,.72); color:#fff; font-size:var(--vp06-fs-xs,var(--fs-xs)); font-weight:700; padding:.2rem .5rem; border-radius:4px; }
.vp06-play-circle { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%) scale(1); opacity:1; width:52px; height:52px; border-radius:50%; background:rgba(255,255,255,.92); display:flex; align-items:center; justify-content:center; color:#111; transition:opacity .2s,transform .2s; }
.vp06-card:hover .vp06-play-circle { transform:translate(-50%,-50%) scale(1.08); }
.vp06-body { padding:1rem 1.1rem 1.2rem; }
.vp06-cat { font-size:var(--vp06-fs-xs,var(--fs-xs)); font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--primary-color,#b8940a); margin-bottom:.4rem; }
.vp06-body h3 { font-size:var(--vp06-fs-body,var(--fs-body)); font-weight:800; color:#111; margin:0 0 .75rem; line-height:1.35; }
.vp06-meta { display:flex; align-items:center; gap:.65rem; font-size:var(--vp06-fs-xs,var(--fs-xs)); color:var(--text-muted,#94a3b8); }
.vp06-avatar { width:28px; height:28px; border-radius:50%; overflow:hidden; flex-shrink:0; }
.vp06-avatar img { width:100%; height:100%; object-fit:cover; }

/* VP-07 */
.vp07-outer { display:flex; flex-direction:column; align-items:center; gap:1.5rem; }
.vp07-eyebrow { font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem)); font-weight:800; letter-spacing:var(--eyebrow-letter-spacing,.1em); text-transform:var(--eyebrow-text-transform,uppercase); color:var(--primary-color,#fcd703); }
.vp07-outer h2 { font-size:clamp(1.5rem,3vw,2.4rem); font-weight:900; color:#111; margin:0; text-align:center; }
.vp07-stage { position:relative; width:100%; border-radius:var(--vp07-radius,.875rem); overflow:hidden; cursor:pointer; }
.vp07-stage img { width:100%; aspect-ratio:16/9; object-fit:cover; display:block; }
.vp07-overlay { position:absolute; inset:0; background:rgba(0,0,0,.25); transition:background .2s; }
.vp07-stage:hover .vp07-overlay { background:rgba(0,0,0,.4); }
.vp07-playbtn { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); display:flex; flex-direction:column; align-items:center; gap:.75rem; color:#fff; }
.vp07-playbtn span { font-size:var(--vp07-fs-sm,var(--fs-sm)); font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
.vp07-circle { width:72px; height:72px; border-radius:50%; background:rgba(255,255,255,.92); display:flex; align-items:center; justify-content:center; transition:transform .2s; }
.vp07-stage:hover .vp07-circle { transform:scale(1.08); }
.vp07-reel { display:flex; gap:1rem; overflow-x:auto; width:100%; padding-bottom:.5rem; scrollbar-width:thin; }
.vp07-thumb-pill { border-radius:10px; overflow:hidden; flex-shrink:0; width:160px; cursor:pointer; border:3px solid transparent; transition:border-color .2s; opacity:.65; transition:opacity .2s,border-color .2s; }
.vp07-thumb-pill.active { border-color:var(--primary-color,#fcd703); opacity:1; }
.vp07-thumb-pill img { width:100%; aspect-ratio:16/9; object-fit:cover; display:block; }

/* VP-08 */
.vp08-outer { position:relative; height:90vh; min-height:500px; overflow:hidden; }
.vp08-iframe-wrap { position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.vp08-video { position:absolute; top:50%; left:50%; width:200%; height:200%; transform:translate(-50%,-50%); border:none; }
.vp08-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.85) 0%,rgba(0,0,0,.35) 60%,rgba(0,0,0,.1) 100%); }
.vp08-content { position:absolute; inset:0; display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-end; padding:4rem 3rem; }
.vp08-content h1 { font-size:clamp(2rem,5vw,4rem); font-weight:900; color:#fff; margin:.5rem 0 1rem; line-height:1.1; }
.vp08-content p { font-size:var(--fs-btn,.92rem); color:rgba(255,255,255,.75); max-width:560px; line-height:1.7; margin-bottom:1.5rem; }
.vp08-btn { display:inline-block; padding:.75rem 2rem; background:var(--primary-color,#fcd703); font-weight:800; border-radius:99px; text-decoration:none; font-size:var(--vp08-fs-sm,var(--fs-sm)); }
.vp08-mute-btn { display:none; }
.vp08-note { font-size:var(--vp08-fs-xs,var(--fs-xs)); color:var(--text-muted,#64748b); }
.vp08-note code { background:var(--surface-color,#f1f5f9); padding:.1rem .4rem; border-radius:4px; }

/* §50 responsive */
@media(max-width:768px){
  .vp05-grid { grid-template-columns:1fr; gap:2rem; }
  .vp03-badge-wrap { right:5%; width:120px; height:120px; }
  .vp08-content { padding:2.5rem 1.5rem; }
  .vp04-overlay { padding:1.5rem; }
}
@media(max-width:480px){
  .vp07-thumb-pill { width:120px; }
}

/* ══════════════════════════════════════════════════════════════════
   §51  Parallax Scrolling — PX-01…PX-06
══════════════════════════════════════════════════════════════════ */

/* ── Shared primitives ──
   Config bridging: shared classes below read GENERIC --pxs- / --pxm- / --pxz-
   prefixed custom properties. Each template's outer wrapper bridges its own
   numbered --pxs0N- config var into the generic one via inline style, so
   multiple instances on one page never bleed into each other (CSS custom
   props are scoped to the subtree where they're declared). */
.pxs-half { position:relative; min-height:var(--pxs-min-h,460px); overflow:hidden; }
.pxs-full { position:relative; height:var(--pxs-min-h,96vh); min-height:560px; overflow:hidden; }
.pxs-img .pxs-bg { position:absolute; inset:0; overflow:hidden; }
.pxs-img .pxs-bg img { position:absolute; left:0; top:-22%; width:100%; height:144%; object-fit:cover; will-change:transform; }
.pxs-grad { background:var(--px-grad,linear-gradient(135deg,#1e3a5f,#7c3aed)); }
.pxs-overlay { position:absolute; inset:0; background:color-mix(in srgb,var(--pxs-overlay-color,#000000) calc(var(--pxs-overlay-opacity,.45)*100%),transparent); pointer-events:none; }
.pxs-center { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:2rem; color:#fff; z-index:2; }
.pxs-grad .pxs-center { position:relative; inset:auto; min-height:inherit; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:4rem 2rem; }
.pxs-center .eyebrow { color:var(--pxs-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color,#fcd703))); }
.pxs-center h1,.pxs-center h2 { font-size:clamp(1.8rem,5vw,4rem); font-weight:900; margin:.5rem 0 1.25rem; line-height:1.1; color:var(--pxs-heading-color,#fff); }
.pxs-center p { font-size:var(--fs-body,.95rem); color:var(--pxs-body-color,rgba(255,255,255,.82)); line-height:1.8; max-width:540px; margin-bottom:2rem; }
.pxs-btn { display:inline-block; padding:.75rem 2.25rem; background:var(--pxs-btn-bg,rgba(255,255,255,.15)); color:var(--pxs-btn-color,#fff); font-weight:800; border-radius:99px; text-decoration:none; font-size:var(--fs-sm,.88rem); border:2px solid var(--pxs-btn-border,rgba(255,255,255,.5)); backdrop-filter:blur(4px); transition:background .2s; }
.pxs-btn:hover { background:var(--pxs-btn-bg-hover,rgba(255,255,255,.28)); }

/* PX-05 multi-section fixed backgrounds */
.pxm-section { position:relative; height:var(--pxm-min-h,96vh); min-height:560px; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.pxm-bg { position:absolute; inset:0; overflow:hidden; z-index:0; }
.pxm-bg img { position:absolute; left:0; top:-22%; width:100%; height:144%; object-fit:cover; will-change:transform; }
.pxm-overlay { position:absolute; inset:0; background:color-mix(in srgb,var(--pxm-overlay-color,#000000) calc(var(--pxm-overlay-opacity,.52)*100%),transparent); }
.pxm-text { position:relative; z-index:2; text-align:center; color:var(--pxm-heading-color,#fff); max-width:720px; padding:0 2rem; }
.pxm-num { font-size:6rem; font-weight:900; color:var(--pxm-num-color,var(--primary-color,#fcd703)); line-height:1; margin-bottom:.1rem; opacity:.9; }
.pxm-text h2 { font-size:clamp(2rem,5vw,4rem); font-weight:900; margin:0 0 1.25rem; line-height:1.1; }
.pxm-text p { font-size:var(--fs-body,.95rem); color:var(--pxm-body-color,rgba(255,255,255,.82)); line-height:1.8; max-width:520px; margin:0 auto; }
/* Single persistent scroll hint (sticky, not per-panel): stays pinned near the
   viewport bottom for the whole height of the multi-section stack, then
   scrolls away naturally once the stack (its containing block) ends. */
.pxm-hint-fixed { position:sticky; bottom:2rem; z-index:5; width:fit-content; margin:0 auto; display:flex; flex-direction:column; align-items:center; gap:.45rem; color:var(--pxm-hint-color,rgba(255,255,255,.7)); font-size:var(--fs-xs,.65rem); font-weight:700; letter-spacing:.12em; text-transform:uppercase; pointer-events:none; }
.pxm-no-hint .pxm-hint-fixed { display:none; }
.pxm-panel-cta { position:relative; z-index:2; margin-top:1.5rem; }
.pxm-mouse { width:22px; height:34px; border:2px solid color-mix(in srgb,currentColor 70%,transparent); border-radius:11px; display:flex; justify-content:center; padding-top:5px; }
.pxm-wheel { width:3px; height:7px; background:currentColor; border-radius:2px; animation:wheelDrop 1.6s ease-in-out infinite; }
@keyframes wheelDrop { 0%,100%{transform:translateY(0);opacity:1} 65%{transform:translateY(10px);opacity:0} }

/* PX-06 Ken Burns scale zoom */
.pxz-outer { position:relative; height:var(--pxz-min-h,96vh); min-height:560px; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.pxz-bg { position:absolute; inset:-8%; transform-origin:center; animation:kenBurns var(--pxz-zoom-dur,9s) ease-in-out infinite alternate; }
.pxz-bg img { width:100%; height:100%; object-fit:cover; display:block; }
@keyframes kenBurns { 0%{ transform:scale(1) translate(0,0); } 100%{ transform:scale(1.35) translate(-2%,2%); } }
.pxz-overlay { position:absolute; inset:0; background:linear-gradient(to bottom,color-mix(in srgb,var(--pxz-overlay-top,#000000) calc(var(--pxz-overlay-top-opacity,.25)*100%),transparent) 0%,color-mix(in srgb,var(--pxz-overlay-bottom,#000000) calc(var(--pxz-overlay-bottom-opacity,.65)*100%),transparent) 100%); }
.pxz-content { position:relative; z-index:2; text-align:center; color:var(--pxz-heading-color,#fff); padding:2rem; max-width:760px; animation:pxzRise 1.2s ease both; }
@keyframes pxzRise { from{opacity:0;transform:translateY(30px)} to{opacity:1;transform:translateY(0)} }
.pxz-content .eyebrow { color:var(--pxz-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color,#fcd703))); }
.pxz-content h1 { font-size:clamp(2.2rem,6vw,5rem); font-weight:900; margin:.5rem 0 1.25rem; line-height:1.05; letter-spacing:-.02em; }
.pxz-content p { font-size:var(--fs-body,.95rem); color:var(--pxz-body-color,rgba(255,255,255,.82)); line-height:1.8; max-width:540px; margin:0 auto 2rem; }

/* §PX Responsive — mobile sizing (parallax is JS scroll-transform on real <img>
   elements now, not background-attachment:fixed, so no iOS Safari workaround needed) */
@media (max-width:768px) {
  /* Reduce tall sections on small viewports */
  .pxs-full { height:70vh; min-height:420px; }
  .pxm-section { height:70vh; min-height:420px; }
  .pxz-outer { height:70vh; min-height:420px; }
  /* Clamp stat numbers in pxm */
  .pxm-num { font-size:4rem; }
}
@media (max-width:480px) {
  .pxs-center h1,.pxs-center h2 { font-size:clamp(1.5rem,7vw,2.5rem); }
  .pxs-center p { font-size:var(--fs-sm,.85rem); margin-bottom:1.5rem; }
  .pxm-text h2 { font-size:clamp(1.6rem,7vw,2.8rem); }
  .pxm-text p { font-size:var(--fs-sm,.85rem); }
  .pxm-num { font-size:3.2rem; }
  .pxm-scroll-hint { display:none; }
  .px05-stat-row { gap:1.5rem; }
}

/* --------------------------------------------------------------
   §52 Process Steps (PS-01 – PS-12)
-------------------------------------------------------------- */

/* ── PS-01  Icon + Connector horizontal ── */
.ps01-track { display:grid; grid-template-columns:repeat(var(--ps01-cols-d,4),minmax(0,1fr)); gap:0; position:relative; }
.ps01-step { display:flex; flex-direction:column; align-items:center; text-align:center; gap:.75rem; position:relative; padding:1.5rem 1rem; }
.ps01-step:not(:last-child)::after { content:''; position:absolute; top:2.1rem; left:calc(50% + 2.2rem); width:calc(100% - 4.4rem); height:2px; background:var(--ps01-line-color,var(--primary-color,#fcd703)); }
.ps01-step.ps-row-end::after { display:none; }
.ps01-icon { position:relative; width:68px; height:68px; border-radius:50%; border:2.5px solid var(--ps01-icon-border,var(--primary-color,#fcd703)); display:flex; align-items:center; justify-content:center; background:var(--ps01-icon-bg,var(--icon-bg,#fffbeb)); }
.ps01-icon svg { width:26px; height:26px; stroke:var(--ps01-icon-color,var(--icon-color,var(--text-strong,#0f172a))); stroke-width:1.8; fill:none; }
.ps01-num { position:absolute; top:-8px; right:-8px; width:22px; height:22px; border-radius:50%; background:var(--ps01-num-bg,var(--primary-color,#fcd703)); display:flex; align-items:center; justify-content:center; font-weight:900; font-size:var(--ps01-fs-xs,var(--fs-xs)); color:var(--ps01-num-fg,var(--text-strong,#0f172a)); line-height:1; }
.ps01-step h3 { font-size:var(--ps01-fs-sm,var(--fs-sm)); font-weight:800; color:var(--ps01-heading-color,var(--text-strong,#0f172a)); margin:0; }
.ps01-step p { color:var(--ps01-desc-color,var(--text-muted,#64748b)); line-height:1.65; margin:0; }

/* ── PS-02  Vertical Timeline ── */
.ps02-track { display:flex; flex-direction:column; gap:0; position:relative; padding-left:3rem; }
.ps02-track::before { content:''; position:absolute; left:1.15rem; top:.75rem; bottom:.75rem; width:2px; background:var(--ps02-line-color,var(--primary-color,#fcd703)); }
.ps02-step { display:flex; gap:1.5rem; position:relative; padding-bottom:2.5rem; }
.ps02-step:last-child { padding-bottom:0; }
.ps02-dot { position:absolute; left:-2.7rem; top:.15rem; width:2rem; height:2rem; border-radius:50%; background:var(--ps02-dot-bg,var(--primary-color,#fcd703)); display:flex; align-items:center; justify-content:center; font-weight:900; font-size:var(--ps02-fs-xs,var(--fs-xs)); color:var(--ps02-dot-fg,var(--text-inverse,#fff)); border:3px solid var(--bg-color,#fff); box-shadow:0 0 0 3px var(--ps02-dot-bg,var(--primary-color,#fcd703)); flex-shrink:0; }
.ps02-body { flex:1; }
.ps02-tag { display:inline-block; padding:.2rem .65rem; background:var(--ps02-tag-bg,color-mix(in srgb,var(--primary-color,#fcd703) 18%,var(--bg-color,#fff))); border-radius:99px; font-size:var(--ps02-fs-xs,var(--fs-xs)); font-weight:800; color:var(--ps02-tag-fg,var(--text-color,#374151)); margin-bottom:.4rem; }
.ps02-body h3 { font-size:var(--ps02-fs-body,var(--fs-body)); font-weight:800; color:var(--ps02-heading-color,var(--text-strong,#0f172a)); margin:0 0 .3rem; }
.ps02-body p { color:var(--ps02-desc-color,var(--text-muted,#64748b)); line-height:1.7; margin:0; }

/* ── PS-03  Zigzag / Alternating Timeline ── */
.ps03-track { display:flex; flex-direction:column; gap:0; position:relative; }
.ps03-track::before { content:''; position:absolute; top:0; bottom:0; left:50%; width:var(--ps03-line-width,2px); transform:translateX(-50%); background:var(--ps03-line-color,var(--primary-color,#fcd703)); z-index:0; }
.ps03-step { display:grid; grid-template-columns:1fr 60px 1fr; align-items:center; gap:1.5rem; padding:2rem 0; position:relative; z-index:1; }
.ps03-content { grid-row:1; padding:1rem; }
.ps03-step:nth-child(odd) .ps03-content { grid-column:1; text-align:right; }
.ps03-step:nth-child(even) .ps03-content { grid-column:3; text-align:left; }
.ps03-node { grid-row:1; grid-column:2; }
.ps03-node { width:60px; height:60px; border-radius:50%; background:var(--ps03-node-bg,var(--primary-color,#fcd703)); display:flex; align-items:center; justify-content:center; flex-shrink:0; box-shadow:var(--ps03-node-shadow,0 4px 16px rgba(252,215,3,.35)); position:relative; z-index:1; }
.ps03-node svg { width:26px; height:26px; stroke:var(--ps03-node-icon-color,var(--text-strong,#0f172a)); stroke-width:1.8; fill:none; }
.ps03-year { display:inline-block; font-size:var(--ps03-fs-xs,var(--fs-xs)); font-weight:900; letter-spacing:.06em; color:var(--ps03-year-color,var(--primary-color,#fcd703)); margin-bottom:.4rem; text-transform:uppercase; }
.ps03-content h3 { font-size:var(--ps03-fs-body,var(--fs-body)); font-weight:800; color:var(--ps03-heading-color,var(--text-strong,#0f172a)); margin:0 0 .35rem; }
.ps03-content p { color:var(--ps03-desc-color,var(--text-muted,#64748b)); line-height:1.7; margin:0; }

/* ── PS-04  Cards with Background Number ── */
.ps04-grid { display:grid; grid-template-columns:repeat(var(--ps04-cols-d,4),minmax(0,1fr)); gap:1.5rem; }
.ps04-card { position:relative; padding:1.75rem; background:var(--ps04-card-bg,var(--card-bg,#fff)); border-radius:var(--ps04-card-radius,var(--card-radius,12px)); box-shadow:var(--ps04-card-shadow,var(--card-shadow,0 2px 12px rgba(15,23,42,.08))); display:flex; flex-direction:column; gap:.6rem; overflow:hidden; border-top:4px solid var(--ps04-accent-color,var(--primary-color,#fcd703)); transition:box-shadow .2s,transform .2s; }
.ps04-card:hover { box-shadow:var(--ps04-card-shadow-hover,var(--card-shadow-hover,0 8px 32px rgba(15,23,42,.15))); transform:translateY(-3px); }
.ps04-bg-num { position:absolute; right:-.25rem; bottom:-.75rem; font-size:7rem; font-weight:900; line-height:1; color:var(--ps04-ghost-color,rgba(252,215,3,.12)); pointer-events:none; user-select:none; }
.ps04-num { font-size:var(--ps04-fs-xs,var(--fs-xs)); font-weight:900; letter-spacing:.1em; color:var(--ps04-accent-color,var(--primary-color,#fcd703)); text-transform:uppercase; }
.ps04-icon { width:40px; height:40px; border-radius:.5rem; background:var(--ps04-icon-bg,var(--icon-bg,#fefce8)); display:flex; align-items:center; justify-content:center; }
.ps04-icon svg { width:20px; height:20px; stroke:var(--ps04-icon-color,var(--icon-color,var(--text-strong,#0f172a))); stroke-width:1.8; fill:none; }
.ps04-card h3 { font-size:var(--ps04-fs-body,var(--fs-body)); font-weight:800; color:var(--ps04-heading-color,var(--text-strong,#0f172a)); margin:0; }
.ps04-card p { color:var(--ps04-desc-color,var(--text-muted,#64748b)); line-height:1.65; margin:0; flex:1; }

/* ── PS-05  Dark 5-column strip ── */
.ps05-track { display:flex; flex-wrap:wrap; background:#0f172a; }
.ps05-step { flex:1; min-width:160px; padding:2.5rem 1.5rem; display:flex; flex-direction:column; align-items:center; text-align:center; gap:.85rem; border-bottom:3px solid transparent; transition:border-color .2s,background .2s; }
.ps05-step:hover { background:#1e293b; border-bottom-color:var(--primary-color,#fcd703); }
.ps05-step:not(:last-child) { border-right:1px solid rgba(255,255,255,.07); }
.ps05-n { font-size:2rem; font-weight:900; color:var(--primary-color,#fcd703); line-height:1; }
.ps05-icon-wrap { width:52px; height:52px; border-radius:50%; background:rgba(255,255,255,.07); display:flex; align-items:center; justify-content:center; }
.ps05-icon-wrap svg { width:24px; height:24px; stroke:rgba(255,255,255,.7); stroke-width:1.8; fill:none; }
.ps05-step h3 { font-size:var(--fs-sm,.88rem); font-weight:800; color:#fff; margin:0; }
.ps05-step p { font-size:var(--fs-xs,.78rem); color:rgba(255,255,255,.55); line-height:1.65; margin:0; }

/* ── PS-06  Dark Ribbon Strip (redesigned) ── */
.ps06-track { display:flex; flex-wrap:wrap; border-radius:var(--card-radius,12px); overflow:hidden; background:#0f172a; }
.ps06-step { flex:1; min-width:150px; display:flex; flex-direction:column; align-items:center; text-align:center; gap:.5rem; padding:2.5rem 2rem; position:relative; border-right:1px solid rgba(255,255,255,.06); }
.ps06-step:last-child { border-right:none; }
.ps06-step:hover { background:rgba(255,255,255,.04); }
.ps06-num { font-size:2.8rem; font-weight:900; color:var(--primary-color,#fcd703); line-height:1; letter-spacing:-.04em; }
.ps06-body h3 { font-size:var(--fs-sm,.88rem); font-weight:800; color:#fff; margin:0 0 .3rem; }
.ps06-body p { font-size:var(--fs-xs,.77rem); color:rgba(255,255,255,.5); line-height:1.6; margin:0; }
.ps06-arrow { position:absolute; right:-12px; top:50%; transform:translateY(-50%); width:24px; height:24px; border-radius:50%; background:var(--primary-color,#fcd703); display:flex; align-items:center; justify-content:center; z-index:3; }
.ps06-step:last-child .ps06-arrow { display:none; }
.ps06-arrow svg { width:14px; height:14px; stroke:#0f172a; stroke-width:2.5; fill:none; }

/* ── PS-07  Split Image + Dark Step List ── */
.ps07-wrap { display:flex; flex-wrap:wrap; min-height:560px; }
.ps07-img { flex:1; min-width:280px; overflow:hidden; }
.ps07-img img { width:100%; height:100%; object-fit:cover; display:block; }
.ps07-content { flex:1; min-width:280px; background:#0f172a; padding:3.5rem 3rem; display:flex; flex-direction:column; gap:1.25rem; justify-content:center; }
.ps07-eyebrow { font-size:var(--eyebrow-font-size,var(--fs-xs,.7rem)); font-weight:900; letter-spacing:var(--eyebrow-letter-spacing,.1em); text-transform:var(--eyebrow-text-transform,uppercase); color:var(--primary-color,#fcd703); }
.ps07-content h2 { font-size:clamp(1.4rem,2.5vw,2rem); font-weight:900; color:#fff; margin:0; line-height:1.25; }
.ps07-step { display:flex; gap:1.25rem; align-items:flex-start; }
.ps07-dot { width:36px; height:36px; border-radius:50%; background:var(--primary-color,#fcd703); display:flex; align-items:center; justify-content:center; font-weight:900; font-size:var(--fs-xs,.7rem); color:var(--text-strong,#0f172a); flex-shrink:0; margin-top:.15rem; }
.ps07-body { flex:1; }
.ps07-body h3 { font-size:var(--fs-sm,.88rem); font-weight:800; color:#fff; margin:0 0 .3rem; }
.ps07-body p { font-size:var(--fs-sm,.8rem); color:rgba(255,255,255,.55); line-height:1.7; margin:0; }

/* ── PS-08  Gradient Tint Cards ── */
.ps08-grid { display:grid; grid-template-columns:repeat(var(--ps08-cols-d,3),minmax(0,1fr)); gap:1.25rem; }
.ps08-card { padding:1.75rem 1.5rem; background:var(--ps08-card-bg,linear-gradient(135deg,#fffbeb 0%,#fff 60%)); border-radius:var(--ps08-card-radius,var(--card-radius,12px)); box-shadow:var(--ps08-card-shadow,var(--card-shadow,0 2px 12px rgba(15,23,42,.08))); display:flex; flex-direction:column; gap:.5rem; position:relative; transition:box-shadow .2s,transform .2s; border-left:4px solid var(--ps08-accent-color,var(--primary-color,#fcd703)); }
.ps08-card:hover { box-shadow:var(--ps08-card-shadow-hover,var(--card-shadow-hover,0 8px 32px rgba(15,23,42,.15))); transform:translateY(-4px); }
.ps08-step-num { font-size:2.2rem; font-weight:900; color:var(--ps08-accent-color,var(--primary-color,#fcd703)); line-height:1; }
.ps08-icon { width:44px; height:44px; border-radius:50%; background:var(--ps08-icon-bg,var(--icon-bg,var(--card-bg,#fff))); display:flex; align-items:center; justify-content:center; box-shadow:0 2px 8px rgba(15,23,42,.1); }
.ps08-icon svg { width:20px; height:20px; stroke:var(--ps08-icon-color,var(--icon-color,var(--text-strong,#0f172a))); stroke-width:1.8; fill:none; }
.ps08-card h3 { font-size:var(--ps08-fs-sm,var(--fs-sm)); font-weight:800; color:var(--ps08-heading-color,var(--text-strong,#0f172a)); margin:0; }
.ps08-card p { color:var(--ps08-desc-color,var(--text-muted,#64748b)); line-height:1.65; margin:0; flex:1; }

/* ── PS-09  Accordion Steps ── */
.ps09-list { display:flex; flex-direction:column; gap:.5rem; max-width:760px; margin:0 auto; }
.ps09-item { border:1.5px solid var(--ps09-item-border,var(--card-border,#e2e8f0)); border-radius:var(--card-radius,12px); overflow:hidden; background:var(--ps09-item-bg,var(--card-bg,#fff)); transition:border-color .2s,box-shadow .2s; }
.ps09-item.open { border-color:var(--ps09-open-accent,var(--primary-color,#fcd703)); box-shadow:var(--ps09-open-shadow,0 4px 20px rgba(252,215,3,.18)); }
.ps09-btn { display:flex; align-items:center; gap:1rem; padding:1.1rem 1.25rem; cursor:pointer; background:transparent; border:none; width:100%; text-align:left; }
.ps09-item.open .ps09-btn { background:var(--ps09-open-bg,#fffbeb); }
.ps09-n { width:30px; height:30px; border-radius:50%; background:var(--ps09-num-bg,var(--primary-color,#fcd703)); display:flex; align-items:center; justify-content:center; font-size:var(--ps09-fs-xs,var(--fs-xs)); font-weight:900; color:var(--ps09-num-fg,var(--text-strong,#0f172a)); flex-shrink:0; }
.ps09-title { flex:1; font-size:var(--ps09-fs-body,var(--fs-body)); font-weight:800; color:var(--ps09-title-color,var(--text-strong,#0f172a)); }
.ps09-chevron { width:20px; height:20px; stroke:var(--text-muted,#64748b); stroke-width:2; fill:none; transition:transform .3s; flex-shrink:0; }
.ps09-item.open .ps09-chevron { transform:rotate(180deg); }
.ps09-body { max-height:0; overflow:hidden; transition:max-height .35s cubic-bezier(.4,0,.2,1); }
.ps09-item.open .ps09-body { max-height:400px; }
.ps09-inner { padding:.75rem 1.25rem 1.25rem; color:var(--ps09-body-color,var(--text-muted,#64748b)); line-height:1.8; }

/* ── PS-10  Connector Dots ── */
.ps10-track { display:grid; grid-template-columns:repeat(var(--ps10-cols-d,5),minmax(0,1fr)); position:relative; gap:0; }
.ps10-track::before { content:''; position:absolute; top:1.5rem; left:10%; right:10%; height:2px; background:var(--ps10-line-color,var(--primary-color,#fcd703)); }
.ps10-track.ps-multirow::before { display:none; }
.ps10-step { display:flex; flex-direction:column; align-items:center; text-align:center; gap:.6rem; padding:0 .75rem 1.5rem; position:relative; }
.ps10-circle { width:48px; height:48px; border-radius:50%; background:var(--ps10-circle-bg,var(--primary-color,#fcd703)); display:flex; align-items:center; justify-content:center; box-shadow:var(--ps10-circle-shadow,0 4px 12px rgba(252,215,3,.4)); position:relative; z-index:1; }
.ps10-circle svg { width:var(--ps10-icon-size,22px); height:var(--ps10-icon-size,22px); stroke:var(--ps10-icon-color,var(--icon-color,var(--text-strong,#0f172a))); stroke-width:var(--ps10-icon-stroke-w,1.8); fill:none; }
.ps10-badge { display:inline-block; padding:.15rem .6rem; background:var(--ps10-badge-bg,#fef9c3); border-radius:99px; font-size:var(--ps10-fs-xs,var(--fs-xs)); font-weight:800; color:var(--ps10-badge-fg,#92400e); }
.ps10-step h3 { font-size:var(--ps10-fs-sm,var(--fs-sm)); font-weight:800; color:var(--ps10-heading-color,var(--text-strong,#0f172a)); margin:0; }
.ps10-step p { color:var(--ps10-desc-color,var(--text-muted,#64748b)); line-height:1.65; margin:0; }

/* ── PS-11  Bold Two-Column ── */
.ps11-grid { display:grid; grid-template-columns:repeat(var(--ps11-cols-d,2),minmax(0,1fr)); gap:2.5rem 3rem; }
.ps11-step { display:flex; gap:1.5rem; align-items:flex-start; }
.ps11-num { font-size:3.5rem; font-weight:900; line-height:1; color:var(--ps11-num-color,var(--primary-color,#fcd703)); flex-shrink:0; width:3rem; text-align:right; }
.ps11-body { flex:1; padding-top:.35rem; }
.ps11-body h3 { font-size:var(--ps11-fs-body,var(--fs-body)); font-weight:800; color:var(--ps11-heading-color,var(--text-strong,#0f172a)); margin:0 0 .4rem; }
.ps11-body p { color:var(--ps11-desc-color,var(--text-muted,#64748b)); line-height:1.75; margin:0 0 .75rem; }
.ps11-link { display:inline-flex; align-items:center; gap:.35rem; font-size:var(--ps11-fs-xs,var(--fs-xs)); font-weight:700; color:var(--ps11-link-color,var(--primary-color,#fcd703)); text-decoration:none; }
.ps11-link svg { width:16px; height:16px; stroke:currentColor; stroke-width:2; fill:none; transition:transform .2s; }
.ps11-link:hover svg { transform:translateX(4px); }

/* ── PS-12  Circular Center Timeline ── */
.ps12-track { display:flex; flex-direction:column; max-width:860px; margin:0 auto; }
.ps12-step { display:grid; grid-template-columns:1fr 64px 1fr; align-items:stretch; min-height:120px; }
.ps12-content { grid-row:1; padding:.75rem 1.5rem; display:flex; align-items:center; }
.ps12-step:nth-child(odd) .ps12-content { grid-column:1; justify-content:flex-end; text-align:right; }
.ps12-step:nth-child(even) .ps12-content { grid-column:3; justify-content:flex-start; text-align:left; }
.ps12-node-wrap { grid-row:1; grid-column:2; }
.ps12-node-wrap { display:flex; flex-direction:column; align-items:center; }
.ps12-line { flex:1; width:2px; background:var(--ps12-line-color,var(--primary-color,#fcd703)); min-height:24px; }
.ps12-node { width:40px; height:40px; border-radius:50%; background:var(--ps12-node-bg,var(--primary-color,#fcd703)); display:flex; align-items:center; justify-content:center; font-weight:900; font-size:var(--ps12-fs-sm,var(--fs-sm)); color:var(--ps12-node-fg,var(--text-strong,#0f172a)); flex-shrink:0; box-shadow:var(--ps12-node-shadow,0 4px 12px rgba(252,215,3,.4)); }
.ps12-step-inner h3 { font-size:var(--ps12-fs-body,var(--fs-body)); font-weight:800; color:var(--ps12-heading-color,var(--text-strong,#0f172a)); margin:0 0 .3rem; }
.ps12-step-inner p { color:var(--ps12-desc-color,var(--text-muted,#64748b)); line-height:1.7; margin:0; }

/* ── §52 responsive ── */
@media (max-width:768px) {
  .ps11-grid { grid-template-columns:repeat(var(--ps11-cols-t,1),minmax(0,1fr)); }
  .ps04-grid { grid-template-columns:repeat(var(--ps04-cols-t,2),minmax(0,1fr)); }
  .ps08-grid { grid-template-columns:repeat(var(--ps08-cols-t,2),minmax(0,1fr)); }
  .ps01-track { grid-template-columns:repeat(var(--ps01-cols-t,2),minmax(0,1fr)); }
  .ps10-track { grid-template-columns:repeat(var(--ps10-cols-t,2),minmax(0,1fr)); }
  .ps12-step { grid-template-columns:0 64px 1fr; }
  .ps12-content { grid-column:3 !important; justify-content:flex-start !important; text-align:left !important; }
  .ps03-step { grid-template-columns:0 60px 1fr; }
  .ps03-content { grid-column:3 !important; text-align:left !important; }
}
@media (max-width:640px) {
  .ps01-step:not(:last-child)::after { display:none; }
  .ps01-track { grid-template-columns:repeat(var(--ps01-cols-m,1),minmax(0,1fr)); }
  .ps04-grid { grid-template-columns:repeat(var(--ps04-cols-m,1),minmax(0,1fr)); }
  .ps08-grid { grid-template-columns:repeat(var(--ps08-cols-m,1),minmax(0,1fr)); }
  .ps10-track { grid-template-columns:repeat(var(--ps10-cols-m,1),minmax(0,1fr)); }
  .ps11-grid { grid-template-columns:repeat(var(--ps11-cols-m,1),minmax(0,1fr)); }
  .ps05-track { flex-direction:column; }
  .ps05-step { border-right:none !important; border-bottom:1px solid rgba(255,255,255,.07); }
  .ps06-step { min-width:100%; }
  .ps10-track::before { display:none; }
}

/* §T — Alternating Vertical Timeline (about_us / composed pages) */
.tl-wrap{position:relative}
.tl-line{position:absolute;left:50%;top:0;bottom:0;width:2px;background:var(--card-border,#e5e7eb);transform:translateX(-50%);z-index:0}
.tl-grid{display:grid;grid-template-columns:1fr 44px 1fr;align-items:center;gap:0;margin-bottom:3rem;position:relative;z-index:1}
.tl-grid:last-child{margin-bottom:0}
.tl-dot{justify-self:center}
.tl-left{text-align:right;padding-right:2.5rem}
.tl-right{padding-left:2.5rem}
.story-img{position:relative;padding-bottom:1.5rem}
@media(max-width:640px){
  .tl-grid{grid-template-columns:40px 1fr;gap:0 .75rem}
  .tl-left{grid-column:2;grid-row:1;text-align:left!important;padding-right:0!important}
  .tl-dot{grid-column:1;grid-row:1;justify-self:center}
  .tl-right{grid-column:2;padding-left:0}
  .tl-empty{display:none!important}
  .tl-line{display:none}
  .story-img{padding-bottom:2.5rem}
}

/* --------------------------------------------------------------
   §53 Banner Slider (slider.html)
-------------------------------------------------------------- */

/* gap between sliders */
.slider-gap { height:5rem; background:#f5f5f5; }

/* pdx-bg — parallax background layer */
.pdx-bg { position:absolute; inset:-10%; width:120%; height:120%; overflow:hidden; }
.pdx-bg img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
/* pdx-no-parallax — shared "Disable Parallax Effect" toggle (data-pageedit-
   toggle-class on .swiper) used by every Hero-family template whose slide
   image sits in .pdx-bg (hero-cinema, hero-fullscreen-slider, cube-flip,
   full-bleed-slider, creative-stack-slider). Default (class absent) keeps
   the oversized pan-headroom box above unchanged for every already-
   published section. Scoped to .swiper so mq-01's own .pdx-bg (a different,
   non-Hero template) is never affected even though it shares the class.
   .hfs-no-parallax is the original (pre-rename) class name -- a section
   already inserted from the library before the rename has that literal
   string baked into its stored HTML (section markup is copied at insert
   time, not live-referenced), so both names are accepted indefinitely. */
.swiper.pdx-no-parallax .pdx-bg, .swiper.hfs-no-parallax .pdx-bg { inset:0; width:100%; height:100%; }
.swiper.pdx-no-parallax .pdx-bg img, .swiper.hfs-no-parallax .pdx-bg img { height:auto; object-fit:initial; }

/* hfs-adapt-height — "Adapt Original Height" toggle, Hero — Fullscreen
   Slider ONLY (data-pageedit-toggle-class on .swiper, same mechanism as
   pdx-no-parallax above). The slide image renders at its natural aspect
   ratio in normal flow (full width, height auto) instead of being cropped
   to fill the fixed --hfs-height box — the section's own height then
   comes from the image via section:has(). Scoped narrowly (compound
   .swiper.hfs-adapt-height selectors, not bare .pdx-bg) so it can't touch
   the other Hero-family templates that share .pdx-bg/.swiper.
   --hfs-mobile-minh is still enforced as a floor here: min-height is set on
   the section AND on .pdx-bg/img themselves (not just the outer boxes),
   because height:auto on an ancestor only sizes to its content — an image
   whose natural aspect ratio renders shorter than the configured min-height
   would otherwise leave blank space below it instead of the box actually
   growing. object-fit:cover (replacing the previous object-fit:initial,
   which is equivalent to 'fill' and would have stretched/distorted the
   image) crops instead of stretching whenever the min-height floor forces
   the box taller than the image's natural height; when the natural aspect
   ratio already exceeds the floor, cover renders identically to natural
   display since no cropping is needed. */
section:has(> .swiper.hfs-adapt-height) { height:auto !important; min-height:var(--hfs-mobile-minh,420px) !important; }
.swiper.hfs-adapt-height { height:auto !important; min-height:var(--hfs-mobile-minh,420px) !important; }
.swiper.hfs-adapt-height .swiper-wrapper, .swiper.hfs-adapt-height .swiper-slide { height:auto !important; min-height:inherit !important; }
.swiper.hfs-adapt-height .pdx-bg { position:static !important; inset:auto !important; width:100% !important; height:auto !important; min-height:var(--hfs-mobile-minh,420px) !important; overflow:hidden !important; }
.swiper.hfs-adapt-height .pdx-bg img { position:static !important; width:100% !important; height:auto !important; min-height:var(--hfs-mobile-minh,420px) !important; object-fit:cover !important; display:block; }
.swiper.hfs-adapt-height .pdx-bg[data-swiper-parallax] { transform:none !important; }

/* hfs-cta — Hero — Fullscreen Slider's CTA button, scoped uniquely so this
   doesn't touch every other template's .v-btn-p (that class is the
   framework's shared primary-button style, reused everywhere). If the
   admin leaves "CTA Text" empty AND sets a real "CTA URL" (not the
   default "#"), the whole slide becomes clickable instead of showing a
   broken empty pill: the button expands to cover the slide (invisible,
   behind the text) and the text-overlay layer stops intercepting clicks
   so they reach it. Both conditions absent (or href still "#") → no
   change from the normal small-button behavior. */
.hfs-cta-full { display:block; }
.hfs-cta:has(span:empty) { display:none !important; }
/* hfs-cta-full is a dedicated, always-outside-the-parallax-wrapper click
   catcher (see its comment in sp-section-library.html) — shown only when
   the visible button's text is empty but its URL is real. Its href is kept
   in sync with the CTA URL field automatically (sp-pageedit.js renderLink). */
/* Showing/hiding hfs-cta-full itself is handled by theme.js's
   initHeroCtaFullClick — chaining :has() through this much DOM proved
   unreliable in practice, so JS is the source of truth, not CSS. */

/* hc-cta / hc-adapt-height — Hero — HeroCinema. Empty CTA text hides that
   button (dual-CTA template, so no whole-slide-click here — see hfs-cta
   above for the single-CTA version of that behavior). Adapt Original
   Height lets the slide image drive the section's height instead of
   --hc-h-mobile/desktop. */
.hc-cta:has(span:empty) { display:none !important; }
.hero-cinema-section.hc-adapt-height { height:auto !important; min-height:0 !important; }
.hero-cinema-section.hc-adapt-height > .swiper { flex:none !important; height:auto !important; }
.hero-cinema-section.hc-adapt-height .swiper-wrapper, .hero-cinema-section.hc-adapt-height .swiper-slide { height:auto !important; }
.hero-cinema-section.hc-adapt-height .pdx-bg { position:static !important; inset:auto !important; width:100% !important; height:auto !important; overflow:visible !important; }
.hero-cinema-section.hc-adapt-height .pdx-bg img { position:static !important; width:100% !important; height:auto !important; object-fit:initial !important; display:block; }
.hero-cinema-section.hc-adapt-height .pdx-bg[data-swiper-parallax] { transform:none !important; }

/* cf-cta / cf-adapt-height — Hero — CubeFlip. Single CTA, so empty text +
   real URL makes the whole slide clickable (same pattern as hfs-cta). */
.cf-root.cf-adapt-height { height:auto !important; min-height:0 !important; }
.cf-root.cf-adapt-height .swiper { height:auto !important; }
.cf-root.cf-adapt-height .swiper-wrapper, .cf-root.cf-adapt-height .swiper-slide { height:auto !important; }
.cf-root.cf-adapt-height .pdx-bg { position:static !important; inset:auto !important; width:100% !important; height:auto !important; overflow:visible !important; }
.cf-root.cf-adapt-height .pdx-bg img { position:static !important; width:100% !important; height:auto !important; object-fit:initial !important; display:block; }
.cf-root.cf-adapt-height .pdx-bg[data-swiper-parallax] { transform:none !important; }
.cf-cta:has(span:empty) { display:none !important; }
/* Showing/hiding cf-cta-full is handled by theme.js's initHeroCtaFullClick — see hfs-cta's comment above. */

/* fbs-cta / fbs-adapt-height — Hero — FullBleed. Single CTA → whole-slide
   click on empty text + real URL, same pattern as hfs-cta. Adapt Original
   Height hides the blur-backdrop layer (no gap left for it to fill) and
   lets the (previously foreground-only) pdx-bg image drive the height. */
.fbs-root.fbs-adapt-height { height:auto !important; min-height:0 !important; }
.fbs-root.fbs-adapt-height .swiper { height:auto !important; }
.fbs-root.fbs-adapt-height .swiper-wrapper, .fbs-root.fbs-adapt-height .swiper-slide { height:auto !important; }
.fbs-root.fbs-adapt-height .fbs-blur-bg { display:none !important; }
.fbs-root.fbs-adapt-height .pdx-bg { position:static !important; inset:auto !important; width:100% !important; height:auto !important; overflow:visible !important; }
.fbs-root.fbs-adapt-height .pdx-bg img { position:static !important; width:100% !important; height:auto !important; object-fit:initial !important; display:block; }
.fbs-root.fbs-adapt-height .pdx-bg[data-swiper-parallax] { transform:none !important; }
.fbs-cta:has(span:empty) { display:none !important; }
/* Showing/hiding fbs-cta-full is handled by theme.js's initHeroCtaFullClick — see hfs-cta's comment above. */

/* cst-adapt-height — Hero — CreativeStack. CTA text here isn't
   independently editable (no data-pageedit="text" span — the link field
   sits directly on the anchor), so "hide/whole-click on empty text" isn't
   applicable to this template; only Adapt Original Height is added. */
.cst-hero-sec.cst-adapt-height { height:auto !important; min-height:0 !important; }
.cst-hero-sec.cst-adapt-height .swiper { height:auto !important; }
.cst-hero-sec.cst-adapt-height .swiper-wrapper, .cst-hero-sec.cst-adapt-height .swiper-slide { height:auto !important; }
.cst-hero-sec.cst-adapt-height .cst-blur-bg { display:none !important; }
.cst-hero-sec.cst-adapt-height .pdx-bg { position:static !important; inset:auto !important; width:100% !important; height:auto !important; overflow:visible !important; }
.cst-hero-sec.cst-adapt-height .pdx-bg img { position:static !important; width:100% !important; height:auto !important; object-fit:initial !important; display:block; }
.cst-hero-sec.cst-adapt-height .pdx-bg[data-swiper-parallax] { transform:none !important; }

/* srl-* / srr-* — Hero SplitReveal (Image Left / Text Left). Two-panel
   split layout, so "whole banner clickable" covers the ENTIRE slide (both
   panels), not just the image or text side — the CTA link expands to
   `inset:0` against the nearest positioned ancestor, .srl-slide/.srr-slide
   (both panels stay pointer-events:none so clicks fall through to it,
   except the CTA itself which re-enables pointer-events). Adapt Original
   Height lets the image panel size to the image's own aspect ratio
   instead of being cropped/stretched to match the row height. */
.srl-adapt-height .srl-slide, .srr-adapt-height .srr-slide,
.srl-adapt-height .srl-slide > div, .srr-adapt-height .srr-slide > div,
.srl-adapt-height .srl-img-panel, .srr-adapt-height .srr-img-panel { min-height:auto !important; }
.srl-adapt-height .srl-img-wrap, .srr-adapt-height .srr-img-wrap { position:static !important; width:100% !important; height:auto !important; }
.srl-adapt-height .srl-img-wrap img, .srr-adapt-height .srr-img-wrap img { width:100% !important; height:auto !important; object-fit:initial !important; }
.srl-adapt-height .srl-img-wrap[data-swiper-parallax], .srr-adapt-height .srr-img-wrap[data-swiper-parallax] { transform:none !important; }
.srl-slide, .srr-slide { position:relative; }
/* Prev/next arrows: the container is absolutely positioned over the text column, so the text panel reserves room for it.
   Reserved height = distance from bottom (--srX-nav-bottom) + arrow size (Settings > Buttons > Nav x "Back/Next arrow size")
   + gap under the text (--srX-nav-gap). Both are section settings; on phones they shrink to 70%. !important also repairs
   pages saved with the older fixed values. */
.srl-nav { bottom:var(--srl-nav-bottom,1.75rem) !important; }
.srr-nav { bottom:var(--srr-nav-bottom,1.75rem) !important; }
.srl-text-panel { padding-bottom:calc(var(--srl-nav-bottom,1.75rem) + var(--snav-size,var(--btn-n-size,44px)) * var(--hero-navscale,1) + var(--srl-nav-gap,1.25rem)) !important; }
.srr-text-panel { padding-bottom:calc(var(--srr-nav-bottom,1.75rem) + var(--snav-size,var(--btn-n-size,44px)) * var(--hero-navscale,1) + var(--srr-nav-gap,1.25rem)) !important; }
@media (max-width:767px){
  .srl-nav { bottom:calc(var(--srl-nav-bottom,1.75rem) * .7) !important; }
  .srr-nav { bottom:calc(var(--srr-nav-bottom,1.75rem) * .7) !important; }
  .srl-text-panel { padding-bottom:calc((var(--srl-nav-bottom,1.75rem) + var(--srl-nav-gap,1.25rem)) * .7 + var(--snav-size,var(--btn-n-size,44px)) * var(--hero-navscale,1)) !important; }
  .srr-text-panel { padding-bottom:calc((var(--srr-nav-bottom,1.75rem) + var(--srr-nav-gap,1.25rem)) * .7 + var(--snav-size,var(--btn-n-size,44px)) * var(--hero-navscale,1)) !important; }
}
/* "Align Content Right" toggle — the text block (eyebrow / headline / description / CTA) and the prev/next arrows
   sit against the right edge of the text panel instead of the left. */
.srl-content-right .srl-text-panel, .srr-content-right .srr-text-panel { align-items:flex-end; text-align:right; }
.srl-content-right .srl-nav, .srr-content-right .srr-nav { justify-content:flex-end; }
/* Column widths (--srl-split / --srr-split = width of the LEFT column; the right column takes the rest). Stacks on phones. */
@media (max-width:767px){
  .srl-slide > div, .srr-slide > div { grid-template-columns:1fr !important; }
  .srl-nav, .srr-nav { width:50% !important; }
}
.srl-cta:has(span:empty), .srr-cta:has(span:empty) { display:none !important; }
/* srl-cta-full / srr-cta-full are dedicated click catchers living directly
   on .srl-slide/.srr-slide (see hfs-cta-full's comment above) — this
   sidesteps both the parallax-wrapper containing-block problem AND the
   fact the visible anchor's own inline sizing kept winning the cascade. */
/* Showing/hiding srl-cta-full / srr-cta-full is handled by theme.js's initHeroCtaFullClick — see hfs-cta's comment above. */

/* cd-cta — Hero — CrossDrift. Hide/whole-click only (the image column is
   an asymmetric 52%-width absolute-positioned drift effect with no clean
   "natural height" interpretation, so Adapt Original Height isn't offered
   here). */
.cd-cta:has(span:empty) { display:none !important; }
/* Showing/hiding cd-cta-full is handled by theme.js's initHeroCtaFullClick — see hfs-cta's comment above. */

/* ps-cta — Hero — PrismSlide. Same reasoning as cd-cta: the image column
   is an asymmetric 52%-width absolute panel, no Adapt Original Height
   offered here, hide/whole-click only. */
.ps-cta:has(span:empty) { display:none !important; }
/* Showing/hiding ps-cta-full is handled by theme.js's initHeroCtaFullClick — see hfs-cta's comment above. */

/* tp-* — Hero — TextPane. The left image is static/shared across all
   slides (outside the swiper loop), so whole-slide-click only applies to
   the right text panel (the image can't sensibly link to a per-slide URL
   with pure CSS). Adapt Original Height affects only the image panel. */
.tp-adapt-height .tp-img-panel { min-height:auto !important; }
.tp-adapt-height .tp-img { position:static !important; width:100% !important; height:auto !important; object-fit:initial !important; }
.tp-cta:has(span:empty) { display:none !important; }
/* Showing/hiding tp-cta-full is handled by theme.js's initHeroCtaFullClick — see hfs-cta's comment above. */

/* hs-01..hs-07 — the TypeXXX static (non-slider) Hero templates. All are
   dual-CTA (primary v-btn-a/v-btn-p + a secondary plain-text .hsNN-link),
   so no whole-section-click here (two links can't both own the click) —
   hide-if-empty only, reusing each template's own already-unique CTA-row
   wrapper class, no HTML changes needed. hs-05's product strip already
   has its own "no card / original image, no crop" toggle (--hs05-card)
   that covers the Adapt Original Height use case; hs-03/hs-04's
   background images stretch to match the text content's own height
   (there's no separate fixed-height box to adapt away from), so neither
   gets a new toggle. hs-01/06/07 have no image at all. */
.hs01-ctas .v-btn-a:has(span:empty), .hs01-ctas .hs01-link:has(span:empty) { display:none !important; }
.hs02-ctas .v-btn-p:has(span:empty), .hs02-ctas .hs02-link:has(span:empty) { display:none !important; }
.hs03-ctas .v-btn-a:has(span:empty), .hs03-ctas .hs03-link:has(span:empty) { display:none !important; }
.hs04-ctas .v-btn-a:has(span:empty), .hs04-ctas .hs04-link:has(span:empty) { display:none !important; }
.hs05-cta .v-btn-p:has(span:empty) { display:none !important; }
.hs06-ctas .v-btn-a:has(span:empty), .hs06-ctas .hs06-link:has(span:empty) { display:none !important; }
.hs07-ctas .v-btn-a:has(span:empty), .hs07-ctas .hs07-link:has(span:empty) { display:none !important; }

/* cst-hero-sec — Hero — CreativeStack's own mobile min-height override.
   The section's `min-height:520px` is set inline (fixed viewport-independent
   guard against the 88vh height collapsing too short); --cst-mobile-minh is
   a style-config field so an admin can raise that floor for small screens
   without it fighting the desktop value. !important is required to win over
   the inline min-height at this breakpoint — the desktop inline value is a
   fixed px, not a var, so specificity alone can't override it here. */
@media (max-width:767px){
  .cst-hero-sec{ min-height:var(--cst-mobile-minh,420px) !important }
}

/* hide empty-src images so broken-image placeholders never overlay content */
img[src=""] { display: none !important; }

/* snav — shared nav button (prev/next arrow). Fully driven by Settings >
   Buttons > Nav (--btn-n-*) — size, colours, border, shadow, hover effect
   and icon all come from there; --hero-navscale is the only thing a
   template itself may set (a per-section multiplier, see Hero templates'
   "Back/Next size" style-config field; defaults to 1 = no change). */
.snav { position:absolute; top:50%; transform:translateY(-50%); z-index:30; width:calc(var(--snav-size,var(--btn-n-size,44px)) * var(--hero-navscale,1)); height:calc(var(--snav-size,var(--btn-n-size,44px)) * var(--hero-navscale,1)); border-radius:var(--btn-n-radius,50%); overflow:hidden; isolation:isolate; background:var(--snav-bg,var(--btn-n-bg,rgba(255,255,255,.13))); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); border:var(--btn-n-border,1px solid var(--snav-border,rgba(255,255,255,.18))); box-shadow:var(--btn-n-shadow,none); color:var(--snav-color,var(--btn-n-text,rgba(255,255,255,.9))); font-size:var(--btn-n-fs,1rem); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .2s,transform .2s,color .2s,box-shadow .2s,border-color .2s,filter .2s; }
.snav::before { content:''; position:absolute; inset:0; z-index:-1; border-radius:inherit; pointer-events:none; transition:transform .4s ease,opacity .3s ease; background-color:var(--btn-n-bg-hover,rgba(255,255,255,.24)); transform:translateX(var(--btn-n-hover-tx,0%)); opacity:var(--btn-n-hover-oi,0); }
.snav:hover { background:var(--snav-hover,var(--btn-n-bg-hover,rgba(255,255,255,.24))); color:var(--snav-hover-color,var(--btn-n-text-hover,currentColor)); border-color:var(--btn-n-border-hover,var(--snav-border,rgba(255,255,255,.18))); box-shadow:var(--btn-n-shadow-hover,var(--btn-n-shadow,none)); transform:translateY(-50%) var(--btn-n-transform,scale(1.08)); filter:var(--btn-n-hover-filter,none); }
.snav:hover::before { transform:translateX(0); opacity:var(--btn-n-hover-ot,1); }
/* Icon: a CSS mask painted with currentColor, so an uploaded SVG inherits
   --btn-n-text/-hover exactly like the built-in default does. Shared by
   .snav (absolute-positioned slide/hero overlay arrows) AND .sc-btn
   (inline-flex row-toolbar arrows, e.g. card scrollers) — those two stay
   separate LAYOUT classes (one can't become the other without breaking
   row-toolbar layouts), but both render this same icon element and both
   read the same --btn-n-* settings below. "Next" draws the icon as-is;
   "Back" gets .btnnav-ico--prev, which mirrors the same icon via
   scaleX(-1) — there is deliberately only ever one upload, not two. */
.btnnav-ico { width:calc(var(--snav-size,var(--btn-n-size,44px)) * var(--hero-navscale,1) * .45); height:calc(var(--snav-size,var(--btn-n-size,44px)) * var(--hero-navscale,1) * .45); background-color:currentColor; pointer-events:none; flex-shrink:0;
  -webkit-mask:var(--btn-n-icon,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'/%3E%3C/svg%3E")) center/contain no-repeat;
  mask:var(--btn-n-icon,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'/%3E%3C/svg%3E")) center/contain no-repeat; }
.btnnav-ico--prev { transform:scaleX(-1); }
.snav-l { left:1.25rem; }
.snav-r { right:1.25rem; }
.snav.snav-swiper-disabled { opacity:.35; }
.snav-dk { background:rgba(255,255,255,.88); border-color:rgba(0,0,0,.08); }
.snav-dk:hover { background:var(--card-bg,#fff); }

/* pl-snav — Paushtik Life split-slider inline nav button
   Brand primary from settings. Normal flow (never absolute). Visible on mobile. */
.pl-snav{width:40px;height:40px;border-radius:50%;background:var(--btn-n-bg,var(--primary-dark,var(--primary-color)));border:1px solid var(--btn-n-bg,var(--primary-dark,var(--primary-color)));cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,color .2s,transform .2s,border-color .2s;flex-shrink:0;color:var(--btn-n-text,var(--text-inverse,#fff));transform:scale(1.1)}
.pl-snav:hover{background:var(--btn-n-text,var(--text-inverse,#fff));color:var(--btn-n-bg,var(--primary-dark,var(--primary-color)));border-color:var(--btn-n-bg,var(--primary-dark,var(--primary-color)));transform:scale(1.2);opacity:1}

/* PrismSlide ghost text + slide number */
.prism-ghost { position:absolute; top:50%; left:35%; transform:translate(-50%,-52%); font-size:clamp(8rem,18vw,17rem); font-weight:900; color:rgba(255,255,255,.035); letter-spacing:-.06em; white-space:nowrap; pointer-events:none; user-select:none; z-index:1; line-height:1; }
.prism-num { position:absolute; bottom:2rem; right:2.5rem; font-size:var(--fs-xs,.68rem); font-weight:800; letter-spacing:.18em; color:rgba(255,255,255,.2); z-index:5; }

/* Ken Burns slide image — must fill slide fully */
.kb-img { position:absolute; inset:-4%; width:108%; height:108%; object-fit:cover; transform-origin:center center; display:block; }
/* kbTxt: full-overlay, centered slides */
.kb-txt-area, .kb-txt-area .swiper, .kb-txt-area .swiper-wrapper { height:100% !important; background:transparent !important; }
.kb-txt-area .swiper-slide { height:100% !important; }
.kb-slide-text { max-width:600px; }
.kb-slide-text h2 { text-shadow:0 2px 20px rgba(0,0,0,.7); }
.kb-slide-text p { text-shadow:0 1px 10px rgba(0,0,0,.6); }
.kb-slide-btns { display:flex; flex-direction:row; gap:1rem; justify-content:center; align-items:center; flex-wrap:wrap; }
.kb-centered-slide { pointer-events:auto; }
@keyframes kbPan { 0%{ transform:scale(1.12); } 100%{ transform:scale(1); } }
.kb-img.kb-active { animation:kbPan 6s ease-out forwards; }

/* CoverFlow — fixed card dimensions */
.cf-slider .swiper-slide { width:260px; height:360px; border-radius:14px; overflow:hidden; flex-shrink:0; transition:box-shadow .3s; }
.cf-slider .swiper-slide img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s; }
.cf-slider .swiper-slide-active { box-shadow:0 24px 60px rgba(0,0,0,.35); }
.cf-slider .swiper-slide-active img { transform:scale(1.05); }

/* FullBleed progress bar override */
.fb-slider .swiper-pagination-progressbar { height:3px; background:rgba(255,255,255,.12); }
.fb-slider .swiper-pagination-progressbar-fill { background:#e8b84b; }

/* Swiper pagination — force center on all custom pag containers */
.swiper-pagination { text-align:center !important; }
.swiper-pagination-bullets.swiper-pagination-horizontal,
.hc-pag, .sr-pag, .tp-pag, .oc-pag, .od-pag, .oe-pag, .cd-pag, .kb-pag,
.pd-pag, .cube-pag, .prism-pag, .cs-pag, .cf-pag, .fb-pag, .at-pag {
  left:50% !important;
  right:auto !important;
  width:auto !important;
  transform:translateX(-50%) !important;
}
/* Global bullets — neutral gray (safe on both light and dark without extra classes) */
.swiper-pagination-bullet { background:#c8cdd6; opacity:1; }
.swiper-pagination-bullet-active { background:var(--primary-color,#e8b84b); }

/* All custom inline pagination strips — override Swiper's absolute positioning */
[id$="Pag"] { position:static !important; display:flex !important; align-items:center; gap:.5rem; width:auto !important; transform:none !important; bottom:auto !important; margin:0 !important; }
[id$="Pag"] .swiper-pagination-bullet { opacity:1; width:8px; height:8px; flex-shrink:0; background:#c8cdd6; }
[id$="Pag"].dark-pag .swiper-pagination-bullet { background:rgba(255,255,255,.25); }
[id$="Pag"] .swiper-pagination-bullet-active { background:var(--primary-color,#e8b84b) !important; width:20px; border-radius:4px; }

/* All custom prev/next nav buttons — Swiper adds swiper-button-prev/next classes with position:absolute; override */
[id$="Prev"], [id$="Next"] { position:static !important; top:auto !important; margin-top:0 !important; transform:none !important; }
/* Swiper hides buttons it thinks are disabled — keep them visible */
[id$="Prev"].swiper-button-disabled, [id$="Next"].swiper-button-disabled { opacity:.35; pointer-events:none; }


/* ═══════════════════════════════════════════════════════════════════
   §54  STACK SECTIONS — ST-01 … ST-05
═══════════════════════════════════════════════════════════════════ */

/* ── ST-01  Light Card Stack ─────────────────────────────────── */
.st01-wrap { position:relative; }
.st01-card { position:sticky; top:0; min-height:100vh; display:flex; align-items:center; padding:5rem 0; background:var(--st01-item-bg,#ffffff); }
.st01-inner { max-width:1200px; margin:0 auto; padding:0 2.5rem; width:100%; display:grid; grid-template-columns:1fr 1fr; gap:5rem; align-items:center; }
.st01-left  { display:flex; flex-direction:column; align-items:flex-start; gap:1.25rem; }
.st01-num   { font-size:3.5rem; font-weight:900; color:var(--st01-num-color,var(--primary-color,#fcd703)); line-height:1; letter-spacing:-.04em; }
.st01-tag   { display:inline-block; font-size:var(--st01-fs-xs,var(--fs-xs)); font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--st01-tag-color,var(--primary-color,#fcd703)); background:color-mix(in srgb,var(--st01-tag-color,var(--primary-color,#fcd703)) 12%,transparent); padding:.3rem .9rem; border-radius:99px; }
.st01-h     { font-size:clamp(1.6rem,2.8vw,2.4rem); font-weight:800; color:var(--st01-heading-color,#0f172a); line-height:1.15; letter-spacing:-.03em; margin:0; }
.st01-body  { color:var(--st01-body-color,#475569); line-height:1.7; max-width:440px; margin:0; }
.st01-cta   { display:inline-flex; align-items:center; gap:.5rem; font-size:var(--st01-fs-sm,var(--fs-sm)); font-weight:700; color:var(--st01-cta-color,#0f172a); text-decoration:none; }
.st01-cta:hover { color:var(--primary-color,#fcd703); }
.st01-cta svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; transition:transform .2s; }
.st01-cta:hover svg { transform:translateX(4px); }
.st01-right { position:relative; }
.st01-img-wrap { border-radius:var(--st01-img-radius,1rem); overflow:hidden; }
.st01-img-wrap img { width:100%; height:100%; object-fit:cover; display:block; }
.st01-float-badge { position:absolute; bottom:-1.5rem; left:-1.5rem; background:var(--st01-badge-bg,#ffffff); border-radius:12px; padding:1rem 1.25rem; display:flex; align-items:center; gap:.85rem; box-shadow:0 8px 30px rgba(0,0,0,.12); min-width:190px; }
.st01-badge-icon { width:40px; height:40px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; background:var(--st01-item-badge-bg,#0ea5e9); }
.st01-badge-icon svg { width:20px; height:20px; stroke:#fff; fill:none; stroke-width:2; }
.st01-badge-text { font-size:var(--st01-fs-sm,var(--fs-sm)); font-weight:800; color:var(--text-strong,#0f172a); }
.st01-badge-sub  { font-size:var(--st01-fs-xs,var(--fs-xs)); color:var(--text-muted,#94a3b8); margin-top:.1rem; }

/* ── ST-02  Full-Screen Image Stack ──────────────────────────── */
.st02-wrap { position:relative; }
.st02-card { position:sticky; top:0; height:100vh; overflow:hidden; }
.st02-bg { position:absolute; inset:0; }
.st02-bg img { width:100%; height:100%; object-fit:cover; display:block; }
.st02-bg::after { content:''; position:absolute; inset:0; background:linear-gradient(to top,color-mix(in srgb,var(--st02-overlay-color,#000000) calc(var(--st02-overlay-opacity,.82)*100%),transparent) 0%,color-mix(in srgb,var(--st02-overlay-color,#000000) calc(var(--st02-overlay-opacity,.82)*30%),transparent) 60%,transparent 100%); }
.st02-content { position:absolute; bottom:0; left:0; z-index:2; padding:3.5rem 4rem; max-width:700px; color:#fff; }
.st02-num  { font-size:var(--st02-fs-xs,var(--fs-xs)); font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--st02-num-color,rgba(255,255,255,.45)); margin-bottom:.85rem; }
.st02-h    { font-size:clamp(2rem,4.5vw,3.5rem); font-weight:900; line-height:1.06; letter-spacing:-.04em; margin:0 0 1rem; color:var(--st02-heading-color,#ffffff); }
.st02-sub  { color:var(--st02-sub-color,rgba(255,255,255,.65)); line-height:1.65; max-width:480px; margin:0 0 1.75rem; }
.st02-cta  { display:inline-flex; align-items:center; gap:.5rem; font-size:var(--st02-fs-sm,var(--fs-sm)); font-weight:700; color:var(--st02-cta-color,#ffffff); text-decoration:none; border:2px solid var(--st02-cta-border,rgba(255,255,255,.35)); padding:.7rem 1.5rem; border-radius:99px; transition:background .2s,border-color .2s; }
.st02-cta:hover { background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.7); }
.st02-cta svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; }

/* ── ST-03  Dark Numbered Process Stack ──────────────────────── */
.st03-wrap { position:relative; background:var(--st03-bg,#0f172a); }
.st03-card { position:sticky; top:0; min-height:100vh; display:flex; align-items:center; background:var(--st03-bg,#0f172a); }
.st03-inner { max-width:1200px; margin:0 auto; padding:5rem 2.5rem; width:100%; display:grid; grid-template-columns:1fr 1fr; gap:5rem; align-items:center; }
.st03-left { position:relative; display:flex; flex-direction:column; gap:1.5rem; }
.st03-ghost-num { position:absolute; top:-1rem; left:-1rem; font-size:clamp(6rem,10vw,9rem); font-weight:900; color:rgba(255,255,255,var(--st03-ghost-opacity,.04)); line-height:1; pointer-events:none; user-select:none; letter-spacing:-.06em; }
.st03-label { font-size:var(--st03-fs-xs,var(--fs-xs)); font-weight:800; letter-spacing:.18em; text-transform:uppercase; color:var(--accent,#0ea5e9); }
.st03-h     { font-size:clamp(1.8rem,3vw,2.6rem); font-weight:800; color:var(--st03-heading-color,#ffffff); line-height:1.12; letter-spacing:-.03em; margin:0; }
.st03-body  { color:var(--st03-body-color,#94a3b8); line-height:1.7; max-width:400px; margin:0; }
.st03-cta   { display:inline-flex; align-items:center; gap:.5rem; font-size:var(--st03-fs-sm,var(--fs-sm)); font-weight:700; color:var(--accent,#0ea5e9); text-decoration:none; }
.st03-cta svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; transition:transform .2s; }
.st03-cta:hover svg { transform:translateX(4px); }
.st03-right { display:grid; grid-template-columns:1fr 1fr; gap:1.25rem; }
.st03-feat  { background:var(--st03-item-feat-bg,var(--st03-feat-bg,rgba(255,255,255,.04))); border:1px solid var(--st03-feat-border,rgba(255,255,255,.07)); border-radius:12px; padding:1.5rem; display:flex; flex-direction:column; gap:.75rem; }
.st03-feat-icon  { width:44px; height:44px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; background:var(--st03-item-icon-bg,color-mix(in srgb,var(--accent) 14%,transparent)); }
.st03-feat-icon svg { width:22px; height:22px; fill:none; stroke-width:1.75; stroke:var(--st03-item-icon-color,var(--accent)); }
.st03-feat-title { font-size:var(--st03-fs-sm,var(--fs-sm)); font-weight:700; color:var(--st03-item-feat-fg,#ffffff); }
.st03-feat-text  { color:var(--st03-item-feat-text,var(--text-muted,#64748b)); line-height:1.55; }

/* ── ST-04  Portfolio Case Study Stack ───────────────────────── */
.st04-wrap { position:relative; }
.st04-card { position:sticky; top:0; min-height:100vh; display:flex; align-items:stretch; background:var(--card-bg,#fff); transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s; transform-origin:center top; }
.st04-card.st-buried { transform:scale(.96); opacity:.82; }
.st04-img-col { position:relative; flex:0 0 48%; overflow:hidden; }
.st04-img-col img { width:100%; height:100%; object-fit:cover; display:block; }
.st04-img-num { position:absolute; bottom:2rem; left:2rem; font-size:var(--st04-fs-xs,var(--fs-xs)); font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:#fff; background:var(--st04-badge-bg,rgba(0,0,0,.45)); padding:.4rem 1rem; border-radius:99px; backdrop-filter:blur(6px); }
.st04-text-col { flex:1; padding:5rem 4rem 5rem 5rem; display:flex; flex-direction:column; justify-content:center; gap:1.25rem; }
.st04-cat  { font-size:var(--st04-fs-xs,var(--fs-xs)); font-weight:800; letter-spacing:.16em; text-transform:uppercase; color:var(--st04-cat-color,var(--primary-color,#fcd703)); }
.st04-h    { font-size:clamp(1.6rem,2.6vw,2.4rem); font-weight:800; color:var(--st04-heading-color,#0f172a); line-height:1.15; letter-spacing:-.03em; margin:0; }
.st04-body { color:var(--st04-body-color,#475569); line-height:1.7; margin:0; max-width:460px; }
.st04-tags { display:flex; flex-wrap:wrap; gap:.5rem; }
.st04-tag  { font-size:var(--st04-fs-xs,var(--fs-xs)); font-weight:700; color:var(--st04-tag-color,#475569); background:var(--st04-tag-bg,#f1f5f9); padding:.3rem .85rem; border-radius:99px; }
.st04-link { display:inline-flex; align-items:center; gap:.5rem; font-size:var(--st04-fs-body,var(--fs-body)); font-weight:700; color:var(--st04-link-color,#0f172a); text-decoration:none; margin-top:.5rem; }
.st04-link svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; transition:transform .2s; }
.st04-link:hover svg { transform:translateX(4px); }

/* ── ST-05  Split Color Panel Stack ──────────────────────────── */
.st05-wrap { position:relative; }
.st05-card { position:sticky; top:0; min-height:100vh; display:flex; background:var(--card-bg,#fff); transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s; transform-origin:center top; }
.st05-card.st-buried { transform:scale(.96); opacity:.82; }
.st05-left { flex:0 0 50%; display:flex; flex-direction:column; justify-content:center; gap:1.5rem; padding:5rem 4rem 5rem 5rem; background:var(--card-bg,#fff); }
.st05-right { flex:1; position:relative; overflow:hidden; display:flex; align-items:center; justify-content:center; background:#0f172a; }
.st05-right-img { position:absolute; inset:0; }
.st05-right-img img { width:100%; height:100%; object-fit:cover; display:block; }
.st05-right-overlay { position:absolute; inset:0; opacity:var(--st05-overlay-opacity,.88); background:var(--st05-item-overlay,#0ea5e9); }
.st05-right-content { position:relative; z-index:2; text-align:center; display:flex; flex-direction:column; align-items:center; gap:.75rem; }
.big-word  { font-size:clamp(4rem,9vw,8rem); font-weight:900; color:var(--st05-word-color,#ffffff); letter-spacing:-.05em; line-height:1; }
.big-label { font-size:var(--fs-sm,.8rem); font-weight:800; letter-spacing:.18em; text-transform:uppercase; color:var(--st05-label-color,rgba(255,255,255,.65)); }
.st05-step { font-size:var(--st05-fs-xs,var(--fs-xs)); font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--st05-step-color,var(--primary-color,#fcd703)); }
.st05-h    { font-size:clamp(1.5rem,2.4vw,2.1rem); font-weight:800; color:var(--st05-heading-color,#0f172a); line-height:1.18; letter-spacing:-.03em; margin:0; max-width:400px; }
.st05-body { color:var(--st05-body-color,#475569); line-height:1.7; margin:0; max-width:400px; }
.st05-stats { display:flex; gap:2.5rem; }
.st05-stat-num { font-size:1.8rem; font-weight:900; color:var(--st05-stat-color,#0f172a); line-height:1.1; }
.st05-stat-lbl { font-size:var(--st05-fs-xs,var(--fs-xs)); color:var(--st05-stat-lbl-color,#94a3b8); font-weight:600; margin-top:.2rem; }
.st05-btn  { display:inline-flex; align-items:center; gap:.5rem; font-size:var(--st05-fs-sm,var(--fs-sm)); font-weight:700; color:var(--st05-btn-color,#0f172a); text-decoration:none; background:var(--st05-btn-bg,rgba(15,23,42,.07)); padding:.7rem 1.5rem; border-radius:99px; transition:background .2s; margin-top:.25rem; width:fit-content; }
.st05-btn:hover { filter:brightness(.93); }
.st05-btn svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; transition:transform .2s; }
.st05-btn:hover svg { transform:translateX(4px); }

/* §54 responsive */
@media(max-width:768px){
  .st01-inner,.st03-inner { grid-template-columns:1fr; gap:2.5rem; }
  .st01-float-badge { display:none; }
  .st03-right { grid-template-columns:1fr; }
  /* Wrapped text + a 4-box single-column feature list can grow far taller than
     one viewport. Cap the sticky card at 100vh and let its OWN content scroll
     internally (top-aligned, not centered) — otherwise the vertically-centered
     content gets cut top/bottom before a reader can reach the lower boxes, and
     the outer page scroll advances to the next stacked card prematurely. */
  .st03-card { height:100vh; min-height:100vh; overflow-y:auto; -webkit-overflow-scrolling:touch; align-items:flex-start; }
  .st03-inner { padding:3.5rem 1.5rem; }
  .st02-content { padding:2.5rem 1.5rem; }
  .st04-card { flex-direction:column; }
  .st04-img-col { flex:0 0 40vh; }
  .st04-text-col { padding:2.5rem 1.5rem; }
  .st05-card { flex-direction:column; }
  .st05-left { flex:0 0 auto; padding:3rem 1.5rem; }
  .st05-right { flex:0 0 45vh; }
}

/* ═══════════════════════════════════════════════════════════════════
   §55  STICKY COLUMNS — SC-01 … SC-06
═══════════════════════════════════════════════════════════════════ */

/* ── Shared scroll-panel animation ──────────────────────────────── */
@keyframes scPanelIn { from{opacity:0;transform:translateY(14px)} to{opacity:1;transform:none} }

/* ── SC-01 / SC-02 — Full-screen images + sticky text overlay ───── */
.sc01-wrap { position:relative; }
/* Image stack — 4 natural 100vh blocks = 400vh scroll height */
.sc01-img { height:100vh; position:relative; overflow:hidden; }
/* Ghost: blurred full-cover bg layer */
.img-ghost { position:absolute; inset:-5%; width:110%; height:110%; object-fit:cover; filter:blur(40px) brightness(.3); z-index:0; transition:filter .6s; }
/* Main: crisp full-cover image */
.img-main { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:1; transform:scale(1.06); transition:transform .8s ease; }
.sc01-img.active .img-main { transform:scale(1); }
/* SC-02 single bare img (no ghost/main classes) — contained product shot */
.sc01-img > img:not(.img-ghost):not(.img-main) { position:absolute; max-width:65%; max-height:82vh; object-fit:contain; top:50%; left:58%; transform:translate(-50%,-50%); z-index:1; display:block; }
.sc01-counter { position:absolute; bottom:1.75rem; right:2rem; z-index:10; font-size:var(--sc01-fs-xs,var(--fs-xs)); font-weight:800; letter-spacing:.18em; color:var(--sc01-counter-color,rgba(255,255,255,.4)); text-transform:uppercase; }

/* Text overlay — absolute outer, sticky inner */
.sc01-text-col { position:absolute; top:0; left:0; width:100%; height:100%; z-index:20; pointer-events:none; }
.sc01-text-sticky { position:sticky; top:0; height:100vh; display:flex; align-items:center; gap:1.25rem; padding:0 4% 0 5%; pointer-events:none; }
.sc01-dots { display:flex; flex-direction:column; gap:.65rem; flex-shrink:0; pointer-events:auto; }
.sc01-dot { width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,.28); cursor:pointer; transition:background .3s,transform .3s; }
.sc01-dot.active { background:var(--sc01-dot-active,var(--card-bg,#fff)); transform:scale(1.5); }
.sc01-textbox { pointer-events:auto; }
.sc01-panels { display:grid; }
.sc01-panel { grid-area:1/1; display:flex; flex-direction:column; gap:1rem; width:clamp(280px,32vw,360px); background:color-mix(in srgb,var(--sc01-panel-bg,#000000) calc(var(--sc01-panel-bg-opacity,54) * 1%),transparent); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); border:1px solid rgba(255,255,255,.1); border-radius:16px; padding:2rem 1.75rem; opacity:0; transform:translateY(14px); transition:opacity .5s ease,transform .5s ease; pointer-events:none; }
.sc01-panel.active { opacity:1; transform:translateY(0); pointer-events:auto; }
.sc01-tag { font-size:clamp(.62rem,.8vw,.72rem); font-weight:800; letter-spacing:.16em; text-transform:uppercase; color:var(--sc01-tag-color,#e8b84b); }
.sc01-num { font-size:clamp(2.6rem,5vw,3.8rem); font-weight:900; color:var(--sc01-num-color,#fff); line-height:1; letter-spacing:-.04em; }
.sc01-heading { font-size:clamp(2rem,3.5vw,3rem); font-weight:900; color:var(--sc01-heading-color,#fff); line-height:1.05; letter-spacing:-.03em; margin:0; }
.sc01-body { color:var(--sc01-body-color,rgba(255,255,255,.65)); line-height:1.7; margin:0; }
.sc01-btn { display:inline-flex; align-items:center; gap:.5rem; font-size:clamp(.82rem,1vw,.92rem); font-weight:800; color:var(--sc01-btn-fg,var(--text-strong,#0f172a)); background:var(--sc01-btn-bg,#e8b84b); text-decoration:none; padding:.7rem 1.5rem; border-radius:99px; transition:background .2s,transform .15s; width:fit-content; }
.sc01-btn:hover { background:var(--sc01-btn-bg-hover,#fcd703); transform:translateY(-2px); }
.sc01-btn svg { width:14px; height:14px; flex-shrink:0; transition:transform .2s; }
.sc01-btn:hover svg { transform:translateX(3px); }

/* ── SC-03 / SC-04 — Split layout: sticky left text + right image ─ */
.v-tint { background:var(--sc03-bg,#0d2a21); }
.sc-wrap { display:grid; grid-template-columns:42% 1fr; min-height:400vh; position:relative; }

.sc-left { position:sticky; top:0; height:100vh; align-self:start; display:flex; flex-direction:column; justify-content:center; gap:1.5rem; padding:4rem 3.5rem; overflow:hidden; }
.sc-dots { display:flex; gap:.6rem; margin-bottom:.25rem; }
.sc-dot { width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,.22); cursor:pointer; transition:background .3s,transform .3s; }
.sc-dot.active { background:var(--sc03-dot-active,#e8b84b); transform:scale(1.5); }
.sc-text-panels { position:relative; }
.sc-text-panel { display:none; flex-direction:column; gap:.85rem; }
.sc-text-panel.active { display:flex; animation:scPanelIn .4s ease both; }
.scs-tag { font-size:var(--fs-xs,.72rem); font-weight:800; letter-spacing:.16em; text-transform:uppercase; color:var(--sc03-tag-color,#86efac); }
.sc-num { font-size:clamp(3.5rem,6vw,6rem); font-weight:900; color:var(--sc03-num-color,#fff); line-height:1; letter-spacing:-.04em; }
.sc-heading { font-size:clamp(2.8rem,5vw,5.5rem); font-weight:900; color:var(--sc03-heading-color,#fff); line-height:1.02; letter-spacing:-.03em; margin:0; }
.sc-body { color:var(--sc03-body-color,rgba(255,255,255,.58)); line-height:1.7; margin:0; max-width:380px; }
.scs-btn { display:inline-flex; align-items:center; gap:.45rem; font-size:var(--fs-sm,.88rem); font-weight:700; color:var(--sc03-link-color,#e8b84b); text-decoration:none; padding:.5rem 0; border-bottom:1px solid rgba(232,184,75,.3); width:fit-content; }
.scs-btn svg { width:14px; height:14px; transition:transform .2s; }
.scs-btn:hover svg { transform:translateX(4px); }

/* SC-03 right: sticky image panel with fade */
.sc-right { position:sticky; top:0; height:100vh; align-self:start; overflow:hidden; }
.sc-img-panel { position:absolute; inset:0; opacity:0; transition:opacity .7s ease; display:flex; align-items:center; justify-content:center; }
.sc-img-panel.active { opacity:1; }
.sc-bg { max-width:none; max-height:none; object-fit:contain; display:block; position:relative; z-index:2; }
.sc-counter { position:absolute; bottom:1.75rem; right:2rem; font-size:var(--fs-xs,.62rem); font-weight:800; letter-spacing:.18em; color:var(--sc03-counter-color,rgba(255,255,255,.35)); z-index:10; }

/* SC-04 right: sticky viewer + spacers for scroll height */
.sc04-right { position:relative; overflow:hidden; }
.sc04-viewer { position:sticky; top:0; height:100vh; overflow:hidden; }
.sc04-img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .65s cubic-bezier(.4,0,.2,1); will-change:transform; }
.sc04-tint { position:absolute; inset:0; background:linear-gradient(to right,rgba(13,42,33,.75) 0%,transparent 40%); z-index:2; pointer-events:none; }
.sc04-counter { position:absolute; bottom:1.75rem; right:2rem; z-index:10; font-size:var(--fs-xs,.62rem); font-weight:800; letter-spacing:.18em; color:rgba(255,255,255,.4); }
.sc04-sp { height:100vh; }

/* ── SC-05 — Full-screen fade + 3D rotate text ──────────────────── */
.sc05-wrap { position:relative; }
.sc05-sticky { position:sticky; top:0; height:100vh; overflow:hidden; }
.sc05-bg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity .8s ease; }
.sc05-bg.active { opacity:1; }
.sc05-overlay { position:absolute; inset:0; background:linear-gradient(to top,color-mix(in srgb,var(--sc05-overlay-color,#000000) calc(var(--sc05-overlay-opacity,72) * 1%),transparent) 0%,color-mix(in srgb,var(--sc05-overlay-color,#000000) calc(var(--sc05-overlay-opacity,72) * .389%),transparent) 60%,color-mix(in srgb,var(--sc05-overlay-color,#000000) calc(var(--sc05-overlay-opacity,72) * .167%),transparent) 100%); z-index:2; }
.sc05-content { position:absolute; inset:0; z-index:10; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:2rem; gap:1.5rem; }
.sc05-panels { perspective:1200px; }
.sc05-panel { display:none; }
.sc05-panel.active { display:block; animation:sc05Flip .5s cubic-bezier(.4,0,.2,1) both; }
@keyframes sc05Flip { from{opacity:0;transform:rotateX(-38deg) translateY(28px)} to{opacity:1;transform:none} }
.sc05-heading { font-size:clamp(2.8rem,7vw,6rem); font-weight:900; color:var(--sc05-heading-color,#fff); line-height:1.0; letter-spacing:-.04em; margin:0; text-shadow:0 4px 28px rgba(0,0,0,.5); }
.sc05-sub { color:var(--sc05-sub-color,rgba(255,255,255,.68)); line-height:1.7; max-width:520px; text-shadow:0 2px 10px rgba(0,0,0,.4); margin:0; }
.sc05-btns { display:flex; gap:1rem; flex-wrap:wrap; justify-content:center; }
.sc05-btn-p { display:inline-flex; align-items:center; background:var(--sc05-btn-p-bg,#e8b84b); color:var(--text-strong,#0f172a); font-weight:800; font-size:var(--sc05-fs-sm,var(--fs-sm)); padding:.8rem 2rem; border-radius:99px; text-decoration:none; transition:background .2s; }
.sc05-btn-p:hover { background:var(--sc05-btn-p-bg-hover,#fcd703); }
.sc05-btn-s { display:inline-flex; align-items:center; color:var(--sc05-btn-s-fg,#fff); font-weight:700; font-size:var(--sc05-fs-sm,var(--fs-sm)); padding:.8rem 2rem; border-radius:99px; text-decoration:none; border:2px solid rgba(255,255,255,.38); transition:border-color .2s; }
.sc05-btn-s:hover { border-color:rgba(255,255,255,.8); }
.sc05-dots { position:absolute; bottom:2.5rem; left:50%; transform:translateX(-50%); display:flex; gap:.7rem; z-index:20; }
.sc05-dot { width:7px; height:7px; border-radius:50%; background:rgba(255,255,255,.28); cursor:pointer; transition:background .3s,transform .3s; }
.sc05-dot.active { background:var(--sc05-dot-active,var(--card-bg,#fff)); transform:scale(1.4); }
.sc05-sp { height:100vh; }

/* SC-05 responsive */
@media(max-width:768px){
  .sc05-heading { font-size:clamp(2rem,9vw,3.5rem); }
  .sc05-sub { font-size:var(--sc05-fs-body,var(--fs-body)); max-width:88vw; }
  .sc05-content { padding:1.5rem 1.25rem; gap:1.25rem; }
}
@media(max-width:480px){
  .sc05-btns { flex-direction:column; align-items:center; }
  .sc05-btn-p,.sc05-btn-s { width:100%; max-width:260px; justify-content:center; }
}
@media(max-height:500px){
  .sc05-content { gap:.75rem; padding:1rem; }
  .sc05-heading { font-size:clamp(1.8rem,6vw,2.8rem); }
  .sc05-sub { display:none; }
  .sc05-dots { bottom:1rem; }
}

/* ── SC-06 — Scale fade + word slot ─────────────────────────────── */
.sc06-wrap { position:relative; }
.sc06-sticky { position:sticky; top:0; height:100vh; overflow:hidden; }
.sc06-bg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; clip-path:circle(0% at 50% 50%); transition:opacity .8s ease,clip-path .85s cubic-bezier(.4,0,.2,1); }
.sc06-bg.active { opacity:1; clip-path:circle(150% at 50% 50%); }
.sc06-overlay { position:absolute; inset:0; background:linear-gradient(to top,color-mix(in srgb,var(--sc06-overlay-color,#000000) calc(var(--sc06-overlay-opacity,65) * 1%),transparent) 0%,color-mix(in srgb,var(--sc06-overlay-color,#000000) calc(var(--sc06-overlay-opacity,65) * .338%),transparent) 60%,color-mix(in srgb,var(--sc06-overlay-color,#000000) calc(var(--sc06-overlay-opacity,65) * .123%),transparent) 100%); z-index:2; }
/* SC-06 content: title top, sub+btns bottom */
.sc06-content { position:absolute; inset:0; z-index:10; display:flex; flex-direction:column; align-items:center; justify-content:space-between; text-align:center; padding:clamp(2.5rem,6vh,4.5rem) 2rem clamp(2.5rem,6vh,4rem); }
.sc06-heading { font-size:clamp(2.8rem,7vw,6rem); font-weight:900; color:var(--sc06-heading-color,#fff); line-height:1; letter-spacing:-.04em; margin:0; text-shadow:0 4px 28px rgba(0,0,0,.5); border-bottom:3px solid var(--sc06-heading-underline,rgba(255,255,255,.55)); padding-bottom:.3rem; display:inline-block; }
.sc06-foot { display:flex; flex-direction:column; align-items:center; gap:.75rem; }
.sc06-sub { color:var(--sc06-sub-color,rgba(255,255,255,.68)); line-height:1.7; max-width:520px; text-shadow:0 2px 10px rgba(0,0,0,.4); margin:0; }
.sc06-btns { display:flex; gap:1rem; flex-wrap:wrap; justify-content:center; }
.sc06-btn-p { display:inline-flex; align-items:center; background:var(--sc06-btn-p-bg,#e8b84b); color:var(--text-strong,#0f172a); font-weight:800; font-size:var(--sc06-fs-sm,var(--fs-sm)); padding:.8rem 2rem; border-radius:99px; text-decoration:none; transition:background .2s; }
.sc06-btn-p:hover { background:var(--sc06-btn-p-bg-hover,#fcd703); }
.sc06-btn-s { display:inline-flex; align-items:center; color:var(--sc06-btn-s-fg,#fff); font-weight:700; font-size:var(--sc06-fs-sm,var(--fs-sm)); padding:.8rem 2rem; border-radius:99px; text-decoration:none; border:2px solid rgba(255,255,255,.38); transition:border-color .2s; }
.sc06-btn-s:hover { border-color:rgba(255,255,255,.8); }
/* SC-06 progress: starts below title, ends above buttons */
.sc06-progress { position:absolute; left:50%; transform:translate(-50%,calc(22% + 10px)); top:clamp(8rem,16vh,11rem); bottom:clamp(40vh,48vh,52vh); height:auto; z-index:20; overflow:visible; }
.sc06-prog-track { position:absolute; left:50%; transform:translateX(-50%); top:0; bottom:0; width:3px; background:rgba(255,255,255,.15); border-radius:2px; }
.sc06-prog-fill { width:100%; background:var(--sc06-accent,#fcd703); height:0%; transition:height .3s ease; border-radius:2px; }
.sc06-prog-dot { position:absolute; left:50%; transform:translate(-50%,-50%); display:flex; flex-direction:column; align-items:center; gap:.4rem; }
.sc06-prog-pdot { width:13px; height:13px; border-radius:50%; background:transparent; transition:background .3s,transform .3s,box-shadow .3s; flex-shrink:0; }
.sc06-prog-dot.active .sc06-prog-pdot { background:var(--sc06-accent,#fcd703); transform:scale(2); box-shadow:0 0 0 5px rgba(252,215,3,.2); animation:sc06Blink .9s ease-in-out infinite; }
/* labels: hidden by default, only active shows, large gold */
.sc06-prog-dot span { display:none; font-size:clamp(2rem,5vw,4rem); font-weight:900; color:var(--sc06-accent,#fcd703); letter-spacing:-.04em; text-shadow:0 4px 28px rgba(0,0,0,.5); white-space:nowrap; line-height:1; }
.sc06-prog-dot.active span { display:block; }
@keyframes sc06Blink {
  0%,100% { box-shadow:0 0 0 5px rgba(252,215,3,.2); }
  50% { box-shadow:0 0 0 12px rgba(252,215,3,0); }
}
.sc06-sp { height:100vh; }

/* SC-06 responsive */
@media(max-width:1024px){
  .sc06-content { padding:clamp(1.5rem,5vh,3rem) 1.25rem clamp(1.5rem,4vh,2.5rem); }
  .sc06-heading { font-size:clamp(2rem,9vw,3.5rem); }
  .sc06-progress { top:clamp(5rem,13vh,7rem); bottom:clamp(32vh,42vh,48vh); transform:translate(-50%,calc(14%+8px)); }
  .sc06-prog-dot span { font-size:clamp(1.5rem,5vw,2.5rem); }
  .sc06-sub { font-size:var(--sc06-fs-body,var(--fs-body)); max-width:88vw; }
}
@media(max-width:640px){
  .sc06-btns { flex-direction:column; align-items:center; }
  .sc06-btn-p,.sc06-btn-s { width:100%; max-width:280px; justify-content:center; }
}
@media(max-height:500px){
  /* landscape phone — hide progress, centre heading only */
  .sc06-progress { display:none; }
  .sc06-content { justify-content:center; gap:1rem; }
  .sc06-foot { gap:.5rem; }
}

/* ── SC-02: Full-screen teal overlay, scroll-driven bottom→top image flow ── */
.sc02-wrap { position:relative; min-height:500vh; }
.sc02-sticky {
  position:sticky;
  top:0;
  height:100vh;
  overflow:hidden;
  background:var(--sc02-sticky-bg,#afe5d7);
}
/* Images — stacked absolutely, JS drives translateY + opacity + blur */
.sc02-imgs { position:absolute; inset:0; }
.sc02-img {
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  will-change:transform,opacity,filter;
}
.sc02-img img {
  max-width:none;
  max-height:80vh;
  object-fit:contain;
  display:block;
}
/* Text overlay — shifted left of far-right edge */
.sc02-overlay {
  position:absolute;
  inset:0;
  z-index:10;
  pointer-events:none;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  padding:0 4% 0 52%;
}
.sc02-panels { position:relative; width:100%; max-width:480px; }
.sc02-panel {
  display:flex;
  flex-direction:column;
  gap:.75rem;
  opacity:0;
  transform:translateY(10px);
  transition:opacity .45s ease,transform .45s ease;
  pointer-events:none;
  position:absolute;
  top:50%;
  transform:translateY(calc(-50% + 10px));
  width:100%;
}
.sc02-panel.active {
  opacity:1;
  transform:translateY(-50%);
  pointer-events:auto;
}
.sc02-tag {
  font-size:clamp(.68rem,.9vw,.78rem);
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--sc02-tag-color,#0d5c3d);
}
.sc02-num {
  font-size:clamp(3.5rem,7vw,6rem);
  font-weight:900;
  line-height:1;
  color:var(--sc02-num-color,#0d2a21);
}
.sc02-heading {
  font-size:clamp(2.4rem,5vw,4.4rem);
  font-weight:900;
  line-height:1.02;
  color:var(--sc02-heading-color,#0d2a21);
}
.sc02-body {
  color:var(--sc02-body-color,rgba(13,42,33,.68));
  line-height:1.65;
  max-width:34ch;
}
.sc02-list {
  list-style:none;
  padding:0;
  margin:.25rem 0 .5rem;
  display:flex;
  flex-direction:column;
  gap:.55rem;
}
.sc02-list li {
  color:var(--sc02-body-color,rgba(13,42,33,.68));
  padding-left:1.2rem;
  position:relative;
  line-height:1.5;
}
.sc02-list li::before {
  content:'';
  position:absolute;
  left:0;
  top:.55em;
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--sc02-tag-color,#0d5c3d);
}
.sc02-btn {
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  background:var(--sc02-btn-bg,#0d2a21);
  color:var(--sc02-btn-fg,#afe5d7);
  font-size:clamp(.8rem,.95vw,.88rem);
  font-weight:700;
  padding:.75rem 1.75rem;
  border-radius:99px;
  text-decoration:none;
  align-self:flex-start;
  margin-top:.5rem;
  transition:background .2s,transform .15s;
}
.sc02-btn:hover { background:#16503c; transform:translateY(-2px); }
.sc02-btn svg { width:16px; height:16px; flex-shrink:0; }
/* Dots */
.sc02-dots {
  position:absolute;
  bottom:2.5rem;
  left:50%;
  transform:translateX(-50%);
  display:flex;
  gap:.55rem;
  z-index:20;
}
.sc02-dot {
  width:7px;
  height:7px;
  border-radius:50%;
  background:rgba(13,42,33,.22);
  transition:background .3s,transform .3s;
}
.sc02-dot.active { background:var(--sc02-dot-active,#0d2a21); transform:scale(1.45); }
/* Scroll indicator */
.sc02-scroll-hint {
  position:absolute;
  right:2rem;
  top:50%;
  transform:translateY(-50%);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:.75rem;
  z-index:20;
}
.sc02-scroll-hint span {
  font-size:var(--sc02-fs-xs,var(--fs-xs));
  font-weight:800;
  letter-spacing:.15em;
  writing-mode:vertical-rl;
  color:rgba(13,42,33,.32);
}
.sc02-scroll-line { width:1px; height:56px; background:rgba(13,42,33,.15); position:relative; overflow:hidden; }
.sc02-scroll-line::after {
  content:'';
  position:absolute;
  inset:0;
  height:50%;
  background:#0d2a21;
  animation:sc02Scroll 1.5s ease-in-out infinite;
}
@keyframes sc02Scroll {
  0%   { transform:translateY(-100%); }
  100% { transform:translateY(200%); }
}

/* §55 responsive — mobile/tablet ≤1024px */
@media(max-width:1024px){
  /* SC-02: image top 55vh, text bottom 45vh — stacked column */
  .sc02-sticky {
    display:flex;
    flex-direction:column;
  }
  /* image area — relative so absolute children use it as reference */
  .sc02-imgs {
    position:relative;
    flex:0 0 55vh;
    height:55vh;
    overflow:hidden;
  }
  /* image items stay absolute inside .sc02-imgs — JS drives translateX */
  .sc02-img {
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    justify-content:center;
  }
  .sc02-img img { max-width:100% !important; max-height:none !important; width:100%; object-fit:cover; }
  /* text area — below image, fills remaining height */
  .sc02-overlay {
    position:relative;
    flex:1;
    padding:0;
    overflow:hidden;
    align-items:flex-start;
    justify-content:flex-start;
  }
  .sc02-panels {
    position:relative;
    width:100%;
    max-width:none;
    height:100%;
  }
  /* panels fill the text area — crossfade in place */
  .sc02-panel {
    position:absolute;
    inset:0;
    top:0;
    transform:none !important;
    display:flex;
    flex-direction:column;
    gap:.5rem;
    padding:1.5rem 1.25rem 1rem;
    overflow:hidden;
  }
  .sc02-panel.active { opacity:1; transform:none !important; }
  .sc02-num { font-size:clamp(2.2rem,9vw,3rem); }
  .sc02-heading { font-size:clamp(1.6rem,7vw,2.6rem); }
  .sc02-body { font-size:var(--sc02-fs-sm,var(--fs-sm)); max-width:none; }
  .sc02-list { display:none; }
  .sc02-scroll-hint { display:none; }
  /* dots sit between image and text */
  .sc02-dots {
    position:absolute;
    bottom:auto;
    top:calc(55vh - 1.5rem);
    left:50%;
    transform:translateX(-50%);
  }
  /* SC-01 */
  .sc01-panel { width:90%; max-width:340px; }
  .sc01-text-sticky { padding:0 3%; }
  /* SC-03: image top 45vh, text bottom 55vh — stacked sticky */
  .sc-wrap { display:flex; flex-direction:column; min-height:400vh; }
  /* image column: sticky at top 45vh */
  .sc-right {
    display:block;
    position:sticky;
    top:0;
    height:45vh;
    width:100%;
    align-self:auto;
    flex-shrink:0;
    order:1;
    overflow:hidden;
  }
  /* make each image panel fill the 45vh box */
  .sc-right .sc-img-panel {
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
  }
  .sc-right .sc-bg { width:100%; height:100%; object-fit:cover; max-width:none; max-height:none; display:block; }
  .sc-counter { bottom:.6rem; right:1rem; }
  /* text column: sticky just below image */
  .sc-left {
    position:sticky;
    top:45vh;
    height:55vh;
    width:100%;
    flex-shrink:0;
    order:2;
    align-self:auto;
    justify-content:flex-start;
    gap:.4rem;
    padding:.75rem 1.25rem .75rem;
    overflow:clip;
    background:#0d2a21;
  }
  .sc-text-panel { gap:.35rem; }
  .sc-num { font-size:clamp(1.4rem,6vw,2rem); line-height:1; }
  .sc-heading { font-size:clamp(1.3rem,5.5vw,1.8rem); }
  .sc-body { font-size:var(--fs-sm,.83rem); max-width:100%; line-height:1.55; }
  .scs-tag { font-size:var(--fs-xs,.62rem); }
  .scs-btn { background:#e8b84b; color:var(--text-strong,#0f172a); padding:.55rem 1.5rem; border-radius:99px; border-bottom:none; font-size:var(--fs-sm,.82rem); }
  .sc-dots { margin-bottom:0; }
  .sc04-right { display:none; }
}
@media(max-height:500px){
  /* SC-01 landscape phone — compact the glass panel */
  .sc01-panel { padding:1rem 1.25rem; gap:.5rem; }
  .sc01-num { font-size:2rem; }
  .sc01-heading { font-size:1.6rem; }
  .sc01-body { font-size:var(--sc01-fs-sm,var(--fs-sm)); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
}

/* ═══════════════════════════════════════════════════════════════
   §56  TAB LAYOUTS — TB-01 … TB-R2  (tabtable.html)
═══════════════════════════════════════════════════════════════ */

/* Panels: hidden by default, active shown */
[data-tab-panel] { display:none; }
[data-tab-panel].active { display:block; }

/* Tab button rows — scroll horizontally when buttons overflow */
[id$="-btns"] { flex-wrap:nowrap !important; justify-content:flex-start !important; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; padding-left:.25rem; padding-right:.25rem; }
[id$="-btns"]::-webkit-scrollbar { display:none; }
.tb-ul-wrap::-webkit-scrollbar { display:none; }

/* Full-cover image inside a sized container */
.tab-img { width:100%; height:100%; object-fit:cover; display:block; }

/* Section gap */
.gap-section { height:3rem; }

/* ── Step items (TB-01) ── */
.step-item { display:flex; align-items:flex-start; gap:.75rem; }
.step-num { width:32px; height:32px; border-radius:50%; background:var(--primary-color); color:var(--text-strong,#0f172a); font-size:var(--fs-xs,.78rem); font-weight:900; display:flex; align-items:center; justify-content:center; flex-shrink:0; margin-top:.05rem; }

/* ── Pill tabs — dark (TB-01) ── */
.tb-pill { padding:.55rem 1.4rem; border-radius:99px; border:1.5px solid var(--card-border,#e2e8f0); background:var(--card-bg,#fff); font-size:var(--fs-sm,.82rem); font-weight:700; color:var(--text-muted); cursor:pointer; transition:all .18s; }
.tb-pill:hover { border-color:#cbd5e1; color:var(--text-strong); }
.tb-pill.active { background:#0f172a; color:#fff; border-color:var(--text-strong,#0f172a); }

/* ── Pill tabs — gold (TB-03) ── */
.tb-pill-gold { padding:.55rem 1.4rem; border-radius:99px; border:1.5px solid var(--card-border,#e2e8f0); background:var(--card-bg,#fff); font-size:var(--fs-sm,.82rem); font-weight:700; color:var(--text-muted); cursor:pointer; transition:all .18s; }
.tb-pill-gold:hover { border-color:var(--primary-color); color:var(--text-strong); }
.tb-pill-gold.active { background:var(--primary-color); color:var(--text-strong,#0f172a); border-color:var(--primary-color); font-weight:800; }

/* ── Underline tabs (TB-04, TB-R1) ── */
.tb-ul-wrap { display:flex; flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; justify-content:flex-start; gap:.5rem; border-bottom:2px solid var(--card-border,#e2e8f0); padding-bottom:2px; }
.tb-ul { padding:.55rem 1.25rem; background:var(--surface-color,#f1f5f9); border:1.5px solid var(--card-border,#e2e8f0); border-bottom:2px solid transparent; border-radius:0; margin-bottom:-3px; font-size:var(--fs-sm,.85rem); font-weight:600; color:var(--text-muted); cursor:pointer; transition:all .18s; }
.tb-ul:hover { background:#e8edf5; border-color:#cbd5e1; color:var(--text-strong); }
.tb-ul.active { background:#0f172a; color:#fff; border-color:var(--text-strong,#0f172a); border-bottom-color:var(--text-strong,#0f172a); font-weight:800; }

/* ── Vertical sidebar tabs (TB-08) ── */
.tb-vert { display:flex; align-items:center; gap:.6rem; padding:.65rem 1rem; border-radius:.5rem; border:none; background:transparent; font-size:var(--fs-sm,.85rem); font-weight:600; color:var(--text-muted); cursor:pointer; transition:all .18s; text-align:left; width:100%; }
.tb-vert:hover { background:var(--surface-color,#f8fafc); color:var(--text-strong); }
.tb-vert.active { background:var(--primary-color); color:var(--text-strong,#0f172a); font-weight:800; }
.tb-vert svg { flex-shrink:0; }

/* ── Prevent any tab button from shrinking or wrapping text ── */
[id$="-btns"] > * { flex-shrink:0; white-space:nowrap; }

/* ── Center tab buttons on large screens (flex-start only needed for mobile scroll) ── */
@media (min-width:768px) {
  [id$="-btns"]:not(.tb-ul-wrap) { justify-content:center !important; }
}

/* ── TB-08 mobile: sidebar switches to horizontal scroll row ── */
@media (max-width:768px) {
  #tb08-btns {
    flex-direction:row !important;
    flex-wrap:nowrap !important;
    overflow-x:auto !important;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    border-right:none !important;
    border-bottom:1px solid #f1f5f9;
    padding-right:0 !important;
    padding-bottom:.5rem;
    min-width:0 !important;
    width:100%;
    margin-bottom:.75rem;
  }
  #tb08-btns::-webkit-scrollbar { display:none; }
  #tb08-btns .tb-vert { width:auto !important; white-space:nowrap; }
}

/* ── Icon boxed tabs (TB-X) ── */
.tb-icon-btn { display:flex; align-items:center; gap:.5rem; padding:.65rem 1.25rem; border:1.5px solid var(--card-border,#e2e8f0); border-radius:.75rem; background:var(--card-bg,#fff); font-size:var(--fs-sm,.82rem); font-weight:600; color:var(--text-muted); cursor:pointer; transition:all .18s; }
.tb-icon-btn:hover { border-color:var(--primary-color); color:var(--text-strong); }
.tb-icon-btn.active { border-color:var(--primary-color); background:var(--primary-color); color:var(--text-strong,#0f172a); font-weight:800; }

/* ── Boxed border tabs (TB-R2) ── */
.tb-box-wrap { display:flex; flex-wrap:nowrap; border-top:1px solid var(--card-border,#e2e8f0); border-bottom:1px solid var(--card-border,#e2e8f0); }
.tb-box { padding:1rem; border:1.5px solid var(--card-border,#e2e8f0); border-right:none; background:var(--card-bg,#fff); font-size:var(--fs-sm,.82rem); font-weight:600; color:var(--text-muted); cursor:pointer; transition:all .18s; min-width:150px; }
.tb-box:last-child { border-right:1.5px solid var(--card-border,#e2e8f0); }
.tb-box:hover { background:var(--surface-color,#f8fafc); color:var(--text-strong); }
.tb-box.active { background:#0f172a; color:#fff; border-color:var(--text-strong,#0f172a); font-weight:800; }

/* ── Floating stat badge (TB-R1) ── */
.stat-float { position:absolute; bottom:-1.25rem; right:1.5rem; background:var(--card-bg,#fff); border-radius:.75rem; padding:.85rem 1.1rem; box-shadow:0 8px 32px rgba(0,0,0,.12); display:flex; align-items:center; gap:.75rem; min-width:140px; }

/* ── Circular stamp badge (TB-R2) ── */
.badge-stamp { position:absolute; bottom:-1.5rem; right:1.5rem; width:100px; height:100px; animation:badgeSpin 18s linear infinite; }
@keyframes badgeSpin { to { transform:rotate(360deg); } }

/* ── Learn More button (TB-R1) ── */
.learn-btn { display:inline-flex; align-items:center; gap:.85rem; font-size:var(--fs-xs,.78rem); font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--text-strong); text-decoration:none; transition:gap .2s; }
.learn-btn:hover { gap:1.2rem; }
.arrow { display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; border-radius:50%; border:1.5px solid var(--text-strong); font-style:normal; transition:background .2s,color .2s; }
.learn-btn:hover .arrow { background:var(--text-strong); color:#fff; }

/* ═══════════════════════════════════════════════════════════════
   §57  TESTIMONIAL LAYOUTS — Testimonial.html
═══════════════════════════════════════════════════════════════ */

/* ── Shared ── */
.svg-fill-gold { fill:var(--primary-color,#e8b84b); }
.dark-pag .swiper-pagination-bullet { background:rgba(255,255,255,.25); }
.dark-pag .swiper-pagination-bullet-active { background:var(--primary-color,#e8b84b); }

/* ── Shared TS nav buttons ───────────────────────────────── */
.ts-prev,.ts-next { width:40px;height:40px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .18s,color .18s,border-color .18s,transform .18s;transform:scale(1.1); }
.ts-prev { border:1px solid var(--primary-dark,var(--primary-color));background:transparent;color:var(--primary-dark,var(--primary-color)); }
.ts-prev:hover { background:var(--primary-dark,var(--primary-color));color:var(--text-inverse,#fff);transform:scale(1.2); }
.ts-next { border:1px solid var(--primary-dark,var(--primary-color));background:var(--primary-dark,var(--primary-color));color:var(--text-inverse,#fff); }
.ts-next:hover { background:var(--text-inverse,#fff);color:var(--primary-dark,var(--primary-color));border-color:var(--primary-dark,var(--primary-color));transform:scale(1.2); }
/* Dark-bg variant */
.ts-prev.dk { border-color:rgba(255,255,255,.4);background:rgba(255,255,255,.06);color:#fff; }
.ts-prev.dk:hover { background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.7); }

/* ── TS-03 TVFadeClassic custom dots ─────────────────────── */
.tv-dot { width:8px;height:8px;padding:0;border-radius:99px;border:none;cursor:pointer;background:rgba(255,255,255,.2);transition:width .3s,background .3s; }
.tv-dot.is-active { width:24px;background:var(--primary-color,#e8b84b); }

/* ── 01 QuoteSpotlight (qs-) ── */
.qs-slide-inner { display:flex; min-height:320px; }
.qs-panel-left { width:42%; flex-shrink:0; padding:2.5rem 2rem; display:flex; flex-direction:column; justify-content:space-between; position:relative; overflow:hidden; }
.qs-panel-right { flex:1; background:var(--card-bg,#fff); padding:3rem 2.5rem 2.5rem; display:flex; flex-direction:column; justify-content:space-between; position:relative; overflow:hidden; }
.qs-qmark { position:absolute; top:-1rem; left:1.5rem; font-size:10rem; font-weight:900; line-height:1; opacity:.12; font-family:Georgia,serif; pointer-events:none; }
.qs-quote-txt { font-size:1.05rem; line-height:1.8; font-style:italic; font-family:Georgia,serif; flex:1; display:flex; align-items:center; margin:3rem 0 1.5rem; }
.qs-counter-wrap { font-size:var(--fs-xs,.78rem); font-weight:700; letter-spacing:.08em; text-align:right; }
.qs-slide-num { position:absolute; bottom:.5rem; right:1.5rem; font-size:5rem; font-weight:900; opacity:.08; line-height:1; font-family:var(--heading-font,sans-serif); pointer-events:none; color:#fff; }
@keyframes qsBarFill { from { width:0 } to { width:100% } }

/* ── 02 TestiCards (tc-) ── */
.tc-card { transition:box-shadow .2s; }
.tc-card:hover { box-shadow:0 12px 40px rgba(0,0,0,.08); }

/* ── 03 TVFadeClassic (tv-) ── */
.tv-wrap { position:relative; min-height:420px; }
.tv-slide { display:none; }
.tv-slide.is-active { display:flex; flex-wrap:wrap; }
.tv-photo { flex:0 0 42%; min-width:260px; position:relative; overflow:hidden; min-height:420px; }
.tv-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.tv-photo-overlay { position:absolute; inset:0; background:linear-gradient(to right,transparent 60%,#0a0a0a); }
.tv-photo-info { position:absolute; bottom:1.75rem; left:1.75rem; }
.tv-quote-panel { flex:1; min-width:260px; background:#111; display:flex; flex-direction:column; justify-content:space-between; position:relative; overflow:hidden; }
.tv-content { padding:3rem 3rem 2rem; flex:1; }
.tv-progress-bar { height:3px; background:var(--primary-color,#e8b84b); position:absolute; bottom:0; left:0; }
@keyframes tvProg { from { width:0 } to { width:100% } }
@keyframes tvSlideUp { from { opacity:0; transform:translateY(24px) } to { opacity:1; transform:translateY(0) } }

/* ── 11 OrganicVertical (testi-) ── */
.h-testi-new-wrap { display:flex; gap:2.5rem; align-items:stretch; }
.h-testi-left { flex:1; min-width:0; display:flex; flex-direction:column; gap:1rem; }
.h-testi-swiper { height:340px; }
.h-testi-v-card { display:flex !important; align-items:flex-start; gap:1rem; padding:1.25rem; border-radius:1rem; background:var(--surface-color,#f8fafc); border:1px solid var(--border-color,#e5e7eb); height:auto; box-sizing:border-box; }
.h-testi-v-card img { width:44px; height:44px; border-radius:50%; object-fit:cover; flex-shrink:0; }
.h-testi-v-body { flex:1; min-width:0; }
.h-testi-v-stars { color:var(--primary-color,#e8b84b); font-size:var(--fs-sm,.8rem); margin-bottom:.4rem; }
.h-testi-v-quote { font-size:var(--fs-sm,.88rem); line-height:1.65; color:var(--text-muted,#6b7280); margin:0 0 .5rem; font-style:italic; }
.h-testi-v-name { font-size:var(--fs-sm,.82rem); font-weight:700; color:var(--text-color,#111); }
.h-testi-v-loc { font-weight:400; color:var(--text-muted,#6b7280); font-size:var(--fs-sm,.78rem); }
.h-testi-nav-wrap { display:flex; gap:.5rem; margin-top:.75rem; }
.h-testi-nav-btn { width:38px; height:38px; border-radius:50%; border:1.5px solid var(--border-color,#e5e7eb); background:var(--card-bg,#fff); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .18s; color:var(--text-color,#111); }
.h-testi-nav-btn:hover { background:var(--primary-color,#e8b84b); border-color:var(--primary-color,#e8b84b); color:#000; }
.h-testi-right { flex:0 0 380px; position:relative; border-radius:1.25rem; overflow:hidden; min-height:380px; }
.h-testi-right-img { width:100%; height:100%; object-fit:cover; display:block; }
.h-testi-right-stat { position:absolute; top:1.5rem; left:1.5rem; right:1.5rem; background:rgba(0,0,0,.55); backdrop-filter:blur(8px); border-radius:.875rem; padding:1.25rem 1.5rem; color:#fff; text-align:center; }
.h-testi-right-num { font-size:3rem; font-weight:900; line-height:1; color:var(--primary-color,#e8b84b); margin-bottom:.25rem; }
.h-testi-right-stars { font-size:1rem; color:var(--primary-color,#e8b84b); margin-bottom:.5rem; }
.h-testi-right-lbl { font-size:var(--fs-sm,.78rem); color:rgba(255,255,255,.65); line-height:1.4; }

/* ── 18 PillSlider (pill-) ── */
.pill-card { display:flex; align-items:center; background:var(--card-bg,#fff); border:1px solid var(--border-color,#e5e7eb); border-radius:99px; padding:1.25rem 1.5rem; box-shadow:0 4px 24px rgba(0,0,0,.06); gap:0; }

/* ── Masonry wall ── */
.msry-wall { columns:2; column-gap:1rem; }
.msry-item { break-inside:avoid; margin-bottom:1rem; }
@media (min-width:640px) { .msry-wall { columns:3; } }
@media (min-width:1024px) { .msry-wall { columns:4; } }

/* ── Responsive: stack panels on mobile ── */
@media (max-width:768px) {
  .qs-slide-inner { flex-direction:column; }
  .qs-panel-left { width:100%; min-height:180px; }
  .tv-slide.is-active { flex-direction:column; }
  .tv-photo { flex:none; width:100%; min-height:220px; }
  .tv-photo-overlay { background:linear-gradient(to bottom,transparent 50%,#0a0a0a); }
  .h-testi-new-wrap { flex-direction:column; }
  .h-testi-right { flex:none; width:100%; min-height:220px; }
  .pill-card { flex-wrap:wrap; border-radius:1.5rem; }
}

/* ── PillSlider mobile (≤639px): plain card layout ── */
@media (max-width:640px) {
  .pill-card { flex-direction:column; align-items:stretch; border-radius:1rem; padding:1.5rem; gap:1.25rem; }
  /* Force swiper container to correct width so Swiper can re-measure */
  .pill-slider { width:100% !important; max-width:100% !important; overflow:hidden !important; flex:none !important; }
  .pill-nav-sep { display:none !important; }
  .pill-nav-btns { justify-content:center !important; width:100%; gap:.75rem; }
  /* slide row: stack vertically, full-width text */
  .pill-slide-row { flex-direction:column !important; align-items:stretch !important; gap:.875rem; }
  .pill-slide-row > .relative { align-self:flex-start; margin-right:0 !important; }
  .pill-h-div { display:none !important; }
  .pill-name { min-width:0 !important; }
}

/* ═══════════════════════════════════════════════════════════════════
   §58  SLIDER SECTIONS — MOBILE RESPONSIVE (≤767px)
   Stacks side-by-side grid/absolute layouts for 02, 02b, 02c, 02d,
   03 CrossDrift, 07 PrismSlide; 08 CoverFlow → 1-card view.
═══════════════════════════════════════════════════════════════════ */
@media (max-width:768px) {

  /* ── 02 SplitReveal (image-left text-right → image top, text bottom) ── */
  #srSwiper .swiper-slide > div { grid-template-columns:1fr !important; min-height:auto !important; }
  #srSwiper .swiper-slide > div > div:first-child { min-height:260px; }
  #srSwiper, #srSwiper .swiper-wrapper { height:auto !important; }
  #srSwiper .swiper-slide { height:auto !important; }

  /* ── 02b TextPane (section grid → flex column: image 260px top, swiper 300px below) ── */
  /* Switch to flex column so the second child has a real pixel height for Swiper to measure */
  section:has(#tpSwiper) { display:flex !important; flex-direction:column !important; min-height:auto !important; }
  section:has(#tpSwiper) > div:first-child { height:260px !important; flex-shrink:0 !important; overflow:hidden !important; }
  section:has(#tpSwiper) > div:last-child { flex:1 !important; min-height:300px !important; height:300px !important; }
  #tpSwiper { height:100% !important; min-height:300px !important; }
  #tpSwiper .swiper-wrapper { height:100% !important; }
  #tpSwiper .swiper-slide { height:100% !important; }

  /* ── 02c SplitReveal-R (text-left image-right → text top, image bottom) ── */
  #ocSwiper .swiper-slide > div { grid-template-columns:1fr !important; min-height:auto !important; }
  #ocSwiper .swiper-slide > div > div:last-child { min-height:260px; }
  #ocSwiper, #ocSwiper .swiper-wrapper { height:auto !important; }
  #ocSwiper .swiper-slide { height:auto !important; }

  /* ── 02d SplitReveal-Fade (text-left image-right → text top, image bottom) ── */
  #odSwiper .swiper-slide > div { grid-template-columns:1fr !important; min-height:auto !important; }
  #odSwiper .swiper-slide > div > div:last-child { min-height:260px; position:relative !important; }
  #odSwiper, #odSwiper .swiper-wrapper { height:auto !important; }
  #odSwiper .swiper-slide { height:auto !important; }

  /* ── 02e SplitReveal-Fade-L (image-left text-right → image top, text bottom) ── */
  #oeSwiper .swiper-slide > div { grid-template-columns:1fr !important; min-height:auto !important; }
  #oeSwiper .swiper-slide > div > div:first-child { min-height:260px; position:relative !important; }
  #oeSwiper, #oeSwiper .swiper-wrapper { height:auto !important; }
  #oeSwiper .swiper-slide { height:auto !important; }

  /* ── 03 CrossDrift (position:absolute overlay → flex column: image top, text bottom) ── */
  section:has(#cdSwiper) { height:auto !important; min-height:auto !important; }
  #cdSwiper { height:520px !important; }
  #cdSwiper .swiper-wrapper { height:520px !important; }
  #cdSwiper .swiper-slide { display:flex !important; flex-direction:column !important; height:520px !important; overflow:hidden !important; }
  .cd-img-col { position:relative !important; inset:0 !important; left:0 !important; width:100% !important; height:260px !important; overflow:hidden !important; flex-shrink:0 !important; }
  .cd-txt-col { position:relative !important; left:0 !important; top:auto !important; right:auto !important; height:auto !important; flex:1 !important; width:100% !important; max-width:100% !important; padding:2rem 1.5rem !important; }

  /* ── 07 PrismSlide (position:absolute overlay → flex column: image top, text below) ── */
  section:has(#prismSwiper) { height:auto !important; min-height:auto !important; }
  #prismSwiper { height:520px !important; }
  #prismSwiper .swiper-wrapper { height:520px !important; }
  #prismSwiper .swiper-slide { display:flex !important; flex-direction:column !important; height:520px !important; overflow:hidden !important; }
  .prism-img-col { position:relative !important; top:auto !important; bottom:auto !important; right:auto !important; width:100% !important; height:260px !important; flex-shrink:0 !important; overflow:hidden !important; }
  .prism-txt-col { position:relative !important; height:auto !important; flex:1 !important; max-width:100% !important; padding:2rem 1.5rem !important; }
  .prism-ghost { display:none !important; }
  .prism-num { display:none !important; }

  /* ── Hide prev/next overlay buttons on mobile — swipe handles navigation ── */
  .snav { display:none !important; }

  /* ── NEW: class-based responsive rules for sp-section-library.html templates ── */
  /* split-reveal-left (v-sr-swiper): image top, text bottom */
  .v-sr-swiper,.v-sr-swiper .swiper-wrapper{height:auto!important}
  .v-sr-swiper .swiper-slide{height:auto!important}
  .v-sr-swiper .swiper-slide>div{grid-template-columns:1fr!important;min-height:auto!important}
  .v-sr-swiper .swiper-slide>div>div:first-child{min-height:260px}
  /* split-reveal-right (v-sr-swiper-r): text top, image bottom — override first-child */
  .v-sr-swiper-r .swiper-slide>div>div:first-child{min-height:0!important}
  .v-sr-swiper-r .swiper-slide>div>div:last-child{min-height:260px}
  /* text-pane (v-tp-layout): section grid → flex column */
  .v-tp-layout{display:flex!important;flex-direction:column!important;min-height:auto!important}
  .v-tp-layout>div:first-child{height:260px!important;flex-shrink:0!important;overflow:hidden!important}
  .v-tp-layout>div:nth-child(2){flex:1!important;min-height:300px!important;height:300px!important}
  .v-tp-swiper{height:100%!important;min-height:300px!important}
  .v-tp-swiper .swiper-wrapper,.v-tp-swiper .swiper-slide{height:100%!important}
  /* cross-drift (v-cd-swiper + cd-img-col + cd-txt-col): flex column stacking */
  section:has(.v-cd-swiper){height:auto!important;min-height:auto!important}
  .v-cd-swiper{height:520px!important}
  .v-cd-swiper .swiper-wrapper{height:520px!important}
  .v-cd-swiper .swiper-slide{display:flex!important;flex-direction:column!important;height:520px!important;overflow:hidden!important}
  /* prism-slide (v-prism-swiper + .prism-img-col + .prism-txt-col already exist): flex column */
  section:has(.v-prism-swiper){height:auto!important;min-height:auto!important}
  .v-prism-swiper{height:520px!important}
  .v-prism-swiper .swiper-wrapper{height:520px!important}
  .v-prism-swiper .swiper-slide{display:flex!important;flex-direction:column!important;height:520px!important;overflow:hidden!important}
}

/* ═══════════════════════════════════════════════════════════════════
   §59  PROCESS STEP — RESPONSIVE
═══════════════════════════════════════════════════════════════════ */

/* ── TOC nav: always one scrollable row (wraps at any width) ── */
.toc { flex-wrap:nowrap !important; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.toc::-webkit-scrollbar { display:none; }
.toc > * { flex-shrink:0 !important; white-space:nowrap; }

/* ── PS-03 Zigzag + PS-12 Circular: fix broken 900px breakpoint.
   Original rule uses display:none on left + grid-template-columns:0 60/64px 1fr
   which auto-places remaining items into wrong (0px / 60px) columns.
   Fix: explicit grid placement so node → col1, content → col2. ── */
@media (max-width:768px) {

  /* PS-03 */
  .ps03-step { grid-template-columns:56px 1fr !important; gap:.75rem 1rem !important; }
  .ps03-node { grid-column:1 !important; grid-row:1 !important; width:56px !important; height:56px !important; align-self:center; }
  .ps03-content { grid-column:2 !important; grid-row:1 !important; display:flex !important; flex-direction:column; text-align:left !important; justify-content:center !important; align-items:flex-start !important; padding:.75rem 0 !important; }
  .ps03-track::before { left:28px !important; }

  /* PS-12 */
  .ps12-step { display:grid !important; grid-template-columns:56px 1fr !important; min-height:auto !important; gap:0 !important; }
  .ps12-node-wrap { grid-column:1 !important; grid-row:1 !important; }
  .ps12-content { grid-column:2 !important; grid-row:1 !important; display:flex !important; flex-direction:column; text-align:left !important; justify-content:flex-start !important; align-items:flex-start !important; padding:.75rem 1rem !important; }
  .ps12-node { width:40px !important; height:40px !important; font-size:var(--ps12-fs-sm,var(--fs-sm)) !important; }
}

/* ── §S — v-modal: unified image + video lightbox modal ─────────────────────
   data-action="vmodal-open"  data-modal-type="img|yt"  data-modal-src="..."
   data-modal-caption="..."   data-modal-group="..."
   JS: initVModal() in theme.js — zero per-page code needed                  */
.v-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:1.5rem 3.5rem;background:rgba(8,6,4,.92);backdrop-filter:blur(18px);opacity:0;pointer-events:none;transition:opacity .3s ease}
.v-modal.is-open{opacity:1;pointer-events:all}
.v-modal__bg{position:absolute;inset:0;cursor:default}
.v-modal__card{position:relative;z-index:1;width:min(90vw,960px);border-radius:14px;transform:scale(.85) translateY(24px);opacity:0;transition:transform .42s cubic-bezier(.34,1.56,.64,1),opacity .3s ease}
.v-modal.is-open .v-modal__card{transform:scale(1) translateY(0);opacity:1}
.v-modal__bar{display:none;align-items:center;justify-content:space-between;padding:.65rem 1rem;background:rgba(14,8,3,.97);gap:.6rem;border-radius:14px 14px 0 0}
.v-modal--yt .v-modal__bar{display:flex}
.v-modal__bar-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--primary-color,#c96c3a);flex-shrink:0}
.v-modal__bar-title{color:rgba(255,255,255,.88);font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.02em;flex:1;min-width:0}
.v-modal__bar-close{background:rgba(255,255,255,.1);border:none;color:rgba(255,255,255,.75);width:30px;height:30px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;flex-shrink:0}
.v-modal__bar-close:hover{background:rgba(255,255,255,.22)}
.v-modal__iframe-wrap{display:none;position:relative;padding-bottom:56.25%;overflow:hidden;background:#000;border-radius:0 0 14px 14px;max-height:75vh}
.v-modal--yt .v-modal__iframe-wrap{display:block}
.v-modal__iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none;display:block}
.v-modal__img{display:none;width:100%;max-height:78vh;object-fit:contain;border-radius:14px;box-shadow:0 32px 80px rgba(0,0,0,.6);transition:opacity .18s ease}
.v-modal--img .v-modal__img{display:block}
.v-modal__footer{display:none;align-items:center;justify-content:space-between;margin-top:.75rem;padding:0 .2rem}
.v-modal--img .v-modal__footer{display:flex}
.v-modal__caption{color:rgba(255,255,255,.82);font-size:.85rem;font-weight:500;letter-spacing:.03em;flex:1}
.v-modal__ctr{color:rgba(255,255,255,.38);font-size:.74rem;font-weight:700;letter-spacing:.1em;white-space:nowrap;margin-left:1rem;flex-shrink:0}
.v-modal__ctr--bar{color:rgba(255,255,255,.36);font-size:.72rem;font-weight:700;letter-spacing:.1em;white-space:nowrap;flex-shrink:0}
.v-modal__close{display:none;position:absolute;top:-14px;right:-14px;width:40px;height:40px;border-radius:50%;background:var(--primary-color,#c96c3a);border:none;cursor:pointer;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(0,0,0,.45);color:#fff;transition:opacity .2s,transform .2s;z-index:3}
.v-modal--img .v-modal__close{display:flex}
.v-modal__close:hover{opacity:.88;transform:scale(1.08)}
.v-modal__nav{position:absolute;top:50%;transform:translateY(-50%);z-index:4;background:var(--btn-n-bg,var(--primary-color,#c96c3a));border:1.5px solid var(--btn-n-bg,var(--primary-color,#c96c3a));color:var(--btn-n-text,#fff);width:52px;height:52px;border-radius:50%;cursor:pointer;display:none;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(0,0,0,.3);transition:background .2s,transform .22s;flex-shrink:0}
.v-modal__nav:hover{background:var(--btn-n-bg-hover,var(--primary-dark,var(--primary-color,#a0472a)));transform:translateY(-50%) scale(1.08)}
.v-modal__nav--prev{left:.5rem}
.v-modal__nav--next{right:.5rem}
.v-modal.has-nav .v-modal__nav{display:flex}
@media(max-width:600px){.v-modal{padding:1rem .5rem}.v-modal__nav{width:40px;height:40px}.v-modal__nav--prev{left:.2rem}.v-modal__nav--next{right:.2rem}.v-modal__card{border-radius:10px}}

/* ── §S2 — v-modal "bio" type (image + name/role/text card) — TM-06 opener ── */
.v-modal--bio .v-modal__card{width:min(92vw,680px)}
.v-modal--bio .v-modal__img,.v-modal--bio .v-modal__iframe-wrap,.v-modal--bio .v-modal__footer,.v-modal--bio .v-modal__bar{display:none}
.v-modal--bio .v-modal__close{display:flex;background:var(--v-modal-accent,var(--primary-color,#c96c3a))}
.v-modal__bio{display:none;background:var(--card-bg,#fff);border-radius:14px;overflow:hidden;max-height:82vh}
.v-modal--bio .v-modal__bio{display:flex;flex-direction:column}
@media(min-width:700px){.v-modal--bio .v-modal__bio{flex-direction:row}}
.v-modal__bio-img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;flex-shrink:0}
@media(min-width:700px){.v-modal__bio-img{width:260px;height:auto;aspect-ratio:auto}}
.v-modal__bio-body{padding:1.75rem 2rem 2rem;display:flex;flex-direction:column;gap:.6rem;overflow-y:auto}
.v-modal__bio-role{font-size:var(--fs-xs,.75rem);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--v-modal-accent,var(--primary-color,#c96c3a))}
.v-modal__bio-name{font-size:var(--fs-h3,1.4rem);font-weight:800;color:var(--text-strong,#111827);font-family:var(--heading-font);margin:0;line-height:1.25}
.v-modal__bio-text{line-height:1.8;color:var(--text-color,#374151);margin:0}
.v-modal__bio-social{display:flex;gap:.6rem;margin-top:.25rem}
.v-modal__bio-social a{width:34px;height:34px;border-radius:50%;border:1.5px solid var(--card-border,#e5e7eb);display:flex;align-items:center;justify-content:center;color:var(--text-muted,#6b7280);transition:all .2s}
.v-modal__bio-social a:hover{border-color:var(--v-modal-accent,var(--primary-color));color:var(--v-modal-accent,var(--primary-color))}
.v-modal__bio-social svg{width:15px;height:15px}

/* ── Launch Popup (Settings → Organization → Launch Popup) ──────────────────
   Deliberately its OWN component, not a .v-modal variant — .v-modal is
   shared by every product/gallery/video/bio lightbox site-wide, and this
   needs its own backdrop color and a persistent "don't show again"
   checkbox neither of those use cases need. initLaunchPopup() in theme.js. */
.v-launch-popup{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:1.5rem;opacity:0;pointer-events:none;transition:opacity .3s ease}
.v-launch-popup.is-open{opacity:1;pointer-events:all}
.v-launch-popup__bg{position:absolute;inset:0;cursor:default;background-color:#2a2b3f;opacity:.9}
.v-launch-popup__card{position:relative;z-index:1;width:min(92vw,520px);max-height:88vh;display:flex;flex-direction:column;border-radius:16px;overflow:hidden;background:#fff;box-shadow:0 32px 80px rgba(0,0,0,.5);transform:scale(.9) translateY(20px);opacity:0;transition:transform .4s cubic-bezier(.34,1.56,.64,1),opacity .3s ease}
.v-launch-popup.is-open .v-launch-popup__card{transform:scale(1) translateY(0);opacity:1}
.v-launch-popup__img{display:block;width:100%;height:auto;max-height:60vh;object-fit:cover;flex-shrink:0}
.v-launch-popup__imglink{display:block;flex-shrink:0;line-height:0;cursor:pointer}
.v-launch-popup__imglink:focus-visible{outline:3px solid var(--primary-color,#6366f1);outline-offset:-3px}
.v-launch-popup__body{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.7rem;padding:.5rem;text-align:left;flex-shrink:0}
.v-launch-popup__headline{margin:0;min-width:0;font-size:1rem;font-weight:600;color:var(--text-strong,#111827);font-family:var(--heading-font,inherit);line-height:1.25;text-align:left;text-wrap:balance}
.v-launch-popup__cta{display:inline-flex;align-items:center;justify-content:center;padding:.4rem 1rem;border-radius:var(--btn-p-radius,.375rem);background:var(--btn-p-bg,var(--primary-color,#6366f1));color:var(--btn-p-text,#fff);font-size:.9rem;font-weight:600;text-decoration:none;white-space:nowrap;margin-left:auto;transition:background .2s,transform .18s}
.v-launch-popup__cta:hover{background:var(--btn-p-bg-hover,var(--primary-color,#6366f1));transform:translateY(-1px)}
.v-launch-popup__close{position:absolute;top:.85rem;right:.85rem;z-index:3;width:46px;height:46px;border-radius:50%;background:var(--lp-close-bg,#fff);border:none;color:var(--lp-close-color,#1f2937);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.35);transition:transform .2s,filter .2s}
.v-launch-popup__close svg{width:20px;height:20px;stroke-width:3}
.v-launch-popup__close:hover{filter:brightness(.9);transform:scale(1.08)}
.v-launch-popup__dontshow{display:flex;align-items:center;gap:.5rem;padding:.7rem 1rem;font-size:.8rem;color:#374151;background:#fff;cursor:pointer;user-select:none;border-top:1px solid #e5e7eb;flex-shrink:0}
.v-launch-popup__dontshow input{width:15px;height:15px;accent-color:var(--primary-color,#6366f1);cursor:pointer;flex-shrink:0}
@media(max-width:480px){
    .v-launch-popup{padding:.9rem}
    .v-launch-popup__card{width:100%;border-radius:12px}
    .v-launch-popup__img{max-height:38vh}
    .v-launch-popup__close{width:38px;height:38px;top:.6rem;right:.6rem}
    .v-launch-popup__close svg{width:17px;height:17px}
    .v-launch-popup__body{padding:.5rem .6rem;gap:.5rem}
    .v-launch-popup__headline{font-size:.95rem}
    .v-launch-popup__cta{padding:.4rem .9rem;font-size:.85rem}
    .v-launch-popup__dontshow{font-size:.75rem;padding:.6rem .85rem}
}

/* ── PWA install banner ── initPWABanner() in theme.js ─────────────────────
   Slim bottom bar — deliberately NOT a modal, so it doesn't compete with
   the launch popup and stays out of the way of content, but is still far
   more visible than the browser's own tiny/hidden install affordances. */
.v-pwa-banner{position:fixed;left:0;right:0;bottom:0;z-index:9998;display:flex;align-items:center;gap:.75rem;
  padding:.75rem 1rem;background:#fff;border-top:1px solid #e5e7eb;box-shadow:0 -4px 20px rgba(0,0,0,.12);
  transform:translateY(100%);transition:transform .32s cubic-bezier(.16,1,.3,1)}
/* display:flex above overrides the UA stylesheet's [hidden]{display:none}
   (author styles always beat UA defaults), so the transform was the ONLY
   thing keeping an un-shown banner off-screen -- and translateY(100%) only
   shifts it by its OWN height, not by whatever extra `bottom` offset the
   tabbar-avoidance rule below adds. On a mobile page with a tab bar, that
   offset ate most of the 100% translate's clearance, leaving the "hidden"
   banner's top edge still inside the viewport with no is-open class and no
   listeners wired (dead on screen). Restoring real [hidden]{display:none}
   removes it from layout/paint entirely until show() explicitly clears the
   attribute, independent of the transform math above. */
.v-pwa-banner[hidden]{display:none}
.v-pwa-banner.is-open{transform:translateY(0)}
.v-pwa-banner__icon{width:38px;height:38px;border-radius:9px;object-fit:contain;flex-shrink:0;background:#f3f4f6}
.v-pwa-banner__text{flex:1;min-width:0}
.v-pwa-banner__title{margin:0;font-size:.85rem;font-weight:700;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v-pwa-banner__sub{margin:0;font-size:.75rem;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v-pwa-banner__install{flex-shrink:0;padding:.5rem 1.1rem;border:none;border-radius:.4rem;background:var(--primary-color,#6366f1);
  color:#fff;font-size:.82rem;font-weight:600;cursor:pointer;transition:filter .2s}
.v-pwa-banner__install:hover{filter:brightness(.92)}
.v-pwa-banner__close{flex-shrink:0;width:28px;height:28px;border-radius:50%;border:none;background:#f3f4f6;color:#6b7280;
  display:flex;align-items:center;justify-content:center;cursor:pointer;touch-action:manipulation}
.v-pwa-banner__close:hover{background:#e5e7eb;color:#111827}
@media(max-width:480px){
    .v-pwa-banner{padding:.65rem .8rem;gap:.6rem}
    .v-pwa-banner__icon{width:32px;height:32px}
    .v-pwa-banner__sub{display:none}
    .v-pwa-banner__install{padding:.45rem .9rem;font-size:.78rem}
}
/* Sits above the mobile app-bar footer's fixed tab bar when present, same
   coordination pattern (and matching media query — .v-tabbar exists in the
   DOM but is hidden above 991px/pointer:fine, so this must be scoped the
   same way or it'd wrongly offset the banner on desktop too) the
   back-to-top button already uses (.v-btt-pos). */
@media(max-width:991px) and (pointer:coarse){body:has(.v-tabbar) .v-pwa-banner{bottom:calc(5.6rem + env(safe-area-inset-bottom,0px))}}

/* ── §T — v-user-menu: auth-aware header user dropdown ──────────────────────
   Toggle via initUserMenu() in theme.js (data-action="user-menu-toggle")    */
.v-user-menu{position:relative;display:inline-flex;align-items:center}
.v-user-menu__trigger{display:inline-flex;align-items:center;gap:.4rem;background:color-mix(in srgb,var(--hdr-text,#fff) 8%,transparent);border:1px solid color-mix(in srgb,var(--hdr-text,#fff) 15%,transparent);color:var(--hdr-text,#fff);font-size:var(--fs-sm,.875rem);font-weight:600;font-family:var(--font-family,inherit);padding:.35rem .85rem;border-radius:var(--border-radius,6px);cursor:pointer;white-space:nowrap;transition:background .2s,border-color .2s}
.v-user-menu__trigger:hover{background:color-mix(in srgb,var(--hdr-text,#fff) 14%,transparent)}
.v-user-menu__trigger svg{flex-shrink:0;transition:transform .2s}
.v-user-menu.open .v-user-menu__trigger svg.v-um-chevron{transform:rotate(180deg)}
.v-hdr-icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:color-mix(in srgb,var(--primary-color,#c96c3a) 12%,transparent);color:var(--primary-dark,#a0472a);border:1.5px solid color-mix(in srgb,var(--primary-color,#c96c3a) 22%,transparent);cursor:pointer;text-decoration:none;flex-shrink:0;transition:background .2s,border-color .2s,transform .15s}
.v-hdr-icon-btn:hover{background:color-mix(in srgb,var(--primary-color,#c96c3a) 20%,transparent);border-color:color-mix(in srgb,var(--primary-color,#c96c3a) 40%,transparent);transform:translateY(-1px)}
.v-user-menu__dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background:var(--bg-color,#fff);border:1px solid var(--border-color,#e5e7eb);border-radius:var(--card-radius,8px);box-shadow:0 8px 32px rgba(0,0,0,.18);z-index:9999;opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .18s ease,transform .18s ease}
.v-user-menu.open .v-user-menu__dropdown{opacity:1;pointer-events:auto;transform:translateY(0)}
.v-user-menu__dropdown>a{display:flex;align-items:center;gap:.6rem;padding:.65rem 1rem;color:var(--text-color,#374151);font-size:.875rem;font-weight:500;font-family:var(--font-family,inherit);text-decoration:none;transition:background .15s,color .15s}
.v-user-menu__dropdown>a:first-child{border-radius:var(--card-radius,8px) var(--card-radius,8px) 0 0}
.v-user-menu__dropdown>a:hover{background:color-mix(in srgb,var(--primary-color,#c96c3a) 8%,transparent);color:var(--primary-dark,var(--primary-color))}
.v-user-menu__divider{height:1px;background:var(--border-color,#e5e7eb);margin:.25rem 0}
.v-user-menu__signout{color:#dc2626 !important;font-weight:600 !important;border-radius:0 0 var(--card-radius,8px) var(--card-radius,8px)}
.v-user-menu__signout:hover{background:color-mix(in srgb,#dc2626 8%,transparent) !important;color:#b91c1c !important}
.v-hsc2-mob-welcome{display:flex;align-items:center;gap:.6rem;padding:.75rem 0 .5rem}
.v-hsc2-mob-tp-links{display:flex;flex-wrap:wrap;gap:.4rem;padding:.5rem 0}
.v-hsc2-mob-tp-links a{flex:1 1 calc(50% - .4rem);display:flex;align-items:center;justify-content:center;padding:.4rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;color:var(--primary-dark,#a0472a);background:transparent;border:1px solid color-mix(in srgb,var(--primary-color,#c96c3a) 35%,transparent);text-decoration:none;white-space:nowrap;transition:background .15s,border-color .15s}
.v-hsc2-mob-tp-links a:hover{background:color-mix(in srgb,var(--primary-color,#c96c3a) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#c96c3a) 55%,transparent)}
.v-hsc2-mob-tp-auth{display:flex;gap:.5rem;padding:.5rem 0}
.v-hsc2-mob-cart-top{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--primary-color,#c96c3a);color:#fff;flex-shrink:0;text-decoration:none;transition:background .15s}
.v-hsc2-mob-cart-top:hover{background:var(--primary-dark,#a0472a)}
.v-hsc2-mob-cart-badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;border-radius:8px;background:var(--primary-dark,#a0472a);color:#fff;font-size:9px;font-weight:800;display:flex;align-items:center;justify-content:center;border:1.5px solid #fff;padding:0 2px;line-height:1}
.v-user-menu__header{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem .75rem}
.v-user-menu__avatar{width:36px;height:36px;border-radius:50%;background:var(--primary-color,#c96c3a);color:#fff;font-size:.95rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;text-transform:uppercase}
.v-user-menu__welcome{font-size:.7rem;color:var(--text-muted,#6b7280);font-weight:500;line-height:1.2;text-transform:uppercase;letter-spacing:.04em}
.v-user-menu__uname{font-size:.875rem;font-weight:700;color:var(--text-strong,#111827);line-height:1.3}

/* ── §CO-13 — Portrait Feature · Flush ──────────────────────────────────────
   Was a fixed 2-column grid with a single shared hairline border between the
   pair (:first-child dropped its right border so two 1px borders never
   doubled up) — only ever correct for exactly 2 items. Now that cards-per-
   row/shadow/radius are real config (any column count, any gap), switched
   to the standard independent-card pattern every other template in this
   library already uses: each .co13-col owns its own full border/radius/
   shadow, sized by --co13-cols-* + --co13-gap like any other grid. Default
   gap stays 0 and radius 0 so the flush look is the out-of-the-box default;
   admin can open both up for a normal separated-card look. */
.co13-section{padding:var(--sec-buf-t,var(--gbuf-v,4rem)) var(--sec-buf-r,var(--gbuf-h,0)) var(--sec-buf-b,var(--gbuf-v,4rem)) var(--sec-buf-l,var(--gbuf-h,0))}
.co13-grid{display:grid;grid-template-columns:repeat(var(--co13-cols-mobile,1),1fr);gap:var(--co13-gap,0rem);max-width:var(--co13-mw,60rem);margin:0 auto}
@media(min-width:640px){.co13-grid{grid-template-columns:repeat(var(--co13-cols-tablet,2),1fr)}}
@media(min-width:1024px){.co13-grid{grid-template-columns:repeat(var(--co13-cols-desktop,2),1fr)}}
@media(min-width:1280px){.co13-grid{grid-template-columns:repeat(var(--co13-cols-wide,2),1fr)}}
.co13-col{display:flex;flex-direction:column;background:var(--co13-card-bg,#ffffff);border:var(--co13-border-w,1px) solid var(--co13-border-c,#e2e8f0);border-radius:var(--co13-radius,0rem);box-shadow:var(--co13-shadow,none);overflow:hidden}
/* Fixed image height (not just aspect-ratio) — a portrait feature grid
   mixes source photos of every shape and size; without a shared height,
   each row's images (and therefore each row's cards, since the column
   below just fills whatever's left) would end up different heights.
   object-fit:cover crops whatever doesn't fit instead of squashing it. */
.co13-img-wrap{width:100%;height:var(--co13-img-h,400px);overflow:hidden}
.co13-img{width:100%;height:100%;display:block;object-fit:cover}
/* Two independent per-item toggles (Card group): "Image cell height: auto"
   drops the shared fixed height on the wrapper; "Use original image size"
   stops the image being stretched/cropped to fill whatever box it's in.
   Usually turned on together, but kept separate so e.g. a fixed-height row
   of naturally-sized (letterboxed) images is still possible. */
.co13-img-wrap.co13-wrap-auto{height:auto}
.co13-img.co13-img-natural{width:auto;max-width:100%;height:auto;object-fit:contain;margin:0 auto;display:block}
.co13-body{padding:1.75rem;flex:1;display:flex;flex-direction:column;gap:.75rem}
.co13-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem));font-weight:700;text-transform:var(--eyebrow-text-transform,uppercase);letter-spacing:var(--eyebrow-letter-spacing,.12em);color:var(--co13-eyebrow-color,var(--eyebrow-color-dark,#e53e3e));margin:0}section[style*="--co13-eyebrow-mode:light"] .co13-eyebrow,section[style*="--co13-eyebrow-mode: light"] .co13-eyebrow{color:var(--co13-eyebrow-color,var(--eyebrow-color-light,#e53e3e))}
.co13-title{font-size:var(--fs-h3,1.2rem);font-weight:800;color:var(--co13-title-color,#111827);margin:0;line-height:1.3}
.co13-desc{line-height:1.8;color:var(--co13-desc-color,#6b7280);margin:0;flex:1;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.co13-btn{display:inline-block;margin-top:auto;padding:.6rem 1.5rem;background:var(--co13-btn-bg,#e53e3e);color:var(--co13-btn-color,#ffffff);font-weight:700;text-decoration:none;border-radius:6px;transition:background .18s,filter .18s;align-self:flex-start}
.co13-btn:hover{filter:brightness(.9)}

/* ── §TM-01 — Portrait Card Scroller ───────────────────────────────────────*/
.tm1-track{gap:1.5rem}
.tm1-card{display:flex;flex-direction:column;border-radius:var(--tm01-card-radius,var(--card-radius,10px));overflow:hidden;background:var(--tm01-card-bg,var(--card-bg,#fff));border:var(--tm01-card-border-w,1px) solid var(--tm01-card-border-c,var(--card-border,#e5e7eb));box-shadow:var(--tm01-card-shadow,var(--card-shadow,0 2px 6px rgba(0,0,0,.06)));transition:transform .25s,box-shadow .25s}
.tm1-card:hover{transform:translateY(-3px);box-shadow:0 4px 12px rgba(0,0,0,.08)}
.tm1-img-wrap{width:100%;aspect-ratio:1/1;overflow:hidden;background:#f3f4f6}
.tm1-img-wrap img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}
.tm1-card:hover .tm1-img-wrap img{transform:scale(1.04)}
.tm1-body{padding:1.1rem 1.1rem 1.4rem;display:flex;flex-direction:column;align-items:flex-start;gap:.45rem;flex:1}
.tm1-tag{font-size:var(--tm01-fs-xs,var(--fs-xs));font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--primary-color,#e53e3e)}
.tm1-name{font-size:var(--fs-h4,1.05rem);font-weight:800;color:var(--card-title,var(--text-strong,#111827));margin:0;line-height:1.3}
.tm1-bio{line-height:1.65;color:var(--card-text,var(--text-muted,#6b7280));margin:0;flex:1}


/* ── §TM-02 — Hover Image Swap Scroller (Author Photo → Book Cover) ────────*/
.tm2-track{gap:1.5rem}
.tm2-card{border-radius:var(--tm02-card-radius,var(--card-radius,10px));overflow:hidden;border:var(--tm02-card-border-w,0px) solid var(--tm02-card-border-c,var(--card-border,#e5e7eb))}
.tm2-img-wrap{position:relative;width:100%;aspect-ratio:1/1;overflow:hidden;background:#111;border-radius:var(--tm02-card-radius,var(--card-radius,10px))}
.tm2-photo,.tm2-book{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:opacity .45s ease,transform .45s ease}
.tm2-book{opacity:0;transform:scale(1.05)}
.tm2-card:hover .tm2-photo{opacity:0;transform:scale(1.05)}
.tm2-card:hover .tm2-book{opacity:1;transform:scale(1)}
.tm2-overlay{position:absolute;bottom:0;left:0;right:0;padding:1.25rem 1rem 1rem;background:linear-gradient(to top,rgba(0,0,0,.75) 0%,transparent 100%);z-index:2}
.tm2-tag{display:block;font-size:var(--tm02-fs-xs,var(--fs-xs));font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--primary-color,#e53e3e);margin-bottom:.25rem}
.tm2-name{font-size:var(--fs-h4,1rem);font-weight:800;color:#fff;margin:0;line-height:1.3}

/* ── §TM-03 — Circle Avatar Scroller (Rating Badge + Bio + Social) ─────────*/
.tm3-track{gap:1.5rem}
.tm3-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:1.75rem 1.25rem 1.5rem;background:var(--tm03-card-bg,var(--card-bg,#fff));border:var(--tm03-card-border-w,1px) solid var(--tm03-card-border-c,var(--card-border,#e5e7eb));border-radius:var(--tm03-card-radius,var(--card-radius,12px));box-shadow:var(--tm03-card-shadow,var(--card-shadow,0 2px 6px rgba(0,0,0,.06)));transition:transform .25s,box-shadow .25s}
.tm3-card:hover{transform:translateY(-3px);box-shadow:0 4px 12px rgba(0,0,0,.08)}
.tm3-avatar-wrap{position:relative;width:96px;height:96px;margin-bottom:1.25rem;flex-shrink:0}
.tm3-avatar{width:96px;height:96px;border-radius:50%;object-fit:cover;display:block;border:3px solid var(--card-border,#e5e7eb)}
.tm3-badge{position:absolute;bottom:-4px;right:-4px;display:flex;align-items:center;gap:3px;background:var(--primary-color,#e53e3e);color:#fff;font-size:.68rem;font-weight:700;padding:3px 7px;border-radius:20px;line-height:1;box-shadow:0 2px 6px rgba(0,0,0,.18)}
.tm3-badge svg{width:10px;height:10px;fill:#fff;flex-shrink:0}
.tm3-name{font-size:var(--fs-h4,1.05rem);font-weight:800;color:var(--card-title,var(--text-strong,#111827));margin:0 0 .5rem}
.tm3-bio{line-height:1.6;color:var(--card-text,var(--text-muted,#6b7280));margin:0 0 1rem;flex:1}
.tm3-bio a{color:var(--primary-color,#e53e3e);text-decoration:underline;text-underline-offset:2px;font-weight:600}

@media(max-width:900px){.tm3-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.tm3-grid{grid-template-columns:1fr}}

/* ── §TM-04 — Author Card Scroller (portrait · ghost number · CTA) ─────────*/
.tm4-track{gap:1.5rem}
.tm4-card{display:flex;flex-direction:column;border-radius:var(--tm04-card-radius,var(--card-radius,10px));overflow:hidden;background:var(--tm4-tint,var(--tm04-card-bg,#fff));border:var(--tm04-card-border-w,1px) solid var(--tm04-card-border-c,var(--card-border,#e5e7eb));box-shadow:var(--tm04-card-shadow,var(--card-shadow,0 2px 8px rgba(0,0,0,.06)));transition:transform .25s,box-shadow .25s;cursor:pointer}
.tm4-card:hover{transform:translateY(-4px);box-shadow:var(--card-shadow-hover,0 4px 12px rgba(0,0,0,.08))}
.tm4-img{width:100%;aspect-ratio:1/1;overflow:hidden;background:#f3f4f6}
.tm4-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .45s ease}
.tm4-card:hover .tm4-img img{transform:scale(1.06)}
.tm4-body{position:relative;padding:1.25rem 1.25rem 1.5rem;display:flex;flex-direction:column;align-items:flex-start;gap:.45rem;flex:1}
.tm4-ghost{position:absolute;top:-1.6rem;right:1rem;font-size:4.5rem;font-weight:900;line-height:1;color:var(--tm4-accent,var(--primary-color,#e53e3e));opacity:.08;pointer-events:none;user-select:none}
.tm4-tag{display:inline-block;padding:.2rem .65rem;border-radius:99px;font-size:var(--tm04-fs-xs,var(--fs-xs));font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--tm4-chip-fg,var(--tm4-accent,var(--primary-color,#e53e3e)));background:var(--tm4-chip-bg,color-mix(in srgb,var(--tm4-accent,var(--primary-color,#e53e3e)) 12%,transparent))}
.tm4-name{font-size:var(--fs-h4,1.05rem);font-weight:800;color:var(--card-title,var(--text-strong,#111827));margin:0;line-height:1.3}
.tm4-bio{line-height:1.65;color:var(--card-text,var(--text-muted,#6b7280));margin:0;flex:1}
.tm4-btn{display:inline-block;margin-top:.75rem;padding:.45rem 1.1rem;background:var(--tm4-btn-bg,var(--tm4-accent,var(--primary-color,#e53e3e)));color:var(--tm4-btn-fg,#fff);font-size:var(--tm04-fs-xs,var(--fs-xs));font-weight:700;border-radius:20px;text-decoration:none;transition:opacity .18s;align-self:flex-start;pointer-events:none}
.tm4-btn:hover{opacity:.85}
.tm4-card{--modal-accent:var(--tm4-accent,var(--primary-color,#e53e3e))}

body.pg-top{background:var(--surface-color,#f1f5f9);padding:clamp(1.5rem,4vw,3rem) clamp(1rem,4vw,3rem);display:flex;flex-wrap:wrap;gap:2rem;align-items:flex-end}body.pg-lists{background:#f0f0f0;color:var(--text-strong,#1e293b)}body.pg-lists img{display:block;max-width:100%}body.pg-demo{background:#f3f4f6;font-family:system-ui,sans-serif;color:var(--text-color);margin:0}

/* ══════════════════════════════════════════════════════════════════
   §AE  PB-06 — Icon Trio product card (3 circle buttons on hover)
══════════════════════════════════════════════════════════════════ */
.classic-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.25rem}
.classic-card{background:var(--pc-bg,#fff);border-radius:var(--pc-radius,var(--card-radius,10px));box-shadow:0 2px 12px rgba(0,0,0,.07);overflow:hidden;transition:box-shadow .25s,transform .25s;position:relative;display:flex;flex-direction:column}
.classic-card:hover{box-shadow:0 8px 28px rgba(0,0,0,.14);transform:translateY(-3px)}
.classic-card-img-wrap{position:relative;overflow:hidden;background:#f5f5f5;aspect-ratio:1/1}
.classic-card-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.classic-card:hover .classic-card-img{transform:scale(1.04)}
.classic-card-icon-row{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:.6rem;padding:.75rem;background:rgba(255,255,255,.18);backdrop-filter:blur(2px);transform:translateY(100%);transition:transform .3s ease;z-index:2}
.classic-card:hover .classic-card-icon-row{transform:translateY(0)}
.classic-card-icon-btn{width:38px;height:38px;border-radius:50%;background:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(0,0,0,.18);color:var(--text-strong,#111827);transition:background .2s,color .2s,transform .2s}
.classic-card-icon-btn:hover{background:var(--primary-color,#fcd703);color:var(--text-inverse,#fff);transform:scale(1.1)}
.classic-card-icon-btn svg{width:16px;height:16px;pointer-events:none}
.classic-card-body{padding:.85rem 1rem 1rem;flex:1;display:flex;flex-direction:column;gap:var(--pc-gap,.4rem)}
.classic-card-title{font-size:var(--fs-body,.9rem);font-weight:600;color:var(--pc-title-color,var(--text-strong,#111827));line-height:1.35}
/* Business row: publication lines, or unit pills (the unit selector) */
.classic-card-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.classic-card-info-line{font-size:var(--pc-chip-fs,var(--fs-xs,.72rem));font-weight:var(--pc-chip-fw,400);color:var(--text-color,#374151);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.classic-card-info-label{font-weight:600}
.classic-card-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.classic-card-unit,button.classic-card-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,var(--fs-xs,.72rem));font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.classic-card-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#fcd703))}
.classic-card-unit.is-sel{background:var(--pc-chip-active-bg,var(--text-strong,#111827));color:var(--pc-chip-active-text,#fff);border-color:transparent}
.classic-card-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.classic-card-unit.has-qty{overflow:visible}
.classic-card-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--pc-btn-bg-hover,var(--primary-color,#fcd703));color:var(--pc-btn-text-hover,var(--text-inverse,#fff));font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
/* Price pair — follows the selected unit */
.classic-card-price{display:flex;align-items:baseline;gap:.35rem;flex-wrap:wrap;margin-top:auto;padding-top:.2rem;font-size:var(--pc-price-fs,var(--fs-sm,.82rem));font-weight:var(--pc-price-fw,600);color:var(--pc-price-color,var(--text-strong,#111827));line-height:normal}
.classic-card-mrp{font-size:var(--pc-mrp-fs,var(--fs-xs,.72rem));font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;line-height:normal}
.classic-card-mrp[hidden]{display:none}
/* Offer badge — top-left of the image */
.classic-card-badge{position:absolute;top:10px;left:10px;z-index:3;background:var(--pc-offer-bg,#15803d);color:var(--pc-offer-text,#fff);font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:3px 8px;border-radius:4px;line-height:1.7;pointer-events:none;text-transform:uppercase}
.classic-card-badge[hidden]{display:none}
/* Cart button (round icon) -> the row turns into a dark stepper while a unit has a quantity */
.classic-card-cart-btn,button.classic-card-cart-btn{width:calc(var(--pc-qty-btn-size,26px) + 12px);height:calc(var(--pc-qty-btn-size,26px) + 12px);min-width:38px;min-height:38px;border-radius:50%;background:var(--pc-btn-bg,#fff);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(0,0,0,.18);color:var(--pc-btn-text,var(--text-strong,#111827));font-size:var(--pc-buy-fs,inherit);font-weight:var(--pc-buy-fw,600);flex-shrink:0;transition:background .3s,color .3s,transform .2s}
.classic-card-cart-btn:hover{background:var(--pc-btn-bg-hover,var(--primary-color,#fcd703));color:var(--pc-btn-text-hover,var(--text-inverse,#fff))}
.classic-card-cart-btn[hidden]{display:none}
.classic-card-qty{display:flex;align-items:center;justify-content:space-between;gap:.25rem;width:var(--pc-buy-w,8rem);max-width:100%;height:2.1rem;box-sizing:border-box;color:var(--pc-btn-text,#fff);font-size:var(--pc-buy-fs,.95rem);font-weight:var(--pc-buy-fw,600)}
.classic-card-qty[hidden]{display:none}
.classic-card-qty-btn,button.classic-card-qty-btn{width:var(--pc-qty-btn-size,32px);height:var(--pc-qty-btn-size,32px);max-height:2.1rem;box-sizing:border-box;background:rgba(255,255,255,.15);color:var(--pc-btn-text,#fff);border-radius:50%;font-size:1.1rem;font-weight:400;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:normal;flex-shrink:0;transition:background .15s}
.classic-card-qty-btn:hover{background:rgba(255,255,255,.28)}
.classic-card-count{min-width:24px;text-align:center;line-height:normal}
.classic-card.lc-has-qty .classic-card-icon-row{transform:translateY(0);gap:0;background:var(--pc-btn-bg,var(--text-strong,#111827));backdrop-filter:none}
.classic-card.lc-has-qty .classic-card-icon-btn{display:none}
.classic-card--oos .classic-card-icon-row{display:none}
@media (hover:none){.classic-card-icon-row{transform:translateY(0)}}
.sc-track .classic-card{width:240px}

/* classic-card extensions — out-of-stock badge + no-image placeholder */
.classic-card-oos-badge{display:inline-flex;align-items:center;align-self:flex-start;margin-top:.3rem;padding:.15rem .55rem;border-radius:999px;font-size:.68rem;font-weight:700;letter-spacing:.02em;background:var(--pc-oos-bg,color-mix(in srgb,var(--error-color,#ef4444) 12%,transparent));color:var(--pc-oos-text,var(--error-color,#ef4444));border:1px solid color-mix(in srgb,var(--error-color,#ef4444) 30%,transparent)}
.classic-card-noimg{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--text-muted,#9ca3af) 8%,transparent);color:var(--text-muted,#9ca3af)}

/* ── §AE — rn-* Static-page header (Rohini Nandan) ── */
#rn-navbar{font-family:var(--hdr-font,var(--font-family,system-ui,sans-serif));position:var(--hdr-position,sticky);top:0;z-index:50;background:var(--hdr-bg,#fff);box-shadow:var(--hdr-shadow,0 1px 3px rgba(0,0,0,.07));backdrop-filter:var(--hdr-blur,none);-webkit-backdrop-filter:var(--hdr-blur,none);transition:background .25s,box-shadow .25s,backdrop-filter .25s}
/* Scroll state — toggled by initRnNavbarScrollState (theme.js). Was entirely
   missing: --hdr-scrolled-bg/--hdr-shadow-scroll/--hdr-blur-scroll were
   computed server-side but had no class to key off of on this header. */
#rn-navbar.is-scrolled{background:var(--hdr-scrolled-bg,var(--hdr-bg,#fff));box-shadow:var(--hdr-shadow-scroll,var(--hdr-shadow,0 1px 3px rgba(0,0,0,.07)));backdrop-filter:var(--hdr-blur-scroll,var(--hdr-blur,none));-webkit-backdrop-filter:var(--hdr-blur-scroll,var(--hdr-blur,none))}
/* Entrance animation — mirrors .v-hsc2-anim-* below but scoped to rn-navbar's
   own class prefix (initHdrTransition in theme.js applies rn-anim-<value>). */
@keyframes rn-hdr-fade{from{opacity:0}to{opacity:1}}
@keyframes rn-hdr-slide-down{from{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}
.rn-anim-fade{animation:rn-hdr-fade .4s ease both}
.rn-anim-slide-down{animation:rn-hdr-slide-down .4s ease both}
#rn-ann{overflow:hidden;padding:.45rem 2.5rem .45rem 0;position:relative;font-family:var(--font-family,inherit);line-height:1.1}
#rn-ann-track{display:inline-flex;align-items:center;white-space:nowrap;will-change:transform}
.rn-ann-item{display:inline-flex;align-items:center;font-size:var(--hdr-ann-fs,1rem);font-weight:var(--hdr-nav-fw,400);padding:0 1.5rem}
.rn-ann-sep{display:inline-flex;align-items:center;font-size:var(--fs-sm,.875rem);flex-shrink:0}
#rn-ann>button{position:absolute;right:0;top:0;height:100%;display:flex;align-items:center;padding:0 .9rem;background:rgba(0,0,0,.25);border:none;border-left:1px solid rgba(255,255,255,.2);cursor:pointer;color:inherit;font-size:1.1rem;font-weight:700;line-height:1;z-index:2}
#rn-ann>button:hover{background:rgba(0,0,0,.45)}
.rn-phone-pill{display:none}@media(min-width:768px){.rn-phone-pill{display:flex}}
.rn-row-top{border-bottom:var(--hdr-border-w,1px) solid var(--hdr-border,#e5e7eb);position:relative}
/* Background image overlay — was computed (--hdr-bg-image/--hdr-bg-opacity)
   but never consumed anywhere for this header family. Mirrors the existing
   .v-hsc2-main::before pattern used by the other header family. No
   overflow:hidden on .rn-row-top: the overlay is already inset:0 so it can
   never escape the row's own box, and overflow:hidden was otherwise
   clipping the absolutely-positioned .rn-auth-panel account dropdown,
   which needs to extend below this row (2026-09-06 bugfix). */
.rn-row-top::before{content:'';position:absolute;inset:0;background-image:var(--hdr-bg-image,none);background-size:cover;background-position:center;opacity:var(--hdr-bg-opacity,.15);pointer-events:none;z-index:0}
.rn-row-inner{display:flex;align-items:center;gap:.75rem;padding:.6rem 1.25rem;max-width:var(--max-hf-width,1280px);margin:0 auto;min-height:var(--hdr-height,64px);box-sizing:border-box;position:relative;z-index:1}
.rn-col-left{display:flex;align-items:center;gap:.6rem;flex-shrink:0}
.rn-col-center{flex:1;display:flex;justify-content:start}
.rn-col-right{display:flex;align-items:center;gap:.65rem;flex-shrink:0;position:relative}
#rn-burger{display:none;flex-direction:column;gap:5px;align-items:flex-end;justify-content:center;width:38px;height:38px;background:transparent;border:none;cursor:pointer;padding:8px 7px;border-radius:8px}
#rn-burger span{display:block;height:2px;background:var(--hdr-text,#111);border-radius:1px}
#rn-burger span:nth-child(1){width:20px}
#rn-burger span:nth-child(2){width:13px}
#rn-burger span:nth-child(3){width:20px}
.rn-search{position:relative;display:flex;align-items:center}
.rn-search svg{position:absolute;left:.7rem;pointer-events:none;opacity:.45}
.rn-search input{padding:.42rem .8rem .42rem 2rem;border:1px solid var(--hdr-border,#e5e7eb);border-radius:var(--border-radius,50px);font-size:.875rem;min-width:210px;background:#fff;color:#111;font-family:inherit}
.rn-search input:focus{outline:none;border-color:var(--primary-color,#8b1c1c)}
.v-suggest{display:none;position:absolute;top:calc(100% + 6px);left:0;min-width:100%;width:max-content;max-width:min(520px,90vw);background:var(--bg-color,#fff);border:1px solid var(--border-color,#e5e7eb);border-radius:min(var(--border-radius,8px),12px);box-shadow:0 8px 24px rgba(0,0,0,.1);z-index:9999;overflow:hidden}
.v-suggest--open{display:block}
.v-suggest__item{display:flex;align-items:center;gap:.9rem;width:100%;padding:.52rem 1rem;font-size:.875rem;color:var(--text-color,#111);background:none;border:none;border-bottom:1px solid color-mix(in srgb,var(--border-color,#e5e7eb) 60%,transparent);text-align:left;cursor:pointer;font-family:inherit;transition:background .12s}
.v-suggest__item:last-child{border-bottom:none}
.v-suggest__item:hover,.v-suggest__item--active{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 7%,transparent)}
.v-suggest__item:hover .v-suggest__text,.v-suggest__item--active .v-suggest__text{color:var(--primary-color,#8b1c1c)}
.v-suggest__ico{flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--primary-color,#8b1c1c)}
.v-suggest__ico svg{width:16px;height:16px}
.v-suggest__text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem}
.v-suggest__label{padding:.35rem 1rem .2rem;font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--primary-color,#8b1c1c)}
.v-suggest__empty{padding:.65rem 1rem;font-size:.85rem;color:color-mix(in srgb,var(--text-color) 50%,transparent)}
.rn-search input{text-overflow:ellipsis}

/* Market Utility header — utility bar (desktop-only) + full-screen search
   overlay (#v-fs-search, wired by sp-search.js's wireFullscreenSearch()).
   z-index 600 — above #rn-navbar (50) and the rn-mob mobile nav overlay
   (500), since the search trigger lives inside both. */
.rn-mu-utility{display:none}
@media(min-width:1024px){.rn-mu-utility{display:flex}}
/* Market Utility's nav links live inline in .rn-col-center (single merged
   row, matching the reference) instead of the shared .rn-row-links second
   row every other rn-* header uses — so it needs its own mobile-hide gate,
   scoped so it doesn't touch .rn-row-links' shared rule (line ~4814/5260)
   used by Classic/Grid/Flash Deal. Cutoff is 1024px (not the shared 768px)
   so the compact burger header carries through tablet widths too, matching
   the other templates' desktop-only breakpoint for this row. */
.rn-mu-nav-inline{display:none!important;scrollbar-width:none;-ms-overflow-style:none}
.rn-mu-nav-inline::-webkit-scrollbar{display:none;height:0}
@media(min-width:1024px){.rn-mu-nav-inline{display:flex!important}}
/* Burger stays visible through tablet (<1024px) for this template — same
   id+class specificity trick as .rn-fd-burger so it overrides the shared
   #rn-burger 768px cutoff other templates use, without touching them. */
@media(max-width:1023px){#rn-burger.rn-mu-burger{display:flex !important}}
@media(min-width:1024px){#rn-burger.rn-mu-burger{display:none !important}}
#v-fs-search{position:fixed;inset:0;z-index:600;display:flex;align-items:center;justify-content:center;padding:3vh 1.25rem}
#v-fs-search[hidden]{display:none}
.v-fs-search__bd{position:fixed;inset:0;z-index:0;background:rgba(17,17,17,.55)}
.v-fs-search__panel{position:relative;z-index:1;max-width:900px;width:100%;max-height:94vh;margin:0 auto;background:var(--bg-color,#fff);border-radius:16px;box-shadow:0 24px 64px rgba(0,0,0,.3);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden}
.v-fs-search__head{position:relative;flex:0 0 auto;padding:1.75rem 3.5rem 1.25rem 1.75rem;border-bottom:1px solid var(--border-color,#e5e7eb)}
.v-fs-search__close{position:absolute;top:1.1rem;right:1.1rem;width:36px;height:36px;border-radius:50%;border:none;background:var(--surface-color,#f3f4f6);color:var(--text-strong,#111827);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
/* Market Utility only (.mu-fs-search marks its own copy of #v-fs-search;
   Ghost Fade Nav's separate copy of this same component is untouched). */
.mu-fs-search .v-fs-search__head{padding:2.25rem 4rem 1.75rem 2.25rem}
.mu-fs-search .v-fs-search__body{padding:1.75rem 2.25rem 2.5rem}
.mu-fs-search .v-fs-search__close{width:44px;height:44px;top:1.4rem;right:1.4rem}
.mu-fs-search .v-fs-search__close svg{width:20px;height:20px}
/* Background-scroll-lock: same :has() convention #rn-mob's mobile nav
   overlay already uses (theme.css, further down) -- more reliable than
   the JS-only document.body.style.overflow toggle sp-search.js also sets,
   which this backs up rather than replaces. */
html:has(.mu-fs-search:not([hidden])),body:has(.mu-fs-search:not([hidden])){overflow:hidden;height:100%}
.v-fs-search__title{text-align:left;font-family:var(--heading-font,var(--font-family,system-ui,sans-serif));font-size:clamp(1.15rem,2.4vw,1.6rem);font-weight:700;color:var(--text-strong,#111827);margin:0 0 1.1rem;padding-right:2.5rem}
.v-fs-search__inputwrap{width:100%;height:52px;border-radius:10px;border:1px solid var(--border-color,#e5e7eb)}
.v-fs-search__inputwrap input{padding-left:2.6rem;font-size:1rem;width:100%;height:100%;border:none;outline:none;background:transparent}
.v-fs-search__inputwrap svg{left:1rem}
.v-fs-search__body{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:1.25rem 1.75rem 2rem}
.v-fs-search__label{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted,#6b7280);margin:0 0 .75rem}
.v-fs-search__chips{display:flex;flex-wrap:wrap;gap:.5rem}
.v-fs-search__chip{padding:.4rem 1rem;border-radius:999px;border:1px solid var(--border-color,#e5e7eb);background:var(--surface-color,#f9fafb);color:var(--text-color,#374151);font-size:.85rem;cursor:pointer;font-family:inherit;transition:background .15s,border-color .15s}
.v-fs-search__chip:hover{background:color-mix(in srgb,var(--primary-color,#111) 8%,transparent);border-color:var(--primary-color,#111)}
.v-fs-search__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:1.1rem;margin-top:1.75rem}
.v-fs-search__card{display:flex;flex-direction:column;gap:0;padding:10px;text-decoration:none;color:inherit;background:var(--surface-color,#fff);border:1px solid var(--border-color,#e5e7eb);border-radius:6px;overflow:hidden;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.v-fs-search__card:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(0,0,0,.09);border-color:var(--primary-color,#111)}
.v-fs-search__thumb{display:block;width:100%;aspect-ratio:1/1;overflow:hidden;background:var(--bg-color,#f3f4f6)}
.v-fs-search__thumb--empty{background:linear-gradient(135deg,var(--bg-color,#f3f4f6),var(--surface-color,#fff))}
.v-fs-search__thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}
.v-fs-search__card:hover .v-fs-search__thumb img{transform:scale(1.06)}
.v-fs-search__name{font-size:.82rem;font-weight:600;color:var(--text-strong,#111827);line-height:1.35;margin-top:8px;text-align:center;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}
.v-fs-search__empty{padding:1.5rem 0;text-align:center;color:var(--text-muted,#6b7280);font-size:.9rem}
@media(max-width:640px){#v-fs-search{padding:0}.v-fs-search__panel{max-width:none;width:100%;height:100%;max-height:100%;border-radius:0}.v-fs-search__head{padding:1.5rem 3.25rem 1.1rem 1.25rem}.v-fs-search__body{padding:1.1rem 1.25rem 2rem}.v-fs-search__grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.75rem}}
.rn-cta{display:inline-flex;align-items:center;padding:.42rem 1.3rem;background:var(--primary-color,#8b1c1c);color:var(--text-inverse,#fff);font-size:var(--hdr-nav-fs,.875rem);font-weight:700;border-radius:var(--border-radius,50px);white-space:nowrap;text-decoration:none;transition:background .2s}
.rn-cta:hover{background:var(--primary-dark,#6b1515);color:var(--text-inverse,#fff)}
.rn-cta-ghost{background:transparent;border:1px solid color-mix(in srgb,var(--hdr-text,#111) 30%,transparent);color:var(--hdr-text,#111)}
.rn-cta-ghost:hover{background:color-mix(in srgb,var(--hdr-text,#111) 8%,transparent);color:var(--hdr-text,#111)}
.rn-row-links{display:none;border-bottom:1px solid var(--hdr-border,#e5e7eb);background:var(--hdr-bg,#fff);position:relative}
.rn-row-links-inner{display:flex;align-items:center;gap:.2rem;padding:.35rem 1.25rem;max-width:1280px;margin:0 auto;flex-wrap:wrap}
.rn-link{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .85rem;color:var(--hdr-text,#111);font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));text-decoration:none;border-radius:var(--border-radius,6px);transition:background .15s,color .15s;white-space:nowrap}
.rn-link:hover,.rn-link.active{background:var(--primary-color,#465fff);color:var(--text-inverse,#fff)}
.rn-drop{position:relative}.rn-drop.pl-drop-cat{position:static}
.rn-drop-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .85rem;background:transparent;border:none;color:var(--hdr-text,#111);font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);cursor:pointer;border-radius:var(--border-radius,6px);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));white-space:nowrap;transition:background .15s,color .15s}
.rn-drop-btn:hover,.rn-drop:hover .rn-drop-btn,.rn-drop:focus-within .rn-drop-btn{background:var(--primary-color,#465fff);color:var(--text-inverse,#fff)}
/* .v-cat-trigger (the "Categories" nav link, rendered by the live
   store-category-menu dpcomponent — internal/handler/dpstore/category.go)
   had NO base rule anywhere in this file — only a display:none override for
   one context and a hover-pulse animation further down. With nothing
   setting font-size, it fell back to the browser's default body size
   instead of the --hdr-nav-fs every sibling nav item (.rn-link/.rn-drop-btn)
   explicitly uses, which is why it visibly rendered larger than "About",
   "Gifting", etc. A chosen btnstyle preset (btnStylePresets in category.go)
   still overrides padding/color/border-radius/font-weight via its own
   INLINE style attribute, which always wins over this class rule — this
   only fills in the same sane defaults every other nav item already has
   when no preset is set.*/
.v-cat-trigger{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .85rem;color:var(--hdr-text,#111);font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));text-decoration:none;border-radius:var(--border-radius,6px);white-space:nowrap;transition:background .15s,color .15s}
.v-cat-trigger:hover{background:var(--primary-color,#465fff);color:var(--text-inverse,#fff)}
.pl-link{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .85rem;color:color-mix(in srgb,var(--hdr-text,#111) 75%,transparent);font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));text-decoration:none;border-radius:0;position:relative;transition:color .15s;white-space:nowrap}
.pl-link::after{content:'';position:absolute;bottom:4px;left:.85rem;right:.85rem;height:2px;background:var(--primary-color,#465fff);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
.pl-link:hover{color:var(--primary-text,var(--primary-color,#465fff))}
.pl-link.active{color:var(--primary-text,var(--primary-color,#465fff))}
.pl-link:hover::after,.pl-link.active::after{transform:scaleX(1)}
.pl-drop-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .85rem;background:transparent;border:none;color:color-mix(in srgb,var(--hdr-text,#111) 75%,transparent);font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);cursor:pointer;border-radius:0;position:relative;font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));white-space:nowrap;transition:color .15s}
.pl-drop-btn::after{content:'';position:absolute;bottom:4px;left:.85rem;right:.85rem;height:2px;background:var(--primary-color,#465fff);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
.pl-drop-btn:hover,.rn-drop:hover .pl-drop-btn,.rn-drop:focus-within .pl-drop-btn{background:transparent;color:var(--primary-text,var(--primary-color,#465fff))}
.pl-drop-btn:hover::after,.rn-drop:hover .pl-drop-btn::after,.rn-drop:focus-within .pl-drop-btn::after{transform:scaleX(1)}
.pl-link-inv{display:inline-flex;align-items:center;gap:.35rem;padding:.55rem .9rem;color:var(--hdr-text,#111);font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));text-decoration:none;border-radius:var(--border-radius,6px);transition:background .15s,color .15s;white-space:nowrap}
.pl-link-inv:hover,.pl-link-inv.active{background:var(--primary-color,#465fff);color:var(--primary-text,var(--text-inverse,#fff))}
.pl-drop-btn-inv{display:inline-flex;align-items:center;gap:.35rem;padding:.55rem .9rem;border:none;background:transparent;color:var(--hdr-text,#111);font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}
.pl-drop-btn-inv:hover,.pl-drop-btn-inv.active,.rn-drop:hover .pl-drop-btn-inv,.rn-drop:focus-within .pl-drop-btn-inv{background:var(--primary-color,#465fff);color:var(--primary-text,var(--text-inverse,#fff))}
.rn-search-exp{position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:10;transition:width .35s ease}
.rn-search-exp:focus-within{width:100% !important}
.rn-search-exp:focus-within input{background:#fff;padding-top:.65rem;padding-bottom:.65rem;border-color:var(--primary-color)}
.rn-col-right .rn-cta{transition:opacity .25s}
.rn-col-right:has(.rn-search-exp:focus-within) .rn-cta{opacity:0;pointer-events:none}
/* Grid template only (.pl-break-960 marks its own #rn-navbar, no other
   header design carries it -- Ghost Fade Nav also uses .rn-search-exp but
   under its own .hdrgn-navbar class, so this stays scoped). */
.pl-break-960 .rn-search-exp input{border-color:#ababab}
.rn-row-links .pl-link-inv,.rn-row-links .pl-drop-btn-inv{border-radius:0}
/* .chev (About/Contact dropdown arrows, baked into nav-config markup by
   sp-nav-editor.js) ships with viewBox="0 0 24 24" stroke-width="2.5" --
   a stroke-to-viewbox ratio of ~10.4%. .v-catpanel__chev (the Categories
   button's arrow, rendered server-side by category.go) uses
   viewBox="0 0 10 10" stroke-width="1.75", a ~17.5% ratio -- visibly
   bolder/thicker at the same rendered size (both are ~11px). Overriding
   stroke-width here (a CSS property beats the inline presentation
   attribute) brings .chev to the same ~17.5% ratio in its own 24-unit
   viewBox, so every dropdown arrow reads as the same weight regardless
   of which one generated it -- this also fixes already-saved nav config
   markup, not just newly-saved links, since it's a CSS rule rather than
   a change to the generated HTML. */
.chev{stroke-width:2px}
.rn-drop .chev{transition:transform .2s}
.rn-drop:hover .chev,.rn-drop:focus-within .chev{transform:rotate(180deg)}

/* ── Ghost Fade Nav header design (header-ghost-fade, sp-header-template.html) ──
   Starts fully transparent (meant to overlay a hero image), reveals a
   frosted/solid bar plus a normal text colour once scrolled. Deliberately
   does NOT use --hdr-bg for its own pre-scroll state -- this design's whole
   identity is "transparent until scrolled", independent of whatever solid
   background an admin has configured for OTHER header designs; only
   --hdr-scrolled-bg/--hdr-shadow-scroll/--hdr-text-scrolled (all already
   admin-configurable in Settings > Header) apply, via the existing
   #rn-navbar.is-scrolled toggle (initRnNavbarScrollState, theme.js -- no
   new scroll listener needed, it already keys off the shared #rn-navbar id). */
/* Ghost Fade Nav must float over the section beneath it for the
   transparent-over-hero effect to read as an overlay rather than a plain
   opaque bar with content pushed down -- position:fixed takes it out of
   flow so the hero renders at y:0 underneath it, unlike the shared
   #rn-navbar rule's default position:var(--hdr-position,sticky), whose
   "Sticky" option only pins the header once you scroll past it (still in
   flow at load, so the hero would start below the bar instead of behind
   it). Baked directly into this class rather than relying on whatever
   inline style the Position setting/preview tooling may or may not be
   supplying, so the floating behaviour is guaranteed for this header
   design regardless of that. */
#rn-navbar.hdrgn-navbar{position:fixed;top:0;width:100%;background:transparent;color:var(--hdr-text,#fff);box-shadow:none;transition:background .35s ease,backdrop-filter .35s ease,box-shadow .35s ease,color .35s ease}
#rn-navbar.hdrgn-navbar.is-scrolled{background:var(--hdr-scrolled-bg,rgba(255,255,255,.88));backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--hdr-shadow-scroll,0 2px 18px rgba(0,0,0,.08));color:var(--hdr-text-scrolled,var(--text-color,#111))}
/* .rn-row-top's border-bottom (theme.css .rn-row-top rule) is always-on by
   default for every other header design. Ghost Fade Nav's whole premise is
   a borderless transparent overlay until scroll, so a visible divider line
   cutting across the hero here would look like a stray artifact -- hide it
   while unscrolled and fade it in only once .is-scrolled matches the solid
   background appearing, same timing as the background/shadow transition
   above. */
#rn-navbar.hdrgn-navbar .rn-row-top{border-bottom-color:transparent;transition:border-color .35s ease}
#rn-navbar.hdrgn-navbar.is-scrolled .rn-row-top{border-bottom-color:var(--hdr-border,#e5e7eb)}

/* position:fixed on #rn-navbar.hdrgn-navbar (above) reserves no space, so
   a page whose first section ISN'T a full-bleed hero (About, Authors,
   Events, ...) gets its top content tucked under the bar. Reserve that
   space with padding-top -- --hdrgn-h is measured at runtime
   (initHdrgnHeightVar, theme.js) since Bar Height/Logo Height/nav font
   size are all admin-configurable and change the real height per org; the
   84px fallback only matters for the one JS-disabled instant before it
   runs. Pages that DO want the header floating directly over their first
   section (hero-fullscreen-slider's .hfs-root, the template this design
   was built for) skip the padding entirely via :has(). */
body:has(#rn-navbar.hdrgn-navbar) #main-content{padding-top:var(--hdrgn-h,84px)}
body:has(#rn-navbar.hdrgn-navbar) #main-content:has(>.hfs-root){padding-top:0}
/* .rn-row-links is shared with the Classic 2-Row header design, where it
   defaults to display:none (that design only shows it once its "second
   row" is toggled on). Ghost Fade Nav reuses the same class for its own
   single link row, which needs to always render -- override the shared
   default (plus its border-bottom/background, which belong to that other
   design's row styling, not this one's transparent floating bar) whenever
   it's nested inside this header. */
/* Breakpoint scoping is required, not cosmetic: the shared
   .rn-row-links{display:none} default (theme.css) only ever flips to flex
   above the generic 768px cutoff, meant for the Classic header's lighter
   2-3 item nav. Ghost Fade Nav's own generously-spaced link row (up to
   8 top-level items in practice) gets cramped in the 768-1023px tablet
   range with no room to trim anything the way Classic does (dropping a
   CTA, expanding search) -- so, matching the convention the other
   icon/link-heavy designs already use (Market Utility's rn-mu-burger,
   Ghost Header's gahd-nav, both cut at 1024px instead of 768px), this
   design gets its own 1024px breakpoint rather than inheriting the
   768px one. Tablet now gets the full mobile burger treatment (X-morph +
   staggered reveal, both already built for phone) instead of a
   half-cramped desktop row. */
@media(min-width:1024px){#rn-navbar.hdrgn-navbar .rn-row-links{flex:1;display:flex;justify-content:center;background:transparent;border:0}}
/* The shared Classic/Grid rule (.rn-row-links{display:flex} from 768px up,
   further down this file) isn't scoped to any one header design, so
   without this override it kept showing the desktop nav row (e.g. "Home")
   in the 768-1023px tablet band even though #rn-burger was also visible
   there -- both ended up on screen at once. */
@media(max-width:1023px){#rn-navbar.hdrgn-navbar #rn-burger{display:flex!important}#rn-navbar.hdrgn-navbar .rn-row-links{display:none!important}}
/* .hdrgn-icons (search/cart/account -- wishlist removed entirely) was
   never gated to a breakpoint, so it kept rendering full-size next to the
   burger below 1024px with nothing left to give it room, squeezing the
   header. Account is intentionally left out of the mobile panel too (only
   its own Shop quick-link and nav links remain there), so it's simply not
   reachable on mobile right now, not just hidden duplicately. Search and
   Cart are the deliberate exceptions: per explicit request they stay live
   in the header itself on mobile (not tucked inside the slide-out panel),
   so only the account trigger collapses here -- the panel's own
   now-redundant search row was removed from the template to match. */
@media(max-width:1023px){#rn-navbar.hdrgn-navbar .hdrgn-icons>.rn-auth-drop{display:none!important}}
@media(min-width:1024px){#rn-navbar.hdrgn-navbar #rn-burger{display:none!important}}
#rn-navbar.hdrgn-navbar .rn-hdr-logo,
#rn-navbar.hdrgn-navbar .hdrgn-link,
#rn-navbar.hdrgn-navbar .hdrgn-dropbtn,
#rn-navbar.hdrgn-navbar .hdrgn-icon-btn,
#rn-navbar.hdrgn-navbar .rn-link,
#rn-navbar.hdrgn-navbar .rn-drop-btn,
#rn-navbar.hdrgn-navbar .v-cat-trigger,
#rn-navbar.hdrgn-navbar .pl-link,
#rn-navbar.hdrgn-navbar .pl-link-inv,
#rn-navbar.hdrgn-navbar .pl-drop-btn,
#rn-navbar.hdrgn-navbar .pl-drop-btn-inv,
#rn-navbar.hdrgn-navbar .nav-drop-btn{color:inherit}
/* Admin-configured nav links carry whichever header design's classes
   (rn-link/rn-drop-btn/pl-link/nav-drop-btn/etc.) were active the last
   time that link was saved via the Nav Editor -- they don't retroactively
   relabel themselves when a different header design (like Ghost Fade Nav)
   becomes active. Rather than requiring every org to re-save their nav
   config after a header switch, normalize those legacy link/button
   classes to look and behave exactly like .hdrgn-link/.hdrgn-dropbtn
   whenever they end up inside this header: same transparent background,
   same padding/margin/type scale, and the same center-grow underline on
   hover/active instead of their own solid-pill hover treatment.
   .v-cat-trigger (the Categories search/browse trigger) is intentionally
   left out of this normalization below -- color:inherit above is enough
   for it to follow the transparent/scrolled color flip; its own padding,
   chevron and pulse animation are part of a distinct composite widget,
   not a plain nav link, and forcing hdrgn-link's box model onto it would
   break that layout. */
#rn-navbar.hdrgn-navbar .rn-link,
#rn-navbar.hdrgn-navbar .rn-drop-btn,
#rn-navbar.hdrgn-navbar .pl-link,
#rn-navbar.hdrgn-navbar .pl-link-inv,
#rn-navbar.hdrgn-navbar .pl-drop-btn,
#rn-navbar.hdrgn-navbar .pl-drop-btn-inv,
#rn-navbar.hdrgn-navbar .nav-drop-btn{position:relative;background:none!important;border:none;padding:.6rem .1rem;margin:0 .85rem;border-radius:0;font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)))}
/* ALL header designs: whatever class the Nav Editor baked into a link or a drop button (a saved page can carry
   the class of a header design it was switched away from), it takes the same size, weight and family from
   Settings > Header. Before, a drop button whose class had no font rule (e.g. .pl-drop-btn-inv) fell back to the
   browser default font next to 14px links. Dropdown entries (.rn-drop-item) are not included. An inline style
   (a category-trigger preset, the promo chip) still wins over this. */
#rn-navbar :is(.rn-link,.rn-drop-btn,.pl-link,.pl-link-inv,.pl-drop-btn,.pl-drop-btn-inv,.nav-drop-btn,.hdrgn-link,.hdrgn-dropbtn,.v-cat-trigger){font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)))}

/* The mobile menu overlay (#rn-mob) lives inside #rn-navbar, whose own stacking context (z-index 50) sits under the
   fixed mobile app bar (z-index 80): the bar was drawn over the bottom of the open menu. Hide the bar while the
   menu is open, on every header design (they all share #rn-mob). */
body:has(#rn-mob:not([hidden])) .v-tabbar{display:none !important}

/* Ghost Fade: every top-level item in the link row (plain links, drop buttons, the Categories
   trigger, whatever class a saved page gave them) uses the SAME size, weight and family from
   Settings > Header (--hdr-nav-*). A button, or an item with its own inline style, otherwise
   drifts to a different size. Dropdown entries (.rn-drop-item) are deliberately not included. */
#rn-navbar.hdrgn-navbar .rn-row-links-inner>a,
#rn-navbar.hdrgn-navbar .rn-row-links-inner>.rn-drop>button,
#rn-navbar.hdrgn-navbar .rn-row-links-inner .v-cat-trigger{font-size:var(--hdr-nav-fs,.875rem) !important;font-weight:var(--hdr-nav-fw,600) !important;font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif))) !important;line-height:1.3}
#rn-navbar.hdrgn-navbar .rn-link::after,
#rn-navbar.hdrgn-navbar .rn-drop-btn::after,
#rn-navbar.hdrgn-navbar .pl-link::after,
#rn-navbar.hdrgn-navbar .pl-link-inv::after,
#rn-navbar.hdrgn-navbar .pl-drop-btn::after,
#rn-navbar.hdrgn-navbar .pl-drop-btn-inv::after,
#rn-navbar.hdrgn-navbar .nav-drop-btn::after{content:"";position:absolute;left:50%;right:50%;bottom:.35rem;height:2px;background:currentColor;transition:left .25s ease,right .25s ease;opacity:.85}
#rn-navbar.hdrgn-navbar .rn-link:hover,#rn-navbar.hdrgn-navbar .rn-link.active,
#rn-navbar.hdrgn-navbar .rn-drop-btn:hover,#rn-navbar.hdrgn-navbar .rn-drop-btn.active,
#rn-navbar.hdrgn-navbar .pl-link:hover,#rn-navbar.hdrgn-navbar .pl-link.active,
#rn-navbar.hdrgn-navbar .pl-link-inv:hover,#rn-navbar.hdrgn-navbar .pl-link-inv.active,
#rn-navbar.hdrgn-navbar .pl-drop-btn:hover,#rn-navbar.hdrgn-navbar .pl-drop-btn.active,
#rn-navbar.hdrgn-navbar .pl-drop-btn-inv:hover,#rn-navbar.hdrgn-navbar .pl-drop-btn-inv.active,
#rn-navbar.hdrgn-navbar .nav-drop-btn:hover,#rn-navbar.hdrgn-navbar .nav-drop-btn.active{background:none!important;color:inherit!important}
#rn-navbar.hdrgn-navbar .rn-link:hover::after,#rn-navbar.hdrgn-navbar .rn-link.active::after,
#rn-navbar.hdrgn-navbar .rn-drop-btn:hover::after,#rn-navbar.hdrgn-navbar .rn-drop-btn.active::after,
#rn-navbar.hdrgn-navbar .pl-link:hover::after,#rn-navbar.hdrgn-navbar .pl-link.active::after,
#rn-navbar.hdrgn-navbar .pl-link-inv:hover::after,#rn-navbar.hdrgn-navbar .pl-link-inv.active::after,
#rn-navbar.hdrgn-navbar .pl-drop-btn:hover::after,#rn-navbar.hdrgn-navbar .pl-drop-btn.active::after,
#rn-navbar.hdrgn-navbar .pl-drop-btn-inv:hover::after,#rn-navbar.hdrgn-navbar .pl-drop-btn-inv.active::after,
#rn-navbar.hdrgn-navbar .nav-drop-btn:hover::after,#rn-navbar.hdrgn-navbar .nav-drop-btn.active::after,
#rn-navbar.hdrgn-navbar .rn-drop:hover .rn-drop-btn::after,#rn-navbar.hdrgn-navbar .rn-drop:focus-within .rn-drop-btn::after{left:0;right:0}
/* #rn-burger's own span rule (above) paints from the raw --hdr-text
   variable, which this design never changes -- only the inherited `color`
   property flips on scroll (see .is-scrolled above). Repaint from
   currentColor here so the burger icon actually follows that flip instead
   of silently staying whatever colour it started as. */
#rn-navbar.hdrgn-navbar #rn-burger span{background:currentColor}

/* Wordmark logo -- bold, tight tracking, a decorative accent dot (the
   reference design's "Flone." period flourish) in the brand primary
   colour, legible whether the header is transparent or solid. */
.hdrgn-logo{font-family:var(--hdr-brand-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));font-weight:800;font-size:var(--hdr-brand-fs,1.4rem);letter-spacing:-.02em;line-height:normal;text-decoration:none;display:inline-flex;align-items:center;gap:.5rem;color:var(--hdr-brand-color,inherit)}
.hdrgn-logo img{height:var(--hdr-logo-h,34px);width:auto;object-fit:contain;display:block}
.hdrgn-logo-dot{color:var(--primary-color,#8b1c1c)}

/* Nav links -- underline grows from the CENTER on hover/active, not a
   static line or the background-swap other header designs' pl-/rn- link
   classes use. */
.hdrgn-link,.hdrgn-dropbtn{position:relative;display:inline-flex;align-items:center;gap:.3rem;padding:.6rem .1rem;margin:0 .85rem;color:inherit;font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));text-decoration:none;border:none;background:none;cursor:pointer;white-space:nowrap}
.hdrgn-link::after,.hdrgn-dropbtn::after{content:"";position:absolute;left:50%;right:50%;bottom:.35rem;height:2px;background:currentColor;transition:left .25s ease,right .25s ease;opacity:.85}
.hdrgn-link:hover::after,.hdrgn-link.active::after,
.hdrgn-dropbtn:hover::after,.hdrgn-dropbtn.active::after,
.rn-drop:hover .hdrgn-dropbtn::after,.rn-drop:focus-within .hdrgn-dropbtn::after{left:0;right:0}

/* Icon cluster -- search/wishlist/compare/cart, each a plain round icon
   button with an optional count badge. Badge gets a brief pulse
   (initHdrBadgePulse, theme.js) whenever its number actually changes,
   instead of a silent text swap. */
.hdrgn-icons{display:flex;align-items:center;gap:.15rem}
.hdrgn-icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:2.2rem;height:2.2rem;border-radius:50%;color:inherit;text-decoration:none;border:none;background:none;cursor:pointer;transition:background .2s}
.hdrgn-icon-btn:hover{background:color-mix(in srgb,currentColor 10%,transparent)}
.hdrgn-badge{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;padding:0 3px;border-radius:999px;background:var(--primary-color,#8b1c1c);color:var(--text-inverse,#fff);font-size:.62rem;font-weight:800;display:flex;align-items:center;justify-content:center;line-height:1;transform:scale(1);transition:transform .25s cubic-bezier(.34,1.56,.64,1)}
.hdrgn-badge.pulse{transform:scale(1.4)}

/* Search: .hdrgn-icon-btn[data-search-fs-open] opens #v-fs-search, the
   shared page-dimming full-screen search takeover (same component Market
   Utility's header uses, wired by sp-search.js's wireFullscreenSearch())
   -- not an inline expanding input, so no dedicated wrapper/expand CSS is
   needed here beyond the plain icon-button look already defined above. */

/* NOTE: a burger-to-X morph keyed off #rn-burger[aria-expanded="true"]
   was tried here and removed -- it rendered as a permanent X even while
   the mobile panel was closed instead of only while open, showing the
   wrong icon for "open menu". Left as a plain static hamburger instead;
   revisit only with a way to verify aria-expanded's real state live. */

/* Mobile menu: links cascade in one after another instead of the shared
   panel's plain instant reveal (#rn-mob-panel[hidden] above), a small
   flourish matching Ghost Fade Nav's fade-based identity. Scoped via a
   general sibling selector so only THIS header's mobile panel gets it --
   #rn-mob is shared markup reused by every header design, and this must
   not change their plain slide-in behaviour. nth-child delays are capped
   at 10 links; anything past that just inherits the last delay, which is
   fine since a header rarely has more than a handful of nav items. */
body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-nav-item,
body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-acc-hd{animation:hdrgnMobIn .4s cubic-bezier(.2,.8,.2,1) backwards}
body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-nav-item:nth-child(1),body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-acc-hd:nth-child(1){animation-delay:.05s}
body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-nav-item:nth-child(2),body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-acc-hd:nth-child(2){animation-delay:.1s}
body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-nav-item:nth-child(3),body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-acc-hd:nth-child(3){animation-delay:.15s}
body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-nav-item:nth-child(4),body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-acc-hd:nth-child(4){animation-delay:.2s}
body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-nav-item:nth-child(5),body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-acc-hd:nth-child(5){animation-delay:.25s}
body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-nav-item:nth-child(n+6),body:has(#rn-navbar.hdrgn-navbar) #rn-mob:not([hidden]) .rn-mob-acc-hd:nth-child(n+6){animation-delay:.3s}
@keyframes hdrgnMobIn{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:translateX(0)}}
.rn-drop-menu{position:absolute;top:100%;left:0;min-width:200px;padding:.4rem;background:var(--bg-color,#fff);border:1px solid var(--border-color,#e5e7eb);border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.1);opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .15s,transform .15s,visibility .15s;z-index:60}
.rn-drop:hover .rn-drop-menu,.rn-drop:focus-within .rn-drop-menu{opacity:1;visibility:visible;transform:translateY(0)}
.rn-drop-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .65rem;color:var(--text-color,#374151);font-size:var(--hdr-nav-fs,.85rem);font-weight:var(--hdr-nav-fw,600);text-decoration:none;border-radius:6px}
.rn-drop-item:hover,.rn-drop-item.active{background:color-mix(in srgb,var(--primary-color,#465fff) 8%,transparent);color:var(--primary-color,#465fff)}
details.rn-drop>summary{list-style:none;cursor:pointer}
details.rn-drop>summary::-webkit-details-marker{display:none}
details.rn-drop[open]>.rn-drop-menu{opacity:1;visibility:visible;transform:translateY(0)}
details.rn-drop[open] .chev{transform:rotate(180deg)}
/* "Show company name in header" toggle — --hdr-show-company was computed
   but the markup had no element to gate; the span is now baked into the 3
   header templates (sp-header-template.html) next to the primary logo. */
.rn-hdr-company-name{display:var(--hdr-show-company,none);font-weight:700;font-size:var(--hdr-brand-fs,1.05rem);white-space:nowrap;font-family:var(--hdr-brand-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));color:var(--hdr-brand-color,inherit)}
/* Company Name Position setting: the logo wrapper's markup order is
   always <img> then .rn-hdr-company-name -- flex-direction alone reverses
   which one appears first/on top, no per-header markup change needed for
   the reordering itself. Three designs (Classic, Grid, Market Utility)
   share .rn-hdr-logo; Ghost Fade Nav already has its own .hdrgn-logo
   class (no markup change needed there); Flash Deal's logo link had NO
   class at all, so it got a new .rn-fd-logo rather than reusing
   .rn-hdr-logo -- that class also carries a display:none/
   @media(min-width:1024px){display:flex} visibility toggle that's part
   of Classic's separate two-logo (side/center) swap, which would have
   hidden Flash Deal's only logo below 1024px. Column modes (top/bottom)
   still want horizontal centering, hence the extra text-align. */
.rn-hdr-logo,.hdrgn-logo,.rn-fd-logo{flex-direction:var(--hdr-company-pos,row)}
.rn-hdr-logo:has(.rn-hdr-company-name),.hdrgn-logo:has(.rn-hdr-company-name),.rn-fd-logo:has(.rn-hdr-company-name){text-align:center}
/* Company name in the mobile drawer (.rn-mob-panel's own logo/close header
   row) — this is a SEPARATE instance of .rn-hdr-company-name from the top
   bar's, always placed directly below the logo regardless of the Company
   Name Position setting (top/left/right/bottom only make sense for the
   top bar's tighter horizontal layout). .rn-mob-logo is a dedicated class,
   not a reuse of .rn-hdr-logo/.rn-fd-logo, so it never picks up their
   flex-direction:var(--hdr-company-pos,row) rule above in the first place
   -- Ghost Fade's drawer is the one exception (kept .hdrgn-logo alongside
   .rn-mob-logo for its logo-dot styling), hence the !important below to
   guarantee this wins over that shared rule regardless of source order. */
.rn-mob-panel .rn-mob-logo{display:flex;flex-direction:column!important;align-items:center;gap:.3rem;text-align:center;min-width:0;max-width:100%}
/* Independent, smaller responsive size from the top bar's --hdr-brand-fs --
   the drawer is much narrower (~400px, further reduced by its own padding)
   than most headers' full-width top bar, so a name that fits fine up top
   can still wrap or overflow here. clamp() keeps it to one line at any
   viewport width without needing a JS resize-observer; the ellipsis is
   just a safety net for a name long enough to still overflow the clamped
   floor. */
.rn-mob-company-name{font-size:clamp(.68rem,3.6vw,.92rem);max-width:100%;overflow:hidden;text-overflow:ellipsis;color:var(--hdr-brand-color,inherit)}
/* Company name hidden from the TOP BAR once each header design's own
   mobile-menu breakpoint kicks in (matching where #rn-burger itself
   becomes visible for that design) -- deliberately overriding the Company
   Name Position setting at that width, since the drawer now shows the
   name instead (.rn-mob-company-name above). Each selector is scoped to
   that design's own navbar wrapper class so this can never also match the
   drawer's OWN .rn-hdr-company-name instance: the #rn-mob relocation fix
   (vsp-init.js) moves the whole drawer out to a direct child of <body> on
   load, so by the time these always-on media queries evaluate, the drawer
   copy is no longer a descendant of any of these navbar classes at all. */
@media(max-width:767px){.rn-classic-navbar .rn-hdr-company-name{display:none}}
@media(max-width:960px){.pl-break-960 .rn-hdr-company-name{display:none}}
@media(max-width:768px){.rn-fd-navbar .rn-hdr-company-name{display:none}}
@media(max-width:1023px){.rn-mu-navbar .rn-hdr-company-name{display:none}}
@media(max-width:1023px){.hdrgn-navbar .rn-hdr-company-name{display:none}}
/* Footer social icon size — each of the 4 footer templates hardcodes its
   own inline SVG width/height (13-20px, all different), so !important here
   is deliberate: it's the only way to override an inline style attribute
   without editing every one of those markup instances individually. Scoped
   to .ftr-shell (present on all 4 footer templates) so this never touches
   the header's own social icons. */
.ftr-shell a[aria-label="Facebook"] svg,
.ftr-shell a[aria-label="Instagram"] svg,
.ftr-shell a[aria-label="Twitter / X"] svg,
.ftr-shell a[aria-label="X / Twitter"] svg,
.ftr-shell a[aria-label="YouTube"] svg,
.ftr-shell a[aria-label="LinkedIn"] svg,
.ftr-shell a[aria-label="WhatsApp"] svg,
.ftr-shell a[aria-label="Pinterest"] svg{width:var(--ftr-soc-size,20px) !important;height:var(--ftr-soc-size,20px) !important}
/* Nav-link letter spacing — --hdr-nav-ls was computed but never consumed by
   any class in this header family. */
.rn-link,.rn-drop-btn,.v-cat-trigger,.pl-link,.pl-link-inv,.pl-drop-btn,.pl-drop-btn-inv,.nav-drop-btn,.rn-drop-item,.rn-mob-nav-item,.rn-mob-acc-hd{letter-spacing:var(--hdr-nav-ls,normal)}
/* ── rn-cat-drop: store-category-panel ──────────────────────────────────────
   All panel visual styles (position, bg, border, grid, card sizes) are inline
   in the Go render functions (catpanel_mega/cols/1col.go). CSS here only:
   1. show/hide via :hover / :focus-within
   2. card hover states (need :hover pseudo-class) */
.rn-cat-drop{position:relative}
/* button hidden while component is still loading (no rn-cat-panel in DOM yet) */
.rn-cat-drop:not(:has(.rn-cat-panel)) .nav-drop-btn{opacity:0;pointer-events:none}
.rn-cat-drop:has(.rn-cat-panel) .nav-drop-btn{opacity:1;transition:opacity .25s}
.nav-drop-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .85rem;background:transparent;border:none;color:color-mix(in srgb,var(--hdr-text,#111) 75%,transparent);font-size:var(--hdr-nav-fs,.875rem);font-weight:var(--hdr-nav-fw,600);cursor:pointer;border-radius:var(--border-radius,6px);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));white-space:nowrap;transition:background .15s,color .15s}
.rn-cat-drop:hover .nav-drop-btn,.rn-cat-drop:focus-within .nav-drop-btn{background:color-mix(in srgb,var(--primary-color,#465fff) 10%,transparent);color:var(--primary-text,var(--primary-color,#465fff))}
.rn-cat-drop .rn-cat-panel{opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s}
.rn-cat-drop:hover .rn-cat-panel,.rn-cat-drop:focus-within .rn-cat-panel{opacity:1;visibility:visible}
/* non-mega panels slide down slightly */
.rn-cat-drop .rn-cat-panel:not(.rn-cat-panel--mega){transform:translateY(-4px);transition:opacity .15s,visibility .15s,transform .15s}
.rn-cat-drop:hover .rn-cat-panel:not(.rn-cat-panel--mega),.rn-cat-drop:focus-within .rn-cat-panel:not(.rn-cat-panel--mega){transform:translateY(0)}
/* ── Reusable rn-* keyframes (usable beyond cat panel) ─────────────────────
   rn-shimmer : light streak sweeps L→R
   rn-ripple  : circle expands from center
   rn-bounce  : springy upward lift */
@keyframes rn-shimmer{from{transform:translateX(-100%)}to{transform:translateX(220%)}}
@keyframes rn-ripple{0%{width:0;height:0;opacity:.55}100%{width:260px;height:260px;opacity:0}}
@keyframes rn-bounce{0%{transform:translateY(0)}45%{transform:translateY(-5px)}70%{transform:translateY(-2px)}85%{transform:translateY(-4px)}100%{transform:translateY(-3px)}}

/* ── rn-cat-panel hover effects — driven by class on .rn-cat-panel ─────────
   Add class rn-cat-hover--X to the panel (via hover param in Dynamic Slots).
   Mega cards = .rn-cat-card--mega  Cols cards = .rn-cat-card--cols  1-col = .rn-cat-item
   Animated effects (shimmer/ripple/bounce) use @keyframes rn-* defined above. */

/* lift (mega default): card rises + border tint + soft shadow */
.rn-cat-panel.rn-cat-hover--lift .rn-cat-card--mega:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.1);border-color:color-mix(in srgb,var(--primary-color,#8b1c1c) 35%,#e8e0d5) !important;background:color-mix(in srgb,var(--primary-color,#8b1c1c) 5%,#fff) !important}
.rn-cat-panel.rn-cat-hover--lift .rn-cat-card--cols:hover{border-left-color:var(--primary-color,#8b1c1c) !important;background:color-mix(in srgb,var(--primary-color,#8b1c1c) 5%,#fff) !important}
.rn-cat-panel.rn-cat-hover--lift .rn-cat-item:hover{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 8%,#fff)}

/* glow: primary color ring */
.rn-cat-panel.rn-cat-hover--glow .rn-cat-card--mega:hover{box-shadow:0 0 0 2px var(--primary-color,#8b1c1c),0 4px 16px color-mix(in srgb,var(--primary-color,#8b1c1c) 22%,transparent);border-color:var(--primary-color,#8b1c1c) !important}
.rn-cat-panel.rn-cat-hover--glow .rn-cat-card--cols:hover{box-shadow:inset 0 0 0 1px var(--primary-color,#8b1c1c);border-left-color:var(--primary-color,#8b1c1c) !important}
.rn-cat-panel.rn-cat-hover--glow .rn-cat-item:hover{box-shadow:inset 2px 0 0 var(--primary-color,#8b1c1c);background:color-mix(in srgb,var(--primary-color,#8b1c1c) 6%,#fff)}

/* fill: primary color background + white text */
.rn-cat-panel.rn-cat-hover--fill .rn-cat-card--mega:hover,.rn-cat-panel.rn-cat-hover--fill .rn-cat-card--cols:hover{background:var(--primary-color,#8b1c1c) !important;color:#fff !important;border-color:var(--primary-color,#8b1c1c) !important}
.rn-cat-panel.rn-cat-hover--fill .rn-cat-item:hover{background:var(--primary-color,#8b1c1c) !important;color:#fff !important}

/* gradient: diagonal tint (mega) / tint fill (cols/1col) */
.rn-cat-panel.rn-cat-hover--gradient .rn-cat-card--mega:hover{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#8b1c1c) 14%,#fff) 0%,#fff 100%) !important;border-color:color-mix(in srgb,var(--primary-color,#8b1c1c) 40%,#e8e0d5) !important;transform:translateY(-1px)}
.rn-cat-panel.rn-cat-hover--gradient .rn-cat-card--cols:hover{background:linear-gradient(90deg,color-mix(in srgb,var(--primary-color,#8b1c1c) 10%,#fff) 0%,#fff 100%) !important;border-left-color:var(--primary-color,#8b1c1c) !important}
.rn-cat-panel.rn-cat-hover--gradient .rn-cat-item:hover{background:linear-gradient(90deg,color-mix(in srgb,var(--primary-color,#8b1c1c) 10%,#fff) 0%,#fff 100%)}

/* scale: grows slightly */
.rn-cat-panel.rn-cat-hover--scale .rn-cat-card--mega:hover{transform:scale(1.04);box-shadow:0 4px 14px rgba(0,0,0,.1);border-color:color-mix(in srgb,var(--primary-color,#8b1c1c) 25%,#e8e0d5) !important}
.rn-cat-panel.rn-cat-hover--scale .rn-cat-card--cols:hover,.rn-cat-panel.rn-cat-hover--scale .rn-cat-item:hover{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 8%,#fff) !important}

/* border: left-bar (cols default) / border tint (mega) / inset-left (1col) */
.rn-cat-panel.rn-cat-hover--border .rn-cat-card--mega:hover{border-color:var(--primary-color,#8b1c1c) !important;background:color-mix(in srgb,var(--primary-color,#8b1c1c) 4%,#fff) !important}
.rn-cat-panel.rn-cat-hover--border .rn-cat-card--cols:hover{border-left-color:var(--primary-color,#8b1c1c) !important;background:color-mix(in srgb,var(--primary-color,#8b1c1c) 5%,#fff) !important}
.rn-cat-panel.rn-cat-hover--border .rn-cat-item:hover{border-left:2px solid var(--primary-color,#8b1c1c);padding-left:calc(.75rem - 2px);background:color-mix(in srgb,var(--primary-color,#8b1c1c) 5%,#fff)}

/* bg: subtle tint fill (1col default) */
.rn-cat-panel.rn-cat-hover--bg .rn-cat-card--mega:hover{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 6%,#fff) !important;border-color:color-mix(in srgb,var(--primary-color,#8b1c1c) 20%,#e8e0d5) !important}
.rn-cat-panel.rn-cat-hover--bg .rn-cat-card--cols:hover{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 8%,#fff) !important;border-left-color:color-mix(in srgb,var(--primary-color,#8b1c1c) 50%,transparent) !important}
.rn-cat-panel.rn-cat-hover--bg .rn-cat-item:hover{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 8%,#fff)}

/* ── Shared base: effects that use ::after pseudo-element ───────────────────
   shimmer + ripple need overflow:hidden to clip the animation inside the card.
   arrow does NOT clip — the chevron slides in from outside, so no overflow:hidden. */
.rn-cat-hover--shimmer .rn-cat-card,.rn-cat-hover--shimmer .rn-cat-item,
.rn-cat-hover--ripple .rn-cat-card,.rn-cat-hover--ripple .rn-cat-item{position:relative;overflow:hidden}
.rn-cat-hover--arrow .rn-cat-card,.rn-cat-hover--arrow .rn-cat-item{position:relative}
/* All ::after pseudo-elements must never intercept pointer events */
.rn-cat-hover--shimmer .rn-cat-card::after,.rn-cat-hover--shimmer .rn-cat-item::after,
.rn-cat-hover--ripple .rn-cat-card::after,.rn-cat-hover--ripple .rn-cat-item::after,
.rn-cat-hover--arrow .rn-cat-card::after,.rn-cat-hover--arrow .rn-cat-item::after{pointer-events:none}

/* shimmer: light streak sweeps L→R (uses @keyframes rn-shimmer) */
.rn-cat-hover--shimmer .rn-cat-card::after,.rn-cat-hover--shimmer .rn-cat-item::after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.55) 50%,transparent 65%);transform:translateX(-100%)}
.rn-cat-hover--shimmer .rn-cat-card:hover{border-color:color-mix(in srgb,var(--primary-color,#8b1c1c) 30%,#e8e0d5) !important;background:color-mix(in srgb,var(--primary-color,#8b1c1c) 4%,#fff) !important}
.rn-cat-hover--shimmer .rn-cat-item:hover{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 6%,#fff)}
.rn-cat-hover--shimmer .rn-cat-card:hover::after,.rn-cat-hover--shimmer .rn-cat-item:hover::after{animation:rn-shimmer .45s ease-out forwards}

/* ripple: circle expands from center (uses @keyframes rn-ripple) */
.rn-cat-hover--ripple .rn-cat-card::after,.rn-cat-hover--ripple .rn-cat-item::after{content:'';position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:color-mix(in srgb,var(--primary-color,#8b1c1c) 22%,transparent);transform:translate(-50%,-50%)}
.rn-cat-hover--ripple .rn-cat-card--cols:hover{border-left-color:var(--primary-color,#8b1c1c) !important}
.rn-cat-hover--ripple .rn-cat-card:hover::after,.rn-cat-hover--ripple .rn-cat-item:hover::after{animation:rn-ripple .5s ease-out forwards}

/* bounce: springy upward lift (uses @keyframes rn-bounce) */
.rn-cat-hover--bounce .rn-cat-card--mega:hover{animation:rn-bounce .35s ease forwards;box-shadow:0 8px 22px rgba(0,0,0,.12);border-color:color-mix(in srgb,var(--primary-color,#8b1c1c) 30%,#e8e0d5) !important}
.rn-cat-hover--bounce .rn-cat-card--cols:hover{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 6%,#fff) !important;border-left-color:var(--primary-color,#8b1c1c) !important}
.rn-cat-hover--bounce .rn-cat-item:hover{animation:rn-bounce .35s ease forwards;background:color-mix(in srgb,var(--primary-color,#8b1c1c) 6%,#fff)}

/* bdleft: inset left bar via box-shadow + text nudges right via translateX */
.rn-cat-panel.rn-cat-hover--bdleft .rn-cat-card--mega:hover{box-shadow:inset 3px 0 0 var(--primary-color,#8b1c1c),0 4px 14px rgba(0,0,0,.08);transform:translateX(3px);background:color-mix(in srgb,var(--primary-color,#8b1c1c) 4%,#fff) !important}
.rn-cat-panel.rn-cat-hover--bdleft .rn-cat-card--cols:hover{box-shadow:inset 3px 0 0 var(--primary-color,#8b1c1c);background:color-mix(in srgb,var(--primary-color,#8b1c1c) 5%,#fff) !important}
.rn-cat-panel.rn-cat-hover--bdleft .rn-cat-item:hover{box-shadow:inset 3px 0 0 var(--primary-color,#8b1c1c);transform:translateX(3px);background:color-mix(in srgb,var(--primary-color,#8b1c1c) 5%,#fff)}

/* arrow: › chevron slides in at right edge on hover */
.rn-cat-hover--arrow .rn-cat-card::after,.rn-cat-hover--arrow .rn-cat-item::after{content:'›';position:absolute;right:.55rem;top:50%;transform:translateY(-50%) translateX(6px);opacity:0;color:var(--primary-color,#8b1c1c);font-size:1.05rem;font-weight:700;transition:opacity .15s,transform .15s}
.rn-cat-hover--arrow .rn-cat-card:hover,.rn-cat-hover--arrow .rn-cat-item:hover{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 5%,#fff) !important;padding-right:1.6rem !important}
.rn-cat-hover--arrow .rn-cat-card:hover::after,.rn-cat-hover--arrow .rn-cat-item:hover::after{opacity:1;transform:translateY(-50%) translateX(0)}

/* ── rn-cat-panel--tiles: gradient card hover ───────────────────────────────
   --tile-grad is set per-card inline (unique colour per category via name hash).
   Normal state: plain border only. Hover: gradient fades in via the CSS var. */
.rn-cat-panel--tiles .rn-cat-card--tile:hover{background:var(--tile-grad) !important;border-color:color-mix(in srgb,var(--primary-color,#8b1c1c) 30%,#e8e0d5) !important;transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.1)}

/* ── rn-cat-panel--strip: scrollbar hidden by default, appears on hover ───── */
.rn-cat-panel--strip{scrollbar-width:none}
.rn-cat-panel--strip::-webkit-scrollbar{height:0}
.rn-cat-panel--strip:hover{scrollbar-width:thin;scrollbar-color:var(--primary-color,#8b1c1c) transparent}
.rn-cat-panel--strip:hover::-webkit-scrollbar{height:3px}
.rn-cat-panel--strip:hover::-webkit-scrollbar-track{background:transparent}
.rn-cat-panel--strip:hover::-webkit-scrollbar-thumb{background:var(--primary-color,#8b1c1c);border-radius:2px}

/* nudge: whole card shifts right, border tint confirms hover */
.rn-cat-panel.rn-cat-hover--nudge .rn-cat-card--mega:hover{transform:translateX(4px);background:color-mix(in srgb,var(--primary-color,#8b1c1c) 5%,#fff) !important;border-color:color-mix(in srgb,var(--primary-color,#8b1c1c) 25%,#e8e0d5) !important}
.rn-cat-panel.rn-cat-hover--nudge .rn-cat-card--cols:hover{transform:translateX(4px);background:color-mix(in srgb,var(--primary-color,#8b1c1c) 5%,#fff) !important;border-left-color:var(--primary-color,#8b1c1c) !important}
.rn-cat-panel.rn-cat-hover--nudge .rn-cat-item:hover{transform:translateX(4px);background:color-mix(in srgb,var(--primary-color,#8b1c1c) 6%,#fff)}

/* PL mega — manual button triggers pl-cat-panel; component's v-catpanel runs inside it */
.pl-drop-cat{position:static}
/* panel: height:0 + overflow:hidden when closed = zero hit area; full viewport width */
.pl-cat-panel{position:absolute;top:100%;left:50%;transform:translateX(-50%);width:100vw;background:#fff;border-top:2px solid var(--primary-color,#8b1c1c);box-shadow:0 8px 32px rgba(0,0,0,.13);z-index:60;max-height:0;overflow:hidden;opacity:0;pointer-events:none;transition:max-height .38s cubic-bezier(.16,1,.3,1),opacity .22s ease}
.rn-drop:hover .pl-cat-panel,.rn-drop:focus-within .pl-cat-panel{max-height:900px;opacity:1;pointer-events:auto}
.pl-cat-panel .v-cat-trigger{display:none !important}
/* v-nav__links: force visible/static for 2-col, 3-col designs inside pl-cat-panel */
.pl-cat-panel .v-nav__links{display:block !important;position:static !important;opacity:1 !important;visibility:visible !important;transform:none !important;max-width:none !important;min-width:0 !important;width:100% !important;background:transparent !important;box-shadow:none !important;border:none !important;border-radius:0 !important;padding:0 !important}
.pl-cat-panel .v-nav__links>ul{display:block !important;list-style:none !important;padding:0 !important;margin:0 auto !important}
.pl-cat-panel .v-nav__links>ul>li{position:static !important}
/* [FIX 1] centered inner wrapper with proper side padding */
.pl-cat-inner{max-width:1200px;margin:0 auto;padding:18px 24px 20px;box-sizing:border-box}
.pl-cat-panel .v-catpanel{position:static !important;opacity:1 !important;visibility:visible !important;transform:none !important;box-shadow:none !important;border:none !important;border-radius:0 !important;padding:0 !important;background:transparent !important;max-width:none !important;min-width:0 !important;width:100% !important;box-sizing:border-box !important}
/* [FIX 3] column grids inside pl-cat-panel — ALSO scoped to .rn-drop
   (unprefixed) so the same cols/gap/border/rounded/cardh/shadow params work
   when the category comp renders its own trigger+panel directly inside a
   plain .rn-drop wrapper, with no separate .pl-cat-panel hover-panel
   present (see project memory: category button style-preset work — the
   comp's built-in .v-cat-trigger is the intended trigger everywhere now,
   and .pl-cat-panel .v-cat-trigger{display:none} below only applies to the
   OLDER custom-button + .pl-cat-panel pattern, not this one). */
/* .rn-drop's .v-catpanel stays position:absolute (unlike .pl-cat-panel's,
   which the rule above switches to static) with no width of its own, so it
   shrink-wraps to content. .v-catpanel--mega then saying "width:100%" is a
   circular reference against that shrink-wrapped parent — browsers resolve
   it by collapsing to the smallest content that can determine a size (just
   the icons, since flex text has min-width:0 and gives up first). Giving
   the panel itself a real width breaks the cycle without touching its
   position/opacity/visibility (which the hover-reveal mechanism owns). */
.rn-drop .v-catpanel{width:min(96vw,900px)}
.pl-cat-panel .v-catpanel--mega,.rn-drop .v-catpanel--mega{width:100% !important;grid-template-columns:repeat(var(--cat-cols,6),1fr) !important;gap:var(--cat-gap,5px) !important;align-content:start !important}
.pl-cat-panel .v-catpanel--cols2,.rn-drop .v-catpanel--cols2{max-width:700px !important;margin:1rem auto !important;grid-template-columns:repeat(2,minmax(140px,1fr)) !important;gap:var(--cat-gap,6px) !important;align-content:start !important}
.pl-cat-panel .v-catpanel--cols3,.rn-drop .v-catpanel--cols3{max-width:960px !important;margin:1rem auto !important;grid-template-columns:repeat(3,minmax(130px,1fr)) !important;gap:var(--cat-gap,6px) !important;align-content:start !important}
/* each category as a card */
.pl-cat-panel .v-catpanel__group,.rn-drop .v-catpanel__group{position:relative;border:var(--cat-border,1px solid #e8e0d5);border-radius:var(--cat-rounded,10px);background:var(--cat-bg,#fff);box-shadow:var(--cat-shadow,none);transition:border-color .22s,background .22s,box-shadow .28s,transform .22s;overflow:hidden;height:var(--cat-cardh,fit-content);align-self:start;padding:5px 0}
.pl-cat-panel .v-catpanel__group::before,.rn-drop .v-catpanel__group::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--cat-item-bc,var(--primary-color,#8b1c1c));transform:scaleY(0);transform-origin:center;transition:transform .22s cubic-bezier(.16,1,.3,1);border-radius:var(--cat-rounded,10px) 0 0 var(--cat-rounded,10px)}
.pl-cat-panel .v-catpanel__group:hover,.rn-drop .v-catpanel__group:hover{border-color:var(--cat-item-bc,color-mix(in srgb,var(--primary-color,#8b1c1c) 35%,#e8e0d5));background:var(--cat-item-hoverbg,linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#8b1c1c) 5%,#fff) 0%,#fff 60%));box-shadow:var(--cat-shadow,0 6px 18px rgba(139,28,28,.12),0 2px 6px rgba(0,0,0,.06));transform:translateY(-2px)}
.pl-cat-panel .v-catpanel__group:hover::before{transform:scaleY(1)}
/* [FIX 2] link — title case, readable size, no uppercase */
/* The "menu" (1-column fly-out) design renders items as <li class="v-catpanel__group">
   in a plain full-width list — the grid designs (mega/cols-2/cols-3) use a <div> for the
   same class inside a fixed-size grid cell. Tag selector keeps this scoped to the list
   variant only: a fixed cardh height + no padding (right for a small grid tile) makes a
   full-width row hug the text with no breathing room. Auto height + real padding on the
   link itself gives itemstyle presets (esp. pill-chips, whose --cat-rounded:999px needs
   padding to read as a stadium shape, not just rounded text) something to actually shape. */
.v-nav__cat li.v-catpanel__group{height:auto;overflow:hidden;margin-bottom:.3rem}
.v-nav__cat li.v-catpanel__group:last-child{margin-bottom:0}
.v-nav__cat li.v-catpanel__group>a{display:block;padding:.4rem .85rem;font-size:.85rem;line-height:1.3;text-decoration:none;color:var(--cat-item-color,inherit)}
.v-nav__cat li.v-catpanel__group:hover>a{color:var(--cat-item-hovercolor,var(--cat-item-color,inherit))}
/* itemstyle: interaction-driven presets — set via catItemClass() in category.go
   as a class on the .v-nav__cat wrapper, resolved against .v-catpanel__group
   descendants (works for both <li> list rows and <div> grid tiles). Each
   preset first neutralizes the default box look (border/radius/bg/shadow/the
   left accent ::before), then adds its own thing. */
.v-nav__cat.cat-style-list-row .v-catpanel__group,
.v-nav__cat.cat-style-underline-sweep .v-catpanel__group,
.v-nav__cat.cat-style-hover-bold .v-catpanel__group,
.v-nav__cat.cat-style-icon-lead .v-catpanel__group,
.v-nav__cat.cat-style-invert-full .v-catpanel__group{border:none;border-radius:0;background:transparent;box-shadow:none}
.v-nav__cat.cat-style-list-row .v-catpanel__group::before,
.v-nav__cat.cat-style-underline-sweep .v-catpanel__group::before,
.v-nav__cat.cat-style-hover-bold .v-catpanel__group::before,
.v-nav__cat.cat-style-icon-lead .v-catpanel__group::before,
.v-nav__cat.cat-style-invert-full .v-catpanel__group::before{display:none}
.v-nav__cat.cat-style-list-row .v-catpanel__group:hover,
.v-nav__cat.cat-style-underline-sweep .v-catpanel__group:hover,
.v-nav__cat.cat-style-hover-bold .v-catpanel__group:hover,
.v-nav__cat.cat-style-icon-lead .v-catpanel__group:hover,
.v-nav__cat.cat-style-invert-full .v-catpanel__group:hover{transform:none;border-color:transparent;background:var(--cat-item-hoverbg,transparent);box-shadow:none}
/* itemborder/itembordercolor override knobs — apply on top of ANY itemstyle,
   including Default/pill-chips, so border width/color are always tunable
   independent of the named preset. */
.v-nav__cat .v-catpanel__group{border-width:var(--cat-item-bw,1px);border-color:var(--cat-item-bc,#e8e0d5)}

/* 1. List row — full-width, divider only (replaces the old "outline card") */
.v-nav__cat.cat-style-list-row .v-catpanel__group{border-bottom:var(--cat-item-bw,1px) solid var(--cat-item-bc,var(--border-color,#e5e7eb));margin-bottom:0;border-radius:0}
.v-nav__cat.cat-style-list-row .v-catpanel__group:last-child{border-bottom:none}

/* 2. Underline sweep — a 1px line animates left→right under the label on hover, no fill.
   The line is an accent, not plain text — it reads off itembordercolor
   (--cat-item-bc), same as the left accent bar and list-row's divider, so
   there's one consistent "accent color" input across every itemstyle. */
.v-nav__cat.cat-style-underline-sweep .v-catpanel__group>a{position:relative}
.v-nav__cat.cat-style-underline-sweep .v-catpanel__group>a::after{content:'';position:absolute;left:.85rem;right:.85rem;bottom:.15rem;height:1px;background:var(--cat-item-bc,var(--primary-color,#8b1c1c));transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.16,1,.3,1)}
.v-nav__cat.cat-style-underline-sweep .v-catpanel__group:hover>a::after{transform:scaleX(1)}

/* 3. Hover bold — plain text, hover deepens to the hover-text color + semibold, no fill */
.v-nav__cat.cat-style-hover-bold .v-catpanel__group>a{transition:color .18s,font-weight .18s}
.v-nav__cat.cat-style-hover-bold .v-catpanel__group:hover>a{color:var(--cat-item-hovercolor,var(--primary-color,#8b1c1c));font-weight:600}

/* 4. Icon lead — a generic mark precedes every label, colored from the same
   accent (--cat-item-bc) as the underline/left-bar. Default shape is a dot;
   catItemIconClasses (itemicon param) swaps in an alternate CSS-drawn shape —
   see the .cat-icon-* rules below. */
.v-nav__cat.cat-style-icon-lead .v-catpanel__group>a{display:flex;align-items:center;gap:.55rem}
.v-nav__cat.cat-style-icon-lead .v-catpanel__group>a::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--cat-item-bc,var(--primary-color,#8b1c1c));flex-shrink:0;opacity:.55;transition:opacity .18s,transform .18s}
.v-nav__cat.cat-style-icon-lead .v-catpanel__group:hover>a::before{opacity:1;transform:scale(1.3)}
.v-nav__cat.cat-style-icon-lead.cat-icon-chevron .v-catpanel__group>a::before{width:5px;height:5px;border-radius:0;background:none;border-top:2px solid var(--cat-item-bc,var(--primary-color,#8b1c1c));border-right:2px solid var(--cat-item-bc,var(--primary-color,#8b1c1c));transform:rotate(45deg)}
.v-nav__cat.cat-style-icon-lead.cat-icon-chevron .v-catpanel__group:hover>a::before{transform:rotate(45deg) scale(1.3)}
.v-nav__cat.cat-style-icon-lead.cat-icon-arrow .v-catpanel__group>a::before{width:10px;height:8px;border-radius:0;background:var(--cat-item-bc,var(--primary-color,#8b1c1c));clip-path:polygon(0 30%,60% 30%,60% 0,100% 50%,60% 100%,60% 70%,0 70%)}
.v-nav__cat.cat-style-icon-lead.cat-icon-star .v-catpanel__group>a::before{width:10px;height:10px;border-radius:0;background:var(--cat-item-bc,var(--primary-color,#8b1c1c));clip-path:polygon(50% 0,63% 38%,100% 38%,69% 59%,82% 100%,50% 76%,18% 100%,31% 59%,0 38%,37% 38%)}
.v-nav__cat.cat-style-icon-lead.cat-icon-diamond .v-catpanel__group>a::before{width:7px;height:7px;border-radius:0;background:var(--cat-item-bc,var(--primary-color,#8b1c1c));transform:rotate(45deg)}
.v-nav__cat.cat-style-icon-lead.cat-icon-diamond .v-catpanel__group:hover>a::before{transform:rotate(45deg) scale(1.3)}

/* 5. Invert on hover — edge-to-edge row, square corners, hover flips bg/text + reveals a trailing chevron.
   The flip fill reads off itemhoverbg (--cat-item-hoverbg) and the flipped
   text off itemhovertextcolor (--cat-item-hovercolor) — same two inputs
   every other itemstyle's hover state uses. */
.v-nav__cat.cat-style-invert-full .v-catpanel__group{margin-bottom:0;border-radius:0 !important}
.v-nav__cat.cat-style-invert-full ul ul{padding:.35rem 0}
.v-nav__cat.cat-style-invert-full .v-catpanel__group>a{display:flex;align-items:center;justify-content:space-between;padding-left:1.1rem;padding-right:1.1rem;border-radius:0;transition:background .18s,color .18s}
.v-nav__cat.cat-style-invert-full .v-catpanel__group>a::after{content:'';width:6px;height:6px;border-top:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(45deg) translateX(-3px);opacity:0;transition:opacity .18s,transform .18s;margin-left:.5rem;flex-shrink:0}
.v-nav__cat.cat-style-invert-full .v-catpanel__group:hover>a{background:var(--cat-item-hoverbg,var(--primary-color,#8b1c1c));color:var(--cat-item-hovercolor,var(--text-inverse,#fff));border-radius:0}
.v-nav__cat.cat-style-invert-full .v-catpanel__group:hover>a::after{opacity:1;transform:rotate(45deg) translateX(0)}

/* v-cat-genericon/v-cat-gdesc/v-cat-glabel/v-cat-gtxt are ALWAYS emitted by
   category.go (both catPanelHTML and catListHTML) regardless of design or
   itemstyle, so the same markup works for every design uniformly — hidden
   by default, only "Icon + description" and "Icon + label" turn them on.
   Two different underlying markups (catPanelHTML's .v-catpanel__meta>.v-
   catpanel__txt for mega/cols-2/cols-3, catListHTML's .v-cat-glabel>.v-cat-
   gtxt for the 1-column menu) both get covered here. */
.v-cat-genericon,.v-cat-gdesc{display:none}
.v-nav__cat.cat-style-icon-desc .v-catpanel__group,
.v-nav__cat.cat-style-icon-plain .v-catpanel__group{border:none;border-radius:0;background:#ffffff;box-shadow:none}
.v-nav__cat.cat-style-icon-desc .v-catpanel__group:last-child,
.v-nav__cat.cat-style-icon-plain .v-catpanel__group:last-child{border-bottom:none}
.v-nav__cat.cat-style-icon-desc .v-catpanel__group::before,
.v-nav__cat.cat-style-icon-plain .v-catpanel__group::before{display:none}
.v-nav__cat.cat-style-icon-desc .v-catpanel__group>a,
.v-nav__cat.cat-style-icon-plain .v-catpanel__group>a{display:flex!important;align-items:flex-start;gap:.85rem;padding:.45rem .3rem}
.v-nav__cat.cat-style-icon-desc .v-catpanel__group .v-catpanel__arr,
.v-nav__cat.cat-style-icon-plain .v-catpanel__group .v-catpanel__arr{display:none}
.v-nav__cat.cat-style-icon-desc .v-cat-genericon,
.v-nav__cat.cat-style-icon-plain .v-cat-genericon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;margin-top:.1rem;color:currentColor;opacity:.4}
.v-nav__cat.cat-style-icon-desc .v-cat-genericon svg,
.v-nav__cat.cat-style-icon-plain .v-cat-genericon svg{width:100%;height:100%}
/* Icon + description — per direct feedback the description line ("Browse
   Collection") is removed; kept the class name/CSS structure (v-cat-gdesc
   still exists in the markup) in case it's wanted back later, just hidden
   here same as the global default. Bold title, single line, truncated with
   an ellipsis instead of wrapping to a second line — a 2-line label was
   what broke equal row heights across the grid to begin with. */
.v-nav__cat.cat-style-icon-desc .v-catpanel__meta,
.v-nav__cat.cat-style-icon-desc .v-cat-glabel{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.v-nav__cat.cat-style-icon-desc .v-catpanel__txt,
.v-nav__cat.cat-style-icon-desc .v-cat-gtxt,
.v-nav__cat.cat-style-icon-plain .v-catpanel__txt,
.v-nav__cat.cat-style-icon-plain .v-cat-gtxt{font-weight:700;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis;display:block;min-width:0;-webkit-line-clamp:unset;max-width:100%}
.v-nav__cat.cat-style-icon-desc .v-cat-gdesc{display:none}
/* Icon + label — no description, tighter row, single line (image 2) */
.v-nav__cat.cat-style-icon-plain .v-catpanel__group>a{align-items:center;padding:.6rem .3rem}
.v-nav__cat.cat-style-icon-plain .v-catpanel__meta,
.v-nav__cat.cat-style-icon-plain .v-cat-glabel{display:flex;min-width:0}
.v-nav__cat.cat-style-icon-plain .v-catpanel__cnt{display:none}
/* Icon badge — creative variant off icon-plain's "no card" shape: the icon
   sits in a filled rounded-square chip instead of bare, and the whole row
   gets a soft background highlight on hover (icon-plain has neither). */
.v-nav__cat.cat-style-icon-badge .v-catpanel__group{border:none;border-radius:8px;background:transparent;box-shadow:none;transition:background .18s}
.v-nav__cat.cat-style-icon-badge .v-catpanel__group:hover{background:color-mix(in srgb,var(--cat-item-bc,var(--primary-color,#8b1c1c)) 8%,transparent)}
.v-nav__cat.cat-style-icon-badge .v-catpanel__group::before{display:none}
.v-nav__cat.cat-style-icon-badge .v-catpanel__group>a{display:flex!important;align-items:center;gap:.7rem;padding:.5rem .5rem}
.v-nav__cat.cat-style-icon-badge .v-catpanel__group .v-catpanel__arr{display:none}
.v-nav__cat.cat-style-icon-badge .v-cat-genericon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:30px;height:30px;border-radius:8px;background:color-mix(in srgb,var(--cat-item-bc,var(--primary-color,#8b1c1c)) 14%,transparent);color:var(--cat-item-bc,var(--primary-color,#8b1c1c));opacity:1;transition:transform .18s,background .18s}
.v-nav__cat.cat-style-icon-badge .v-cat-genericon svg{width:60%;height:60%}
.v-nav__cat.cat-style-icon-badge .v-catpanel__group:hover .v-cat-genericon{transform:scale(1.08);background:color-mix(in srgb,var(--cat-item-bc,var(--primary-color,#8b1c1c)) 22%,transparent)}
.v-nav__cat.cat-style-icon-badge .v-catpanel__meta,
.v-nav__cat.cat-style-icon-badge .v-cat-glabel{display:flex;min-width:0}
.v-nav__cat.cat-style-icon-badge .v-catpanel__txt,
.v-nav__cat.cat-style-icon-badge .v-cat-gtxt{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;min-width:0;-webkit-line-clamp:unset;max-width:100%}
.v-nav__cat.cat-style-icon-badge .v-catpanel__cnt{display:none}
/* Grid designs (mega/cols-2/cols-3) — same itemtextcolor/itemhovertextcolor
   inputs apply to .v-catpanel__h/.v-catpanel__l, the anchors those designs
   use instead of a plain <a>. Kept as the last declaration in each rule (not
   !important) so it still overrides the hardcoded fallback color that
   precedes it in the same declaration block. */
.pl-cat-panel .v-catpanel__h,.rn-drop .v-catpanel__h{display:flex !important;align-items:center !important;gap:.5rem !important;width:100% !important;color:var(--text-strong,#111827) !important;white-space:normal !important;transform:none !important;transition:color .18s !important;padding:.35rem .65rem .35rem .8rem !important;font-size:var(--hdr-nav-fs,.82rem) !important;font-weight:var(--hdr-nav-fw,400) !important;letter-spacing:.01em;text-transform:none;box-sizing:border-box !important;font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif))) !important}
.pl-cat-panel .v-catpanel__h,.pl-cat-panel .v-catpanel__l,.rn-drop .v-catpanel__h,.rn-drop .v-catpanel__l{color:var(--cat-item-color,var(--text-strong,#111827)) !important}
.pl-cat-panel .v-catpanel__h:hover{color:var(--primary-color,#465fff) !important;transform:none !important}
.pl-cat-panel .v-catpanel__h:hover,.pl-cat-panel .v-catpanel__l:hover,.rn-drop .v-catpanel__h:hover,.rn-drop .v-catpanel__l:hover{color:var(--cat-item-hovercolor,var(--primary-color,#465fff)) !important}
/* name: 1-line clamp, applies uniformly to menu/cols-2/cols-3/mega */
.pl-cat-panel .v-catpanel__meta,.rn-drop .v-catpanel__meta{display:flex;flex-direction:column;flex:1;min-width:0}
.pl-cat-panel .v-catpanel__txt,.rn-drop .v-catpanel__txt{display:-webkit-box !important;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal !important;line-height:1.25}
.pl-cat-panel .v-catpanel__txt::after,.rn-drop .v-catpanel__txt::after{display:none !important}
/* [FIX 5] count as subtle hierarchy marker */
.pl-cat-panel .v-catpanel__cnt{display:block;font-size:.68rem;color:var(--text-muted,#9ca3af);font-weight:400;margin-top:.1rem}
/* arrow: right-aligned, fades in on card hover */
.pl-cat-panel .v-catpanel__arr{display:inline-block !important;width:.55em !important;height:.55em !important;opacity:0 !important;flex-shrink:0 !important;margin-left:auto !important;padding-left:.15rem !important;transform:translateX(-6px) !important;transition:opacity .2s,transform .22s cubic-bezier(.16,1,.3,1) !important}
.pl-cat-panel .v-catpanel__group:hover .v-catpanel__arr{opacity:.6 !important;transform:translateX(0) !important}
/* hide L2, hide icon */
.pl-cat-panel .v-catpanel__l{display:none !important}
.pl-cat-panel .pl-cat-icon{display:none !important}
/* [FIX 4] View All — centered, full-width feel */
.pl-cat-viewall{border-top:1px solid #f0ebe5;margin-top:14px;padding:12px 0 0;display:flex;justify-content:center}
.pl-cat-viewall__link{display:inline-flex;align-items:center;gap:.65rem;padding:.55rem 1.4rem;border:1px solid #e8e0d5;border-radius:24px;text-decoration:none;color:var(--text-strong,#111827);font-size:.8rem;font-weight:600;background:#fff;transition:border-color .18s,color .18s,background .18s,box-shadow .18s}
.pl-cat-viewall__link:hover{border-color:var(--primary-color,#8b1c1c);color:var(--primary-color,#8b1c1c);background:color-mix(in srgb,var(--primary-color,#8b1c1c) 4%,#fff);box-shadow:0 3px 12px rgba(139,28,28,.12)}
.pl-cat-viewall__link svg{color:var(--primary-color,#8b1c1c);flex-shrink:0}
.pl-cat-viewall__sub{display:block;font-size:.68rem;font-weight:400;color:var(--text-muted,#9ca3af);margin-top:.05rem}
.pl-cat-viewall__link .v-catpanel__arr{display:inline-block !important;opacity:.45 !important;margin-left:.2rem !important;transform:none !important;transition:none !important}
html:has(#rn-mob:not([hidden])),body:has(#rn-mob:not([hidden])){overflow:hidden;height:100%}
/* Footer's Categories bottom sheet (sp-footer-template.html) — same
   background-scroll-lock convention as #rn-mob's mobile nav overlay
   above, so the page can't scroll behind the sheet or its backdrop while
   either is open. */
html:has(#ftr-cat-sheet:not([hidden])),body:has(#ftr-cat-sheet:not([hidden])){overflow:hidden;height:100%}
.rn-hdr-logo{display:none}
@media(min-width:1024px){.rn-hdr-logo{display:flex;align-items:center;gap:.6rem;text-decoration:none}}
.rn-hdr-logo-side{display:none}
@media(max-width:1023px){.rn-hdr-logo-side{display:flex;align-items:center;text-decoration:none}}
#rn-mob{position:fixed;inset:0;background:transparent;overflow:visible;z-index:500;max-width:none;visibility:visible;transition:visibility 0s}
#rn-mob[hidden]{display:block !important;visibility:hidden;pointer-events:none;transition:visibility 0s .32s}
#rn-mob[hidden] .rn-mob-panel{transform:translateX(-110%)}
#rn-mob[hidden] .rn-mob-bd{opacity:0;pointer-events:none}
.rn-mob-panel{position:absolute;top:0;left:0;bottom:0;width:400px;max-width:100vw;overflow-y:auto;z-index:1;display:flex;flex-direction:column;background:var(--hdr-bg,#fff);color:var(--hdr-text,#1e1e1e);font-family:inherit;transform:translateX(0);transition:transform .32s cubic-bezier(.4,0,.2,1);will-change:transform}
.rn-mob-bd{position:absolute;inset:0;background:rgba(0,0,0,.55);cursor:pointer;opacity:1;transition:opacity .32s ease}
.rn-mob-panel .rn-mob-nav-item{display:flex;align-items:center;gap:.55rem;padding:.8rem 1.1rem;text-decoration:none;font-size:var(--hdr-nav-fs,var(--fs-sm,.875rem));font-weight:var(--hdr-nav-fw,600);border-bottom:1px solid var(--hdr-border,#e5e7eb);color:var(--hdr-text,#1e1e1e);width:100%;box-sizing:border-box}
.rn-mob-panel .rn-mob-nav-item:hover{color:var(--primary-color)}
.rn-mob-panel .rn-mob-acc-hd{width:100%;display:flex;align-items:center;justify-content:space-between;padding:.8rem 1.1rem;background:transparent;border:none;border-bottom:1px solid var(--hdr-border,#e5e7eb);cursor:pointer;font-size:var(--hdr-nav-fs,var(--fs-sm,.875rem));font-weight:var(--hdr-nav-fw,600);color:var(--hdr-text,#1e1e1e);font-family:var(--hdr-nav-font,var(--heading-font,var(--font-family,system-ui,sans-serif)));text-align:left}
.rn-mob-acc-hd[aria-expanded="true"] .v-accordion__chevron{transform:rotate(180deg)}
.rn-mob-panel .rn-mob-acc-sub,.gahd-mob-panel .rn-mob-acc-sub{display:block;padding:.6rem 1.1rem .6rem 2.1rem;text-decoration:none;font-size:var(--hdr-nav-fs,var(--fs-sm,.875rem));font-weight:400;color:var(--hdr-text,#1e1e1e);border-bottom:1px solid var(--hdr-border,#e5e7eb);opacity:.8}
.rn-mob-panel .rn-mob-acc-sub:hover,.gahd-mob-panel .rn-mob-acc-sub:hover{opacity:1;color:var(--primary-color)}
.v-cat-mob-list{display:flex;flex-direction:column}
/* Mobile category image-tile grid (store-category-menu, design=mob-grid).
   Unstyled position/layout of its own caller (same contract as
   .v-cat-mob-list) — a 3-column grid of square rounded tiles, real photo
   when catNode.Img is set, else a colored initial-letter tile so nothing
   ever shows a broken-image icon. */
/* minmax(0,1fr): equal columns no matter how long a name is (plain 1fr let long
   names widen a column and push the last one off the edge) */
.v-catgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;padding:1rem 1.1rem}
@media(min-width:375px){.v-catgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:500px){.v-catgrid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(min-width:640px){.v-catgrid{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(min-width:768px){.v-catgrid{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media(min-width:980px){.v-catgrid{grid-template-columns:repeat(7,minmax(0,1fr))}}
@media(min-width:1200px){.v-catgrid{grid-template-columns:repeat(8,minmax(0,1fr))}}
.v-catgrid__head{padding:1.1rem 1.1rem 0}
.v-catgrid__eyebrow{margin:0;font-size:.8rem;letter-spacing:.04em;color:var(--mb-accent,var(--text-muted,#6b7280));font-weight:600}
.v-catgrid__title{margin:.1rem 0 .8rem;font-size:1.55rem;line-height:1.15;font-weight:300;color:var(--mb-sheet-heading,var(--text-strong,#111827))}
.v-catgrid__title strong{font-weight:800;color:var(--mb-accent,inherit)}
.v-catgrid__all{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.15rem;border-radius:999px;background:var(--mb-accent,var(--text-strong,#111827));color:var(--text-inverse,#fff);font-size:.82rem;font-weight:600;text-decoration:none}
.v-catgrid__tile{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;min-width:0;text-decoration:none}
.v-catgrid__img{position:relative;display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1/1;border-radius:.85rem;overflow:hidden;background:#fff}
.v-catgrid__img img{width:100%;height:100%;object-fit:contain;padding:.7rem}
/* 2-column phones (under 375px) make each card ~160px wide, so the picture gets more breathing room */
@media(max-width:374px){.v-catgrid__img img{padding:1.7rem}}
.v-catgrid__initial{display:flex;align-items:center;justify-content:center;width:52%;aspect-ratio:1/1;margin:0 auto;border-radius:50%;background:#dfe3e8;color:#6b7280;font-weight:700;font-size:1.25rem;line-height:1}
.v-catgrid__label{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.5em;padding:0 .15rem;color:var(--mb-sheet-heading,#111827);font-size:.92rem;font-weight:700;line-height:1.25;text-align:left}
.v-catgrid__meta{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:.4rem;padding:0 .15rem;font-size:.7rem;color:var(--mb-sheet-text,#6b7280)}
.v-catgrid__count{padding:.2rem .55rem;border-radius:999px;background:#fff;color:#374151;font-weight:600;white-space:nowrap}
.rn-mob-acc-sub--l2{padding-left:2.8rem !important;font-size:.82rem !important;opacity:.65}
.rn-mob-nav-item:hover .v-catpanel__txt::after,.rn-mob-acc-hd:hover .v-catpanel__txt::after{width:100%}
.rn-mob-nav-item:hover .v-catpanel__arr{opacity:1;transform:translateX(0)}
.rn-mob-panel .v-accordion{border:none;border-radius:0;background:transparent;overflow:visible}
.rn-mob-panel .v-accordion__item+.v-accordion__item{border-top:none}
.rn-mob-panel .v-accordion__header:hover{background:transparent}
.rn-mob-panel .v-accordion__panel{padding:0}
.rn-mob-hd{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.25rem;border-bottom:1px solid var(--border-color,#e5e7eb)}
.rn-mob-hd-acts{display:flex;align-items:center;gap:.65rem}
.rn-mob-search{display:flex;align-items:center;gap:.5rem;padding:.7rem 1.25rem;border-bottom:1px solid var(--border-color,#e5e7eb)}
.rn-mob-search input{flex:1;border:1px solid var(--border-color,#e5e7eb);border-radius:6px;padding:.5rem .75rem;font-size:.9rem;background:transparent;color:var(--text-color,#111)}
.rn-mob-nav{padding:.4rem 0}
.rn-mob-link{display:block;padding:.85rem 1.25rem;color:var(--text-color,#111);font-size:.95rem;font-weight:600;text-decoration:none;border-bottom:1px solid var(--border-color,#f3f4f6)}
.rn-mob-link:hover{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 6%,transparent);color:var(--primary-color,#8b1c1c)}
.rn-mob-grp .v-accordion__header{padding:.85rem 1.25rem;font-size:.95rem;font-weight:600}
.rn-mob-sub{display:block;padding:.6rem 1.25rem .6rem 2.25rem;color:var(--text-muted,#6b7280);font-size:.875rem;text-decoration:none;border-bottom:1px solid var(--border-color,#f3f4f6)}
.rn-mob-sub:hover{background:color-mix(in srgb,var(--primary-color,#8b1c1c) 6%,transparent);color:var(--primary-color,#8b1c1c)}
.rn-mob-auth{display:flex;gap:.75rem;padding:1rem 1.25rem;border-top:1px solid var(--border-color,#e5e7eb);margin-top:.5rem}
.rn-close-btn{background:color-mix(in srgb,var(--text-color,#111) 10%,transparent);border:none;cursor:pointer;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text-color,#111)}
.rn-close-btn:hover{background:var(--primary-color,#8b1c1c);color:var(--text-inverse,#fff)}
@media(min-width:768px){.rn-row-links{display:flex}#rn-burger{display:none !important}}
@media(max-width:767px){#rn-burger{display:flex}.rn-col-right .rn-search,.rn-col-right .rn-cta,.rn-col-right .rn-cta-ghost{display:none}}
/* Classic template — tablet (side-logo range, ≤1023px): drop the Shop CTA
   and let search claim its space. Mobile (≤767px, burger already shown by
   the rule above): logo stays (see rn-hdr-logo-side fix above), phone
   number and account icon go — both already covered by the mobile overlay
   panel instead. */
@media(max-width:1023px){
  /* .rn-col-center keeps flex:1 (the shared base rule) even though the
     center logo it holds is hidden below 1024px — it was silently eating
     the space search should be growing into, since search's own flex:1
     only distributes room its immediate parent (.rn-col-right) actually
     has. Collapsing the empty center column and making .rn-col-right
     itself flexible is what actually lets search expand. */
  .rn-col-center{flex:0 1 auto !important}
  .rn-col-right{flex:1 1 auto !important}
  .rn-col-right .rn-classic-shop-cta{display:none !important}
  .rn-col-right .rn-classic-search{flex:1;width:auto !important}
}
@media(max-width:767px){.rn-classic-phone,.rn-classic-account{display:none !important}}
/* The base #rn-burger/.rn-col-right rule two lines up unconditionally
   hides search once the burger appears (≤767px) — that's the right call
   for the OTHER templates but not Classic, where "tablet" (burger already
   showing, search still wanted) runs all the way down to real mobile, same
   convention the Grid template already uses (.pl-break-960 .rn-col-right
   .rn-search below). Overrides it back on for Classic specifically down to
   480px, then a dedicated rule hides it for true mobile. */
@media(max-width:767px){.rn-col-right .rn-classic-search{display:flex !important}}
@media(max-width:480px){.rn-col-right .rn-classic-search{display:none !important}}
/* Classic template — browser/desktop only: make the header search bar
   read as a real, prominent search field instead of the shared thin-
   border/small-padding .rn-search default (border:1px, .42rem padding,
   .875rem font) every other template also uses. Scoped to min-width:1024px
   so tablet/mobile Classic search (handled by the rules above) is
   untouched. */
@media(min-width:1024px){
  .rn-classic-search{height:46px}
  .rn-classic-search input{height:100%;border:2px solid var(--primary-color,#8b1c1c);border-radius:999px;font-size:.95rem;padding:.55rem 1rem .55rem 2.5rem;box-shadow:0 2px 10px rgba(0,0,0,.07)}
  .rn-classic-search input:focus{box-shadow:0 2px 14px color-mix(in srgb,var(--primary-color,#8b1c1c) 25%,transparent)}
  .rn-classic-search svg{left:.95rem;width:16px;height:16px;opacity:.55}
}
@media(max-width:1100px){.pl-break-1100 .pl-link-inv,.pl-break-1100 .pl-drop-btn-inv{padding:.4rem .55rem;font-size:var(--hdr-nav-fs,.82rem)}}
@media(max-width:960px){.pl-break-960 .rn-row-links{display:none}.pl-break-960 #rn-burger{display:flex !important}.pl-break-960 .rn-row-inner{grid-template-columns:auto auto 1fr !important}.pl-break-960 .rn-col-center{justify-self:start !important}.pl-break-960 .rn-col-left a{display:none !important}.pl-break-960 .rn-col-right{justify-self:stretch !important;justify-content:flex-end !important;gap:1rem}.pl-break-960 .rn-col-right .rn-grid-shop-cta{display:none !important}.pl-break-960 .rn-col-right>div{flex:1;min-width:0;justify-content:center}.pl-break-960 .rn-search-exp{position:relative !important;top:auto !important;left:auto !important;transform:none !important;width:100% !important}.pl-break-960 .rn-search-exp:focus-within{width:100% !important}.pl-break-960 .rn-search-exp input{width:100%}}
.pl-break-960 .rn-hdr-logo{display:flex !important;align-items:center;gap:.6rem;text-decoration:none}
@media(max-width:767px){.pl-break-960 .rn-col-right .rn-search{display:flex !important}}
@media(max-width:480px){.pl-break-960 .rn-col-right .rn-search{display:none !important}.pl-break-960 .rn-grid-logo{height:64px !important}}
.pl-break-1100 .rn-search input{padding:.5rem .8rem .5rem 2rem}
.pl-cta-short{display:none}
@media(max-width:960px){.pl-break-960 .pl-cta-full{display:none}.pl-break-960 .pl-cta-short{display:inline}}
/* Flash Deal template — burger sits in the top bar itself (search+icons
   share that row, no separate nav row), so it needs its own breakpoint
   independent of the shared #rn-burger/.rn-row-links 768px cutoff used by
   the other two templates. .rn-fd-burger stacks onto the shared #rn-burger
   id purely to win specificity (id+class beats plain id) without touching
   the other templates' burger behavior. */
@media(max-width:768px){
  #rn-burger.rn-fd-burger{display:flex !important}
  .rn-fd-icons{display:none !important}
  .rn-fd-search{max-width:none !important}
}
@media(max-width:640px){.rn-fd-search{display:none !important}}
#rn-navbar[data-hide-brand-name] .rn-brand-name{display:none}
.rn-auth-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--hdr-border,#e5e7eb);color:var(--hdr-text,#111);text-decoration:none;flex-shrink:0;transition:background .2s,border-color .2s,color .2s}
.rn-auth-icon:hover{background:color-mix(in srgb,var(--primary-color,#465fff) 8%,transparent);border-color:var(--primary-color,#465fff);color:var(--primary-text,var(--primary-color,#465fff))}
.rn-auth-drop{position:relative;display:flex;align-items:center;height:100%}
.rn-auth-drop>summary{list-style:none;cursor:pointer}
.rn-auth-drop>summary::-webkit-details-marker,.rn-auth-drop>summary::marker{display:none}
.rn-auth-panel{position:absolute;top:100%;right:0;min-width:220px;background:var(--bg-color,#fff);border:1px solid var(--hdr-border,#e5e7eb);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.11);padding:.9rem;z-index:300}
.rn-auth-greet{font-size:.75rem;font-weight:700;color:var(--text-muted,#6b7280);margin-bottom:.65rem;text-align:center;text-transform:uppercase;letter-spacing:.06em}
.rn-auth-btns{display:flex;gap:.45rem;margin-bottom:.65rem}
.rn-auth-sep{height:1px;background:var(--border-color,#e5e7eb);margin:.45rem 0}
.rn-auth-sep:has(+ .v-logout-none){display:none}
.rn-auth-link{display:flex;align-items:center;gap:.45rem;font-size:var(--hdr-nav-fs,.82rem);color:var(--text-color,#374151);text-decoration:none;padding:.32rem .35rem;border-radius:5px;transition:color .15s,background .15s;white-space:nowrap}
.rn-auth-link:hover{color:var(--primary-color,#465fff);background:color-mix(in srgb,var(--primary-color,#465fff) 6%,transparent)}
.rn-auth-link--sm{font-size:var(--hdr-nav-fs,.75rem);color:var(--text-muted,#9ca3af);padding:.22rem .35rem}
.rn-auth-link--sm:hover{color:var(--primary-color,#465fff)}

/* ── §AF — v-nav: generic 3-zone storefront header ──────────────────────────
   Shell: .v-nav  →  __zone --left/center/right  →  __logo / __search /
   __links (desktop ul tree) / __actions (__menu hamburger, __cart, buttons).
   Category mega-panel: .v-catpanel --cols2/3/mega with __group/__h/__l.
   Auth toggle: [data-show-when="logged-in/out"] + JS initAuthVisibility(). */

/* ── shell ── */
.v-nav{position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:1rem;padding:.55rem 1.25rem;background:var(--hdr-bg,#fff);border-bottom:1px solid var(--border-color,#e5e7eb);box-shadow:0 1px 4px rgba(0,0,0,.06);font-family:var(--font-family,system-ui,sans-serif)}
.v-nav__zone{display:flex;align-items:center;gap:.65rem}
.v-nav__zone--left{flex-shrink:0;gap:0}
.v-nav__zone--center{flex:1;justify-content:center}
.v-nav__zone--right{flex-shrink:0;gap:.5rem}

/* ── logo ── */
.v-nav__logo{display:inline-flex;align-items:center;text-decoration:none;flex-shrink:0}
.v-nav__logo img{height:40px;width:auto;display:block;object-fit:contain}

/* ── search box ──
   flex:0 1 320px + min-width:150px: search keeps a decent, PREDICTABLE size
   and only ever shrinks a little (never squeezed to near-nothing) — it no
   longer needs to compete with nav links for space at all (the desktop
   inline link list is gone below; every width now reaches links through
   the hamburger), so in practice it rarely needs to shrink past its
   320px default at all. */
.v-nav__search{display:flex;align-items:center;gap:.3rem;background:var(--surface-color,#f3f4f6);border:1px solid var(--border-color,#e5e7eb);border-radius:var(--border-radius,999px);padding:.35rem .6rem .35rem .85rem;flex:0 1 320px;min-width:150px}
.v-nav__search input{flex:1;border:none;background:transparent;font-size:.875rem;color:var(--text-color,#111);font-family:inherit;min-width:0}
.v-nav__search input:focus{outline:none}
.v-nav__search button{flex-shrink:0;background:none;border:none;cursor:pointer;font-size:1rem;line-height:1;padding:0 .2rem;color:var(--text-muted,#6b7280)}

/* ── desktop nav link tree ── */
.v-nav__links>ul{display:flex;align-items:center;gap:0;list-style:none;margin:0;padding:0}
.v-nav__links>ul>li{position:relative}
.v-nav__links>ul>li>a:not(.v-cat-trigger){display:inline-flex;align-items:center;padding:.45rem .8rem;font-size:.875rem;font-weight:600;color:var(--text-color,#374151);text-decoration:none;border-radius:var(--border-radius,6px);white-space:nowrap;transition:background .15s,color .15s}
.v-nav__links>ul>li>a:not(.v-cat-trigger):hover,.v-nav__links>ul>li:hover>a:not(.v-cat-trigger){background:color-mix(in srgb,var(--primary-color,#6366f1) 9%,transparent);color:var(--primary-color,#6366f1)}
/* sub-menu (L2) */
.v-nav__links ul ul{position:absolute;top:100%;left:0;min-width:180px;max-height:min(70vh,480px);overflow-y:auto;list-style:none;margin:0;padding:.35rem;background:var(--bg-color,#fff);border:1px solid var(--border-color,#e5e7eb);border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.1);opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .15s,transform .15s,visibility .15s;z-index:200}
.v-nav__links>ul>li:hover>ul,.v-nav__links>ul>li:focus-within>ul{opacity:1;visibility:visible;transform:translateY(0)}
.v-nav__links ul ul li a{display:block;padding:.45rem .7rem;font-size:.85rem;color:var(--text-color,#374151);text-decoration:none;border-radius:6px;white-space:nowrap}
.v-nav__links ul ul li a:hover{background:color-mix(in srgb,var(--primary-color,#6366f1) 8%,transparent);color:var(--primary-color,#6366f1)}
/* L3 fly-out (right) */
.v-nav__links ul ul ul{top:0;left:100%;margin-top:0}

/* ── category component sits inside .v-nav__zone--left via data-comp-include ── */
.v-nav__cat{display:contents}

/* ── multi-column category panel (cols-2, cols-3, mega designs) ── */
.v-catpanel{position:absolute;top:100%;left:0;display:grid;gap:1.25rem 2rem;padding:1.1rem 1.4rem;background:var(--bg-color,#fff);border:1px solid var(--border-color,#e5e7eb);border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,.11);opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .15s,transform .15s,visibility .15s;z-index:200;min-width:300px;max-width:min(96vw,900px)}
.v-nav__links>ul>li:hover .v-catpanel,.v-nav__links>ul>li:focus-within .v-catpanel,.v-nav__links>ul>li.touch-open .v-catpanel{opacity:1;visibility:visible;transform:translateY(0)}
/* cols-2: 560px wide, 1px gradient line at midpoint (50%) between equal columns */
.v-catpanel--cols2{grid-template-columns:repeat(2,1fr);width:min(96vw,560px)}
/* cols-3: two lines at 33.5% and 66.5% */
.v-catpanel--cols3{grid-template-columns:repeat(3,1fr);width:min(96vw,780px)}

/* ── mega design — own dedicated wrapper, NOT the .v-catpanel chain above.
   catMegaMenuHTML() in category.go builds .v-catmega > .v-catmega__grid,
   where .v-catmega__grid is just catPanelHTML()'s normal .v-catpanel__group
   items (same box styling/itemstyle classes every other design uses) — only
   the outer positioning/reveal box is new, given its own explicit width so
   it can never fall into the old shrink-to-fit-vs-width:100% circular bug. */
/* Full-bleed edge-to-edge: CSS-only containing-block tricks proved
   unreliable (.v-nav__cat's display:contents has known cross-browser
   inconsistencies for position:absolute containing-block resolution
   through it, and #main-content is itself width-constrained, not
   viewport-wide) — initCatDropPosition() in theme.js sets the definitive
   left/width in px via getBoundingClientRect() on hover, same proven
   pattern already used for .v-catpanel below. left/width here are just the
   pre-JS fallback (e.g. an instant on first paint before mouseenter fires). */
.v-catmega{position:absolute;top:100%;left:0;width:min(100vw,1600px);min-height:220px;max-height:80vh;overflow-y:auto;background:var(--bg-color,#fff);border-top:1px solid var(--border-color,#e5e7eb);box-shadow:0 8px 28px rgba(0,0,0,.11);padding:1.4rem 1.5rem;opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .15s,transform .15s,visibility .15s;z-index:200;box-sizing:border-box;background-size:cover;background-position:center}
.v-nav__links>ul>li:hover .v-catmega,.v-nav__links>ul>li:focus-within .v-catmega,.v-nav__links>ul>li.touch-open .v-catmega{opacity:1;visibility:visible;transform:translateY(0)}
.v-catmega__grid{display:grid;grid-template-columns:repeat(var(--cat-cols,3),1fr);row-gap:var(--cat-gap,10px);column-gap:var(--cat-gap,10px);align-content:start;max-width:1024px;margin:0 auto}
/* "View All" — now OUTSIDE the grid entirely (see catMegaMenuHTML), sitting
   above it. Same max-width+margin:0 auto as the grid so its left edge lines
   up exactly with the grid's own left edge, and a bottom margin as the gap
   before the grid starts. */
.v-catmega__viewall{max-width:1024px;margin:0 auto .8rem}
/* Same treatment as the site's .btn-primary (theme.css ~L807) — a real
   primary button, not a text link, per direct feedback. Duplicated rather
   than reusing the class directly since .btn-primary's color:var(--text-
   strong) assumes a light page background; this sits over the mega panel
   (sometimes an image), so it's pinned to white text instead. */
.v-catmega__viewall a{display:inline-flex;align-items:center;gap:.5rem;padding:.65rem 1.5rem;background:var(--primary-color);color:#fff;border-radius:99px;font-size:var(--fs-sm,.85rem);font-weight:700;text-decoration:none;white-space:nowrap;transition:background .2s}
.v-catmega__viewall a:hover{background:var(--primary-dark);color:#fff}
/* Responsive: fixed 3-tier column count, independent of the admin's
   --cat-cols (which only governs desktop, ≥1025px) — below desktop it
   either overflows or crams items too narrow to read otherwise. Gap is
   horizontal (column) only, no vertical gap between rows — see row-gap:0
   above; the divider/border on each .v-catpanel__group (from its chosen
   itemstyle) is what visually separates rows instead. */
@media(max-width:1024px){.v-catmega__grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:768px){.v-catmega__grid{grid-template-columns:repeat(2,1fr)}.v-catmega{padding:1rem}}
.v-catpanel__wrap .v-catmega__grid{flex:1 1 0%;min-width:0;max-width:100%}
/* "View All" — pinned to the last grid column, distinct accent look so it
   reads as a separate action, not just another category. grid-column:-1
   places it in the grid's last track on whatever row it naturally falls to
   (last in DOM order — see catPanelHTML) — with row-gap:0 above, that's
   visually "bottom of the grid" without needing an exact row count, which
   varies with however many categories exist. */
.v-catmega__grid .v-catpanel__group--viewall{grid-column:-1}
.v-catmega__grid .v-catpanel__group--viewall>a{color:var(--primary-color,#8b1c1c)!important;font-weight:700}
.v-catmega__grid .v-catpanel__group--viewall .v-catpanel__txt{text-transform:uppercase;font-size:.78rem;letter-spacing:.03em}
.v-catmega__grid .v-catpanel__group--viewall .v-catpanel__arr{opacity:.7!important}
/* The grid itself (the button "pallet") is horizontally centered in the
   full-bleed panel via max-width+margin:0 auto above. Each button's own
   text stays left-aligned, vertical centering unchanged (align-items:center
   from the shared .v-catpanel__h rule already handles that row axis). */
.v-catmega__grid .v-catpanel__h{justify-content:flex-start;text-align:left}
.v-catmega__grid .v-catpanel__meta{align-items:flex-start}
/* Equal row height + proper sizing across every grid design (mega AND
   cols-2/cols-3, which were missed the first time this got fixed) — the
   base .v-catpanel__group rule sets align-self:start plus a fixed
   height:var(--cat-cardh,fit-content) (so items keep their own intrinsic
   height regardless of row siblings, or a stale fixed --cat-cardh from an
   old saved slot config). Both are exactly what broke pill-chips (and
   anything else border-radius-heavy) in cols-2/cols-3: a fixed/mismatched
   height on a wide 2-3-column cell made the pill's rounding badly
   disproportionate to its actual text content, with text overflowing past
   the curved ends. Overriding back to stretch + auto height (grid's own
   natural defaults) here fixes both the row-height mismatch and the pill
   distortion in one rule, for every grid design uniformly. */
.v-catmega__grid .v-catpanel__group,
.v-catpanel--cols2 .v-catpanel__group,
.v-catpanel--cols3 .v-catpanel__group{align-self:stretch;height:auto}
/* Icon badge (catIconSVG in category.go) — mega only. A little breathing
   room per item so the badge + two-line label reads like the reference's
   "icon, title, one-line description" layout instead of a cramped chip. */
.v-catmega__grid .v-catpanel__h{gap:.7rem;padding:.7rem .5rem}
.v-catmega__grid .pl-cat-icon{display:flex!important;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:9px}
/* Featured "View All" tile — mega only (see catPanelHTML's isMega branch in
   category.go). A simple flat solid-color button — bold uppercase label,
   minimal radius, no gradient/icon/description — per the user's own
   reference mockup. Spans 2 grid cells so it still reads as a distinct
   callout, not just another category link. Ignores whatever itemstyle/
   --cat-* vars are set (its own fixed look, independent of the plain
   category cards) since it's a different kind of element, not just
   another item. */
.v-catmega__grid .v-catpanel__featured{grid-column:span 2;height:auto;border:none!important;border-radius:4px!important;overflow:hidden;background:var(--primary-color,#e6231e)!important;box-shadow:none!important}
.v-catmega__grid .v-catpanel__featured::before{display:none}
.v-catpanel__featured-link{display:flex!important;align-items:center;justify-content:center;height:100%;min-height:52px;padding:.9rem 1.2rem;color:#fff!important;text-decoration:none;transition:background .18s}
.v-catpanel__featured-btn{font-size:.85rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.v-catpanel__featured-link:hover{background:color-mix(in srgb,var(--primary-color,#e6231e) 85%,black)!important}
@media(max-width:640px){.v-catmega__grid .v-catpanel__featured{grid-column:span 1}}
.v-catpanel--mega{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));width:min(96vw,900px);min-height:220px}
.v-catpanel__group{display:flex;flex-direction:column;gap:.25rem}
/* links stretch full column width; arrow pushed to right edge via margin-left:auto */
.v-catpanel__h{display:flex;align-items:center;gap:.35rem;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-strong,#111827);text-decoration:none;padding:.15rem 0 .2rem;white-space:nowrap;transition:color .2s,transform .35s ease}
.v-catpanel__h:hover{color:var(--primary-color,#465fff);transform:translateX(5px)}
.v-catpanel__h--all{color:var(--primary-color,#465fff);letter-spacing:.04em}
.v-catpanel__l{display:flex;align-items:center;gap:.3rem;font-size:.84rem;color:var(--text-muted,#6b7280);text-decoration:none;padding:.2rem 0;white-space:nowrap;transition:color .2s,transform .35s ease}
.v-catpanel__l:hover{color:var(--primary-color,#465fff);transform:translateX(5px)}
/* text span: underline animates left→right, stays within text width */
.v-catpanel__txt{position:relative;flex-shrink:1;min-width:0}
.v-catpanel__txt::after{content:'';position:absolute;bottom:-1px;left:0;width:0;height:2px;background:var(--primary-color,#465fff);transition:width .3s ease}
.v-catpanel__l .v-catpanel__txt::after{height:1px}
.v-catpanel__h:hover .v-catpanel__txt::after,.v-catpanel__l:hover .v-catpanel__txt::after{width:100%}
/* arrow: hidden until hover, pushed to right edge */
.v-catpanel__arr{width:.6em;height:.6em;flex-shrink:0;margin-left:auto;padding-left:.5rem;box-sizing:content-box;opacity:0;transform:translateX(-4px);transition:opacity .2s,transform .3s ease}
.v-catpanel__h:hover .v-catpanel__arr,.v-catpanel__l:hover .v-catpanel__arr{opacity:1;transform:translateX(0)}
/* side-image panel beside category list */
.v-catpanel__wrap{display:flex;align-items:stretch;gap:0;width:100%}
.v-catpanel__wrap .pl-cat-inner{flex:1 1 0%!important;min-width:0!important;max-width:100%!important;margin:0!important;padding-left:0!important;padding-right:0!important}
.v-catpanel__wrap .v-catpanel{flex:1 1 0%!important;min-width:0!important;max-width:100%!important}
.v-catpanel__img-side{flex:0 0 clamp(160px,20vw,320px);overflow:hidden}
@media(max-width:1200px){.v-catpanel__img-side{display:none}}
.v-catpanel__img{width:100%;height:100%;object-fit:cover;display:block;transform-origin:center;border-radius:0}
.v-catpanel__img{flex:1;width:100%;object-fit:cover;display:block;border-radius:6px}
/* letter-avatar thumbnail */
.v-catpanel__thumb{overflow:hidden;flex-shrink:0;width:1.75rem;height:1.75rem;border-radius:50%;background:color-mix(in srgb,var(--primary-color,#465fff) 12%,var(--bg-color,#fff));color:var(--primary-color,#465fff);font-size:.6rem;font-weight:800;display:inline-flex;align-items:center;justify-content:center;text-transform:uppercase;line-height:1}
/* picture + name on ONE line, vertically centred, with a gap (the list design's link is display:block, which stacked them) */
.v-nav__cat li.v-catpanel__group>a:has(>.v-catpanel__thumb){display:flex;align-items:center;gap:.7rem}
.v-catpanel__h:has(>.v-catpanel__thumb){gap:.7rem}
/* the mega / Grid / Deals / Marketplace panels force their own gap:.5rem !important; match the list design */
.rn-drop .v-catpanel__h:has(>.v-catpanel__thumb),.pl-cat-panel .v-catpanel__h:has(>.v-catpanel__thumb){gap:.7rem !important;align-items:center !important}
.v-catpanel__group>a:has(>.v-catpanel__thumb) .v-cat-glabel,.v-catpanel__group>a:has(>.v-catpanel__thumb) .v-cat-gtxt{min-width:0;line-height:1.25}
.v-catpanel__thumb--img img{width:100%;height:100%;object-fit:cover;display:block}
.v-catpanel__thumb--icon svg{width:62%;height:62%}
/* Categories nav button: chevron rotates on hover, loops a bob every 5s to catch attention */
.v-catpanel__chev{width:.8em;height:.8em;flex-shrink:0;margin-left:.2rem;transition:transform .35s ease;animation:vCatChevLoop 5s ease 1.5s infinite}
.v-nav__links>ul>li:hover>a .v-catpanel__chev{transform:rotate(180deg);animation:none}
@keyframes vCatChevLoop{0%,100%{transform:translateY(0)}6%{transform:translateY(4px)}12%{transform:translateY(-2.5px)}18%{transform:translateY(2px)}23%{transform:translateY(0)}}
/* Categories button pulse glow — repeats every 4s */
.v-cat-trigger{animation:vCatBtnPulse 4s ease 2s infinite}
.v-cat-trigger:hover{animation:none}
@keyframes vCatBtnPulse{0%,40%,100%{box-shadow:none}20%{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#465fff) 28%,transparent)}}

/* ── action zone ── */
.v-nav__actions{display:flex;align-items:center;gap:.5rem}

/* ── cart badge ── */
.v-nav__cart{position:relative;display:inline-flex;align-items:center;font-size:1.2rem;cursor:pointer;text-decoration:none;color:var(--text-color,#374151)}
.v-nav__cart-count{position:absolute;top:-6px;right:-8px;min-width:16px;height:16px;border-radius:8px;background:var(--primary-color,#6366f1);color:#fff;font-size:9px;font-weight:800;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1;border:1.5px solid var(--bg-color,#fff)}

/* ── hamburger: <details class="v-nav__menu"> ── */
.v-nav__menu{position:relative}
.v-nav__menu summary{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--border-radius,6px);background:color-mix(in srgb,var(--primary-color,#6366f1) 10%,transparent);color:var(--primary-color,#6366f1);cursor:pointer;font-size:1.1rem;list-style:none;user-select:none}
.v-nav__menu summary::-webkit-details-marker{display:none}
.v-nav__menu summary:hover{background:color-mix(in srgb,var(--primary-color,#6366f1) 18%,transparent)}
.v-nav__panel{position:absolute;top:calc(100% + 6px);left:0;min-width:220px;background:var(--bg-color,#fff);border:1px solid var(--border-color,#e5e7eb);border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,.13);padding:.4rem;z-index:300}
.v-nav__panel>a{display:block;padding:.55rem .8rem;font-size:.875rem;font-weight:600;color:var(--text-color,#374151);text-decoration:none;border-radius:6px}
.v-nav__panel>a:hover{background:color-mix(in srgb,var(--primary-color,#6366f1) 8%,transparent);color:var(--primary-color,#6366f1)}
.v-nav__sub{padding-left:1rem}
.v-nav__sub>a{display:block;padding:.4rem .65rem;font-size:.84rem;color:var(--text-muted,#6b7280);text-decoration:none;border-radius:6px}
.v-nav__sub>a:hover{color:var(--primary-color,#6366f1)}

/* ── branch selector: <details class="v-nav__branch"> ── */
.v-nav__branch{position:relative}
.v-nav__branch>summary{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .85rem;border-radius:var(--border-radius,6px);background:color-mix(in srgb,var(--primary-color,#6366f1) 10%,transparent);color:var(--primary-color,#6366f1);cursor:pointer;font-size:.85rem;font-weight:600;list-style:none;user-select:none}
.v-nav__branch>summary::-webkit-details-marker{display:none}
.v-nav__branch>summary:hover{background:color-mix(in srgb,var(--primary-color,#6366f1) 18%,transparent)}
.v-branch__panel{position:absolute;top:calc(100% + 6px);right:0;min-width:200px;background:var(--bg-color,#fff);border:1px solid var(--border-color,#e5e7eb);border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,.13);padding:.4rem;z-index:300}
.v-branch__item{margin:0}
.v-branch__item>button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.55rem .8rem;border:none;background:none;cursor:pointer;font-size:.875rem;font-weight:500;font-family:inherit;color:var(--text-color,#374151);text-align:left;border-radius:6px}
.v-branch__item>button:hover{background:color-mix(in srgb,var(--primary-color,#6366f1) 8%,transparent);color:var(--primary-color,#6366f1)}
.v-branch__check{opacity:0;color:var(--primary-color,#6366f1)}
.v-branch__item.is-active>button{font-weight:700}
.v-branch__item.is-active .v-branch__check{opacity:1}

/* ── profile menu: <details class="v-nav__profile"> ── */
.v-nav__profile{position:relative}
.v-nav__profile>summary{display:inline-flex;align-items:center;padding:0;border-radius:999px;cursor:pointer;list-style:none;user-select:none}
.v-nav__profile>summary::-webkit-details-marker{display:none}
.v-nav__avatar{display:block;border-radius:50%}
.v-nav__profile-panel{position:absolute;top:calc(100% + 6px);right:0;min-width:170px;background:var(--bg-color,#fff);border:1px solid var(--border-color,#e5e7eb);border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,.13);padding:.4rem;z-index:300;display:flex;flex-direction:column}
.v-nav__profile-panel>a{padding:.55rem .8rem;border-radius:6px;font-size:.875rem;font-weight:500;color:var(--text-color,#374151);text-decoration:none}
.v-nav__profile-panel>a:hover{background:color-mix(in srgb,var(--primary-color,#6366f1) 8%,transparent);color:var(--primary-color,#6366f1)}
.v-nav__sub>.v-nav__sub{padding-left:1.25rem}

/* ── auth toggle (data-show-when) ── */
[data-show-when="logged-in"]{display:none}
[data-auth-state="in"] [data-show-when="logged-out"]{display:none}
[data-auth-state="in"] [data-show-when="logged-in"]{display:inline}
[data-auth-state="in"] section[data-show-when="logged-in"],[data-auth-state="in"] div[data-show-when="logged-in"]{display:block}

/* ── responsive ──
   THIS is the block that actually governs the header at runtime — theme.css
   loads AFTER output.css (compiled from input.css) in every page, so at
   equal specificity theme.css's rules win regardless of what output.css
   says (input.css/embed/static/css/input.css has its own, mostly-inert
   parallel copy of these selectors — only its brand-new classes with no
   theme.css counterpart, .v-tabbar, actually take effect; .v-nav__mobile-
   search is neutralised below — search never needs its own row anymore).

   Design (v3 — search/profile ALWAYS pinned; nav links inline when there's
   room, folded to the hamburger only once space runs short):
     - .v-nav__links (the inline "Home Products Offers…" list) shows
       INLINE at >=1200px, where there's enough room for logo + links +
       fixed-width search + actions without anything fighting for space.
       Below 1200px it folds into .v-nav__menu (hamburger) instead of
       shrinking/wrapping/disappearing — this is the "if there is short of
       space, the menu can be folded until a point" requirement; the
       hamburger itself is only shown once folded (below 1200px), not at
       every width.
     - .v-nav__search and .v-nav__actions' cart + profile are ALWAYS
       visible, at every width down to the smallest phone — never hidden,
       never moved to a separate row/menu. This is the literal "search
       must always be at the top on every page" / "profile must always be
       at the top-right, always accessible" requirement.
     - The one exception: the branch-selector (multi-branch orgs only,
       lower priority than search/cart/profile) folds into the hamburger
       panel below 768px to keep the top bar from getting crowded on a
       phone — it's still reachable there (v-tabbar__panel already
       includes its own "branch-mobile" instance).
     - The fixed PWA-style bottom tab bar (.v-tabbar, input.css) still
       appears below 992px as a THUMB-REACH SHORTCUT row (Home/Categories/
       Cart/Menu) — supplementary, not a replacement for the always-visible
       top bar (its old "Account" tab is gone; profile lives in the top bar
       now, so that slot became Categories instead — see _header.json). */
.v-nav__links{display:none}
.v-nav__menu{display:block}
@media(min-width:961px){
  .v-nav__links{display:flex}
  .v-nav__menu{display:none}
}
@media(max-width:991px){
  /* cart already lives in the bottom PWA tab bar on these widths — the
     top-bar copy is redundant and steals width the search box needs. */
  .v-nav__actions>.v-nav__cart{display:none}
}
@media(max-width:767px){
  .v-nav{padding:.4rem .85rem}
  .v-nav__actions .v-nav__branch{display:none}
  .v-nav__cart-count{top:-5px;right:-6px}
  .v-nav__menu summary{width:28px;height:28px;font-size:.95rem}
}
@media(max-width:479px){
  /* Logo can be a wide wordmark (icon+text baked into one SVG) — cap its
     rendered height so it can't crowd the hamburger into the search box
     on the narrowest phones. */
  .v-nav__logo img{height:26px}
  .v-nav{gap:.35rem;padding:.4rem .5rem}
  .v-nav__zone{gap:.3rem}
  .v-nav__search{min-width:150px;padding:.3rem .5rem .3rem .7rem}
  .v-nav__search button{font-size:.85rem;padding:0 .1rem}
  .v-nav__search input{font-size:.8rem}
  .v-nav__profile>summary svg,.v-nav__avatar{width:28px;height:28px}
}
/* Neutralise input.css's now-unused separate mobile search row — search
   lives permanently in the main .v-nav row at every width, so this extra
   row (a leftover from the previous design) must never render. */
.v-nav__mobile-search{display:none!important}

/* ================================================================
   §O — CTA Button Classes (settings-driven via --btn-p/s/a-*)
   .v-btn-p  → Primary   palette
   .v-btn-s  → Secondary palette
   .v-btn-a  → Accent    palette
   Size modifiers: .v-btn-xs  .v-btn-sm  .v-btn-md  .v-btn-lg  .v-btn-xl
   Keep padding in the size modifier class — NOT inline style.
   No rounded-* in HTML — border-radius comes from --btn-p-radius.
   SVG inside must use stroke="currentColor".
   ================================================================ */
/* §O overlay engine: ::before is the hover layer. Go emits --btn-*-hover-tx/oi/ot/filter
   so every effect (slide-fill, lift, press, grow, shrink, darken, lighten, glow, border-grow)
   is fully settings-driven — no data attributes needed in HTML.
   isolation:isolate keeps z-index:-1 on ::before scoped to the button's stacking context. */
.v-btn-p,.v-btn-s,.v-btn-a{isolation:isolate;position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;cursor:pointer;text-decoration:none;font-weight:700;transition:color .25s ease,box-shadow .25s ease,transform .22s ease,filter .25s ease}
/* Shared ::before overlay */
.v-btn-p::before,.v-btn-s::before,.v-btn-a::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;transition:transform .4s ease,opacity .3s ease}
/* Primary */
.v-btn-p{background-color:var(--btn-p-bg,var(--primary-color,#4f46e5));color:var(--btn-p-text,#fff);border:var(--btn-p-border,none);border-radius:var(--btn-p-radius,6px);box-shadow:var(--btn-p-shadow,none);font-size:var(--btn-p-fs,var(--fs-btn,.95rem))}
.v-btn-p::before{background-color:var(--btn-p-bg-hover,color-mix(in srgb,var(--btn-p-bg,var(--primary-color,#4f46e5)) 80%,#000));transform:translateX(var(--btn-p-hover-tx,0%));opacity:var(--btn-p-hover-oi,0)}
.v-btn-p:hover{color:var(--btn-p-text-hover,var(--btn-p-text,#fff));box-shadow:var(--btn-p-shadow-hover,var(--btn-p-shadow,none));transform:var(--btn-p-transform,none);filter:var(--btn-p-hover-filter,none)}
.v-btn-p:hover::before{transform:translateX(0);opacity:var(--btn-p-hover-ot,1)}
/* Secondary */
.v-btn-s{background-color:var(--btn-s-bg,var(--secondary-color,#64748b));color:var(--btn-s-text,#fff);border:var(--btn-s-border,none);border-radius:var(--btn-s-radius,6px);box-shadow:var(--btn-s-shadow,none);font-size:var(--btn-s-fs,var(--fs-btn,.95rem))}
.v-btn-s::before{background-color:var(--btn-s-bg-hover,color-mix(in srgb,var(--btn-s-bg,var(--secondary-color,#64748b)) 80%,#000));transform:translateX(var(--btn-s-hover-tx,0%));opacity:var(--btn-s-hover-oi,0)}
.v-btn-s:hover{color:var(--btn-s-text-hover,var(--btn-s-text,#fff));box-shadow:var(--btn-s-shadow-hover,var(--btn-s-shadow,none));transform:var(--btn-s-transform,none);filter:var(--btn-s-hover-filter,none)}
.v-btn-s:hover::before{transform:translateX(0);opacity:var(--btn-s-hover-ot,1)}
/* Accent */
.v-btn-a{background-color:var(--btn-a-bg,var(--accent-color,#f59e0b));color:var(--btn-a-text,#fff);border:var(--btn-a-border,none);border-radius:var(--btn-a-radius,6px);box-shadow:var(--btn-a-shadow,none);font-size:var(--btn-a-fs,var(--fs-btn,.95rem))}
.v-btn-a::before{background-color:var(--btn-a-bg-hover,color-mix(in srgb,var(--btn-a-bg,var(--accent-color,#f59e0b)) 80%,#000));transform:translateX(var(--btn-a-hover-tx,0%));opacity:var(--btn-a-hover-oi,0)}
.v-btn-a:hover{color:var(--btn-a-text-hover,var(--btn-a-text,#fff));box-shadow:var(--btn-a-shadow-hover,var(--btn-a-shadow,none));transform:var(--btn-a-transform,none);filter:var(--btn-a-hover-filter,none)}
.v-btn-a:hover::before{transform:translateX(0);opacity:var(--btn-a-hover-ot,1)}
.v-btn-xs{padding:.35rem .85rem;font-size:var(--fs-xs,.72rem);white-space:nowrap;flex-shrink:0}
.v-btn-sm{padding:.5rem 1.25rem;font-size:var(--fs-sm,.82rem);white-space:nowrap;flex-shrink:0}
.v-btn-md{padding:.7rem 1.75rem;white-space:nowrap;flex-shrink:0}
.v-btn-lg{padding:.85rem 2.25rem;white-space:nowrap;flex-shrink:0}
.v-btn-xl{padding:1rem 2.75rem;font-size:clamp(1rem,1.5vw,1.15rem);white-space:nowrap;flex-shrink:0}

/* ================================================================
   §N — Back/Next Button Classes (settings-driven via --btn-p/s/a-*)
   .v-back-next      → Primary   palette (--btn-p-*)
   .v-back-next-sec  → Secondary palette (--btn-s-*)
   .v-back-next-acc  → Accent    palette (--btn-a-*)
   ================================================================ */
.v-back-next,.v-back-next-sec,.v-back-next-acc{display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:background-color .25s ease,color .25s ease,border-color .25s ease,box-shadow .25s ease,transform .22s ease}
.v-back-next{background-color:var(--btn-p-bg,var(--primary-color,#4f46e5));color:var(--btn-p-text,#fff);border:var(--btn-p-border,none);border-radius:var(--btn-p-radius,6px);box-shadow:var(--btn-p-shadow,none)}
.v-back-next:hover{background-color:var(--btn-p-bg-hover,color-mix(in srgb,var(--btn-p-bg,var(--primary-color,#4f46e5)) 80%,#000));color:var(--btn-p-text-hover,var(--btn-p-text,#fff));box-shadow:var(--btn-p-shadow-hover,var(--btn-p-shadow,none));transform:var(--btn-p-transform,none)}
.v-back-next-sec{background-color:var(--btn-s-bg,var(--secondary-color,#64748b));color:var(--btn-s-text,#fff);border:var(--btn-s-border,none);border-radius:var(--btn-s-radius,6px);box-shadow:var(--btn-s-shadow,none)}
.v-back-next-sec:hover{background-color:var(--btn-s-bg-hover,color-mix(in srgb,var(--btn-s-bg,var(--secondary-color,#64748b)) 80%,#000));color:var(--btn-s-text-hover,var(--btn-s-text,#fff));box-shadow:var(--btn-s-shadow-hover,var(--btn-s-shadow,none));transform:var(--btn-s-transform,none)}
.v-back-next-acc{background-color:var(--btn-a-bg,var(--accent-color,#f59e0b));color:var(--btn-a-text,#fff);border:var(--btn-a-border,none);border-radius:var(--btn-a-radius,6px);box-shadow:var(--btn-a-shadow,none)}
.v-back-next-acc:hover{background-color:var(--btn-a-bg-hover,color-mix(in srgb,var(--btn-a-bg,var(--accent-color,#f59e0b)) 80%,#000));color:var(--btn-a-text-hover,var(--btn-a-text,#fff));box-shadow:var(--btn-a-shadow-hover,var(--btn-a-shadow,none));transform:var(--btn-a-transform,none)}
/* Global circular prev/next nav buttons */
#tvPrev,#tvNext,.v-btn-prev,.v-btn-next,.v-nav-prev,.v-nav-next{display:inline-flex;align-items:center;justify-content:center;background:var(--btn-n-bg,var(--primary-color));color:var(--btn-n-text,var(--text-inverse,#fff));border:none;border-radius:50%;width:40px;height:40px;cursor:pointer;flex-shrink:0;transition:background .2s,transform .15s;line-height:1}
#tvPrev:hover,#tvNext:hover,.v-btn-prev:hover,.v-btn-next:hover,.v-nav-prev:hover,.v-nav-next:hover{background:var(--btn-n-bg-hover,var(--primary-dark,var(--primary-color)));transform:scale(1.08)}

/* ================================================================
   §D — STORE CLASSIC 2-ROW HEADER COMPONENT (.v-hsc2)
   Used by dynpages/pageframe/header-store-classic-2-row.html
   ================================================================ */
.v-hsc2-wrap{position:relative;z-index:40;box-shadow:var(--hdr-shadow);backdrop-filter:var(--hdr-blur)}
.v-hsc2-wrap.is-scrolled{box-shadow:var(--hdr-shadow-scroll);backdrop-filter:var(--hdr-blur-scroll)}
.v-hsc2-wrap.is-scrolled .v-hsc2-main{background:var(--hdr-scrolled-bg)}
@keyframes v-hsc2-fade{from{opacity:0}to{opacity:1}}
@keyframes v-hsc2-slide-down{from{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}
.v-hsc2-anim-fade{animation:v-hsc2-fade .4s ease both}
.v-hsc2-anim-slide-down{animation:v-hsc2-slide-down .4s ease both}
.v-hsc2-ann{background:var(--hdr-ann-bg);color:var(--hdr-ann-text);font-family:var(--font-family,inherit);display:flex;align-items:center;overflow:hidden;padding:.45rem 0;position:relative}
@keyframes v-hsc2-marquee{from{transform:translateX(0)}to{transform:translateX(var(--ann-shift,-100%))}}
.v-hsc2-ann__track{display:flex;align-items:center;white-space:nowrap;will-change:transform;animation:v-hsc2-marquee linear infinite}
.v-hsc2-ann__half{display:inline-flex;align-items:center;flex-shrink:0}
.v-hsc2-ann__item{display:inline-flex;align-items:center;gap:1.5rem;font-size:var(--fs-body);line-height:var(--lh-tight,1.1);padding:0 1.5rem}
.v-hsc2-ann__sep{flex-shrink:0}
.v-hsc2-ann:hover .v-hsc2-ann__track{animation-play-state:paused}
.v-hsc2-ann button{flex-shrink:0;background:none;border:none;cursor:pointer;color:inherit;font-size:var(--fs-body);line-height:1;padding:0 .75rem;opacity:.7;transition:opacity .2s;position:relative;z-index:2}
.v-hsc2-ann button:hover{opacity:1}
.v-hsc2-main{background:var(--hdr-bg);color:var(--hdr-text);transition:background .35s;position:relative}
.v-hsc2-main::before{content:'';position:absolute;inset:0;background-image:var(--hdr-bg-image);background-size:cover;background-position:center;opacity:var(--hdr-bg-opacity);pointer-events:none;z-index:0}
.v-hsc2-main>*{position:relative;z-index:1}
.v-hsc2-top{border-bottom:1px solid var(--hdr-border)}
.v-hsc2-top-inner{max-width:var(--max-hf-width);margin:0 auto;padding:0 1.5rem;min-height:var(--hdr-height,64px);height:var(--hdr-height,64px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.5rem}
.v-hsc2-left{display:flex;align-items:center;gap:.65rem}
.v-hsc2-center{display:flex;justify-content:center;align-items:center}
.v-hsc2-right{display:flex;align-items:center;gap:.65rem;justify-content:flex-end}
.v-hsc2-phone{display:flex;align-items:center;gap:6px;background:var(--primary-color);color:var(--text-inverse,#fff);font-size:.875rem;font-weight:700;padding:.35rem 1rem;border-radius:var(--border-radius,6px);white-space:nowrap;text-decoration:none;transition:background .2s}
.v-hsc2-phone:hover{background:var(--primary-dark,var(--primary-color))}
.v-hsc2-brgr{display:none;flex-direction:column;gap:5px;align-items:flex-end;justify-content:center;width:38px;height:38px;background:transparent;border:none;cursor:pointer;padding:5px 6px;border-radius:var(--border-radius,6px);transition:background .2s}
.v-hsc2-brgr:hover{background:var(--surface-color,#f5f5f5)}
.v-hsc2-brgr span{display:block;height:2px;background:var(--hdr-text,var(--text-color,#111));border-radius:1px}
.v-hsc2-brgr span:nth-child(1){width:20px}
.v-hsc2-brgr span:nth-child(2){width:13px}
.v-hsc2-brgr span:nth-child(3){width:20px}
.v-hsc2-srch{display:flex;align-items:center;gap:.5rem;background:var(--bg-color);border:1px solid var(--border-color);border-radius:var(--border-radius,6px);padding:.38rem .85rem;transition:border-color .15s,box-shadow .15s}
.v-hsc2-srch:focus-within{border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 14%,transparent)}
.v-hsc2-srch input{border:none;outline:none;background:transparent;font-size:.84rem;color:var(--text-color);width:240px;font-family:var(--font-family,inherit)}
.v-hsc2-srch input::placeholder{color:var(--text-muted)}
.v-hsc2-cta{display:inline-flex;align-items:center;padding:.4rem 1.2rem;background:var(--primary-color);color:var(--text-inverse,#fff);border:none;font-size:var(--fs-sm);font-weight:700;line-height:var(--lh-tight,1.1);font-family:var(--font-family,inherit);border-radius:var(--border-radius,6px);white-space:nowrap;text-decoration:none;transition:background .2s}
.v-hsc2-cta:hover{background:var(--primary-dark,var(--primary-color));color:var(--text-inverse,#fff)}
.v-hsc2-nav-row{border-bottom:1px solid var(--border-color);overflow-x:clip;display:none}
.v-hsc2-nav-inner{padding:0 .75rem;display:flex;align-items:center;justify-content:center;gap:.4rem;min-height:44px;overflow-x:clip;font-family:var(--font-family,inherit)}
.v-hsc2-nav-inner a,.v-hsc2-nav-inner button,.v-hsc2-nav-link{display:inline-flex;align-items:center;gap:.3rem;padding:.55rem .88rem;font-size:var(--hdr-nav-fs,var(--fs-sm));font-weight:var(--hdr-nav-fw,600);letter-spacing:var(--hdr-nav-ls,normal);line-height:var(--lh-tight,1.1);color:var(--hdr-text);text-decoration:none;border:none;background:none;cursor:pointer;white-space:nowrap;border-radius:var(--border-radius,6px);transition:background .16s,color .16s;font-family:var(--hdr-nav-font,var(--font-family,inherit))}
.v-hsc2-nav-inner a:hover,.v-hsc2-nav-inner a.active,.v-hsc2-nav-inner button:hover,.v-hsc2-nav-link:hover{background:color-mix(in srgb,var(--primary-color) 10%,transparent);color:var(--primary-dark,var(--primary-color))}
.v-hsc2-drop{position:relative}
.v-hsc2-drop-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.55rem .88rem;font-size:.875rem;font-weight:600;color:var(--hdr-text);text-decoration:none;border:none;background:none;cursor:pointer;white-space:nowrap;border-radius:var(--border-radius,6px);transition:background .16s,color .16s;font-family:var(--hdr-nav-font,var(--font-family,inherit))}
.v-hsc2-drop-btn:hover,.v-hsc2-drop:hover .v-hsc2-drop-btn{background:color-mix(in srgb,var(--primary-color) 10%,transparent);color:var(--primary-dark,var(--primary-color))}
.v-hsc2-chev{transition:transform .22s;flex-shrink:0;opacity:.55}
.v-hsc2-drop:hover .v-hsc2-chev{transform:rotate(180deg)}
.v-hsc2-drop-menu{display:none;position:absolute;top:100%;left:0;min-width:210px;background:var(--bg-color,#fff);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 16px 48px color-mix(in srgb,var(--text-color) 12%,transparent);padding:.6rem .4rem .4rem;z-index:200}
.v-hsc2-drop-menu.wide{min-width:260px}
.v-hsc2-drop:hover .v-hsc2-drop-menu{display:block}
.v-hsc2-drop-item{display:flex;align-items:center;justify-content:space-between;gap:.65rem;padding:.55rem .85rem;font-size:var(--fs-sm);color:var(--text-muted);text-decoration:none;border-radius:8px;font-weight:600;transition:background .15s,color .15s}
.v-hsc2-drop-item:hover{background:color-mix(in srgb,var(--primary-color) 8%,transparent);color:var(--primary-dark,var(--primary-color))}
.v-hsc2-drop-divider{height:1px;background:var(--border-color);margin:.3rem .4rem}
.v-hsc2-di{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;opacity:.65}
.v-hsc2-mob-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1099;backdrop-filter:blur(2px)}
.v-hsc2-mob-backdrop.is-open{display:block}
.v-hsc2-mob{display:none;position:fixed;inset:0;background:var(--bg-color);z-index:1100;overflow-y:auto}
.v-hsc2-mob.is-open{display:block}
@media(min-width:641px){.v-hsc2-mob-backdrop.is-open{display:block}.v-hsc2-mob{inset:0 auto 0 0;max-width:420px;box-shadow:none;transform:translateX(-100%);transition:transform .28s cubic-bezier(.4,0,.2,1);display:block;pointer-events:none}.v-hsc2-mob.is-open{transform:translateX(0);pointer-events:auto;width:100%;box-shadow:4px 0 24px rgba(0,0,0,.18)}}
.v-hsc2-mob-ann-bar{padding:.55rem 1.5rem;font-size:.78rem;font-weight:600;text-align:center;background:var(--hdr-ann-bg,var(--primary-color));color:var(--hdr-ann-text,var(--text-inverse,#fff));line-height:1.4}
.v-hsc2-mob-top{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:var(--bg-color);z-index:1}
.v-hsc2-mob-acts{display:flex;align-items:center;gap:.65rem}
.v-hsc2-mob-acts .v-hsc2-mob-phone,.v-hsc2-mob-acts .v-hsc2-cta{min-height:2.1rem;padding-top:.38rem;padding-bottom:.38rem;box-sizing:border-box}
.v-hsc2-mob-hd{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.25rem;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:var(--hdr-bg,var(--bg-color,#fff));z-index:2}
.v-hsc2-mob-logo{display:flex;align-items:center;text-decoration:none}
.v-hsc2-mob-btns{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.85rem 1.25rem;border-bottom:1px solid var(--border-color)}
.v-hsc2-mob-btns .v-hsc2-mob-phone,.v-hsc2-mob-btns .v-hsc2-mob-cta{flex:1;justify-content:center;min-height:2.4rem;font-size:.88rem;box-sizing:border-box;max-width:180px}
@media(min-width:641px){.v-hsc2-mob-btns{display:none}}
.v-hsc2-mob-phone{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .9rem;background:var(--primary-color);color:var(--text-inverse,#fff);font-size:.82rem;font-weight:700;border-radius:var(--border-radius,6px);text-decoration:none;white-space:nowrap;transition:background .2s}
.v-hsc2-mob-phone:hover{background:var(--primary-dark,var(--primary-color))}
.v-hsc2-mob-cta{padding:.5rem .9rem !important}
.v-hsc2-mob-srch{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.5rem;border-bottom:1px solid var(--border-color)}
.v-hsc2-mob-srch input{flex:1;border:none;outline:none;background:transparent;font-size:.94rem;color:var(--text-color);font-family:var(--font-family,inherit)}
.v-hsc2-mob-srch input::placeholder{color:var(--text-muted)}
.v-hsc2-mob-catblock{border-bottom:2px solid var(--border-color)}
.v-hsc2-mob-cattoggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.25rem;background:none;border:none;cursor:pointer;font-family:var(--font-family,inherit)}
.v-hsc2-mob-cattoggle-label{display:flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:700;color:var(--text-color)}
.v-hsc2-mob-cattoggle:hover{background:color-mix(in srgb,var(--primary-color) 6%,transparent)}
.v-hsc2-mob-catarrow{color:var(--text-muted);transition:transform .22s;flex-shrink:0}
.v-hsc2-mob-catlist{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;padding:.75rem 1rem 1rem}
.v-hsc2-mob-catitem{border:none}
.v-hsc2-mob-catitem.has-sub{grid-column:1/-1}
.v-hsc2-mob-catrow{display:flex;align-items:center;justify-content:space-between;padding:.48rem .4rem;cursor:pointer;background:none;border:none;border-radius:0;transition:color .15s}
.v-hsc2-mob-catrow-chev{color:var(--text-muted);flex-shrink:0;transition:transform .2s}
.v-hsc2-mob-catrow.is-open .v-hsc2-mob-catrow-chev{transform:rotate(180deg)}
.v-hsc2-mob-catlink{flex:1;font-size:.8rem;font-weight:600;color:var(--text-color);text-decoration:none;line-height:1.3;display:flex;align-items:center;gap:.35rem}
.v-hsc2-mob-catlink::before{content:'•';color:var(--primary-color);font-size:1.1rem;line-height:1;flex-shrink:0}
.v-hsc2-mob-catrow:hover .v-hsc2-mob-catlink,.v-hsc2-mob-catrow.is-open .v-hsc2-mob-catlink{color:var(--primary-dark,var(--primary-color))}
.v-hsc2-mob-catsub{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:.25rem;padding:.35rem 0 .5rem 1rem}
.v-hsc2-mob-catsublink{display:flex;align-items:center;gap:.3rem;padding:.35rem .4rem;font-size:.76rem;font-weight:500;color:var(--text-muted);text-decoration:none;background:none;border:none;transition:color .14s}
.v-hsc2-mob-catsublink::before{content:'–';color:var(--primary-color);opacity:.7;flex-shrink:0}
.v-hsc2-mob-catsublink:hover{color:var(--primary-dark,var(--primary-color))}
.v-hsc2-mob-nav{padding:0 1.25rem 4rem}
.v-hsc2-mn-link,.v-hsc2-mn-grp-btn{display:flex;align-items:center;gap:.75rem;width:100%;padding:.9rem 1.25rem;font-size:1rem;font-weight:600;color:var(--hdr-text,var(--text-color));text-decoration:none;background:none;border:none;border-bottom:1px solid var(--border-color);border-left:3px solid transparent;cursor:pointer;transition:color .18s,background .15s,border-left-color .15s;text-align:left;box-sizing:border-box}
.v-hsc2-mn-link:hover,.v-hsc2-mn-grp-btn:hover,.v-hsc2-mn-grp.is-open>.v-hsc2-mn-grp-btn{color:var(--primary-dark,var(--primary-color));background:color-mix(in srgb,var(--primary-color) 5%,transparent);border-left-color:var(--primary-color)}
.v-hsc2-mn-ico{width:34px;height:34px;border-radius:50%;background:color-mix(in srgb,var(--primary-color) 12%,transparent);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--primary-color)}
.v-hsc2-mn-label{flex:1}
.v-hsc2-mn-arr{flex-shrink:0;opacity:.35;transition:opacity .18s}
.v-hsc2-mn-link:hover .v-hsc2-mn-arr{opacity:.7}
.v-hsc2-mn-chev{flex-shrink:0;opacity:.45;transition:transform .22s,opacity .18s}
.v-hsc2-mn-grp.is-open>.v-hsc2-mn-grp-btn .v-hsc2-mn-chev{transform:rotate(180deg);opacity:.8}
.v-hsc2-mn-sub{display:none;background:color-mix(in srgb,var(--primary-color) 4%,transparent)}
.v-hsc2-mn-grp.is-open>.v-hsc2-mn-sub{display:block}
.v-hsc2-mn-sublink{display:flex;align-items:center;gap:.6rem;padding:.7rem 1.25rem .7rem 4rem;font-size:.88rem;font-weight:500;color:var(--text-muted);text-decoration:none;border-bottom:1px solid var(--border-color);transition:color .15s,padding-left .15s;position:relative}
.v-hsc2-mn-sublink::before{content:'';position:absolute;left:2.6rem;top:50%;transform:translateY(-50%);width:5px;height:5px;border-radius:50%;background:var(--primary-color);opacity:.55}
.v-hsc2-mn-sublink:last-child{border-bottom:none}
.v-hsc2-mn-sublink:hover{color:var(--primary-dark,var(--primary-color));padding-left:4.3rem}
.v-hsc2-mn-sublink:hover::before{opacity:1}
.v-hsc2-mn-div{height:6px;background:color-mix(in srgb,var(--border-color) 60%,transparent)}
.v-hsc2-x{background:var(--surface-color);border:none;cursor:pointer;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-color);transition:background .2s,color .2s}
.v-hsc2-x:hover{background:var(--primary-dark,var(--primary-color));color:var(--text-inverse,#fff)}
.v-hsc2-tab-bar{display:none}
.v-hsc2-tab-bar-inner{padding:0 1rem;display:flex;align-items:center;min-height:40px;gap:.5rem}
.v-hsc2-tab-menu-btn{display:inline-flex;align-items:center;gap:.45rem;padding:.38rem .9rem;font-size:.875rem;font-weight:700;color:var(--text-muted);background:none;border:1px solid var(--border-color);border-radius:var(--border-radius,6px);cursor:pointer;font-family:var(--font-family,inherit);transition:background .16s,color .16s,border-color .16s;white-space:nowrap}
.v-hsc2-tab-menu-btn:hover{background:color-mix(in srgb,var(--primary-color) 10%,transparent);color:var(--primary-dark,var(--primary-color));border-color:var(--primary-color)}
.v-hsc2-tab-call{display:none;align-items:center;gap:.3rem;padding:.35rem .7rem;background:var(--primary-color);color:var(--text-inverse,#fff);font-size:.78rem;font-weight:700;border-radius:var(--border-radius,6px);text-decoration:none;white-space:nowrap;transition:background .2s}
.v-hsc2-tab-call:hover{background:var(--primary-dark,var(--primary-color))}
.v-hsc2-cta-icon{display:none}
.v-hsc2-cta-short{display:none}
@media(min-width:1024px){.v-hsc2-nav-row{display:block}.v-hsc2-brgr{display:none !important}.v-hsc2-tab-bar{display:none !important}.v-hsc2-nav-inner{display:flex !important}.v-hsc2-tab-call{display:none !important}}
@media(min-width:600px) and (max-width:1023px){.v-hsc2-top-inner{display:flex;gap:.5rem}.v-hsc2-center{order:1;flex:0 0 auto}.v-hsc2-left{order:4;flex:0 0 auto;display:flex}.v-hsc2-right{order:3;flex:1;justify-content:flex-end}.v-hsc2-brgr{display:flex !important}.v-hsc2-phone{display:none !important}.v-hsc2-srch{display:flex !important}.v-hsc2-srch input{width:180px}.v-hsc2-cta-txt{display:none !important}.v-hsc2-cta-icon{display:none !important}.v-hsc2-cta-short{display:inline !important}.v-hsc2-cta-d{padding:.35rem .7rem;font-size:.78rem;line-height:inherit}.v-hsc2-tab-call{display:inline-flex !important}.v-hsc2-nav-row{display:none !important}}
@media(max-width:599px){.v-hsc2-top-inner{display:flex;gap:.4rem;height:56px;padding:0 .5rem 0 0}.v-hsc2-left{order:1;flex:0 0 auto;margin-right:.65rem}.v-hsc2-center{order:2;flex:0 0 auto}.v-hsc2-center img{height:28px !important}.v-hsc2-right{order:3;flex:1;justify-content:flex-end;padding-right:.25rem}.v-hsc2-brgr{display:flex}.v-hsc2-phone{display:none !important}.v-hsc2-srch{display:flex !important}.v-hsc2-srch{margin-left:auto;flex-shrink:1}.v-hsc2-srch input{width:100px;min-width:60px}.v-hsc2-cta-d{display:none !important}.v-hsc2-tab-call{display:none !important}.v-hsc2-tab-call span{display:none}.v-hsc2-nav-row{display:none !important}}
.v-hsc2-catdrop{position:relative;flex-shrink:0}
.v-hsc2-catdrop__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.48rem 1rem;background:var(--primary-dark);color:var(--text-inverse,#fff);font-size:.875rem;font-weight:700;border:none;border-radius:var(--border-radius,6px);cursor:pointer;white-space:nowrap;font-family:var(--font-family,inherit);transition:background .18s,transform .18s cubic-bezier(.34,1.56,.64,1);letter-spacing:.01em}
.v-hsc2-catdrop__btn:hover{background:var(--primary-color);transform:scale(1.03)}
.v-hsc2-catdrop__chev{transition:transform .2s;flex-shrink:0;opacity:.8}
.v-hsc2-catdrop:hover .v-hsc2-catdrop__chev,.v-hsc2-catdrop.is-open .v-hsc2-catdrop__chev{transform:rotate(180deg)}
.v-hsc2-catdrop__menu{display:none;position:absolute;top:calc(100% + 2px);left:0;min-width:200px;width:max-content;max-width:calc(var(--hdr-cat-cols,1)*220px + .6rem);background:var(--bg-color,#fff);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 10px 32px color-mix(in srgb,var(--text-color) 10%,transparent);z-index:500;padding:.3rem;list-style:none;gap:0}
.v-hsc2-catdrop__menu::before{content:'';position:absolute;top:-10px;left:-8px;right:-8px;height:10px}
.v-hsc2-catdrop:hover .v-hsc2-catdrop__menu,.v-hsc2-catdrop.is-open .v-hsc2-catdrop__menu{display:grid;grid-template-columns:repeat(var(--hdr-cat-cols,1),minmax(160px,1fr))}
.v-hsc2-catdrop__thumb{width:1.75rem;height:1.75rem;border-radius:4px;object-fit:cover;flex-shrink:0;opacity:.85}
.v-hsc2-catdrop__item{position:relative;width:100%}
.v-hsc2-catdrop__link{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:.5rem .8rem;border-radius:7px;font-size:.84rem;font-weight:600;color:var(--text-color);text-decoration:none;transition:background .14s,color .14s;box-sizing:border-box}
.v-hsc2-catdrop__link:hover{background:color-mix(in srgb,var(--primary-color) 10%,transparent);color:var(--primary-dark)}
.v-hsc2-catdrop__label{flex:1;text-align:left}
.v-hsc2-catdrop__sub-arrow{flex-shrink:0;opacity:.4;transition:opacity .15s}
.v-hsc2-catdrop__link:hover .v-hsc2-catdrop__sub-arrow{opacity:.7}
.v-hsc2-catdrop__sub{display:none;position:absolute;top:0;left:100%;margin-left:.25rem;min-width:180px;width:max-content;max-width:220px;background:var(--bg-color,#fff);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 10px 32px color-mix(in srgb,var(--text-color) 10%,transparent);z-index:501;padding:.3rem;flex-direction:column;gap:0}
.v-hsc2-catdrop__sub::before{content:'';position:absolute;top:-8px;bottom:-8px;left:-10px;width:10px}
.v-hsc2-catdrop__item--has-sub:hover>.v-hsc2-catdrop__sub,.v-hsc2-catdrop__item--has-sub:focus-within>.v-hsc2-catdrop__sub{display:flex}
.v-hsc2-catdrop__sub .v-hsc2-catdrop__link{font-size:.82rem;font-weight:500}
.v-hsc2-catdrop{margin-right:.35rem;padding-right:.5rem;border-right:1px solid var(--border-color)}
.v-hsc2-nav-inner .v-menu{list-style:none;margin:0;padding:0;display:flex;gap:.1rem;flex-wrap:nowrap;align-items:center}
.v-hsc2-nav-inner .v-menu__item{position:relative;width:100%}
.v-hsc2-nav-inner .v-menu__link{display:inline-flex;align-items:center;gap:.3rem;padding:.55rem .88rem;font-size:.875rem;font-weight:600;color:var(--hdr-text,var(--text-color));text-decoration:none;border:none;background:none;cursor:pointer;white-space:nowrap;border-radius:var(--border-radius,6px);transition:background .16s,color .16s;font-family:var(--font-family,inherit)}
.v-hsc2-nav-inner .v-menu__link:hover,.v-hsc2-nav-inner .v-menu__item:hover>.v-menu__link{background:color-mix(in srgb,var(--primary-color) 10%,transparent);color:var(--primary-dark,var(--primary-color))}
.v-hsc2-nav-inner .v-menu__item:has(>.v-menu--sub)>.v-menu__link{padding-right:.6rem}
.v-hsc2-nav-inner .v-menu__item:has(>.v-menu--sub)>.v-menu__link::after{content:'';display:inline-block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;margin-left:.3rem;opacity:.55;transition:transform .2s;vertical-align:middle;flex-shrink:0}
.v-hsc2-nav-inner .v-menu__item:has(>.v-menu--sub):hover>.v-menu__link::after{transform:rotate(180deg);opacity:.85}
.v-hsc2-nav-inner .v-menu--sub{display:none;position:absolute;top:100%;left:0;min-width:168px;width:max-content;max-width:240px;flex-direction:column;gap:.25rem;padding:.45rem;background:var(--bg-color,#fff);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 8px 28px color-mix(in srgb,var(--text-color) 10%,transparent);z-index:500;list-style:none}
.v-hsc2-nav-inner .v-menu--sub::before{content:'';position:absolute;top:-10px;left:-8px;right:-8px;height:10px}
.v-hsc2-nav-inner .v-menu__item:hover>.v-menu--sub,.v-hsc2-nav-inner .v-menu__item:focus-within>.v-menu--sub{display:flex}
.v-hsc2-nav-inner .v-menu--sub .v-menu__link{width:100%;padding:.62rem 1rem;border-radius:7px;font-weight:600;font-size:.82rem;display:flex;align-items:center;gap:.5rem;text-align:left;box-sizing:border-box}
.v-hsc2-nav-inner .v-menu--sub .v-menu__link .v-menu__label{flex:1;text-align:left}
.v-hsc2-nav-inner .v-menu--sub .v-menu__link::after{content:'';display:inline-block;flex-shrink:0;width:5px;height:5px;border-right:1.5px solid currentColor;border-top:1.5px solid currentColor;transform:rotate(45deg);opacity:.3;margin-left:auto;transition:opacity .15s,transform .18s ease}
.v-hsc2-nav-inner .v-menu--sub .v-menu__link:hover::after{opacity:.7;transform:rotate(45deg) translateX(2px)}
.v-hsc2-mob-nav .v-menu{list-style:none;margin:0;padding:0}
.v-hsc2-mob-nav .v-menu__item{border-bottom:1px solid var(--border-color)}
.v-hsc2-mob-nav .v-menu__item:last-child{border-bottom:none}
.v-hsc2-mob-nav .v-menu__link{display:flex;align-items:center;gap:.6rem;padding:.8rem 0;font-size:clamp(0.8rem,2.5vw,1rem);font-weight:600;color:var(--text-color);text-decoration:none;transition:color .18s,padding-left .15s;width:100%}
.v-hsc2-mob-nav .v-menu__icon{width:1.15rem;height:1.15rem;flex-shrink:0}
.v-hsc2-mob-nav .v-menu__link:hover{color:var(--primary-dark,var(--primary-color));padding-left:.35rem}
.v-hsc2-mob-nav .v-menu--sub{list-style:none;padding:.25rem 0 .25rem 1rem;display:block}
.v-hsc2-mob-nav .v-menu--sub .v-menu__link{font-size:.9rem;color:var(--text-muted);padding:.55rem 0}
.v-hsc2-mob-nav .v-menu--sub-2{list-style:none;padding:.2rem 0 .2rem 1rem;display:block}
.v-hsc2-mob-nav .v-menu--sub-2 .v-menu__link{font-size:.84rem;color:var(--text-muted);padding:.45rem 0}
.v-hsc2-mob-nav .v-menu__item>.v-menu--sub{display:none}
.v-hsc2-mob-nav .v-menu__item.is-open>.v-menu--sub{display:block}
.v-hsc2-mob-nav .v-menu__item>.v-menu--sub-2{display:none}
.v-hsc2-mob-nav .v-menu__item.is-open>.v-menu--sub-2{display:block}
.v-hsc2-mob-nav .v-menu__item:has(>.v-menu--sub)>.v-menu__link::after,.v-hsc2-mob-nav .v-menu__item:has(>.v-menu--sub-2)>.v-menu__link::after{content:'';display:inline-block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;margin-left:auto;opacity:.45;transition:transform .2s;flex-shrink:0}
.v-hsc2-mob-nav .v-menu__item.is-open:has(>.v-menu--sub)>.v-menu__link::after{transform:rotate(180deg);opacity:.8}

/* ================================================================
   §K — Store Classic Footer (v-fsc-*)
   Rich footer: logo + about / quick links / categories / contact.
   ================================================================ */
.v-fsc{background:var(--ftr-bg);border-top:2px solid var(--ftr-border);color:var(--ftr-text);font-family:var(--font-family,system-ui,sans-serif);width:100%;position:relative;box-shadow:var(--ftr-shadow)}
.v-fsc>*{position:relative;z-index:1}
.v-fsc-inner{width:100%;font-family:var(--font-family,inherit)}
.v-fsc-r1-inner,.v-fsc-r2-inner,.v-fsc-r3-inner{max-width:var(--ftr-bg-image,none);margin:0 auto;padding:0 1.5rem}
.v-fsc-r1{border-bottom:1px solid var(--border-color)}
.v-fsc-r1-inner{display:grid;grid-template-columns:220px 1fr;gap:3.5rem;align-items:start;padding:3rem 1.5rem 2.5rem}
.v-fsc-brand{display:flex;flex-direction:column;gap:1.25rem}
.v-fsc-tagline{display:flex;align-items:center;gap:6px;color:var(--primary-dark);font-size:.72rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase}
.v-fsc-tagline-line{display:inline-block;width:20px;height:1.5px;background:var(--primary-dark)}
.v-fsc-soc{display:flex;gap:.5rem;margin-top:.25rem}
.v-fsc-soc a{width:34px;height:34px;background:var(--border-color);border-radius:var(--radius-md,6px);display:flex;align-items:center;justify-content:center;transition:background .25s;text-decoration:none}
.v-fsc-soc a:hover{background:var(--ftr-soc-hover)}
.v-fsc-soc a:hover svg{color:#fff}
.v-fsc-soc svg{width:14px;height:14px;color:var(--ftr-soc)}
.v-fsc-about{border-left:3px solid var(--primary-color);padding-left:2rem}
.v-fsc-para{column-count:2;column-gap:2.5rem;font-size:var(--fs-body);color:var(--ftr-text);line-height:var(--lh-body,1.6);text-align:justify;orphans:3;widows:3}
.v-fsc-r2{border-bottom:1px solid var(--ftr-border)}
.v-fsc-r2-inner{display:grid;grid-template-columns:1fr 1fr 1fr;gap:3rem;padding:2.5rem 1.5rem}
.v-fsc-col-hd{font-family:var(--heading-font,var(--font-family,inherit));font-size:var(--fs-h6);font-weight:800;line-height:var(--lh-heading,1.2);color:var(--ftr-heading);margin-bottom:1rem;letter-spacing:.02em;text-transform:uppercase}
.v-fsc-contact-lbl{color:var(--primary-dark);font-size:var(--fs-xs);font-weight:800;letter-spacing:.14em;text-transform:uppercase;margin-bottom:.2rem}
.v-fsc-r2 .v-menu{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.v-fsc-r2 .v-menu__link{display:inline-flex;align-items:center;padding:.25rem .75rem;border-radius:999px;border:1px solid var(--ftr-border);background:var(--ftr-link-bg);color:var(--ftr-link);font-size:var(--fs-sm);font-family:var(--font-family,inherit);line-height:var(--lh-tight,1.1);text-decoration:none;white-space:nowrap;transition:background .18s,color .18s,border-color .18s}
.v-fsc-r2 .v-menu__link:hover{background:var(--ftr-link-hover-bg);color:var(--ftr-link-hover);border-color:var(--ftr-link-hover-bg)}
.v-fsc-r2 .v-menu--sub{display:none}
.v-fsc-r3-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding:1.25rem 1.5rem}
.v-fsc-copy{color:var(--ftr-copy);font-size:var(--fs-body);line-height:var(--lh-body,1.6)}
.v-fsc-legal{display:flex;gap:1.5rem;flex-wrap:wrap}
.v-fsc-legal a{color:var(--ftr-copy);font-size:var(--fs-body);line-height:var(--lh-tight,1.1);text-decoration:none}
/* sp-footer-template.html's Explore column — Nav Editor's shared
   renderDesktopHTML() emits flat <a class="{navLinkClass}"> items with no
   wrapper, styled here as a block-level link with a CSS-drawn bullet dot
   (::before) instead of the JS-rendered <span> dot the old hardcoded
   markup used, since the renderer doesn't emit one. rn-drop/rn-drop-btn
   (dropdown groups) fall back to their existing header styling if the
   admin ever nests items — acceptable, groups aren't the common case in a
   footer column. */
.ftr-nav-link{display:flex;align-items:center;gap:.5rem;color:var(--ftr-link);text-decoration:none;padding:0;transition:color var(--ftr-transition,none)}
.ftr-nav-link:hover{color:var(--ftr-link-hover)}
.ftr-nav-link::before{content:'';width:4px;height:4px;border-radius:50%;background:var(--ftr-heading);flex-shrink:0;opacity:.55}
/* Plain variant — no bullet dot, block-level — for footer templates whose
   Quick Links/Categories sit in a 2-col CSS grid instead of a stacked
   single column (dot markers read as visual noise there). Selected per
   template via data-nav-link-class / data-cat-linkclass on the marker. */
.ftr-nav-link-plain{display:block;color:var(--ftr-link);text-decoration:none;transition:color var(--ftr-transition,none)}
.ftr-nav-link-plain:hover{color:var(--ftr-link-hover)}
/* Social icon buttons — needs a real :hover state, which an inline style=
   attribute can't express and blobs can't carry a <style> block for —
   hence a real class, driven by the SAME --ftr-soc/--ftr-soc-hover tokens
   Settings → Footer already exposes (not a hardcoded --primary-color). */
.ftr-soc-btn{width:38px;height:38px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--ftr-link-bg);color:var(--ftr-soc);text-decoration:none;transition:transform .2s,background var(--ftr-transition,.2s),color var(--ftr-transition,.2s);flex-shrink:0}
.ftr-soc-btn:hover{background:var(--ftr-link-hover-bg);color:var(--ftr-soc-hover);transform:translateY(-3px) scale(1.06)}

/* ── Standard footer pieces (Settings > Footer) ─────────────────────────
   Column heading + the contact/legal columns are built by the server
   ([[footer.contactCol]] / [[footer.legalCol]]); the About row, payments row
   and the app bar's desktop-collapse are appended after the footer page
   (internal/handler/page/footerextras.go). All colours come from the same
   --ftr-* tokens as the designs, so a Settings > Footer re-theme moves them. */
.ftr-col__title{font-size:var(--ftr-fs-heading,var(--fs-xs));font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ftr-heading);margin:0 0 .9rem}
.ftr-contact,.ftr-legal{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}
.ftr-contact__row{display:flex;flex-direction:column;gap:.1rem}
.ftr-contact__lbl{font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ftr-copy);opacity:.75}
.ftr-contact__val,.ftr-contact__val a,.ftr-legal a{color:var(--ftr-link);text-decoration:none;overflow-wrap:anywhere}
.ftr-contact__val a:hover,.ftr-legal a:hover{color:var(--ftr-link-hover)}
.ftr-extra{background:var(--ftr-bg)}
.ftr-shell [style*="var(--ftr-copy)"]{font-size:var(--ftr-fs-copy,var(--fs-sm))}
/* social buttons: the glyph stays visible on hover (hover background and glyph were both the primary colour). Bug fix only, default look unchanged. */
.ftr-shell a[aria-label="Facebook"]:hover,.ftr-shell a[aria-label="Instagram"]:hover,.ftr-shell a[aria-label="Twitter / X"]:hover,.ftr-shell a[aria-label="YouTube"]:hover,.ftr-shell a[aria-label="LinkedIn"]:hover{color:var(--ftr-link-hover,var(--text-inverse,#fff)) !important}
.ftr-extra__inner{max-width:var(--ftr-bg-image,none);margin:0 auto;padding:1rem}
@media(min-width:1024px){.ftr-extra__inner{padding-left:2rem;padding-right:2rem}}
.ftr-seo{font-size:var(--fs-xs);line-height:1.65;color:var(--ftr-seo,var(--ftr-copy))}
.ftr-seo__title{font-size:var(--fs-sm);font-weight:700;margin:0 0 .4rem}
.ftr-seo p{margin:0 0 .5rem;max-width:none}
.ftr-seo__meta,.ftr-seo__disc{opacity:.85}
.ftr-pay{container-type:inline-size}
.ftr-pay .ftr-extra__inner{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:.75rem}
.ftr-pay__lbl{flex:none;white-space:nowrap;font-size:var(--fs-xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ftr-heading)}
.ftr-pay__list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:flex-end}
.ftr-pay__item{display:inline-flex;align-items:center;justify-content:center;width:2.8rem;height:2.2rem;padding:.3rem}
.ftr-pay__item img{width:100%;height:100%;object-fit:contain}
.ftr-pay__ico{display:none;color:#fff}
.ftr-pay__item.is-fallback{border-color:transparent}
.ftr-pay__item.is-fallback .ftr-pay__ico{display:inline-flex}
@container (max-width:760px){.ftr-pay__lbl{display:none}}
/* App-bar mode: on a phone/touch device the big desktop footer collapses and the
   bottom tab bar (.v-tabbar, input.css) takes over -- the same rule the App Bar
   design has always applied to its own .ftr-appbar-desktop, now switch-driven. */
@media(max-width:991px) and (pointer:coarse){body:has(.ftr-appbar-flag) .ftr-shell{display:none}
/* with the mobile app bar on, the detailed About row is not shown on screen either; it stays in the page (visually hidden) so search engines still read it */
body:has(.ftr-appbar-flag) .ftr-seo{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}}
body:has(.ftr-quote-off) #ftr-quote-bar{display:none !important}
/* .ftr-shell — footer wrapper, applies Settings → Footer's shadow. No
   background-image layer here anymore — --ftr-bg-image is REPURPOSED as
   the footer's own max-width value now (tenant/models.go
   FooterThemeConfig.BgImage's doc comment); "Background image URL" as an
   actual image feature was removed. */
.ftr-shell{position:relative;box-shadow:var(--ftr-shadow,none);font-family:var(--ftr-font,inherit);font-size:var(--ftr-fs-text,inherit)}
/* ── Card footer design (sp-footer-template.html #footer-appbar) ──────────
   One rounded card: brand + socials left, three link columns right, then a bottom
   bar. Colours, shadow and max width all come from the --ftr-* footer settings. */
/* Type scale (every column and row uses these, whatever class the saved links carry):
   name 1.25rem/800 - tagline, links, contact values, quote, bottom links: --fs-body (normal footer size) - copyright: --fs-sm - labels, headings: --fs-xs */
.ftr-card,.ftr-card *{font-family:inherit}
.ftr-card{font-size:var(--ftr-fs-text,var(--fs-body));line-height:1.6;font-weight:400}
.ftr-card-outer{padding:1rem 0 0}
@media(min-width:768px){.ftr-card-outer{padding:1.25rem 1.5rem 1.75rem}}
@media(min-width:1024px){.ftr-card-outer{padding:1.5rem 2rem 2rem}}
.ftr-card{background:var(--ftr-bg);color:var(--ftr-text);border-radius:.5rem .5rem 0 0;box-shadow:var(--ftr-shadow,none);border:1px solid color-mix(in srgb,var(--ftr-border) 55%,transparent);filter:drop-shadow(0 14px 22px rgba(0,0,0,.10));padding:1.75rem 1.25rem 1.1rem}
@media(min-width:768px){.ftr-card{border-radius:.5rem;padding:2.5rem 2.25rem 1.4rem}}
.ftr-card__top{display:grid;grid-template-columns:minmax(0,1fr);gap:2rem}
@media(min-width:1024px){.ftr-card__top{grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:3rem}}
.ftr-card__brandlink{display:inline-flex;align-items:center;gap:.6rem;margin-bottom:.9rem;text-decoration:none}
.ftr-card__name{font-weight:800;font-size:var(--ftr-fs-brand,1.25rem);line-height:1.2;color:var(--ftr-heading)}
.ftr-card__tag{max-width:100%;margin:0 0 1.1rem;font-size:var(--ftr-fs-text,var(--fs-body));line-height:1.7;color:var(--ftr-text);opacity:.9}
.ftr-card__soc{display:flex;flex-wrap:wrap;gap:.5rem}
.ftr-card__cols{display:flex;flex-wrap:wrap;gap:1.5rem 2.5rem;align-content:flex-start}
.ftr-card__cols>[data-ftr-col]{flex:1 1 9rem;min-width:0}
@media(min-width:1024px){.ftr-card__cols{flex-wrap:nowrap;gap:1.5rem 2.5rem}.ftr-card__cols>[data-ftr-col]{flex:1 1 0;min-width:0}.ftr-card__cols>[data-ftr-col]:last-of-type{flex-grow:1.4}}
@media(max-width:479px){.ftr-card__cols>[data-ftr-col]{flex-basis:42%}}
/* Link hover = a pill sized to the text, not a full-width block. Applies to whatever class the
   Nav Editor baked into the links (the header's rn-link, ftr-nav-link-plain, ...). */
.ftr-card__cols [data-ftr-col] a:not(.ftr-soc-btn){font-size:var(--ftr-fs-text,var(--fs-body));font-weight:400;line-height:1.4;display:block;width:fit-content;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:-.7rem;padding:.28rem .7rem;border-radius:999px;background:transparent;color:var(--ftr-link);text-decoration:none;transition:background .15s,color .15s}
.ftr-card__cols [data-ftr-col] a:not(.ftr-soc-btn):hover,.ftr-card__cols [data-ftr-col] a:not(.ftr-soc-btn).active{background:var(--ftr-link-hover-bg,var(--primary-color));color:var(--ftr-link-hover,var(--text-inverse,#fff))}
.ftr-card__cols [data-ftr-col] a:not(.ftr-soc-btn)::before{display:none}
/* social buttons: the glyph must stay visible on hover (background and glyph were both the primary colour) */
.ftr-card__soc .ftr-soc-btn:hover{background:var(--ftr-link-hover-bg,var(--primary-color));color:var(--ftr-link-hover,var(--text-inverse,#fff));transform:translateY(-2px)}
.ftr-card__cols .ftr-contact__val,.ftr-card__cols .ftr-contact a{font-size:var(--ftr-fs-text,var(--fs-body));font-weight:400}
.ftr-card__cols .ftr-contact a{margin-left:0;padding:0;border-radius:0;display:inline}
.ftr-card__cols .ftr-contact a:hover{background:transparent;color:var(--ftr-link-hover)}
.ftr-card__cols [data-ftr-col]>div{gap:.15rem !important}
/* Editorial footer: the uploaded illustration (footer-illustration.jpg) is the footer's BACKGROUND, behind the
   text, not a separate strip under it. Works on saved copies too: it keys on the picture itself, and only while
   that picture is really there (no picture -> the footer is unchanged). */
.ftr-shell:has(>div>img[src*="footer-illustration"]:not([style*="display: none"]):not([style*="display:none"])){position:relative;overflow:hidden;isolation:isolate}
.ftr-shell:has(>div>img[src*="footer-illustration"]:not([style*="display: none"]):not([style*="display:none"]))>div:has(>img[src*="footer-illustration"]){position:absolute;inset:0;z-index:-1;width:100%;height:100%;line-height:0}
.ftr-shell:has(>div>img[src*="footer-illustration"]:not([style*="display: none"]):not([style*="display:none"]))>div>img[src*="footer-illustration"]{width:100% !important;height:100% !important;max-height:none !important;object-fit:cover !important;object-position:center bottom !important}
.ftr-shell:has(>div>img[src*="footer-illustration"]:not([style*="display: none"]):not([style*="display:none"]))>div:has(>img[src*="footer-illustration"])::after{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,color-mix(in srgb,var(--ftr-bg) 94%,transparent) 0%,color-mix(in srgb,var(--ftr-bg) 70%,transparent) 55%,transparent 100%)}
.ftr-shell:has(>div>img[src*="footer-illustration"]:not([style*="display: none"]):not([style*="display:none"]))>div:not(:has(>img[src*="footer-illustration"])){position:relative;padding-bottom:9rem}
.ftr-card__quote{display:flex;align-items:center;gap:1rem;margin-top:1.75rem;padding:1.1rem 0;border-top:1px solid color-mix(in srgb,var(--ftr-border) 45%,transparent)}
.ftr-card__qmark{flex-shrink:0;font:400 2.6rem/1 Georgia,serif;color:var(--ftr-heading);opacity:.35}
.ftr-card__qtext{margin:0;flex:1;min-width:0;font-size:var(--ftr-fs-text,var(--fs-body));font-style:italic;line-height:1.6;color:var(--ftr-text)}
.ftr-card__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1.5rem;margin-top:2rem;padding-top:1.1rem;border-top:1px solid color-mix(in srgb,var(--ftr-border) 45%,transparent)}
.ftr-card__links{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;font-size:var(--ftr-fs-text,var(--fs-body))}
.ftr-card__links a{font-size:var(--ftr-fs-text,var(--fs-body));font-weight:400;color:var(--ftr-link);text-decoration:none;transition:color .15s}
.ftr-card__links a:hover{color:var(--ftr-link-hover)}
.ftr-card__copy{margin:0;color:var(--ftr-copy);font-size:var(--ftr-fs-copy,var(--fs-sm))}
@media(max-width:639px){.ftr-card__bar{justify-content:center;text-align:center}.ftr-card__links{justify-content:center}}
/* Newsletter capture block — [[org.newsletterForm]] (staticpage.go) emits
   this markup only when Settings → Newsletter → Enabled is on. UI-only for
   now; no subscribe endpoint exists yet in this codebase (form has no
   working action) — wire one up before relying on this in production. */
.ftr-newsletter-heading{font-weight:700;margin:0 0 .75rem}
.ftr-newsletter-form{display:flex;gap:.5rem;flex-wrap:wrap}
.ftr-newsletter-input{flex:1;min-width:180px;padding:.65rem .9rem;border-radius:8px;border:1px solid var(--ftr-border);background:var(--ftr-bg);color:var(--ftr-text);font-family:inherit}
.ftr-newsletter-input:focus{outline:none;border-color:var(--primary-color)}
.ftr-newsletter-btn{padding:.65rem 1.1rem;border-radius:8px;border:none;background:var(--primary-color);color:var(--text-inverse,#fff);font-weight:600;cursor:pointer;white-space:nowrap}
.ftr-newsletter-btn:hover{filter:brightness(.92)}
@keyframes v-fsc-fade-in{from{opacity:0}to{opacity:1}}
@keyframes v-fsc-slide-up{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}
.v-fsc.v-fsc-anim-fade-in{animation:v-fsc-fade-in .6s ease both}
.v-fsc.v-fsc-anim-slide-up{animation:v-fsc-slide-up .6s ease both}
@media(max-width:1023px){.v-fsc-r1-inner{grid-template-columns:180px 1fr;gap:2rem}.v-fsc-r2-inner{grid-template-columns:1fr 1fr}.v-fsc-r2-inner>:last-child{grid-column:1/-1}}
@media(max-width:767px){.v-fsc-r1-inner{grid-template-columns:1fr;gap:1.5rem;padding:2rem 1rem}.v-fsc-about{border-left:none;border-top:3px solid var(--primary-color,#fcd703);padding-left:0;padding-top:1.25rem;margin-top:.25rem}.v-fsc-para{column-count:1}.v-fsc-r2-inner{grid-template-columns:1fr;gap:2rem;padding:2rem 1rem}.v-fsc-r2-inner>:last-child{grid-column:auto}.v-fsc-r2 .v-menu{grid-template-columns:1fr 1fr}.v-fsc-r3-inner{padding:1.25rem 1rem}}

/* ── §L — Menu icons ── */
.v-menu__icon{display:inline-flex;align-items:center;justify-content:center;width:1.1em;height:1.1em;vertical-align:middle;flex-shrink:0}
.v-menu__icon svg{width:100%;height:100%}

/* ================================================================
   §I — Paushtik About Page (v-abt-*)
   ================================================================ */
.v-abt-hero{background-color:#14532d;color:#fff}
.v-abt-eyebrow{color:#facc15;font-size:var(--eyebrow-font-size,.75rem);font-weight:700;text-transform:var(--eyebrow-text-transform,uppercase);letter-spacing:var(--eyebrow-letter-spacing,.15em);display:block}
.v-abt-eyebrow-g{color:#16a34a;font-size:var(--eyebrow-font-size,.75rem);font-weight:700;text-transform:var(--eyebrow-text-transform,uppercase);letter-spacing:var(--eyebrow-letter-spacing,.15em);display:block}
.v-abt-hero-sub{color:#bbf7d0}
.v-abt-cream{background-color:#FAF7F2}
.v-abt-mission{background-color:#166534;color:#fff}
.v-abt-mission-ic{background-color:#15803d}
.v-abt-vision{background-color:#facc15;color:#fff}
.v-abt-vision-ic{background-color:#eab308}
.v-abt-stats{background-color:#166534;color:#fff}
.v-abt-stat-num{font-size:3rem;font-weight:700;color:#facc15;line-height:1}
.v-abt-year{color:#15803d}
.v-abt-year-alt{color:#ca8a04}
.v-abt-badge{background-color:#facc15;color:#fff}
.v-abt-tl-line{background-color:#bbf7d0}
.v-abt-tl-dot{background-color:#166534}
.v-abt-tl-dot-alt{background-color:#facc15}
.v-abt-btn{background-color:#15803d;color:#fff;display:inline-flex;align-items:center;justify-content:center}
.v-abt-btn:hover{background-color:#166534}
.v-abt-btn-out{border:2px solid #15803d;color:#15803d;display:inline-flex;align-items:center;justify-content:center}
.v-abt-btn-out:hover{background-color:#15803d;color:#fff}
.v-abt-img-ph{background:linear-gradient(135deg,#bbf7d0 0%,#86efac 100%)}
.v-serif{font-family:var(--heading-font,'Playfair Display',Georgia,serif)}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .65s ease,transform .65s ease}
.reveal.visible{opacity:1;transform:translateY(0)}
.reveal-delay-1{transition-delay:.1s}
.reveal-delay-2{transition-delay:.2s}
.reveal-delay-3{transition-delay:.3s}

/* ================================================================
   §J — Paushtik Team Page (v-team-*)
   ================================================================ */
.v-team-hero{position:relative;min-height:680px;overflow:hidden;display:flex;align-items:center}
.v-team-hero-bg{position:absolute;inset:0;z-index:0;overflow:hidden}
.v-team-hero-bg img{width:100%;height:115%;object-fit:cover;object-position:center 30%;display:block}
.v-team-hero-ov{position:absolute;inset:0;background:linear-gradient(125deg,rgba(10,14,22,.55) 0%,rgba(10,14,22,.15) 100%);z-index:1}
.v-team-hero-ghost{position:absolute;bottom:-2rem;right:-2rem;font-family:var(--heading-font);font-size:clamp(6rem,12vw,14rem);font-weight:800;color:rgba(255,255,255,.035);line-height:1;letter-spacing:.06em;pointer-events:none;user-select:none;z-index:2;white-space:nowrap}
.v-team-hero-cnt{position:relative;z-index:10;width:100%;display:flex;align-items:center;padding:5rem 0 3rem;line-height:normal}
.v-particle{position:absolute;pointer-events:none;z-index:3;opacity:.55}
@keyframes v-drift1{0%,100%{transform:translateY(0) rotate(0deg) scale(1)}40%{transform:translateY(-28px) rotate(14deg) scale(1.05)}70%{transform:translateY(-14px) rotate(-8deg) scale(.97)}}
@keyframes v-drift2{0%,100%{transform:translateY(0) rotate(0deg) translateX(0)}35%{transform:translateY(-38px) rotate(18deg) translateX(10px)}70%{transform:translateY(-20px) rotate(-6deg) translateX(-6px)}}
@keyframes v-drift3{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-44px) rotate(22deg)}}
@keyframes v-drift4{0%,100%{transform:translateY(0) scale(1)}45%{transform:translateY(-22px) scale(1.08)}80%{transform:translateY(-10px) scale(.94)}}
@keyframes v-drifts{0%,100%{transform:translateY(0) rotate(0deg) scale(1)}33%{transform:translateY(-60px) rotate(10deg) scale(1.03)}66%{transform:translateY(-30px) rotate(-5deg) scale(.98)}}
.v-scroll-ind{position:absolute;bottom:2.5rem;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:.5rem;color:rgba(255,255,255,.6);font-size:.65rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;z-index:10}
.v-scroll-chev{animation:v-bounce 1.6s ease-in-out infinite}
@keyframes v-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(8px)}}
.v-sec-tag{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin-bottom:.875rem;color:var(--primary-dark)}
.sec-tag{display:inline-flex;align-items:center;gap:8px;font-size:var(--eyebrow-font-size,var(--fs-xs));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.12em);text-transform:var(--eyebrow-text-transform,uppercase);margin-bottom:.875rem;color:var(--eyebrow-color-dark,var(--primary-dark))}
.v-sec-tag-line{width:28px;height:2px;border-radius:2px;background:var(--primary-color,#fcd703);display:inline-block}
.v-ghost-txt{position:absolute;font-family:var(--heading-font);font-size:clamp(6rem,10vw,11rem);font-weight:800;line-height:1;letter-spacing:.08em;pointer-events:none;user-select:none;white-space:nowrap;color:color-mix(in srgb,var(--text-strong) 4%,transparent)}
.v-team-card{background:var(--bg-color);border-radius:20px;overflow:hidden;border:1px solid var(--border-gray);transition:transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .35s;position:relative;cursor:default}
.v-team-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--primary-color,#fcd703),var(--primary-dark,#b8940a));transform:scaleX(0);transform-origin:left;transition:transform .38s ease;z-index:2}
.v-team-card:hover::before{transform:scaleX(1)}
.v-team-card:hover{transform:translateY(-8px);box-shadow:0 24px 60px rgba(0,0,0,.11);border-color:color-mix(in srgb,var(--primary-color,#fcd703) 30%,transparent)}
.v-team-card-img{width:100%;overflow:hidden;position:relative;background:var(--bg-light)}
.v-team-card-img img{width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform .5s ease;display:block}
.v-team-card:hover .v-team-card-img img{transform:scale(1.04)}
.v-team-card-body{padding:1.5rem 1.75rem 1.75rem}
.v-team-role{display:inline-block;background:color-mix(in srgb,var(--primary-color,#fcd703) 12%,var(--bg-color,#fff));color:var(--primary-dark,#b8940a);font-size:.68rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;padding:.25rem .75rem;border-radius:50px;border:1px solid color-mix(in srgb,var(--primary-color,#fcd703) 30%,transparent);margin-bottom:.625rem}
.v-team-name{font-family:var(--heading-font);font-size:1.2rem;font-weight:800;color:var(--text-strong,#111827);margin-bottom:.625rem;line-height:1.25}
.v-team-bio{color:var(--card-text,var(--text-color,#374151));font-size:.88rem;line-height:1.7}
.v-founder-img{height:300px}
.v-founder-body{padding:1.875rem 2rem 2.25rem}
.v-founder-name{font-family:var(--heading-font);font-size:1.6rem;font-weight:800;color:var(--text-strong,#111827);margin-bottom:.75rem;line-height:1.25}
.v-founder-bio{font-size:.95rem;color:var(--card-text,var(--text-color,#374151));line-height:1.8}
.v-founder-badge{display:inline-flex;align-items:center;gap:6px;background:var(--text-strong,#111827);color:var(--primary-color,#fcd703);font-size:.68rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:.3rem .875rem;border-radius:50px;margin-bottom:.875rem}
.v-core-img{height:220px}
.v-ft-t1{display:grid;grid-template-columns:220px 1fr;gap:3.5rem;align-items:start;padding:3rem 0 2.5rem;border-bottom:1px solid var(--border-color)}
.v-ft-t1-desc{border-left:3px solid var(--primary-color);padding-left:2rem}
.v-ft-t1-para{column-count:2;column-gap:2.5rem;font-size:1rem;color:var(--text-color);line-height:1.85;text-align:justify;orphans:3;widows:3}
.v-ft-t2{display:grid;grid-template-columns:1fr 1fr 1fr;gap:3rem;padding:2.5rem 0;border-bottom:1px solid var(--border-color)}
.v-btt{position:fixed;bottom:1.75rem;right:1.75rem;width:46px;height:46px;border-radius:50%;background:var(--primary-color);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(0,0,0,.15);opacity:0;transform:translateY(8px);transition:opacity .3s,transform .3s;z-index:900;pointer-events:none}
.v-btt.is-vis{opacity:1;transform:translateY(0);pointer-events:auto}
@media(max-width:1023px){.v-ft-t1{grid-template-columns:180px 1fr !important;gap:2rem !important}.v-ft-t2{grid-template-columns:1fr 1fr !important}.v-ft-t2>:last-child{grid-column:1/-1}}
@media(max-width:767px){.v-team-hero{min-height:520px}.v-team-hero-ghost{display:none}.v-particle:nth-child(n+4){display:none}.v-founder-img{height:240px}.v-founder-body{padding:1.25rem 1.5rem 1.5rem}.v-founder-name{font-size:1.3rem}.v-ft-t1{grid-template-columns:1fr !important;gap:1.5rem !important;padding:2rem 0 !important}.v-ft-t1-desc{border-left:none !important;border-top:3px solid var(--primary-color,#fcd703);padding-left:0 !important;padding-top:1.25rem !important;margin-top:.25rem}.v-ft-t1-para{column-count:1 !important}.v-ft-t2{grid-template-columns:1fr !important;gap:2rem !important;padding:2rem 0 !important}.v-ft-t2>:last-child{grid-column:auto}.v-btt{width:40px;height:40px;bottom:1.25rem;right:1.25rem}}
@media(max-width:479px){.v-team-hero{min-height:480px}.v-core-img{height:200px}.v-founder-img{height:200px}}


/* ── §TS06 — Testimonial Grid float animation ───────────────────────────────*/
@keyframes ts06Float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes ts06FloatAlt{0%,100%{transform:translateY(0)}50%{transform:translateY(10px)}}


/* ── §AG — v-drawer: Author Bottom Sheet (mobile) + Right Panel (desktop) ──── */
.v-drawer-backdrop{position:fixed;inset:0;z-index:1040;background:rgba(0,0,0,.45);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .3s ease}
.v-drawer-backdrop.v-drawer-open{opacity:1;pointer-events:auto}
.v-drawer{position:fixed;z-index:1050;background:var(--card-bg,#fff);overflow-y:auto;overscroll-behavior:contain;bottom:0;left:0;right:0;max-height:88vh;border-radius:20px 20px 0 0;transform:translateY(105%);transition:transform .38s cubic-bezier(.32,.72,0,1);padding:0 1.5rem 2rem}
.v-drawer.v-drawer-open{transform:translateY(0)}
@media(min-width:768px){.v-drawer{top:0;bottom:0;right:0;left:auto;width:440px;max-height:100vh;border-radius:0;transform:translateX(105%);padding:0 2rem 2rem}.v-drawer.v-drawer-open{transform:translateX(0)}}
.v-drawer-handle{width:44px;height:4px;background:var(--card-border,#e5e7eb);border-radius:99px;margin:1rem auto 1.25rem;flex-shrink:0}
@media(min-width:768px){.v-drawer-handle{display:none}}
.v-drawer-close{position:sticky;top:1rem;float:right;width:34px;height:34px;border-radius:50%;border:1.5px solid var(--card-border,#e5e7eb);background:var(--bg-color,#fff);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted,#6b7280);transition:all .2s;flex-shrink:0;z-index:2;margin-bottom:-34px}
.v-drawer-close:hover{background:var(--v-drawer-accent,var(--primary-color));color:#fff;border-color:var(--v-drawer-accent,var(--primary-color))}
.v-drawer-photo{width:96px;height:96px;border-radius:50%;object-fit:cover;border:3px solid color-mix(in srgb,var(--primary-color,#fcd703) 25%,transparent);display:block;margin:0 auto 1rem;clear:both}
@media(min-width:768px){.v-drawer-photo{width:120px;height:120px}}
.v-drawer-genre{display:table;margin:0 auto .5rem;padding:.2rem .75rem;border-radius:99px;font-size:var(--fs-xs,.72rem);font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:var(--v-drawer-chip-bg,color-mix(in srgb,var(--v-drawer-accent,var(--primary-color,#fcd703)) 12%,transparent));color:var(--v-drawer-chip-fg,var(--v-drawer-accent,var(--primary-color,#fcd703)))}
.v-drawer-name{font-size:var(--fs-body,1rem);font-weight:800;color:var(--text-strong,#111827);font-family:var(--heading-font);line-height:1.3;margin-bottom:.35rem;text-align:center}
.v-drawer-books-line{font-size:var(--fs-sm,.82rem);color:var(--text-muted,#6b7280);margin-bottom:1.1rem;text-align:center}
.v-drawer-divider{height:1px;background:var(--card-border,#e5e7eb);margin:1rem 0}
.v-drawer-bio{font-size:var(--fs-body,1rem);color:var(--text-color,#374151);line-height:1.8}
.v-drawer-social{display:flex;gap:.75rem;justify-content:center;margin-top:1.5rem}
.v-drawer-social a{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--card-border,#e5e7eb);display:flex;align-items:center;justify-content:center;color:var(--text-muted,#6b7280);transition:all .2s}
.v-drawer-social a:hover{border-color:var(--v-drawer-accent,var(--primary-color));color:var(--v-drawer-accent,var(--primary-color))}
.v-drawer-social svg{width:16px;height:16px}

/* ── §AH — TM-05 Author Grid ──────────────────────────────────────────────── */
.tm5-grid{display:grid;grid-template-columns:repeat(var(--tm05-cols-4,3),1fr);gap:var(--tm05-gap,1.5rem)}
@media(max-width:1023px){.tm5-grid{grid-template-columns:repeat(var(--tm05-cols-3,2),1fr)}}
@media(max-width:599px){.tm5-grid{grid-template-columns:repeat(var(--tm05-cols-0,1),1fr)}}
.tm5-card{background:var(--tm05-card-bg,var(--card-bg,#fff));border:var(--tm05-card-border-w,1px) solid var(--tm05-card-border-c,var(--card-border,#e5e7eb));border-radius:var(--tm05-card-radius,var(--card-radius,12px));overflow:hidden;cursor:pointer;transition:transform .25s,box-shadow .25s;position:relative;box-shadow:var(--tm05-card-shadow,var(--card-shadow,0 2px 8px rgba(0,0,0,.07)))}
.tm5-card:hover{transform:translateY(-6px);box-shadow:var(--card-shadow-hover,0 16px 40px rgba(0,0,0,.13))}
.tm5-card[data-drawer-disabled]{cursor:default}
.tm5-card[data-drawer-disabled]:hover{transform:none;box-shadow:var(--tm05-card-shadow,var(--card-shadow,0 2px 8px rgba(0,0,0,.07)))}
.tm5-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--tm5-chip-fg,var(--tm5-accent,var(--primary-color,#fcd703)));transform:scaleX(0);transform-origin:left;transition:transform .3s ease;z-index:1}
.tm5-card:hover::before{transform:scaleX(1)}
.tm5-img{width:100%;height:var(--tm05-img-h,240px);object-fit:var(--tm05-img-fit,cover);object-position:top;background:var(--tm05-img-bg,#f1f5f9);display:block;transition:transform .5s ease}
.tm5-card:hover .tm5-img{transform:scale(1.04)}
.tm5-body{padding:1.1rem 1.25rem 1.25rem}
.tm5-genre{display:inline-block;padding:.2rem .65rem;border-radius:99px;font-size:var(--tm05-fs-xs,var(--fs-xs));font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--tm5-chip-fg,var(--tm5-accent,var(--primary-color,#fcd703)));background:var(--tm5-chip-bg,color-mix(in srgb,var(--tm5-accent,var(--primary-color,#fcd703)) 12%,transparent));margin-bottom:.45rem}
.tm5-name{font-size:1.05rem;font-weight:800;color:var(--card-title,var(--text-strong,#111827));line-height:1.3;margin-bottom:.5rem}
.tm5-excerpt{line-height:1.6;margin-bottom:.85rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tm5-cta{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:700;color:var(--tm5-btn-fg,var(--tm5-accent,var(--primary-color,#fcd703)))}
.tm5-card{--modal-accent:var(--tm5-chip-fg,var(--tm5-accent,var(--primary-color,#fcd703)))}

/* ── §AI — TM-06 Team Grid + Global Modal (image + text card → v-modal bio) ── */
.tm6-grid{display:grid;grid-template-columns:repeat(var(--tm06-cols-4,3),1fr);gap:var(--tm06-gap,1.5rem)}
@media(max-width:1023px){.tm6-grid{grid-template-columns:repeat(var(--tm06-cols-3,2),1fr)}}
@media(max-width:599px){.tm6-grid{grid-template-columns:repeat(var(--tm06-cols-0,1),1fr)}}
.tm6-card{background:var(--tm06-card-bg,var(--card-bg,#fff));border:var(--tm06-card-border-w,1px) solid var(--tm06-card-border-c,var(--card-border,#e5e7eb));border-radius:var(--tm06-card-radius,var(--card-radius,12px));overflow:hidden;cursor:pointer;transition:transform .25s,box-shadow .25s;box-shadow:var(--tm06-card-shadow,var(--card-shadow,0 2px 8px rgba(0,0,0,.06)));position:relative}
.tm6-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--tm6-chip-fg,var(--tm6-accent,var(--primary-color,#e53e3e)));transform:scaleX(0);transform-origin:left;transition:transform .3s ease;z-index:1}
.tm6-card:hover::before{transform:scaleX(1)}
.tm6-card:hover{transform:translateY(-5px);box-shadow:var(--card-shadow-hover,0 14px 34px rgba(0,0,0,.12))}
.tm6-img{width:100%;aspect-ratio:1/1;object-fit:var(--tm06-fit,cover);background:var(--tm06-img-bg,#f1f5f9);display:block;transition:transform .45s ease}
.tm6-card:hover .tm6-img{transform:scale(1.05)}
.tm6-body{padding:1.1rem 1.25rem 1.3rem;display:flex;flex-direction:column;gap:.4rem}
.tm6-role{display:inline-block;padding:.2rem .65rem;border-radius:99px;font-size:var(--tm06-fs-xs,var(--fs-xs));font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--tm6-chip-fg,var(--tm6-accent,var(--primary-color,#e53e3e)));background:var(--tm6-chip-bg,color-mix(in srgb,var(--tm6-accent,var(--primary-color,#e53e3e)) 12%,transparent));width:fit-content}
.tm6-name{font-size:var(--fs-h4,1.05rem);font-weight:800;color:var(--card-title,var(--text-strong,#111827));margin:0;line-height:1.3}
.tm6-excerpt{line-height:1.6;color:var(--card-text,var(--text-muted,#6b7280));margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tm6-cta{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:700;color:var(--tm6-btn-fg,var(--tm6-accent,var(--primary-color,#e53e3e)));margin-top:.25rem}
.tm6-card{--modal-accent:var(--tm6-chip-fg,var(--tm6-accent,var(--primary-color,#e53e3e)))}

/* ── §AI — TM-07 Team Partner/Institution Grid (logo cards) ── */
.tm07-grid{display:grid;grid-template-columns:repeat(var(--tm07-cols-desktop,3),1fr);gap:var(--tm07-gap,1.25rem)}
@media(min-width:1536px){.tm07-grid{grid-template-columns:repeat(var(--tm07-cols-wide,4),1fr)}}
@media(max-width:1023px){.tm07-grid{grid-template-columns:repeat(var(--tm07-cols-tablet,2),1fr)}}
@media(max-width:599px){.tm07-grid{grid-template-columns:repeat(var(--tm07-cols-mobile,1),1fr)}}
.tm07-card{background:var(--tm07-card-bg,#fff);border:var(--tm07-border-w,1px) solid var(--tm07-border-c,#e5e7eb);border-radius:var(--tm07-radius,.75rem);box-shadow:var(--tm07-shadow,0 4px 6px -1px rgba(0,0,0,.08));padding:1.75rem 1.5rem 1.5rem;position:relative;overflow:hidden;text-align:center}
.tm07-card::before{content:'';position:absolute;top:0;left:0;right:0;height:var(--tm07-accent-h,3px);background:var(--tm07-accent,#dc2626)}
.tm07-logo-wrap{display:flex;align-items:center;justify-content:center;height:calc(var(--tm07-logo-h,48px) + 1rem);overflow:hidden;margin-bottom:1.1rem}
.tm07-logo{max-height:var(--tm07-logo-h,48px);width:auto;max-width:100%;object-fit:contain}
.tm07-divider{border-top:var(--tm07-divider-w,1px) solid var(--tm07-divider-c,#e5e7eb);margin-bottom:1.1rem}
.tm07-name{font-size:1rem;font-weight:700;color:var(--tm07-name-color,#111827);line-height:1.35;margin:0 0 .9rem}
.tm07-tag{display:inline-block;padding:.2rem .65rem;border-radius:99px;font-size:var(--tm07-tag-fs,.75rem);font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--tm07-tag-fg,#dc2626);background:var(--tm07-tag-bg,color-mix(in srgb,var(--tm07-accent,#dc2626) 12%,transparent))}

/* ── §AI — v-tabs: no-JS radio-input tab pattern ──────────────────────────
   Static Pages can't carry their own <style> block (author content goes
   through a JS-stripping sanitizer that inline style= attributes survive
   but a whole stylesheet realistically shouldn't need to) — so, same as
   .v-nav/.v-branch__item/.v-catpanel above, an interactive/structural
   pattern like tabs lives here as classes, referenced by class name from
   static-page HTML, while one-off content styling stays inline as usual.
   Currently used only by generic-storefront/account.json's "Account
   settings" tab set (Profile/Security/Address/Orders) — the #v-tab-* ids
   below are scoped to that specific page, not a generic multi-instance
   component; a second independent tab group on another page would need
   its own id set and matching CSS block. */
.v-tabs{position:relative}
.v-tabs__radio{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.v-tabs__nav{display:flex;gap:.15rem;border-bottom:1px solid var(--border-color,#e5e7eb);padding:0 1rem;overflow-x:auto}
.v-tabs__label{padding:.85rem 1rem;font-size:.88rem;font-weight:600;color:var(--text-color,#374151);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;user-select:none;transition:color .15s,border-color .15s}
.v-tabs__label:hover{color:var(--text-color,#111)}
.v-tabs__panel{display:none}
#v-tab-profile:checked ~ .v-tabs__nav label[for="v-tab-profile"],
#v-tab-security:checked ~ .v-tabs__nav label[for="v-tab-security"],
#v-tab-address:checked ~ .v-tabs__nav label[for="v-tab-address"],
#v-tab-orders:checked ~ .v-tabs__nav label[for="v-tab-orders"]{color:var(--primary-dark,var(--primary-color));border-bottom-color:var(--primary-dark,var(--primary-color))}
.v-tabs__nav[style*="background:var(--primary-dark"] label,
.v-tabs__nav[style*="background: var(--primary-dark"]{color:rgba(255,255,255,.7)}
.v-tabs__nav[style*="background:var(--primary-dark"] label:hover,
.v-tabs__nav[style*="background: var(--primary-dark"] label:hover{color:#fff}
#v-tab-profile:checked ~ .v-tabs__nav[style*="background:var(--primary-dark"] label[for="v-tab-profile"],
#v-tab-security:checked ~ .v-tabs__nav[style*="background:var(--primary-dark"] label[for="v-tab-security"],
#v-tab-address:checked ~ .v-tabs__nav[style*="background:var(--primary-dark"] label[for="v-tab-address"],
#v-tab-orders:checked ~ .v-tabs__nav[style*="background:var(--primary-dark"] label[for="v-tab-orders"]{color:#fff;border-bottom-color:rgba(255,255,255,.6)}
#v-tab-profile:checked ~ .v-tabs__panels .v-tabs__panel--profile,
#v-tab-security:checked ~ .v-tabs__panels .v-tabs__panel--security,
#v-tab-address:checked ~ .v-tabs__panels .v-tabs__panel--address,
#v-tab-orders:checked ~ .v-tabs__panels .v-tabs__panel--orders{display:block}

/* ── v-zoom-overlay / v-zoom-btn — clickable image affordance ─────── */
@keyframes zoomRing{0%{transform:scale(1);opacity:.85}100%{transform:scale(2.6);opacity:0}}
.v-zoom-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.55);z-index:2;border-radius:inherit;pointer-events:none}
.v-zoom-btn{position:relative;display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background:var(--btn-a-bg,var(--primary-color));color:var(--btn-a-text,var(--text-on-dark,#fff));flex-shrink:0;pointer-events:none}
.v-zoom-btn::before,.v-zoom-btn::after{content:'';position:absolute;inset:0;border-radius:50%;background:color-mix(in srgb,var(--btn-a-bg,var(--primary-color)) 40%,transparent);animation:zoomRing 2.2s ease-out infinite}
.v-zoom-btn::after{animation-delay:.7s}

/* ── v-zoom-overlay_right_corner / v-zoom-btn_right_corner — top-right pinned zoom button ─── */
.v-zoom-overlay_right_corner{position:absolute;top:10px;right:10px;display:flex;align-items:flex-start;justify-content:flex-end;background:none;z-index:2;pointer-events:none}
.v-zoom-btn_right_corner{position:relative;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--btn-a-bg,var(--primary-color));color:var(--btn-a-text,var(--text-on-dark,#fff));flex-shrink:0;pointer-events:none}
.v-zoom-btn_right_corner::before,.v-zoom-btn_right_corner::after{content:'';position:absolute;inset:0;border-radius:50%;background:color-mix(in srgb,var(--btn-a-bg,var(--primary-color)) 40%,transparent);animation:zoomRing 2.2s ease-out infinite}
.v-zoom-btn_right_corner::after{animation-delay:.7s}

/* ── v-play-overlay / v-play-btn — video thumbnail play affordance ─── */
.v-play-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:1;pointer-events:none}
.v-play-btn{position:relative;display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;background:var(--btn-a-bg,var(--primary-color));color:var(--btn-a-text,var(--text-on-dark,#fff));flex-shrink:0;pointer-events:none}
.v-play-btn::before,.v-play-btn::after{content:'';position:absolute;inset:0;border-radius:50%;background:color-mix(in srgb,var(--btn-a-bg,var(--primary-color)) 40%,transparent);animation:zoomRing 2.2s ease-out infinite}
.v-play-btn::after{animation-delay:.7s}

/* ── §AJ — v-card-grid: settings-driven responsive card grid ────────────────
   Columns per breakpoint come from CSS vars emitted by CSSVars() in models.go:
     --card-cols-sm (default 1) · --card-cols-md (default 2)
     --card-cols-lg (default 3) · --card-cols-xl (default 4)
   Admin controls: Settings → Theme → Screen size → Cards per row.
   Use this class instead of raw Tailwind grid-cols-* on any standard card grid.
   Non-standard grids (e.g. intentional 2-col testimonials) keep Tailwind classes.
*/
.v-card-grid{display:grid;gap:var(--card-gap,1.5rem);grid-template-columns:repeat(var(--card-cols-xs,1),minmax(0,1fr))}
@media(min-width:426px){.v-card-grid{grid-template-columns:repeat(var(--card-cols-sm,2),minmax(0,1fr))}}
@media(min-width:768px){.v-card-grid{grid-template-columns:repeat(var(--card-cols-md,3),minmax(0,1fr))}}
@media(min-width:1024px){.v-card-grid{grid-template-columns:repeat(var(--card-cols-lg,4),minmax(0,1fr))}}
@media(min-width:1440px){.v-card-grid{grid-template-columns:repeat(var(--card-cols-xl,5),minmax(0,1fr))}}

/* .v-plist (dp-store Product List component, GRID mode only — carousel mode is a
   separate .swiper element entirely, see dpstore/store.go) matches the .v-card-grid
   pattern above exactly (same breakpoints, same minmax(0,1fr) with NO forced minimum
   so any admin-picked column count always fits the container, never overflows).
   .v-plist--list opts out via its own rule (line ~5770). */
/* .lc-txt: a chip label. Chips are inline-flex (vertical centring); only this child block can be cut with an ellipsis when the name is long. */
.lc-prices{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:.35rem;min-width:0;max-width:100%}
.lc-lbl{position:relative;z-index:1;white-space:nowrap}
.lc-txt{display:block;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v-search__gallery-sec{margin:0 0 2.5rem}
.v-search__gallery-sec+.v-search__gallery-sec{padding-top:1.5rem;border-top:1px dashed var(--border-color,#e5e7eb)}
.v-search__gallery-h{margin:0 0 .75rem;font-size:.95rem;font-weight:700;color:var(--text-strong,#111827)}
.v-search__gallery-h code{margin-left:.4rem;font-size:.75rem;font-weight:500;color:var(--text-muted,#6b7280);background:var(--surface-2,#f3f4f6);padding:.1rem .4rem;border-radius:4px}
.v-plist{display:grid;gap:var(--card-gap,20px);grid-template-columns:repeat(var(--card-cols-xs,1),minmax(0,1fr))}
@media(min-width:426px){.v-plist{grid-template-columns:repeat(var(--card-cols-sm,2),minmax(0,1fr))}}
@media(min-width:768px){.v-plist{grid-template-columns:repeat(var(--card-cols-md,3),minmax(0,1fr))}}
@media(min-width:1024px){.v-plist{grid-template-columns:repeat(var(--card-cols-lg,4),minmax(0,1fr))}}
@media(min-width:1440px){.v-plist{grid-template-columns:repeat(var(--card-cols-xl,5),minmax(0,1fr))}}

/* ── §AF Form utilities — shared across dp-auth, address, profile forms ── */
.v-form-input{width:100%;padding:.6rem .75rem;border:1px solid var(--border-color,#e5e7eb);border-radius:var(--border-radius,.375rem);background:var(--bg-color,#fff);color:var(--text-color,#111);font-family:inherit;font-size:.9rem}
.v-form-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 18%,transparent)}

/* ══════════════════════════════════════════════════════════════════════════════
   §AK — Product card variants (PB-01 · PB-03 · PB-04 · PB-05 · PB-07
          PB-08 · PB-09 · PB-10 · PB-11 · PB-12 · PB-14 · PB-16 · PB-17)
   All cards share .classic-card-noimg and .classic-card-oos-badge from §AE.
   CSS vars used: --primary-color, --primary-dark, --text-color, --text-muted,
     --bg-color, --bg-surface, --border-color, --border-radius, --card-shadow.
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── PB-01 Slide Cart ─────────────────────────────────────────────────────── */
.pb01-card{position:relative;background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08));overflow:hidden;display:flex;flex-direction:column}
.pb01-img-wrap{position:relative;overflow:hidden;aspect-ratio:1/1}
.pb01-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.pb01-card:hover .pb01-img{transform:scale(1.04)}
.pb01-badge{position:absolute;top:.6rem;left:.6rem;z-index:2;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:.15rem .45rem;border-radius:3px}
.pb01-badge[hidden]{display:none}
.pb01-actions{position:absolute;top:.5rem;right:.5rem;z-index:2;display:flex;flex-direction:column;gap:.4rem;opacity:0;transform:translateX(6px);transition:opacity .2s,transform .2s}
.pb01-card:hover .pb01-actions{opacity:1;transform:translateX(0)}
.pb01-action-btn{width:32px;height:32px;border-radius:50%;border:none;background:rgba(255,255,255,.92);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-color,#111);backdrop-filter:blur(4px)}
.pb01-action-btn:hover{background:#fff}
.pb01-cart-bar,button.pb01-cart-bar{position:absolute;bottom:0;left:0;right:0;background:var(--pc-btn-bg,rgba(15,15,15,.88));color:var(--pc-btn-text,#fff);border:none;padding:.55rem .75rem;font-size:var(--pc-buy-fs,.78rem);font-weight:var(--pc-buy-fw,600);display:flex;align-items:center;justify-content:center;gap:.4rem;cursor:pointer;transform:translateY(100%);transition:transform .25s ease;z-index:3;font-family:inherit}
.pb01-cart-bar:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,rgba(15,15,15,.88)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff))}
.pb01-cart-bar[hidden]{display:none}
.pb01-card:hover .pb01-cart-bar{transform:translateY(0)}
.pb01-qty-bar{position:absolute;bottom:0;left:0;right:0;background:var(--pc-btn-bg,rgba(15,15,15,.88));z-index:3;display:flex;align-items:center;justify-content:center;gap:.6rem;padding:.45rem 0}
.pb01-qty-bar[hidden]{display:none}
.pb01-q-btn,button.pb01-q-btn{width:var(--pc-qty-btn-size,28px);height:var(--pc-qty-btn-size,28px);border-radius:50%;background:transparent;color:var(--pc-btn-text,#fff);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;max-height:1.9rem;box-sizing:border-box;line-height:normal}
.pb01-count{color:var(--pc-btn-text,#fff);font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1.5rem;text-align:center;line-height:normal}
.pb01-body{padding:.75rem;display:flex;flex-direction:column;gap:var(--pc-gap,.25rem)}
.pb01-tag{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--primary-color,#f59e0b);font-weight:600;margin-bottom:.25rem}
.pb01-title{font-size:.85rem;font-weight:600;color:var(--pc-title-color,var(--text-color,#111));line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb01-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb01-unit,button.pb01-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb01-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb01-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb01-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb01-unit.has-qty{overflow:visible}
.pb01-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb01-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb01-info-line{font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb01-info-label{font-weight:600}
.pb01-author{font-size:.72rem;color:var(--text-muted,#6b7280);margin-top:.2rem}
.pb01-price-row{display:flex;align-items:center;gap:.4rem;margin-top:.5rem}
.pb01-mrp{font-size:var(--pc-mrp-fs,.72rem);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;font-weight:var(--pc-mrp-fw,400);line-height:normal}
.pb01-mrp[hidden]{display:none}
.pb01-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--primary-dark,var(--primary-color)));line-height:normal}

/* ── PB-03 Portrait Fashion ───────────────────────────────────────────────── */
.pb03-card{background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08));overflow:hidden;display:flex;flex-direction:column}
.pb03-img-wrap{position:relative;aspect-ratio:2/3;overflow:hidden}
.pb03-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.pb03-card:hover .pb03-img{transform:scale(1.04)}
.pb03-badge{position:absolute;top:.6rem;left:.6rem;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:.15rem .45rem;border-radius:3px}
.pb03-badge[hidden]{display:none}
.pb03-body{padding:.75rem;display:flex;flex-direction:column;gap:var(--pc-gap,.25rem)}
.pb03-title{font-size:.85rem;font-weight:600;color:var(--pc-title-color,var(--text-color,#111));line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb03-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb03-unit,button.pb03-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb03-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb03-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb03-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb03-unit.has-qty{overflow:visible}
.pb03-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb03-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb03-info-line{font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb03-info-label{font-weight:600}
.pb03-author{font-size:.72rem;color:var(--text-muted,#6b7280);margin:.2rem 0 .5rem}
.pb03-price-row{display:flex;align-items:center;justify-content:space-between;gap:.4rem;margin-top:.35rem}
.pb03-prices{display:flex;align-items:center;gap:.35rem}
.pb03-mrp{font-size:var(--pc-mrp-fs,.72rem);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;font-weight:var(--pc-mrp-fw,400);line-height:normal}
.pb03-mrp[hidden]{display:none}
.pb03-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--primary-dark,var(--primary-color)));line-height:normal}
.pb03-qty{display:flex;align-items:center;gap:.3rem}
.pb03-qty[hidden]{display:none}
.pb03-q-btn,button.pb03-q-btn{width:var(--pc-qty-btn-size,26px);height:var(--pc-qty-btn-size,26px);border-radius:50%;border:1px solid var(--pc-qty-btn-border,var(--pc-btn-bg,var(--primary-color,#111827)));background:transparent;cursor:pointer;font-size:.9rem;display:flex;align-items:center;justify-content:center;color:var(--pc-btn-bg,var(--primary-color,#111827));max-height:1.9rem;box-sizing:border-box;line-height:normal;transition:background .15s,color .15s,border-color .15s}
.pb03-q-btn:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff));border-color:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)))}
.pb03-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1.2rem;text-align:center;line-height:normal;color:var(--pc-price-color,var(--text-color,#111827))}

/* ── PB-04 Outlined Cart ──────────────────────────────────────────────────── */
.pb04-card{background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08));overflow:hidden;display:flex;flex-direction:column}
.pb04-img-wrap{position:relative;aspect-ratio:1/1;overflow:hidden}
.pb04-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.pb04-card:hover .pb04-img{transform:scale(1.04)}
.pb04-badge{position:absolute;top:.6rem;left:.6rem;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:.15rem .45rem;border-radius:3px}
.pb04-badge[hidden]{display:none}
.pb04-actions{position:absolute;top:.5rem;right:.5rem;display:flex;flex-direction:column;gap:.4rem;opacity:0;transform:translateX(6px);transition:opacity .2s,transform .2s}
.pb04-card:hover .pb04-actions{opacity:1;transform:translateX(0)}
.pb04-action-btn{width:32px;height:32px;border-radius:50%;border:none;background:rgba(255,255,255,.92);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-color,#111)}
.pb04-qty-bar{position:absolute;bottom:-100%;left:0;right:0;background:var(--bg-surface,#fff);border-top:1px solid var(--border-color,#e5e7eb);transition:bottom .25s ease;z-index:3}
.pb04-qty{display:flex;align-items:center;justify-content:center;gap:.6rem;padding:.5rem 0}
.pb04-card:hover .pb04-qty-bar{bottom:0}
.pb04-card.lc-has-qty .pb04-qty-bar{bottom:0}
.pb04-q-btn,button.pb04-q-btn{width:var(--pc-qty-btn-size,28px);height:var(--pc-qty-btn-size,28px);border-radius:50%;border:1px solid var(--pc-qty-btn-border,var(--pc-btn-bg,var(--primary-color,#111827)));background:transparent;color:var(--pc-btn-bg,var(--primary-color,#111827));font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;max-height:1.9rem;box-sizing:border-box;line-height:normal;transition:background .15s,color .15s,border-color .15s}
.pb04-q-btn:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff));border-color:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)))}
.pb04-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1.5rem;text-align:center;line-height:normal;color:var(--pc-price-color,var(--text-color,#111827))}
.pb04-body{padding:.75rem;display:flex;flex-direction:column;gap:var(--pc-gap,.25rem)}
.pb04-title{font-size:.85rem;font-weight:600;color:var(--pc-title-color,var(--text-color,#111));line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb04-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb04-unit,button.pb04-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb04-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb04-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb04-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb04-unit.has-qty{overflow:visible}
.pb04-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb04-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb04-info-line{font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb04-info-label{font-weight:600}
.pb04-author{font-size:.72rem;color:var(--text-muted,#6b7280);margin:.2rem 0 .35rem}
.pb04-price-row{display:flex;align-items:center;gap:.35rem;margin-top:.4rem}
.pb04-mrp{font-size:var(--pc-mrp-fs,.72rem);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;font-weight:var(--pc-mrp-fw,400);line-height:normal}
.pb04-mrp[hidden]{display:none}
.pb04-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--primary-dark,var(--primary-color)));line-height:normal}

/* ── PB-05 Ultra Minimal ──────────────────────────────────────────────────── */
.pb05-card{background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));overflow:hidden;display:flex;flex-direction:column}
.pb05-img-wrap{aspect-ratio:1/1;overflow:hidden;position:relative}
.pb05-badge{position:absolute;top:.6rem;left:.6rem;z-index:2;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:.15rem .45rem;border-radius:3px;pointer-events:none}
.pb05-badge[hidden]{display:none}
.pb05-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.pb05-card:hover .pb05-img{transform:scale(1.03)}
.pb05-body{padding:.6rem .5rem;display:flex;flex-direction:column;gap:var(--pc-gap,.25rem)}
.pb05-title{font-size:.83rem;font-weight:500;color:var(--pc-title-color,var(--text-color,#111));line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb05-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb05-unit,button.pb05-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb05-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb05-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb05-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb05-unit.has-qty{overflow:visible}
.pb05-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb05-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb05-info-line{font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb05-info-label{font-weight:600}
.pb05-author{font-size:.7rem;color:var(--text-muted,#6b7280);margin:.2rem 0 .4rem}
.pb05-price-row{display:flex;align-items:center;justify-content:space-between;gap:.4rem;margin-top:.35rem}
.pb05-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--text-color,#111));line-height:normal}
.pb05-mrp{font-size:var(--pc-mrp-fs,.72rem);font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;line-height:normal}
.pb05-mrp[hidden]{display:none}
.pb05-qty{display:flex;align-items:center;gap:.25rem}
.pb05-qty[hidden]{display:none}
.pb05-q-btn,button.pb05-q-btn{width:var(--pc-qty-btn-size,22px);height:var(--pc-qty-btn-size,22px);border-radius:50%;border:1px solid var(--pc-qty-btn-border,var(--pc-btn-bg,var(--primary-color,#111827)));background:transparent;cursor:pointer;font-size:.85rem;display:flex;align-items:center;justify-content:center;color:var(--pc-btn-bg,var(--primary-color,#111827));max-height:1.9rem;box-sizing:border-box;line-height:normal;transition:background .15s,color .15s,border-color .15s}
.pb05-q-btn:hover{border-color:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff));background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)))}
.pb05-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1rem;text-align:center;line-height:normal;color:var(--pc-price-color,var(--text-color,#111827))}

/* ── PB-07 Wide Shelf (horizontal list card) ──────────────────────────────── */
.v-plist--list .pb07-card,.pb07-card{display:flex;gap:1rem;background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08));overflow:hidden;padding:.75rem}
.pb07-img-wrap{flex-shrink:0;width:100px;height:100px;border-radius:calc(var(--border-radius,.5rem) - 2px);overflow:hidden;position:relative}
.pb07-img{width:100%;height:100%;object-fit:cover;display:block}
.pb07-badge{position:absolute;top:.4rem;left:.4rem;z-index:2;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);font-size:.6rem;font-weight:700;letter-spacing:.05em;padding:.12rem .4rem;border-radius:3px;pointer-events:none}
.pb07-badge[hidden]{display:none}
.pb07-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--pc-gap,.2rem)}
.pb07-tag{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--primary-color,#f59e0b);font-weight:600}
.pb07-title{font-size:.85rem;font-weight:600;color:var(--pc-title-color,var(--text-color,#111));line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb07-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb07-unit,button.pb07-unit{position:relative;display:inline-flex;align-items:center;height:1.4rem;max-width:9rem;padding:0 .5rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.7rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb07-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb07-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb07-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb07-unit.has-qty{overflow:visible}
.pb07-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb07-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb07-info-line{font-size:var(--pc-chip-fs,.7rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb07-info-label{font-weight:600}
.pb07-author{font-size:.72rem;color:var(--text-muted,#6b7280)}
.pb07-footer{display:flex;align-items:center;gap:.6rem;margin-top:auto;padding-top:.4rem}
.pb07-mrp{font-size:var(--pc-mrp-fs,.72rem);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;font-weight:var(--pc-mrp-fw,400);line-height:normal}
.pb07-mrp[hidden]{display:none}
.pb07-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--primary-dark,var(--primary-color)));line-height:normal}
.pb07-qty{display:flex;align-items:center;gap:.25rem;margin-left:auto}
.pb07-qty[hidden]{display:none}
.pb07-q-btn,button.pb07-q-btn{width:var(--pc-qty-btn-size,26px);height:var(--pc-qty-btn-size,26px);border-radius:50%;border:1px solid var(--pc-qty-btn-border,var(--pc-btn-bg,var(--primary-color,#111827)));background:transparent;cursor:pointer;font-size:.9rem;display:flex;align-items:center;justify-content:center;color:var(--pc-btn-bg,var(--primary-color,#111827));max-height:1.9rem;box-sizing:border-box;line-height:normal;transition:background .15s,color .15s,border-color .15s}
.pb07-q-btn:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff));border-color:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)))}
.pb07-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1.2rem;text-align:center;line-height:normal;color:var(--pc-price-color,var(--text-color,#111827))}

/* ── PB-08 Dark Card ──────────────────────────────────────────────────────── */
.pb08-card{background:var(--pc-bg,var(--color-surface-dark,#0f172a));border-radius:var(--pc-radius,var(--border-radius,.5rem));box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08));overflow:hidden;display:flex;flex-direction:column}
.pb08-img-wrap{aspect-ratio:1/1;overflow:hidden;position:relative}
.pb08-badge{position:absolute;top:.6rem;left:.6rem;z-index:2;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:.15rem .45rem;border-radius:3px;pointer-events:none}
.pb08-badge[hidden]{display:none}
.pb08-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.pb08-card:hover .pb08-img{transform:scale(1.04)}
.pb08-body{padding:.8rem;display:flex;flex-direction:column;gap:var(--pc-gap,.25rem)}
.pb08-tag{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--primary-color,#fcd703);font-weight:600}
.pb08-title{font-size:.85rem;font-weight:600;color:var(--pc-title-color,#fff);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb08-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb08-unit,button.pb08-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb08-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb08-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb08-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb08-unit.has-qty{overflow:visible}
.pb08-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb08-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb08-info-line{font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb08-info-label{font-weight:600}
.pb08-card .pb08-unit{border-color:rgba(255,255,255,.3);color:var(--pc-chip-text,rgba(255,255,255,.85))}
.pb08-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#fcd703));color:var(--pc-chip-active-text,#000)}
.pb08-info-line{color:rgba(255,255,255,.6)}
.pb08-author{font-size:.72rem;color:rgba(255,255,255,.5)}
.pb08-price-row{display:flex;align-items:center;gap:.4rem;margin-top:.25rem}
.pb08-mrp{font-size:var(--pc-mrp-fs,.72rem);color:var(--pc-mrp-color,rgba(255,255,255,.35));text-decoration:line-through;font-weight:var(--pc-mrp-fw,400);line-height:normal}
.pb08-mrp[hidden]{display:none}
.pb08-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--primary-color,#fcd703));line-height:normal}
.pb08-oos{font-size:.72rem;color:var(--pc-oos-text,rgba(255,255,255,.5));margin-top:.2rem}
.pb08-qty{display:flex;align-items:center;gap:.4rem;margin-top:.5rem}
.pb08-qty[hidden]{display:none}
.pb08-q-btn,button.pb08-q-btn{width:var(--pc-qty-btn-size,28px);height:var(--pc-qty-btn-size,28px);border-radius:50%;border:1px solid var(--pc-qty-btn-border,var(--pc-btn-bg,var(--primary-color,#111827)));background:transparent;color:var(--pc-btn-bg,var(--primary-color,#111827));font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;max-height:1.9rem;box-sizing:border-box;line-height:normal;transition:background .15s,color .15s,border-color .15s}
.pb08-q-btn:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff));border-color:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)))}
.pb08-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1.5rem;text-align:center;color:var(--pc-price-color,#fff);line-height:normal}

/* ── PB-09 Polaroid ───────────────────────────────────────────────────────── */
.pb09-card{background:var(--pc-bg,#fff);border-radius:var(--pc-radius,4px);box-shadow:0 4px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.08);padding:.6rem .6rem 1rem;display:flex;flex-direction:column;transform:rotate(-1.5deg);transition:transform .25s ease,box-shadow .25s}
.pb09-card:nth-child(even){transform:rotate(1deg)}
.pb09-card:hover{transform:rotate(0deg) scale(1.02);box-shadow:0 8px 24px rgba(0,0,0,.15)}
.pb09-img-wrap{aspect-ratio:1/1;overflow:hidden;border-radius:2px;position:relative}
.pb09-badge{position:absolute;top:.6rem;left:.6rem;z-index:2;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:.15rem .45rem;border-radius:3px;pointer-events:none}
.pb09-badge[hidden]{display:none}
.pb09-img{width:100%;height:100%;object-fit:cover;display:block}
.pb09-body{padding:.5rem .25rem 0;display:flex;flex-direction:column;gap:var(--pc-gap,.25rem)}
.pb09-title{font-size:.82rem;font-style:italic;font-weight:600;color:var(--pc-title-color,#111);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb09-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb09-unit,button.pb09-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb09-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb09-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb09-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb09-unit.has-qty{overflow:visible}
.pb09-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb09-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb09-info-line{font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb09-info-label{font-weight:600}
.pb09-author{font-size:.7rem;color:#666;margin:.15rem 0 .35rem}
.pb09-price-row{display:flex;align-items:center;justify-content:space-between}
.pb09-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,#111);line-height:normal}
.pb09-mrp{font-size:var(--pc-mrp-fs,.72rem);font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;line-height:normal}
.pb09-mrp[hidden]{display:none}
.pb09-qty{display:flex;align-items:center;gap:.25rem}
.pb09-qty[hidden]{display:none}
.pb09-q-btn,button.pb09-q-btn{width:var(--pc-qty-btn-size,22px);height:var(--pc-qty-btn-size,22px);border-radius:50%;border:1px solid var(--pc-qty-btn-border,var(--pc-btn-bg,var(--primary-color,#111827)));background:transparent;cursor:pointer;font-size:.85rem;display:flex;align-items:center;justify-content:center;color:var(--pc-btn-bg,var(--primary-color,#111827));max-height:1.9rem;box-sizing:border-box;line-height:normal;transition:background .15s,color .15s,border-color .15s}
.pb09-q-btn:hover{border-color:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff));background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)))}
.pb09-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1rem;text-align:center;line-height:normal;color:var(--pc-price-color,var(--text-color,#111827))}

/* ── PB-10 Compact Row (list) ─────────────────────────────────────────────── */
.pb10-item{display:flex;align-items:center;gap:.75rem;background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));padding:.6rem;box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08))}
.pb10-thumb{flex-shrink:0;width:64px;height:64px;border-radius:calc(var(--border-radius,.5rem) - 2px);overflow:hidden;background:var(--bg-color,#f3f4f6)}
.pb10-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.pb10-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--pc-gap,.1rem)}
.pb10-tag{font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;color:var(--primary-color,#f59e0b);font-weight:600}
.pb10-title{font-size:.8rem;font-weight:600;color:var(--pc-title-color,var(--text-color,#111));line-height:1.3;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.pb10-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb10-unit,button.pb10-unit{position:relative;display:inline-flex;align-items:center;height:1.4rem;max-width:9rem;padding:0 .5rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.7rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb10-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb10-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb10-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb10-unit.has-qty{overflow:visible}
.pb10-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb10-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb10-info-line{font-size:var(--pc-chip-fs,.7rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb10-info-label{font-weight:600}
.pb10-author{font-size:.68rem;color:var(--text-muted,#6b7280)}
.pb10-footer{display:flex;align-items:center;gap:.35rem;margin-top:.25rem}
.pb10-mrp{font-size:var(--pc-mrp-fs,.72rem);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;font-weight:var(--pc-mrp-fw,400);line-height:normal}
.pb10-mrp[hidden]{display:none}
.pb10-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--primary-dark,var(--primary-color)));line-height:normal}
.pb10-badge{font-size:.6rem;font-weight:700;padding:.1rem .35rem;border-radius:3px;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);line-height:1.4}
.pb10-badge[hidden]{display:none}
.pb10-action{display:flex;align-items:center;gap:.25rem;flex-shrink:0}
.pb10-action[hidden]{display:none}
.pb10-q-btn,button.pb10-q-btn{width:var(--pc-qty-btn-size,24px);height:var(--pc-qty-btn-size,24px);border-radius:50%;border:1px solid var(--pc-qty-btn-border,var(--pc-btn-bg,var(--primary-color,#111827)));background:transparent;cursor:pointer;font-size:.85rem;display:flex;align-items:center;justify-content:center;color:var(--pc-btn-bg,var(--primary-color,#111827));max-height:1.9rem;box-sizing:border-box;line-height:normal;transition:background .15s,color .15s,border-color .15s}
.pb10-q-btn:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff));border-color:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#111827)))}
.pb10-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1.2rem;text-align:center;line-height:normal;color:var(--pc-price-color,var(--text-color,#111827))}

/* ── PB-11 Hero Book ──────────────────────────────────────────────────────── */
.pb11-card{background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08));overflow:hidden;display:flex;flex-direction:column}
.pb11-img-wrap{position:relative;aspect-ratio:3/4;overflow:hidden}
.pb11-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.pb11-card:hover .pb11-img{transform:scale(1.04)}
.pb11-badge{position:absolute;top:.6rem;left:.6rem;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);font-size:.62rem;font-weight:700;letter-spacing:.05em;padding:.15rem .45rem;border-radius:3px}
.pb11-badge[hidden]{display:none}
.pb11-body{padding:.75rem;display:flex;flex-direction:column;gap:var(--pc-gap,.25rem)}
.pb11-title{font-size:.85rem;font-weight:700;color:var(--pc-title-color,var(--text-color,#111));line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb11-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb11-unit,button.pb11-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb11-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb11-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb11-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb11-unit.has-qty{overflow:visible}
.pb11-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb11-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb11-info-line{font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb11-info-label{font-weight:600}
.pb11-author{font-size:.72rem;color:var(--text-muted,#6b7280)}
.pb11-footer{display:flex;align-items:center;justify-content:space-between;margin-top:.4rem}
.pb11-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--text-color,#111));line-height:normal}
.pb11-mrp{font-size:var(--pc-mrp-fs,.72rem);font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;line-height:normal}
.pb11-mrp[hidden]{display:none}
/* The + button morphs: idle → loading spinner → done check → qty stepper */
.pb11-add,button.pb11-add{width:auto;height:32px;border-radius:20px;border:none;background:var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));color:var(--pc-btn-text,#000);font-size:var(--pc-buy-fs,.8rem);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;flex-shrink:0;overflow:visible;transition:background .18s,color .18s;font-weight:var(--pc-buy-fw,600);min-width:32px;padding:0 .8rem;gap:.3rem}
.pb11-add:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-dark,var(--primary-color))));color:var(--pc-btn-text-hover,var(--pc-btn-text,#000))}
.pb11-add[hidden]{display:none}
.pb11-qty{display:flex;align-items:center;gap:.3rem;height:32px;box-sizing:border-box;padding:0 .35rem;border-radius:20px;background:var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));color:var(--pc-btn-text,#000);flex-shrink:0}
.pb11-qty[hidden]{display:none}
.pb11-q-btn,button.pb11-q-btn{font-size:.9rem;cursor:pointer;padding:0;line-height:normal;width:var(--pc-qty-btn-size,26px);height:var(--pc-qty-btn-size,26px);max-height:1.9rem;box-sizing:border-box;border-radius:50%;background:transparent;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}
.pb11-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1rem;text-align:center;line-height:normal}
@keyframes pb-spin{to{transform:rotate(360deg)}}
.pb11-spin,.pb12-spin,.pb14-spin,.pb16-spin,.pb17-spin{animation:pb-spin .7s linear infinite}

/* ── PB-12 Editorial ──────────────────────────────────────────────────────── */
.pb12-card{background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08));padding:.9rem;display:flex;flex-direction:column;gap:.35rem}
.pb12-body{display:flex;flex-direction:column;gap:var(--pc-gap,.25rem)}
.pb12-top{display:flex;align-items:center;justify-content:space-between}
.pb12-pick{font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--pc-offer-bg,var(--primary-color,#f59e0b));background:color-mix(in srgb,var(--pc-offer-bg,var(--primary-color,#f59e0b)) 12%,transparent);padding:.15rem .45rem;border-radius:3px}
.pb12-title{font-size:.88rem;font-weight:700;color:var(--pc-title-color,var(--text-color,#111));line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb12-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb12-unit,button.pb12-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb12-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb12-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb12-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb12-unit.has-qty{overflow:visible}
.pb12-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb12-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb12-info-line{font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb12-info-label{font-weight:600}
.pb12-rule{border:none;border-top:1px solid var(--border-color,#e5e7eb);margin:.1rem 0}
.pb12-author{font-size:.72rem;color:var(--text-muted,#6b7280)}
.pb12-img-wrap{aspect-ratio:16/9;border-radius:calc(var(--border-radius,.5rem) - 2px);overflow:hidden;margin:.15rem 0;position:relative}
.pb12-badge{position:absolute;top:.6rem;left:.6rem;z-index:2;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:.15rem .45rem;border-radius:3px;pointer-events:none}
.pb12-badge[hidden]{display:none}
.pb12-img{width:100%;height:100%;object-fit:cover;display:block}
.pb12-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--primary-dark,var(--primary-color)));line-height:normal}
.pb12-mrp{font-size:var(--pc-mrp-fs,.72rem);font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;line-height:normal}
.pb12-mrp[hidden]{display:none}
.pb12-actions{display:flex;gap:.5rem;margin-top:.2rem}
.pb12-cart,button.pb12-cart{flex:1;position:relative;padding:0 .75rem;border:none;border-radius:var(--border-radius,.375rem);background:var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));color:var(--pc-btn-text,#000);font-size:var(--pc-buy-fs,.78rem);font-weight:var(--pc-buy-fw,600);cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:.35rem;transition:background .18s,color .18s;height:2.1rem;box-sizing:border-box;width:var(--pc-buy-w,auto);max-width:100%;font-family:inherit}
.pb12-cart:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-dark,var(--primary-color))));color:var(--pc-btn-text-hover,var(--pc-btn-text,#000))}
.pb12-cart[hidden]{display:none}
.pb12-qty{flex:1;display:flex;align-items:center;justify-content:center;gap:.4rem;height:2.1rem;box-sizing:border-box;border-radius:var(--border-radius,.375rem);background:var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));color:var(--pc-btn-text,#000)}
.pb12-qty[hidden]{display:none}
.pb12-q-btn,button.pb12-q-btn{cursor:pointer;font-size:.9rem;padding:0;line-height:normal;width:var(--pc-qty-btn-size,26px);height:var(--pc-qty-btn-size,26px);max-height:1.9rem;box-sizing:border-box;border-radius:50%;background:transparent;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}
.pb12-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1rem;text-align:center;line-height:normal}
.pb12-eye{width:36px;height:36px;border-radius:var(--border-radius,.375rem);border:1px solid var(--border-color,#e5e7eb);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted,#6b7280);flex-shrink:0}
.pb12-eye:hover{border-color:var(--primary-color);color:var(--primary-dark,var(--primary-color))}

/* ── PB-14 Split Hero (horizontal list card) ──────────────────────────────── */
.pb14-card{display:flex;gap:1.5rem;background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08));overflow:hidden;padding:1rem;cursor:pointer;transition:box-shadow .22s}
.pb14-card:hover,.pb07-card:hover,.v-plist--list .pb07-card:hover{box-shadow:var(--shadow-md,0 4px 16px rgba(0,0,0,.13))}
.pb14-img-wrap{position:relative;flex-shrink:0;align-self:flex-start;width:180px}
.pb14-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;min-width:0}
.pb14-head .pb14-title{flex:1 1 auto;min-width:0}
.pb14-head .lc-prices{flex:0 0 auto;justify-content:flex-end}
.pb14-left{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--pc-gap,.3rem)}
.pb14-badge{display:inline-block;font-size:.62rem;text-transform:uppercase;letter-spacing:.07em;font-weight:700;color:var(--pc-offer-bg,var(--primary-color,#f59e0b));background:color-mix(in srgb,var(--pc-offer-bg,var(--primary-color,#f59e0b)) 12%,transparent);padding:.15rem .45rem;border-radius:3px;align-self:flex-start}
.pb14-title{font-size:.9rem;font-weight:700;color:var(--pc-title-color,var(--text-color,#111));line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb14-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb14-unit,button.pb14-unit{position:relative;display:inline-flex;align-items:center;height:1.4rem;max-width:9rem;padding:0 .5rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.7rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb14-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb14-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb14-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb14-unit.has-qty{overflow:visible}
.pb14-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb14-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb14-info-line{font-size:var(--pc-chip-fs,.7rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb14-info-label{font-weight:600}
.pb14-author{font-size:.72rem;color:var(--text-muted,#6b7280)}
.pb14-rule{border:none;border-top:1px solid var(--border-color,#e5e7eb);margin:.15rem 0}
.pb14-bottom{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-top:auto;padding-top:.35rem}
.pb14-mrp{font-size:var(--pc-mrp-fs,.72rem);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;font-weight:var(--pc-mrp-fw,400);line-height:normal}
.pb14-mrp[hidden]{display:none}
.pb14-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--primary-dark,var(--primary-color)));line-height:normal}
.pb14-disc{font-size:.62rem;font-weight:700;padding:.12rem .4rem;border-radius:3px;background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);line-height:1.4;position:absolute;top:.5rem;left:.5rem;z-index:2;pointer-events:none}
.pb14-disc[hidden]{display:none}
.pb14-img{width:180px;height:180px;object-fit:cover;border-radius:calc(var(--border-radius,.5rem) - 2px);flex-shrink:0}
.pb14-cart,button.pb14-cart{display:flex;align-items:center;gap:.35rem;padding:0 .8rem;border:none;border-radius:var(--border-radius,.375rem);background:var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));color:var(--pc-btn-text,#000);font-size:var(--pc-buy-fs,.78rem);font-weight:var(--pc-buy-fw,600);cursor:pointer;position:relative;overflow:hidden;transition:background .18s,color .18s;height:2.1rem;box-sizing:border-box;width:var(--pc-buy-w,auto);max-width:100%;font-family:inherit}
.pb14-cart:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-dark,var(--primary-color))));color:var(--pc-btn-text-hover,var(--pc-btn-text,#000))}
.pb14-cart[hidden]{display:none}
.pb14-qty{display:flex;align-items:center;justify-content:center;gap:.4rem;height:2.1rem;box-sizing:border-box;padding:0 .4rem;border-radius:var(--border-radius,.375rem);background:var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));color:var(--pc-btn-text,#000)}
.pb14-qty[hidden]{display:none}
.pb14-q-btn,button.pb14-q-btn{cursor:pointer;font-size:.9rem;padding:0;line-height:normal;width:var(--pc-qty-btn-size,26px);height:var(--pc-qty-btn-size,26px);max-height:1.9rem;box-sizing:border-box;border-radius:50%;background:transparent;color:inherit;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.pb14-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1rem;text-align:center;line-height:normal}
@media(max-width:480px){.pb14-card{flex-direction:column}.pb14-img-wrap{width:100%}.pb14-img{width:100%;height:200px}.pb14-head{flex-wrap:wrap}}

/* ── PB-16 Aurora Spotlight ───────────────────────────────────────────────── */
.pb16-card{position:relative;background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08));overflow:hidden;display:flex;flex-direction:column;--mx:50%;--my:50%}
.pb16-glow{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle 100px at var(--mx) var(--my),color-mix(in srgb,var(--primary-color,#f59e0b) 20%,transparent),transparent 70%);z-index:0;opacity:0;transition:opacity .15s}
.pb16-card:hover .pb16-glow{opacity:1}
.pb16-img-wrap{position:relative;aspect-ratio:1/1;overflow:hidden;z-index:1}
.pb16-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.pb16-card:hover .pb16-img{transform:scale(1.04)}
.pb16-img-top{position:absolute;top:.5rem;left:.5rem;right:.5rem;display:flex;align-items:center;justify-content:flex-start}
.pb16-badge{background:var(--pc-offer-bg,rgba(0,0,0,.6));color:var(--pc-offer-text,#fff);font-size:.62rem;font-weight:700;padding:.12rem .4rem;border-radius:3px;backdrop-filter:blur(4px);position:static}
.pb16-badge[hidden]{display:none}
.pb16-body{padding:.75rem;display:flex;flex-direction:column;gap:var(--pc-gap,.25rem);position:relative;z-index:1}
.pb16-cat{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted,#6b7280)}
.pb16-title{font-size:.85rem;font-weight:600;color:var(--pc-title-color,var(--text-color,#111));line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb16-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb16-unit,button.pb16-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb16-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb16-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb16-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb16-unit.has-qty{overflow:visible}
.pb16-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb16-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb16-info-line{font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb16-info-label{font-weight:600}
.pb16-meta{font-size:.72rem;color:var(--text-muted,#6b7280)}
.pb16-bottom-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.2rem}
.pb16-price-col{display:flex;flex-direction:row;align-items:baseline;gap:.35rem;flex-wrap:wrap;min-width:0}
.pb16-mrp{font-size:var(--pc-mrp-fs,.72rem);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;font-weight:var(--pc-mrp-fw,400);line-height:normal}
.pb16-mrp[hidden]{display:none}
.pb16-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--primary-dark,var(--primary-color)));line-height:normal}
/* 4-state morph button via data-state attribute */
.pb16-btn,button.pb16-btn{display:flex;align-items:center;justify-content:center;gap:.3rem;padding:0 .75rem;border:none;border-radius:var(--border-radius,.375rem);background:var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));color:var(--pc-btn-text,#000);font-size:var(--pc-buy-fs,.78rem);font-weight:var(--pc-buy-fw,600);cursor:pointer;min-width:64px;transition:background .2s,color .2s;height:2.1rem;box-sizing:border-box;width:var(--pc-buy-w,auto);max-width:100%;font-family:inherit}
.pb16-btn:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-dark,var(--primary-color))));color:var(--pc-btn-text-hover,var(--pc-btn-text,#000))}
.pb16-btn[hidden]{display:none}
.pb16-qty{display:flex;align-items:center;justify-content:center;gap:.3rem;height:2.1rem;box-sizing:border-box;padding:0 .4rem;border-radius:var(--border-radius,.375rem);background:var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));color:var(--pc-btn-text,#000)}
.pb16-qty[hidden]{display:none}
.pb16-q-btn,button.pb16-q-btn{cursor:pointer;font-size:.9rem;padding:0;line-height:normal;width:var(--pc-qty-btn-size,26px);height:var(--pc-qty-btn-size,26px);max-height:1.9rem;box-sizing:border-box;border-radius:50%;background:transparent;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}
.pb16-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1rem;text-align:center;line-height:normal}

/* Generic Card Design settings (Settings > Theme > Colors — Brand & UI >
   Card Design) — hover-lift and accent-bar were computed as --card-hover-lift
   / --card-accent-bar but never consumed anywhere. Applied here to the
   generic .pb*-card family (the one card set that uses the bare --card-*
   vars directly with no per-template override layer, unlike bq*/pt*/ps*/tm*
   which each hardcode their own hover distance/accent by design). */
.pb01-card,.pb03-card,.pb04-card,.pb05-card,.pb07-card,.v-plist--list .pb07-card,
.pb08-card,.pb09-card,.pb11-card,.pb12-card,.pb14-card,.pb16-card,.pb17-card{
  transition:transform .22s,box-shadow .22s;
  border-top:3px solid var(--card-accent-bar,transparent);
}
.pb01-card:hover,.pb03-card:hover,.pb04-card:hover,.pb05-card:hover,
.pb08-card:hover,.pb09-card:hover,.pb11-card:hover,
.pb12-card:hover,.pb16-card:hover,.pb17-card:hover{
  transform:var(--card-hover-lift,none);
}

/* ── PB-17 Liquid Fill ────────────────────────────────────────────────────── */
.pb17-card{background:var(--pc-bg,var(--bg-surface,#fff));border-radius:var(--pc-radius,var(--border-radius,.5rem));box-shadow:var(--card-shadow,0 1px 3px rgba(0,0,0,.08));overflow:hidden;display:flex;flex-direction:column}
.pb17-img-wrap{position:relative;aspect-ratio:1/1;overflow:hidden}
.pb17-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.pb17-card:hover .pb17-img{transform:scale(1.04)}
.pb17-img-top{position:absolute;top:.5rem;left:.5rem;display:flex;gap:.35rem;align-items:center}
.pb17-badge{background:var(--pc-offer-bg,var(--primary-color,#f59e0b));color:var(--pc-offer-text,#000);font-size:.62rem;font-weight:700;padding:.12rem .4rem;border-radius:3px}
.pb17-badge[hidden]{display:none}
.pb17-body{padding:.75rem;display:flex;flex-direction:column;gap:var(--pc-gap,.25rem)}
.pb17-tag{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--primary-color,#f59e0b);font-weight:600}
.pb17-title{font-size:.85rem;font-weight:600;color:var(--pc-title-color,var(--text-color,#111));line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pb17-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pb17-unit,button.pb17-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pb17-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--primary-color,#f59e0b))}
.pb17-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#f59e0b));color:var(--pc-chip-active-text,#000);border-color:transparent}
.pb17-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pb17-unit.has-qty{overflow:visible}
.pb17-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--text-strong,#111827);color:#fff;font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pb17-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.pb17-info-line{font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb17-info-label{font-weight:600}
.pb17-author{font-size:.72rem;color:var(--text-muted,#6b7280)}
.pb17-price-row{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin-top:.1rem}
.pb17-mrp{font-size:var(--pc-mrp-fs,.72rem);color:var(--pc-mrp-color,var(--text-muted,#6b7280));text-decoration:line-through;font-weight:var(--pc-mrp-fw,400);line-height:normal}
.pb17-mrp[hidden]{display:none}
.pb17-price{font-size:var(--pc-price-fs,.88rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--primary-dark,var(--primary-color)));line-height:normal}
/* Liquid fill button — the .pb17-fill pseudoelement rises from bottom */
.pb17-btn,button.pb17-btn{position:relative;width:var(--pc-buy-w,100%);padding:0 .75rem;border:1.5px solid var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));border-radius:var(--border-radius,.375rem);background:transparent;color:var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,600);cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:.35rem;margin-top:.25rem;height:2.1rem;box-sizing:border-box;max-width:100%;font-family:inherit;isolation:isolate}
.pb17-fill{position:absolute;inset:0;background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-dark,var(--primary-color))));transform:scaleY(0);transform-origin:bottom;transition:transform .5s cubic-bezier(.4,0,.2,1);z-index:0;pointer-events:none}
.pb17-btn:hover .pb17-fill{transform:scaleY(1)}
.pb17-btn:hover{color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff));border-color:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-dark,var(--primary-color))))}
.pb17-btn svg,.pb17-btn .lc-lbl{position:relative;z-index:1}
.pb17-btn[hidden]{display:none}
.pb17-qty{display:flex;align-items:center;justify-content:center;gap:.4rem;width:var(--pc-buy-w,100%);max-width:100%;height:2.1rem;box-sizing:border-box;border-radius:var(--border-radius,.375rem);background:var(--pc-btn-bg,var(--primary-dark,var(--primary-color)));color:var(--pc-btn-text,#000)}
.pb17-qty[hidden]{display:none}
.pb17-q-btn,button.pb17-q-btn{cursor:pointer;font-size:.9rem;padding:0;line-height:normal;width:var(--pc-qty-btn-size,26px);height:var(--pc-qty-btn-size,26px);max-height:1.9rem;box-sizing:border-box;border-radius:50%;background:transparent;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}
.pb17-count{font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);min-width:1rem;text-align:center;line-height:normal}
/* Reset transition for instant revert when qty → idle */

/* ── §AK shared: list card grid override ─────────────────────────────────── */
.v-plist--list{grid-template-columns:1fr !important;gap:.6rem}

/* ══════════════════════════════════════════════════════════════════
   §RC-RETAIL — Retail Card (rc-card / rc-card--fx)
   Always-visible cart button. Mobile-first. Works for 18–70+ users.
   Keys: retail, retail-fx
   ══════════════════════════════════════════════════════════════════ */

/* Card shell */
.rc-card{position:relative;background:var(--pc-bg,var(--surface-color,#fff));border-radius:var(--pc-radius,var(--card-radius,var(--radius-md,10px)));box-shadow:var(--shadow-sm,0 1px 4px rgba(0,0,0,.08));overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .2s}
.rc-card:hover{box-shadow:var(--shadow-md,0 4px 16px rgba(0,0,0,.13))}
/* fx: accent bar at top + richer resting shadow to distinguish from plain retail */
.rc-card--fx{box-shadow:0 2px 10px rgba(0,0,0,.1);border-top:3px solid var(--primary-color,#465fff)}
.rc-card--fx:hover{box-shadow:0 6px 24px rgba(0,0,0,.16)}

/* Image area */
.rc-img-wrap{position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--bg-muted,#f3f4f6);flex-shrink:0}
.rc-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.rc-noimg{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-muted,#9ca3af)}
/* fx: image zooms on hover */
.rc-card--fx:hover .rc-img{transform:scale(1.05)}

/* Discount badge — top-left of image */
.rc-disc-img{position:absolute;top:10px;left:10px;z-index:2;background:var(--pc-offer-bg,#15803d);color:var(--pc-offer-text,#fff);font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:3px 8px;border-radius:4px;line-height:1.7;pointer-events:none;text-transform:uppercase}
.rc-disc-img[hidden]{display:none}

/* Body */
.rc-body{padding:12px 14px 14px;display:flex;flex-direction:column;flex:1;gap:var(--pc-gap,4px)}

/* Title — card is an <a>, so inherit colour */
a.rc-card{text-decoration:none;color:inherit;display:flex;flex-direction:column}
.rc-title{font-size:var(--fs-base,1rem);font-weight:600;color:var(--pc-title-color,var(--text-color,#111827));line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* Business row: publication lines, or unit pills (the unit selector) */
.rc-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.rc-info-line{font-size:var(--pc-chip-fs,var(--fs-xs,.75rem));font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.rc-info-label{font-weight:600;color:var(--text-color,#374151)}
.rc-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.rc-unit,button.rc-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,var(--fs-xs,.75rem));font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.rc-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--pc-btn-bg,var(--primary-color,#465fff)))}
.rc-unit.is-sel{background:var(--pc-chip-active-bg,var(--pc-btn-bg,var(--primary-color,#465fff)));color:var(--pc-chip-active-text,var(--pc-btn-text-hover,#fff));border-color:transparent}
.rc-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.rc-unit.has-qty{overflow:visible}
.rc-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--pc-btn-bg,var(--primary-color,#465fff));color:var(--pc-btn-text-hover,#fff);font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}

/* Dashed separator */
.rc-sep{border:none;border-top:1.5px dashed var(--border-color,#e5e7eb);margin:8px 0 4px;margin-top:auto}

/* Action row: price left, cart button right */
.rc-action-row{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:2px;flex-wrap:wrap}
.rc-price-col{display:flex;flex-direction:row;gap:6px;min-width:0;flex:1 1 auto;align-items:baseline;flex-wrap:wrap}
.rc-price{font-size:var(--pc-price-fs,1rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--price-color,var(--primary-color,#111827)));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:normal}
.rc-mrp{font-size:var(--pc-mrp-fs,inherit);font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#9ca3af));text-decoration:line-through;line-height:normal;white-space:nowrap}
.rc-mrp[hidden]{display:none}
.rc-disc{font-size:.65rem;font-weight:700;color:var(--pc-price-color,var(--primary-color,#ef4444));line-height:1.4}
.rc-cart-col{flex-shrink:0}

/* Cart button — pill, compact for inline layout */
.rc-cart-btn,button.rc-cart-btn{display:flex;align-items:center;justify-content:center;gap:5px;height:2.1rem;box-sizing:border-box;padding:0 16px;width:var(--pc-buy-w,auto);max-width:100%;background:none;color:var(--pc-btn-bg,var(--primary-color,#465fff));border:1px solid var(--pc-btn-bg,var(--primary-color,#465fff));border-radius:9999px;font-family:inherit;font-size:var(--pc-buy-fs,inherit);font-weight:var(--pc-buy-fw,700);cursor:pointer;transition:background .18s,color .18s,transform .1s;position:relative;overflow:hidden;line-height:1;white-space:nowrap}
.rc-cart-btn:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,#465fff));color:var(--pc-btn-text-hover,#fff)}
.rc-cart-btn:active{transform:scale(.96)}
.rc-cart-btn[hidden]{display:none}

/* fx: sweep fill animation on add */
.rc-card--fx .rc-cart-btn::after{content:'';position:absolute;inset:0;background:rgba(255,255,255,.22);transform:scaleX(0);transform-origin:left;transition:transform .35s ease;border-radius:inherit;pointer-events:none}
.rc-card--fx .rc-cart-btn.rc--adding::after{transform:scaleX(1)}

/* OOS state */
.rc-oos-btn{padding:0 6px;background:var(--pc-oos-bg,transparent);border:none;border-radius:4px;color:var(--pc-oos-text,#ef4444);font-size:var(--fs-sm,.82rem);font-weight:400;text-align:right;cursor:not-allowed;line-height:1.6;white-space:nowrap}

/* Qty stepper — the engine swaps it in for the Add pill; same fixed row height so the grid never reflows */
.rc-qty{display:flex;align-items:center;justify-content:center;gap:2px;height:2.1rem;box-sizing:border-box;padding:0 2px;background:transparent;border:1.5px solid var(--pc-btn-bg,var(--primary-color,#465fff));border-radius:9999px;overflow:hidden}
.rc-qty[hidden]{display:none}
.rc-qty-btn,button.rc-qty-btn{width:var(--pc-qty-btn-size,30px);height:var(--pc-qty-btn-size,30px);max-height:1.9rem;box-sizing:border-box;background:none;border-radius:50%;font-size:1rem;font-weight:700;color:var(--pc-btn-bg,var(--primary-color,#465fff));cursor:pointer;transition:opacity .15s;flex-shrink:0;line-height:normal;display:inline-flex;align-items:center;justify-content:center}
.rc-qty-btn:hover{opacity:.7}
.rc-count{flex:1;text-align:center;font-size:var(--pc-buy-fs,var(--fs-sm,.85rem));font-weight:700;color:var(--text-color,#111827);min-width:22px;line-height:normal}

/* ══════════════════════════════════════════════════════════════════
   §RC-RETAIL-FX — Retail-FX Card (slide-up panel, image zoom)
   Hover: action panel rises from bottom. Mobile: panel always peeks.
   Keys: retail-fx
   ══════════════════════════════════════════════════════════════════ */
.rcfx-card{overflow:hidden;padding:0;border-radius:var(--pc-radius,var(--card-radius,var(--radius-md,12px)));box-shadow:0 4px 18px rgba(0,0,0,.12);transition:box-shadow .25s,transform .25s}
.rcfx-card:hover{box-shadow:0 10px 32px rgba(0,0,0,.2);transform:translateY(-3px)}
a.rcfx-card{text-decoration:none;color:inherit;display:flex;flex-direction:column}
/* Wrap fills card — image is the full card face */
.rcfx-wrap{position:relative;width:100%;flex:1;overflow:hidden}
.rcfx-img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;transition:transform .5s cubic-bezier(.4,0,.2,1)}
.rcfx-noimg{aspect-ratio:3/4;width:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-muted,#f3f4f6);color:var(--text-muted,#9ca3af)}
.rcfx-card:hover .rcfx-img{transform:scale(1.08)}
/* Action bar — always pinned at bottom, solid color always */
.rcfx-bar{position:absolute;bottom:0;left:0;right:0;z-index:3;display:flex;flex-direction:column;gap:var(--pc-gap,6px);padding:10px 14px;background:var(--pc-bg,var(--primary-color,#2563eb))}
/* Info panel — author only, slides up from below the bar on hover */
.rcfx-info{position:absolute;bottom:var(--rcfx-bar-h,80px);left:0;right:0;z-index:2;padding:8px 14px;background:color-mix(in srgb,var(--pc-btn-bg,var(--primary-color,#2563eb)) 95%,#000);transform:translateY(100%);transition:transform .42s cubic-bezier(.4,0,.2,1);will-change:transform}
.rcfx-card:hover .rcfx-info,.rcfx-card:focus-within .rcfx-info,.rcfx-card.rcfx--open .rcfx-info{transform:translateY(0)}
/* Title — inside bar, always visible */
.rcfx-title{font-size:var(--fs-base,1rem);font-weight:400;color:var(--pc-title-color,var(--text-color,#111827));line-height:1.3;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:6px}
/* Publication lines — inside the info panel */
.rcfx-info-line{font-size:var(--pc-chip-fs,var(--fs-xs,.72rem));font-weight:var(--pc-chip-fw,400);color:color-mix(in srgb,var(--pc-btn-text,#fff) 75%,transparent);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.rcfx-info-label{font-weight:600;color:var(--pc-btn-text,#fff)}
/* Unit pills — inside the bar, above the price row */
.rcfx-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,6px)}
.rcfx-unit,button.rcfx-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,var(--fs-xs,.72rem));font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.rcfx-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--pc-btn-bg,var(--primary-color,#2563eb)))}
.rcfx-unit.is-sel{background:var(--pc-chip-active-bg,var(--pc-btn-bg,var(--primary-color,#2563eb)));color:var(--pc-chip-active-text,var(--pc-btn-text,#fff));border-color:transparent}
.rcfx-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.rcfx-unit.has-qty{overflow:visible}
.rcfx-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--pc-btn-bg,var(--primary-color,#2563eb));color:var(--pc-btn-text,#fff);font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
/* Price + cart row inside bar */
.rcfx-bar-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.rcfx-prices{display:flex;align-items:baseline;gap:6px;min-width:0;flex:1}
.rcfx-price{font-size:var(--pc-price-fs,1rem);font-weight:var(--pc-price-fw,800);color:var(--pc-price-color,var(--price-color,var(--primary-color,#111827)));white-space:nowrap;line-height:normal}
.rcfx-mrp{font-size:var(--pc-mrp-fs,var(--fs-base,1rem));font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#9ca3af));text-decoration:line-through;white-space:nowrap;line-height:normal}
.rcfx-mrp[hidden]{display:none}
.rcfx-cart-wrap{display:flex;align-items:center;flex-shrink:0;margin-left:auto}
/* Cart button — frosted glass pill */
.rcfx-cart-btn,button.rcfx-cart-btn{display:flex;align-items:center;justify-content:center;gap:5px;height:2.1rem;box-sizing:border-box;padding:0 14px;width:var(--pc-buy-w,auto);max-width:100%;background:var(--pc-btn-bg,var(--primary-color,#2563eb));color:var(--pc-btn-text,#fff);border:none;border-radius:9999px;font-family:inherit;font-weight:var(--pc-buy-fw,700);font-size:var(--pc-buy-fs,var(--fs-sm,.82rem));cursor:pointer;transition:border-color .35s ease,background .35s ease,transform .1s;line-height:1;white-space:nowrap;position:relative;overflow:hidden}
.rcfx-cart-btn::before{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 25%,color-mix(in srgb,var(--pc-btn-text,#fff) 35%,transparent) 50%,transparent 75%);transform:translateX(-150%);transition:transform 0s;pointer-events:none}
.rcfx-cart-btn:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#2563eb)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff))}
.rcfx-cart-btn:hover::before{transform:translateX(250%);transition:transform .55s ease}
.rcfx-cart-btn:active{transform:scale(.95)}
.rcfx-cart-btn[hidden]{display:none}
/* Qty stepper */
.rcfx-qty{display:flex;align-items:center;gap:2px;height:2.1rem;box-sizing:border-box;padding:0 2px;background:var(--pc-btn-bg,var(--primary-color,#2563eb));border:none;border-radius:9999px;overflow:hidden;color:var(--pc-btn-text,#fff)}
.rcfx-qty[hidden]{display:none}
.rcfx-qty-btn,button.rcfx-qty-btn{width:var(--pc-qty-btn-size,30px);height:var(--pc-qty-btn-size,30px);max-height:1.9rem;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;background:none;border-radius:50%;color:var(--pc-btn-text,#fff);font-size:1rem;font-weight:700;cursor:pointer;line-height:normal;flex-shrink:0;transition:background .15s}
.rcfx-qty-btn:hover{background:color-mix(in srgb,var(--pc-btn-text,#fff) 20%,transparent)}
.rcfx-count{min-width:22px;text-align:center;font-size:var(--pc-buy-fs,var(--fs-sm,.82rem));font-weight:700;color:var(--pc-btn-text,#fff);line-height:normal}
/* OOS */
.rcfx-oos{padding:0;background:none;border:none;color:var(--pc-oos-text,#ef4444);font-size:var(--fs-sm,.82rem);font-weight:400;cursor:not-allowed;white-space:nowrap;margin-left:auto}
/* Mobile: on touch devices panel is always open */
@media (hover:none){.rcfx-panel{transform:translateY(0)}.rcfx-img{aspect-ratio:1/1}}

/* ══════════════════════════════════════════════════════════════════
   §UP — Unit Panel Card (up-card, card_pb18_unitpanel.go)
   Plain closed card: image, optional offer badge, name, cheapest
   unit's price, one small round cart icon — no big button, no
   visible stepper until opened. The cart icon slides a panel UP
   from the card's own bottom edge, over a blurred/dimmed backdrop;
   it grows with its rows up to the card's own height, then the row
   list scrolls. Each unit row's own +/- stepper is the add action —
   there is no separate "Add to cart" button in the panel.
   Key: unitpanel
   ══════════════════════════════════════════════════════════════════ */
.up-card{position:relative;overflow:hidden}
.up-img-wrap{position:relative}
.up-img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;transition:filter .22s ease}
.up-noimg{aspect-ratio:1/1;width:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-muted,#f3f4f6);color:var(--text-muted,#9ca3af)}
.up-badge{position:absolute;top:8px;left:8px;background:var(--pc-offer-bg,#ef4444);color:var(--pc-offer-text,#fff);font-size:.68rem;font-weight:700;padding:2px 7px;border-radius:5px;line-height:1.4;z-index:1}
/* Vertical rhythm (title / info lines / price row) follows the shared Card spacing / Custom
   gap setting (--pc-gap), same var the Modern card's .mc-body/.mc-foot read — one setting,
   both layered cards, so it applies "today and tomorrow" per the org's own choice. */
.up-body{display:flex;flex-direction:column;gap:var(--pc-gap,.35rem);padding:10px 12px 12px;transition:filter .22s ease}
.up-title{font-size:var(--fs-sm,.9rem);color:var(--text-color,#111827);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35;min-height:2.4em}
/* Publication profile only — publisher then writer, as two plain text lines (no chip/pill).
   The gap BETWEEN the two lines reuses --pc-chip-gap (the same "how tight should related bits
   of text sit" knob Modern's chip row uses) rather than --pc-gap, which is the gap BETWEEN
   the title/info/price groups, not within one of them. */
.up-info-lines{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.up-info{font-size:var(--pc-chip-fs,var(--fs-xs,.75rem));font-weight:var(--pc-chip-fw,400);color:var(--pc-chip-text,var(--text-muted,#6b7280));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.up-info-label{font-weight:600;color:var(--text-color,#374151)}
.up-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.up-price-collapsed{font-size:var(--pc-price-fs,1rem);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--price-color,var(--primary-color,#111827)));line-height:normal}

/* Cart icon — circular, count shows total units selected across all rows */
.up-cart-btn,button.up-cart-btn{position:relative;width:calc(var(--pc-qty-btn-size,24px) + 12px);height:calc(var(--pc-qty-btn-size,24px) + 12px);min-width:36px;min-height:36px;font-size:var(--pc-buy-fs,inherit);font-weight:var(--pc-buy-fw,700);border-radius:50%;background:var(--pc-btn-bg,var(--primary-color,#465fff));color:var(--pc-btn-text,#fff);border:none;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:background .18s,color .18s,transform .1s}
.up-cart-btn:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,#465fff));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff))}
.up-cart-btn:active{transform:scale(.94)}
.up-cart-count{position:absolute;top:-4px;right:-4px;background:var(--pc-btn-bg,var(--primary-color,#465fff));color:var(--pc-btn-text,#fff);font-size:.62rem;font-weight:700;min-width:16px;height:16px;border-radius:9999px;display:none;align-items:center;justify-content:center;line-height:1;padding:0 2px}
.up-cart-count.up--visible{display:flex}
.up-oos-btn{padding:0 6px;background:var(--pc-oos-bg,transparent);border-radius:4px;font-size:var(--pc-buy-fs,var(--fs-sm,.82rem));font-weight:var(--pc-buy-fw,600);color:var(--pc-oos-text,#ef4444);white-space:nowrap}

/* Blur/dim the card body behind the open panel, so it reads as a backdrop rather than
   just being covered — the panel itself never grows past the card's own height, so
   there is always at least a sliver of blurred image left visible above it. */
.up-card--open .up-img{filter:blur(3px) brightness(.85)}
.up-card--open .up-body{filter:blur(2px);opacity:.5}

/* Panel — pinned to the card's own bottom edge, height:auto up to the card's own
   height (max-height:100% of the card, which is position:relative) so it can never
   grow past the top of the card itself; once its rows would exceed that it scrolls
   instead. Slides up from height 0 via max-height, not transform, so it can start
   short (few units) and end up tall (many units) rather than always being full-card
   height while empty underneath. */
.up-panel{position:absolute;left:0;right:0;bottom:0;z-index:5;max-height:0;overflow:hidden;background:var(--pc-bg,var(--surface-color,#fff));border-radius:var(--pc-radius,var(--card-radius,var(--radius-md,10px))) var(--pc-radius,var(--card-radius,var(--radius-md,10px))) 0 0;box-shadow:0 -8px 24px rgba(0,0,0,.12);display:flex;flex-direction:column;transition:max-height .26s ease}
.up-card--open .up-panel{max-height:100%}
.up-panel-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border-color,#e5e7eb);font-size:var(--fs-sm,.82rem);font-weight:700;color:var(--text-color,#111827);flex-shrink:0}
.up-panel-close{background:none;border:none;padding:2px;display:flex;color:var(--text-muted,#6b7280);cursor:pointer}
.up-panel-rows{flex:1;overflow-y:auto;padding:0 14px;min-height:0}
.up-unit-row{display:flex;flex-direction:column;gap:1px;padding:9px 0;border-top:1px solid var(--border-color,#e5e7eb);font-size:var(--fs-sm,.85rem)}
.up-unit-row:first-child{border-top:none}
.up-unit-label{color:var(--text-color,#111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.up-unit-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px}
.up-unit-prices{display:flex;align-items:baseline;gap:6px;flex-shrink:0}
.up-unit-price{font-size:var(--pc-price-fs,inherit);font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--text-color,#111827));line-height:normal}
.up-unit-mrp{color:var(--pc-mrp-color,var(--text-muted,#9ca3af));text-decoration:line-through;font-size:var(--pc-mrp-fs,var(--fs-xs,.75rem));font-weight:var(--pc-mrp-fw,400);line-height:normal}
.up-unit-oos{padding:1px 6px;background:var(--pc-oos-bg,transparent);border-radius:4px;color:var(--pc-oos-text,#ef4444);font-size:var(--fs-xs,.75rem);white-space:nowrap}

/* Per-unit qty stepper — the add action itself, no separate cart button in the panel */
.up-unit-qty{display:flex;align-items:center;gap:6px}
.up-minus,.up-plus,button.up-minus,button.up-plus{width:var(--pc-qty-btn-size,24px);height:var(--pc-qty-btn-size,24px);border-radius:6px;border:1px solid var(--pc-qty-btn-border,var(--pc-btn-text,#fff));background:var(--pc-btn-bg,var(--primary-color,#465fff));display:flex;align-items:center;justify-content:center;padding:0;font-size:.85rem;font-weight:700;color:var(--pc-btn-text,#fff);cursor:pointer;line-height:normal;transition:background .15s,border-color .15s,color .15s}
.up-minus:hover,.up-plus:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,#465fff));border-color:var(--pc-qty-btn-border,var(--pc-btn-text-hover,var(--pc-btn-text,#fff)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff))}
.up-qty-count{min-width:16px;text-align:center;font-size:var(--pc-buy-fs,inherit);font-weight:var(--pc-buy-fw,700);color:var(--text-color,#111827);line-height:normal}

/* ══════════════════════════════════════════════════════════════════
   §SH — Showcase Card (sh-card, card_pb19_showcase.go)
   Edge-to-edge image (offer badge top-left, wishlist heart
   top-right, both over the image, title clamped to 2 lines below
   it) → MRP + offer price with an offer pill on the right → a pill
   row (publisher/writer, or the product's own units — layered,
   shares Modern/Unit Panel's Profile setting) → Add to Cart, label
   from Settings (shared with Modern's Buy button label). No
   divider, no description text, no rating yet (sh-rating-ph exists
   below, reserved, but the card does not render it until there is
   real rating data).
   Key: showcase
   ══════════════════════════════════════════════════════════════════ */
/* min-width:0 at the card root: the search grid (.v-plist, CSS grid) and every other grid/flex
   layout a card can sit in gives its items an automatic min-width equal to their own content's
   min-content size, not 0 — without this a long title forces the WHOLE card wider than its grid
   cell instead of clamping inside it. padding:0 is explicit here, not just relying on the <a>'s
   UA default, since something in this org's CSS chain was observed padding this element. */
.sh-card{display:block;min-width:0;width:100%;padding:0;box-sizing:border-box;text-decoration:none;color:inherit;cursor:pointer;background:var(--pc-bg,#fff);border-radius:var(--pc-radius,var(--card-radius,var(--radius-md,10px)));overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06),0 10px 24px -16px rgba(0,0,0,.2);transition:box-shadow .2s,transform .2s}
.sh-card:hover{box-shadow:0 4px 10px rgba(0,0,0,.08),0 16px 32px -16px rgba(0,0,0,.26);transform:translateY(-2px)}
.sh-img-wrap{position:relative}
.sh-img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block}
.sh-noimg{aspect-ratio:1/1;width:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-muted,#f3f4f6);color:var(--text-muted,#9ca3af)}
.sh-wish{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;background:var(--pc-bg,#fff);color:var(--text-muted,#6b7280);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.15);transition:color .15s,background .15s}
.sh-wish[aria-pressed="true"]{color:var(--error-color,#ef4444)}
.sh-wish[aria-pressed="true"] svg{fill:currentColor}
.sh-panel{padding:10px 12px 12px;display:flex;flex-direction:column;gap:var(--pc-gap,.4rem)}
/* min-width:0 is required for the ellipsis below to actually apply: a flex child's default
   min-width is its own content width, not 0, so without this the title just pushes the row
   (and the whole card) wider instead of truncating. */
.sh-title{min-width:0;font-size:var(--fs-sm,.92rem);font-weight:700;color:var(--pc-title-color,var(--text-color,#111827));display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35}
.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.sh-prices{display:flex;align-items:baseline;gap:6px;min-width:0}
.sh-price{font-size:var(--pc-price-fs,var(--fs-sm,.92rem));font-weight:var(--pc-price-fw,700);color:var(--pc-price-color,var(--price-color,var(--primary-color,#111827)));white-space:nowrap;line-height:normal}
.sh-mrp{color:var(--pc-mrp-color,var(--text-muted,#9ca3af));text-decoration:line-through;font-size:var(--pc-mrp-fs,var(--fs-xs,.75rem));font-weight:var(--pc-mrp-fw,400);white-space:nowrap;line-height:normal}
.sh-offer-pill{flex-shrink:0;background:var(--pc-offer-bg,#fef2f2);color:var(--pc-offer-text,#dc2626);font-size:.68rem;font-weight:700;padding:2px 7px;border-radius:9999px;white-space:nowrap}
.sh-pills{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,6px)}
/* Fixed height (not padding+line-height) keeps every pill genuinely pill-shaped and compact
   regardless of the configured chip font size — same approach as the Modern card's .mc-chip
   (--mc-chip-h), so "Unit chip font size" changes text without inflating the pill's box. */
.sh-pill,button.sh-pill{position:relative;display:inline-flex;align-items:center;height:1.5rem;box-sizing:border-box;border:1px solid transparent;background:var(--pc-chip-bg,var(--bg-muted,#f3f4f6));color:var(--pc-chip-text,var(--text-color,#374151));font-size:var(--pc-chip-fs,var(--fs-xs,.75rem));font-weight:var(--pc-chip-fw,500);padding:0 .65rem;border-radius:9999px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:normal}
/* Interactive unit pills (retail profile, >1 unit): a plain .sh-pill is also a button, selected
   state and qty badge follow the exact same convention as the Modern card's .mc-unit chips. */
button.sh-pill.sh-unit{border:1px solid transparent;font-family:inherit;cursor:pointer;max-width:9rem}
.sh-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--pc-btn-bg,#111827))}
.sh-unit.is-sel{background:var(--pc-chip-active-bg,var(--pc-btn-bg,#111827));color:var(--pc-chip-active-text,var(--pc-btn-text,#fff));font-weight:var(--pc-chip-fw,600)}
.sh-unit.has-qty{overflow:visible;z-index:1}
.sh-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--pc-btn-bg,#111827);color:var(--pc-btn-text,#fff);font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.sh-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.sh-row--act{justify-content:flex-start}
/* Width/font-size/weight read the same --pc-buy-* vars the Modern card's Buy button
   (.mc-buy/.mc-qty) already reads — one "Buy button" settings group, both cards. The HEIGHT is
   a fixed 2.1rem shared by the button and the stepper (exactly like .mc-buy,.mc-qty,.mc-oos
   below) — the qty stepper's own +/- circles can be a different size (--pc-qty-btn-size)
   without changing the row's own height, otherwise the whole card visibly resizes/jumps the
   moment Add to Cart turns into the stepper (caught live: a card below it visibly shifted). */
.sh-cart-btn,.sh-qty,button.sh-cart-btn{display:inline-flex;align-items:center;justify-content:center;height:2.1rem;box-sizing:border-box;width:var(--pc-buy-w,fit-content);max-width:100%;border-radius:9999px;font-size:var(--pc-buy-fs,var(--fs-xs,.78rem));font-weight:var(--pc-buy-fw,600);white-space:nowrap}
.sh-cart-btn{gap:6px;padding:0 1.1rem;border:none;background:var(--pc-btn-bg,#111827);color:var(--pc-btn-text,#fff);cursor:pointer;transition:background .15s,color .15s}
.sh-cart-btn:hover{background:var(--pc-btn-bg-hover,var(--pc-btn-bg,#111827))}
.sh-cart-btn[hidden],.sh-qty[hidden]{display:none}
/* The Add to Cart button turns into this stepper once the SELECTED unit has a qty > 0 — see
   initShowcaseCards' per-sku qty map in theme.js. Same fixed row height as the button it
   replaces; only the +/- circles inside it follow --pc-qty-btn-size. */
.sh-qty{justify-content:space-between;gap:2px;padding:0 4px;background:var(--pc-btn-bg,#111827);color:var(--pc-btn-text,#fff)}
.sh-minus,.sh-plus,button.sh-minus,button.sh-plus{width:var(--pc-qty-btn-size,26px);height:var(--pc-qty-btn-size,26px);max-height:1.9rem;border-radius:50%;background:transparent;color:inherit;font-size:1rem;font-weight:700;line-height:normal;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box}
.sh-minus:hover,.sh-plus:hover{background:rgba(255,255,255,.18)}
.sh-qty-count{min-width:1.2rem;text-align:center;font-size:var(--pc-buy-fs,var(--fs-xs,.78rem));font-weight:700;line-height:normal}
.sh-oos{display:inline-flex;align-items:center;height:2.1rem;box-sizing:border-box;font-size:var(--pc-buy-fs,var(--fs-xs,.78rem));color:var(--pc-oos-text,#ef4444);background:var(--pc-oos-bg,transparent);padding:0 10px;border-radius:6px}
/* Rating placeholder — reserved, not faked: an outline star + a dash, not five filled stars or
   a made-up number, until searchHit carries real rating data. */
.sh-rating-ph{display:inline-flex;align-items:center;gap:3px;color:var(--text-muted,#9ca3af);font-size:var(--fs-xs,.75rem)}

/* §PUB — Publication card (vertical grid) */
.pub-card{display:flex;flex-direction:column;background:var(--pc-bg,#fff);border-radius:var(--pc-radius,10px);overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.07);transition:box-shadow .2s,transform .2s;cursor:pointer}
.pub-card:hover{box-shadow:0 8px 24px rgba(0,0,0,.12);transform:translateY(-2px)}
.pub-img-wrap{position:relative;width:100%;overflow:hidden;flex-shrink:0}
.pub-img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;transition:transform .4s ease}
.pub-card:hover .pub-img{transform:scale(1.04)}
.pub-noimg{aspect-ratio:4/3;background:var(--surface-2,#f3f4f6);display:flex;align-items:center;justify-content:center;color:var(--text-muted,#9ca3af)}
.pub-disc{position:absolute;top:10px;left:10px;background:var(--pc-offer-bg,var(--primary-color,#465fff));color:var(--pc-offer-text,#fff);font-size:.65rem;font-weight:700;padding:3px 8px;border-radius:9999px;letter-spacing:.02em;line-height:1.5}
.pub-disc[hidden]{display:none}
.pub-body{display:flex;flex-direction:column;gap:var(--pc-gap,10px);padding:14px;flex:1}
.pub-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--fs-base,1rem);font-weight:400;color:var(--pc-title-color,var(--text-color,#111827));line-height:1.35;min-height:calc(var(--fs-base,1rem) * 1.35 * 2)}
.pub-rule{height:1px;background:linear-gradient(to right,transparent,var(--pc-btn-bg,var(--primary-color,#465fff)) 20%,var(--pc-btn-bg,var(--primary-color,#465fff)) 80%,transparent);opacity:.35;margin:0}
.pub-author-row{display:flex;align-items:center;justify-content:space-between;gap:var(--pc-chip-gap,8px)}
.pub-author{font-size:var(--pc-chip-fs,var(--fs-sm,.78rem));font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pub-author-by{opacity:.6}
.pub-pub-name{font-size:var(--pc-chip-fs,var(--fs-sm,.78rem));font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#9ca3af);white-space:nowrap;flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
/* Retail profile: unit pills (the unit selector) */
.pub-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pub-unit,button.pub-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,var(--fs-xs,.75rem));font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pub-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--pc-btn-bg,var(--primary-color,#465fff)))}
.pub-unit.is-sel{background:var(--pc-chip-active-bg,var(--pc-btn-bg,var(--primary-color,#465fff)));color:var(--pc-chip-active-text,var(--pc-btn-text,#fff));border-color:transparent}
.pub-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pub-unit.has-qty{overflow:visible}
.pub-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--pc-btn-bg,var(--primary-color,#465fff));color:var(--pc-btn-text,#fff);font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pub-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto}
.pub-cart-wrap{--pub-row:max(38px,calc(var(--pc-qty-btn-size,26px) + 12px));display:flex;align-items:center;flex-shrink:0;height:var(--pub-row)}
.pub-cart-btn,button.pub-cart-btn{display:flex;align-items:center;justify-content:center;width:var(--pub-row);height:var(--pub-row);font-size:var(--pc-buy-fs,inherit);font-weight:var(--pc-buy-fw,600);background:var(--pc-btn-bg,var(--primary-color,#465fff));color:var(--pc-btn-text,#fff);border:none;border-radius:50%;cursor:pointer;transition:opacity .18s,background .18s,color .18s}
.pub-cart-btn:hover{opacity:.85;background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#465fff)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff))}
.pub-cart-btn:active{opacity:.7}
.pub-cart-btn[hidden]{display:none}
.pub-prices{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.pub-price{font-size:var(--pc-price-fs,var(--fs-lg,1.1rem));font-weight:var(--pc-price-fw,800);color:var(--pc-price-color,var(--pc-btn-bg,var(--primary-color,#465fff)));line-height:normal}
.pub-mrp{font-size:var(--pc-mrp-fs,var(--fs-sm,.82rem));font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#9ca3af));text-decoration:line-through;line-height:normal}
.pub-mrp[hidden]{display:none}
.pub-oos-wrap{display:flex;align-items:center;flex-shrink:0}
.pub-oos-pill{display:inline-flex;align-items:center;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;overflow:visible;height:34px}
.pub-oos-txt{font-size:.7rem;padding:0 10px;color:var(--pc-oos-text,#ef4444);white-space:nowrap;font-weight:500;line-height:1}
.pub-oos-sep{width:1px;height:55%;background:var(--border-color,#d1d5db);flex-shrink:0}
.pub-notify-btn{position:relative;display:flex;align-items:center;justify-content:center;width:34px;height:100%;background:none;border:none;cursor:pointer;color:var(--text-muted,#9ca3af);transition:color .18s;flex-shrink:0}
.pub-notify-btn::before{content:'';position:absolute;inset:0;border-radius:0 9999px 9999px 0;background:transparent;transition:background .18s;z-index:0}
.pub-notify-btn svg{position:relative;z-index:1}
.pub-notify-btn:hover{color:var(--pc-btn-bg,var(--primary-color,#465fff))}
.pub-notify-btn:hover::before{background:var(--surface-2,#f9fafb)}
.pub-notify-btn::after{content:"Notify me";position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) scale(.88);background:var(--text-strong,#111827);color:#fff;font-size:.65rem;white-space:nowrap;padding:3px 8px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .15s,transform .15s;z-index:10}
.pub-notify-btn:hover::after{opacity:1;transform:translateX(-50%) scale(1)}
.pub-qty{display:flex;align-items:center;gap:2px;padding:0 2px;width:var(--pc-buy-w,120px);max-width:100%;height:var(--pub-row);box-sizing:border-box;background:var(--pc-btn-bg,var(--primary-color,#465fff));border-radius:9999px;overflow:hidden}
.pub-qty[hidden]{display:none}
.pub-qty-btn,button.pub-qty-btn{width:var(--pc-qty-btn-size,32px);height:var(--pc-qty-btn-size,32px);max-height:calc(var(--pub-row) - 4px);box-sizing:border-box;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:none;border-radius:50%;font-size:1.1rem;font-weight:700;color:var(--pc-btn-text,#fff);cursor:pointer;line-height:normal}
.pub-qty-btn:hover{opacity:.75}
.pub-count{flex:1;text-align:center;font-size:var(--pc-buy-fs,var(--fs-sm,.85rem));font-weight:var(--pc-buy-fw,700);color:var(--pc-btn-text,#fff);min-width:20px;line-height:normal}

/* §PUBFX — Publication FX card (vertical grid, animated) */
@keyframes pubfx-kenburns{0%{transform:scale(1) translate(0,0)}50%{transform:scale(1.07) translate(1.2%,.8%)}100%{transform:scale(1) translate(0,0)}}
@keyframes pubfx-shimmer{0%{transform:translateX(-120%)}100%{transform:translateX(200%)}}
@keyframes pubfx-accent{0%{width:0}100%{width:100%}}
@keyframes pubfx-ring{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--pc-btn-bg,var(--primary-color,#465fff)) 50%,transparent)}70%{box-shadow:0 0 0 10px transparent}100%{box-shadow:0 0 0 0 transparent}}
.pubfx-card{display:flex;flex-direction:column;position:relative;background:var(--pc-bg,#fff);border-radius:var(--pc-radius,10px);overflow:visible;box-shadow:0 0 0 1px rgba(0,0,0,.12),2px 4px 8px rgba(0,0,0,.06);transition:box-shadow .35s,transform .35s;cursor:pointer;transform-style:preserve-3d}
.pubfx-card::before{content:'';position:absolute;inset:4px -6px -4px 4px;background:var(--pc-bg,#fff);border:1px solid #e5e1dc;border-radius:var(--pc-radius,10px);z-index:-1}
.pubfx-card::after{content:'';position:absolute;inset:8px -11px -7px 8px;background:color-mix(in srgb,var(--pc-bg,#fff) 92%,#bbb);border:1px solid #dedad6;border-radius:var(--pc-radius,10px);z-index:-2}
.pubfx-card:hover{box-shadow:0 0 0 1px rgba(0,0,0,.15),12px 20px 36px rgba(0,0,0,.16);transform:perspective(900px) rotateY(-7deg) translateY(-5px) scale(1.01)}
.pubfx-img-wrap{position:relative;width:100%;overflow:hidden;flex-shrink:0;border-radius:var(--pc-radius,10px) var(--pc-radius,10px) 0 0}
.pubfx-img-wrap::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--pc-bg,#fff);border-radius:var(--pc-radius,10px) 0 0 0;z-index:1;pointer-events:none}
.pubfx-img{width:100%;object-fit:cover;display:block;animation:pubfx-kenburns 14s ease-in-out infinite}
.pubfx-card:hover .pubfx-img{animation-duration:7s}
.pubfx-noimg{aspect-ratio:4/3;background:var(--surface-2,#f3f4f6);display:flex;align-items:center;justify-content:center;color:var(--text-muted,#9ca3af)}
.pubfx-disc{position:absolute;top:10px;left:20px;background:var(--pc-offer-bg,var(--primary-color,#465fff));color:var(--pc-offer-text,#fff);font-size:.65rem;font-weight:700;padding:3px 8px;border-radius:9999px;letter-spacing:.02em;line-height:1.5;overflow:hidden;z-index:2}
.pubfx-disc[hidden]{display:none}
.pubfx-disc::after{content:'';position:absolute;top:0;left:0;width:45%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);animation:pubfx-shimmer 2.8s ease-in-out infinite}
.pubfx-body{display:flex;flex-direction:column;gap:var(--pc-gap,10px);padding:14px 14px 14px 21px;flex:1}
.pubfx-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--fs-base,1rem);font-weight:400;color:var(--pc-title-color,var(--text-color,#111827));line-height:1.35;min-height:calc(var(--fs-base,1rem) * 1.35 * 2)}
.pubfx-author-row{display:flex;align-items:center;justify-content:space-between;gap:var(--pc-chip-gap,8px)}
.pubfx-author{font-size:var(--pc-chip-fs,var(--fs-sm,.78rem));font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s}
.pubfx-card:hover .pubfx-author{color:var(--pc-btn-bg,var(--primary-color,#465fff))}
.pubfx-author-by{opacity:.6}
.pubfx-pub-name{font-size:var(--pc-chip-fs,var(--fs-sm,.78rem));font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#9ca3af);white-space:nowrap;flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
/* Retail profile: unit pills (the unit selector) */
.pubfx-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.pubfx-unit,button.pubfx-unit{position:relative;display:inline-flex;align-items:center;height:1.5rem;max-width:9rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,var(--fs-xs,.75rem));font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:border-color .15s,background .15s;justify-content:center}
.pubfx-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--pc-btn-bg,var(--primary-color,#465fff)))}
.pubfx-unit.is-sel{background:var(--pc-chip-active-bg,var(--pc-btn-bg,var(--primary-color,#465fff)));color:var(--pc-chip-active-text,var(--pc-btn-text,#fff));border-color:transparent}
.pubfx-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.pubfx-unit.has-qty{overflow:visible}
.pubfx-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-8px;min-width:1rem;height:1rem;padding:0 .2rem;box-sizing:border-box;border-radius:9999px;background:var(--pc-btn-bg,var(--primary-color,#465fff));color:var(--pc-btn-text,#fff);font-size:.62rem;font-weight:700;line-height:1rem;text-align:center}
.pubfx-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto}
.pubfx-prices{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.pubfx-price{font-size:var(--pc-price-fs,var(--fs-lg,1.1rem));font-weight:var(--pc-price-fw,800);color:var(--pc-price-color,var(--pc-btn-bg,var(--primary-color,#465fff)));line-height:normal}
.pubfx-mrp{font-size:var(--pc-mrp-fs,var(--fs-sm,.82rem));font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#9ca3af));text-decoration:line-through;line-height:normal}
.pubfx-mrp[hidden]{display:none}
.pubfx-cart-wrap{--pubfx-row:max(38px,calc(var(--pc-qty-btn-size,26px) + 12px));display:flex;align-items:center;flex-shrink:0;height:var(--pubfx-row)}
.pubfx-cart-btn,button.pubfx-cart-btn{display:flex;align-items:center;justify-content:center;width:var(--pubfx-row);height:var(--pubfx-row);font-size:var(--pc-buy-fs,inherit);font-weight:var(--pc-buy-fw,600);background:var(--pc-btn-bg,var(--primary-color,#465fff));color:var(--pc-btn-text,#fff);border:none;border-radius:50%;cursor:pointer;transition:opacity .18s,background .18s,color .18s}
.pubfx-cart-btn:hover{opacity:.85;background:var(--pc-btn-bg-hover,var(--pc-btn-bg,var(--primary-color,#465fff)));color:var(--pc-btn-text-hover,var(--pc-btn-text,#fff))}
.pubfx-cart-btn:active{animation:pubfx-ring .5s ease-out}
.pubfx-cart-btn[hidden]{display:none}
.pubfx-qty{display:flex;align-items:center;gap:2px;padding:0 2px;width:var(--pc-buy-w,120px);max-width:100%;height:var(--pubfx-row);box-sizing:border-box;background:var(--pc-btn-bg,var(--primary-color,#465fff));border-radius:9999px;overflow:hidden}
.pubfx-qty[hidden]{display:none}
.pubfx-qty-btn,button.pubfx-qty-btn{width:var(--pc-qty-btn-size,32px);height:var(--pc-qty-btn-size,32px);max-height:calc(var(--pubfx-row) - 4px);box-sizing:border-box;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:none;border-radius:50%;font-size:1.1rem;font-weight:700;color:var(--pc-btn-text,#fff);cursor:pointer;line-height:normal}
.pubfx-qty-btn:hover{opacity:.75}
.pubfx-count{flex:1;text-align:center;font-size:var(--pc-buy-fs,var(--fs-sm,.85rem));font-weight:var(--pc-buy-fw,700);color:var(--pc-btn-text,#fff);min-width:20px;line-height:normal}
.pubfx-oos-wrap{display:flex;align-items:center;flex-shrink:0}
.pubfx-oos-pill{display:inline-flex;align-items:center;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;overflow:visible;height:34px}
.pubfx-oos-txt{font-size:.7rem;padding:0 10px;color:var(--pc-oos-text,#ef4444);white-space:nowrap;font-weight:500;line-height:1}
.pubfx-oos-sep{width:1px;height:55%;background:var(--border-color,#d1d5db);flex-shrink:0}
.pubfx-notify-btn{position:relative;display:flex;align-items:center;justify-content:center;width:34px;height:100%;background:none;border:none;cursor:pointer;color:var(--text-muted,#9ca3af);transition:color .18s;flex-shrink:0}
.pubfx-notify-btn::before{content:'';position:absolute;inset:0;border-radius:0 9999px 9999px 0;background:transparent;transition:background .18s;z-index:0}
.pubfx-notify-btn svg{position:relative;z-index:1}
.pubfx-notify-btn:hover{color:var(--pc-btn-bg,var(--primary-color,#465fff))}
.pubfx-notify-btn:hover::before{background:var(--surface-2,#f9fafb)}
.pubfx-notify-btn::after{content:"Notify me";position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) scale(.88);background:var(--text-strong,#111827);color:#fff;font-size:.65rem;white-space:nowrap;padding:3px 8px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .15s,transform .15s;z-index:10}
.pubfx-notify-btn:hover::after{opacity:1;transform:translateX(-50%) scale(1)}

/* §VPC — profile page extras (layout + sidebar owned by profile-classic.html template) */

/* §VPC-PANEL — panel header row (title + action btn) */
.vpc__panel-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color,#f3f4f6)}
.vpc__panel-title{font-size:1rem;font-weight:700;color:var(--text-strong,#111827);margin:0}
.vpc__edit-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.38rem .85rem;font-size:.8rem;font-weight:600;color:var(--primary-dark,var(--primary-color));background:color-mix(in srgb,var(--primary-color) 8%,transparent);border:1px solid color-mix(in srgb,var(--primary-color) 20%,transparent);border-radius:9999px;cursor:pointer;user-select:none;transition:background .15s}
.vpc__edit-btn:hover{background:color-mix(in srgb,var(--primary-color) 14%,transparent)}

/* §VPC-ORD — Orders sub-tab bar */
.vpc-ord__radio{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.vpc-ord__nav{display:flex;border-bottom:1px solid var(--border-color,#e5e7eb);overflow-x:auto;margin-bottom:1.5rem;gap:0}
.vpc-ord__tab-lbl{display:inline-flex;align-items:center;gap:.4rem;padding:.6rem .85rem;font-size:.82rem;font-weight:500;color:var(--text-muted,#6b7280);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;user-select:none;transition:color .15s,border-color .15s}
.vpc-ord__tab-lbl:hover{color:var(--text-color,#374151)}
.vpc-ord__badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 4px;border-radius:9999px;background:var(--surface-2,#f3f4f6);color:var(--text-muted,#6b7280);font-size:.68rem;font-weight:700;line-height:1}
.vpc-ord__panel{display:none}
#ord-all:checked      ~ .vpc-ord__nav .vpc-ord__tab--all      .vpc-ord__tab-lbl,
#ord-processing:checked ~ .vpc-ord__nav .vpc-ord__tab--proc  .vpc-ord__tab-lbl,
#ord-shipped:checked  ~ .vpc-ord__nav .vpc-ord__tab--ship    .vpc-ord__tab-lbl,
#ord-delivered:checked~ .vpc-ord__nav .vpc-ord__tab--del     .vpc-ord__tab-lbl,
#ord-cancelled:checked~ .vpc-ord__nav .vpc-ord__tab--can     .vpc-ord__tab-lbl{color:var(--primary-dark,var(--primary-color));border-bottom-color:var(--primary-dark,var(--primary-color));font-weight:600}
#ord-all:checked      ~ .vpc-ord__nav .vpc-ord__tab--all      .vpc-ord__badge,
#ord-processing:checked ~ .vpc-ord__nav .vpc-ord__tab--proc  .vpc-ord__badge,
#ord-shipped:checked  ~ .vpc-ord__nav .vpc-ord__tab--ship    .vpc-ord__badge,
#ord-delivered:checked~ .vpc-ord__nav .vpc-ord__tab--del     .vpc-ord__badge,
#ord-cancelled:checked~ .vpc-ord__nav .vpc-ord__tab--can     .vpc-ord__badge{background:color-mix(in srgb,var(--primary-color) 12%,transparent);color:var(--primary-dark,var(--primary-color))}
#ord-all:checked       ~ .vpc-ord__content .vpc-ord__panel--all  {display:block}
#ord-processing:checked~ .vpc-ord__content .vpc-ord__panel--proc {display:block}
#ord-shipped:checked   ~ .vpc-ord__content .vpc-ord__panel--ship {display:block}
#ord-delivered:checked ~ .vpc-ord__content .vpc-ord__panel--del  {display:block}
#ord-cancelled:checked ~ .vpc-ord__content .vpc-ord__panel--can  {display:block}

/* ================================================================
   gahd-* � Generic App Header
   Desktop : 3-row (announcement � top-bar � nav)
   Mobile  : announcement bar + app bar (logo left, search fill)
================================================================ */
.gahd-ann{overflow:hidden;background:var(--hdr-ann-bg,var(--primary-color,#111));color:var(--hdr-ann-text,var(--text-inverse,#fff));font-size:.78rem;font-weight:600;height:34px;display:flex;align-items:center}
.gahd-ann-track{flex:1;min-width:0;display:flex;gap:3rem;white-space:nowrap;animation:mqLeft 30s linear infinite}
.gahd-ann-track:hover{animation-play-state:paused}
.gahd-ann-item{flex-shrink:0}
.gahd-ann-sep{opacity:.5;margin:0 .25rem}
.gahd-ann>button{flex-shrink:0;background:none;border:none;cursor:pointer;color:inherit;padding:0 .75rem;opacity:.7;font-size:.9rem;line-height:1}
.gahd-top{background:var(--hdr-bg,var(--bg-color,#fff));border-bottom:1px solid var(--hdr-border,#e5e7eb)}
.gahd-top-inner{max-width:var(--max-hf-width,1280px);margin:0 auto;padding:0 1.5rem;height:72px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem}
.gahd-phone{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .9rem;border:1.5px solid var(--hdr-border,#e5e7eb);border-radius:9999px;font-size:.8rem;font-weight:600;color:var(--hdr-text,#111);text-decoration:none;transition:border-color .2s,color .2s}
.gahd-phone:hover{border-color:var(--primary-color,#111);color:var(--primary-color,#111)}
.gahd-logo-wrap{display:flex;justify-content:center}
.gahd-icons{display:flex;align-items:center;gap:.25rem;justify-content:flex-end}
.gahd-icon-btn{width:44px;height:44px;border-radius:10px;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--hdr-text,#111);transition:background .2s,color .2s;text-decoration:none;position:relative}
.gahd-icon-btn:hover{background:color-mix(in srgb,var(--primary-color,#111) 8%,transparent);color:var(--primary-color,#111)}
.gahd-badge{position:absolute;top:0;right:0;min-width:18px;height:18px;padding:0 4px;border-radius:9999px;background:var(--primary-color,#dc2626);color:var(--text-inverse,#fff);font-size:.7rem;font-weight:800;line-height:1;display:flex;align-items:center;justify-content:center;pointer-events:none;border:2px solid var(--hdr-bg,var(--bg-color,#fff))}
.gahd-acc{position:relative;display:flex;align-items:center}
.gahd-acc summary{list-style:none;cursor:pointer}
.gahd-acc summary::-webkit-details-marker{display:none}
.gahd-acc-panel{display:none;position:absolute;top:calc(100% + 4px);right:0;min-width:200px;background:var(--hdr-bg,var(--bg-color,#fff));border:1px solid var(--hdr-border,#e5e7eb);border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.12);padding:.4rem;z-index:300}
.gahd-acc[open] .gahd-acc-panel{display:block}
.gahd-acc-item{display:flex;align-items:center;gap:.6rem;padding:.55rem .8rem;font-size:.84rem;color:var(--hdr-text,#111);text-decoration:none;border-radius:8px;transition:background .15s}
.gahd-acc-item:hover{background:color-mix(in srgb,var(--primary-color,#111) 7%,transparent)}
.gahd-nav{background:var(--hdr-nav-bg,var(--hdr-bg,var(--bg-color,#fff)));border-bottom:1px solid var(--hdr-border,#e5e7eb);position:relative}
.gahd-nav-inner{max-width:var(--max-hf-width,1280px);margin:0 auto;padding:0 1.5rem;height:44px;display:flex;align-items:center;justify-content:center;gap:.25rem}
.gahd-nav-link{padding:0 .9rem;height:44px;display:flex;align-items:center;gap:.25rem;font-size:var(--hdr-nav-fs,.875rem);font-weight:600;color:var(--hdr-text,#111);text-decoration:none;white-space:nowrap;border-radius:6px;transition:color .15s,background .15s}
.gahd-nav-link:hover{color:var(--primary-color,#111);background:color-mix(in srgb,var(--primary-color,#111) 6%,transparent)}
.gahd-nav-link.is-featured{color:var(--primary-color,#111);font-weight:700}
.gahd-mob-bar{background:var(--hdr-bg,var(--bg-color,#fff));border-bottom:1px solid var(--hdr-border,#e5e7eb);height:56px;display:flex;align-items:center;gap:.5rem;padding:0 .75rem}
.gahd-burger{display:inline-flex;flex-direction:column;justify-content:center;gap:4px;width:38px;height:38px;background:none;border:none;cursor:pointer;padding:7px;border-radius:8px;flex-shrink:0;color:var(--hdr-text,#111)}
.gahd-burger span{display:block;height:2px;background:currentColor;border-radius:2px}
.gahd-mob-logo{display:flex;align-items:center;flex-shrink:0;flex:1}
.gahd-mob-search{flex:1;display:flex;align-items:center;gap:.5rem;background:color-mix(in srgb,var(--hdr-text,#111) 6%,transparent);border:1px solid var(--hdr-border,#e5e7eb);border-radius:9999px;padding:0 .9rem;height:36px}
.gahd-mob-search input{flex:1;border:none;background:transparent;outline:none;font-size:.85rem;color:var(--hdr-text,#111)}
.gahd-mob-search input::placeholder{color:var(--text-muted,#9ca3af)}
.gahd-mob-overlay{position:fixed;inset:0;background:transparent;overflow:visible;z-index:500}
.gahd-mob-bd{position:absolute;inset:0;background:rgba(0,0,0,.45)}
.gahd-mob-panel{position:absolute;top:0;left:0;width:320px;max-width:90vw;height:100%;background:var(--hdr-bg,var(--bg-color,#fff));display:flex;flex-direction:column;overflow:hidden;box-shadow:4px 0 24px rgba(0,0,0,.15)}
.gahd-mob-panel-scroll{flex:1;overflow-y:auto}
.gahd-mob-nav-item{display:flex;align-items:center;justify-content:space-between;padding:.8rem 1.1rem;border-bottom:1px solid var(--hdr-border,#e5e7eb);font-size:.9rem;font-weight:500;color:var(--hdr-text,#111);text-decoration:none}
.gahd-mob-acc-hd{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.8rem 1.1rem;border:none;border-bottom:1px solid var(--hdr-border,#e5e7eb);background:none;cursor:pointer;font-size:.9rem;font-weight:500;color:var(--hdr-text,#111);text-align:left}
.gahd-mob-acc-sub{display:flex;align-items:center;padding:.65rem 1.1rem .65rem 2.25rem;border-bottom:1px solid var(--hdr-border,#e5e7eb);font-size:.875rem;color:var(--hdr-text,#111);text-decoration:none;background:color-mix(in srgb,var(--hdr-text,#111) 4%,transparent)}

/* ── Search overlay (full-panel) ─────────────────────────────────────────── */
#gahd-search-ov{position:fixed;inset:0;z-index:600;pointer-events:none;transform:translateY(-105%);transition:transform .32s cubic-bezier(.4,0,.2,1);background:transparent}
#gahd-search-ov.is-open{pointer-events:auto;transform:translateY(0)}
#gahd-search-bd{display:none}
#gahd-search-bar{position:absolute;top:0;left:0;width:100%;z-index:1;background:var(--hdr-bg,var(--bg-color,#fff));border-bottom:2px solid var(--primary-color,#dc2626);box-shadow:0 2px 16px rgba(0,0,0,.1);padding:1.5rem 5rem 1.25rem 1.5rem}
#gahd-search-close{position:absolute;top:2.1rem;right:1rem;transform:none;border:none;background:var(--primary-color,#dc2626);cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:50%;flex-shrink:0;transition:background .15s}
#gahd-search-close:hover{background:color-mix(in srgb,var(--primary-color,#dc2626) 80%,#000)}
#gahd-search-row{display:flex;align-items:center;gap:.75rem;width:100%;position:static !important;border:2px solid var(--hdr-border,#e5e7eb);border-radius:.5rem;padding:.6rem .9rem;transition:border-color .15s}
#gahd-search-row:focus-within{border-color:var(--primary-color,#dc2626)}
#gahd-search-inp{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:1.1rem;color:var(--hdr-text,#111)}
#gahd-search-inp::placeholder{color:var(--text-muted,#9ca3af)}
/* Results fill from bar bottom to viewport bottom */
#gahd-search-bar .v-suggest{position:absolute !important;top:100% !important;left:0 !important;right:0 !important;height:var(--gahd-suggest-h,80vh) !important;max-height:none !important;overflow-y:auto;border-radius:0 !important;border:none !important;box-shadow:none !important;background:var(--hdr-bg,var(--bg-color,#fff));padding:1.25rem 0 .5rem}
/* Hide browser native clear button on search input */
#gahd-search-inp::-webkit-search-cancel-button,#gahd-search-inp::-webkit-search-decoration{display:none}
/* Submit arrow button */
#gahd-search-submit{flex-shrink:0;border:none;background:var(--primary-color,#dc2626);color:#fff;display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:.4rem;cursor:pointer;transition:background .15s}
#gahd-search-submit:hover{background:color-mix(in srgb,var(--primary-color,#dc2626) 80%,#000)}
/* Keyboard hint */
#gahd-search-hint{margin:.6rem 0 0;font-size:.72rem;color:var(--text-muted,#9ca3af);text-align:center;letter-spacing:.04em;user-select:none;pointer-events:none}
/* Backdrop tint below the bar */
#gahd-search-ov::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:0;pointer-events:none}
#gahd-search-bar{z-index:1}
#gahd-search-bar .v-suggest{z-index:2}
@media(max-width:1023px){.gahd-top,.gahd-nav{display:none}.gahd-mob-bar{display:flex}}
@media(min-width:1024px){.gahd-mob-bar{display:none}.gahd-top,.gahd-nav{display:block}}

/* §MQ02 — chip row count control
   r3 hidden by default; shown only when --mq2-rows is explicitly 3.
   r2 hidden only when --mq2-rows is 1.
   Avoids brittle style*= substring matching on Go-normalized inline styles. */
.mq2-r3{display:none}
section[style*="--mq2-rows: 3"] .mq2-r3,section[style*="--mq2-rows:3"] .mq2-r3{display:block}
section[style*="--mq2-rows: 1"] .mq2-r2,section[style*="--mq2-rows:1"] .mq2-r2{display:none}
/* §MQ02 — side fade on each chip row */
.mq2-r1,.mq2-r2,.mq2-r3{-webkit-mask-image:linear-gradient(to right,transparent,#000 80px,#000 calc(100% - 80px),transparent);mask-image:linear-gradient(to right,transparent,#000 80px,#000 calc(100% - 80px),transparent);}

/* §MQ03 — logo item hover */
.mq3-item:hover{opacity:1!important;filter:none!important;}


/* §CrossDrift — responsive: full-bleed image + full-width text overlay on mobile */
@media(max-width:639px){
  .cd-img{inset:0!important;width:100%!important;height:100%!important;left:0!important}
  .cd-panel{left:0!important;padding:2rem 1.5rem!important;background:rgba(0,0,0,.68)!important}
}

/* §MQ08 — row count control */
.mq8-r2,.mq8-r3{display:block}
section[style*="--mq8-rows: 1"] .mq8-r2,section[style*="--mq8-rows:1"] .mq8-r2,
section[style*="--mq8-rows: 1"] .mq8-r3,section[style*="--mq8-rows:1"] .mq8-r3{display:none}
section[style*="--mq8-rows: 2"] .mq8-r3,section[style*="--mq8-rows:2"] .mq8-r3{display:none}

/* §HeroCinema — svh: immune to iframe doc-height distortion that vh suffers from */
.hero-cinema-section{height:var(--hc-h-mobile,50svh);min-height:360px;display:flex;flex-direction:column}
@media(min-width:640px){
  .hero-cinema-section{height:var(--hc-h-desktop,50svh);min-height:480px}
}
/* swiper fills section height; width:100% prevents layout-viewport blowout */
.hero-cinema-section>.swiper{flex:1;min-height:0!important;width:100%!important}

/* ──────────────────────────────────────────────────────────────
   §60 Clients / Logo Slider — CL-01 through CL-08
   Built on the EXISTING §49 marquee engine (.mq-overflow/.mq-fade/.mq-track.left/.right
   + the mqLeft/mqRight keyframes + data-logos/renderMq03Track's JS) — no new animation
   or scroll mechanism was needed, only a shared chip-builder (renderClTrack in theme.js)
   generalized off renderMq03Track to cover 8 different chip layouts from one data model.
   .cl-track is added alongside .mq-track on every track div purely as a JS render hook;
   the animation itself still comes from .mq-track.left/.right, unchanged.
────────────────────────────────────────────────────────────── */
.cl-item{display:inline-flex;align-items:center;gap:.5rem;flex-shrink:0;flex-direction:var(--cl01-text-pos,row)}
.cl-item-img{height:var(--cl-img-h,36px);width:auto;max-width:max(130px,calc(var(--cl-img-h,36px) * 3.6));object-fit:contain;display:block;filter:var(--cl-logo-filter,grayscale(1) opacity(.55));transition:filter .25s,box-shadow .25s;border-radius:var(--cl01-img-r,0);box-shadow:var(--cl01-img-sh,none);border:var(--cl01-img-bw,0px) solid var(--cl01-img-bc,transparent)}
.cl-item:hover .cl-item-img{filter:none}
.cl-item-label{white-space:nowrap;font-weight:700;font-size:1.05rem;letter-spacing:-.02em;color:var(--cl-label-color,#111827)}
.cl-track{gap:var(--cl-gap,2.5rem)}
/* Image Card off — box-shadow/border can't be zeroed via CSS var math alone (see
   sp-pageedit.js's "-card" toggle comment), so the "No card" option needs this
   real class override. Scoped to CL-01 only via .cl01-no-card. */
.cl01-no-card .cl-item-img{box-shadow:none!important;border-width:0!important}

/* CL-01 — Single-Row Marquee */
.cl01-head{text-align:center;padding:0 1.5rem clamp(1.5rem,3vw,2.5rem)}
.cl01-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--cl01-eyebrow-color,var(--eyebrow-color-dark,#6b7280));margin-bottom:.5rem}section[style*="--cl01-eyebrow-mode:light"] .cl01-eyebrow,section[style*="--cl01-eyebrow-mode: light"] .cl01-eyebrow{color:var(--cl01-eyebrow-color,var(--eyebrow-color-light,#6b7280))}
.cl01-heading{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:900;color:var(--cl01-heading-color,#111827)}

/* CL-02 — Dual-Row Opposing Marquee */
.cl02-head{text-align:center;padding:0 1.5rem clamp(1.5rem,3vw,2.25rem)}
.cl02-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--cl02-eyebrow-color,var(--eyebrow-color-dark,#6b7280));margin-bottom:.5rem}section[style*="--cl02-eyebrow-mode:light"] .cl02-eyebrow,section[style*="--cl02-eyebrow-mode: light"] .cl02-eyebrow{color:var(--cl02-eyebrow-color,var(--eyebrow-color-light,#6b7280))}
.cl02-heading{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:900;color:var(--cl02-heading-color,#111827)}
.cl02-rows{display:flex;flex-direction:column;gap:14px}

/* CL-03 — Dark Gold-Accent Strip */
.cl03-strip{border-top:3px solid var(--cl03-accent,#fcd703);border-bottom:3px solid var(--cl03-accent,#fcd703)}
.cl03-head{text-align:center;padding:0 1.5rem clamp(1.5rem,3vw,2.25rem)}
.cl03-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--cl03-accent,var(--eyebrow-color-dark,#fcd703));margin-bottom:.5rem}
.cl03-heading{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:900;color:var(--cl03-heading-color,#ffffff)}

/* CL-04 — Stat Row + Marquee */
.cl04-head{text-align:center;padding:0 1.5rem clamp(1.5rem,3vw,2.25rem)}
.cl04-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--cl04-eyebrow-color,var(--eyebrow-color-dark,#6b7280));margin-bottom:.5rem}section[style*="--cl04-eyebrow-mode:light"] .cl04-eyebrow,section[style*="--cl04-eyebrow-mode: light"] .cl04-eyebrow{color:var(--cl04-eyebrow-color,var(--eyebrow-color-light,#6b7280))}
.cl04-heading{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:900;color:var(--cl04-heading-color,#111827)}
.cl04-stats{display:flex;flex-wrap:wrap;gap:2rem 3rem;justify-content:center;align-items:stretch;margin:clamp(1.5rem,3vw,2.25rem) 0}
.cl04-stat{text-align:center}
.cl04-stat-num{font-size:clamp(1.7rem,3vw,2.3rem);font-weight:900;color:var(--cl04-stat-color,#111827);line-height:1}
.cl04-stat-lbl{font-size:var(--cl04-fs-xs,var(--fs-xs));color:var(--cl04-statlbl-color,#6b7280);margin-top:.35rem}
.cl04-divider{width:1px;background:var(--cl04-divider-color,#e5e7eb)}

/* CL-05 — Split: Fixed Text Left / Sliding Logos Right */
.cl05-wrap{display:flex;flex-wrap:wrap;gap:2.5rem;align-items:center}
.cl05-text{flex:1;min-width:220px}
.cl05-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--cl05-eyebrow-color,var(--eyebrow-color-dark,#6b7280));margin-bottom:.6rem}section[style*="--cl05-eyebrow-mode:light"] .cl05-eyebrow,section[style*="--cl05-eyebrow-mode: light"] .cl05-eyebrow{color:var(--cl05-eyebrow-color,var(--eyebrow-color-light,#6b7280))}
.cl05-heading{font-size:clamp(1.3rem,2.4vw,1.8rem);font-weight:900;color:var(--cl05-heading-color,#111827);line-height:1.25;margin-bottom:.6rem}
.cl05-sub{font-size:var(--cl05-fs-sm,var(--fs-sm));color:var(--cl05-sub-color,#6b7280);line-height:1.6}
.cl05-logos{flex:1;min-width:220px;overflow:hidden}

/* CL-06 — Framed Card Marquee */
.cl06-head{text-align:center;padding:0 1.5rem clamp(1.5rem,3vw,2.25rem)}
.cl06-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--cl06-eyebrow-color,var(--eyebrow-color-dark,#6b7280));margin-bottom:.5rem}section[style*="--cl06-eyebrow-mode:light"] .cl06-eyebrow,section[style*="--cl06-eyebrow-mode: light"] .cl06-eyebrow{color:var(--cl06-eyebrow-color,var(--eyebrow-color-light,#6b7280))}
.cl06-heading{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:900;color:var(--cl06-heading-color,#111827)}
.cl-item-framed{background:var(--cl06-card-bg,#ffffff);border:1px solid var(--cl06-card-border,#e5e7eb);border-radius:var(--cl06-card-radius,.75rem);box-shadow:var(--cl06-card-shadow,0 2px 10px rgba(0,0,0,.05));padding:1.25rem 1.75rem;margin:0 var(--cl06-card-gap,.25rem)}

/* CL-07 — Center-Spotlight Marquee */
.cl07-head{text-align:center;padding:0 1.5rem clamp(1.5rem,3vw,2.25rem)}
.cl07-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--cl07-eyebrow-color,var(--eyebrow-color-dark,#6b7280));margin-bottom:.5rem}section[style*="--cl07-eyebrow-mode:light"] .cl07-eyebrow,section[style*="--cl07-eyebrow-mode: light"] .cl07-eyebrow{color:var(--cl07-eyebrow-color,var(--eyebrow-color-light,#6b7280))}
.cl07-heading{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:900;color:var(--cl07-heading-color,#111827)}
.cl07-stage{position:relative}
.cl07-track-spot{position:absolute;inset:0;--cl-logo-filter:none;-webkit-mask-image:radial-gradient(ellipse var(--cl07-spot-w,220px) 100% at center,#000 55%,transparent 100%);mask-image:radial-gradient(ellipse var(--cl07-spot-w,220px) 100% at center,#000 55%,transparent 100%)}

/* CL-08 — Logo + Tagline Interleave */
.cl08-head{text-align:center;padding:0 1.5rem clamp(1.5rem,3vw,2.25rem)}
.cl08-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--cl08-eyebrow-color,var(--eyebrow-color-dark,#6b7280));margin-bottom:.5rem}section[style*="--cl08-eyebrow-mode:light"] .cl08-eyebrow,section[style*="--cl08-eyebrow-mode: light"] .cl08-eyebrow{color:var(--cl08-eyebrow-color,var(--eyebrow-color-light,#6b7280))}
.cl08-heading{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:900;color:var(--cl08-heading-color,#111827)}
.cl-item-quote{max-width:280px;white-space:normal}
.cl-quote-mark{font-size:1.3rem;color:var(--cl08-quote-accent,#fcd703);margin-right:.3rem;font-weight:900;line-height:1}
.cl-quote-text{font-size:var(--fs-sm,.85rem);color:var(--cl08-quote-color,#374151);font-style:italic;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

@media(max-width:640px){
  .cl05-wrap{flex-direction:column;align-items:stretch}
  .cl04-stats{gap:1.25rem 2rem}
}

/* ──────────────────────────────────────────────────────────────
   §61 Columns — COL-01 through COL-09, CO-12/CO-13
   Reuses existing primitives (.col-wrap, .vdivider, .sticky-col, .icon-circle,
   .sup-label, .stat-num, .stat-rule, .pull-quote, .offset-up) — only what was
   genuinely missing is added here. Per the "font-size inherit" rule: body/description
   text below never sets its own font-size (inherits ambient), only titles/headings
   and eyebrows keep an explicit size.
────────────────────────────────────────────────────────────── */
.col-item-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.68rem));font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.12em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--text-muted,#6b7280)}
.col-item-title{font-size:1.1rem;font-weight:800;color:var(--text-strong,#111827);margin:0 0 .6rem}
.col-item-desc{color:var(--text-color,#374151);line-height:1.75;margin:0}
.col-active-accent{color:var(--col-active,var(--primary-color,#6366f1))}

/* COL-01 / COL-01b — two equal columns */
.col01-img,.col01b-img{width:100%;height:100%;object-fit:cover;display:block}
.col01-stat,.col01b-step-icon{flex-shrink:0}
.col01-stat-num{font-size:clamp(1.7rem,3.5vw,2.4rem);font-weight:900;line-height:1;color:var(--text-strong,#111827)}
.col01-stat-num em{font-style:normal;color:var(--col-active,var(--primary-color,#6366f1))}
.col01-stat-lbl{font-size:var(--col01-fs-xs,var(--fs-xs));font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted,#6b7280);margin-top:.3rem}
.col01b-step{display:flex;gap:1rem;align-items:flex-start}
.col01b-step-title{font-weight:700;color:var(--text-strong,#111827)}
.col01b-step-desc{color:var(--text-color,#374151);line-height:1.6}

/* COL-02 / COL-06a — loop icon columns (shared item look) */
.col-icon-item{flex:1;min-width:200px}
.col06a-no-card .col-3{border:none!important;box-shadow:none!important;background:transparent!important}
.col07-no-card .col-3{border:none!important;box-shadow:none!important;background:transparent!important}
.col01-no-card .col01-frame,.col01b-no-card .col01b-frame,.col09-no-card .col09-frame{border:none!important;box-shadow:none!important}
.col01-frame{flex:1;min-width:0;overflow:hidden;aspect-ratio:var(--col01-ratio,4/3);border-radius:var(--col01-radius,.75rem);border:var(--col01-border-w,0px) solid var(--col01-border-c,#e5e7eb);box-shadow:var(--col01-shadow,none)}
.col01b-frame{flex:1;min-width:0;overflow:hidden;aspect-ratio:var(--col01b-ratio,4/3);border-radius:var(--col01b-radius,.75rem);border:var(--col01b-border-w,0px) solid var(--col01b-border-c,#e5e7eb);box-shadow:var(--col01b-shadow,none)}
.col09-frame{overflow:hidden;aspect-ratio:var(--col09-ratio,3/4);border-radius:var(--col09-radius,.75rem);border:var(--col09-border-w,0px) solid var(--col09-border-c,#e5e7eb);box-shadow:var(--col09-shadow,none)}
.col06b-no-card .col06b-wrap{border:none!important;box-shadow:none!important}
.col05-no-card .col05-aside-box{border:none!important;box-shadow:none!important;background:transparent!important}
.col-icon-circle{background:var(--col-item-accent,#e0e7ff)}
.col-icon-circle svg{stroke:var(--col-item-accent-fg,#4338ca)}

/* COL-03 — loop stat columns */
/* Deliberate breakpoint scheme (not just flex-wrap guessing based on min-width, which
   wrapped inconsistently depending on item count): full row >=768px, 2-per-row 480-767px,
   1-per-row <480px. */
.col03-stats-row{display:flex;flex-wrap:nowrap}
.col-stat-item{flex:1;min-width:0}
@media(max-width:767px){
  .col03-stats-row{display:grid;grid-template-columns:repeat(2,1fr)}
}
@media(max-width:479px){
  .col03-stats-row{grid-template-columns:1fr}
}

/* COL-04 — asymmetric 1/3 + 2/3, 3 fixed rows */
.col04-row{display:flex;gap:3.5rem;padding:2.5rem 0}
.col04-row+.col04-row{border-top:1px solid var(--col04-divider,var(--card-border,#e2e8f0))}
.col04-row:first-child{padding-top:0}
.col04-row:last-child{padding-bottom:0}
.col04-label{flex:0 0 calc(33.33% - 1.75rem)}
.col04-label h3{font-size:1.4rem;font-weight:900;color:var(--text-strong,#111827);line-height:1.2;margin:0 0 .4rem}
.col04-body{flex:1;min-width:0}
.col04-grid2{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
.col04-grid2 div div:first-child{font-weight:800;color:var(--text-strong,#111827);margin-bottom:.25rem}
.col04-grid2 div div:last-child{color:var(--text-muted,#6b7280);line-height:1.65}
/* COL-04 uses its own bespoke class names, not the shared .col-asym/.col-2 etc. —
   meaning it was never covered by the shared mobile-stacking rule at all. Without this,
   the 33.33% label column squeezes to a sliver alongside the body on narrow screens.
   768px matches the shared .col-2/.col-3/.col-asym/.col-sticky stacking breakpoint
   (theme.css §20) so tablet widths stack consistently across every Columns template. */
@media(max-width:768px){
  .col04-row{flex-direction:column;gap:1.5rem}
  .col04-label{flex:0 0 auto}
}
@media(max-width:480px){
  .col04-grid2{grid-template-columns:1fr}
}

/* COL-05 — asymmetric 3/4 + 1/4, article + aside */
/* Card properties live in the CLASS rule (not inline in the template markup) so an
   already-published page's frozen HTML — which already carries this class — picks up
   any future border/shadow/bg change automatically, the same way theme.css already
   applies everywhere without per-page migration. See feedback_style_config_schema_self_heal. */
.col05-aside-box{background:var(--col05-aside-bg,#f9fafb);border-radius:var(--col05-aside-radius,.5rem);border:var(--col05-aside-border-w,0px) solid var(--col05-aside-border-c,#e5e7eb);box-shadow:var(--col05-aside-shadow,none);padding:1.5rem}
.col05-toc-item{color:var(--text-muted,#6b7280);font-weight:600}
.col05-toc-item.is-active{color:var(--col-active,var(--primary-color,#6366f1))}

/* COL-06b — two columns, big display type, dark */
.col06b-wrap{display:flex;gap:0;border-radius:var(--col06b-radius,.75rem);border:var(--col06b-border-w,0px) solid var(--col06b-border-c,rgba(255,255,255,.12));box-shadow:var(--col06b-shadow,none);overflow:hidden}
.col06b-col{flex:1;padding:3rem}
.col06b-label{font-size:var(--fs-xs,.68rem);font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin-bottom:1rem}
.col06b-heading{font-size:clamp(2rem,4vw,3rem);font-weight:900;line-height:1.1;letter-spacing:-.02em;margin:0}
.col06b-col:last-child{display:flex;flex-direction:column;justify-content:flex-end}
/* Bespoke class names (not the shared .col-2/.col-3 etc.), so never covered by the
   shared mobile-stacking rule — same gap as COL-04. 768px matches the shared
   .col-2/.col-3/.col-asym/.col-sticky stacking breakpoint (theme.css §20) so tablet
   widths stack consistently across every Columns template. */
@media(max-width:768px){
  .col06b-wrap{flex-direction:column}
  .col06b-col:last-child{justify-content:flex-start}
}

/* COL-07 — coloured background columns, per-item bg + text color */
.col07-item{flex:1;min-width:220px;padding:3rem;background:var(--col-item-bg,#ffffff);color:var(--col-item-text,#111827)}
.col07-item .col-item-title{color:var(--col-item-text,#111827)}
.col07-item .col-item-desc{color:var(--col-item-text,#111827);opacity:.75}
.col07-bar{height:3px;width:36px;border-radius:2px;margin-top:2rem;background:var(--col-item-accent,var(--primary-color,#6366f1))}

/* COL-08 — sticky sidebar */
.col08-chapter{background:var(--col08-card-bg,#ffffff);border-radius:var(--col08-card-radius,.75rem);border:var(--col08-card-border-w,0px) solid var(--col08-card-border-c,#e5e7eb);padding:2.5rem;box-shadow:var(--col08-card-shadow,0 2px 10px rgba(0,0,0,.05))}
.col08-no-card .col08-chapter{border:none!important;box-shadow:none!important;background:transparent!important}
.col08-sidebar-box{background:var(--col08-sidebar-bg,#1e2535);border-radius:var(--card-radius,.75rem);padding:2rem;color:#fff}
.col08-toc-item{color:rgba(255,255,255,.5);font-weight:700}
.col08-toc-item.is-active{color:var(--col-active,var(--primary-color,#6366f1))}
.col08-readtime-lbl{color:rgba(255,255,255,.4)}
.col08-readtime-val{font-size:1.1rem;font-weight:800;color:#fff}
.col08-cta{display:inline-flex;align-items:center;gap:.5rem;margin-top:1.5rem;padding:.75rem 1.1rem;font-weight:800;border-radius:var(--card-radius,.5rem);text-decoration:none;background:var(--col-active,var(--primary-color,#6366f1));color:#fff}
.col08-cta:hover{opacity:.88}

/* COL-09 — offset magazine column. FIX: the negative margin-top is now bounded by
   the section's own top padding (padding-top >= the offset amount, never less) so the
   overlap can only ever eat into THIS section's own reserved space — it can no longer
   bleed into whatever section precedes it on the page, which the original unconditional
   -3.5rem margin (with no matching padding reservation) could do. */
.col09-section{padding-top:max(4rem,var(--col09-offset,3.5rem));padding-bottom:2rem}
.col09-offset-up{margin-top:calc(var(--col09-offset,3.5rem) * -1)}
.col09-card{border-radius:var(--card-radius,.75rem);padding:2.5rem}
.col09-quote-card .pull-quote{border-color:var(--col09-quote-accent,#92400e);color:var(--col09-quote-accent,#92400e)}
.col09-related a{display:block;font-weight:700;color:var(--text-strong,#111827);line-height:1.5;text-decoration:none}
.col09-related a+a{border-top:1px solid var(--card-border,#e2e8f0);margin-top:.75rem;padding-top:.75rem}
@media(max-width:640px){ .col09-offset-up{margin-top:0} .col09-section{padding-top:2rem} }

/* CO-12 — two-column portrait feature, WITH gap (CO-13 below stays flush) */
.co12-section{padding:var(--sec-buf-t,var(--gbuf-v,4rem)) var(--sec-buf-r,var(--gbuf-h,0)) var(--sec-buf-b,var(--gbuf-v,4rem)) var(--sec-buf-l,var(--gbuf-h,0))}
.co12-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--co12-gap,2rem);max-width:var(--co12-mw,80rem);margin:0 auto;padding:0 1.5rem}
.co12-col{display:flex;flex-direction:column;background:var(--co12-card-bg,#ffffff);border-radius:var(--co12-radius,.75rem);border:var(--co12-border-w,0px) solid var(--co12-border-c,#e5e7eb);overflow:hidden;box-shadow:var(--co12-shadow,0 2px 10px rgba(0,0,0,.05))}
.co12-no-card .co12-col{border:none!important;box-shadow:none!important;background:transparent!important}
.co12-img-wrap{width:100%;overflow:hidden}
.co12-img{width:100%;height:100%;display:block;object-fit:cover}
.co12-body{padding:1.75rem;flex:1;display:flex;flex-direction:column;gap:.6rem}
.co12-eyebrow{font-size:var(--eyebrow-font-size,var(--fs-xs,.72rem));font-weight:700;text-transform:var(--eyebrow-text-transform,uppercase);letter-spacing:var(--eyebrow-letter-spacing,.12em);color:var(--co12-eyebrow-color,var(--eyebrow-color-dark,#e53e3e))}section[style*="--co12-eyebrow-mode:light"] .co12-eyebrow,section[style*="--co12-eyebrow-mode: light"] .co12-eyebrow{color:var(--co12-eyebrow-color,var(--eyebrow-color-light,#e53e3e))}
.co12-title{font-size:1.2rem;font-weight:800;color:var(--co12-title-color,#111827);line-height:1.3;margin:0}
.co12-desc{color:var(--co12-desc-color,#6b7280);line-height:1.8;flex:1;margin:0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.co12-btn{display:inline-block;margin-top:auto;padding:.6rem 1.5rem;background:var(--co12-btn-bg,#e53e3e);color:var(--co12-btn-color,#ffffff);font-weight:700;text-decoration:none;border-radius:var(--co12-radius,.5rem);transition:opacity .18s;align-self:flex-start}
.co12-btn:hover{opacity:.85}
@media(max-width:600px){ .co12-grid{grid-template-columns:1fr} }

/* ──────────────────────────────────────────────────────────────
   §62 Counters (CT-01 – CT-11, skipping CT-06/CT-12)
   .ct-num[data-target] / .ct07-bar-fill[data-width] / .ct08-fill[data-pct]
   are all driven by the existing IntersectionObserver engine already wired
   in theme.js (§29 Counters) — no new JS needed, just the markup + CSS.
────────────────────────────────────────────────────────────── */

/* Per-item "Bold Number" checkbox (all CT templates) — numbers are normal
   weight by default; this class is toggled on the .ct-num span itself via
   sp-pageedit.js's toggle-class/toggle-target mechanism. */
.ct-num.ct-num-bold{font-weight:900}

/* CT-01 — simple horizontal row */
.ct01-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:2rem;text-align:center}
.ct01-item{display:flex;flex-direction:column;align-items:center;gap:.4rem}
.ct01-num{font-size:clamp(2.2rem,4vw,3rem);font-weight:400;color:var(--ct01-num-color,#111827);line-height:1}
.ct01-suffix{font-size:.65em;font-weight:900;color:var(--ct01-suffix-color,#fcd703);display:inline}
.ct01-label{font-size:var(--ct01-fs-sm,var(--fs-sm));color:var(--ct01-label-color,#6b7280);font-weight:600;text-transform:uppercase;letter-spacing:.08em}

/* CT-02 — icon counter cards (light) */
.ct02-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem}
.ct02-card{background:var(--card-bg,#fff);border-radius:var(--ct02-radius,.75rem);border:var(--ct02-border-w,0px) solid var(--ct02-border-c,#e5e7eb);padding:2rem;text-align:center;box-shadow:var(--ct02-shadow,0 2px 8px rgba(0,0,0,.06));display:flex;flex-direction:column;align-items:center;gap:.75rem;transition:box-shadow .2s}
.ct02-no-card .ct02-card{border:none!important;box-shadow:none!important;background:transparent!important}
.ct02-icon{width:52px;height:52px;border-radius:50%;background:var(--ct02-icon-bg,var(--icon-bg,#fefce8));color:var(--ct02-icon-color,var(--icon-color,#111827));display:flex;align-items:center;justify-content:center}
.ct02-icon svg{width:24px;height:24px}
.ct02-num{font-size:2.4rem;font-weight:400;color:var(--text-strong,#111827);line-height:1}
.ct02-suffix{font-size:.6em;font-weight:900;color:var(--primary-color,#fcd703);display:inline}
.ct02-label{font-size:var(--ct02-fs-sm,var(--fs-sm));font-weight:700;color:var(--text-strong,#111827)}
.ct02-desc{color:var(--text-color,#374151);line-height:1.6}

/* CT-03 — dark banner large numbers */
.ct03-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:2rem;text-align:center}
.ct03-item{display:flex;flex-direction:column;align-items:center;gap:.3rem}
.ct03-num{font-size:clamp(2.2rem,4vw,3rem);font-weight:400;color:var(--ct03-num-color,#ffffff);line-height:1}
.ct03-suffix,.ct03-prefix{font-size:.65em;font-weight:900;color:var(--ct03-accent-color,#fcd703);display:inline}
.ct03-label{font-size:var(--ct03-fs-sm,var(--fs-sm));font-weight:700;color:var(--ct03-num-color,#ffffff)}
.ct03-sublabel{font-size:var(--ct03-fs-xs,var(--fs-xs));color:var(--ct03-sublabel-color,#94a3b8);text-transform:uppercase;letter-spacing:.08em;margin-top:.2rem}

/* CT-04 — image overlay counters */
.ct04-wrap{position:relative;overflow:hidden;min-height:340px;display:flex;align-items:center}
.ct04-img-wrap{position:absolute;inset:0}
.ct04-img{width:100%;height:100%;object-fit:cover;display:block}
.ct04-overlay{position:absolute;inset:0;background:var(--ct04-overlay-color,#000000);opacity:var(--ct04-overlay-opacity,.65);pointer-events:none}
.ct04-inner{position:relative;z-index:1;width:100%;padding:4rem 1.5rem;max-width:1000px;margin:0 auto}
.ct04-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:2.5rem;text-align:center}
.ct04-item{display:flex;flex-direction:column;align-items:center;gap:.4rem}
.ct04-num{font-size:clamp(2rem,4vw,3rem);font-weight:400;color:#ffffff;line-height:1}
.ct04-suffix{font-size:.65em;font-weight:900;color:var(--ct04-suffix-color,#fcd703);display:inline}
.ct04-label{font-size:var(--ct04-fs-sm,var(--fs-sm));color:#ffffff;font-weight:600}
/* Clickable image on/off — matches the mandatory pattern used across every family */
section[style*="--ct04-clickable:0"] [data-action="vmodal-open"],section[style*="--ct04-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ct04-clickable:0"] .v-zoom-overlay,section[style*="--ct04-clickable: 0"] .v-zoom-overlay{display:none}

/* EV-03/06/07 Clickable image on/off — was missing its CSS pair, config had no effect */
section[style*="--ev03-clickable:0"] [data-action="vmodal-open"],section[style*="--ev03-clickable: 0"] [data-action="vmodal-open"],
section[style*="--ev06-clickable:0"] [data-action="vmodal-open"],section[style*="--ev06-clickable: 0"] [data-action="vmodal-open"],
section[style*="--ev07-clickable:0"] [data-action="vmodal-open"],section[style*="--ev07-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ev03-clickable:0"] .v-zoom-overlay,section[style*="--ev03-clickable: 0"] .v-zoom-overlay,
section[style*="--ev06-clickable:0"] .v-zoom-overlay,section[style*="--ev06-clickable: 0"] .v-zoom-overlay,
section[style*="--ev07-clickable:0"] .v-zoom-overlay,section[style*="--ev07-clickable: 0"] .v-zoom-overlay{display:none}

/* CT-05 — split image + stats */
.ct05-split{display:flex;flex-wrap:wrap;gap:3rem;align-items:center}
.ct05-img-wrap{flex:1;min-width:280px;border-radius:var(--ct05-radius,.75rem);border:var(--ct05-border-w,0px) solid var(--ct05-border-c,#e5e7eb);box-shadow:var(--ct05-shadow,none);overflow:hidden;position:relative;aspect-ratio:var(--ct05-ratio,4/3)}
.ct05-no-card .ct05-img-wrap{border:none!important;box-shadow:none!important}
.ct05-img{width:100%;height:100%;object-fit:cover;display:block}
.ct05-body{flex:1;min-width:280px;display:flex;flex-direction:column;gap:1.25rem}
.ct05-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.ct05-item{background:var(--card-bg,#fff);border-radius:.75rem;padding:1.25rem;box-shadow:var(--card-shadow,0 2px 8px rgba(0,0,0,.06));text-align:center}
.ct05-num{font-size:2rem;font-weight:400;color:var(--text-strong,#111827);line-height:1}
.ct05-suffix{font-size:.6em;font-weight:900;color:var(--ct05-accent-color,#fcd703);display:inline}
.ct05-bar{height:4px;background:var(--surface-color,#f1f5f9);border-radius:2px;margin:.5rem 0;overflow:hidden}
.ct05-bar::after{content:'';display:block;height:100%;width:60%;background:var(--ct05-accent-color,#fcd703);border-radius:2px}
.ct05-label{font-size:var(--ct05-fs-xs,var(--fs-xs));color:var(--text-muted,#6b7280)}
/* Clickable image on/off */
section[style*="--ct05-clickable:0"] [data-action="vmodal-open"],section[style*="--ct05-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ct05-clickable:0"] .v-zoom-overlay,section[style*="--ct05-clickable: 0"] .v-zoom-overlay{display:none}

/* CT-07 — progress bar counters */
.ct07-split{display:flex;flex-wrap:wrap;gap:3rem;align-items:flex-start}
.ct07-intro{flex:1;min-width:260px}
.ct07-nums{flex:1;min-width:260px;display:flex;gap:2rem;flex-wrap:wrap}
.ct07-stat-num{font-size:clamp(1.8rem,3vw,2.4rem);font-weight:400;color:var(--text-strong,#111827);line-height:1}
.ct07-stat-suf{font-size:.65em;font-weight:900;color:var(--ct07-bar-color,#fcd703)}
.ct07-stat-lbl{font-size:var(--ct07-fs-sm,var(--fs-sm));color:var(--text-muted,#6b7280);font-weight:600;margin-top:.25rem}
.ct07-stats{flex:2;min-width:280px;display:flex;flex-direction:column;gap:1.5rem}
.ct07-row{display:flex;flex-direction:column;gap:.5rem}
.ct07-meta{display:flex;align-items:center;justify-content:space-between}
.ct07-meta span{font-weight:700;color:var(--text-strong,#111827)}
.ct07-pct{font-weight:800;color:var(--ct07-bar-color,#fcd703)}
.ct07-bar-bg{height:8px;background:var(--surface-color,#f1f5f9);border-radius:4px;overflow:hidden}
.ct07-bar-fill{height:100%;background:var(--ct07-bar-color,#fcd703);border-radius:4px;width:0%;transition:width 1.5s cubic-bezier(.4,0,.2,1)}

/* CT-08 — donut / circle counters */
.ct08-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:2rem}
.ct08-item{display:flex;flex-direction:column;align-items:center;gap:.75rem}
.ct08-circle-wrap{position:relative;width:120px;height:120px}
.ct08-svg{width:120px;height:120px;transform:rotate(-90deg)}
.ct08-track{fill:none;stroke:var(--ct08-track-color,#f1f5f9);stroke-width:8}
/* Initial dasharray/offset matches the real r=60 circumference (2π·60≈377) so there's no
   mismatched-arc flash before theme.js recalculates it on scroll-into-view — the static
   reference this was ported from hardcoded 314 (the value for r=50), a pre-existing bug. */
.ct08-fill{fill:none;stroke:var(--ct08-ring-color,#fcd703);stroke-width:8;stroke-linecap:round;stroke-dasharray:377;stroke-dashoffset:377;transition:stroke-dashoffset 1.5s cubic-bezier(.4,0,.2,1)}
.ct08-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem}
.ct08-center strong{font-size:1.35rem;font-weight:400;color:var(--text-strong,#111827);line-height:1}
.ct08-center>span{font-size:var(--fs-xs,.6rem);font-weight:700;color:var(--text-muted,#6b7280);line-height:1.2;text-align:center}
.ct08-label{font-size:var(--ct08-fs-sm,var(--fs-sm));font-weight:700;color:var(--text-strong,#111827);text-align:center}
.ct08-sub{font-size:var(--ct08-fs-xs,var(--fs-xs));color:var(--text-color,#374151);text-align:center}

/* CT-09 — agency dark with intro */
.ct09-intro{text-align:center;margin-bottom:3rem}
.ct09-eyebrow-uniq{margin:0 0 .6rem;font-size:var(--eyebrow-font-size,var(--fs-xs,.75rem));font-weight:800;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--ct09-eyebrow-color,var(--eyebrow-color-light,var(--primary-color,#fcd703)))}
section[style*="--ct09-eyebrow-mode:dark"] .ct09-eyebrow-uniq,section[style*="--ct09-eyebrow-mode: dark"] .ct09-eyebrow-uniq{color:var(--ct09-eyebrow-color,var(--eyebrow-color-dark,var(--primary-color,#fcd703)))}
.ct09-intro h2{font-size:clamp(1.6rem,3vw,2.2rem);font-weight:900;color:var(--ct09-heading-color,#ffffff);margin:0 0 .5rem}
.ct09-intro h2 em{color:var(--primary-color,#fcd703);font-style:normal}
.ct09-intro p{color:var(--ct09-subtitle-color,rgba(255,255,255,.65));margin:0}
.ct09-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.25rem}
.ct09-item{background:var(--ct09-tile-bg,rgba(255,255,255,.07));backdrop-filter:blur(8px);border:var(--ct09-border-w,1px) solid var(--ct09-border-c,rgba(255,255,255,.1));border-radius:var(--ct09-radius,.75rem);padding:2rem;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.4rem;transition:background .2s,border-color .2s}
.ct09-no-card .ct09-item{background:transparent!important;border-color:transparent!important}
.ct09-item:hover{background:color-mix(in srgb,var(--primary-color,#fcd703) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#fcd703) 30%,transparent)}
.ct09-num{font-size:2.5rem;font-weight:400;color:var(--ct09-num-color,#ffffff);line-height:1}
.ct09-suffix{font-size:.6em;font-weight:900;color:var(--ct09-suffix-color,var(--primary-color,#fcd703));display:inline}
.ct09-label{font-size:var(--ct09-fs-sm,var(--fs-sm));color:var(--ct09-label-color,rgba(255,255,255,.65));font-weight:600;text-transform:uppercase;letter-spacing:.08em}

/* CT-10 — tabular list big numbers. Back to the original card-grid look, but each
   card is self-contained (own border/radius/shadow via the standard Card config) and
   spaced with grid `gap` instead of shared edge-to-edge borders — a lone item in the
   last row just gets its own card like everywhere else, never boxed in on 3 sides. */
.ct10-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem}
.ct10-item{background:var(--card-bg,#fff);border-radius:var(--ct10-radius,.75rem);border:var(--ct10-border-w,0px) solid var(--ct10-border-c,#e5e7eb);box-shadow:var(--ct10-shadow,0 2px 8px rgba(0,0,0,.06));padding:2rem;display:flex;flex-direction:column;gap:.5rem;transition:box-shadow .2s}
.ct10-no-card .ct10-item{border:none!important;box-shadow:none!important;background:transparent!important}
.ct10-item:hover{box-shadow:var(--card-shadow-hover,0 8px 24px rgba(0,0,0,.1))}
.ct10-big{font-size:clamp(2.4rem,4.5vw,3.5rem);font-weight:400;color:var(--ct10-num-color,#111827);line-height:1}
.ct10-suf{font-size:.55em;font-weight:900;color:var(--ct10-suf-color,#fcd703);display:inline}
.ct10-body{margin-top:.25rem}
.ct10-label{font-weight:800;color:var(--text-strong,#111827);margin:0 0 .2rem}
.ct10-desc{color:var(--text-color,#374151);line-height:1.6;margin:0}
.ct10-tag{display:inline-block;padding:.25rem .7rem;background:var(--ct10-tag-bg,#f0fdf4);border-radius:99px;font-size:var(--ct10-fs-xs,var(--fs-xs));font-weight:700;color:var(--ct10-tag-color,#15803d);margin-top:.4rem;width:fit-content}

/* CT-11 — timeline steps counter. Grid-based (not flex+margin) so the marker column's
   real width and the connector line's position are the SAME number (20px = half of the
   40px marker column) instead of two independently-guessed values that never quite lined
   up — that mismatch was the root of the "not left aligned" look. */
.ct11-grid{display:flex;flex-direction:column;gap:0;position:relative}
.ct11-grid::before{content:'';position:absolute;left:20px;top:0;bottom:0;width:2px;background:var(--surface-color,#f1f5f9);transform:translateX(-1px)}
.ct11-item{display:grid;grid-template-columns:40px 1fr;column-gap:1.25rem;padding:1.5rem 0;position:relative}
.ct11-step{grid-column:1;grid-row:1;font-size:0}
.ct11-item::before{content:'';position:absolute;left:0;top:1.5rem;width:40px;height:40px;border-radius:50%;background:var(--card-bg,#fff);border:2px solid var(--card-border,#e2e8f0);transition:background .2s,border-color .2s;z-index:1}
.ct11-item:hover::before{background:var(--ct11-accent-color,#fcd703);border-color:var(--ct11-accent-color,#fcd703)}
.ct11-num{grid-column:2;position:relative;z-index:2;font-size:2rem;font-weight:400;color:var(--text-strong,#111827);line-height:1}
.ct11-suf{font-size:.6em;font-weight:900;color:var(--ct11-suf-color,#fcd703);display:inline}
.ct11-label{grid-column:2;position:relative;z-index:2;font-weight:800;color:var(--text-strong,#111827);margin:0 0 .25rem}
.ct11-desc{grid-column:2;position:relative;z-index:2;color:var(--text-color,#374151);line-height:1.6;margin:0}
@media(max-width:640px){
  .ct11-grid::before{display:none}
  .ct11-item{grid-template-columns:1fr;column-gap:0;row-gap:.25rem;padding:1.25rem 0;border-bottom:1px solid #f1f5f9}
  .ct11-item::before{display:none}
  .ct11-step{grid-column:1;font-size:var(--ct11-fs-xs,var(--fs-xs));font-weight:700;color:var(--ct11-accent-color,#fcd703);text-transform:uppercase;letter-spacing:.06em}
  .ct11-num,.ct11-label,.ct11-desc{grid-column:1}
  .ct11-num{font-size:1.6rem}
  .ct11-label{font-size:var(--ct11-fs-sm,var(--fs-sm))}
}

/* ──────────────────────────────────────────────────────────────
   §63 Creative Cards (CC-02..05, 07, 09..11, 16, 17)
   No clickable-zoom wiring on any image in this family — images are
   card content, not standalone photos (per explicit instruction).
────────────────────────────────────────────────────────────── */

/* CC-02 — beauty overlay */
.cc02-grid{display:grid;grid-template-columns:repeat(var(--cc02-cols-mobile,1),1fr);gap:var(--cc02-gap,1.25rem)}
@media(min-width:640px){.cc02-grid{grid-template-columns:repeat(var(--cc02-cols-tablet,var(--cc02-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc02-grid{grid-template-columns:repeat(var(--cc02-cols-desktop,var(--cc02-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.cc02-grid{grid-template-columns:repeat(var(--cc02-cols-wide,var(--cc02-cols-desktop,3)),1fr)}}
.cc02-card{position:relative;overflow:hidden;aspect-ratio:3/4;border-radius:var(--cc02-radius,.75rem)}
.cc02-card img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}
.cc02-card:hover img{transform:scale(1.05)}
/* Tint now spans the full card height (bottom to top), not just the lower 60% —
   a solid flat tint reads flatter than a gradient, so it still darkens toward the
   bottom for text legibility while never going fully transparent at the top. */
/* Color + opacity are admin-configurable: the opacity var scales all three stops
   together (via calc() inside color-mix's percentage argument) so the bottom-to-top
   shape stays proportional instead of just picking one flat translucent color. */
.cc02-overlay{position:absolute;inset:0;background:linear-gradient(to top,color-mix(in srgb,var(--cc02-overlay-color,#000000) calc(var(--cc02-overlay-opacity,.85)*100%),transparent) 0%,color-mix(in srgb,var(--cc02-overlay-color,#000000) calc(var(--cc02-overlay-opacity,.85)*65%),transparent) 55%,color-mix(in srgb,var(--cc02-overlay-color,#000000) calc(var(--cc02-overlay-opacity,.85)*35%),transparent) 100%);transform:translateY(100%);transition:transform .4s ease;display:flex;flex-direction:column;justify-content:flex-end;padding:1.75rem}
.cc02-card:hover .cc02-overlay{transform:translateY(0)}
/* Touch devices have no hover state, so the overlay (and its only copy of the
   title/description/link) would otherwise never be reachable — same class of bug
   fixed for CC-04's flip. Show it permanently on touch instead of hidden-until-hover. */
@media(hover:none){
  .cc02-overlay{transform:translateY(0)}
}
.cc02-tag{font-size:var(--cc02-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--cc02-tag-color,#fcd703);margin-bottom:.5rem}
.cc02-overlay h3{color:#fff;font-weight:800;font-size:1rem;margin:0 0 .4rem}
.cc02-overlay p{color:rgba(255,255,255,.75);line-height:1.6;margin:0 0 .75rem}
.cc02-link{display:inline-flex;align-items:center;gap:.4rem;color:var(--cc02-link-color,#fcd703);font-weight:700;text-decoration:none}

/* CC-03 — finance list */
.cc03-list{display:grid;grid-template-columns:repeat(var(--cc03-cols-mobile,1),1fr);gap:var(--cc03-gap,1.25rem)}
@media(min-width:640px){.cc03-list{grid-template-columns:repeat(var(--cc03-cols-tablet,var(--cc03-cols-mobile,1)),1fr)}}
@media(min-width:1024px){.cc03-list{grid-template-columns:repeat(var(--cc03-cols-desktop,var(--cc03-cols-tablet,1)),1fr)}}
@media(min-width:1280px){.cc03-list{grid-template-columns:repeat(var(--cc03-cols-wide,var(--cc03-cols-desktop,1)),1fr)}}
.cc03-item{display:flex;align-items:center;gap:1.5rem;padding:1.5rem;border-radius:var(--cc03-radius,.75rem);background:var(--card-bg,#fff);border:var(--cc03-border-w,1px) solid var(--cc03-border-c,#e2e8f0);box-shadow:var(--cc03-shadow,none);transition:box-shadow .25s,border-color .25s;cursor:pointer}
.cc03-no-card .cc03-item{border:none!important;box-shadow:none!important;background:transparent!important}
.cc03-item:hover{box-shadow:var(--card-shadow,0 4px 20px rgba(0,0,0,.08));border-color:var(--cc03-arrow-hover-color,#fcd703)}
.cc03-icon{width:48px;height:48px;border-radius:50%;background:var(--cc03-icon-bg,var(--icon-bg,#f8fafc));color:var(--cc03-icon-color,var(--icon-color,#64748b));border:1px solid var(--card-border,#e2e8f0);flex-shrink:0;display:flex;align-items:center;justify-content:center}
.cc03-body{flex:1}
.cc03-body h3{font-size:1rem;font-weight:800;color:var(--text-strong,#111827);margin:0 0 .3rem}
.cc03-body p{color:var(--text-color,#374151);line-height:1.55;margin:0}
.cc03-arrow{width:32px;height:32px;border-radius:50%;border:1px solid var(--card-border,#e2e8f0);color:var(--text-muted,#94a3b8);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .2s,border-color .2s,color .2s}
.cc03-item:hover .cc03-arrow{background:var(--cc03-arrow-hover-color,#fcd703);border-color:var(--cc03-arrow-hover-color,#fcd703);color:#111827}

/* CC-04 — 3D flip (hover on desktop, tap on touch via .is-flipped) */
.cc04-grid{display:grid;grid-template-columns:repeat(var(--cc04-cols-mobile,1),1fr);gap:var(--cc04-gap,1.25rem)}
@media(min-width:640px){.cc04-grid{grid-template-columns:repeat(var(--cc04-cols-tablet,var(--cc04-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc04-grid{grid-template-columns:repeat(var(--cc04-cols-desktop,var(--cc04-cols-tablet,4)),1fr)}}
@media(min-width:1280px){.cc04-grid{grid-template-columns:repeat(var(--cc04-cols-wide,var(--cc04-cols-desktop,4)),1fr)}}
.cc04-scene{perspective:900px}
.cc04-card{position:relative;transform-style:preserve-3d;transition:transform .6s;min-height:260px}
.cc04-scene:hover .cc04-card,.cc04-scene.is-flipped .cc04-card{transform:rotateY(180deg)}
.cc04-face{position:absolute;inset:0;backface-visibility:hidden;border-radius:var(--cc04-radius,.75rem);padding:2rem;display:flex;flex-direction:column}
.cc04-front{background:var(--card-bg,#fff);border:var(--cc04-border-w,1px) solid var(--cc04-border-c,#e2e8f0);box-shadow:var(--cc04-shadow,none);align-items:center;text-align:center;justify-content:center;gap:1rem}
.cc04-no-card .cc04-front{border:none!important;box-shadow:none!important}
.cc04-back{background:var(--cc04-back-bg,#111827);color:var(--cc04-back-color,#ffffff);transform:rotateY(180deg);justify-content:center;gap:.75rem}
.cc04-back h3{color:inherit;font-size:1rem;font-weight:800;margin:0}
.cc04-back p{color:inherit;opacity:.75;line-height:1.6;margin:0}
.cc04-back a{display:inline-block;padding:.5rem 1.25rem;background:var(--primary-color,#fcd703);color:#111827;border-radius:99px;font-weight:800;text-decoration:none;margin-top:.5rem;width:fit-content}
.cc04-icon{width:64px;height:64px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--cc04-icon-bg,#fefce8);color:var(--cc04-icon-color,#b8940a);border:2px solid color-mix(in srgb,var(--cc04-icon-color,#b8940a) 30%,transparent)}
.cc04-front h3{font-size:1rem;font-weight:800;color:var(--text-strong,#111827);margin:0}
.cc04-front p{color:var(--text-color,#374151);margin:0}

/* CC-05 — gradient (per-item gradient via item-scoped vars) */
.cc05-grid{display:grid;grid-template-columns:repeat(var(--cc05-cols-mobile,1),1fr);gap:var(--cc05-gap,1.25rem)}
@media(min-width:640px){.cc05-grid{grid-template-columns:repeat(var(--cc05-cols-tablet,var(--cc05-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc05-grid{grid-template-columns:repeat(var(--cc05-cols-desktop,var(--cc05-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.cc05-grid{grid-template-columns:repeat(var(--cc05-cols-wide,var(--cc05-cols-desktop,3)),1fr)}}
.cc05-card{position:relative;overflow:hidden;border-radius:var(--cc05-radius,.75rem);box-shadow:var(--cc05-shadow,none);padding:2rem;display:flex;flex-direction:column;gap:.75rem;min-height:220px;color:#fff;background:linear-gradient(135deg,var(--cc05-grad-start,#f97316),var(--cc05-grad-end,#ef4444))}
.cc05-card h3{font-size:1rem;font-weight:800;color:#fff;margin:0}
.cc05-bg-num{position:absolute;top:-.5rem;right:.75rem;font-size:5rem;font-weight:900;opacity:.15;line-height:1;color:#fff;pointer-events:none;user-select:none}
.cc05-icon{width:40px;height:40px;border-radius:8px;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cc05-card p{color:rgba(255,255,255,.9);line-height:1.6;margin:0;flex:1}
.cc05-link{display:inline-flex;align-items:center;gap:.4rem;font-weight:700;color:#fff;margin-top:auto;text-decoration:none}

/* CC-07 — magazine (fixed asymmetric hero grid) */
.cc07-hero{display:grid;grid-template-columns:2fr 1fr;gap:1rem;margin-bottom:1rem}
.cc07-big,.cc07-sm{position:relative;overflow:hidden;border-radius:var(--cc07-radius,.75rem);min-height:420px}
.cc07-big img,.cc07-sm img{width:100%;height:100%;object-fit:cover;display:block;position:absolute;inset:0}
.cc07-grid{display:grid;grid-template-columns:repeat(var(--cc07-cols-mobile,1),1fr);gap:var(--cc07-gap,1.25rem)}
@media(min-width:640px){.cc07-grid{grid-template-columns:repeat(var(--cc07-cols-tablet,var(--cc07-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc07-grid{grid-template-columns:repeat(var(--cc07-cols-desktop,var(--cc07-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.cc07-grid{grid-template-columns:repeat(var(--cc07-cols-wide,var(--cc07-cols-desktop,3)),1fr)}}
.cc07-mini{position:relative;overflow:hidden;border-radius:var(--cc07-radius,.75rem);aspect-ratio:4/3}
.cc07-mini img{width:100%;height:100%;object-fit:cover;display:block}
.cc07-info{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:1.5rem;background:linear-gradient(to top,color-mix(in srgb,var(--cc07-overlay-color,#000000) calc(var(--cc07-overlay-opacity,.75)*100%),transparent) 0%,color-mix(in srgb,var(--cc07-overlay-color,#000000) calc(var(--cc07-overlay-opacity,.75)*55%),transparent) 55%,color-mix(in srgb,var(--cc07-overlay-color,#000000) calc(var(--cc07-overlay-opacity,.75)*25%),transparent) 100%)}
.cc07-label{display:block;font-size:var(--cc07-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--cc07-label-color,#fcd703);margin-bottom:.4rem}
.cc07-info h3{color:#fff;font-size:1rem;font-weight:800;line-height:1.3;margin:0 0 .3rem}
.cc07-meta{font-size:var(--cc07-fs-xs,var(--fs-xs));color:var(--cc07-meta-color,rgba(255,255,255,.6))}
@media(max-width:768px){
  .cc07-hero{grid-template-columns:1fr}
  .cc07-sm{min-height:260px}
}

/* CC-09 — wide horizontal */
.cc09-list{display:grid;grid-template-columns:repeat(var(--cc09-cols-mobile,1),1fr);gap:var(--cc09-gap,1.25rem)}
@media(min-width:640px){.cc09-list{grid-template-columns:repeat(var(--cc09-cols-tablet,var(--cc09-cols-mobile,1)),1fr)}}
@media(min-width:1024px){.cc09-list{grid-template-columns:repeat(var(--cc09-cols-desktop,var(--cc09-cols-tablet,1)),1fr)}}
@media(min-width:1280px){.cc09-list{grid-template-columns:repeat(var(--cc09-cols-wide,var(--cc09-cols-desktop,1)),1fr)}}
.cc09-card{display:flex;align-items:stretch;gap:0;background:var(--card-bg,#fff);border-radius:var(--cc09-radius,.75rem);border:var(--cc09-border-w,1px) solid var(--cc09-border-c,#e2e8f0);box-shadow:var(--cc09-shadow,none);overflow:hidden;transition:box-shadow .25s}
.cc09-no-card .cc09-card{border:none!important;box-shadow:none!important}
.cc09-card:hover{box-shadow:var(--card-shadow,0 4px 20px rgba(0,0,0,.08))}
.cc09-img{width:240px;flex-shrink:0;overflow:hidden}
.cc09-img img{width:100%;height:100%;object-fit:cover;display:block}
.cc09-body{flex:1;padding:2rem;display:flex;flex-direction:column;gap:.75rem}
.cc09-tag{display:inline-block;background:var(--cc09-tag-bg,#fcd703);color:var(--cc09-tag-color,#111827);font-size:var(--cc09-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:.25rem .75rem;border-radius:99px;align-self:flex-start}
.cc09-body h3{font-size:1.05rem;font-weight:800;color:var(--text-strong,#111827);margin:0}
.cc09-body p{color:var(--text-color,#374151);line-height:1.6;margin:0}
.cc09-meta{display:flex;gap:.5rem;font-size:var(--cc09-fs-xs,var(--fs-xs));color:var(--text-muted,#6b7280)}
.cc09-cta{width:100px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.cc09-btn{display:flex;flex-direction:column;align-items:center;gap:.5rem;font-size:var(--cc09-fs-xs,var(--fs-xs));font-weight:700;color:var(--text-muted,#6b7280)}
.cc09-btn-circle{width:44px;height:44px;border-radius:50%;background:var(--cc09-cta-bg,#0f172a);color:var(--cc09-cta-color,#ffffff);display:flex;align-items:center;justify-content:center}
.cc09-btn-circle svg{stroke:currentColor;fill:none}
@media(max-width:768px){
  .cc09-card{flex-direction:column}
  .cc09-img{width:100%;height:200px}
  .cc09-cta{width:100%;border-top:1px solid var(--cc09-border-c,#e2e8f0);padding:1rem}
}

/* CC-10 — hover fill */
.cc10-grid{display:grid;grid-template-columns:repeat(var(--cc10-cols-mobile,1),1fr);gap:var(--cc10-gap,1.25rem)}
@media(min-width:640px){.cc10-grid{grid-template-columns:repeat(var(--cc10-cols-tablet,var(--cc10-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc10-grid{grid-template-columns:repeat(var(--cc10-cols-desktop,var(--cc10-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.cc10-grid{grid-template-columns:repeat(var(--cc10-cols-wide,var(--cc10-cols-desktop,3)),1fr)}}
.cc10-card{position:relative;overflow:hidden;background:var(--card-bg,#fff);border:var(--cc10-border-w,1px) solid var(--cc10-border-c,#e2e8f0);border-radius:var(--cc10-radius,.75rem);transition:border-color .35s;cursor:pointer}
.cc10-card::before{content:'';position:absolute;inset:0;background:var(--cc10-fill-color,#111827);transform:scaleY(0);transform-origin:bottom;transition:transform .35s ease;z-index:0}
.cc10-card:hover::before{transform:scaleY(1)}
/* Touch has no hover, so the fill (and the color-inverted text/icon it triggers)
   would otherwise never show at all — same class of bug as CC-02/CC-04. */
@media(hover:none){
  .cc10-card::before{transform:scaleY(1)}
  .cc10-icon{background:rgba(255,255,255,.1)!important;color:var(--cc10-fill-text-color,#ffffff)!important}
  .cc10-inner h3,.cc10-inner p,.cc10-arrow{color:var(--cc10-fill-text-color,#ffffff)!important}
}
.cc10-inner{position:relative;z-index:1;padding:2rem;display:flex;flex-direction:column;gap:1rem}
.cc10-icon{width:44px;height:44px;background:var(--surface-color,#f8fafc);color:var(--text-strong,#0f172a);border-radius:8px;display:flex;align-items:center;justify-content:center;transition:background .35s}
.cc10-card:hover .cc10-icon{background:rgba(255,255,255,.1);color:var(--cc10-fill-text-color,#ffffff)}
.cc10-inner h3{font-size:1rem;font-weight:800;color:var(--text-strong,#111827);margin:0;transition:color .35s}
.cc10-card:hover .cc10-inner h3{color:var(--cc10-fill-text-color,#ffffff)}
.cc10-inner p{color:var(--text-color,#374151);line-height:1.6;margin:0;transition:color .35s}
.cc10-card:hover .cc10-inner p{color:color-mix(in srgb,var(--cc10-fill-text-color,#ffffff) 65%,transparent)}
.cc10-arrow{display:inline-flex;align-items:center;gap:.4rem;font-weight:700;color:var(--text-strong,#111827);margin-top:auto;transition:color .35s}
.cc10-card:hover .cc10-arrow{color:var(--cc10-fill-text-color,#ffffff)}

/* CC-11 — stacked layers (2 decorative non-editable background layers) */
.cc11-stack-group{display:grid;grid-template-columns:repeat(var(--cc11-cols-mobile,1),1fr);gap:var(--cc11-gap,1.75rem);justify-items:center}
@media(min-width:640px){.cc11-stack-group{grid-template-columns:repeat(var(--cc11-cols-tablet,var(--cc11-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc11-stack-group{grid-template-columns:repeat(var(--cc11-cols-desktop,var(--cc11-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.cc11-stack-group{grid-template-columns:repeat(var(--cc11-cols-wide,var(--cc11-cols-desktop,3)),1fr)}}
.cc11-stack{position:relative;width:100%;max-width:300px}
.cc11-layer{border-radius:var(--cc11-radius,.75rem);border:var(--cc11-border-w,1px) solid var(--cc11-border-c,#e2e8f0);background:var(--card-bg,#fff);transition:transform .35s ease}
.cc11-no-card .cc11-layer{border:none!important}
.cc11-layer:nth-child(1){position:absolute;bottom:-12px;left:8px;right:8px;height:100%;opacity:.4}
.cc11-layer:nth-child(2){position:absolute;bottom:-6px;left:4px;right:4px;height:100%;opacity:.7}
.cc11-layer:nth-child(3){position:relative;z-index:1;padding:2rem;box-shadow:var(--cc11-shadow,0 2px 10px rgba(0,0,0,.05));display:flex;flex-direction:column;gap:1rem}
.cc11-stack:hover .cc11-layer:nth-child(1){transform:translateY(-8px)}
.cc11-stack:hover .cc11-layer:nth-child(2){transform:translateY(-4px)}
.cc11-stack:hover .cc11-layer:nth-child(3){transform:translateY(-2px)}
.cc11-icon{width:48px;height:48px;background:var(--cc11-icon-bg,var(--icon-bg,#fefce8));color:var(--cc11-icon-color,var(--icon-color,#b8940a));border-radius:8px;border:1px solid color-mix(in srgb,var(--cc11-icon-color,var(--icon-color,#b8940a)) 30%,transparent);display:flex;align-items:center;justify-content:center}
.cc11-layer h3{font-size:1rem;font-weight:800;color:var(--text-strong,#111827);margin:0}
.cc11-layer p{color:var(--text-color,#374151);line-height:1.6;margin:0}
.cc11-price{font-size:1.2rem;font-weight:900;color:var(--text-strong,#111827)}
.cc11-price span:last-child{font-size:.7em;font-weight:500;color:var(--text-muted,#6b7280)}

/* CC-16 — slide-up drawer */
.cc16-grid{display:grid;grid-template-columns:repeat(var(--cc16-cols-mobile,1),1fr);gap:var(--cc16-gap,.75rem)}
@media(min-width:640px){.cc16-grid{grid-template-columns:repeat(var(--cc16-cols-tablet,var(--cc16-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc16-grid{grid-template-columns:repeat(var(--cc16-cols-desktop,var(--cc16-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.cc16-grid{grid-template-columns:repeat(var(--cc16-cols-wide,var(--cc16-cols-desktop,3)),1fr)}}
.cc16-card{position:relative;overflow:hidden;border-radius:var(--cc16-radius,.75rem);aspect-ratio:3/4}
.cc16-card>img{width:100%;height:100%;object-fit:cover;display:block;position:absolute;inset:0;transition:transform .4s}
.cc16-card:hover>img{transform:scale(1.04)}
.cc16-base{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.6) 0%,transparent 60%)}
.cc16-drawer{position:absolute;bottom:0;left:0;right:0;background:var(--cc16-drawer-bg,rgba(15,23,42,.92));backdrop-filter:blur(4px);padding:1.5rem;transform:translateY(calc(100% - 5rem));transition:transform .35s ease}
.cc16-card:hover .cc16-drawer{transform:translateY(0)}
/* Touch has no hover — without this the drawer (title/tag/description/link) only
   ever shows its 5rem "peek" strip and never fully opens. */
@media(hover:none){
  .cc16-drawer{transform:translateY(0)}
}
.cc16-peek{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}
.cc16-peek h3{color:#fff;font-size:1rem;font-weight:800;margin:0}
.cc16-peek-icon{width:28px;height:28px;border-radius:50%;border:1.5px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;color:#fff;transition:background .25s,border-color .25s}
.cc16-card:hover .cc16-peek-icon{background:var(--cc16-icon-active-color,#fcd703);border-color:transparent;color:#111827}
.cc16-tag{display:inline-block;background:var(--cc16-tag-bg,#fcd703);color:var(--cc16-tag-color,#111827);font-size:var(--cc16-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:.2rem .65rem;border-radius:99px;margin-bottom:.6rem}
.cc16-drawer p{color:rgba(255,255,255,.7);line-height:1.6;margin:0 0 1rem}
.cc16-drawer a{display:inline-flex;align-items:center;gap:.4rem;color:var(--cc16-link-color,#fcd703);font-weight:700;text-decoration:none}

/* CC-17 — sliding panel, dynamic direction via translate transform
   (a single transform axis works for all 4 edges — top/bottom move on Y,
   left/right move on X — instead of needing 4 different box-offset layouts) */
.cc17-grid{display:grid;grid-template-columns:repeat(var(--cc17-cols-mobile,1),1fr);gap:var(--cc17-gap,.75rem)}
@media(min-width:640px){.cc17-grid{grid-template-columns:repeat(var(--cc17-cols-tablet,var(--cc17-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc17-grid{grid-template-columns:repeat(var(--cc17-cols-desktop,var(--cc17-cols-tablet,4)),1fr)}}
@media(min-width:1280px){.cc17-grid{grid-template-columns:repeat(var(--cc17-cols-wide,var(--cc17-cols-desktop,4)),1fr)}}
.cc17-card{position:relative;overflow:hidden;border-radius:var(--cc17-radius,.75rem);aspect-ratio:3/4}
.cc17-card>img{width:100%;height:100%;object-fit:cover;display:block;position:absolute;inset:0;transition:transform .4s}
.cc17-card:hover>img{transform:scale(1.04)}
.cc17-default{position:absolute;bottom:0;left:0;right:0;padding:1.5rem;background:linear-gradient(to top,rgba(0,0,0,.7) 0%,transparent 100%);transition:opacity .3s}
.cc17-card:hover .cc17-default{opacity:0}
/* Touch has no hover — without this the panel (title/description/CTA) never
   slides in and the default caption never fades, so the panel content is dead. */
@media(hover:none){
  .cc17-default{opacity:0}
  .cc17-panel{transform:translate(0,0)!important}
}
.cc17-default-cat{font-size:var(--cc17-fs-xs,var(--fs-xs));font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-bottom:.3rem}
.cc17-default h3{color:#fff;font-size:1rem;font-weight:800;margin:0}
.cc17-num{position:absolute;top:1rem;right:1rem;font-size:2rem;font-weight:900;color:rgba(255,255,255,.15);line-height:1;pointer-events:none}
.cc17-panel{position:absolute;inset:0;background:var(--cc17-panel-color,#fcd703);padding:2rem;display:flex;flex-direction:column;justify-content:flex-end;gap:.75rem;transform:translate(var(--cc17-tx,100%),var(--cc17-ty,0%));transition:transform .35s ease}
.cc17-card:hover .cc17-panel{transform:translate(0,0)}
.cc17-panel h3{font-size:1rem;font-weight:800;color:var(--cc17-panel-text-color,#111827);margin:0}
.cc17-panel p{color:color-mix(in srgb,var(--cc17-panel-text-color,#111827) 70%,transparent);line-height:1.6;margin:0}
.cc17-panel a{display:inline-flex;align-items:center;gap:.4rem;font-weight:800;color:var(--cc17-panel-text-color,#111827);text-decoration:none}
/* direction variants — default (no attribute / "right") needs no override */
section[style*="--cc17-panel-direction:left"] .cc17-panel,section[style*="--cc17-panel-direction: left"] .cc17-panel{--cc17-tx:-100%;--cc17-ty:0%}
section[style*="--cc17-panel-direction:top"] .cc17-panel,section[style*="--cc17-panel-direction: top"] .cc17-panel{--cc17-tx:0%;--cc17-ty:-100%}
section[style*="--cc17-panel-direction:bottom"] .cc17-panel,section[style*="--cc17-panel-direction: bottom"] .cc17-panel{--cc17-tx:0%;--cc17-ty:100%}

/* ══════════════════════════════════════════════════════════════════
   CREATIVE CARDS — CC-18..24 (ported from interactiveboxes.html)
═══════════════════════════════════════════════════════════════════ */

/* CC-18 — Full Image + Slide-Up Overlay */
.cc18-grid{display:grid;grid-template-columns:repeat(var(--cc18-cols-mobile,1),1fr);gap:var(--cc18-gap,1.25rem)}
@media(min-width:640px){.cc18-grid{grid-template-columns:repeat(var(--cc18-cols-tablet,var(--cc18-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc18-grid{grid-template-columns:repeat(var(--cc18-cols-desktop,var(--cc18-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.cc18-grid{grid-template-columns:repeat(var(--cc18-cols-wide,var(--cc18-cols-desktop,3)),1fr)}}
.cc18-card{position:relative;display:block;overflow:hidden;aspect-ratio:4/3;border-radius:var(--cc18-radius,.75rem);border:var(--cc18-border-w,0px) solid var(--cc18-border-c,transparent);box-shadow:var(--cc18-shadow,none)}
.cc18-no-card .cc18-card{border:none!important;box-shadow:none!important}
.cc18-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}
.cc18-card:hover img,.cc18-card.touch-active img{transform:scale(1.05)}
.cc18-label{position:absolute;bottom:1.25rem;left:0;right:0;text-align:center;z-index:1;transition:opacity .3s}
.cc18-label span{font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--cc18-label-color,#fff);text-shadow:0 2px 8px rgba(0,0,0,.6)}
.cc18-card:hover .cc18-label,.cc18-card.touch-active .cc18-label{opacity:0}
.cc18-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transform:translateY(100%);opacity:0;transition:all .5s;z-index:2}
.cc18-card:hover .cc18-overlay,.cc18-card.touch-active .cc18-overlay{transform:translateY(0);opacity:1}
.cc18-tint{position:absolute;inset:0;background:color-mix(in srgb,var(--cc18-overlay-color,#000000) calc(var(--cc18-overlay-opacity,.55)*100%),transparent)}
.cc18-overlay-inner{position:relative;z-index:1;padding:1.5rem}
.cc18-overlay h3{font-size:1.15rem;font-weight:700;text-transform:uppercase;color:var(--cc18-title-color,#fff);margin:0 0 1rem}
.cc18-arrow{width:48px;height:48px;border-radius:50%;border:2px solid var(--cc18-arrow-border,#b8940a);background:var(--cc18-arrow-bg,#fcd703);display:flex;align-items:center;justify-content:center;margin:0 auto;transition:transform .3s}
.cc18-arrow svg{width:20px;height:20px;stroke:var(--cc18-arrow-icon,#111827)}
.cc18-card:hover .cc18-arrow,.cc18-card.touch-active .cc18-arrow{transform:scale(1.1)}

/* CC-19 — Image + Badge + Content Swap */
.cc19-grid{display:grid;grid-template-columns:repeat(var(--cc19-cols-mobile,1),1fr);gap:var(--cc19-gap,1.25rem)}
@media(min-width:640px){.cc19-grid{grid-template-columns:repeat(var(--cc19-cols-tablet,var(--cc19-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc19-grid{grid-template-columns:repeat(var(--cc19-cols-desktop,var(--cc19-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.cc19-grid{grid-template-columns:repeat(var(--cc19-cols-wide,var(--cc19-cols-desktop,3)),1fr)}}
.cc19-card{position:relative;overflow:hidden;border-radius:var(--cc19-radius,.75rem);border:var(--cc19-border-w,1px) solid var(--cc19-border-c,#e2e8f0);box-shadow:var(--cc19-shadow,none);background:var(--card-bg,#fff);display:flex;flex-direction:column}
.cc19-no-card .cc19-card{border:none!important;box-shadow:none!important}
.cc19-img-wrap{position:relative}
.cc19-img-wrap img{width:100%;height:210px;object-fit:cover;display:block}
.cc19-badge{position:absolute;top:1rem;left:1rem;padding:.3rem .8rem;border-radius:99px;font-size:var(--cc19-fs-xs,var(--fs-xs));font-weight:700;text-transform:uppercase;background:var(--cc19-badge-bg,#fcd703);color:var(--cc19-badge-color,#111827)}
.cc19-panel-wrap{position:relative;flex:1;min-height:180px;overflow:hidden}
.cc19-default,.cc19-hover{position:absolute;inset:0;display:flex;flex-direction:column;text-align:center;padding:1.25rem 1rem;transition:all .35s}
.cc19-default{opacity:1;transform:translateY(0)}
.cc19-card:hover .cc19-default,.cc19-card.touch-active .cc19-default{opacity:0;transform:translateY(-10px)}
.cc19-hover{opacity:0;transform:translateY(10px);background:var(--cc19-hover-bg,#fcd703);color:var(--cc19-hover-color,#111827)}
.cc19-card:hover .cc19-hover,.cc19-card.touch-active .cc19-hover{opacity:1;transform:translateY(0)}
.cc19-default h3,.cc19-hover h3{font-size:1rem;font-weight:700;margin:0 0 .5rem}
.cc19-default p,.cc19-hover p{line-height:1.6;margin:0 0 1rem;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.cc19-footer{margin-top:auto;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border-top:1px solid var(--cc19-footer-border,#e5e7eb);padding-top:1rem}
.cc19-hover .cc19-footer{border-top-color:currentColor}

/* CC-20 — Image + Floating Arrow Button */
.cc20-grid{display:grid;grid-template-columns:repeat(var(--cc20-cols-mobile,1),1fr);gap:var(--cc20-gap,1.25rem)}
@media(min-width:640px){.cc20-grid{grid-template-columns:repeat(var(--cc20-cols-tablet,var(--cc20-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc20-grid{grid-template-columns:repeat(var(--cc20-cols-desktop,var(--cc20-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.cc20-grid{grid-template-columns:repeat(var(--cc20-cols-wide,var(--cc20-cols-desktop,3)),1fr)}}
.cc20-card{position:relative;overflow:hidden;border-radius:var(--cc20-radius,.75rem);border:var(--cc20-border-w,1px) solid var(--cc20-border-c,#e2e8f0);box-shadow:var(--cc20-shadow,none);background:var(--card-bg,#fff);display:flex;flex-direction:column}
.cc20-no-card .cc20-card{border:none!important;box-shadow:none!important}
.cc20-img-wrap{overflow:hidden}
.cc20-img-wrap img{width:100%;height:200px;object-fit:cover;display:block;transition:transform .5s}
.cc20-card:hover .cc20-img-wrap img,.cc20-card.touch-active .cc20-img-wrap img{transform:scale(1.05)}
.cc20-content{position:relative;padding:1.5rem 1.25rem 1.25rem;border-top:1px solid var(--cc20-divider-c,#f1f5f9)}
.cc20-arrow{position:absolute;top:0;right:1rem;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:2px solid var(--cc20-arrow-border,#b8940a);background:var(--cc20-arrow-bg,#fcd703);display:flex;align-items:center;justify-content:center;transition:transform .3s}
.cc20-arrow svg{width:18px;height:18px;stroke:var(--cc20-arrow-icon,#111827)}
.cc20-card:hover .cc20-arrow,.cc20-card.touch-active .cc20-arrow{transform:translateY(-50%) translateX(6px)}
.cc20-content h3{font-size:1rem;font-weight:700;color:var(--text-strong,#111827);margin:0 0 .5rem;padding-right:2.5rem}
.cc20-content p{color:var(--text-color,#374151);line-height:1.6;margin:0 0 1rem}
.cc20-footer{font-weight:700;opacity:.7;color:var(--cc20-footer-color,#111827)}

/* CC-21 — Horizontal Split Card */
.cc21-grid{display:grid;grid-template-columns:repeat(var(--cc21-cols-mobile,1),1fr);gap:var(--cc21-gap,1.25rem)}
@media(min-width:640px){.cc21-grid{grid-template-columns:repeat(var(--cc21-cols-tablet,var(--cc21-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc21-grid{grid-template-columns:repeat(var(--cc21-cols-desktop,var(--cc21-cols-tablet,2)),1fr)}}
@media(min-width:1280px){.cc21-grid{grid-template-columns:repeat(var(--cc21-cols-wide,var(--cc21-cols-desktop,2)),1fr)}}
.cc21-card{display:grid;grid-template-columns:1fr 1fr;border-radius:var(--cc21-radius,.75rem);overflow:hidden;border:var(--cc21-border-w,1px) solid var(--cc21-border-c,#e2e8f0);box-shadow:var(--cc21-shadow,none);background:var(--card-bg,#fff);transition:box-shadow .3s}
.cc21-no-card .cc21-card{border:none!important;box-shadow:none!important}
.cc21-img-wrap{position:relative;min-height:180px}
.cc21-img-wrap img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.cc21-body{padding:1.75rem 1.5rem;display:flex;flex-direction:column;justify-content:space-between}
.cc21-body h3{font-size:1.05rem;font-weight:700;color:var(--text-strong,#111827);margin:0 0 .5rem}
.cc21-body p{color:var(--text-color,#374151);line-height:1.6}
.cc21-link{font-weight:700;color:var(--cc21-link-color,#b8940a);display:inline-flex;align-items:center;gap:.35rem;text-decoration:none;transition:gap .3s;margin-top:1.25rem}
.cc21-card:hover .cc21-link,.cc21-card.touch-active .cc21-link{gap:.6rem}
@media(max-width:640px){.cc21-card{grid-template-columns:1fr}.cc21-img-wrap{min-height:160px}}

/* CC-22 — Icon + Accent Overlay Fade */
.cc22-grid{display:grid;grid-template-columns:repeat(var(--cc22-cols-mobile,1),1fr);gap:var(--cc22-gap,1.25rem)}
@media(min-width:640px){.cc22-grid{grid-template-columns:repeat(var(--cc22-cols-tablet,var(--cc22-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc22-grid{grid-template-columns:repeat(var(--cc22-cols-desktop,var(--cc22-cols-tablet,4)),1fr)}}
@media(min-width:1280px){.cc22-grid{grid-template-columns:repeat(var(--cc22-cols-wide,var(--cc22-cols-desktop,4)),1fr)}}
.cc22-card{position:relative;overflow:hidden;border-radius:var(--cc22-radius,.75rem);border:var(--cc22-border-w,1px) solid var(--cc22-border-c,#e2e8f0);box-shadow:var(--cc22-shadow,none);background:var(--cc22-card-bg,#ffffff);text-align:center;min-height:220px}
.cc22-no-card .cc22-card{border:none!important;box-shadow:none!important}
.cc22-front{padding:1.75rem 1.25rem;transition:all .3s}
.cc22-card:hover .cc22-front,.cc22-card.touch-active .cc22-front{opacity:0;transform:translateY(-10px)}
.cc22-icon{width:56px;height:56px;border-radius:12px;margin:0 auto 1rem;display:flex;align-items:center;justify-content:center;background:var(--cc22-item-icon-bg,#f8fafc);color:var(--cc22-item-icon-color,#111827)}
.cc22-front h3{font-size:.92rem;font-weight:700;color:var(--text-strong,#111827);margin:0 0 .5rem}
.cc22-front p{color:var(--text-color,#374151);line-height:1.6}
.cc22-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.25rem;text-align:center;opacity:0;transform:translateY(10px);transition:all .3s;background:var(--cc22-overlay-bg,#fcd703);color:var(--cc22-overlay-color,#111827)}
.cc22-card:hover .cc22-overlay,.cc22-card.touch-active .cc22-overlay{opacity:1;transform:translateY(0)}
.cc22-overlay h3{font-size:.92rem;font-weight:700;margin:0 0 .5rem}
.cc22-overlay p{line-height:1.6;margin:0 0 1rem}
.cc22-overlay a{font-weight:700;border-bottom:1px solid currentColor;padding-bottom:2px;text-decoration:none;color:inherit}

/* CC-23 — Icon + Full Panel Slide-Up Replace */
.cc23-grid{display:grid;grid-template-columns:repeat(var(--cc23-cols-mobile,1),1fr);gap:var(--cc23-gap,1.25rem)}
@media(min-width:640px){.cc23-grid{grid-template-columns:repeat(var(--cc23-cols-tablet,var(--cc23-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.cc23-grid{grid-template-columns:repeat(var(--cc23-cols-desktop,var(--cc23-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.cc23-grid{grid-template-columns:repeat(var(--cc23-cols-wide,var(--cc23-cols-desktop,3)),1fr)}}
.cc23-scene{border-radius:var(--cc23-radius,.75rem);overflow:hidden;position:relative;border:var(--cc23-border-w,1px) solid var(--cc23-border-c,#374151);box-shadow:var(--cc23-shadow,none)}
.cc23-no-card .cc23-scene{border:none!important;box-shadow:none!important}
.cc23-panel-wrap{position:relative;min-height:260px;overflow:hidden;background:var(--cc23-card-bg,#1f2937)}
.cc23-front,.cc23-back{position:absolute;inset:0;padding:2rem;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transition:transform .5s ease}
.cc23-front{transform:translateY(0)}
.cc23-scene:hover .cc23-front,.cc23-scene.touch-active .cc23-front{transform:translateY(-100%)}
.cc23-back{transform:translateY(100%);background:var(--cc23-hover-bg,#fcd703);color:var(--cc23-hover-color,#111827)}
.cc23-scene:hover .cc23-back,.cc23-scene.touch-active .cc23-back{transform:translateY(0)}
.cc23-icon{width:56px;height:56px;border-radius:12px;margin:0 auto 1.25rem;display:flex;align-items:center;justify-content:center;background:var(--cc23-item-icon-bg,rgba(255,255,255,.08));color:var(--cc23-item-icon-color,#fcd703)}
.cc23-front h3{font-size:1rem;font-weight:700;color:var(--cc23-title-color,#fff);margin:0 0 .5rem}
.cc23-front p{color:var(--cc23-desc-color,#9ca3af);line-height:1.6}
.cc23-back h3{font-size:1rem;font-weight:700;margin:0 0 .75rem}
.cc23-back p{line-height:1.6;margin:0 0 1.25rem}
.cc23-back a{font-weight:700;border-bottom:1px solid currentColor;padding-bottom:2px;text-decoration:none;color:inherit}

/* CC-24 — Horizontal Row: Label + Content */
.cc24-list{display:grid;grid-template-columns:repeat(var(--cc24-cols-mobile,1),1fr);gap:var(--cc24-gap,.75rem)}
@media(min-width:640px){.cc24-list{grid-template-columns:repeat(var(--cc24-cols-tablet,var(--cc24-cols-mobile,1)),1fr)}}
@media(min-width:1024px){.cc24-list{grid-template-columns:repeat(var(--cc24-cols-desktop,var(--cc24-cols-tablet,1)),1fr)}}
@media(min-width:1280px){.cc24-list{grid-template-columns:repeat(var(--cc24-cols-wide,var(--cc24-cols-desktop,1)),1fr)}}
.cc24-row{display:flex;align-items:center;border-radius:var(--cc24-radius,.75rem);border:var(--cc24-border-w,1px) solid var(--cc24-border-c,#e2e8f0);box-shadow:var(--cc24-shadow,none);background:var(--cc24-row-bg,#fff);color:var(--cc24-row-color,#111827);overflow:hidden;transition:background .3s,color .3s;cursor:pointer}
.cc24-no-card .cc24-row{border:none!important;box-shadow:none!important}
.cc24-row:hover,.cc24-row.touch-active{background:var(--cc24-hover-bg,#fcd703);color:var(--cc24-hover-color,#111827)}
.cc24-num{width:7rem;flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:1.5rem 1.25rem;font-weight:900;font-size:1.5rem}
.cc24-divider{width:1px;align-self:stretch;margin:0 .5rem;background:var(--cc24-divider-c,#e5e7eb)}
.cc24-body{padding:1.25rem 1.5rem}
.cc24-body h4{font-size:1rem;font-weight:700;margin:0 0 .25rem}
.cc24-body p{line-height:1.6;opacity:.75;margin:0}
@media(max-width:480px){.cc24-num{width:4.5rem;padding:1.25rem .75rem}}

/* ── Category Grid (CG-01) ─────────────────────────────────────────
   The category cards themselves are rendered by the live
   store-category-menu dp-component (see internal/handler/dpstore/
   category.go) — its own .v-catpanel/.v-catmega classes (plus
   .pl-cat-panel's descendant rules below) handle the grid/card/icon/arrow
   styling. Only the section's own wrapper/footer chrome lives here. */
.cg01-wrap{max-width:1152px;margin:0 auto;padding:1.5rem}
.cg01-footer{text-align:center;margin-top:1.75rem}
.cg01-footer p{font-size:var(--cg01-fs-body,var(--fs-body));margin:0}
.cg01-footer a{font-weight:700;text-decoration:underline;text-underline-offset:3px;margin-left:.25rem}
/* .pl-cat-panel is normally a hover-revealed nav dropdown (hidden by
   default, shown only via an ancestor .rn-drop:hover/:focus-within) — its
   OWN positioning/visibility, not its descendant .v-catpanel/.v-cat-trigger
   rules, is what's hover-gated. Adding .cg01-catpanel-static alongside it
   overrides just that outer behavior so cg-01 can reuse the exact same
   bordered icon+name+desc+arrow card styling inline, always visible, no
   hover/trigger needed — every descendant rule (.v-catpanel--cols2 grid,
   .v-catpanel__group cards, .v-cat-trigger hiding) is untouched. */
.pl-cat-panel.cg01-catpanel-static{position:static;top:auto;left:auto;transform:none;width:100%;max-width:none;background:transparent;border-top:none;box-shadow:none;max-height:none;overflow:visible;opacity:1;pointer-events:auto}
/* No single itemstyle preset (icon-desc/icon-plain/icon-badge) combines a
   bordered card + icon + description + a visible arrow — each strips one of
   those away (see category.go's cat-style-* rules). itemstyle is left unset
   on cg-01's data-comp-params to keep the DEFAULT bordered .v-catpanel__group
   card, and these force-show the generic icon/description + an always-on
   (not hover-only) arrow on top of it, and drop "View All" per direct
   feedback that a live category grid doesn't need it. */
.cg01-catpanel-static .v-catpanel__group--viewall{display:none}
.cg01-catpanel-static .v-cat-genericon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:8px;background:var(--cg01-icon-bg,var(--icon-bg,color-mix(in srgb,var(--cat-item-bc,var(--primary-color,#c96c3a)) 10%,transparent)));color:var(--cg01-icon-color,var(--icon-color,var(--cat-item-bc,var(--primary-color,#a85630))));opacity:1}
.cg01-catpanel-static .v-cat-genericon svg{width:60%;height:60%}
.cg01-catpanel-static .v-catpanel__meta{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.cg01-catpanel-static .v-cat-gdesc{display:block;font-size:.75rem;color:var(--text-muted,#6b7280)}
.cg01-catpanel-static .v-catpanel__arr{opacity:.55!important;transform:none!important}
.cg01-catpanel-static .v-catpanel__group:hover .v-catpanel__arr{opacity:1!important}
/* design=mega (needed for the "cols" param — see below) has its OWN
   separate hover-hidden mechanism on .v-catmega itself (position:absolute,
   opacity:0/visibility:hidden until an ancestor <li> is hovered/focused —
   .pl-cat-panel's own static/visible override above never touches it,
   different element entirely), plus its own "View All" markup
   (.v-catmega__viewall, not .v-catpanel__group--viewall). Neutralize both
   the same way .cg01-catpanel-static already does for .pl-cat-panel. */
/* !important throughout — positionCatDrop (theme.js) now skips any .v-catmega
   inside .pl-cat-panel, but this stays hardened in case anything else ever
   sets an inline width/left/right on it (an inline style otherwise beats a
   plain stylesheet rule regardless of source order). */
.cg01-catpanel-static .v-catmega{position:static!important;top:auto!important;left:auto!important;right:auto!important;width:100%!important;max-width:none!important;min-height:0;max-height:none;overflow:visible;background:transparent;border-top:none;box-shadow:none;padding:0;opacity:1!important;visibility:visible!important;transform:none!important}
.cg01-catpanel-static .v-catmega__viewall{display:none}
.cg01-catpanel-static .v-catmega__grid{max-width:none}
/* CG-01 own per-breakpoint cards-per-row (1-10 each) — scoped to this
   template's own wrapper class only, so the shared .v-catmega__grid rule
   (also used by the header nav's own mega-menu dropdown) keeps its
   hardcoded 3/2 defaults everywhere else.
   Deliberately NOT routed through --cat-cols: the component itself renders
   its own wrapper div (.v-nav__links.v-nav__cat, from category.go) with an
   inline --cat-cols set from the org's Header "Category dropdown columns"
   setting (CatDropColCount) whenever the include's data-comp-params doesn't
   pass its own ?cols= — that div sits BETWEEN this section and
   .v-catmega__grid, so its --cat-cols always wins the inheritance over the
   section's --cg01-cols-desktop regardless of what this template's own
   Settings say. Setting grid-template-columns directly (own property, not
   reading --cat-cols at all) sidesteps that entirely. */
.cg01-catpanel-static .v-catmega__grid{grid-template-columns:repeat(var(--cg01-cols-desktop,3),1fr)}
@media(max-width:1024px){.cg01-catpanel-static .v-catmega__grid{grid-template-columns:repeat(var(--cg01-cols-tablet,3),1fr)}}
@media(max-width:768px){.cg01-catpanel-static .v-catmega__grid{grid-template-columns:repeat(var(--cg01-cols-mobile,2),1fr)}}

/* ──────────────────────────────────────────────────────────────
   §64 Dividers (DV-01..08) — shape-divider.app style section transitions.
   Flip lives on .dv-inner (the max-width wrapper) and the bob animation on
   .dv-svg itself — kept on separate elements so an admin can combine a
   flip AND animate on the same divider without one transform clobbering
   the other (CSS animations override even inline-style transforms on the
   SAME element, so they can't safely share one).
────────────────────────────────────────────────────────────── */
.dv-inner{line-height:0}
/* Every divider's viewBox is 1200 wide — clamping the rendered SVG to that as
   a floor (instead of always width:100%) means a narrow mobile viewport crops
   the shape via the section's own overflow:hidden instead of squishing
   preserveAspectRatio="none" down to an unrecognizable, distorted sliver.
   margin:auto centers the (now often wider-than-viewport) SVG so the crop
   shows the middle of the pattern, the most representative part, on both
   edges evenly. */
.dv-svg{width:max(1200px,100%);height:100%;display:block;margin:0 auto;transition:none}
/* dv02-pat-N — Divider Waves Opacity's 4 alternate SVG patterns (see
   sp-pageedit.js's syncPatternClass, generalized from the -card class-toggle
   convention). All 4 <svg> variants ship in the markup; only the one
   matching the section's own dv02-pat-N class is shown. Pattern 1 is the
   default (no class needed the very first time a section renders, but the
   "select" field always writes the class on load, so this rule set is what
   actually governs visibility in practice). */
.dv02-p2,.dv02-p3,.dv02-p4{display:none}
.dv02-pat-1 .dv02-p1{display:block}
.dv02-pat-1 .dv02-p2,.dv02-pat-1 .dv02-p3,.dv02-pat-1 .dv02-p4{display:none}
.dv02-pat-2 .dv02-p1{display:none}
.dv02-pat-2 .dv02-p2{display:block}
.dv02-pat-3 .dv02-p1{display:none}
.dv02-pat-3 .dv02-p3{display:block}
.dv02-pat-4 .dv02-p1{display:none}
.dv02-pat-4 .dv02-p4{display:block}
/* Horizontal-only sway — vertical motion would shift the shape's top edge
   and expose the section background above/below it. Layers are duplicates
   of the same path at descending opacity, offset by a few px so together
   they read as a soft layered wave instead of the whole shape wobbling. */
@keyframes dvSwayA{0%,100%{transform:translateX(0)}50%{transform:translateX(-16px)}}
@keyframes dvSwayB{0%,100%{transform:translateX(0)}50%{transform:translateX(12px)}}
@keyframes dvSwayC{0%,100%{transform:translateX(0)}50%{transform:translateX(-8px)}}
.dv-layer-back,.dv-layer-mid{opacity:0}
section[style*="--dv01-animate:1"] .dv-layer-back,section[style*="--dv01-animate: 1"] .dv-layer-back{opacity:.3;animation:dvSwayA 9s ease-in-out infinite}
section[style*="--dv01-animate:1"] .dv-layer-mid,section[style*="--dv01-animate: 1"] .dv-layer-mid{opacity:.6;animation:dvSwayB 6.5s ease-in-out infinite}
section[style*="--dv01-animate:1"] .dv-layer-front,section[style*="--dv01-animate: 1"] .dv-layer-front{animation:dvSwayC 5s ease-in-out infinite}
/* DV-02 already ships 3 layers at fixed opacity from the reference — reuse
   them directly, front layer stays still as the anchor. */
section[style*="--dv02-animate:1"] .dv-svg path:nth-child(1),section[style*="--dv02-animate: 1"] .dv-svg path:nth-child(1){animation:dvSwayA 9s ease-in-out infinite}
section[style*="--dv02-animate:1"] .dv-svg path:nth-child(2),section[style*="--dv02-animate: 1"] .dv-svg path:nth-child(2){animation:dvSwayB 6.5s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){
  .dv-svg,.dv-svg path{animation:none!important}
}

/* DV-09 — Icon + Rule header divider. Every combination (center type / heading
   position / rule style) is one section, toggled by CSS attribute selectors on
   the section's own inline style — no separate templates or JS needed, matching
   the "-card"/"-clickable" toggle pattern used everywhere else in this library. */
/* Single `gap` on the row is the ONLY spacing source between rule/circle/heading —
   previously the circle's own margin AND the inline heading's margin both applied,
   stacking into a double gap. Order slots: rule-l=1, heading-left=2, center=3,
   heading-right=4, rule-r=5 — above/below use their own row via flex-basis:100%. */
.dv09-line{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.7rem}
.dv09-rule{flex:1;min-width:24px;height:var(--dv09-rule-thickness,1px);background:var(--dv09-rule-color,#e2e8f0);order:1}
.dv09-rule-r{order:5}
section[style*="--dv09-rule-style:dashed"] .dv09-rule,section[style*="--dv09-rule-style: dashed"] .dv09-rule{background:none;border-top:var(--dv09-rule-thickness,1.5px) dashed var(--dv09-rule-color,#e2e8f0);height:0}
section[style*="--dv09-rule-style:double"] .dv09-rule,section[style*="--dv09-rule-style: double"] .dv09-rule{background:none;border-top:1px solid var(--dv09-rule-color,#e2e8f0);border-bottom:1px solid var(--dv09-rule-color,#e2e8f0);height:3px}
.dv09-center{order:3;width:var(--dv09-circle-size,44px);height:var(--dv09-circle-size,44px);border-radius:50%;background:var(--dv09-circle-bg,#ffffff);border:1px solid var(--dv09-circle-border-c,#e2e8f0);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
section[style*="--dv09-circle-border-style:dashed"] .dv09-center,section[style*="--dv09-circle-border-style: dashed"] .dv09-center{border-style:dashed}
section[style*="--dv09-circle-border-style:none"] .dv09-center,section[style*="--dv09-circle-border-style: none"] .dv09-center{border:none}
.dv09-icon{width:45%;height:45%;color:var(--dv09-icon-color,var(--icon-color,#64748b))}
.dv09-text{display:none;font-size:.9rem;font-weight:700;color:var(--dv09-icon-color,var(--icon-color,#64748b));font-family:inherit;letter-spacing:0}
.dv09-img{display:none;width:100%;height:100%;object-fit:cover}
section[style*="--dv09-center-type:text"] .dv09-icon,section[style*="--dv09-center-type: text"] .dv09-icon{display:none}
section[style*="--dv09-center-type:text"] .dv09-text,section[style*="--dv09-center-type: text"] .dv09-text{display:block}
section[style*="--dv09-center-type:image"] .dv09-icon,section[style*="--dv09-center-type: image"] .dv09-icon{display:none}
section[style*="--dv09-center-type:image"] .dv09-img,section[style*="--dv09-center-type: image"] .dv09-img{display:block}
section[style*="--dv09-center-type:none"] .dv09-center,section[style*="--dv09-center-type: none"] .dv09-center{display:none}
.dv09-hdg{order:0;flex:0 0 100%;text-align:center;font-size:clamp(1.1rem,2.5vw,1.5rem);font-weight:var(--dv09-hdg-weight,800)}
section[style*="--dv09-hdg-pos:below"] .dv09-hdg,section[style*="--dv09-hdg-pos: below"] .dv09-hdg{order:6;flex:0 0 100%}
section[style*="--dv09-hdg-pos:inline-right"] .dv09-hdg,section[style*="--dv09-hdg-pos: inline-right"] .dv09-hdg{order:4;flex:0 0 auto;font-size:clamp(.9rem,1.6vw,1.1rem);white-space:nowrap}
section[style*="--dv09-hdg-pos:inline-left"] .dv09-hdg,section[style*="--dv09-hdg-pos: inline-left"] .dv09-hdg{order:2;flex:0 0 auto;font-size:clamp(.9rem,1.6vw,1.1rem);white-space:nowrap}
section[style*="--dv09-hdg-pos:none"] .dv09-hdg,section[style*="--dv09-hdg-pos: none"] .dv09-hdg{display:none}
@media(max-width:640px){
  .dv09-hdg,section[style*="--dv09-hdg-pos:inline-right"] .dv09-hdg,section[style*="--dv09-hdg-pos:inline-left"] .dv09-hdg{white-space:normal}
}

/* DV-10 — Paper Torn, 3 tear-texture variants swapped by CSS visibility */
.dv10-jagged,.dv10-rough{display:none}
section[style*="--dv10-tear:jagged"] .dv10-gentle,section[style*="--dv10-tear: jagged"] .dv10-gentle{display:none}
section[style*="--dv10-tear:jagged"] .dv10-jagged,section[style*="--dv10-tear: jagged"] .dv10-jagged{display:block}
section[style*="--dv10-tear:rough"] .dv10-gentle,section[style*="--dv10-tear: rough"] .dv10-gentle{display:none}
section[style*="--dv10-tear:rough"] .dv10-rough,section[style*="--dv10-tear: rough"] .dv10-rough{display:block}

/* DV-12 — Image Strip: one image = full-width banner, several = a repeating motif row */
.dv12-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:var(--dv12-align,center);gap:var(--dv12-gap,1rem);width:100%}
.dv12-img{height:var(--dv12-h,72px);width:auto;display:block;object-fit:contain;opacity:var(--dv12-opacity,1)}
.dv12-row.dv12-stretch{gap:0;flex-wrap:nowrap}
.dv12-row.dv12-stretch .dv12-img{width:100%;height:var(--dv12-h,72px);object-fit:cover;border-radius:var(--dv12-radius,0rem)}
/* Auto height — the "Image height" field is fixed-px by design (matches
   multiple images to one row height), but a single full-bleed banner image
   often needs to just be exactly as tall as its own aspect ratio dictates
   instead. !important is needed to win over --dv12-h either way. */
.dv12-row.dv12-auto-h .dv12-img{height:auto!important;width:100%;object-fit:initial;border-radius:var(--dv12-radius,0rem)}

/* §65 Events (EV-01,02,03,04,06,07,09,10,12,13) */

/* EV-01 — Date Badge Cards */
.ev01-grid{display:grid;grid-template-columns:repeat(var(--ev01-cols-mobile,1),1fr);gap:var(--ev01-gap,1.75rem)}
@media(min-width:640px){.ev01-grid{grid-template-columns:repeat(var(--ev01-cols-tablet,var(--ev01-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.ev01-grid{grid-template-columns:repeat(var(--ev01-cols-desktop,var(--ev01-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.ev01-grid{grid-template-columns:repeat(var(--ev01-cols-wide,var(--ev01-cols-desktop,3)),1fr)}}
.ev01-card{display:flex;flex-direction:column;overflow:hidden;background:#fff;border-radius:var(--ev01-radius,.75rem);border:var(--ev01-border-w,1px) solid var(--ev01-border-c,#e5e7eb);box-shadow:var(--ev01-shadow,0 1px 2px rgba(0,0,0,.06))}
.ev01-thumb{position:relative;aspect-ratio:16/10}
.ev01-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.ev01-date-badge{position:absolute;top:.9rem;left:.9rem;background:var(--ev01-badge-bg,#fff);border-radius:.5rem;padding:.4rem .65rem;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.15);line-height:1.1}
.ev01-day{font-size:1.1rem;font-weight:800;color:var(--ev01-badge-day-color,#111827)}
.ev01-mon{font-size:.65rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ev01-badge-mon-color,#fcd703)}
.ev01-tag{position:absolute;top:.9rem;right:.9rem;background:var(--ev01-tag-bg,#111827);color:var(--ev01-tag-color,#fff);font-size:.7rem;font-weight:600;padding:.3rem .65rem;border-radius:999px}
.ev01-body{padding:1.25rem 1.25rem .5rem}
.ev01-body h3{margin:0 0 .75rem;font-size:1.05rem;font-weight:700;color:var(--ev01-title-color,#111827)}
.ev01-meta{display:flex;flex-direction:column;gap:.5rem}
.ev01-meta-row{display:flex;align-items:center;gap:.5rem;color:var(--ev01-meta-color,#6b7280)}
.ev01-meta-row svg{width:15px;height:15px;flex:none}
.ev01-footer{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem 1.25rem;margin-top:auto}
.ev01-price{font-weight:700;color:var(--ev01-price-color,#111827)}
.ev01-btn{background:var(--ev01-btn-bg,#fcd703);color:var(--ev01-btn-color,#111827);font-weight:600;font-size:.85rem;padding:.55rem 1.1rem;border-radius:.5rem;text-decoration:none}

/* EV-02 — Timeline List */
.ev02-list{display:flex;flex-direction:column}
.ev02-item{display:grid;grid-template-columns:5rem 1.5rem 1fr;gap:0}
.ev02-date-col{text-align:right;padding-right:.75rem;padding-top:.15rem;min-width:0;overflow:hidden}
.ev02-day{font-size:1.4rem;font-weight:800;line-height:1;color:var(--ev02-day-color,#111827);overflow-wrap:break-word}
.ev02-mon{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ev02-mon-color,#fcd703);overflow-wrap:break-word}
.ev02-year{font-size:.7rem;color:var(--ev02-year-color,#6b7280);overflow-wrap:break-word}
.ev02-line-col{display:flex;flex-direction:column;align-items:center}
.ev02-dot{width:12px;height:12px;border-radius:50%;background:var(--ev02-dot-color,#fcd703);margin-top:.35rem;flex:none}
.ev02-vline{width:2px;flex:1;background:var(--ev02-line-color,#e2e8f0);margin-top:.25rem}
.ev02-item:last-child .ev02-vline{display:none}
.ev02-content{padding:0 0 2.25rem 1rem;min-width:0}
.ev02-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}
.ev02-tag1,.ev02-tag2{font-size:.7rem;font-weight:600;padding:.25rem .6rem;border-radius:999px;white-space:nowrap}
.ev02-tag1{background:var(--ev02-tag1-bg,#fef3c7);color:var(--ev02-tag1-color,#92400e)}
.ev02-tag2{background:var(--ev02-tag2-bg,#e0f2fe);color:var(--ev02-tag2-color,#075985)}
.ev02-content h3{margin:0 0 .4rem;font-size:1.1rem;font-weight:700;color:var(--ev02-title-color,#111827);overflow-wrap:break-word}
.ev02-content p{margin:0 0 .6rem;color:#6b7280;overflow-wrap:break-word}
.ev02-link{font-weight:600;font-size:.85rem;color:var(--ev02-link-color,#111827);text-decoration:none}
@media(max-width:480px){
  .ev02-item{grid-template-columns:3.75rem 1.25rem 1fr}
  .ev02-date-col{padding-right:.5rem}
  .ev02-day{font-size:1.1rem}
  .ev02-content{padding-left:.75rem}
  .ev02-tag1,.ev02-tag2{font-size:.65rem;padding:.22rem .5rem}
}

/* EV-03 — Countdown Hero */
.ev03-img-wrap{position:absolute;inset:0}
.ev03-img{width:100%;height:100%;object-fit:cover;display:block}
.ev03-overlay{position:absolute;inset:0;background:var(--ev03-overlay-color,#000);opacity:var(--ev03-overlay-opacity,.6)}
.ev03-content{position:relative;min-height:var(--ev03-min-h,90vh);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:3rem 1.25rem;gap:1.1rem}
.ev03-eyebrow{margin:0;font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.08em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.8rem);color:var(--ev03-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--ev03-eyebrow-mode:light"] .ev03-eyebrow,section[style*="--ev03-eyebrow-mode: light"] .ev03-eyebrow{color:var(--ev03-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ev03-content h1{margin:0;font-size:clamp(1.6rem,3.5vw,2.5rem);color:var(--ev03-heading-color,#fff);text-wrap:balance}
.ev03-content h1 span{color:var(--ev03-heading-accent-color,#fcd703)}
.ev03-subtitle{margin:0;max-width:38rem;color:var(--ev03-subtitle-color,rgba(255,255,255,.8))}
.ev03-meta-row{display:flex;flex-wrap:wrap;justify-content:center;gap:1.5rem;margin-top:.25rem}
.ev03-meta-item{display:flex;align-items:center;gap:.45rem;color:var(--ev03-meta-color,rgba(255,255,255,.75));font-size:.9rem}
.ev03-meta-item svg{width:17px;height:17px;flex:none}
.ev03-timer{display:flex;align-items:center;gap:.65rem;margin-top:.5rem}
.ev03-unit{background:var(--ev03-digit-bg,rgba(255,255,255,.1));border-radius:.75rem;min-width:4.25rem;padding:.65rem .5rem}
.ev03-num{font-size:1.8rem;font-weight:800;line-height:1;color:var(--ev03-digit-color,#fff);font-variant-numeric:tabular-nums}
.ev03-lbl{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ev03-label-color,rgba(255,255,255,.6));margin-top:.2rem}
.ev03-sep{font-size:1.6rem;font-weight:700;color:var(--ev03-digit-color,#fff);opacity:.4}
.ev03-cta{display:flex;flex-wrap:wrap;justify-content:center;gap:.9rem;margin-top:.5rem}
.ev03-btn-p{background:var(--ev03-btn-p-bg,#fcd703);color:var(--ev03-btn-p-color,#111827);font-weight:700;padding:.85rem 1.75rem;border-radius:.6rem;text-decoration:none}
.ev03-btn-s{border:1.5px solid var(--ev03-btn-s-border,rgba(255,255,255,.4));color:var(--ev03-btn-s-color,#fff);font-weight:700;padding:.85rem 1.75rem;border-radius:.6rem;text-decoration:none}
@media(max-width:640px){.ev03-timer{gap:.4rem}.ev03-unit{min-width:3.4rem;padding:.5rem .3rem}.ev03-num{font-size:1.3rem}}

/* EV-04 — Schedule (Day Accordion) */
.ev04-days{display:flex;flex-direction:column;gap:.9rem}
.ev04-day{border:1px solid #e5e7eb;border-radius:.75rem;overflow:hidden}
.ev04-day-hd{width:100%;display:flex;align-items:center;justify-content:space-between;background:var(--ev04-day-bg,#f8fafc);color:var(--ev04-day-color,#111827);border:0;padding:1rem 1.25rem;font-weight:700;font-size:1rem;cursor:pointer;text-align:left}
.ev04-chev{width:18px;height:18px;flex:none;transition:transform .25s}
.ev04-day.ac-open>.ev04-day-hd .ev04-chev{transform:rotate(180deg)}
.ev04-day-body{max-height:0;overflow:hidden;transition:max-height .3s ease}
.ev04-day-body>div{padding:.25rem 1.25rem 1.1rem;display:flex;flex-direction:column;gap:1.1rem}
.ev04-session{display:flex;gap:1rem;padding-top:1rem;border-top:1px solid #f1f5f9}
.ev04-session:first-child{border-top:0;padding-top:0}
.ev04-time{flex:none;width:5.25rem;font-weight:700;color:var(--ev04-time-color,#6b7280);font-size:.85rem;padding-top:.15rem}
.ev04-chip{display:inline-block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:.2rem .55rem;border-radius:999px;background:var(--ev04-chip-bg,#eef2ff);color:var(--ev04-chip-color,#4338ca);margin-bottom:.4rem}
.ev04-info h3{margin:0 0 .3rem;font-size:1.02rem;font-weight:700;color:var(--ev04-title-color,#111827)}
.ev04-info p{margin:0 0 .6rem;color:var(--ev04-desc-color,#6b7280)}
.ev04-speaker{display:flex;align-items:center;gap:.6rem}
.ev04-avatar{width:2.1rem;height:2.1rem;border-radius:50%;overflow:hidden;flex:none}
.ev04-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.ev04-speaker-name{font-size:.8rem;font-weight:700;color:var(--ev04-speaker-name-color,#111827)}
.ev04-speaker-role{font-size:.75rem;color:var(--ev04-speaker-role-color,#6b7280)}

/* EV-06 — Featured Event Split */
.ev06-grid{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:center}
@media(max-width:900px){.ev06-grid{grid-template-columns:1fr}}
.ev06-media{position:relative;border-radius:var(--ev06-radius,1.25rem);overflow:hidden;aspect-ratio:4/3}
.ev06-media img{width:100%;height:100%;object-fit:cover;display:block}
.ev06-badge{position:absolute;top:1rem;left:1rem;background:var(--ev06-badge-bg,#fcd703);color:var(--ev06-badge-color,#111827);font-size:.7rem;font-weight:700;padding:.35rem .75rem;border-radius:999px}
.ev06-cal{width:3.5rem;height:3.5rem;border-radius:.6rem;background:var(--ev06-cal-bg,#111827);color:var(--ev06-cal-color,#fff);display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:1rem}
.ev06-cal-mon{font-size:.62rem;font-weight:700;letter-spacing:.05em}
.ev06-cal-day{font-size:1.15rem;font-weight:800;line-height:1}
.ev06-eyebrow{margin:0 0 .4rem;font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.06em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.78rem);color:var(--ev06-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--ev06-eyebrow-mode:light"] .ev06-eyebrow,section[style*="--ev06-eyebrow-mode: light"] .ev06-eyebrow{color:var(--ev06-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ev06-body h2{margin:0 0 .75rem;font-size:clamp(1.4rem,2.5vw,1.9rem);color:var(--ev06-heading-color,#111827);text-wrap:balance}
.ev06-desc{margin:0 0 1.25rem;color:var(--ev06-desc-color,#6b7280)}
.ev06-details{display:flex;flex-direction:column;gap:.65rem;margin-bottom:1.5rem}
.ev06-detail-row{display:flex;align-items:center;gap:.6rem;color:var(--ev06-detail-color,#374151);font-size:.92rem}
.ev06-detail-row svg{width:17px;height:17px;flex:none}
.ev06-price-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1.25rem;border-top:1px solid #e5e7eb}
.ev06-price-label{font-size:.75rem;color:var(--ev06-price-label-color,#6b7280)}
.ev06-price-value{font-size:1.35rem;font-weight:800;color:var(--ev06-price-value-color,#111827)}
.ev06-btn{background:var(--ev06-btn-bg,#fcd703);color:var(--ev06-btn-color,#111827);font-weight:700;padding:.8rem 1.5rem;border-radius:.6rem;text-decoration:none;white-space:nowrap}

/* EV-07 — Venue Map */
.ev07-grid{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:center}
@media(max-width:900px){.ev07-grid{grid-template-columns:1fr}}
.ev07-map{position:relative;border-radius:var(--ev07-radius,1.25rem);overflow:hidden;aspect-ratio:4/3}
.ev07-map img{width:100%;height:100%;object-fit:cover;display:block}
.ev07-pin{position:absolute;top:50%;left:50%;transform:translate(-50%,-100%);width:34px;height:34px;color:var(--ev07-pin-color,#ef4444);filter:drop-shadow(0 3px 4px rgba(0,0,0,.3))}
.ev07-eyebrow{margin:0 0 .4rem;font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.06em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.78rem);color:var(--ev07-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--ev07-eyebrow-mode:light"] .ev07-eyebrow,section[style*="--ev07-eyebrow-mode: light"] .ev07-eyebrow{color:var(--ev07-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ev07-body h2{margin:0 0 .75rem;font-size:clamp(1.4rem,2.5vw,1.9rem);color:var(--ev07-heading-color,#111827);text-wrap:balance}
.ev07-desc{margin:0 0 1.25rem;color:var(--ev07-desc-color,#6b7280)}
.ev07-details{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}
.ev07-detail-row{display:flex;flex-direction:column;gap:.15rem;padding-bottom:.6rem;border-bottom:1px solid #f1f5f9}
.ev07-detail-row:last-child{border-bottom:0}
.ev07-detail-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ev07-label-color,#9ca3af)}
.ev07-detail-value{font-size:.92rem;color:var(--ev07-value-color,#111827)}
.ev07-btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--ev07-btn-bg,#111827);color:var(--ev07-btn-color,#fff);font-weight:700;padding:.8rem 1.5rem;border-radius:.6rem;text-decoration:none}
.ev07-btn svg{width:17px;height:17px}

/* EV-09 — Ticket Pricing Tiers */
.ev09-hd{text-align:center;margin-bottom:2.25rem}
.ev09-eyebrow{margin:0 0 .4rem;font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.06em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.78rem);color:var(--ev09-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--ev09-eyebrow-mode:light"] .ev09-eyebrow,section[style*="--ev09-eyebrow-mode: light"] .ev09-eyebrow{color:var(--ev09-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ev09-hd h2{margin:0;font-size:clamp(1.4rem,2.5vw,1.9rem);color:var(--ev09-heading-color,#111827)}
.ev09-grid{display:grid;grid-template-columns:repeat(var(--ev09-cols-mobile,1),1fr);gap:var(--ev09-gap,1.75rem);align-items:start}
@media(min-width:640px){.ev09-grid{grid-template-columns:repeat(var(--ev09-cols-tablet,var(--ev09-cols-mobile,1)),1fr)}}
@media(min-width:1024px){.ev09-grid{grid-template-columns:repeat(var(--ev09-cols-desktop,var(--ev09-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.ev09-grid{grid-template-columns:repeat(var(--ev09-cols-wide,var(--ev09-cols-desktop,3)),1fr)}}
.ev09-card{position:relative;background:#fff;border:1.5px solid var(--ev09-border-c,#e5e7eb);border-radius:var(--ev09-radius,1.25rem);padding:2rem 1.75rem}
.ev09-card-featured{border-color:var(--ev09-featured-border-c,#fcd703);box-shadow:0 8px 24px rgba(0,0,0,.08)}
.ev09-popular-badge{display:inline-block;min-height:1.4rem;font-size:.7rem;font-weight:700;padding:.3rem .75rem;border-radius:999px;background:var(--ev09-badge-bg,#fcd703);color:var(--ev09-badge-color,#111827);margin-bottom:.9rem}
.ev09-popular-badge:empty{padding:0;background:transparent}
.ev09-card h3{margin:0 0 .5rem;font-size:1.1rem;color:var(--ev09-tier-color,#111827)}
.ev09-price{display:flex;align-items:baseline;gap:.4rem;margin-bottom:.75rem}
.ev09-price>span:first-child{font-size:2rem;font-weight:800;color:var(--ev09-price-color,#111827)}
.ev09-unit{font-size:.85rem;color:var(--ev09-unit-color,#6b7280)}
.ev09-desc{margin:0 0 1.25rem;color:var(--ev09-desc-color,#6b7280);font-size:.9rem}
.ev09-features{display:flex;flex-direction:column;gap:.65rem;margin-bottom:1.5rem}
.ev09-feature{display:flex;align-items:center;gap:.55rem;font-size:.88rem;color:var(--ev09-feature-color,#374151)}
.ev09-feature svg{width:16px;height:16px;flex:none}
.ev09-feature-yes svg{color:var(--ev09-check-color,#16a34a)}
.ev09-feature-no{opacity:.55}
.ev09-feature-no svg{color:var(--ev09-cross-color,#d1d5db)}
.ev09-btn{display:block;text-align:center;background:var(--ev09-btn-bg,#111827);color:var(--ev09-btn-color,#fff);font-weight:700;padding:.8rem;border-radius:.6rem;text-decoration:none}
.ev09-card-featured .ev09-btn{background:var(--ev09-featured-btn-bg,#fcd703);color:var(--ev09-featured-btn-color,#111827)}

/* EV-10 — Compact Strip List */
.ev10-list{display:flex;flex-direction:column;gap:.85rem}
.ev10-strip{display:flex;align-items:center;gap:1.1rem;background:var(--ev10-strip-bg,#f8fafc);border-radius:var(--ev10-radius,.75rem);padding:1rem 1.25rem}
.ev10-cal{flex:none;width:3.1rem;height:3.1rem;border-radius:.5rem;background:var(--ev10-cal-bg,#111827);color:var(--ev10-cal-color,#fff);display:flex;flex-direction:column;align-items:center;justify-content:center}
.ev10-cal-mon{font-size:.6rem;font-weight:700}
.ev10-cal-day{font-size:1rem;font-weight:800;line-height:1}
.ev10-info{flex:1;min-width:0}
.ev10-info h3{margin:0 0 .3rem;font-weight:700;font-size:1rem;color:var(--ev10-title-color,#111827)}
.ev10-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem;font-size:.82rem;color:var(--ev10-meta-color,#6b7280)}
.ev10-tag{font-size:.68rem;font-weight:600;padding:.2rem .55rem;border-radius:999px;background:var(--ev10-tag-bg,#eef2ff);color:var(--ev10-tag-color,#4338ca)}
.ev10-side{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:.4rem}
.ev10-seats{font-size:.75rem;font-weight:600;color:var(--ev10-seats-color,#dc2626);white-space:nowrap}
.ev10-btn{background:var(--ev10-btn-bg,#fcd703);color:var(--ev10-btn-color,#111827);font-weight:700;font-size:.85rem;padding:.5rem 1.1rem;border-radius:.5rem;text-decoration:none;white-space:nowrap}
@media(max-width:640px){
  .ev10-strip{display:grid;grid-template-columns:3.1rem 1fr;grid-template-areas:"cal info" "side side";column-gap:1rem;row-gap:.85rem;align-items:start}
  .ev10-cal{grid-area:cal}
  .ev10-info{grid-area:info;min-width:0}
  .ev10-side{grid-area:side;flex-direction:row;align-items:center;justify-content:space-between;width:100%;padding-top:.75rem;border-top:1px solid rgba(0,0,0,.06)}
}

/* EV-12 — Weekly Schedule List */
.ev12-hd{text-align:center;margin-bottom:2rem}
.ev12-eyebrow{margin:0 0 .4rem;font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.06em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.78rem);color:var(--ev12-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--ev12-eyebrow-mode:light"] .ev12-eyebrow,section[style*="--ev12-eyebrow-mode: light"] .ev12-eyebrow{color:var(--ev12-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ev12-hd h2{margin:0;font-size:clamp(1.4rem,2.5vw,1.9rem);color:var(--ev12-heading-color,#111827)}
.ev12-list{display:flex;flex-direction:column;gap:.75rem}
.ev12-row{display:grid;grid-template-columns:6rem 8rem auto 1fr auto;align-items:center;gap:1rem;background:var(--ev12-row-bg,#f8fafc);border-radius:var(--ev12-radius,.75rem);padding:.9rem 1.25rem}
@media(max-width:900px){.ev12-row{grid-template-columns:1fr 1fr;grid-template-areas:"day time" "cat cat" "staff staff" "desc desc" "btn btn"}
  .ev12-row .ev12-day{grid-area:day}.ev12-row .ev12-time{grid-area:time}.ev12-row .ev12-cat{grid-area:cat;justify-self:start}.ev12-row .ev12-staff{grid-area:staff}.ev12-row .ev12-desc{grid-area:desc}.ev12-row .ev12-btn{grid-area:btn;justify-self:start}}
.ev12-day{font-weight:700;color:var(--ev12-day-color,#111827);font-size:.9rem}
.ev12-time{color:var(--ev12-time-color,#6b7280);font-size:.85rem;font-variant-numeric:tabular-nums}
.ev12-cat{font-size:.7rem;font-weight:700;padding:.25rem .65rem;border-radius:999px;background:var(--ev12-cat-bg,#eef2ff);color:var(--ev12-cat-color,#4338ca);justify-self:start}
.ev12-staff{font-weight:600;color:var(--ev12-staff-color,#111827);font-size:.88rem}
.ev12-desc{color:var(--ev12-desc-color,#6b7280);font-size:.82rem}
.ev12-btn{background:var(--ev12-btn-bg,#111827);color:var(--ev12-btn-color,#fff);font-weight:600;font-size:.8rem;padding:.5rem 1rem;border-radius:.5rem;text-decoration:none;white-space:nowrap;justify-self:end}

/* EV-13 — Workout Programs (Day > Session Accordion) */
.ev13-days{display:flex;flex-direction:column;gap:.9rem}
.ev13-day{border:1px solid #e5e7eb;border-radius:.75rem;overflow:hidden}
.ev13-day-hd{width:100%;display:flex;align-items:center;justify-content:space-between;background:var(--ev13-day-bg,#111827);color:var(--ev13-day-color,#fff);border:0;padding:1rem 1.25rem;font-weight:700;font-size:1rem;cursor:pointer;text-align:left}
.ev13-day .ev13-chev{width:18px;height:18px;flex:none;transition:transform .25s}
.ev13-day.ac-open>.ev13-day-hd .ev13-chev{transform:rotate(180deg)}
.ev13-day-body{max-height:0;overflow:hidden;transition:max-height .3s ease}
.ev13-day-body>div{display:flex;flex-direction:column;gap:.6rem;padding:.85rem}
.ev13-session{border:1px solid #f1f5f9;border-radius:.6rem;overflow:hidden}
.ev13-session-hd{width:100%;display:flex;align-items:center;gap:1rem;background:var(--ev13-session-bg,#f8fafc);border:0;padding:.85rem 1rem;cursor:pointer;text-align:left}
.ev13-session .ev13-chev{width:16px;height:16px;flex:none;margin-left:auto;transition:transform .25s}
.ev13-session.ac-open>.ev13-session-hd .ev13-chev{transform:rotate(180deg)}
.ev13-session-hd .ev13-time{flex:none;width:4.5rem;font-weight:700;font-size:.8rem;color:var(--ev13-time-color,#6b7280)}
.ev13-session-hd .ev13-class-name{font-weight:700;font-size:.92rem;color:var(--ev13-class-name-color,#111827)}
.ev13-session-body{max-height:0;overflow:hidden;transition:max-height .3s ease}
.ev13-session-body>p{margin:1rem 1rem .9rem;color:var(--ev13-desc-color,#6b7280);font-size:.88rem}
.ev13-instructor{display:flex;align-items:center;gap:.7rem;padding:0 1rem 1rem}
.ev13-avatar{width:2.6rem;height:2.6rem;border-radius:50%;overflow:hidden;flex:none}
.ev13-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.ev13-instructor-name{font-weight:700;font-size:.85rem;color:var(--ev13-instructor-name-color,#111827)}
.ev13-instructor-role{font-size:.78rem;color:var(--ev13-instructor-role-color,#6b7280)}
.ev13-rating{font-size:.78rem;font-weight:700;color:var(--ev13-rating-color,#f59e0b);margin-top:.15rem}

/* §66 Fancy Text Box (FTB-04,05,06,07,08,09,10,11,12,13) */

/* FTB-04 — Quote / Testimonial Cards */
.ftb04-grid{display:grid;grid-template-columns:repeat(var(--ftb04-cols-mobile,1),1fr);gap:var(--ftb04-gap,1.75rem)}
@media(min-width:640px){.ftb04-grid{grid-template-columns:repeat(var(--ftb04-cols-tablet,var(--ftb04-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.ftb04-grid{grid-template-columns:repeat(var(--ftb04-cols-desktop,var(--ftb04-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.ftb04-grid{grid-template-columns:repeat(var(--ftb04-cols-wide,var(--ftb04-cols-desktop,3)),1fr)}}
.ftb04-card{background:var(--ftb04-card-bg,#f8fafc);border-radius:var(--ftb04-radius,1.25rem);border:var(--ftb04-border-w,0px) solid var(--ftb04-border-c,#e2e8f0);box-shadow:var(--ftb04-shadow,none);padding:2rem}
section[style*="--ftb04-card:0"],section[style*="--ftb04-card: 0"]{--ftb04-radius:0;--ftb04-shadow:none;--ftb04-border-w:0px}
.ftb04-quote{display:block;font-size:3rem;font-weight:800;line-height:1;color:var(--ftb04-quote-color,#fcd703);font-family:Georgia,serif;margin-bottom:.5rem}
.ftb04-card p{margin:0 0 1.5rem;color:var(--ftb04-text-color,#374151);line-height:1.7}
.ftb04-author{display:flex;align-items:center;gap:.75rem}
.ftb04-avatar{width:2.75rem;height:2.75rem;border-radius:50%;overflow:hidden;flex:none}
.ftb04-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.ftb04-name{font-weight:700;font-size:.9rem;color:var(--ftb04-name-color,#111827)}
.ftb04-role{font-size:.78rem;color:var(--ftb04-role-color,#6b7280)}

/* FTB-05 — Image Overlay Gallery */
.ftb05-grid{display:grid;grid-template-columns:repeat(var(--ftb05-cols-mobile,1),1fr);gap:var(--ftb05-gap,0rem)}
@media(min-width:640px){.ftb05-grid{grid-template-columns:repeat(var(--ftb05-cols-tablet,var(--ftb05-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.ftb05-grid{grid-template-columns:repeat(var(--ftb05-cols-desktop,var(--ftb05-cols-tablet,4)),1fr)}}
@media(min-width:1280px){.ftb05-grid{grid-template-columns:repeat(var(--ftb05-cols-wide,var(--ftb05-cols-desktop,4)),1fr)}}
.ftb05-card{position:relative;aspect-ratio:3/4;overflow:hidden}
.ftb05-img-wrap{position:absolute;inset:0}
.ftb05-img-wrap img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s}
.ftb05-card:hover .ftb05-img-wrap img{transform:scale(1.06)}
.ftb05-overlay{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;justify-content:flex-end;padding:1.5rem;background:linear-gradient(to top,color-mix(in srgb,var(--ftb05-overlay-color,#000) calc(var(--ftb05-overlay-opacity,.55) * 100%),transparent) 0%,transparent 65%);pointer-events:none}
.ftb05-overlay>*{pointer-events:auto}
.ftb05-tag{align-self:flex-start;background:var(--ftb05-tag-bg,#fcd703);color:var(--ftb05-tag-color,#111827);font-size:.68rem;font-weight:700;padding:.25rem .6rem;border-radius:999px;margin-bottom:.6rem}
.ftb05-overlay h3{margin:0 0 .4rem;font-size:1.05rem;font-weight:800;color:var(--ftb05-title-color,#fff)}
.ftb05-overlay p{margin:0 0 .6rem;color:var(--ftb05-desc-color,rgba(255,255,255,.85))}
.ftb05-link{font-weight:700;font-size:.85rem;color:var(--ftb05-link-color,#fff);text-decoration:none}

/* FTB-06 — Pastel Fill Cards */
.ftb06-grid{display:grid;grid-template-columns:repeat(var(--ftb06-cols-mobile,1),1fr);gap:var(--ftb06-gap,1.25rem)}
@media(min-width:640px){.ftb06-grid{grid-template-columns:repeat(var(--ftb06-cols-tablet,var(--ftb06-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.ftb06-grid{grid-template-columns:repeat(var(--ftb06-cols-desktop,var(--ftb06-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.ftb06-grid{grid-template-columns:repeat(var(--ftb06-cols-wide,var(--ftb06-cols-desktop,3)),1fr)}}
.ftb06-card{background:var(--ftb06-item-card-bg,var(--ftb06-card-bg,#fefce8));border-radius:var(--ftb06-radius,1.25rem);border:var(--ftb06-border-w,0px) solid var(--ftb06-border-c,#fef3c7);box-shadow:var(--ftb06-shadow,none);padding:2rem;display:flex;flex-direction:column;gap:.6rem}
section[style*="--ftb06-card:0"],section[style*="--ftb06-card: 0"]{--ftb06-radius:0;--ftb06-shadow:none;--ftb06-border-w:0px}
.ftb06-icon{font-size:2rem;line-height:1;margin-bottom:.25rem}
.ftb06-card h3{margin:0;font-size:1.05rem;font-weight:800;color:var(--ftb06-title-color,#111827)}
.ftb06-card p{margin:0;color:var(--ftb06-desc-color,#4b5563);line-height:1.65;flex:1}
.ftb06-card .rm-link{font-weight:700;font-size:.85rem;color:var(--ftb06-link-color,#111827);text-decoration:none;display:inline-flex;align-items:center;gap:.35rem}

/* FTB-07 — Big Number Grid */
.ftb07-grid{display:grid;grid-template-columns:repeat(var(--ftb07-cols-mobile,1),1fr);gap:var(--ftb07-gap,0rem)}
@media(min-width:640px){.ftb07-grid{grid-template-columns:repeat(var(--ftb07-cols-tablet,var(--ftb07-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.ftb07-grid{grid-template-columns:repeat(var(--ftb07-cols-desktop,var(--ftb07-cols-tablet,4)),1fr)}}
@media(min-width:1280px){.ftb07-grid{grid-template-columns:repeat(var(--ftb07-cols-wide,var(--ftb07-cols-desktop,4)),1fr)}}
.ftb07-card{padding:2.5rem 2rem;background:var(--ftb07-card-bg,#ffffff);border:var(--ftb07-border-w,1px) solid var(--ftb07-border-c,#e5e7eb);border-radius:var(--ftb07-radius,0rem);box-shadow:var(--ftb07-shadow,none)}
.ftb07-no-card .ftb07-card{border:none!important;box-shadow:none!important;background:transparent!important}
.ftb07-num{display:block;font-size:2.75rem;font-weight:900;line-height:1;color:var(--ftb07-num-color,#f1f5f9);margin-bottom:.75rem;font-variant-numeric:tabular-nums}
.ftb07-card h3{margin:0 0 .6rem;font-size:1.05rem;font-weight:800;color:var(--ftb07-title-color,#111827)}
.ftb07-card p{margin:0 0 .75rem;color:var(--ftb07-desc-color,#6b7280);line-height:1.65}
.ftb07-card .rm-link{font-weight:700;font-size:.85rem;color:var(--ftb07-link-color,#111827);text-decoration:none}

/* FTB-08 — Split Alternating Rows */
.ftb08-grid{display:grid;grid-template-columns:repeat(var(--ftb08-cols-mobile,1),1fr);gap:var(--ftb08-gap,3.5rem)}
@media(min-width:640px){.ftb08-grid{grid-template-columns:repeat(var(--ftb08-cols-tablet,var(--ftb08-cols-mobile,1)),1fr)}}
@media(min-width:1024px){.ftb08-grid{grid-template-columns:repeat(var(--ftb08-cols-desktop,var(--ftb08-cols-tablet,1)),1fr)}}
@media(min-width:1280px){.ftb08-grid{grid-template-columns:repeat(var(--ftb08-cols-wide,var(--ftb08-cols-desktop,1)),1fr)}}
.ftb08-row{display:flex;align-items:center;gap:3.5rem;padding:0}
.ftb08-row.rev{flex-direction:row-reverse}
@media(max-width:768px){.ftb08-row,.ftb08-row.rev{flex-direction:column;gap:1.5rem}}
.ftb08-img{flex:1;border-radius:var(--ftb08-radius,1.25rem);overflow:hidden}
.ftb08-img img{width:100%;height:auto;display:block}
.ftb08-content{flex:1;display:flex;flex-direction:column}
.ftb08-eyebrow{font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.06em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.78rem);color:var(--ftb08-eyebrow-color,var(--eyebrow-color-dark,#fcd703));margin-bottom:.5rem}section[style*="--ftb08-eyebrow-mode:light"] .ftb08-eyebrow,section[style*="--ftb08-eyebrow-mode: light"] .ftb08-eyebrow{color:var(--ftb08-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ftb08-content h3{margin:0 0 .9rem;font-size:1.4rem;font-weight:800;color:var(--ftb08-title-color,#111827)}
.ftb08-content p{margin:0;color:var(--ftb08-desc-color,#6b7280);line-height:1.7}
.ftb08-content .btn-outline{border:1.5px solid var(--ftb08-btn-border-c,#111827);color:var(--ftb08-btn-color,#111827)}

/* FTB-09 — Icon + Text Pairs */
.ftb09-grid{display:grid;grid-template-columns:repeat(var(--ftb09-cols-mobile,1),1fr);gap:var(--ftb09-gap,1.25rem)}
@media(min-width:640px){.ftb09-grid{grid-template-columns:repeat(var(--ftb09-cols-tablet,var(--ftb09-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.ftb09-grid{grid-template-columns:repeat(var(--ftb09-cols-desktop,var(--ftb09-cols-tablet,3)),1fr)}}
@media(min-width:1280px){.ftb09-grid{grid-template-columns:repeat(var(--ftb09-cols-wide,var(--ftb09-cols-desktop,3)),1fr)}}
.ftb09-card{display:flex;gap:1rem;align-items:flex-start;background:transparent;border-radius:0;border:0 solid var(--ftb09-border-c,#d9c2eb);box-shadow:none;padding:0}
section[style*="--ftb09-card:1"] .ftb09-card,section[style*="--ftb09-card: 1"] .ftb09-card{background:var(--ftb09-card-bg,#fcf5ff);border-radius:var(--ftb09-radius,1.25rem);border-width:var(--ftb09-border-w,1px);box-shadow:var(--ftb09-shadow,none);padding:1.5rem}
.ftb09-icon-box{flex:none;width:2.75rem;height:2.75rem;border-radius:.6rem;background:var(--ftb09-item-icon-bg,var(--ftb09-icon-bg,var(--icon-bg,#fefce8)));color:var(--ftb09-item-icon-color,var(--ftb09-icon-color,var(--icon-color,#92400e)));display:flex;align-items:center;justify-content:center}
.ftb09-icon-box svg{width:22px;height:22px}
.ftb09-card h3{margin:0 0 .35rem;font-size:1rem;font-weight:800;color:var(--ftb09-title-color,#111827)}
.ftb09-card p{margin:0;color:var(--ftb09-desc-color,#6b7280);line-height:1.65;font-size:.9rem}

/* FTB-10 — Hero Feature Panel */
.ftb10-wrap{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center}
@media(max-width:900px){.ftb10-wrap{grid-template-columns:1fr}}
.ftb10-img{position:relative;border-radius:var(--ftb10-radius,1.25rem);overflow:hidden;aspect-ratio:4/3.2}
.ftb10-img img{width:100%;height:100%;object-fit:cover;display:block}
.ftb10-badge{position:absolute;bottom:1.25rem;left:1.25rem;background:var(--ftb10-badge-bg,#111827);color:var(--ftb10-badge-color,#fff);border-radius:.75rem;padding:1rem 1.25rem}
.ftb10-badge-num{font-size:1.6rem;font-weight:900;line-height:1}
.ftb10-badge-lbl{font-size:.72rem;opacity:.85;margin-top:.15rem}
.ftb10-eyebrow{font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.06em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.78rem);color:var(--ftb10-eyebrow-color,var(--eyebrow-color-dark,#fcd703));margin-bottom:.5rem}section[style*="--ftb10-eyebrow-mode:light"] .ftb10-eyebrow,section[style*="--ftb10-eyebrow-mode: light"] .ftb10-eyebrow{color:var(--ftb10-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ftb10-text h2{margin:0 0 1rem;font-size:clamp(1.5rem,2.5vw,2rem);font-weight:800;color:var(--ftb10-heading-color,#111827);text-wrap:balance}
.ftb10-text>p{margin:0 0 1.5rem;color:var(--ftb10-desc-color,#6b7280);line-height:1.7}
.ftb10-stats{display:flex;gap:2rem;margin-bottom:1.75rem;flex-wrap:wrap}
.ftb10-stat span{display:block;font-size:1.4rem;font-weight:900;color:var(--ftb10-stat-value-color,#111827)}
.ftb10-stat small{font-size:.75rem;color:var(--ftb10-stat-label-color,#6b7280)}
.ftb10-text .btn-pill{background:var(--ftb10-btn-bg,#fcd703);color:var(--ftb10-btn-color,#111827)}

/* FTB-11 — Timeline Steps */
.ftb11-eyebrow{font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.06em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.78rem);color:var(--ftb11-eyebrow-color,var(--eyebrow-color-dark,#fcd703));margin:0 0 .5rem}section[style*="--ftb11-eyebrow-mode:light"] .ftb11-eyebrow,section[style*="--ftb11-eyebrow-mode: light"] .ftb11-eyebrow{color:var(--ftb11-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ftb11-heading{margin:0;font-size:clamp(1.4rem,2.5vw,1.9rem);color:var(--ftb11-heading-color,#111827)}
.ftb11-wrap{display:grid;grid-template-columns:repeat(var(--ftb11-cols-mobile,1),1fr);gap:var(--ftb11-gap,2rem);position:relative}
@media(min-width:640px){.ftb11-wrap{grid-template-columns:repeat(var(--ftb11-cols-tablet,var(--ftb11-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.ftb11-wrap{grid-template-columns:repeat(var(--ftb11-cols-desktop,var(--ftb11-cols-tablet,4)),1fr)}}
@media(min-width:1280px){.ftb11-wrap{grid-template-columns:repeat(var(--ftb11-cols-wide,var(--ftb11-cols-desktop,4)),1fr)}}
.ftb11-card{text-align:center;position:relative}
.ftb11-step{width:2.75rem;height:2.75rem;border-radius:50%;background:var(--ftb11-step-bg,#111827);color:var(--ftb11-step-color,#fff);display:flex;align-items:center;justify-content:center;font-weight:800;margin:0 auto 1rem;position:relative;z-index:1}
.ftb11-card:not(:last-child)::after{content:'';position:absolute;top:1.375rem;left:calc(50% + 1.6rem);width:calc(100% - 1.6rem);height:2px;background:var(--ftb11-line-color,#e5e7eb)}
@media(max-width:900px){.ftb11-card:not(:last-child)::after{display:none}}
.ftb11-card h3{margin:0 0 .5rem;font-size:1rem;font-weight:800;color:var(--ftb11-title-color,#111827)}
.ftb11-card p{margin:0;color:var(--ftb11-desc-color,#6b7280);line-height:1.6;font-size:.88rem}

/* FTB-12 — Gradient Border Cards */
.ftb12-eyebrow{font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.06em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.78rem);color:var(--ftb12-eyebrow-color,var(--eyebrow-color-dark,#fcd703));margin:0 0 .5rem}section[style*="--ftb12-eyebrow-mode:light"] .ftb12-eyebrow,section[style*="--ftb12-eyebrow-mode: light"] .ftb12-eyebrow{color:var(--ftb12-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ftb12-heading{margin:0;font-size:clamp(1.4rem,2.5vw,1.9rem);color:var(--ftb12-heading-color,#111827)}
.ftb12-grid{display:grid;grid-template-columns:repeat(var(--ftb12-cols-mobile,1),1fr);gap:var(--ftb12-gap,1.25rem)}
@media(min-width:640px){.ftb12-grid{grid-template-columns:repeat(var(--ftb12-cols-tablet,var(--ftb12-cols-mobile,2)),1fr)}}
@media(min-width:1024px){.ftb12-grid{grid-template-columns:repeat(var(--ftb12-cols-desktop,var(--ftb12-cols-tablet,4)),1fr)}}
@media(min-width:1280px){.ftb12-grid{grid-template-columns:repeat(var(--ftb12-cols-wide,var(--ftb12-cols-desktop,4)),1fr)}}
.ftb12-card{padding:2px;border-radius:var(--ftb12-radius,1.35rem);background:linear-gradient(135deg,var(--ftb12-grad-1,#fcd703),var(--ftb12-grad-2,#f97316),var(--ftb12-grad-3,#a78bfa));box-shadow:var(--ftb12-shadow,none)}
.ftb12-inner{background:#fff;border-radius:calc(var(--ftb12-radius,1.35rem) - 2px);padding:2rem;height:100%;display:flex;flex-direction:column;gap:.75rem}
.ftb12-icon{width:32px;height:32px;color:var(--ftb12-icon-color,var(--icon-color,#92400e))}
.ftb12-inner h3{margin:0;font-size:1.05rem;font-weight:800;color:var(--ftb12-title-color,#111827)}
.ftb12-inner p{margin:0;color:var(--ftb12-desc-color,#6b7280);line-height:1.65;flex:1}
.ftb12-inner .rm-link{font-weight:700;font-size:.85rem;color:var(--ftb12-link-color,#111827);text-decoration:none}

/* FTB-13 — Horizontal Feature Rows */
.ftb13-outer{display:grid;grid-template-columns:1fr 2fr;gap:4rem;align-items:start}
@media(max-width:900px){.ftb13-outer{grid-template-columns:1fr}}
.ftb13-eyebrow{font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.06em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.78rem);color:var(--ftb13-eyebrow-color,var(--eyebrow-color-dark,#fcd703));margin:0 0 .5rem}section[style*="--ftb13-eyebrow-mode:light"] .ftb13-eyebrow,section[style*="--ftb13-eyebrow-mode: light"] .ftb13-eyebrow{color:var(--ftb13-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ftb13-heading-col h2{margin:0 0 1rem;font-size:clamp(1.5rem,2.5vw,2rem);font-weight:800;color:var(--ftb13-heading-color,#111827)}
.ftb13-heading-col .btn-pill{background:var(--ftb13-btn-bg,#fcd703);color:var(--ftb13-btn-color,#111827)}
.ftb13-sub{margin:0;color:var(--ftb13-sub-color,#6b7280);line-height:1.7}
.ftb13-grid{display:grid;grid-template-columns:repeat(var(--ftb13-cols-mobile,1),1fr);gap:var(--ftb13-gap,0rem)}
@media(min-width:640px){.ftb13-grid{grid-template-columns:repeat(var(--ftb13-cols-tablet,var(--ftb13-cols-mobile,1)),1fr)}}
@media(min-width:1024px){.ftb13-grid{grid-template-columns:repeat(var(--ftb13-cols-desktop,var(--ftb13-cols-tablet,1)),1fr)}}
@media(min-width:1280px){.ftb13-grid{grid-template-columns:repeat(var(--ftb13-cols-wide,var(--ftb13-cols-desktop,1)),1fr)}}
.ftb13-row{display:flex;align-items:flex-start;gap:1.25rem;padding:1.5rem 0;border-bottom:1px solid #f1f5f9}
.ftb13-row:last-child{border-bottom:0}
.ftb13-num{font-size:.78rem;font-weight:900;color:var(--ftb13-num-color,#e2e8f0);flex:none;margin-top:.3rem;font-variant-numeric:tabular-nums}
.ftb13-icon-col{width:2.5rem;height:2.5rem;border-radius:50%;background:var(--ftb13-icon-bg,var(--icon-bg,#fefce8));color:var(--ftb13-icon-color,var(--icon-color,#92400e));display:flex;align-items:center;justify-content:center;flex:none}
.ftb13-body{flex:1;min-width:0}
.ftb13-body h3{margin:0 0 .3rem;font-size:.98rem;font-weight:800;color:var(--ftb13-row-title-color,#111827)}
.ftb13-body p{margin:0;color:var(--ftb13-row-desc-color,#6b7280);line-height:1.6;font-size:.88rem}
.ftb13-img-wrap{width:80px;height:60px;border-radius:.5rem;overflow:hidden;flex:none;position:relative}
.ftb13-img{width:100%;height:100%;object-fit:cover;display:block}
@media(max-width:640px){.ftb13-img-wrap{display:none}}

/* FTB-05/08/13 Clickable image on/off */
section[style*="--ftb05-clickable:0"] [data-action="vmodal-open"],section[style*="--ftb05-clickable: 0"] [data-action="vmodal-open"],
section[style*="--ftb08-clickable:0"] [data-action="vmodal-open"],section[style*="--ftb08-clickable: 0"] [data-action="vmodal-open"],
section[style*="--ftb10-clickable:0"] [data-action="vmodal-open"],section[style*="--ftb10-clickable: 0"] [data-action="vmodal-open"],
section[style*="--ftb13-clickable:0"] [data-action="vmodal-open"],section[style*="--ftb13-clickable: 0"] [data-action="vmodal-open"]{pointer-events:none;cursor:default}
section[style*="--ftb05-clickable:0"] .v-zoom-overlay,section[style*="--ftb05-clickable: 0"] .v-zoom-overlay,
section[style*="--ftb08-clickable:0"] .v-zoom-overlay,section[style*="--ftb08-clickable: 0"] .v-zoom-overlay,
section[style*="--ftb10-clickable:0"] .v-zoom-overlay,section[style*="--ftb10-clickable: 0"] .v-zoom-overlay,
section[style*="--ftb13-clickable:0"] .v-zoom-overlay,section[style*="--ftb13-clickable: 0"] .v-zoom-overlay{display:none}

/* §67 Fancy Headings (FH-01,02,03,04a,04b,05a,05b,05c,06,07,08,09,10,11,12) */

.fh-eyebrow{display:block;font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.06em);text-transform:var(--eyebrow-text-transform,uppercase);font-size:var(--eyebrow-font-size,.85rem);margin:0 0 1rem}
.fh-sub{margin:1.25rem auto 0;max-width:34rem;line-height:1.6}

/* FH-01 — Rotating Word */
.fh01-eyebrow{color:var(--fh01-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--fh01-eyebrow-mode:light"] .fh01-eyebrow,section[style*="--fh01-eyebrow-mode: light"] .fh01-eyebrow{color:var(--fh01-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.fh01-sub{color:var(--fh01-sub-color,#6b7280)}
.fh01-h{font-size:clamp(1.8rem,4.5vw,3.25rem);font-weight:900;line-height:1.25;color:var(--fh01-heading-color,#111827);text-wrap:balance}
.fh01-slot{position:relative;display:inline-block;vertical-align:bottom;overflow:hidden;height:1.25em}
.fh01-word{position:absolute;left:0;top:0;opacity:0;transform:translateY(100%);transition:transform .5s cubic-bezier(.2,.8,.2,1),opacity .4s;color:var(--fh01-word-color,#fcd703);white-space:nowrap}
.fh01-word.active{position:relative;opacity:1;transform:translateY(0)}

/* FH-02 — Image-Masked Text */
.fh02-eyebrow{color:var(--fh02-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--fh02-eyebrow-mode:light"] .fh02-eyebrow,section[style*="--fh02-eyebrow-mode: light"] .fh02-eyebrow{color:var(--fh02-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.fh02-h{margin:0;line-height:1.05}
.fh02-masked{display:block;font-size:clamp(3rem,9vw,7rem);font-weight:900;letter-spacing:.02em;background-size:cover;background-position:center;-webkit-background-clip:text;background-clip:text;color:transparent}
.fh02-normal{display:block;font-size:.5em;font-weight:700;letter-spacing:.02em;color:var(--fh02-normal-color,#94a3b8);margin-top:.3em}

/* FH-03 — Gradient Text */
.fh03-eyebrow{color:var(--fh03-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--fh03-eyebrow-mode:light"] .fh03-eyebrow,section[style*="--fh03-eyebrow-mode: light"] .fh03-eyebrow{color:var(--fh03-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.fh03-sub{color:var(--fh03-sub-color,#6b7280)}
.fh03-h{font-size:clamp(2rem,5vw,3.75rem);font-weight:900;line-height:1.2;color:var(--fh03-text-color,#111827)}
.fh03-grad{background:linear-gradient(90deg,var(--fh03-grad-1,#f97316),var(--fh03-grad-2,#ec4899));-webkit-background-clip:text;background-clip:text;color:transparent;background-size:200% auto}
section[style*="--fh03-animated:1"] .fh03-grad{animation:fh03shift 4s linear infinite}
@keyframes fh03shift{to{background-position:200% center}}

/* FH-04a — Stacked Filled + Outline */
.fh04-stack{display:flex;flex-direction:column;gap:.15em}
.fh04-h{font-size:clamp(2.5rem,7vw,7rem);font-weight:900;line-height:1.05;letter-spacing:-.01em}
.fh04-filled{color:var(--fh04a-fill-color,#ffffff)}
.fh04-outline{color:transparent;-webkit-text-stroke:var(--fh04a-outline-w,2px) var(--fh04a-outline-color,#ffffff);text-stroke:var(--fh04a-outline-w,2px) var(--fh04a-outline-color,#ffffff)}

/* FH-04b — Inline Outline Accent Word */
.fh04b-h{font-size:clamp(var(--fh04b-fs-min,2rem),5.5vw,var(--fh04b-fs-max,4.5rem));font-weight:900;line-height:var(--fh04b-lh,1.25);letter-spacing:var(--fh04b-ls,normal);color:var(--fh04b-text-color,#111827)}
.fh04b-outline{color:transparent;-webkit-text-stroke:var(--fh04b-outline-w,2.5px) var(--fh04b-outline-color,#0ea5e9);text-stroke:var(--fh04b-outline-w,2.5px) var(--fh04b-outline-color,#0ea5e9)}

/* FH-05a — Skewed Highlighter */
.fh05a-eyebrow{color:var(--fh05a-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
.fh05-h{font-size:clamp(1.8rem,4.5vw,3.25rem);font-weight:900;line-height:1.35}
.fh05a-eyebrow ~ .fh05-h{color:var(--fh05a-text-color,#111827)}
.fh-hl{position:relative;display:inline-block;padding:0 .15em;color:var(--fh05a-hl-color,#111827)}
.fh-hl::before{content:'';position:absolute;inset:.05em -.1em;background:var(--fh05a-hl-bg,#fcd703);transform:skewX(-8deg);z-index:-1;border-radius:.15em}

/* FH-05b — Underline Accent */
.fh05b-eyebrow{color:var(--fh05b-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
.fh05b-eyebrow ~ .fh05-h{color:var(--fh05b-text-color,#111827)}
.fh05b-ul{position:relative;display:inline-block;padding-bottom:.1em;border-bottom:.1em solid var(--fh05b-ul-color,#fcd703)}
section[style*="--fh05b-style:dashed"] .fh05b-ul{border-bottom-style:dashed}
section[style*="--fh05b-style:wavy"] .fh05b-ul{border-bottom:0;background:repeating-linear-gradient(90deg,var(--fh05b-ul-color,#fcd703) 0 6px,transparent 6px 12px) repeat-x bottom/12px .18em}

/* FH-05c — Pill Highlight */
.fh05c-eyebrow{color:var(--fh05c-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
.fh05c-eyebrow ~ .fh05-h{color:var(--fh05c-text-color,#111827)}
.fh05c-pill{display:inline-block;background:var(--fh05c-pill-bg,#111827);color:var(--fh05c-pill-color,#ffffff);padding:.15em .45em;border-radius:.3em}

/* FH-06 — Character Stagger */
.fh06-h{font-size:clamp(1.8rem,4.5vw,3.25rem);font-weight:900;line-height:1.3;color:var(--fh06-heading-color,#ffffff)}
.fh06-char{display:inline-block;opacity:0;transform:translateY(.5em) rotate(6deg);transition:opacity .5s,transform .5s}
[data-char-stagger].fh06-in .fh06-char{opacity:1;transform:translateY(0) rotate(0)}

/* FH-07 — Word Stagger */
.fh07-eyebrow{color:var(--fh07-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--fh07-eyebrow-mode:light"] .fh07-eyebrow,section[style*="--fh07-eyebrow-mode: light"] .fh07-eyebrow{color:var(--fh07-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.fh07-sub{color:var(--fh07-sub-color,#6b7280)}
.fh07-h{font-size:clamp(1.8rem,4.5vw,3.25rem);font-weight:900;line-height:1.3;color:var(--fh07-heading-color,#111827)}
.fh07-word-wrap{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em}
.fh07-word{display:inline-block;transform:translateY(110%);transition:transform .6s cubic-bezier(.2,.8,.2,1)}
[data-word-stagger].fh07-in .fh07-word{transform:translateY(0)}

/* FH-08 — Line-by-Line Reveal */
.fh08-eyebrow{color:var(--fh08-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--fh08-eyebrow-mode:light"] .fh08-eyebrow,section[style*="--fh08-eyebrow-mode: light"] .fh08-eyebrow{color:var(--fh08-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.fh08-sub{color:var(--fh08-sub-color,#6b7280)}
.fh08-h{font-size:clamp(1.8rem,4.5vw,3rem);font-weight:900;line-height:1.35;color:var(--fh08-heading-color,#111827)}
.fh08-lines{display:block}
.fh08-line{display:block;overflow:hidden}
.fh08-inner{display:block;transform:translateY(110%);transition:transform .7s cubic-bezier(.2,.8,.2,1)}
[data-line-reveal].fh08-in .fh08-line:nth-child(1) .fh08-inner{transition-delay:.05s}
[data-line-reveal].fh08-in .fh08-line:nth-child(2) .fh08-inner{transition-delay:.18s}
[data-line-reveal].fh08-in .fh08-line:nth-child(3) .fh08-inner{transition-delay:.31s}
[data-line-reveal].fh08-in .fh08-line:nth-child(4) .fh08-inner{transition-delay:.44s}
[data-line-reveal].fh08-in .fh08-inner{transform:translateY(0)}

/* FH-09 — Split Color Words */
.fh09-h{font-size:clamp(2rem,5vw,3.75rem);font-weight:900;line-height:1.2}
.fh09-base{color:var(--fh09-base-color,#0f172a)}
.fh09-accent{color:var(--fh09-accent-color,#fcd703)}
section[style*="--fh09-accent-style:muted"] .fh09-accent{color:var(--fh09-base-color,#0f172a);opacity:.6}
section[style*="--fh09-accent-style:gradient"] .fh09-accent{background:linear-gradient(90deg,var(--fh09-accent-color,#fcd703),var(--fh09-accent-color-2,#ec4899));-webkit-background-clip:text;background-clip:text;color:transparent}

/* FH-10 — Badge Inline */
.fh10-h{font-size:clamp(1.8rem,4.5vw,3.25rem);font-weight:900;line-height:1.35;color:var(--fh10-text-color,#111827)}
.fh10-badge{display:inline-block;background:var(--fh10-badge-bg,#fcd703);color:var(--fh10-badge-color,#111827);font-size:.5em;font-weight:800;padding:.35em 1em;border-radius:100px;letter-spacing:.02em}
section[style*="--fh10-badge-style:tag"] .fh10-badge{border-radius:.3em;padding:.25em .7em}

/* FH-11 — Pill Badge + Divider Line */
.fh11-row{display:flex;align-items:center;gap:var(--fh11-gap,1rem);margin:0 auto;padding:0 clamp(1.25rem,4vw,2.5rem)}
.fh11-pill{display:inline-flex;align-items:center;gap:.5rem;flex-shrink:0;white-space:nowrap}
.fh11-icon{flex-shrink:0}
.fh11-line{flex:1 1 auto;height:0;min-width:2rem}
.fh11-right{flex-shrink:0;white-space:nowrap}

/* FH-12 — Typewriter */
.fh12-eyebrow{color:var(--fh12-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}section[style*="--fh12-eyebrow-mode:light"] .fh12-eyebrow,section[style*="--fh12-eyebrow-mode: light"] .fh12-eyebrow{color:var(--fh12-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.fh12-sub{color:var(--fh12-sub-color,#6b7280)}
.fh12-h{font-size:clamp(1.8rem,4.5vw,3.25rem);font-weight:900;line-height:1.35;color:var(--fh12-text-color,#111827)}
.fh12-typed{color:var(--fh12-typed-color,#fcd703);font-variant-numeric:tabular-nums}
.fh12-cursor{display:inline-block;width:.06em;height:.85em;background:var(--fh12-cursor-color,#111827);margin-left:.05em;vertical-align:-.1em;animation:fh12blink 1s step-end infinite}
@keyframes fh12blink{50%{opacity:0}}

/* FH-13 — Small-Caps Dash Accent (distinct from FH-05b Underline Accent,
   which underlines one WORD inside a longer heading -- this is a short,
   standalone small-caps label with a centered dash beneath the whole
   label, e.g. "BEST SELLERS"). Font-size IS set here directly on the
   heading element itself, same convention every other fhNN-h rule uses
   (only headings/eyebrows may set font-size) -- just a smaller label-scale
   clamp than the display-scale headings, since that's this template's
   whole visual identity. */
.fh13-h{font-size:var(--fh13-fs,1.1rem);font-weight:var(--fh13-fw,700);letter-spacing:var(--fh13-ls,.12em);text-transform:uppercase;color:var(--fh13-text-color,#111827);margin:0}
/* .fh13-textwrap is display:inline-block + position:relative specifically
   so (a) it shrinks to the label's own rendered width -- what makes Line
   2's "Full" option mean "exactly the text width" for any label length --
   and (b) it and the outer .col-wrap (also position:relative) end up with
   the IDENTICAL content height (both equal to the h2's own height, since
   Line 1/Line 2 are both position:absolute and out of flow). That equal
   height is what makes "top:100%" resolve to the exact same real pixel
   position for both lines even though they're anchored to two different
   parents -- the actual trick behind "Line 1 passes through Line 2's
   center" below. */
.fh13-textwrap{display:inline-block;position:relative;vertical-align:top}
.fh13-line1,.fh13-line2{position:absolute;left:0;right:0;height:0;margin:0 auto}
/* Both lines anchor to the SAME point (100% + a shared gap, i.e. "the
   heading's bottom edge plus breathing room"), then each pulls back up by
   HALF its own border thickness -- a border-top's rendered stroke spans
   [top, top+thickness], so top = anchor - thickness/2 centers that stroke
   ON the anchor line for ANY thickness. Two different thicknesses sharing
   the same anchor therefore always share the same visual centerline. */
.fh13-line1{top:calc(100% + .8rem - (var(--fh13-line1-w,1px) / 2))}
.fh13-line2{top:calc(100% + .8rem - (var(--fh13-line2-w,3px) / 2))}
section[style*="--fh13-line2-width:small"] .fh13-line2,
section[style*="--fh13-line2-width: small"] .fh13-line2{width:50%}
section[style*="--fh13-line2-width:long"] .fh13-line2,
section[style*="--fh13-line2-width: long"] .fh13-line2{width:130%;left:50%;right:auto;margin:0;transform:translateX(-50%)}

/* §68 Gallery (IG-01..06) */

/* IG-01 — Masonry Grid */
.ig01-grid{columns:var(--ig01-cols-mobile,1);column-gap:var(--ig01-gap,.625rem)}
@media(min-width:640px){.ig01-grid{columns:var(--ig01-cols-tablet,2)}}
@media(min-width:1024px){.ig01-grid{columns:var(--ig01-cols-desktop,3)}}
@media(min-width:1280px){.ig01-grid{columns:var(--ig01-cols-wide,3)}}
.ig01-item{position:relative;break-inside:avoid;margin-bottom:var(--ig01-gap,.625rem);border-radius:var(--ig01-radius,.75rem);overflow:hidden;box-shadow:var(--ig01-shadow,none);background:var(--ig01-item-bg,#f1f5f9)}
.ig01-item img{width:100%;height:100%;display:block;object-fit:var(--ig01-fit,cover);transition:transform .4s}
.ig01-item:nth-child(6n+1){height:340px}
.ig01-item:nth-child(6n+2){height:260px}
.ig01-item:nth-child(6n+3){height:180px}
.ig01-item:nth-child(6n+4){height:260px}
.ig01-item:nth-child(6n+5){height:340px}
.ig01-item:nth-child(6n+6){height:220px}
.ig01-item::after{content:'';position:absolute;inset:0;background:var(--ig01-overlay-color,#000);opacity:0;transition:opacity .3s;pointer-events:none}
.ig01-item:hover::after{opacity:var(--ig01-overlay-opacity,.15)}
.ig01-item:hover img{transform:scale(1.05)}

/* IG-02 — Filterable Grid */
.ig02-tabs{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:2rem}
.ig02-tab{background:transparent!important;border:0!important;padding:.5rem 1.1rem!important;border-radius:999px!important;font-size:.85rem!important;font-weight:600;color:var(--ig02-tab-color,#6b7280)!important;cursor:pointer;transition:background .2s,color .2s;white-space:nowrap}
.ig02-tab.active{background:var(--ig02-tab-active-bg,#111827)!important;color:var(--ig02-tab-active-color,#ffffff)!important}
.ig02-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--ig02-col-min,16.25rem),1fr));gap:var(--ig02-gap,.625rem)}
.ig02-item{position:relative;aspect-ratio:4/3;border-radius:var(--ig02-radius,.5rem);overflow:hidden;box-shadow:var(--ig02-shadow,none);transition:opacity .3s,transform .3s}
.ig02-item.ig02-hidden{display:none}
.ig02-item img{width:100%;height:100%;object-fit:cover;display:block}
.ig02-cat{position:absolute;left:.6rem;bottom:.6rem;font-size:.68rem;font-weight:700;padding:.25rem .6rem;border-radius:999px;background:rgba(0,0,0,.55);color:#fff;opacity:0;transition:opacity .3s}
.ig02-item:hover .ig02-cat{opacity:1}

/* IG-03 — Asymmetric Hero Grid */
.ig03-top{display:grid;grid-template-columns:1.35fr 1fr;grid-template-rows:auto;gap:var(--ig03-gap,.625rem)}
.ig03-hero{grid-row:span 2;position:relative;border-radius:var(--ig03-radius,.75rem);overflow:hidden;height:var(--ig03-hero-h,480px)}
.ig03-small{position:relative;border-radius:var(--ig03-radius,.75rem);overflow:hidden;height:calc((var(--ig03-hero-h,480px) - var(--ig03-gap,.625rem)) / 2)}
.ig03-hero img,.ig03-small img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s}
.ig03-hero:hover img,.ig03-small:hover img{transform:scale(1.05)}
.ig03-bot{display:grid;grid-template-columns:repeat(var(--ig03-row2-cols,3),1fr);gap:var(--ig03-gap,.625rem);margin-top:var(--ig03-gap,.625rem)}
.ig03-row2-item{position:relative;border-radius:var(--ig03-radius,.75rem);overflow:hidden;height:var(--ig03-row2-h,190px)}
.ig03-row2-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s}
.ig03-row2-item:hover img{transform:scale(1.05)}
@media(max-width:900px){
  .ig03-top{grid-template-columns:1fr}
  .ig03-hero{grid-row:auto;height:280px}
  .ig03-small{height:200px}
  .ig03-bot{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:520px){
  .ig03-bot{grid-template-columns:1fr}
}

/* IG-04 — Caption Slide-Up Grid */
.ig04-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--ig04-col-min,13.75rem),1fr));gap:var(--ig04-gap,.625rem)}
.ig04-item{position:relative;height:var(--ig04-card-h,280px);border-radius:var(--ig04-radius,.5rem);overflow:hidden}
.ig04-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s}
.ig04-item:hover img{transform:scale(1.06)}
.ig04-item .v-zoom-overlay{background:transparent;align-items:flex-start;justify-content:flex-end}
.ig04-item .v-zoom-btn{position:absolute;top:.75rem;right:.75rem;width:34px;height:34px;background:var(--ig04-zoom-bg,rgba(255,255,255,.15));border:1px solid var(--ig04-zoom-border,rgba(255,255,255,.35));backdrop-filter:blur(4px);color:var(--ig04-zoom-color,#fff);opacity:1}
.ig04-item .v-zoom-btn::before,.ig04-item .v-zoom-btn::after{animation:none}
.ig04-caption{position:absolute;left:0;right:0;bottom:0;padding:1rem;transform:translateY(65%);transition:transform .3s;background:linear-gradient(to top,color-mix(in srgb,var(--ig04-overlay-color,#000) calc(var(--ig04-overlay-opacity,.65) * 100%),transparent) 0%,transparent 100%)}
.ig04-item:hover .ig04-caption{transform:translateY(0)}
.ig04-tag{display:block;font-size:.62rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ig04-tag-color,#fcd703)}
.ig04-caption h4{margin:.2rem 0 0;font-size:.9rem;font-weight:800;color:var(--ig04-title-color,#fff)}

/* IG-05 — Horizontal Scroll Strip */
.ig05-strip{display:flex;gap:var(--ig05-gap,1rem);overflow-x:auto;scroll-snap-type:x mandatory;padding:0 1rem;scrollbar-width:none}
.ig05-strip::-webkit-scrollbar{display:none}
.ig05-item{position:relative;flex:0 0 var(--ig05-card-w,18.75rem);height:var(--ig05-card-h,340px);border-radius:var(--ig05-radius,.75rem);overflow:hidden;scroll-snap-align:start}
@media(max-width:767px){
  .ig05-strip{padding:0 calc(50vw - var(--ig05-card-w,18.75rem) / 2);scroll-padding:0 calc(50vw - var(--ig05-card-w,18.75rem) / 2)}
  .ig05-item{scroll-snap-align:center}
}
.ig05-item img{width:100%;height:100%;object-fit:cover;display:block}
.ig05-caption{position:absolute;left:0;right:0;bottom:0;padding:1rem;background:linear-gradient(to top,var(--ig05-overlay-color,#000) 0%,transparent 70%)}
.ig05-caption span{display:block;font-size:var(--eyebrow-font-size,.62rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.1em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--ig05-eyebrow-color,var(--eyebrow-color-dark,rgba(255,255,255,.6)))}
.ig05-caption h4{margin:.15rem 0 0;font-size:.88rem;font-weight:800;color:var(--ig05-title-color,#fff)}
.ig05-fade-l,.ig05-fade-r{position:absolute;top:0;bottom:0;width:80px;z-index:3;pointer-events:none;transition:opacity .25s}
.ig05-fade-l{left:0;background:linear-gradient(to right,var(--ig05-bg,#fff),transparent);opacity:0}
.ig05-fade-r{right:0;background:linear-gradient(to left,var(--ig05-bg,#fff),transparent)}
.ig05-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:4;width:40px;height:40px;border-radius:50%;border:0;background:var(--ig05-nav-bg,#fff);color:var(--ig05-nav-color,#111827);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.ig05-nav svg{width:18px;height:18px}
.ig05-nav-prev{left:1.25rem}
.ig05-nav-next{right:1.25rem}
.ig05-nav[disabled]{opacity:.35;cursor:default}

/* ── IG-10 Gallery — Instagram Image Slider ──────────────────────────────
   Same horizontal scroll-snap strip mechanism as ig-05 (identical
   [data-gallery-scroll-*] attributes -> theme.js's initGalleryScroll binds
   to them generically, no new JS needed) but square tiles and NO caption
   markup at all -- bare images only, matching an Instagram feed. */
.ig10-strip{display:flex;gap:var(--ig10-gap,.75rem);overflow-x:auto;scroll-snap-type:x mandatory;padding:0 1rem;scrollbar-width:none}
.ig10-strip::-webkit-scrollbar{display:none}
.ig10-item{position:relative;flex:0 0 var(--ig10-card-w,13.75rem);height:var(--ig10-card-h,220px);border-radius:var(--ig10-radius,.5rem);overflow:hidden;scroll-snap-align:start;border:var(--ig10-border-w,0) var(--ig10-border-style,solid) var(--ig10-border-c,#e5e7eb);background:var(--ig10-item-bg,#f1f5f9)}
@media(max-width:640px){
  .ig10-strip{padding:0 calc(50vw - var(--ig10-card-w,13.75rem) / 2);scroll-padding:0 calc(50vw - var(--ig10-card-w,13.75rem) / 2)}
  .ig10-item{scroll-snap-align:center}
}
.ig10-item img{width:100%;height:100%;object-fit:var(--ig10-fit,cover);display:block}
/* Shadow: a size KEY (none/sm/md/lg) mapped to a real box-shadow value via
   attribute selectors, using the admin's own configured colour -- NOT the
   "store a size + a colour on two separate vars and hope the CSS combines
   them" pattern ig-01/ig-05 use for their own (dead/unwired) shadow and
   zoom-color fields; that pattern never actually applies here. */
section[style*="--ig10-shadow:sm"] .ig10-item,section[style*="--ig10-shadow: sm"] .ig10-item{box-shadow:0 1px 3px var(--ig10-shadow-color,rgba(0,0,0,.18))}
section[style*="--ig10-shadow:md"] .ig10-item,section[style*="--ig10-shadow: md"] .ig10-item{box-shadow:0 4px 10px var(--ig10-shadow-color,rgba(0,0,0,.18))}
section[style*="--ig10-shadow:lg"] .ig10-item,section[style*="--ig10-shadow: lg"] .ig10-item{box-shadow:0 10px 25px var(--ig10-shadow-color,rgba(0,0,0,.18))}
.ig10-item .v-zoom-btn{background:var(--ig10-zoom-bg,rgba(255,255,255,.9));color:var(--ig10-zoom-color,#111827)}
.ig10-fade-l,.ig10-fade-r{position:absolute;top:0;bottom:0;width:80px;z-index:3;pointer-events:none;transition:opacity .25s}
.ig10-fade-l{left:0;background:linear-gradient(to right,var(--ig10-bg,#fff),transparent);opacity:0}
.ig10-fade-r{right:0;background:linear-gradient(to left,var(--ig10-bg,#fff),transparent)}
.ig10-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:4;width:40px;height:40px;border-radius:50%;border:0;background:var(--ig10-nav-bg,#fff);color:var(--ig10-nav-color,#111827);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.ig10-nav svg{width:18px;height:18px}
.ig10-nav-prev{left:1.25rem}
.ig10-nav-next{right:1.25rem}
.ig10-nav[disabled]{opacity:.35;cursor:default}

/* IG-06 — Magazine Full-Bleed Grid */
.ig06-grid{display:grid;grid-template-columns:var(--ig06-side-ratio,1fr) var(--ig06-center-ratio,2fr) var(--ig06-side-ratio,1fr);grid-template-rows:var(--ig06-cell-h,220px) var(--ig06-cell-h,220px);grid-auto-rows:var(--ig06-cell-h,220px);gap:var(--ig06-gap,.25rem)}
.ig06-flanking-loop{display:contents}
.ig06-cell{position:relative;overflow:hidden}
.ig06-cell img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s}
.ig06-cell:hover img{transform:scale(1.04)}
.ig06-hero{grid-column:2;grid-row:1/3}
.ig06-zoom-sm{width:36px;height:36px}
.ig06-zoom-lg{width:64px;height:64px}
@media(max-width:900px){
  .ig06-grid{grid-template-columns:1fr 1fr;grid-template-rows:220px;grid-auto-rows:180px}
  .ig06-hero{grid-column:auto;grid-row:auto;height:220px}
}
@media(max-width:520px){
  .ig06-grid{grid-template-columns:1fr}
  .ig06-hero{height:260px}
}

/* Gallery zoom icon: hover-only reveal (default v-zoom-overlay is always-on
   with a continuously pulsing ring — fine for one hero image, but distracting
   noise across a dense grid of 6+ photos all pulsing at once). */
.ig01-item .v-zoom-overlay,.ig02-item .v-zoom-overlay,.ig03-hero .v-zoom-overlay,
.ig03-small .v-zoom-overlay,.ig03-row2-item .v-zoom-overlay,.ig05-item .v-zoom-overlay,
.ig06-cell .v-zoom-overlay,.ig10-item .v-zoom-overlay{opacity:1;background:rgba(0,0,0,0);transition:background .3s}
.ig01-item:hover .v-zoom-overlay,.ig02-item:hover .v-zoom-overlay,.ig03-hero:hover .v-zoom-overlay,
.ig03-small:hover .v-zoom-overlay,.ig03-row2-item:hover .v-zoom-overlay,.ig05-item:hover .v-zoom-overlay,
.ig06-cell:hover .v-zoom-overlay,.ig10-item:hover .v-zoom-overlay{background:rgba(0,0,0,.25)}
.ig01-item .v-zoom-btn::before,.ig01-item .v-zoom-btn::after,.ig02-item .v-zoom-btn::before,.ig02-item .v-zoom-btn::after,
.ig03-hero .v-zoom-btn::before,.ig03-hero .v-zoom-btn::after,.ig03-small .v-zoom-btn::before,.ig03-small .v-zoom-btn::after,
.ig03-row2-item .v-zoom-btn::before,.ig03-row2-item .v-zoom-btn::after,.ig05-item .v-zoom-btn::before,.ig05-item .v-zoom-btn::after,
.ig06-cell .v-zoom-btn::before,.ig06-cell .v-zoom-btn::after,.ig10-item .v-zoom-btn::before,.ig10-item .v-zoom-btn::after{animation:none}

/* ── TA-01 Text Area — Classic ── */
.ta01-eyebrow{font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.04em);margin:0 0 .5rem}
.ta01-heading{font-weight:800;line-height:1.2;margin:0 0 1.25rem}
.ta01-body{line-height:1.7;margin:0 0 1.25rem}
.ta01-body p{margin:0 0 1rem}
.ta01-body p:last-child{margin-bottom:0}
.ta01-sub{font-weight:800;line-height:1.3;margin:2rem 0 .75rem}
.ta01-underline{display:inline-block;border-radius:99px}

/* ── EV-14 Week Schedule (Day Tabs) — reuses the shared .tt-tab-btn engine ── */
.ev14-heading{font-size:clamp(1.5rem,3vw,2.1rem);font-weight:800;text-align:center;margin:0 0 1.5rem}
.ev14-tabs{display:flex;flex-wrap:nowrap;gap:.6rem;justify-content:safe center;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
.ev14-tabs::-webkit-scrollbar{display:none}
.ev14-tabs .tt-tab-btn{flex-shrink:0;white-space:nowrap;padding:.6rem 1.25rem;border-radius:var(--ev14-tab-radius,.5rem);background:var(--ev14-tab-bg,#f3f4f6);color:var(--ev14-tab-fg,#374151);font-weight:700;font-size:.88rem}
.ev14-tabs .tt-tab-btn.active{background:var(--ev14-tab-active-bg,#fcd703);color:var(--ev14-tab-active-fg,#111827)}
.ev14-panel{display:none;margin-top:1.5rem;border:1px solid var(--ev14-rule-color,#e5e7eb);border-radius:.5rem;overflow:hidden}
.ev14-panel.active{display:block}
.ev14-row{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--ev14-rule-color,#e5e7eb)}
.ev14-row:last-child{border-bottom:0}
.ev14-clock{flex-shrink:0;display:inline-flex;width:18px;height:18px;color:var(--ev14-clock-color,#9ca3af)}
.ev14-clock svg{width:100%;height:100%}
.ev14-time{flex-shrink:0;width:11rem;font-weight:600;color:var(--ev14-time-color,#374151);font-size:.88rem}
.ev14-event{font-weight:700;color:var(--ev14-event-color,#111827);font-size:.92rem}
@media(max-width:599px){.ev14-row{flex-wrap:wrap}.ev14-time{width:auto}}

/* ── AC-09 Accordion — Plain FAQ (no image, no SVG icon — a plain
   text +/- glyph is the expand/collapse affordance) ── */
.ac09-item{padding:1.1rem 0}
.ac09-item summary{list-style:none;cursor:pointer;font-weight:700;display:flex;align-items:center;justify-content:space-between;gap:1rem}
.ac09-item summary::-webkit-details-marker{display:none}
.ac09-item summary::marker{display:none;content:''}
.ac09-item summary::after{content:'+';flex-shrink:0;font-weight:700;font-size:1.15rem;line-height:1;color:var(--ac09-ic-color,var(--primary-color,#111827))}
.ac09-item[open] summary::after{content:'\2212'}
.ac09-item[open] summary{color:var(--ac09-q-open-color,var(--ac09-q-color,#111827))}
.ac09-a{padding-top:.6rem;line-height:1.75}

/* ── BP-01 Button Group — Row / Column ── */
.bp01-item{display:contents}

/* ── BP-02 Button Group — Image Buttons ── */
.bp02-item{display:contents}
.bp02-btn{display:inline-flex;flex-direction:column;text-decoration:none;overflow:hidden;border-radius:var(--bp02-radius,.75rem);box-shadow:var(--bp02-shadow,0 4px 6px -1px rgba(0,0,0,.12));border:var(--bp02-border-w,0px) solid var(--bp02-border-c,#e5e7eb);background:var(--bp02-card-bg,#ffffff);transition:transform .25s,box-shadow .25s;max-width:var(--bp02-img-w,220px)}
.bp02-btn:hover{transform:translateY(-3px)}
/* width:auto lets the image (and therefore the card, since .bp02-btn hugs
   its content) size itself from its own aspect ratio — --bp02-img-w becomes
   a MAX width cap rather than a fixed width, so a portrait or square image
   doesn't get letterboxed inside a box shaped for a landscape one. */
.bp02-img{width:auto;max-width:var(--bp02-img-w,220px);height:var(--bp02-img-h,140px);object-fit:var(--bp02-img-fit,contain);background:var(--bp02-img-bg,#f1f5f9);display:block}
.bp02-caption{padding:.75rem 1rem;text-align:center;font-weight:700;font-size:var(--bp02-caption-fs,.95rem);line-height:var(--bp02-caption-lh,1.3);color:var(--bp02-caption-color,#111827);background:var(--bp02-caption-bg,#ffffff);overflow-wrap:break-word;word-break:break-word}

/* ── BP-03 Document Download Cards ── */
.bp03-grid{display:grid;grid-template-columns:repeat(var(--bp03-cols-xs,1),1fr);gap:var(--bp03-gap,1.25rem)}
@media(min-width:640px){.bp03-grid{grid-template-columns:repeat(var(--bp03-cols-sm,2),1fr)}}
@media(min-width:1024px){.bp03-grid{grid-template-columns:repeat(var(--bp03-cols-md,3),1fr)}}
@media(min-width:1440px){.bp03-grid{grid-template-columns:repeat(var(--bp03-cols-lg,3),1fr)}}
.bp03-item{display:contents}
.bp03-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.5rem;padding:1.5rem 1.25rem;background:var(--bp03-card-bg,#f8fafc);border:1px solid var(--bp03-card-border-c,#e2e8f0);border-radius:var(--bp03-radius,.75rem)}
.bp03-icon{width:40px;height:40px;color:var(--bp03-icon-color,#4f46e5)}
.bp03-icon svg{width:100%;height:100%}
.bp03-title{font-weight:700;color:var(--bp03-title-color,#111827);overflow-wrap:break-word;word-break:break-word}
.bp03-caption{font-size:.82rem;color:var(--bp03-caption-color,#6b7280);margin-bottom:.25rem}

/* ── BP-04 Inline Download Prompt ── */
.bp04-row{display:flex;flex-wrap:wrap;align-items:center;gap:1rem}
.bp04-icon{flex-shrink:0;width:28px;height:28px;color:var(--bp04-icon-color,#4f46e5)}
.bp04-icon svg{width:100%;height:100%}
.bp04-text{flex:1 1 16rem;color:var(--bp04-text-color,#374151);line-height:1.5}
.bp04-btn{flex-shrink:0}

/* ── HB-01 Highlight Banner — Icon + Text ── */
.hb01-box{display:flex;flex-wrap:wrap;align-items:flex-start;gap:1rem;padding:1.5rem 1.75rem}
.hb01-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}
.hb01-icon svg{width:55%;height:55%}
.hb01-content{flex:1;min-width:0}
.hb01-title{font-weight:700;margin:0 0 .4rem}
.hb01-desc{line-height:1.6;margin:0}

/* ── HB-02 Highlight Banner — Pill Feature List ── */
.hb02-eyebrow{font-weight:800;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);margin:0 0 .5rem}
.hb02-heading{font-weight:800;line-height:1.2;margin:0 0 .9rem}
.hb02-desc{line-height:1.65;margin:0 auto 1.75rem;max-width:44rem}
.hb02-pills{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin-bottom:1.5rem}
.hb02-pill{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem 1.1rem;background:var(--hb02-pill-bg,#ffffff);border:1px solid var(--hb02-pill-border-c,#fecaca);border-radius:var(--hb02-pill-radius,62.4375rem);color:var(--hb02-pill-text-color,#111827);font-size:.88rem;font-weight:600}
.hb02-pill-ico{flex-shrink:0;width:16px;height:16px;color:var(--hb02-pill-icon-color,#dc2626)}
.hb02-note{line-height:1.65;margin:0 auto;max-width:44rem}

/* ── HB-03 Highlight Banner — Simple Statement ── */
.hb03-box{padding:1.5rem 2rem;text-align:center}
.hb03-text{line-height:1.7;margin:0 auto;max-width:52rem}

/* ── HB-04 Highlight Banner — Split Announcement Bar ── */
.hb04-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center}
.hb04-left{display:flex;align-items:center;gap:.85rem;min-width:0;justify-self:end;padding-right:var(--hb04-gap,1.5rem)}
.hb04-divider{width:var(--hb04-border-w,1px);align-self:stretch;background:var(--hb04-border-c,#e5e7eb)}
.hb04-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}
.hb04-icon svg{width:70%;height:70%}
.hb04-left-text{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.hb04-left-title{font-weight:600;line-height:1.3}
.hb04-left-sub{line-height:1.4}
.hb04-right{display:inline-flex;align-items:center;gap:.5rem;font-weight:600;text-decoration:none;flex-shrink:0;white-space:nowrap;justify-self:start;padding-left:var(--hb04-gap,1.5rem)}
.hb04-right svg{width:18px;height:18px;flex-shrink:0;transition:transform .15s}
.hb04-right:hover svg{transform:translateX(3px)}
@media(max-width:640px){
  .hb04-row{grid-template-columns:1fr;gap:1rem;justify-items:center;text-align:center}
  .hb04-divider{display:none}
  .hb04-left{justify-self:center;padding-right:0}
  .hb04-right{justify-self:center;padding-left:0}
}

/* ── FB-02 Feature Bar — Rating Pill + Statement ── */
.fb02-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--fb02-gap,1rem)}
.fb02-pill{display:inline-flex;align-items:center;gap:.2rem;flex-shrink:0}
.fb02-star{flex-shrink:0}
.fb02-text{margin:0;line-height:1.5}
@media(max-width:480px){.fb02-row{justify-content:center;text-align:center}}

/* ── CF-05 Contact — Info Bar dividers (bottom on mobile, right at lg) ── */
.cf05-info-item{border-bottom:1px solid var(--border-color,#e2e8f0)}
.cf05-info-item:last-child{border-bottom:none}
@media (min-width:1024px){
  .cf05-info-item{border-bottom:none;border-right:1px solid var(--border-color,#e2e8f0)}
  .cf05-info-item:last-child{border-right:none}
}

/* ── IG-07 Card with Title + Full Image Modal ── */
.ig07-grid{display:grid;grid-template-columns:repeat(var(--ig07-cols-desktop,3),1fr);gap:var(--ig07-gap,1.25rem)}
@media(min-width:1536px){.ig07-grid{grid-template-columns:repeat(var(--ig07-cols-wide,4),1fr)}}
@media(max-width:1023px){.ig07-grid{grid-template-columns:repeat(var(--ig07-cols-tablet,2),1fr)}}
@media(max-width:599px){.ig07-grid{grid-template-columns:repeat(var(--ig07-cols-mobile,1),1fr)}}
.ig07-img-wrap{flex:1 1 auto;min-height:0;overflow:hidden;background:var(--ig07-img-bg,#f1f5f9)}
.ig07-img{object-fit:var(--ig07-fit,cover)}
.ig07-card{--btn-a-bg:var(--ig07-zoom-bg,#0d9488);--btn-a-text:var(--ig07-zoom-color,#fff)}
.ig07-card .v-zoom-btn_right_corner{width:var(--ig07-zoom-size,36px);height:var(--ig07-zoom-size,36px)}

/* ── Hover-to-Slide shared engine (IG-08, IG-09) — JS: initHoverSlide() ── */
[data-hoverslide]{position:relative;overflow:hidden;width:100%;height:100%}
[data-hoverslide-track]{display:flex;width:100%;height:100%;transform:translateX(0);transition-property:transform;transition-timing-function:ease}
[data-hoverslide-track] img{flex:0 0 100%;width:100%;height:100%;object-fit:cover;display:block}
[data-hoverslide-dots]{position:absolute;left:0;right:0;bottom:.6rem;display:flex;justify-content:center;gap:.32rem;z-index:2;pointer-events:none}
.hs-dot{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.5);transition:background .2s,transform .2s}
.hs-dot.is-active{background:#fff;transform:scale(1.35)}

/* ── IG-08 Hover-Slide Grid ── */
.ig08-grid{display:grid;grid-template-columns:repeat(var(--ig08-cols-desktop,4),1fr);gap:var(--ig08-gap,1.25rem)}
@media(max-width:1023px){.ig08-grid{grid-template-columns:repeat(var(--ig08-cols-tablet,3),1fr)}}
@media(max-width:599px){.ig08-grid{grid-template-columns:repeat(var(--ig08-cols-mobile,2),1fr)}}
.ig08-link{display:block;color:inherit;text-decoration:none}
.ig08-frame{position:relative;overflow:hidden;aspect-ratio:var(--ig08-ratio,1/1);border-radius:var(--ig08-radius,.75rem);background:var(--ig08-img-bg,#f1f5f9)}
.ig08-frame .hs-frame{--hs-speed:var(--ig08-speed,900);--hs-transdur:var(--ig08-trans-dur,320);--hs-leave:var(--ig08-leave,reset)}
.ig08-frame [data-hoverslide-track] img{object-fit:var(--ig08-fit,cover)}
.ig08-frame [data-hoverslide-dots]{display:var(--ig08-dots,flex)}
.ig08-card .hs-dot.is-active{background:var(--ig08-dot-color,#ffffff)}
.ig08-badge{position:absolute;top:.6rem;left:.6rem;z-index:3;padding:.2rem .55rem;border-radius:999px;font-size:.68rem;font-weight:700;background:var(--ig08-badge-bg,#111827);color:var(--ig08-badge-color,#fff)}
.ig08-body{padding:.85rem .1rem 0}
.ig08-title{font-weight:700;color:var(--ig08-title-color,#111827);margin:0 0 .2rem}
.ig08-sub{color:var(--ig08-price-color,#374151);margin:0;font-size:var(--ig08-fs-sm,var(--fs-sm))}

/* ── IG-09 Hover-Slide Spotlight ── */
.ig09-frame{position:relative;overflow:hidden;height:var(--ig09-h,clamp(320px,45vw,560px));border-radius:var(--ig09-radius,0rem)}
.ig09-frame .hs-frame{--hs-speed:var(--ig09-speed,1200);--hs-transdur:var(--ig09-trans-dur,400);--hs-leave:var(--ig09-leave,reset)}
.ig09-frame [data-hoverslide-track] img{object-fit:var(--ig09-fit,cover);background:var(--ig09-img-bg,#000000)}
.ig09-frame [data-hoverslide-dots]{display:var(--ig09-dots,flex)}
.ig09-frame .hs-dot.is-active{background:var(--ig09-dot-color,#ffffff)}
.ig09-caption{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:var(--ig09-caption-align,flex-start);justify-content:flex-end;text-align:left;padding:2rem;gap:.4rem;background:linear-gradient(0deg,rgba(0,0,0,.55),transparent 60%);pointer-events:none}
.ig09-eyebrow{font-size:var(--eyebrow-font-size,.75rem);font-weight:800;letter-spacing:var(--eyebrow-letter-spacing,.16em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--ig09-eyebrow-color,var(--eyebrow-color-dark,#fcd703));margin:0}section[style*="--ig09-eyebrow-mode:light"] .ig09-eyebrow,section[style*="--ig09-eyebrow-mode: light"] .ig09-eyebrow{color:var(--ig09-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.ig09-heading{font-size:clamp(1.5rem,3.5vw,2.5rem);font-weight:900;letter-spacing:-.02em;line-height:1.1;color:var(--ig09-heading-color,#ffffff);margin:0}

/* §69 Google Map (GM-01,02,04,06,07) */

.gm-iframe{width:100%;height:100%;border:0;display:block}
.gm-overlay{position:absolute;z-index:3;box-shadow:0 8px 32px rgba(0,0,0,.18)}
@media(max-width:640px){.gm-overlay{position:static !important;width:100% !important;transform:none !important;border-radius:0 !important;box-shadow:none !important}}

/* GM-01 */
.gm01-wrap{position:relative}
.gm01-bg{position:relative;height:100%;overflow:hidden}
.gm01-card{left:2.5rem;top:50%;transform:translateY(-50%);width:320px;padding:2rem;background:var(--gm01-card-bg,#ffffff);border-radius:var(--gm01-radius,1rem)}
.gm01-card h3{margin:0 0 .25rem;font-size:1.2rem;font-weight:900;color:var(--gm01-heading-color,#111827)}
.gm01-card p{margin:0 0 1.25rem;font-size:.85rem;color:var(--gm01-sub-color,#6b7280);line-height:1.6}
.gm01-form{display:flex;flex-direction:column;gap:.75rem}
.gm-field{width:100%;padding:.65rem .85rem;border:1.5px solid #e5e7eb;border-radius:.5rem;font-size:.85rem;color:#111827;background:#fff;box-sizing:border-box;font-family:inherit}
.gm-field:disabled{opacity:.7;cursor:default}
.gm-submit{width:100%;padding:.7rem;background:var(--gm01-btn-bg,#111827);color:var(--gm01-btn-color,#ffffff);font-size:.88rem;font-weight:800;border:0;border-radius:.5rem;cursor:default}
@media(max-width:768px){.gm01-card{width:280px;left:1.5rem}}

/* GM-02 */
.gm02-wrap{position:relative}
.gm02-bg{position:relative;height:100%;overflow:hidden}
.gm02-card{right:2.5rem;top:50%;transform:translateY(-50%);width:300px;padding:0;overflow:hidden;background:var(--gm02-card-bg,#ffffff);border-radius:var(--gm02-radius,1rem)}
.gm02-accent{height:4px;background:linear-gradient(90deg,var(--gm02-accent-1,#fcd703),var(--gm02-accent-2,#f97316))}
.gm02-body{padding:1.75rem}
.gm02-eyebrow{margin:0 0 .75rem;font-size:var(--eyebrow-font-size,.68rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.12em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--gm02-eyebrow-color,var(--eyebrow-color-dark,#6b7280))}section[style*="--gm02-eyebrow-mode:light"] .gm02-eyebrow,section[style*="--gm02-eyebrow-mode: light"] .gm02-eyebrow{color:var(--gm02-eyebrow-color,var(--eyebrow-color-light,#6b7280))}
.gm02-body h3{margin:0 0 1.25rem;font-size:1.05rem;font-weight:900;color:var(--gm02-name-color,#111827)}
.gm02-rows{display:flex;flex-direction:column;gap:.9rem}
.gm02-row{display:flex;align-items:flex-start;gap:.75rem}
.gm02-icon{width:36px;height:36px;border-radius:50%;background:#fef9c3;color:#92400e;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.gm02-icon svg{width:16px;height:16px}
.gm02-row>div>div:first-child{font-size:.82rem;font-weight:600;color:var(--gm02-row-title-color,#111827)}
.gm02-row-sub{font-size:.78rem;color:var(--gm02-row-sub-color,#6b7280)}
.gm02-directions{display:flex;align-items:center;gap:.4rem;margin-top:1.25rem;padding-top:1rem;border-top:1px solid #e5e7eb;font-size:.78rem;font-weight:700;color:var(--gm02-directions-color,#111827);text-decoration:none}
.gm02-directions svg{width:14px;height:14px}
@media(max-width:768px){.gm02-card{width:280px;right:1.5rem}}

/* GM-04 */
.gm04-split{display:grid;grid-template-columns:380px 1fr;height:100%}
.gm04-panel{background:var(--gm04-panel-bg,#0f172a);padding:3rem;display:flex;flex-direction:column;justify-content:center}
.gm04-eyebrow{margin:0 0 1rem;font-size:var(--eyebrow-font-size,.68rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.14em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--gm04-eyebrow-color,var(--eyebrow-color-dark,rgba(255,255,255,.35)))}
.gm04-panel h2{margin:0 0 .75rem;font-size:1.9rem;font-weight:900;line-height:1.15;color:var(--gm04-heading-color,#ffffff)}
.gm04-sub{margin:0 0 2rem;font-size:.85rem;line-height:1.75;color:var(--gm04-sub-color,rgba(255,255,255,.55))}
.gm04-rows{display:flex;flex-direction:column;gap:1.1rem;margin-bottom:2rem}
.gm04-row{display:flex;align-items:flex-start;gap:.75rem}
.gm04-icon{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.1);color:var(--gm04-cta-bg,#fcd703);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.gm04-icon svg{width:16px;height:16px}
.gm04-row>div>div:first-child{font-size:.82rem;font-weight:700;color:var(--gm04-row-title-color,#ffffff)}
.gm04-row-sub{font-size:.78rem;color:var(--gm04-row-sub-color,rgba(255,255,255,.45))}
.gm04-cta{display:inline-flex;align-items:center;gap:.5rem;align-self:flex-start;padding:.7rem 1.5rem;background:var(--gm04-cta-bg,#fcd703);color:var(--gm04-cta-color,#111827);border-radius:.5rem;font-size:.82rem;font-weight:800;text-decoration:none}
.gm04-cta svg{width:14px;height:14px}
.gm04-map-pane{position:relative}
@media(max-width:768px){
  .gm04-split{grid-template-columns:1fr;grid-template-rows:auto auto;height:auto}
  .gm04-panel{padding:2rem 1.25rem}
  .gm04-map-pane{height:280px}
}

/* GM-06 */
.gm06-card{background:var(--gm06-card-bg,#ffffff);border-radius:var(--gm06-radius,1rem);overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.gm06-tabs{padding:1.25rem 1.5rem;border-bottom:1px solid #e5e7eb;display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}
.gm06-tab{padding:.4rem 1rem;border-radius:99px;border:1.5px solid #e5e7eb;background:#fff;color:var(--gm06-tab-color,#6b7280);font-size:.82rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .2s,color .2s,border-color .2s}
.gm06-tab.active{background:var(--gm06-tab-active-bg,#fcd703);border-color:var(--gm06-tab-active-bg,#fcd703);color:var(--gm06-tab-active-color,#111827)}
.gm06-body{display:grid;grid-template-columns:260px 1fr}
.gm06-sidebar{padding:1.75rem;border-right:1px solid #e5e7eb;display:flex;flex-direction:column;gap:.85rem}
.gm06-label{display:block;font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gm06-label-color,#6b7280);margin-bottom:.3rem}
.gm06-sidebar>div>div{font-size:.85rem;font-weight:700;color:var(--gm06-value-color,#111827)}
.gm06-sidebar>div:nth-child(2)>div{font-weight:400;line-height:1.6}
.gm06-directions{margin-top:auto;display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.65rem 1rem;background:var(--gm06-directions-bg,#111827);color:var(--gm06-directions-color,#ffffff);border-radius:.5rem;font-size:.78rem;font-weight:700;text-decoration:none}
.gm06-directions svg{width:13px;height:13px}
.gm06-map-pane{position:relative;height:var(--gm06-map-h,420px)}
@media(max-width:768px){
  .gm06-body{grid-template-columns:1fr}
  .gm06-sidebar{border-right:0;border-bottom:1px solid #e5e7eb}
  .gm06-map-pane{height:280px}
}

/* GM-07 */
.gm07-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--gm07-col-min,17.5rem),1fr));gap:var(--gm07-gap,1.5rem)}
.gm07-card{background:var(--gm07-card-bg,#ffffff);border-radius:var(--gm07-radius,.75rem);overflow:hidden;box-shadow:var(--gm07-shadow,0 1px 2px rgba(0,0,0,.06))}
section[style*="--gm07-dark-mode:1"] .gm07-card{background:#1e2535}
section[style*="--gm07-dark-mode:1"] .gm07-eyebrow{color:rgba(255,255,255,.35)}
section[style*="--gm07-dark-mode:1"] .gm07-body h4{color:#ffffff}
section[style*="--gm07-dark-mode:1"] .gm07-sub{color:rgba(255,255,255,.45)}
.gm07-map{position:relative;height:180px}
.gm07-body{padding:1.25rem}
.gm07-eyebrow{margin:0 0 .3rem;font-size:var(--eyebrow-font-size,.7rem);font-weight:700;letter-spacing:var(--eyebrow-letter-spacing,.1em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--gm07-eyebrow-color,var(--eyebrow-color-dark,#6b7280))}section[style*="--gm07-eyebrow-mode:light"] .gm07-eyebrow,section[style*="--gm07-eyebrow-mode: light"] .gm07-eyebrow{color:var(--gm07-eyebrow-color,var(--eyebrow-color-light,#6b7280))}
.gm07-body h4{margin:0 0 .2rem;font-size:.88rem;font-weight:700;color:var(--gm07-title-color,#111827)}
.gm07-sub{margin:0;font-size:.78rem;color:var(--gm07-sub-color,#6b7280)}
.gm07-body a{display:inline-flex;align-items:center;gap:.3rem;margin-top:.9rem;font-size:.75rem;font-weight:700;color:var(--gm07-link-color,#92400e);text-decoration:none}


/* ═══════════════════════════════════════════════════════════════════
   §56  TABS & COMPARISON — TT-01 … TT-06
   Shared engine: each .ttNN-wrap has a [data-tt-tabs] (empty, JS-built)
   button host and a [data-tt-panels] loop container. Tab buttons are
   generated at runtime from each panel's [data-tt-label] text — one
   loop, no second list to keep in sync. See initTabTable() in theme.js.
═══════════════════════════════════════════════════════════════════ */
.tt-wrap { padding:var(--sec-buf-t,var(--gbuf-v,4rem)) var(--sec-buf-r,var(--gbuf-h,0)) var(--sec-buf-b,var(--gbuf-v,4rem)) var(--sec-buf-l,var(--gbuf-h,0)); max-width:1100px; margin:0 auto; }
.tt-tab-btn { display:inline-flex; align-items:center; gap:.5rem; cursor:pointer; border:none; background:none; font-family:inherit; }
.tt01-img-wrap img,.tt02-img-wrap img,.tt03-img-wrap img,.tt05-img-wrap img { max-width:100%; }
[data-tt-label] { display:none; }
.tt-icon-src { display:none; }
.tt-tabs-scroller { display:flex; align-items:center; gap:.4rem; min-width:0; max-width:100%; }
.tt-tabs-scroller > [data-tt-tabs] { flex:1; min-width:0; }
.tt-scroll-arrow { display:none; flex-shrink:0; width:32px; height:32px; border-radius:50%; align-items:center; justify-content:center; background:var(--card-bg,#fff); border:1px solid var(--card-border,#e2e8f0); color:var(--text-strong,#0f172a); cursor:pointer; transition:background .2s; }
.tt-scroll-arrow:hover { background:var(--surface-color,#f8fafc); }
@media(max-width:640px){
  .tt-scroll-arrow { display:flex; }
}

/* ── TT-01 — Process Pills ───────────────────────────────────────── */
.tt01-tabs { display:flex; flex-wrap:nowrap; gap:.5rem; justify-content:safe center; overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none; }
.tt01-sec .tt-tabs-scroller { margin-bottom:2.5rem; }
.tt01-tabs::-webkit-scrollbar { display:none; }
.tt01-tabs .tt-tab-btn { flex-shrink:0; white-space:nowrap; }
.tt01-tabs .tt-tab-btn { padding:.65rem 1.5rem; border-radius:99px; background:var(--tt01-tab-bg,var(--card-bg,#fff)); color:var(--tt01-tab-fg,var(--text-muted)); border:1.5px solid var(--tt01-tab-border,var(--card-border,#e2e8f0)); font-size:var(--tt01-fs-sm,var(--fs-sm)); font-weight:700; transition:all .2s; }
.tt01-tabs .tt-tab-btn.active { background:var(--tt01-tab-active-bg,#0f172a); color:var(--tt01-tab-active-fg,#fff); border-color:var(--tt01-tab-active-bg,#0f172a); }
.tt01-panel { display:none; }
.tt01-panel.active { display:block; animation:ttFadeIn .35s ease both; }
.tt01-row { display:flex; flex-wrap:wrap; gap:2.5rem; align-items:center; }
.tt01-img-wrap { flex:1 1 320px; min-width:0; border-radius:var(--tt01-img-radius,var(--card-radius)); }
.tt01-img-wrap img { width:100%; height:auto; display:block; }
.tt01-content { flex:1 1 320px; min-width:0; }
.tt01-heading { font-size:1.4rem; font-weight:900; color:var(--tt01-heading-color,var(--text-strong)); margin:0 0 1rem; line-height:1.3; }
.tt01-desc { color:var(--tt01-desc-color,var(--text-muted)); line-height:1.75; margin:0 0 1.5rem; }
.tt01-steps { display:flex; flex-direction:column; gap:1rem; margin-bottom:1.5rem; }
.tt01-step { display:flex; gap:.9rem; align-items:flex-start; }
.tt01-step-num { width:32px; height:32px; border-radius:50%; background:var(--tt01-num-bg,#fef9c3); color:var(--tt01-num-fg,#92400e); display:flex; align-items:center; justify-content:center; font-weight:900; font-size:var(--tt01-fs-xs,var(--fs-xs)); flex-shrink:0; }
.tt01-step-title { font-weight:800; color:var(--tt01-heading-color,var(--text-strong)); margin-bottom:.15rem; }
.tt01-step-desc { color:var(--tt01-desc-color,var(--text-muted)); font-size:var(--tt01-fs-sm,var(--fs-sm)); }
.tt01-link { font-weight:800; color:var(--tt01-link-color,var(--primary-dark)); text-decoration:none; }

/* ── TT-02 — Premium Split (animated underline) ─────────────────── */
.tt02-tabs { position:relative; display:flex; flex-wrap:nowrap; gap:0; justify-content:safe center; overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none; border-bottom:2px solid var(--tt02-tabs-border,#e2e8f0); }
.tt02-sec .tt-tabs-scroller { margin-bottom:2.5rem; }
.tt02-tabs::-webkit-scrollbar { display:none; }
.tt02-tabs .tt-tab-btn { flex-shrink:0; white-space:nowrap; }
.tt02-tabs .tt-tab-btn { padding:.9rem 1.4rem; font-size:var(--tt02-fs-sm,var(--fs-sm)); font-weight:700; color:var(--tt02-tab-fg,var(--text-muted)); position:relative; }
.tt02-tabs .tt-tab-btn.active { color:var(--tt02-tab-active-fg,var(--text-strong)); }
.tt02-tabs .tt-tab-btn::after { content:''; position:absolute; left:0; right:0; bottom:-2px; height:2px; background:var(--tt02-accent,var(--primary-color)); transform:scaleX(0); transition:transform .25s ease; }
.tt02-tabs .tt-tab-btn.active::after { transform:scaleX(1); }
.tt02-panel { display:none; }
.tt02-panel.active { display:block; animation:ttFadeIn .35s ease both; }
.tt02-row { display:flex; flex-wrap:wrap; gap:0; border-radius:var(--tt02-radius,var(--card-radius)); overflow:hidden; box-shadow:var(--tt02-shadow,var(--card-shadow)); }
.tt02-img-wrap { flex:1 1 320px; min-width:0; min-height:380px; }
.tt02-img-wrap img { width:100%; height:100%; object-fit:cover; display:block; }
.tt02-content { flex:1 1 320px; min-width:0; display:flex; flex-direction:column; justify-content:center; gap:1rem; padding:2.5rem; background:var(--tt02-panel-bg,var(--card-bg,#fff)); }
.tt02-eyebrow { font-size:var(--eyebrow-font-size,var(--fs-xs,.7rem)); font-weight:700; letter-spacing:var(--eyebrow-letter-spacing,.12em); text-transform:var(--eyebrow-text-transform,uppercase); color:var(--tt02-accent,var(--eyebrow-color-dark,var(--primary-dark))); }
.tt02-heading { font-size:1.6rem; font-weight:900; color:var(--tt02-heading-color,var(--text-strong)); line-height:1.25; margin:0; }
.tt02-desc { color:var(--tt02-desc-color,var(--text-muted)); line-height:1.75; margin:0; }
.tt02-tags { display:flex; flex-wrap:wrap; gap:.5rem; }
.tt02-tag { padding:.35rem .85rem; background:var(--tt02-tag-bg,#fef9c3); border-radius:99px; font-size:var(--tt02-fs-xs,var(--fs-xs)); font-weight:700; color:var(--tt02-tag-fg,#92400e); }
.tt02-btn { display:inline-flex; align-items:center; gap:.5rem; background:var(--tt02-btn-bg,var(--primary-color)); color:var(--tt02-btn-fg,var(--text-strong)); text-decoration:none; padding:.75rem 1.75rem; border-radius:99px; font-weight:800; font-size:var(--tt02-fs-sm,var(--fs-sm)); width:max-content; transition:background .2s; }
.tt02-btn:hover { background:var(--tt02-btn-bg-hover,var(--primary-dark)); }

/* ── TT-03 — Vertical Sidebar (animated bar) ─────────────────────── */
.tt03-row { display:flex; flex-wrap:wrap; gap:2rem; }
.tt03-tabs { position:relative; min-width:220px; flex-shrink:0; display:flex; flex-direction:column; gap:.25rem; border-right:1px solid var(--tt03-rail-border,#f1f5f9); padding-right:1.5rem; }
.tt03-tabs .tt-tab-btn { padding:.7rem .5rem; font-size:var(--tt03-fs-sm,var(--fs-sm)); font-weight:700; color:var(--tt03-tab-fg,var(--text-muted)); text-align:left; border-radius:.5rem; transition:color .2s,background .2s; }
.tt03-tabs .tt-tab-btn svg { width:18px; height:18px; flex-shrink:0; }
.tt03-tabs .tt-tab-btn.active { color:var(--tt03-tab-active-fg,var(--text-strong)); background:var(--tt03-tab-active-bg,#fefce8); }
.tt03-bar { position:absolute; right:-1.5px; width:2px; background:var(--tt03-accent,var(--primary-color)); transition:top .25s ease,height .25s ease; }
.tt03-content { flex:1; min-width:280px; }
.tt03-panel { display:none; }
.tt03-panel.active { display:block; animation:ttFadeIn .35s ease both; }
.tt03-inner { display:flex; flex-wrap:wrap; gap:2rem; align-items:center; }
.tt03-img-wrap { flex:1 1 260px; min-width:0; border-radius:var(--tt03-img-radius,var(--card-radius)); min-height:260px; }
.tt03-img-wrap img { width:100%; height:100%; object-fit:cover; display:block; }
.tt03-body { flex:1 1 260px; min-width:0; }
.tt03-heading { font-size:1.2rem; font-weight:900; color:var(--tt03-heading-color,var(--text-strong)); margin:0 0 .75rem; }
.tt03-desc { color:var(--tt03-desc-color,var(--text-muted)); line-height:1.75; margin:0 0 1rem; }
.tt03-list { display:flex; flex-direction:column; gap:.6rem; }
.tt03-list-item { display:flex; align-items:center; gap:.6rem; font-size:var(--tt03-fs-sm,var(--fs-sm)); color:var(--tt03-desc-color,var(--text-muted)); }
.tt03-list-item::before { content:''; width:6px; height:6px; border-radius:50%; background:var(--tt03-accent,var(--primary-color)); flex-shrink:0; }

/* ── TT-04 — Boxed Icon Grid ──────────────────────────────────────── */
.tt04-tabs { display:flex; flex-wrap:nowrap; gap:1rem; justify-content:safe center; overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none; }
.tt04-sec .tt-tabs-scroller { margin-bottom:2.5rem; }
.tt04-tabs::-webkit-scrollbar { display:none; }
.tt04-tabs .tt-tab-btn { flex-shrink:0; white-space:nowrap; }
.tt04-tabs .tt-tab-btn { flex-direction:column; padding:1rem 1.5rem; border-radius:var(--tt04-tab-radius,var(--card-radius)); background:var(--tt04-tab-bg,var(--card-bg,#fff)); border:1.5px solid var(--tt04-tab-border,var(--card-border,#e2e8f0)); color:var(--tt04-tab-fg,var(--text-muted)); font-size:var(--tt04-fs-sm,var(--fs-sm)); font-weight:700; transition:all .2s; }
.tt04-tabs .tt-tab-btn svg { width:22px; height:22px; }
.tt04-tabs .tt-tab-btn.active { background:var(--tt04-tab-active-bg,var(--primary-color)); color:var(--tt04-tab-active-fg,var(--text-strong)); border-color:var(--tt04-tab-active-bg,var(--primary-color)); }
.tt04-panel { display:none; }
.tt04-panel.active { display:block; animation:ttFadeIn .35s ease both; }
.tt04-grid { display:grid; grid-template-columns:repeat(var(--tt04-cols-d,3),minmax(0,1fr)); gap:1.25rem; }
.tt04-card { border-radius:var(--tt04-card-radius,var(--card-radius)); background:var(--tt04-card-bg,var(--card-bg,#fff)); box-shadow:var(--tt04-card-shadow,var(--card-shadow)); transition:transform .2s,box-shadow .2s; }
.tt04-card:hover { transform:translateY(-4px); box-shadow:var(--tt04-card-shadow-hover,var(--card-shadow-hover)); }
.tt04-card img { width:100%; height:auto; display:block; }
.tt04-card-body { padding:1.1rem; }
.tt04-card-tag { font-size:var(--tt04-fs-xs,var(--fs-xs)); font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--tt04-accent,var(--primary-dark)); margin-bottom:.3rem; }
.tt04-card-title { font-weight:800; color:var(--tt04-heading-color,var(--text-strong)); margin-bottom:.3rem; }
.tt04-card-meta { font-size:var(--tt04-fs-sm,var(--fs-sm)); color:var(--tt04-desc-color,var(--text-muted)); }

/* ── TT-05 — Stat Spotlight (bottom tabs) ────────────────────────── */
.tt05-panel { display:none; }
.tt05-panel.active { display:block; animation:ttFadeIn .35s ease both; }
.tt05-row { display:flex; flex-wrap:wrap; gap:3.5rem; align-items:center; }
.tt05-img-col { flex:1 1 300px; min-width:0; position:relative; }
.tt05-img-wrap { border-radius:var(--tt05-img-radius,var(--card-radius)); }
.tt05-img-wrap img { width:100%; height:auto; display:block; }
.tt05-stat { position:absolute; bottom:1.25rem; left:1.25rem; background:var(--tt05-stat-bg,#ffffff); border-radius:var(--tt05-radius,var(--card-radius)); padding:1rem 1.4rem; box-shadow:0 8px 24px rgba(15,23,42,.15); }
.tt05-stat-num { font-size:2rem; font-weight:900; color:var(--tt05-heading-color,var(--text-strong)); line-height:1; }
.tt05-stat-label { font-size:var(--tt05-fs-sm,var(--fs-sm)); font-weight:600; color:var(--tt05-desc-color,var(--text-muted)); line-height:1.3; }
.tt05-content { flex:1 1 280px; min-width:0; }
.tt05-kicker { display:flex; align-items:center; gap:.75rem; margin-bottom:.75rem; }
.tt05-kicker-line { width:32px; height:2px; background:var(--tt05-accent,#6366f1); }
.tt05-kicker-text { font-size:var(--tt05-fs-sm,var(--fs-sm)); font-weight:600; color:var(--tt05-desc-color,var(--text-muted)); }
.tt05-heading { font-size:2rem; font-weight:900; color:var(--tt05-heading-color,var(--text-strong)); line-height:1.2; margin:0 0 1.25rem; }
.tt05-desc { color:var(--tt05-desc-color,var(--text-muted)); line-height:1.75; margin:0 0 2rem; }
.tt05-btn { display:inline-flex; align-items:center; gap:.6rem; text-decoration:none; font-weight:800; font-size:var(--tt05-fs-sm,var(--fs-sm)); color:var(--tt05-btn-fg,var(--text-strong)); letter-spacing:.04em; }
.tt05-btn .tt05-arrow { width:32px; height:32px; border-radius:50%; background:var(--tt05-accent,#6366f1); color:#fff; display:flex; align-items:center; justify-content:center; transition:transform .2s; }
.tt05-btn:hover .tt05-arrow { transform:translateX(4px); }
.tt05-tabs { display:flex; flex-wrap:nowrap; gap:0; justify-content:safe center; overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none; padding-top:1.5rem; }
.tt05-sec .tt-tabs-scroller { margin-top:3rem; border-top:2px solid var(--tt05-tabs-border,rgba(15,23,42,.08)); }
.tt05-tabs::-webkit-scrollbar { display:none; }
.tt05-tabs .tt-tab-btn { flex-shrink:0; white-space:nowrap; }
.tt05-tabs .tt-tab-btn { padding:.6rem 1.4rem; font-size:var(--tt05-fs-sm,var(--fs-sm)); font-weight:700; color:var(--tt05-tab-fg,var(--text-muted)); border-bottom:2px solid transparent; }
.tt05-tabs .tt-tab-btn.active { color:var(--tt05-tab-active-fg,var(--text-strong)); border-bottom-color:var(--tt05-accent,#6366f1); }

/* ── TT-06 — Tabbed Comparison Table ──────────────────────────────── */
.tt06-tabs { display:flex; flex-wrap:nowrap; gap:.25rem; padding:.3rem; background:var(--tt06-seg-bg,#f1f5f9); border-radius:99px; overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none; max-width:100%; }
.tt06-tabs-wrap { margin-bottom:2rem; }
.tt06-tabs::-webkit-scrollbar { display:none; }
.tt06-tabs .tt-tab-btn { flex-shrink:0; white-space:nowrap; }
.tt06-tabs-wrap { display:flex; justify-content:center; }
.tt06-tabs .tt-tab-btn { padding:.55rem 1.3rem; border-radius:99px; font-size:var(--tt06-fs-sm,var(--fs-sm)); font-weight:700; color:var(--tt06-tab-fg,var(--text-muted)); transition:all .2s; }
.tt06-tabs .tt-tab-btn.active { background:var(--tt06-tab-active-bg,var(--card-bg,#fff)); color:var(--tt06-tab-active-fg,var(--text-strong)); box-shadow:0 2px 8px rgba(15,23,42,.1); }
.tt06-panel { display:none; }
.tt06-panel.active { display:block; animation:ttFadeIn .35s ease both; }
.tt06-table-wrap { overflow-x:auto; }
.tt06-table { width:100%; border-collapse:collapse; font-size:var(--tt06-fs-sm,var(--fs-sm)); }
.tt06-table th { padding:.9rem 1.1rem; font-weight:800; font-size:var(--tt06-fs-xs,var(--fs-xs)); letter-spacing:.06em; text-transform:uppercase; color:var(--tt06-th-fg,var(--text-muted)); border-bottom:2px solid var(--tt06-border,#e2e8f0); text-align:left; }
.tt06-table th.hl { color:var(--tt06-accent,var(--primary-dark)); }
.tt06-table td { padding:.8rem 1.1rem; border-bottom:1px solid var(--tt06-row-border,#f1f5f9); color:var(--tt06-td-fg,var(--text-strong)); vertical-align:middle; }
.tt06-table td.hl { background:var(--tt06-hl-bg,#fffbeb); }
.tt06-table tr:hover td { background:var(--tt06-row-hover,#fafafa); }
.tt06-tick-y { color:var(--tt06-tick-y,#15803d); font-weight:800; }
.tt06-tick-n { color:var(--tt06-tick-n,#cbd5e1); }
.tt06-feat-col { font-weight:600; color:var(--tt06-desc-color,var(--text-muted)); }

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

/* ── Responsive ───────────────────────────────────────────────────── */
@media(max-width:900px){
  .tt04-grid { grid-template-columns:repeat(var(--tt04-cols-t,2),minmax(0,1fr)); }
}
@media(max-width:768px){
  .tt01-row,.tt02-row,.tt03-inner,.tt05-row { flex-direction:column; align-items:stretch; }
  .tt03-row { flex-direction:column; }
  .tt03-tabs { flex-direction:row; flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none; border-right:none; border-bottom:1px solid var(--tt03-rail-border,#f1f5f9); padding-right:0; padding-bottom:1rem; }
  .tt03-tabs::-webkit-scrollbar { display:none; }
  .tt03-tabs .tt-tab-btn { flex-shrink:0; white-space:nowrap; }
  .tt03-row .tt-tabs-scroller { align-items:flex-start; }
  .tt03-bar { display:none; }
  .tt05-stat { position:static; margin-top:-2rem; margin-left:1rem; width:fit-content; }
}
@media(max-width:640px){
  .tt04-grid { grid-template-columns:repeat(var(--tt04-cols-m,1),minmax(0,1fr)); }
  .tt02-tabs,.tt04-tabs,.tt06-tabs { gap:.35rem; }
  .tt01-tabs .tt-tab-btn,.tt02-tabs .tt-tab-btn { padding:.55rem 1.1rem; font-size:var(--fs-xs,.8rem); }
  .ev14-tabs { gap:.4rem; }
  .ev14-tabs .tt-tab-btn { padding:.5rem 1rem; font-size:var(--ev14-fs-xs,var(--fs-xs)); }
}


/* ── §AJ — TS1 Split Spotlight Slider ────────────────────────────────────── */
.ts1-slide{border-radius:var(--ts01-card-radius,1.25rem);overflow:hidden;box-shadow:var(--ts01-card-shadow,0 20px 60px rgba(0,0,0,.3));border:var(--ts01-card-border-w,0px) solid var(--ts01-card-border-c,transparent);display:grid;grid-template-columns:280px 1fr}
.ts1-panel-left{background:var(--ts1-panel-bg,#111827);padding:2.5rem 2rem;display:flex;flex-direction:column;justify-content:space-between;position:relative}
.ts1-avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;border:3px solid var(--ts1-avatar-accent,var(--primary-color,#c96c3a));margin-bottom:1rem;display:block}
.ts1-name{font-weight:700;font-size:1.1rem;color:var(--ts1-panel-fg,#ffffff);margin:0 0 .25rem}
.ts1-role{color:var(--ts1-panel-fg,#ffffff);margin:0 0 1rem}
.ts1-stars{display:flex;gap:3px}
.ts1-stars svg{width:14px;height:14px;fill:var(--ts1-avatar-accent,var(--primary-color,#c96c3a))}
.ts1-num{position:absolute;bottom:1.5rem;left:2rem;font-size:.8rem;font-weight:800;letter-spacing:.1em;color:color-mix(in srgb,var(--ts1-panel-fg,#ffffff) 28%,transparent)}
.ts1-panel-right{background:var(--ts1-panel-r-bg,var(--card-bg,#fff));padding:3rem;display:flex;flex-direction:column;justify-content:center}
.ts1-qmark{font-size:4rem;font-family:Georgia,serif;line-height:.5;color:var(--ts1-avatar-accent,var(--primary-color,#c96c3a));margin-bottom:1rem;display:block}
.ts1-quote{line-height:1.75;color:var(--ts1-quote-color,var(--ts1-panel-r-fg,var(--text-color)));margin:0 0 1.5rem}
.ts1-ctr{font-weight:700;color:var(--text-muted);font-variant-numeric:tabular-nums}
.ts1-bar-track{height:3px;background:var(--card-border,#e5e7eb);border-radius:99px;overflow:hidden;margin-top:1.5rem}
.ts1-bar-fill{height:100%;background:var(--ts1-bar-color,var(--primary-color,#c96c3a));animation:ts1BarFill var(--ts1-autoplay,5000ms) linear infinite}
@keyframes ts1BarFill{from{width:0}to{width:100%}}
@media(max-width:700px){.ts1-slide{grid-template-columns:1fr}.ts1-panel-left{flex-direction:row;align-items:center;gap:1rem;padding:1.5rem}.ts1-avatar{margin-bottom:0}.ts1-num{display:none}.ts1-panel-right{padding:2rem 1.5rem}}

/* ── §AK — TS2 Image-Top Peek Cards ──────────────────────────────────────── */
.ts2-card{border-radius:1.1rem;overflow:hidden;border:var(--ts02-card-border-w,1px) solid var(--ts02-card-border-c,var(--card-border,#e2e8f0));background:var(--ts02-card-bg,var(--card-bg,#fff));height:100%;display:flex;flex-direction:column;box-shadow:var(--ts02-card-shadow,var(--card-shadow,0 2px 10px rgba(0,0,0,.05)))}
.ts2-img-wrap{height:190px;overflow:hidden;position:relative;flex-shrink:0}
.ts2-img-wrap img{width:100%;height:100%;object-fit:cover;display:block}
.ts2-badge{position:absolute;top:.85rem;left:.85rem;background:var(--card-bg,#fff);border-radius:.5rem;padding:.3rem .75rem;font-size:var(--ts02-fs-xs,var(--fs-xs));font-weight:700;color:var(--ts2-accent,var(--primary-color,#c96c3a));display:flex;align-items:center;gap:.3rem}
.ts2-badge svg{width:9px;height:9px;fill:var(--ts2-accent,var(--primary-color,#c96c3a));flex-shrink:0}
.ts2-body{padding:1.4rem;flex:1;display:flex;flex-direction:column;justify-content:space-between}
.ts2-stars{display:flex;gap:2px;margin-bottom:.6rem}
.ts2-stars svg{width:13px;height:13px;fill:var(--ts2-star-color,#fbbf24)}
.ts2-track{align-items:stretch}
.ts2-title{font-weight:700;color:var(--ts2-fg,var(--text-color));margin:0 0 .5rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ts2-text{color:color-mix(in srgb,var(--ts2-fg,var(--text-color)) 65%,transparent);line-height:1.6;margin:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ts2-foot{display:flex;align-items:center;justify-content:space-between;margin-top:1.2rem;padding-top:1rem;border-top:1px solid var(--card-border,#e5e7eb)}
.ts2-user{display:flex;align-items:center;gap:.6rem;min-width:0}
.ts2-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;flex-shrink:0}
.ts2-uname{font-weight:600;font-size:var(--ts02-fs-sm,var(--fs-sm));color:var(--ts2-fg,var(--text-color));margin:0}
.ts2-uloc{color:color-mix(in srgb,var(--ts2-fg,var(--text-color)) 65%,transparent);margin:0}

/* ── §AL — TS3 Stat Row + Centered Quote ─────────────────────────────────── */
.ts3-stat-row{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--ts3-border,var(--card-border,#e2e8f0));border-radius:1rem;overflow:hidden;margin-bottom:clamp(2.5rem,5vw,4.5rem)}
.ts3-stat-cell{padding:2.2rem 1rem;text-align:center;border-right:1px solid var(--ts3-border,var(--card-border,#e2e8f0))}
.ts3-stat-cell:last-child{border-right:none}
.ts3-stat-num{font-size:clamp(2rem,5vw,3rem);font-weight:900;color:var(--text-strong,var(--text-color));margin:0 0 .4rem;font-variant-numeric:tabular-nums}
.ts3-stat-num span{color:var(--ts3-accent,var(--primary-color,#c96c3a))}
.ts3-stat-label{font-size:var(--ts03-fs-xs,var(--fs-xs));font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted)}
.ts3-qmark{width:44px;height:44px;margin:0 auto 1.5rem;display:block}
.ts3-quote{font-size:clamp(1.2rem,2.2vw,1.6rem);font-style:italic;line-height:1.7;color:var(--ts3-quote-color,var(--ts3-fg,var(--text-color)));font-family:Georgia,serif;margin:0 0 2rem;text-align:center}
.ts3-avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;margin:0 auto .75rem;display:block;border:3px solid var(--ts3-accent,var(--primary-color,#c96c3a))}
.ts3-name{font-weight:700;color:var(--ts3-fg,var(--text-color));margin:0;text-align:center}
.ts3-role{color:color-mix(in srgb,var(--ts3-fg,var(--text-color)) 65%,transparent);text-align:center;margin:0}
.ts3-stars{display:flex;justify-content:center;gap:2px;margin-top:.5rem}
.ts3-stars svg{width:14px;height:14px;fill:var(--ts3-star-color,#fbbf24)}
@media(max-width:640px){.ts3-stat-row{grid-template-columns:1fr}.ts3-stat-cell{border-right:none;border-bottom:1px solid var(--card-border,#e2e8f0)}.ts3-stat-cell:last-child{border-bottom:none}}

/* ── §AM — TS4 Pill Row Slider ────────────────────────────────────────────── */
.ts4-pill{display:flex!important;align-items:center!important;background:var(--ts4-pill-bg,#ffffff);border-radius:99px;box-shadow:var(--ts04-card-shadow,0 4px 20px rgba(0,0,0,.06));padding:1.25rem 1.75rem}
.ts4-pill-slider{flex:1;min-width:0}
.ts4-slide-row{display:flex!important;align-items:center!important;width:100%}
.ts4-avatar-wrap{position:relative;flex-shrink:0;margin-right:1.5rem}
.ts4-avatar{width:64px;height:64px;border-radius:50%;object-fit:cover;display:block}
.ts4-qbadge{position:absolute;bottom:-4px;right:-4px;width:24px;height:24px;border-radius:50%;background:var(--ts4-accent,var(--primary-color,#c96c3a));display:flex;align-items:center;justify-content:center}
.ts4-qbadge svg{width:9px;height:8px;fill:#fff}
.ts4-quote{flex:1;min-width:0;line-height:1.6;color:var(--ts4-fg,var(--text-muted));margin:0}
.ts4-div{width:1px;height:2.5rem;background:var(--card-border,#e5e7eb);flex-shrink:0;margin:0 1.5rem}
.ts4-name-wrap{flex-shrink:0;min-width:9rem}
.ts4-name{font-weight:700;color:var(--ts4-name-fg,var(--text-color));margin:0}
.ts4-role{color:color-mix(in srgb,var(--ts4-fg,var(--text-muted)) 80%,transparent);margin:.15rem 0 0}
.ts4-nav-div{width:1px;height:2.5rem;background:var(--card-border,#e5e7eb);flex-shrink:0;margin:0 1.25rem}
.ts4-nav-btns{display:flex;gap:.5rem;flex-shrink:0}
@media(max-width:900px){.ts4-pill{flex-direction:column!important;align-items:stretch!important;border-radius:1.5rem;padding:1.5rem}.ts4-pill-slider{width:100%}.ts4-slide-row{flex-direction:column;text-align:center}.ts4-avatar-wrap{margin:0 0 1rem}.ts4-div{display:none}.ts4-name-wrap{min-width:0;margin-top:.5rem}.ts4-nav-div{display:none}.ts4-nav-btns{margin-top:1.25rem;justify-content:center}}

/* ── §AN — TS5 Social Post Grid ───────────────────────────────────────────── */
.ts5-cols{display:grid;grid-template-columns:repeat(1,1fr);gap:1.25rem;align-items:start}
@media(min-width:640px){.ts5-cols{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.ts5-cols{grid-template-columns:repeat(3,1fr)}}
.ts5-card{background:var(--ts05-card-bg,var(--card-bg,#fff));border:var(--ts05-card-border-w,1px) solid var(--ts05-card-border-c,var(--card-border,#e5e7eb));border-radius:var(--ts05-card-radius,1rem);padding:1.4rem;box-shadow:var(--ts05-card-shadow,none)}
.ts5-head{display:flex;align-items:center;gap:.7rem;margin-bottom:.9rem}
.ts5-avatar{width:38px;height:38px;border-radius:50%;object-fit:cover;flex-shrink:0}
.ts5-name-row{display:flex;align-items:center;gap:.3rem;min-width:0}
.ts5-name{font-weight:700;font-size:var(--ts05-fs-sm,var(--fs-sm));color:var(--ts5-fg,var(--text-color));margin:0}
.ts5-verified{width:14px;height:14px;flex-shrink:0;color:var(--ts5-verified-color,#3b82f6)}
.ts5-handle{color:color-mix(in srgb,var(--ts5-fg,var(--text-color)) 65%,transparent);margin:0}
.ts5-text{color:var(--ts5-fg,var(--text-color));line-height:1.65;margin:0 0 .75rem}
.ts5-meta{display:flex;align-items:center;gap:.5rem;color:var(--text-muted);font-size:var(--ts05-fs-xs,var(--fs-xs))}
.ts5-meta svg{width:13px;height:13px;fill:var(--ts5-star-color,#fbbf24)}

/* ── §AO — TS6 Speech Bubble Slider ───────────────────────────────────────── */
.ts6-slide{padding-bottom:.5rem;height:auto}
.ts6-bubble{position:relative;background:var(--ts06-card-bg,#ffffff);border:var(--ts06-card-border-w,0px) solid var(--ts06-card-border-c,transparent);border-radius:var(--ts06-card-radius,1rem);padding:1.5rem;box-shadow:var(--ts06-card-shadow,0 4px 20px rgba(0,0,0,.05));margin-bottom:2rem}
.ts6-bubble-text{color:var(--ts6-fg,var(--text-muted));line-height:1.7;margin:0}
.ts6-bubble-tail{position:absolute;bottom:-13px;left:2.25rem;width:22px;height:22px;background:var(--ts06-card-bg,#ffffff);clip-path:polygon(0 0,100% 0,0 100%)}
.ts6-person{display:flex;align-items:center;gap:.9rem}
.ts6-avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;flex-shrink:0}
.ts6-name{font-weight:700;color:var(--ts6-name-fg,var(--text-color));margin:0}
.ts6-role{color:var(--text-muted);margin:.1rem 0 0}

/* ── §AP — TS7 Marquee Wall ──────────────────────────────────────────────── */
.ts7-row+.ts7-row{margin-top:1.25rem}
.ts7-card{flex-shrink:0;width:320px;background:var(--ts07-card-bg,var(--card-bg,#fff));border:var(--ts07-card-border-w,1px) solid var(--ts07-card-border-c,var(--card-border,#e5e7eb));border-radius:var(--ts07-card-radius,1rem);padding:1.35rem;margin-right:1.25rem;box-shadow:var(--ts07-card-shadow,none)}
.ts7-stars{display:flex;gap:2px;margin-bottom:.6rem}
.ts7-stars svg{width:13px;height:13px;fill:var(--ts7-star-color,#fbbf24)}
.ts7-text{color:var(--ts7-fg,var(--text-color));line-height:1.6;margin:0 0 .9rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ts7-foot{display:flex;align-items:center;gap:.65rem}
.ts7-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;flex-shrink:0}
.ts7-name{font-weight:700;font-size:var(--ts07-fs-sm,var(--fs-sm));color:var(--ts7-fg,var(--text-color));margin:0}
.ts7-role{color:color-mix(in srgb,var(--ts7-fg,var(--text-color)) 65%,transparent);margin:0}

/* ── §AQ — TS8 Click-to-Reveal Tile Grid (opens shared bio modal) ────────── */
.ts8-grid{display:grid;grid-template-columns:repeat(var(--ts08-cols-4,4),1fr);gap:var(--ts08-gap,1.25rem)}
@media(max-width:1023px){.ts8-grid{grid-template-columns:repeat(var(--ts08-cols-3,3),1fr)}}
@media(max-width:599px){.ts8-grid{grid-template-columns:repeat(var(--ts08-cols-0,2),1fr)}}
.ts8-tile{position:relative;aspect-ratio:3/4;border-radius:var(--ts08-card-radius,1rem);overflow:hidden;cursor:pointer;border:var(--ts08-card-border-w,0px) solid var(--ts08-card-border-c,transparent);box-shadow:var(--ts08-card-shadow,none)}
.ts8-tile-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.ts8-tile:hover .ts8-tile-img{transform:scale(1.06)}
.ts8-tile-overlay{position:absolute;left:0;right:0;bottom:0;padding:1rem;background:linear-gradient(to top,rgba(0,0,0,.78) 0%,transparent 100%)}
.ts8-tile-name{color:#fff;font-weight:700;margin:0}
.ts8-tile-role{color:rgba(255,255,255,.75);margin:0}

/* ── §AR — TS9 Avatar Portrait Carousel ───────────────────────────────── */
.ts9-track{padding-top:calc(var(--ts09-avatar-size,72px)/2 + .5rem)}
.ts9-card{position:relative;text-align:center;padding:2.75rem 1.5rem 1.75rem;height:100%;box-sizing:border-box;border-radius:var(--ts09-card-radius,.75rem);background:var(--ts09-card-bg,#eefaf0);border-width:var(--ts09-card-border-w,1px);border-style:var(--ts09-card-border-style,dashed);border-color:var(--ts09-card-border-c,#9cd3a8)}
.ts9-avatar{position:absolute;top:0;left:50%;transform:translate(-50%,-50%);width:var(--ts09-avatar-size,72px);height:var(--ts09-avatar-size,72px);border-radius:50%;object-fit:cover;box-shadow:0 0 0 4px var(--ts09-avatar-ring,#ffffff),0 0 0 5px var(--ts09-avatar-border-c,#d1d5db)}
.ts9-name{font-weight:700;font-size:var(--ts9-name-fs,1.05rem);color:var(--ts9-name-color,var(--text-strong,#111827));margin:0 0 .15rem}
.ts9-role{font-weight:var(--ts9-role-weight,700);color:var(--ts9-role-color,var(--text-muted,#6b7280));margin:0 0 1rem}
.ts9-quote{line-height:1.7;color:var(--ts9-quote-color,var(--text-color,#374151));margin:0}
.ts8-tile-stars{display:flex;gap:2px;margin-top:.4rem}
.ts8-tile-stars svg{width:11px;height:11px;fill:var(--ts8-star-color,#fbbf24)}

/* ── §AR — BLG-01 Blog List Classic wrapper (max-width/bg via Content Author) ──
   "Border" in that panel is NOT an outer box around the whole component — it's
   the divider rule between left-rail filter groups (.v-blgx__rail > .v-blgx-blk),
   which normally hardcodes var(--border-color). Scoped under .blg-list-wrap so
   every other use of that divider rule elsewhere keeps the theme default. */
.blg-list-wrap{max-width:var(--blg01-mw,none);margin-inline:auto;background:var(--blg01-bg,transparent)}
.blg-list-wrap .v-blgx__rail>.v-blgx-blk:not(:first-child),
.blg-list-wrap .v-blgx__rail>.v-blgx-clear:not(:first-child){border-top-color:var(--blg01-bc,var(--border-color));border-top-width:var(--blg01-bw,1px)}
.blg-list-wrap .v-blgx-tag{background:var(--blg01-tag-bg,var(--bg-color));color:var(--blg01-tag-text,var(--text-color))}
.blg-list-wrap .v-blgx-tag:hover{background:var(--blg01-tag-bg-hover,var(--bg-color));color:var(--blg01-tag-text-hover,var(--primary-color));border-color:var(--blg01-tag-text-hover,var(--primary-color))}


/* ── SB-01 Sales Banner — Full-Bleed Clickable ── */
/* MUST be `height`, not `min-height` — a percentage height on a child
   (.sb01-img's height:100%, below) only resolves against an ancestor
   whose *height* is explicitly specified (CSS2.1 §10.5); min-height never
   counts for this, even once layout resolves it to a real pixel value.
   That's not theoretical — it's exactly what min-height did here: the
   frame measured a real 320px in DevTools, yet .sb01-img stayed at its
   own natural ~121px because the spec still treated the frame as having
   'auto' height. Default is the literal keyword "auto" (--sb01-min-h's own
   doc comment in sp-section-library.html) rather than a bare 0, since
   height:auto is what correctly falls into that same 'auto' spec branch —
   img keeps its exact natural proportional height, identical to before
   this var existed. Only when an admin sets an actual floor does the
   frame's specified height become the definite 320px that value resolves
   to, and only then does .sb01-img's height:100% mean something — filling
   that floor via object-fit:cover (cropping, not letterboxing: the point
   of a floor this small relative to a ~2.7:1 banner image is for the
   image to visibly fill the banner, not sit centered with empty space
   around it). */
.sb01-frame{position:relative;overflow:hidden;border-radius:var(--sb01-radius,0rem);max-width:var(--sb01-mw,none);margin:0 auto;height:var(--sb01-min-h,auto)}
.sb01-img{position:relative;z-index:0;width:100%;height:100%;object-fit:cover;background:var(--sb01-img-bg,#000000);display:block;transition:transform .5s ease}
.sb01-frame:hover .sb01-img{transform:scale(1.03)}
.sb01-overlay{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:var(--sb01-overlay-align,center);justify-content:center;text-align:center;padding:1.5rem;gap:.5rem;background:linear-gradient(0deg,color-mix(in srgb,var(--sb01-tint-color,#000000) var(--sb01-tint-op,45%),transparent),transparent 55%)}
.sb01-link{position:absolute;inset:0;z-index:2;display:block;color:inherit;text-decoration:none}
.sb01-eyebrow{font-size:var(--eyebrow-font-size,.75rem);font-weight:800;letter-spacing:var(--eyebrow-letter-spacing,.18em);text-transform:var(--eyebrow-text-transform,uppercase);color:var(--sb01-eyebrow-color,var(--eyebrow-color-dark,#fcd703));margin:0}section[style*="--sb01-eyebrow-mode:light"] .sb01-eyebrow,section[style*="--sb01-eyebrow-mode: light"] .sb01-eyebrow{color:var(--sb01-eyebrow-color,var(--eyebrow-color-light,#fcd703))}
.sb01-heading{font-size:var(--sb01-heading-fs,clamp(2rem,5.5vw,4rem));font-weight:900;letter-spacing:-.03em;line-height:1.05;color:var(--sb01-heading-color,#ffffff);margin:0}
.sb01-cta{display:inline-flex;align-items:center;gap:.4rem;margin-top:.5rem;padding:.65rem 1.5rem;border-radius:999px;font-weight:700;font-size:.9rem;background:var(--sb01-cta-bg,#fcd703);color:var(--sb01-cta-color,#111827)}

/* ── SB-02 Sales Banner — Split Text + Image ── */
.sb02-grid{display:grid;grid-template-columns:1fr;gap:2.5rem;align-items:center}
@media(min-width:768px){.sb02-grid{grid-template-columns:1fr 1fr}}
.sb02-eyebrow{font-size:var(--eyebrow-font-size,.75rem);font-weight:800;letter-spacing:var(--eyebrow-letter-spacing,.16em);text-transform:var(--eyebrow-text-transform,uppercase);margin:0 0 .5rem}
.sb02-heading{font-weight:900;letter-spacing:-.02em;line-height:1.1;margin:0 0 .75rem}
.sb02-desc{font-size:var(--sb02-fs-body,var(--fs-body));line-height:1.7;margin:0 0 1.5rem;max-width:32rem}
.sb02-btn{display:inline-flex;align-items:center;padding:.8rem 2rem;border-radius:8px;font-weight:700;font-size:.9rem;text-decoration:none}
.sb02-img-wrap{width:100%}
.sb02-img{width:100%;height:auto;display:block;object-fit:cover}

/* ── SB-03 Sales Banner — Full-Screen Takeover ── */
.sb03-eyebrow{font-size:var(--eyebrow-font-size,.8rem);font-weight:800;letter-spacing:var(--eyebrow-letter-spacing,.22em);text-transform:var(--eyebrow-text-transform,uppercase);margin:0 0 1rem}
.sb03-heading{font-weight:900;letter-spacing:-.04em;line-height:.95;margin:0 0 1rem;text-wrap:balance}
.sb03-desc{font-size:1.05rem;line-height:1.7;margin:0 0 2rem}
.sb03-btn{display:inline-flex;align-items:center;padding:.9rem 2.5rem;border-radius:999px;font-weight:800;font-size:.95rem;letter-spacing:.02em;text-decoration:none}

/* ── SB-04 Sales Banner — Dual Pair ── */
.sb04-grid{display:grid;grid-template-columns:repeat(var(--sb04-cols-mobile,1),1fr)}
@media(min-width:768px){.sb04-grid{grid-template-columns:repeat(var(--sb04-cols-desktop,2),1fr)}}
.sb04-item{position:relative;overflow:hidden;border-radius:var(--sb04-radius,.75rem)}
.sb04-img{width:100%;height:var(--sb04-img-h,320px);object-fit:cover;display:block;transition:transform .5s ease}
.sb04-item:hover .sb04-img{transform:scale(1.05)}
.sb04-item::after{content:'';position:absolute;inset:0;z-index:1;background:var(--sb04-overlay-color,#000000);opacity:var(--sb04-overlay-opacity,.25);transition:opacity .3s;pointer-events:none}
.sb04-item:hover::after{opacity:calc(var(--sb04-overlay-opacity,.25) + .1)}
.sb04-badge{position:absolute;top:1.25rem;left:1.25rem;z-index:2;background:var(--sb04-badge-bg,#ffffff);color:var(--sb04-badge-color,#111827);font-size:var(--sb04-badge-fs,.72rem);font-weight:700;letter-spacing:.02em;text-transform:uppercase;padding:.4rem .75rem;border-radius:var(--sb04-badge-radius,.5rem)}
.sb04-badge:empty{display:none}
.sb04-content{position:absolute;left:1.5rem;right:4.5rem;bottom:1.5rem;z-index:2;text-align:left;display:flex;flex-direction:column;gap:.3rem}
.sb04-label{font-weight:700;letter-spacing:-.01em;color:var(--sb04-label-color,#ffffff);font-size:var(--sb04-label-fs,1.5rem)}
.sb04-sub{color:var(--sb04-sub-color,rgba(255,255,255,.85));font-size:var(--sb04-sub-fs,.9rem)}
.sb04-sub:empty{display:none}
.sb04-arrow{position:absolute;right:1.5rem;bottom:1.5rem;z-index:2;width:36px;height:36px;border-radius:999px;background:var(--sb04-arrow-bg,#ffffff);color:var(--sb04-arrow-color,#111827);display:flex;align-items:center;justify-content:center;transition:transform .2s}
.sb04-arrow svg{width:16px;height:16px}
.sb04-item:hover .sb04-arrow{transform:scale(1.1)}
.sb04-link{position:absolute;inset:0;z-index:3;display:block;text-decoration:none}
section[style*="--srl-eyebrow-mode:light"] .srl-eyebrow,section[style*="--srl-eyebrow-mode: light"] .srl-eyebrow{color:var(--srl-eyebrow,var(--eyebrow-color-light,#e8b84b)) !important}
section[style*="--srr-eyebrow-mode:light"] .srr-eyebrow,section[style*="--srr-eyebrow-mode: light"] .srr-eyebrow{color:var(--srr-eyebrow,var(--eyebrow-color-light,#e8b84b)) !important}
section[style*="--tp-eyebrow-mode:light"] .tp-eyebrow,section[style*="--tp-eyebrow-mode: light"] .tp-eyebrow{color:var(--tp-eyebrow,var(--eyebrow-color-light,#e8b84b)) !important}
section[style*="--cd-eyebrow-mode:light"] .cd-eyebrow,section[style*="--cd-eyebrow-mode: light"] .cd-eyebrow{color:var(--cd-eyebrow,var(--eyebrow-color-light,#e8b84b)) !important}
section[style*="--ps2-eyebrow-mode:light"] .ps2-eyebrow,section[style*="--ps2-eyebrow-mode: light"] .ps2-eyebrow{color:var(--ps2-eyebrow,var(--eyebrow-color-light,#e8b84b)) !important}
section[style*="--cst-eyebrow-mode:light"] .cst-eyebrow,section[style*="--cst-eyebrow-mode: light"] .cst-eyebrow{color:var(--cst-eyebrow,var(--eyebrow-color-light,#fff)) !important}
section[style*="--cta01-eyebrow-mode:light"] .cta01-eyebrow,section[style*="--cta01-eyebrow-mode: light"] .cta01-eyebrow{color:var(--cta01-eyebrow,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--cta02-eyebrow-mode:light"] .cta02-eyebrow,section[style*="--cta02-eyebrow-mode: light"] .cta02-eyebrow{color:var(--cta02-eyebrow,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--cf01-eyebrow-mode:light"] .cf01-eyebrow,section[style*="--cf01-eyebrow-mode: light"] .cf01-eyebrow{color:var(--cf01-eyebrow,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--cf02-eyebrow-mode:light"] .cf02-eyebrow,section[style*="--cf02-eyebrow-mode: light"] .cf02-eyebrow{color:var(--cf02-eyebrow,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--cf03-eyebrow-mode:light"] .cf03-eyebrow,section[style*="--cf03-eyebrow-mode: light"] .cf03-eyebrow{color:var(--cf03-eyebrow,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--cf04-eyebrow-mode:light"] .cf04-eyebrow,section[style*="--cf04-eyebrow-mode: light"] .cf04-eyebrow{color:var(--cf04-eyebrow,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--cf05-eyebrow-mode:light"] .cf05-eyebrow,section[style*="--cf05-eyebrow-mode: light"] .cf05-eyebrow{color:var(--cf05-eyebrow,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--cf07-eyebrow-mode:light"] .cf07-eyebrow,section[style*="--cf07-eyebrow-mode: light"] .cf07-eyebrow{color:var(--cf07-eyebrow,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--cta03-eyebrow-mode:light"] .cta03-eyebrow,section[style*="--cta03-eyebrow-mode: light"] .cta03-eyebrow{color:var(--cta03-eyebrow,var(--eyebrow-color-light,#ffffff)) !important}

/* Eyebrow Light-mode overrides (added — see eyebrowColor field type) */
section[style*="--hs03-eyebrow-mode:light"] .hs03-eyebrow,section[style*="--hs03-eyebrow-mode: light"] .hs03-eyebrow{color:var(--hs03-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--hs05-eyebrow-mode:light"] .hs05-eyebrow,section[style*="--hs05-eyebrow-mode: light"] .hs05-eyebrow{color:var(--hs05-eyebrow-color,var(--eyebrow-color-light,#9ca3af)) !important}
section[style*="--vp07-eyebrow-mode:light"] .vp07-eyebrow,section[style*="--vp07-eyebrow-mode: light"] .vp07-eyebrow{color:var(--vp07-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--ta01-eyebrow-mode:light"] .ta01-eyebrow,section[style*="--ta01-eyebrow-mode: light"] .ta01-eyebrow{color:var(--ta01-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--hb02-eyebrow-mode:light"] .hb02-eyebrow,section[style*="--hb02-eyebrow-mode: light"] .hb02-eyebrow{color:var(--hb02-eyebrow-color,var(--eyebrow-color-light,#dc2626)) !important}
section[style*="--sb02-eyebrow-mode:light"] .sb02-eyebrow,section[style*="--sb02-eyebrow-mode: light"] .sb02-eyebrow{color:var(--sb02-eyebrow-color,var(--eyebrow-color-light,#ea580c)) !important}
section[style*="--sb03-eyebrow-mode:light"] .sb03-eyebrow,section[style*="--sb03-eyebrow-mode: light"] .sb03-eyebrow{color:var(--sb03-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--hs01-eyebrow-mode:light"] .hs01-eyebrow span[data-pageedit="text"],section[style*="--hs01-eyebrow-mode: light"] .hs01-eyebrow span[data-pageedit="text"]{color:var(--hs01-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--hs02-eyebrow-mode:light"] .hs02-eyebrow span[data-pageedit="text"],section[style*="--hs02-eyebrow-mode: light"] .hs02-eyebrow span[data-pageedit="text"]{color:var(--hs02-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--hs07-eyebrow-mode:light"] .hs07-eyebrow span[data-pageedit="text"],section[style*="--hs07-eyebrow-mode: light"] .hs07-eyebrow span[data-pageedit="text"]{color:var(--hs07-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}

/* col-item-eyebrow family: per-template disambiguating class + Light-mode override */
section[style*="--col01-eyebrow-mode:light"] .col01-eyebrow-uniq,section[style*="--col01-eyebrow-mode: light"] .col01-eyebrow-uniq{color:var(--col01-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--col01b-eyebrow-mode:light"] .col01b-eyebrow-uniq,section[style*="--col01b-eyebrow-mode: light"] .col01b-eyebrow-uniq{color:var(--col01b-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--col05-eyebrow-mode:light"] .col05-eyebrow-uniq,section[style*="--col05-eyebrow-mode: light"] .col05-eyebrow-uniq{color:var(--col05-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--col09-eyebrow-mode:light"] .col09-eyebrow-uniq,section[style*="--col09-eyebrow-mode: light"] .col09-eyebrow-uniq{color:var(--col09-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--ct02-eyebrow-mode:light"] .ct02-eyebrow-uniq,section[style*="--ct02-eyebrow-mode: light"] .ct02-eyebrow-uniq{color:var(--ct02-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--ct05-eyebrow-mode:light"] .ct05-eyebrow-uniq,section[style*="--ct05-eyebrow-mode: light"] .ct05-eyebrow-uniq{color:var(--ct05-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--ct07-eyebrow-mode:light"] .ct07-eyebrow-uniq,section[style*="--ct07-eyebrow-mode: light"] .ct07-eyebrow-uniq{color:var(--ct07-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--ct08-eyebrow-mode:light"] .ct08-eyebrow-uniq,section[style*="--ct08-eyebrow-mode: light"] .ct08-eyebrow-uniq{color:var(--ct08-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc02-eyebrow-mode:light"] .cc02-eyebrow-uniq,section[style*="--cc02-eyebrow-mode: light"] .cc02-eyebrow-uniq{color:var(--cc02-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc03-eyebrow-mode:light"] .cc03-eyebrow-uniq,section[style*="--cc03-eyebrow-mode: light"] .cc03-eyebrow-uniq{color:var(--cc03-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc04-eyebrow-mode:light"] .cc04-eyebrow-uniq,section[style*="--cc04-eyebrow-mode: light"] .cc04-eyebrow-uniq{color:var(--cc04-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc05-eyebrow-mode:light"] .cc05-eyebrow-uniq,section[style*="--cc05-eyebrow-mode: light"] .cc05-eyebrow-uniq{color:var(--cc05-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc09-eyebrow-mode:light"] .cc09-eyebrow-uniq,section[style*="--cc09-eyebrow-mode: light"] .cc09-eyebrow-uniq{color:var(--cc09-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc10-eyebrow-mode:light"] .cc10-eyebrow-uniq,section[style*="--cc10-eyebrow-mode: light"] .cc10-eyebrow-uniq{color:var(--cc10-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc11-eyebrow-mode:light"] .cc11-eyebrow-uniq,section[style*="--cc11-eyebrow-mode: light"] .cc11-eyebrow-uniq{color:var(--cc11-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc16-eyebrow-mode:light"] .cc16-eyebrow-uniq,section[style*="--cc16-eyebrow-mode: light"] .cc16-eyebrow-uniq{color:var(--cc16-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc17-eyebrow-mode:light"] .cc17-eyebrow-uniq,section[style*="--cc17-eyebrow-mode: light"] .cc17-eyebrow-uniq{color:var(--cc17-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc18-eyebrow-mode:light"] .cc18-eyebrow-uniq,section[style*="--cc18-eyebrow-mode: light"] .cc18-eyebrow-uniq{color:var(--cc18-eyebrow-color,var(--eyebrow-color-light,#9ca3af)) !important}
section[style*="--cc19-eyebrow-mode:light"] .cc19-eyebrow-uniq,section[style*="--cc19-eyebrow-mode: light"] .cc19-eyebrow-uniq{color:var(--cc19-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc20-eyebrow-mode:light"] .cc20-eyebrow-uniq,section[style*="--cc20-eyebrow-mode: light"] .cc20-eyebrow-uniq{color:var(--cc20-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc21-eyebrow-mode:light"] .cc21-eyebrow-uniq,section[style*="--cc21-eyebrow-mode: light"] .cc21-eyebrow-uniq{color:var(--cc21-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc22-eyebrow-mode:light"] .cc22-eyebrow-uniq,section[style*="--cc22-eyebrow-mode: light"] .cc22-eyebrow-uniq{color:var(--cc22-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cc23-eyebrow-mode:light"] .cc23-eyebrow-uniq,section[style*="--cc23-eyebrow-mode: light"] .cc23-eyebrow-uniq{color:var(--cc23-eyebrow-color,var(--eyebrow-color-light,#9ca3af)) !important}
section[style*="--cc24-eyebrow-mode:light"] .cc24-eyebrow-uniq,section[style*="--cc24-eyebrow-mode: light"] .cc24-eyebrow-uniq{color:var(--cc24-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}
section[style*="--cg01-eyebrow-mode:light"] .cg01-eyebrow-uniq,section[style*="--cg01-eyebrow-mode: light"] .cg01-eyebrow-uniq{color:var(--cg01-eyebrow-color,var(--eyebrow-color-light,#c96c3a)) !important}

/* pxs family: Light-mode overrides */
section[style*="--pxs01-eyebrow-mode:light"] .pxs-center .eyebrow,section[style*="--pxs01-eyebrow-mode: light"] .pxs-center .eyebrow{color:var(--pxs01-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--pxs02-eyebrow-mode:light"] .pxs-center .eyebrow,section[style*="--pxs02-eyebrow-mode: light"] .pxs-center .eyebrow{color:var(--pxs02-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--pxs03-eyebrow-mode:light"] .pxs-center .eyebrow,section[style*="--pxs03-eyebrow-mode: light"] .pxs-center .eyebrow{color:var(--pxs03-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--pxs04-eyebrow-mode:light"] .pxs-center .eyebrow,section[style*="--pxs04-eyebrow-mode: light"] .pxs-center .eyebrow{color:var(--pxs04-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--pxs06-eyebrow-mode:light"] .pxz-content .eyebrow,section[style*="--pxs06-eyebrow-mode: light"] .pxz-content .eyebrow{color:var(--pxs06-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}

/* jh01/jn01/jt01/ac09: disambiguating class + Light-mode override */
section[style*="--jh01-eyebrow-mode:light"] .jh01-eyebrow-uniq,section[style*="--jh01-eyebrow-mode: light"] .jh01-eyebrow-uniq{color:var(--jh01-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--jn01-eyebrow-mode:light"] .jn01-eyebrow-uniq,section[style*="--jn01-eyebrow-mode: light"] .jn01-eyebrow-uniq{color:var(--jn01-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--jt01-eyebrow-mode:light"] .jt01-eyebrow-uniq,section[style*="--jt01-eyebrow-mode: light"] .jt01-eyebrow-uniq{color:var(--jt01-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--ac09-eyebrow-mode:light"] .ac09-eyebrow-uniq,section[style*="--ac09-eyebrow-mode: light"] .ac09-eyebrow-uniq{color:var(--ac09-eyebrow-color,var(--eyebrow-color-light,#6b7280)) !important}

/* ps-01..12: previously-dead --psNN-eyebrow-color fields — now wired */
.ps01-eyebrow-uniq{color:var(--ps01-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
section[style*="--ps01-eyebrow-mode:light"] .ps01-eyebrow-uniq,section[style*="--ps01-eyebrow-mode: light"] .ps01-eyebrow-uniq{color:var(--ps01-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
.ps02-eyebrow-uniq{color:var(--ps02-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
section[style*="--ps02-eyebrow-mode:light"] .ps02-eyebrow-uniq,section[style*="--ps02-eyebrow-mode: light"] .ps02-eyebrow-uniq{color:var(--ps02-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
.ps03-eyebrow-uniq{color:var(--ps03-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
section[style*="--ps03-eyebrow-mode:light"] .ps03-eyebrow-uniq,section[style*="--ps03-eyebrow-mode: light"] .ps03-eyebrow-uniq{color:var(--ps03-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
.ps04-eyebrow-uniq{color:var(--ps04-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
section[style*="--ps04-eyebrow-mode:light"] .ps04-eyebrow-uniq,section[style*="--ps04-eyebrow-mode: light"] .ps04-eyebrow-uniq{color:var(--ps04-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
.ps08-eyebrow-uniq{color:var(--ps08-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
section[style*="--ps08-eyebrow-mode:light"] .ps08-eyebrow-uniq,section[style*="--ps08-eyebrow-mode: light"] .ps08-eyebrow-uniq{color:var(--ps08-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
.ps09-eyebrow-uniq{color:var(--ps09-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
section[style*="--ps09-eyebrow-mode:light"] .ps09-eyebrow-uniq,section[style*="--ps09-eyebrow-mode: light"] .ps09-eyebrow-uniq{color:var(--ps09-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
.ps10-eyebrow-uniq{color:var(--ps10-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
section[style*="--ps10-eyebrow-mode:light"] .ps10-eyebrow-uniq,section[style*="--ps10-eyebrow-mode: light"] .ps10-eyebrow-uniq{color:var(--ps10-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
.ps11-eyebrow-uniq{color:var(--ps11-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
section[style*="--ps11-eyebrow-mode:light"] .ps11-eyebrow-uniq,section[style*="--ps11-eyebrow-mode: light"] .ps11-eyebrow-uniq{color:var(--ps11-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
.ps12-eyebrow-uniq{color:var(--ps12-eyebrow-color,var(--eyebrow-color-dark,#fcd703))}
section[style*="--ps12-eyebrow-mode:light"] .ps12-eyebrow-uniq,section[style*="--ps12-eyebrow-mode: light"] .ps12-eyebrow-uniq{color:var(--ps12-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}

.it01-eyebrow-uniq{color:var(--it01-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--it01-eyebrow-mode:light"] .it01-eyebrow-uniq,section[style*="--it01-eyebrow-mode: light"] .it01-eyebrow-uniq{color:var(--it01-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}

/* Bare .eyebrow templates — add per-template Eyebrow color field (was invisible, global-only) */
.vp05-eyebrow-uniq{color:var(--vp05-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--vp05-eyebrow-mode:light"] .vp05-eyebrow-uniq,section[style*="--vp05-eyebrow-mode: light"] .vp05-eyebrow-uniq{color:var(--vp05-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}
.vp08-eyebrow-uniq{color:var(--vp08-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--vp08-eyebrow-mode:light"] .vp08-eyebrow-uniq,section[style*="--vp08-eyebrow-mode: light"] .vp08-eyebrow-uniq{color:var(--vp08-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}
.it03-eyebrow-uniq{color:var(--it03-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--it03-eyebrow-mode:light"] .it03-eyebrow-uniq,section[style*="--it03-eyebrow-mode: light"] .it03-eyebrow-uniq{color:var(--it03-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}
.it05-eyebrow-uniq{color:var(--it05-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--it05-eyebrow-mode:light"] .it05-eyebrow-uniq,section[style*="--it05-eyebrow-mode: light"] .it05-eyebrow-uniq{color:var(--it05-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}
.it07-eyebrow-uniq{color:var(--it07-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--it07-eyebrow-mode:light"] .it07-eyebrow-uniq,section[style*="--it07-eyebrow-mode: light"] .it07-eyebrow-uniq{color:var(--it07-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}
.it08-eyebrow-uniq{color:var(--it08-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--it08-eyebrow-mode:light"] .it08-eyebrow-uniq,section[style*="--it08-eyebrow-mode: light"] .it08-eyebrow-uniq{color:var(--it08-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}
.it12-eyebrow-uniq{color:var(--it12-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--it12-eyebrow-mode:light"] .it12-eyebrow-uniq,section[style*="--it12-eyebrow-mode: light"] .it12-eyebrow-uniq{color:var(--it12-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}
.tt01-eyebrow-uniq{color:var(--tt01-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--tt01-eyebrow-mode:light"] .tt01-eyebrow-uniq,section[style*="--tt01-eyebrow-mode: light"] .tt01-eyebrow-uniq{color:var(--tt01-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}
.tt03-eyebrow-uniq{color:var(--tt03-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--tt03-eyebrow-mode:light"] .tt03-eyebrow-uniq,section[style*="--tt03-eyebrow-mode: light"] .tt03-eyebrow-uniq{color:var(--tt03-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}
.tt04-eyebrow-uniq{color:var(--tt04-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--tt04-eyebrow-mode:light"] .tt04-eyebrow-uniq,section[style*="--tt04-eyebrow-mode: light"] .tt04-eyebrow-uniq{color:var(--tt04-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}
.tt06-eyebrow-uniq{color:var(--tt06-eyebrow-color,var(--eyebrow-color-dark,#b8940a)) !important}
section[style*="--tt06-eyebrow-mode:light"] .tt06-eyebrow-uniq,section[style*="--tt06-eyebrow-mode: light"] .tt06-eyebrow-uniq{color:var(--tt06-eyebrow-color,var(--eyebrow-color-light,#b8940a)) !important}

/* sc-tag family — add per-template Eyebrow color field */
.cs01-eyebrow-uniq{color:var(--cs01-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--cs01-eyebrow-mode:light"] .cs01-eyebrow-uniq,section[style*="--cs01-eyebrow-mode: light"] .cs01-eyebrow-uniq{color:var(--cs01-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.cs02-eyebrow-uniq{color:var(--cs02-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--cs02-eyebrow-mode:light"] .cs02-eyebrow-uniq,section[style*="--cs02-eyebrow-mode: light"] .cs02-eyebrow-uniq{color:var(--cs02-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.cs03-eyebrow-uniq{color:var(--cs03-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--cs03-eyebrow-mode:light"] .cs03-eyebrow-uniq,section[style*="--cs03-eyebrow-mode: light"] .cs03-eyebrow-uniq{color:var(--cs03-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.cs04-eyebrow-uniq{color:var(--cs04-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--cs04-eyebrow-mode:light"] .cs04-eyebrow-uniq,section[style*="--cs04-eyebrow-mode: light"] .cs04-eyebrow-uniq{color:var(--cs04-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.cs05-eyebrow-uniq{color:var(--cs05-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--cs05-eyebrow-mode:light"] .cs05-eyebrow-uniq,section[style*="--cs05-eyebrow-mode: light"] .cs05-eyebrow-uniq{color:var(--cs05-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.cs06-eyebrow-uniq{color:var(--cs06-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--cs06-eyebrow-mode:light"] .cs06-eyebrow-uniq,section[style*="--cs06-eyebrow-mode: light"] .cs06-eyebrow-uniq{color:var(--cs06-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.cs07-eyebrow-uniq{color:var(--cs07-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--cs07-eyebrow-mode:light"] .cs07-eyebrow-uniq,section[style*="--cs07-eyebrow-mode: light"] .cs07-eyebrow-uniq{color:var(--cs07-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.cs08-eyebrow-uniq{color:var(--cs08-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--cs08-eyebrow-mode:light"] .cs08-eyebrow-uniq,section[style*="--cs08-eyebrow-mode: light"] .cs08-eyebrow-uniq{color:var(--cs08-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.cs09-eyebrow-uniq{color:var(--cs09-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--cs09-eyebrow-mode:light"] .cs09-eyebrow-uniq,section[style*="--cs09-eyebrow-mode: light"] .cs09-eyebrow-uniq{color:var(--cs09-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.cs10-eyebrow-uniq{color:var(--cs10-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--cs10-eyebrow-mode:light"] .cs10-eyebrow-uniq,section[style*="--cs10-eyebrow-mode: light"] .cs10-eyebrow-uniq{color:var(--cs10-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.tm01-eyebrow-uniq{color:var(--tm01-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--tm01-eyebrow-mode:light"] .tm01-eyebrow-uniq,section[style*="--tm01-eyebrow-mode: light"] .tm01-eyebrow-uniq{color:var(--tm01-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.tm02-eyebrow-uniq{color:var(--tm02-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--tm02-eyebrow-mode:light"] .tm02-eyebrow-uniq,section[style*="--tm02-eyebrow-mode: light"] .tm02-eyebrow-uniq{color:var(--tm02-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.tm03-eyebrow-uniq{color:var(--tm03-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--tm03-eyebrow-mode:light"] .tm03-eyebrow-uniq,section[style*="--tm03-eyebrow-mode: light"] .tm03-eyebrow-uniq{color:var(--tm03-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.tm04-eyebrow-uniq{color:var(--tm04-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--tm04-eyebrow-mode:light"] .tm04-eyebrow-uniq,section[style*="--tm04-eyebrow-mode: light"] .tm04-eyebrow-uniq{color:var(--tm04-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.tm05-eyebrow-uniq{color:var(--tm05-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--tm05-eyebrow-mode:light"] .tm05-eyebrow-uniq,section[style*="--tm05-eyebrow-mode: light"] .tm05-eyebrow-uniq{color:var(--tm05-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.tm06-eyebrow-uniq{color:var(--tm06-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--tm06-eyebrow-mode:light"] .tm06-eyebrow-uniq,section[style*="--tm06-eyebrow-mode: light"] .tm06-eyebrow-uniq{color:var(--tm06-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.ts01-eyebrow-uniq{color:var(--ts01-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--ts01-eyebrow-mode:light"] .ts01-eyebrow-uniq,section[style*="--ts01-eyebrow-mode: light"] .ts01-eyebrow-uniq{color:var(--ts01-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.ts02-eyebrow-uniq{color:var(--ts02-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--ts02-eyebrow-mode:light"] .ts02-eyebrow-uniq,section[style*="--ts02-eyebrow-mode: light"] .ts02-eyebrow-uniq{color:var(--ts02-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.ts03-eyebrow-uniq{color:var(--ts03-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--ts03-eyebrow-mode:light"] .ts03-eyebrow-uniq,section[style*="--ts03-eyebrow-mode: light"] .ts03-eyebrow-uniq{color:var(--ts03-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.ts04-eyebrow-uniq{color:var(--ts04-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--ts04-eyebrow-mode:light"] .ts04-eyebrow-uniq,section[style*="--ts04-eyebrow-mode: light"] .ts04-eyebrow-uniq{color:var(--ts04-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.ts05-eyebrow-uniq{color:var(--ts05-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--ts05-eyebrow-mode:light"] .ts05-eyebrow-uniq,section[style*="--ts05-eyebrow-mode: light"] .ts05-eyebrow-uniq{color:var(--ts05-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.ts06-eyebrow-uniq{color:var(--ts06-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--ts06-eyebrow-mode:light"] .ts06-eyebrow-uniq,section[style*="--ts06-eyebrow-mode: light"] .ts06-eyebrow-uniq{color:var(--ts06-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.ts07-eyebrow-uniq{color:var(--ts07-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--ts07-eyebrow-mode:light"] .ts07-eyebrow-uniq,section[style*="--ts07-eyebrow-mode: light"] .ts07-eyebrow-uniq{color:var(--ts07-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}
.ts08-eyebrow-uniq{color:var(--ts08-eyebrow-color,var(--eyebrow-color-dark,#64748b)) !important}
section[style*="--ts08-eyebrow-mode:light"] .ts08-eyebrow-uniq,section[style*="--ts08-eyebrow-mode: light"] .ts08-eyebrow-uniq{color:var(--ts08-eyebrow-color,var(--eyebrow-color-light,#64748b)) !important}

.ac08-eyebrow-uniq{color:var(--ac08-eyebrow-color,var(--eyebrow-color-dark,var(--primary-dark))) !important}
section[style*="--ac08-eyebrow-mode:light"] .ac08-eyebrow-uniq,section[style*="--ac08-eyebrow-mode: light"] .ac08-eyebrow-uniq{color:var(--ac08-eyebrow-color,var(--eyebrow-color-light,var(--primary-dark))) !important}

/* ti-tl- / ti-il- family — add per-template Eyebrow color field */
section[style*="--ti01-eyebrow-mode:light"] .ti01-eyebrow-uniq,section[style*="--ti01-eyebrow-mode: light"] .ti01-eyebrow-uniq{color:var(--ti01-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti02-eyebrow-mode:light"] .ti02-eyebrow-uniq,section[style*="--ti02-eyebrow-mode: light"] .ti02-eyebrow-uniq{color:var(--ti02-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti05-eyebrow-mode:light"] .ti05-eyebrow-uniq,section[style*="--ti05-eyebrow-mode: light"] .ti05-eyebrow-uniq{color:var(--ti05-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti11-eyebrow-mode:light"] .ti11-eyebrow-uniq,section[style*="--ti11-eyebrow-mode: light"] .ti11-eyebrow-uniq{color:var(--ti11-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti13-eyebrow-mode:light"] .ti13-eyebrow-uniq,section[style*="--ti13-eyebrow-mode: light"] .ti13-eyebrow-uniq{color:var(--ti13-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti14-eyebrow-mode:light"] .ti14-eyebrow-uniq,section[style*="--ti14-eyebrow-mode: light"] .ti14-eyebrow-uniq{color:var(--ti14-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti16-eyebrow-mode:light"] .ti16-eyebrow-uniq,section[style*="--ti16-eyebrow-mode: light"] .ti16-eyebrow-uniq{color:var(--ti16-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti06-eyebrow-mode:light"] .ti06-eyebrow-uniq,section[style*="--ti06-eyebrow-mode: light"] .ti06-eyebrow-uniq{color:var(--ti06-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti07-eyebrow-mode:light"] .ti07-eyebrow-uniq,section[style*="--ti07-eyebrow-mode: light"] .ti07-eyebrow-uniq{color:var(--ti07-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti08-eyebrow-mode:light"] .ti08-eyebrow-uniq,section[style*="--ti08-eyebrow-mode: light"] .ti08-eyebrow-uniq{color:var(--ti08-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti09-eyebrow-mode:light"] .ti09-eyebrow-uniq,section[style*="--ti09-eyebrow-mode: light"] .ti09-eyebrow-uniq{color:var(--ti09-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti10-eyebrow-mode:light"] .ti10-eyebrow-uniq,section[style*="--ti10-eyebrow-mode: light"] .ti10-eyebrow-uniq{color:var(--ti10-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti12-eyebrow-mode:light"] .ti12-eyebrow-uniq,section[style*="--ti12-eyebrow-mode: light"] .ti12-eyebrow-uniq{color:var(--ti12-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ti15-eyebrow-mode:light"] .ti15-eyebrow-uniq,section[style*="--ti15-eyebrow-mode: light"] .ti15-eyebrow-uniq{color:var(--ti15-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}
section[style*="--ac01-eyebrow-mode:light"] .ac01-eyebrow-uniq,section[style*="--ac01-eyebrow-mode: light"] .ac01-eyebrow-uniq{color:var(--ac01-eyebrow-color,var(--eyebrow-color-light,var(--text-muted))) !important}
section[style*="--ac03-eyebrow-mode:light"] .ac03-eyebrow-uniq,section[style*="--ac03-eyebrow-mode: light"] .ac03-eyebrow-uniq{color:var(--ac03-eyebrow-color,var(--eyebrow-color-light,var(--primary-color))) !important}

/* fh05a/b/c: missing Light-mode override */
section[style*="--fh05a-eyebrow-mode:light"] .fh05a-eyebrow,section[style*="--fh05a-eyebrow-mode: light"] .fh05a-eyebrow{color:var(--fh05a-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--fh05b-eyebrow-mode:light"] .fh05b-eyebrow,section[style*="--fh05b-eyebrow-mode: light"] .fh05b-eyebrow{color:var(--fh05b-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}
section[style*="--fh05c-eyebrow-mode:light"] .fh05c-eyebrow,section[style*="--fh05c-eyebrow-mode: light"] .fh05c-eyebrow{color:var(--fh05c-eyebrow-color,var(--eyebrow-color-light,#fcd703)) !important}


/* ════════════════════════════════════════════════════════════════════════
   §BG-01 — Decorative Floaters (category: Backgrounds) — v2
   A page-spanning layer of admin-uploaded decorative images, scattered
   behind all page content. Unlike every other section in this library,
   this one is intentionally LIVE/dynamic, not baked at author time:
   theme.js's initBgFloaters() measures the real page height, clones the
   admin's uploaded "pool" images (each pool item is hidden via
   .bg01-pool -- never rendered directly) into however many positioned
   instances the page needs, and re-runs on resize/late content growth.
   That's a deliberate exception to this platform's usual "bake once,
   never randomize per visit" rule -- decorative-only content with zero
   functional/layout consequence doesn't carry the same risk a live cart
   or price would, and the page explicitly asked for density that scales
   with page length. See the template's own doc comment for the JS side.
   ════════════════════════════════════════════════════════════════════════ */
.bg01-layer{position:absolute;top:0;left:0;width:100%;pointer-events:none;z-index:1;overflow:hidden}
.bg01-layer.bg01-hide-mobile{display:block}
@media(max-width:1285px){.bg01-layer.bg01-hide-mobile{display:none}}

/* Pool items (the admin's configured loop entries) are the SOURCE cloned
   at runtime -- never shown themselves. */
.bg01-pool{display:none}

/* One tsParticles-driven strip per lane (left/right edge), created by
   theme.js's initBgFloaters() for the unpinned/auto-scatter pool --
   pointer-events:none matches the rest of the layer (purely decorative,
   never intercepts clicks/taps on real page content underneath). */
.bg01-lane{pointer-events:none}
/* tsParticles sets pointer-events on its own <canvas> via inline style
   (for its own hover/click interactivity, even with events disabled in
   config) -- inline style outranks an inherited value, so this has to
   be forced with !important to actually stay click-through. */
.bg01-lane canvas{display:block;pointer-events:none !important}

.bg01-item{position:absolute;opacity:var(--bg01-opacity,.25);transform:rotate(var(--bg01-rot,0deg));pointer-events:none}
/* Images render at their own uploaded (intrinsic) size on wide screens --
   no forced width/height -- then scale down as the viewport narrows,
   floored at 50% of that original size so they never vanish on mobile.
   calc() mixing 100vw with a px length is valid CSS (the browser resolves
   100vw to px first); dividing that by a px length yields a bare number,
   which is what scale() needs. 1600px is the tuning knob for how quickly
   it shrinks between the 400px and 2000px viewport-width bounds below. */
/* "Original size, no forced sizing" and "never overlap the center content
   lane" are in direct tension once an uploaded image's real intrinsic
   size is large -- a lane is only a few % of viewport width, and a
   full-size 400-800px clipart image blows straight through that
   regardless of how correctly it's positioned. max-width/max-height cap
   the RENDERED size (smaller uploads still show at their true size,
   unaffected) so the lane constraint always actually holds -- capped to
   --bg01-maxsize, set per-clone by theme.js from that lane's REAL pixel
   width (a flat cap that fits a wide desktop lane would still overflow a
   narrow mobile one). The viewport-width transform:scale() below then
   further shrinks that already-capped box down to the 50% floor on
   narrow screens, same as before. */
.bg01-item img{display:block;width:auto;height:auto;max-width:var(--bg01-maxsize,150px);max-height:var(--bg01-maxsize,150px);object-fit:contain;pointer-events:none;user-select:none;transform-origin:center center;transform:scale(clamp(.5,calc(.5 + (100vw - 400px)/1600),1))}

/* Animation style + speed are separate per-item class-select fields (see
   template) so each floater can carry its own combination independently,
   not one setting shared by the whole layer. */
@keyframes bg01-float{0%,100%{transform:translateY(0) rotate(var(--bg01-rot,0deg))}50%{transform:translateY(-16px) rotate(var(--bg01-rot,0deg))}}
@keyframes bg01-drift{0%,100%{transform:translateX(0) rotate(var(--bg01-rot,0deg))}50%{transform:translateX(18px) rotate(var(--bg01-rot,0deg))}}
@keyframes bg01-spin{from{transform:rotate(var(--bg01-rot,0deg))}to{transform:rotate(calc(var(--bg01-rot,0deg) + 360deg))}}
@keyframes bg01-floatspin{0%{transform:translateY(0) rotate(var(--bg01-rot,0deg))}50%{transform:translateY(-16px) rotate(calc(var(--bg01-rot,0deg) + 180deg))}100%{transform:translateY(0) rotate(calc(var(--bg01-rot,0deg) + 360deg))}}
@keyframes bg01-zoom{0%,100%{transform:scale(1) rotate(var(--bg01-rot,0deg))}50%{transform:scale(1.18) rotate(var(--bg01-rot,0deg))}}
.bg01-item.bg01-anim-float{animation-name:bg01-float}
.bg01-item.bg01-anim-drift{animation-name:bg01-drift}
.bg01-item.bg01-anim-spin{animation-name:bg01-spin}
.bg01-item.bg01-anim-floatspin{animation-name:bg01-floatspin}
.bg01-item.bg01-anim-zoom{animation-name:bg01-zoom}
.bg01-item.bg01-anim-float,.bg01-item.bg01-anim-drift,.bg01-item.bg01-anim-spin,.bg01-item.bg01-anim-floatspin,.bg01-item.bg01-anim-zoom{animation-duration:var(--bg01-dur,6s);animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-delay:var(--bg01-delay,0s)}
.bg01-item.bg01-anim-spin{animation-timing-function:linear}
.bg01-item.bg01-speed-slow{--bg01-dur:10s}
.bg01-item.bg01-speed-medium{--bg01-dur:6s}
.bg01-item.bg01-speed-fast{--bg01-dur:3s}
/* "Super Smooth" -- a long, gentle duration paired with a flatter easing
   curve (vs. the shared ease-in-out) so the motion reads as glacial and
   fluid rather than a slowed-down version of the same easing shape. */
.bg01-item.bg01-speed-supersmooth{--bg01-dur:18s;animation-timing-function:cubic-bezier(.45,0,.55,1)}
@media(prefers-reduced-motion:reduce){.bg01-item{animation:none !important}}

/* ════════════════════════════════════════════════════════════════════════
   §BG-02 — Particles (category: Backgrounds)
   Light on purpose (phones, low-end machines): a FEW dozen absolutely
   positioned <span class="bg02-p"> elements, no canvas, no engine. theme.js
   (initBg02Layer) builds them ONCE after load from the uploaded SVG pool
   (.bg02-pool, 1-3 images; only when the "Use my SVGs" switch adds
   .bg02-svg -- otherwise every particle is the built-in shape chosen by
   --bg02-shape, via the inherited --bg02-img) at random, stratified positions across the page
   -- most in the left/right bands, a chosen % anywhere incl. the centre --
   and sets each one's --x/--y/--sz/--dur/--delay/--dx/--dy/--r. From
   there CSS alone moves them (transform-only keyframes). Count/centre-%
   come from --bg02-count / --bg02-center; JS rebuilds only when those or
   the SVGs change, never on scroll. Each SVG is used as a mask over
   --bg02-color (so any single-shape SVG takes the chosen colour);
   .bg02-orig switches to the SVG's own colours instead.
   .bg02-layer spans the WHOLE PAGE and scrolls with it: position:absolute
   (not fixed), height = document scrollHeight set by theme.js; CSS
   height:100vh is only a no-JS fallback. The section's vars are written
   by the Site Builder panel onto the <section>, and the layer/particles
   just inherit them. No z-index: stacking follows DOM order (put the
   Particles section first). pointer-events:none lets clicks pass. */
.bg02-layer{position:absolute;top:0;left:0;width:100%;height:100vh;background:var(--bg02-bg,#0f172a);pointer-events:none;overflow:hidden;--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Ccircle cx='20' cy='20' r='19'/%3E%3C/svg%3E")}
section[style*="--bg02-shape:square"] .bg02-layer,section[style*="--bg02-shape: square"] .bg02-layer{--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Crect x='2' y='2' width='36' height='36'/%3E%3C/svg%3E")}
section[style*="--bg02-shape:triangle"] .bg02-layer,section[style*="--bg02-shape: triangle"] .bg02-layer{--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cpolygon points='20,2 2,38 38,38'/%3E%3C/svg%3E")}
section[style*="--bg02-shape:star"] .bg02-layer,section[style*="--bg02-shape: star"] .bg02-layer{--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cpolygon points='20.0,1.0 25.0,13.1 38.1,14.1 28.1,22.6 31.2,35.4 20.0,28.6 8.8,35.4 11.9,22.6 1.9,14.1 15.0,13.1'/%3E%3C/svg%3E")}
section[style*="--bg02-shape:polygon"] .bg02-layer,section[style*="--bg02-shape: polygon"] .bg02-layer{--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cpolygon points='38.0,20.0 29.0,35.6 11.0,35.6 2.0,20.0 11.0,4.4 29.0,4.4'/%3E%3C/svg%3E")}
section[style*="--bg02-shape:diamond"] .bg02-layer,section[style*="--bg02-shape: diamond"] .bg02-layer{--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cpolygon points='20,1 39,20 20,39 1,20'/%3E%3C/svg%3E")}
section[style*="--bg02-shape:sparkle"] .bg02-layer,section[style*="--bg02-shape: sparkle"] .bg02-layer{--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cpolygon points='20,1 24.5,15.5 39,20 24.5,24.5 20,39 15.5,24.5 1,20 15.5,15.5'/%3E%3C/svg%3E")}
section[style*="--bg02-shape:heart"] .bg02-layer,section[style*="--bg02-shape: heart"] .bg02-layer{--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cpath d='M20 36C5 25 1.5 15 7.5 8.5C12.5 3.5 18.5 6 20 11.5C21.5 6 27.5 3.5 32.5 8.5C38.5 15 35 25 20 36Z'/%3E%3C/svg%3E")}
section[style*="--bg02-shape:ring"] .bg02-layer,section[style*="--bg02-shape: ring"] .bg02-layer{--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Ccircle cx='20' cy='20' r='15.5' fill='none' stroke='black' stroke-width='5'/%3E%3C/svg%3E")}
section[style*="--bg02-shape:plus"] .bg02-layer,section[style*="--bg02-shape: plus"] .bg02-layer{--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cpolygon points='15,2 25,2 25,15 38,15 38,25 25,25 25,38 15,38 15,25 2,25 2,15 15,15'/%3E%3C/svg%3E")}
section[style*="--bg02-shape:snowflake"] .bg02-layer,section[style*="--bg02-shape: snowflake"] .bg02-layer{--bg02-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cg stroke='black' stroke-width='3' stroke-linecap='round' fill='none'%3E%3Cpath d='M20 3V37M5.3 11.5L34.7 28.5M5.3 28.5L34.7 11.5'/%3E%3C/g%3E%3C/svg%3E")}
.bg02-pool{display:none}
.bg02-p{position:absolute;left:var(--x,50%);top:var(--y,50%);width:calc(var(--bg02-size,3) * 5px * var(--sz,1));aspect-ratio:1;background-color:var(--bg02-color,#ffffff);opacity:var(--bg02-opacity,.6);-webkit-mask-image:var(--bg02-img);mask-image:var(--bg02-img);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;animation:bg02-float calc(var(--dur,10s) / var(--bg02-speed,1)) ease-in-out infinite;animation-delay:var(--delay,0s)}
.bg02-svg.bg02-orig .bg02-p{background-color:transparent;background-image:var(--bg02-img);background-size:contain;background-position:center;background-repeat:no-repeat;-webkit-mask-image:none;mask-image:none}
@keyframes bg02-float{0%,100%{transform:translate(0,0) rotate(var(--r,0deg))}50%{transform:translate(var(--dx,20px),calc(-1 * var(--dy,30px))) rotate(calc(var(--r,0deg) + 20deg))}}
@media(prefers-reduced-motion:reduce){.bg02-p{animation:none !important}}

/* ════════════════════════════════════════════════════════════════════════
   §AU — Auth page templates (category: Auth) — login au-01/02/03
   Layout only; the form is the live auth-login component (bare=1).
   Card on/off: sp-pageedit adds .au0N-no-card when --au0N-card is "0". */
.au01-wrap{width:100%;max-width:var(--au01-mw,28rem)}
.au01-no-card .au01-card{border:none !important;box-shadow:none !important;background:transparent !important}
.au02-grid{display:flex;flex-direction:var(--au02-dir,row);width:100%;max-width:var(--au02-mw,72rem);margin:0 auto;overflow:hidden;min-height:var(--au02-min-h,34rem)}
.au02-media{position:relative;flex:0 0 var(--au02-media-w,50%);min-height:16rem;display:flex;align-items:flex-end}
.au02-media>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.au02-overlay{position:absolute;inset:0}
.au02-msg{position:relative;padding:2rem}
.au02-form{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;padding:2.5rem 2rem}
.au02-form-in{width:100%;max-width:26rem}
.au02-no-card .au02-grid{border:none !important;box-shadow:none !important;background:transparent !important}
@media(max-width:767px){.au02-grid{flex-direction:column !important}.au02-media{flex:0 0 auto;min-height:13rem}.au02-form{padding:2rem 1.25rem}}
.au03-wrap{width:100%;max-width:var(--au03-mw,28rem)}
.au03-no-card .au03-card{border:none !important;box-shadow:none !important;background:transparent !important}

/* ════════════════════════════════════════════════════════════════════════
   §AU — Auth page templates (category: Auth) — register au-04/05/06
   Layout only; the form is the live auth-login component (bare=1).
   Card on/off: sp-pageedit adds .au0N-no-card when --au0N-card is "0". */
.au04-wrap{width:100%;max-width:var(--au04-mw,32rem)}
.au04-no-card .au04-card{border:none !important;box-shadow:none !important;background:transparent !important}
.au05-grid{display:flex;flex-direction:var(--au05-dir,row);width:100%;max-width:var(--au05-mw,72rem);margin:0 auto;overflow:hidden;min-height:var(--au05-min-h,34rem)}
.au05-media{position:relative;flex:0 0 var(--au05-media-w,50%);min-height:16rem;display:flex;align-items:flex-end}
.au05-media>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.au05-overlay{position:absolute;inset:0}
.au05-msg{position:relative;padding:2rem}
.au05-form{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;padding:2.5rem 2rem}
.au05-form-in{width:100%;max-width:26rem}
.au05-no-card .au05-grid{border:none !important;box-shadow:none !important;background:transparent !important}
@media(max-width:767px){.au05-grid{flex-direction:column !important}.au05-media{flex:0 0 auto;min-height:13rem}.au05-form{padding:2rem 1.25rem}}
.au06-wrap{width:100%;max-width:var(--au06-mw,32rem)}
.au06-no-card .au06-card{border:none !important;box-shadow:none !important;background:transparent !important}

/* ════════════════════════════════════════════════════════════════════════
   §AU — Auth page templates (category: Auth) — reset-password au-07/08/09
   Layout only; the form is the live auth-login component (bare=1).
   Card on/off: sp-pageedit adds .au0N-no-card when --au0N-card is "0". */
.au07-wrap{width:100%;max-width:var(--au07-mw,28rem)}
.au07-no-card .au07-card{border:none !important;box-shadow:none !important;background:transparent !important}
.au08-grid{display:flex;flex-direction:var(--au08-dir,row);width:100%;max-width:var(--au08-mw,72rem);margin:0 auto;overflow:hidden;min-height:var(--au08-min-h,34rem)}
.au08-media{position:relative;flex:0 0 var(--au08-media-w,50%);min-height:16rem;display:flex;align-items:flex-end}
.au08-media>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.au08-overlay{position:absolute;inset:0}
.au08-msg{position:relative;padding:2rem}
.au08-form{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;padding:2.5rem 2rem}
.au08-form-in{width:100%;max-width:26rem}
.au08-no-card .au08-grid{border:none !important;box-shadow:none !important;background:transparent !important}
@media(max-width:767px){.au08-grid{flex-direction:column !important}.au08-media{flex:0 0 auto;min-height:13rem}.au08-form{padding:2rem 1.25rem}}
.au09-wrap{width:100%;max-width:var(--au09-mw,28rem)}
.au09-no-card .au09-card{border:none !important;box-shadow:none !important;background:transparent !important}

/* ════════════════════════════════════════════════════════════════════════
   §PDSIM — Similar Products sections (pd-02 slider, pd-03 grid, pd-04 list)
   Layout only; the products come from store-product-list?similar=1. When the
   component renders nothing (not a product page / nothing similar) the slot is
   removed and the whole section, heading included, hides. */
.pdsim-inner{width:100%;margin:0 auto}
.pdsim-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.pdsim-headtxt{min-width:0;flex:1 1 18rem}
.pdsim-all{display:inline-block;padding:.55rem 1.25rem;font-weight:700;white-space:nowrap;text-decoration:none;background:transparent;border:1.5px solid currentColor;border-radius:999px;line-height:1.2}
.pdsim-all:hover{opacity:.8}
.pdsim:not(:has(.pdsim-body > *)){display:none}

/* ════════════════════════════════════════════════════════════════════════
   §EMPTY-STATE — shared "nothing to show" block
   Rendered by the _partials/empty-state.html "empty_state" template,
   called from every blog-list-*.html design and search-results.html
   instead of each pasting its own bare one-line message. */
.v-empty-state{grid-column:1/-1;text-align:center;padding:3.5rem 1.25rem;color:var(--text-muted,#6b7280)}
.v-empty-state__icon{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;margin-bottom:1rem;border-radius:999px;background:color-mix(in srgb,var(--text-muted,#6b7280) 10%,transparent);color:var(--text-muted,#6b7280)}
.v-empty-state__icon svg{width:1.375rem;height:1.375rem}
.v-empty-state__title{margin:0;font-size:1rem;font-weight:600;color:var(--text-color,#374151)}
.v-empty-state__subtitle{margin:.35rem 0 0;font-size:.875rem}
.v-empty-state__cta{display:inline-block;margin-top:1rem;font-size:.875rem;font-weight:600;color:var(--primary-color,#fcd703);text-decoration:underline;text-underline-offset:.2em}
.v-empty-state__cta:hover{opacity:.8}

/* ════════════════════════════════════════════════════════════════════════
   §STICKY-FOOTER — keep the footer pinned to the viewport bottom on short
   pages (e.g. an empty blog list) instead of riding up directly under a
   half-empty content area. #main-content (base.html) wraps header + page
   content + footer as one flat blob for the static-pages/blob CMS, so it
   becomes the flex column; .ftr-shell is that system's footer blob's own
   root wrapper (see pages/footer.html in a static-pages export) and gets
   pushed to the bottom via margin-top:auto. Excluded on admin pages
   (.adm-main already owns its own sidebar-grid layout). */
#main-content:not(.adm-main){display:flex;flex-direction:column;min-height:100vh}
.ftr-shell{margin-top:auto}

/* ── MC: "modern" product card (card_modern.go, key "modern") ───────────────────────────────
   Layer 1 (base): rounded card, shaped image, price tag in the image's top-right corner, name +
   Buy pill on one row, chip row below. Layer 2 (profile): .mc-p-retail = unit chips, .mc-p-publication
   = writer / publisher chips. Layer 3 (customer): --pc-* vars from Settings > Theme > Product Card
   (image shape --pc-img-ratio, fit --pc-img-fit, colours, radius) and the Buy label / tag style. */
.mc-card{--mc-r:var(--pc-radius,22px);--mc-pad:var(--pc-pad,8px);--mc-bg:var(--pc-bg,#fff);--mc-accent:var(--pc-btn-bg,var(--primary-color,#465fff));--mc-on-accent:var(--pc-btn-text,#fff);position:relative;display:flex;flex-direction:column;height:100%;box-sizing:border-box;padding:var(--mc-pad);background:var(--mc-bg);border-radius:calc(var(--mc-r) + 6px);box-shadow:0 1px 3px rgba(0,0,0,.06),0 10px 24px -14px rgba(0,0,0,.22);cursor:pointer;transition:box-shadow .2s,transform .2s;min-width:0}
.mc-card:hover{box-shadow:0 2px 6px rgba(0,0,0,.08),0 16px 32px -14px rgba(0,0,0,.28);transform:translateY(-2px)}
.mc-media{position:relative;overflow:hidden;border-radius:var(--mc-r)}
.mc-img{background:var(--pc-img-bg,var(--bg-muted,#f3f4f6));display:block;width:100%;aspect-ratio:var(--pc-img-ratio,4/5);object-fit:var(--pc-img-fit,cover);transition:transform .4s ease}
.mc-card:hover .mc-img{transform:scale(1.03)}
.mc-noimg{display:flex;align-items:center;justify-content:center;color:var(--text-muted,#9ca3af)}
.mc-badge{position:absolute;top:10px;left:10px;z-index:2;background:var(--pc-offer-bg,var(--primary-color,#465fff));color:var(--pc-offer-text,#fff);font-size:.65rem;font-weight:700;letter-spacing:.02em;line-height:1.5;padding:3px 8px;border-radius:9999px}
.mc-badge[hidden]{display:none}
/* price tag: the card's own background colour, cut into the image corner; notch = concave joins */
.mc-tag{--mc-tag-r:16px;position:absolute;top:0;right:0;z-index:3;display:flex;align-items:baseline;gap:.4rem;padding:.4rem .85rem .5rem 1rem;background:var(--mc-bg);border-bottom-left-radius:var(--mc-tag-r);max-width:75%}
.mc-tag--notch::before,.mc-tag--notch::after{content:'';position:absolute;width:var(--mc-tag-r);height:var(--mc-tag-r);background:radial-gradient(circle at 0 100%,transparent calc(var(--mc-tag-r) - .5px),var(--mc-bg) var(--mc-tag-r))}
.mc-tag--notch::before{right:100%;top:0}
.mc-tag--notch::after{right:0;top:100%}
.mc-tag--pill{top:10px;right:10px;border-radius:9999px;padding:.3rem .8rem;box-shadow:0 1px 4px rgba(0,0,0,.15)}
.mc-price{font-size:var(--pc-price-fs,var(--fs-lg,1.15rem));font-weight:var(--pc-price-fw,800);line-height:normal;color:var(--pc-price-color,var(--text-strong,#111827));white-space:nowrap}
.mc-mrp{font-size:var(--pc-mrp-fs,var(--fs-sm,.8rem));font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#9ca3af));text-decoration:line-through;white-space:nowrap;line-height:normal}
.mc-mrp[hidden]{display:none}
/* price outside the image: a row under the cover, or the left end of the Buy row */
.mc-prow{display:inline-flex;align-items:baseline;gap:.4rem;min-width:0;white-space:nowrap;align-self:flex-start;padding:.3rem .8rem;border-radius:9999px;background:var(--pc-price-bg,color-mix(in srgb,var(--mc-accent) 8%,var(--mc-bg)))}
.mc-prow--below{margin:.1rem 0 0 .1rem}
.mc-prow--buy{align-self:center;margin-right:auto;flex:0 1 auto}
.mc-body{display:flex;flex-direction:column;gap:var(--pc-gap,.3rem);flex:1;padding:var(--pc-body-pt,.5rem) .3rem .2rem}
.mc-head{display:block}
.mc-title{margin:0;flex:1;min-width:0;font-size:var(--fs-body,1rem);font-weight:700;line-height:1.25;color:var(--pc-title-color,var(--text-strong,#111827));display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mc-foot{display:flex;flex-direction:column;gap:var(--pc-gap,.3rem);margin-top:auto}
.mc-act{display:flex;align-items:center;justify-content:flex-end;width:100%}
.mc-act>.mc-buy,.mc-act>.mc-qty{width:var(--pc-buy-w,fit-content);max-width:100%}
.mc-act>.mc-oos{width:auto}
.mc-buy,.mc-qty,.mc-oos,button.mc-buy{display:inline-flex;align-items:center;justify-content:center;height:2.1rem;border-radius:9999px;font-family:inherit;font-size:var(--pc-buy-fs,.85rem);font-weight:var(--pc-buy-fw,700);white-space:nowrap;box-sizing:border-box}
.mc-buy{border:0;padding:0 1.25rem;background:var(--mc-accent);color:var(--mc-on-accent);cursor:pointer;transition:background .15s,color .15s,transform .1s}
.mc-buy:hover{background:var(--pc-btn-bg-hover,color-mix(in srgb,var(--mc-accent) 88%,#000));color:var(--pc-btn-text-hover,var(--mc-on-accent))}
.mc-buy:active{transform:scale(.97)}
.mc-qty{justify-content:space-between;gap:.15rem;padding:0 .3rem;background:var(--mc-accent);color:var(--mc-on-accent)}
.mc-qty[hidden],.mc-buy[hidden]{display:none}
.mc-minus,.mc-plus,button.mc-minus,button.mc-plus{width:var(--pc-qty-btn-size,2rem);height:var(--pc-qty-btn-size,2rem);max-height:1.9rem;border-radius:50%;box-sizing:border-box;flex-shrink:0;background:transparent;color:inherit;font-size:1.15rem;font-weight:700;line-height:normal;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.mc-minus:hover,.mc-plus:hover{background:rgba(255,255,255,.2)}
.mc-count{min-width:1.3rem;text-align:center;font-size:.9rem;font-weight:800;line-height:normal}
.mc-oos{width:auto;height:auto;line-height:1.2;padding:0;border:0;color:var(--pc-oos-text,#ef4444);background:transparent;font-weight:600}
.mc-chips{display:flex;flex-wrap:wrap;gap:var(--pc-chip-gap,.3rem)}
.mc-chip,button.mc-chip{--mc-chip-h:1.65rem;display:inline-flex;align-items:center;gap:.25rem;max-width:100%;box-sizing:border-box;height:var(--mc-chip-h);padding:0 .65rem;border:1px solid transparent;border-radius:9999px;font-family:inherit;font-size:var(--pc-chip-fs,.68rem);font-weight:var(--pc-chip-fw,500);line-height:normal;background:var(--pc-chip-bg,color-mix(in srgb,var(--mc-accent) 10%,var(--mc-bg)));color:var(--pc-chip-text,var(--text-color,#374151))}
.mc-chip-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.mc-chip-plus{flex:0 0 auto;font-weight:700;opacity:.8;line-height:normal}
/* unit chips: one line, a steady height, a cap on the width -> a long unit name is cut with an ellipsis (full text in the tooltip) */
.mc-unit,.mc-more{cursor:pointer;position:relative;display:inline-flex;text-align:center;max-width:9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal;align-items:center;justify-content:center}
.mc-unit:hover:not(.is-sel):not(.is-oos){border-color:var(--pc-chip-active-bg,var(--mc-accent))}
.mc-unit.is-sel{background:var(--pc-chip-active-bg,var(--mc-accent));color:var(--pc-chip-active-text,var(--mc-on-accent));font-weight:var(--pc-chip-fw,600)}
.mc-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
/* the badge hangs off the chip's top-right corner (mostly over the gap and the chip's own right padding, never over its text); no width change, so nothing shifts or wraps */
.mc-unit.has-qty{overflow:visible;z-index:1}
.mc-unit.has-qty::after{content:attr(data-q);position:absolute;top:-7px;right:-9px;min-width:1.05rem;height:1.05rem;padding:0 .25rem;box-sizing:border-box;border-radius:9999px;background:var(--mc-accent);color:var(--mc-on-accent);font-size:.65rem;font-weight:700;line-height:1.05rem;text-align:center;box-shadow:0 0 0 2px var(--mc-bg)}
.mc-more{background:transparent;border-color:var(--border-color,#d1d5db);padding:0 .6rem}
.mc-chips:not(.mc-expanded) .mc-x{display:none}
.mc-chips.mc-expanded .mc-more{display:none}
.mc-info svg{flex:0 0 auto;opacity:.75}
.mc-info{max-width:100%}
/* a touch screen gets a taller chip (an easier tap target) */
@media(pointer:coarse){.mc-chip{--mc-chip-h:2rem}.mc-buy,.mc-qty{height:2.3rem}}
.mc-p-publication .mc-chips,.mc-p-retail .mc-chips{align-content:flex-start}
/* the global `button,.btn,[type=button]` rule (font-family / font-size) loads after this file and ties on
   specificity, so the Settings-driven font vars on the modern card's buttons need one more class to win */
.mc-card .mc-chip{font-family:inherit;font-size:var(--pc-chip-fs,.68rem);font-weight:var(--pc-chip-fw,500)}
.mc-card .mc-unit.is-sel{font-weight:var(--pc-chip-fw,600)}
.mc-card .mc-buy,.mc-card .mc-qty,.mc-card .mc-oos{font-family:inherit;font-size:var(--pc-buy-fs,.85rem);font-weight:var(--pc-buy-fw,700)}
.mc-card .mc-oos{font-weight:var(--pc-buy-fw,600)}

/* ── MC layouts: fill (image is the whole card, text over a dark fade) and hover (same, text revealed on hover) ── */
.mc-l-fill,.mc-l-hover{--mc-fadea:var(--pc-fade,.7)}
.mc-l-fill .mc-media,.mc-l-hover .mc-media{flex:1;display:flex;min-height:0}
.mc-l-fill .mc-img,.mc-l-hover .mc-img{flex:1;width:100%;height:auto;min-height:100%}
.mc-l-fill .mc-body,.mc-l-hover .mc-body{position:absolute;left:var(--mc-pad);right:var(--mc-pad);bottom:var(--mc-pad);flex:none;padding:2.5rem .7rem .7rem;gap:var(--pc-gap,.3rem);background:linear-gradient(to top,rgba(0,0,0,var(--mc-fadea)) 0%,rgba(0,0,0,calc(var(--mc-fadea) * .6)) 55%,transparent 100%);border-radius:0 0 var(--mc-r) var(--mc-r)}
.mc-l-fill .mc-title,.mc-l-hover .mc-title{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5)}
.mc-l-fill .mc-chip,.mc-l-hover .mc-chip{background:var(--pc-chip-bg,rgba(255,255,255,.2));color:var(--pc-chip-text,#fff);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.mc-l-fill .mc-unit.is-sel,.mc-l-hover .mc-unit.is-sel{background:var(--pc-chip-active-bg,#fff);color:var(--pc-chip-active-text,#111)}
.mc-l-fill .mc-more,.mc-l-hover .mc-more{border-color:rgba(255,255,255,.5)}
.mc-l-fill .mc-prow,.mc-l-hover .mc-prow{background:var(--pc-price-bg,rgba(255,255,255,.2));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.mc-l-fill .mc-price,.mc-l-hover .mc-price{color:var(--pc-price-color,#fff)}
.mc-l-fill .mc-mrp,.mc-l-hover .mc-mrp{color:var(--pc-mrp-color,rgba(255,255,255,.75))}
.mc-l-fill .mc-oos,.mc-l-hover .mc-oos{color:#fff}
.mc-l-fill .mc-unit.has-qty::after,.mc-l-hover .mc-unit.has-qty::after{box-shadow:0 0 0 2px rgba(0,0,0,.35)}
/* hover: the units and Buy row slide up only on a pointer that can hover; a touch screen always shows them */
@media(hover:hover) and (pointer:fine){
  .mc-l-hover .mc-foot{max-height:0;opacity:0;overflow:hidden;margin-top:0;transition:max-height .28s ease,opacity .2s ease}
  .mc-l-hover:hover .mc-foot,.mc-l-hover:focus-within .mc-foot{max-height:14rem;opacity:1;overflow:visible;margin-top:auto}
}

/* ═══════════════════════════════════════════════════════════════════
   §BTNFX — site-wide button hover effects (Settings > Layout & Cards > Button hover effect).
   One catalogue keyed by data-btn-fx on <body>. Nothing here matches when the setting is None.
   A section opts out by writing --sec-btn-fx:none on its inline style (style-config field
   "Use global button effect"); the :not() tail below then skips every button inside it.
   Colours come from the button itself (currentColor / its own background) so the effect
   matches whatever button it lands on. All of it is CSS; reduced motion turns it off.
   ═══════════════════════════════════════════════════════════════════ */
body[data-btn-fx] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx){transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease,color .18s ease,border-color .18s ease,filter .18s ease,outline-offset .18s ease,outline-width .18s ease,opacity .18s ease,background-position .35s ease}
body[data-btn-fx="lift"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.18)}
body[data-btn-fx="press"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{transform:translateY(1px) scale(.98);box-shadow:inset 0 2px 4px rgba(0,0,0,.25)}
body[data-btn-fx="grow"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{transform:scale(1.05)}
body[data-btn-fx="shrink"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{transform:scale(.96)}
body[data-btn-fx="jelly"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{animation:btnfx-jelly .5s}
@keyframes btnfx-jelly{0%{transform:scale(1,1)}30%{transform:scale(1.08,.92)}55%{transform:scale(.95,1.05)}80%{transform:scale(1.02,.98)}100%{transform:scale(1,1)}}
body[data-btn-fx="darken"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{filter:brightness(.85)}
body[data-btn-fx="lighten"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{filter:brightness(1.15)}
body[data-btn-fx="fade"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{opacity:.78}
body[data-btn-fx="glow"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{box-shadow:0 0 0 4px color-mix(in srgb,currentColor 30%,transparent)}
body[data-btn-fx="slide-fill"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *){position:relative;overflow:hidden;isolation:isolate}
body[data-btn-fx="slide-fill"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *)::after{content:"";position:absolute;inset:0;background:color-mix(in srgb,currentColor 18%,transparent);transform:translateX(100%);transition:transform .35s ease;z-index:-1;pointer-events:none}
body[data-btn-fx="slide-fill"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover::after{transform:translateX(0)}
body[data-btn-fx="wipe"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *){position:relative;overflow:hidden;isolation:isolate}
body[data-btn-fx="wipe"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *)::after{content:"";position:absolute;inset:0;background:color-mix(in srgb,currentColor 18%,transparent);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.4,0,.2,1);z-index:-1;pointer-events:none}
body[data-btn-fx="wipe"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover::after{transform:scaleX(1)}
body[data-btn-fx="ink"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *){position:relative;overflow:hidden;isolation:isolate}
body[data-btn-fx="ink"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *)::after{content:"";position:absolute;inset:0;background:color-mix(in srgb,currentColor 18%,transparent);transform:scaleY(0);transform-origin:bottom;transition:transform .35s cubic-bezier(.4,0,.2,1);z-index:-1;pointer-events:none}
body[data-btn-fx="ink"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover::after{transform:scaleY(1)}
body[data-btn-fx="shine"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *){position:relative;overflow:hidden;isolation:isolate}
body[data-btn-fx="shine"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *)::after{content:"";position:absolute;top:0;bottom:0;left:-75%;width:50%;background:linear-gradient(105deg,transparent 20%,rgba(255,255,255,.45) 50%,transparent 80%);transform:skewX(-20deg);z-index:1;pointer-events:none}
body[data-btn-fx="shine"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover::after{left:125%;transition:left .55s ease}
body[data-btn-fx="3d"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *){box-shadow:0 4px 0 color-mix(in srgb,currentColor 45%,#000)}
body[data-btn-fx="3d"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{transform:translateY(3px);box-shadow:0 1px 0 color-mix(in srgb,currentColor 45%,#000)}
body[data-btn-fx="shadow-spread"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{transform:translateY(-1px);box-shadow:0 10px 24px -6px color-mix(in srgb,currentColor 55%,transparent)}
body[data-btn-fx="lift-glow"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{transform:translateY(-2px);box-shadow:0 8px 20px color-mix(in srgb,currentColor 45%,transparent)}
body[data-btn-fx="outline-ring"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *){outline:0 solid color-mix(in srgb,currentColor 25%,transparent)}
body[data-btn-fx="outline-ring"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{outline-width:5px}
body[data-btn-fx="border-grow"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{outline:2px solid currentColor;outline-offset:3px}
body[data-btn-fx="pulse"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{animation:btnfx-pulse .6s ease-out}
@keyframes btnfx-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,currentColor 55%,transparent)}100%{box-shadow:0 0 0 12px transparent}}
body[data-btn-fx="arrow"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *) :is(.ar,[data-arrow],svg:last-child:not(:first-child)){display:inline-block;transition:transform .2s}
body[data-btn-fx="arrow"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover :is(.ar,[data-arrow],svg:last-child:not(:first-child)){transform:translateX(4px)}
body[data-btn-fx="icon-spin"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *) svg{transition:transform .25s}
body[data-btn-fx="icon-spin"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover svg{transform:rotate(-12deg) scale(1.15)}
body[data-btn-fx="underline"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *){text-decoration:none;background:linear-gradient(currentColor,currentColor) no-repeat 0 100%/0 1.5px;transition:background-size .25s}
body[data-btn-fx="underline"] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx):not(.v-nofx):not([class*="-unit"]):not([class*="-chip"]):not([class*="-pill"]):not([class*="-minus"]):not([class*="-plus"]):not([class*="-q-btn"]):not([class*="-qty-btn"]):not(.sh-wish):not(.classic-card-icon-btn):not([class*="-action-btn"]):not([class*="-eye"]):not(.up-panel-close):not([class*="-notify-btn"]):not([class*="__variant"]):not([class*="snav"]):not([class*="sc-btn"]):not([class*="pl-snav"]):not([class*="v-modal__nav"]):not(body[data-btn-p-own] .v-btn-p):not(body[data-btn-s-own] .v-btn-s):not(body[data-btn-a-own] .v-btn-a):not(.v-search__chip):not(.v-search__rail-close):not([class*="pagination"]):not([class*="__tab"]):not([style*="--sec-btn-fx:none"] *):not([style*="--sec-btn-fx: none"] *):hover{background-size:100% 1.5px}
@media (prefers-reduced-motion:reduce){body[data-btn-fx] :is(button,input[type="submit"],input[type="button"],[role="button"],.btn,.btn-primary,.btn-secondary,.btn-accent,.btn-outline,.btn-pill,.btn-gold,.v-btn-p,.v-btn-s,.v-btn-a,.v-fx),body[data-btn-fx] :is(button,.btn)::after{transition:none!important;animation:none!important;transform:none!important}}

/* ════════════════════════════════════════════════════════════════════════
   §BK — Bookstore product cards (card_bookstore.go)
   coverrail (.cvr-*)
   Layered like every other card: each reads the shared --pc-* Settings variables
   (TestLayeredCardsWireSharedCSSVars), chip / price text uses line-height:normal, and every
   font rule on a <button> class has its button.x twin (base.html's [type=button] rule
   would otherwise win).
   ════════════════════════════════════════════════════════════════════════ */

/* ── Cover Rail (.cvr) ─────────────────────────────────────────────────── */
.cvr-card{display:block;min-width:0;width:100%;box-sizing:border-box;color:inherit;cursor:pointer;position:relative}
.cvr-img-wrap{position:relative;overflow:hidden;border-radius:var(--pc-radius,var(--card-radius,14px));background:var(--bg-muted,#f3f4f6)}
.cvr-img-link{display:block}
.cvr-img{width:100%;aspect-ratio:2/3;object-fit:cover;display:block;transition:transform .4s ease}
.cvr-card:hover .cvr-img{transform:scale(1.04)}
.cvr-noimg{aspect-ratio:2/3;width:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-muted,#f3f4f6);color:var(--text-muted,#9ca3af)}
.cvr-badge{position:absolute;top:10px;left:10px;z-index:2;background:var(--pc-offer-bg,var(--primary-color,#e11d48));color:var(--pc-offer-text,#fff);font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:9999px;pointer-events:none;line-height:normal}
.cvr-badge[hidden]{display:none}
.cvr-rail{position:absolute;right:10px;bottom:12px;z-index:3;display:flex;flex-direction:column;gap:8px;opacity:0;transform:translateX(10px);transition:opacity .25s,transform .25s}
.cvr-card:hover .cvr-rail,.cvr-card:focus-within .cvr-rail,.cvr-card.lc-has-qty .cvr-rail{opacity:1;transform:none}
/* touch screens have no hover: keep the wishlist / view / cart icons visible */
@media (hover:none){.cvr-rail{opacity:1;transform:none}}
@media (hover:none){.cvr-rail{opacity:1;transform:none}}
.cvr-rail-btn{width:2.35rem;height:2.35rem;border-radius:50%;background:#fff;color:var(--text-strong,#111827);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.18);text-decoration:none;transition:background .15s,color .15s}
.cvr-rail-btn:hover,.cvr-cart-btn:hover{background:var(--pc-btn-bg,var(--primary-color,#e11d48));color:var(--pc-btn-text,#fff)}
.cvr-wish[aria-pressed="true"]{color:var(--error-color,#ef4444)}
.cvr-wish[aria-pressed="true"] svg{fill:currentColor}
.cvr-cart-btn[hidden]{display:none}
.cvr-body{display:flex;flex-direction:column;gap:var(--pc-gap,.45rem);padding:1.1rem .1rem .5rem;min-width:0}
.cvr-title{display:block;min-width:0;font-size:var(--pc-title-fs,calc(var(--fs-body,1rem) * 1.12));font-weight:700;color:var(--pc-title-color,var(--text-strong,#111827));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cvr-author{font-size:var(--fs-xs,.8rem);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cvr-info{display:flex;flex-direction:column;gap:var(--pc-chip-gap,1px)}
.cvr-info-line{font-size:var(--pc-chip-fs,.75rem);font-weight:var(--pc-chip-fw,400);color:var(--text-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cvr-info-label{font-weight:600}
.cvr-chips{display:flex;flex-wrap:nowrap;overflow:hidden;gap:var(--pc-chip-gap,.3rem);margin-top:.15rem}
.cvr-unit,button.cvr-unit{position:relative;display:inline-flex;align-items:center;justify-content:center;height:1.45rem;max-width:8rem;padding:0 .55rem;box-sizing:border-box;border:1px solid var(--border-color,#e5e7eb);border-radius:9999px;background:var(--pc-chip-bg,transparent);color:var(--pc-chip-text,var(--text-color,#374151));font-family:inherit;font-size:var(--pc-chip-fs,.72rem);font-weight:var(--pc-chip-fw,500);line-height:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.cvr-unit.is-sel{background:var(--pc-chip-active-bg,var(--primary-color,#e11d48));color:var(--pc-chip-active-text,#fff);border-color:transparent}
.cvr-unit.is-oos{text-decoration:line-through;cursor:not-allowed}
.cvr-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-height:2rem}
.cvr-price{font-size:var(--pc-price-fs,calc(var(--fs-body,1rem) * 1.4));font-weight:var(--pc-price-fw,800);color:var(--pc-price-color,var(--price-color,var(--primary-color,#e11d48)));line-height:normal;white-space:nowrap}
.cvr-mrp{font-size:var(--pc-mrp-fs,.78rem);font-weight:var(--pc-mrp-fw,400);color:var(--pc-mrp-color,var(--text-muted,#9ca3af));text-decoration:line-through;line-height:normal;white-space:nowrap}
.cvr-mrp[hidden]{display:none}
.cvr-oos{font-size:var(--pc-buy-fs,.8rem);color:var(--pc-oos-text,#ef4444);margin-top:-.15rem}
.cvr-qty{display:inline-flex;align-items:center;gap:2px;height:2rem;padding:0 4px;box-sizing:border-box;border-radius:9999px;background:var(--pc-btn-bg,var(--primary-color,#e11d48));color:var(--pc-btn-text,#fff)}
.cvr-qty[hidden]{display:none}
.cvr-minus,.cvr-plus,button.cvr-minus,button.cvr-plus{width:var(--pc-qty-btn-size,26px);height:var(--pc-qty-btn-size,26px);max-height:1.7rem;border-radius:50%;border:none;background:transparent;color:inherit;font-family:inherit;font-size:1rem;font-weight:700;line-height:normal;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0}
.cvr-minus:hover,.cvr-plus:hover{background:rgba(255,255,255,.2)}
.cvr-count{min-width:1.2rem;text-align:center;font-size:var(--pc-buy-fs,.8rem);font-weight:var(--pc-buy-fw,700);line-height:normal}

/* ════════════════════════════════════════════════════════════════════════
   §BK2 — Bookstore section templates
   hd-01/02 section headers · pl-03/04/06 product rows · cs-11 focus slider ·
   ts-10 illustrated testimonial cards · hs-09 split hero with floating covers
   Every template scopes its own colours through --bk-* variables set on the section
   (style-config), so two of them on one page never share a value.
   ════════════════════════════════════════════════════════════════════════ */

/* ── shared header: title · hairline · pill ─────────────────────────────── */
.bk-sec{background:var(--bk-bg,#ffffff);padding:var(--sec-buf-t,var(--gbuf-v,4rem)) var(--sec-buf-r,var(--gbuf-h,0)) var(--sec-buf-b,var(--gbuf-v,4rem)) var(--sec-buf-l,var(--gbuf-h,0));min-width:0;width:100%;box-sizing:border-box}
.bk-inner{max-width:var(--bk-mw,80rem);margin:0 auto;padding:0 1rem;box-sizing:border-box;min-width:0}
.bk-head{display:flex;align-items:center;gap:1.5rem;margin-bottom:var(--bk-head-gap,1.75rem);min-width:0}
/* a standalone header: no space of its own below the title (the next section brings its own top buffer) */
.bk-hd{padding-bottom:var(--sec-buf-b,0)}
.bk-hd .bk-head{margin-bottom:0}
.bk-title{margin:0;flex:0 1 auto;min-width:0;font-size:var(--bk-title-fs,2rem);font-weight:800;line-height:1.15;letter-spacing:-.01em;color:var(--bk-title-color,var(--text-strong,#111827))}
.bk-line{flex:1 1 2rem;height:1px;background:var(--bk-line-color,var(--border-color,#e5e7eb));min-width:1rem}
.bk-pill{flex:0 0 auto;display:inline-flex;align-items:center;gap:.45rem;height:2.9rem;padding:0 1.5rem;box-sizing:border-box;border-radius:var(--bk-pill-radius,9999px);background:var(--bk-pill-bg,var(--primary-color,#e11d48));color:var(--bk-pill-text,#ffffff);font-weight:700;text-decoration:none;white-space:nowrap;line-height:normal;transition:filter .2s,transform .2s}
.bk-pill:hover{filter:brightness(1.06);transform:translateY(-1px)}
.bk-pill svg{flex:0 0 auto}
.bk-head--center{justify-content:center;text-align:center}
.bk-head--center .bk-title{text-align:center}
.bk-sub{margin:.4rem 0 0;color:var(--bk-sub-color,var(--text-muted,#6b7280));text-align:inherit}
@media (max-width:640px){
  /* phones: title on the left, pill on the right, one row; the thin line is dropped, a long title wraps inside its own space */
  .bk-head:not(.bk-head--center){gap:.75rem;flex-wrap:nowrap}
  .bk-head:not(.bk-head--center) .bk-line{display:none}
  .bk-head:not(.bk-head--center) .bk-title{flex:1 1 0;overflow-wrap:anywhere}
  .bk-title{font-size:calc(var(--bk-title-fs,2rem) * .62)}
  /* the pill becomes a plain text link on phones, in the pill colour */
  .bk-pill{height:auto;padding:0;margin-left:auto;background:none;border-radius:0;color:var(--bk-pill-bg,var(--primary-color,#e11d48));font-size:.9rem;text-decoration:underline;text-underline-offset:.2em;white-space:nowrap}
  .bk-pill:hover{filter:none;transform:none;text-decoration-thickness:2px}
}

/* ── hairline dividers between cards (comp param rule=1) ────────────────── */
.v-plist--rule{gap:0;overflow:hidden}
.v-plist--rule>*{padding:1.1rem;border:0 solid var(--bk-rule,var(--border-color,#e8e2d6));border-right-width:1px;border-bottom-width:1px;margin:0 -1px -1px 0;min-width:0;box-sizing:border-box}
.v-plist-swiper--rule .swiper-slide{border-right:1px solid var(--bk-rule,var(--border-color,#e8e2d6));padding:0 1rem;box-sizing:border-box}
.v-plist-swiper--rule .swiper-slide:last-child{border-right:0}

/* ── pl-03 product row: nothing beyond the shared header; the slider is the framework's own ── */
.bk-row .swiper{overflow:hidden}
.bk-row .sc-nav{margin-top:1.4rem}

/* ── pl-04 grid + promo tile ────────────────────────────────────────────── */
.pl04-body{display:flex;flex-direction:var(--pl04-dir,row);gap:var(--pl04-gap,1.5rem);align-items:stretch;min-width:0}
.pl04-list{flex:1 1 0;min-width:0}
.pl04-tile{flex:0 0 var(--pl04-tile-w,22rem);width:var(--pl04-tile-w,22rem);display:flex;flex-direction:column;justify-content:center;overflow:hidden;box-sizing:border-box;border-radius:var(--pl04-tile-radius,1.25rem);background:var(--pl04-tile-bg,#ec1c8c);color:var(--pl04-tile-text,#ffffff);min-width:0}
.pl04-tile-art{flex:0 0 auto;min-height:0;display:flex;align-items:center;justify-content:center;padding:1.2rem 1.2rem 0}
.pl04-tile-art img{width:100%;height:auto;max-height:11rem;object-fit:contain;display:block;margin:0 auto}
/* room for tilted / shadowed cards so the slider edge never clips them */
.pl04-list .swiper{padding:.75rem 1rem .25rem}
/* every card in a scroller row is as tall as the tallest one */
/* the standard Cards Per View system (same variables and breakpoints as .sc-track): N cards visible, --cs-gap between them */
.v-plist-swiper--auto .swiper-slide{box-sizing:border-box;padding-right:var(--cs-gap,1.25rem);position:relative}
/* optional divider line, centred in the gap: the same space on both sides. Width 0 = off. */
.v-plist-swiper--auto .swiper-slide::after{content:"";position:absolute;top:0;bottom:0;right:calc(var(--cs-gap,1.25rem) / 2);width:var(--bk-rule-w,0px);background:var(--bk-rule,var(--border-color,#e8e2d6));pointer-events:none}
.v-plist-swiper--auto .swiper-slide:last-child::after{display:none}
/* Cover Rail ships with the lines on; sections inserted before the setting existed have no value, so default them here (an explicit Off on the section still wins) */
section[data-group-id^="pl-03-"]{--bk-rule-w:1px}
.v-plist-swiper--auto .swiper-slide{width:calc((100% - (var(--cs-cards-0,1) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-0,1) + var(--cs-gap,1.25rem))}
@media(min-width:480px){.v-plist-swiper--auto .swiper-slide{width:calc((100% - (var(--cs-cards-1,var(--cs-cards-0,1)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-1,var(--cs-cards-0,1)) + var(--cs-gap,1.25rem))}}
@media(min-width:640px){.v-plist-swiper--auto .swiper-slide{width:calc((100% - (var(--cs-cards-2,var(--cs-cards-1,2)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-2,var(--cs-cards-1,2)) + var(--cs-gap,1.25rem))}}
@media(min-width:768px){.v-plist-swiper--auto .swiper-slide{width:calc((100% - (var(--cs-cards-3,var(--cs-cards-2,3)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-3,var(--cs-cards-2,3)) + var(--cs-gap,1.25rem))}}
@media(min-width:1024px){.v-plist-swiper--auto .swiper-slide{width:calc((100% - (var(--cs-cards-4,var(--cs-cards-3,4)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-4,var(--cs-cards-3,4)) + var(--cs-gap,1.25rem))}}
@media(min-width:1280px){.v-plist-swiper--auto .swiper-slide{width:calc((100% - (var(--cs-cards-5,var(--cs-cards-4,5)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-5,var(--cs-cards-4,5)) + var(--cs-gap,1.25rem))}}
.pl04-list .swiper-slide,.bk-row .swiper-slide{height:auto;display:flex}
.pl04-list .swiper-slide>*,.bk-row .swiper-slide>*{flex:1 1 auto;min-width:0;height:auto}
.pl04-tile-copy{padding:1.4rem 1.6rem 1.8rem;display:flex;flex-direction:column;gap:.5rem;align-items:flex-start}
.pl04-kicker{margin:0;font-weight:700;font-size:var(--pl04-kicker-fs,1.1rem);color:inherit;opacity:.95}
.pl04-headline{margin:0;font-size:var(--pl04-headline-fs,2.6rem);font-weight:800;line-height:1.05;color:inherit}
.pl04-headline em{font-style:normal}
.pl04-sub{margin:0;color:inherit;opacity:.9}
.pl04-btn{margin-top:.6rem;display:inline-flex;align-items:center;gap:.5rem;height:2.9rem;padding:0 1.5rem;box-sizing:border-box;border-radius:9999px;background:var(--pl04-btn-bg,#ffffff);color:var(--pl04-btn-text,#111827);font-weight:700;text-decoration:none;line-height:normal;transition:transform .2s,filter .2s}
.pl04-btn:hover{transform:translateY(-1px);filter:brightness(.97)}
/* Back / Next sit on a rounded pill in the ad tile colour, to balance the row */
.pl04-list .sc-nav{display:flex!important;align-items:center;justify-content:center;gap:.5rem;width:max-content;margin:.5rem auto 0!important;padding:.45rem .7rem;border-radius:9999px;background:var(--pl04-nav-bg,var(--pl04-tile-bg,#ec1c8c))}
@media (max-width:1023px){
  .pl04-body{flex-direction:column}
  .pl04-tile{flex:none;width:100%}
  .pl04-tile-art{min-height:9rem}
  .pl04-tile-copy{align-items:center;text-align:center}
}


/* ── pl-06 / cs-11 focus slider (design=focus) ──────────────────────────── */
.v-focus{position:relative;padding:0 3.4rem;min-width:0}
/* two classes so it beats the Swiper bundle's .swiper{padding:0}; room above and below grows with the focused card size so it is never clipped */
.v-focus .v-focus__swiper{overflow:hidden;padding:calc((var(--focus-active,1.06) - 1) * 40rem + .75rem) 0}
.v-focus .swiper-wrapper{align-items:center}
/* .v-focus__swiper in the selector so these beat the Swiper bundle (.swiper-backface-hidden .swiper-slide{transform:translateZ(0)}) */
.v-focus .v-focus__swiper .swiper-slide{transition:transform .45s cubic-bezier(.2,.7,.2,1),opacity .45s;transform:scale(var(--focus-scale,.9));opacity:.8;box-sizing:border-box;padding:0 .5rem}
.v-focus .v-focus__swiper .swiper-slide-active{transform:scale(var(--focus-active,1.06));opacity:1;z-index:2}
/* centred with calc(), not transform: the site-wide button hover effect sets transform and made the arrows jump */
.v-focus__arrow{position:absolute;z-index:5;top:calc(50% - (var(--snav-size,var(--btn-n-size,40px)) * var(--hero-navscale,1)) / 2)}
.v-focus__arrow--prev{left:0}
.v-focus__arrow--next{right:0}
.v-focus__arrow.snav-swiper-disabled{opacity:.35}
/* phones swipe: no Back / Next arrows below tablet width, and no room reserved for them */
@media (max-width:767px){.v-focus__arrow{display:none}.bk-sec .v-focus{padding:0}}
.v-focus--rule .swiper-slide:not(.swiper-slide-active){border-right:0}
/* Cards Per View, same variables and breakpoints as .sc-track; the centre card stays large */
.v-focus--auto .swiper-slide{padding:0 calc(var(--cs-gap,1.25rem) / 2)}
.v-focus--auto .swiper-slide{width:calc((100% - (var(--cs-cards-0,1) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-0,1) + var(--cs-gap,1.25rem))}
@media(min-width:480px){.v-focus--auto .swiper-slide{width:calc((100% - (var(--cs-cards-1,var(--cs-cards-0,1)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-1,var(--cs-cards-0,1)) + var(--cs-gap,1.25rem))}}
@media(min-width:640px){.v-focus--auto .swiper-slide{width:calc((100% - (var(--cs-cards-2,var(--cs-cards-1,2)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-2,var(--cs-cards-1,2)) + var(--cs-gap,1.25rem))}}
@media(min-width:768px){.v-focus--auto .swiper-slide{width:calc((100% - (var(--cs-cards-3,var(--cs-cards-2,3)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-3,var(--cs-cards-2,3)) + var(--cs-gap,1.25rem))}}
@media(min-width:1024px){.v-focus--auto .swiper-slide{width:calc((100% - (var(--cs-cards-4,var(--cs-cards-3,4)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-4,var(--cs-cards-3,4)) + var(--cs-gap,1.25rem))}}
@media(min-width:1280px){.v-focus--auto .swiper-slide{width:calc((100% - (var(--cs-cards-5,var(--cs-cards-4,5)) - 1)*var(--cs-gap,1.25rem))/var(--cs-cards-5,var(--cs-cards-4,5)) + var(--cs-gap,1.25rem))}}
/* every card is as tall as the tallest one; room for the arrows follows the nav size, not a fixed number */
.v-focus--auto .swiper-wrapper{align-items:stretch}
.v-focus--auto .swiper-slide{display:flex;height:auto}
.v-focus--auto .swiper-slide>*{flex:1 1 auto;min-width:0;height:auto}
.v-focus{padding:0 calc(var(--snav-size,var(--btn-n-size,40px)) * var(--hero-navscale,1) + .8rem)}
@media (max-width:640px){.v-focus{padding:0 2.4rem}}
@media (prefers-reduced-motion:reduce){.v-focus .swiper-slide{transition:none}}
/* cs-11: the static twin — same look, cards filled in Content Author */
.cs11-card{display:block;box-sizing:border-box;color:inherit;text-decoration:none;text-align:left;min-width:0;padding:.6rem;background:var(--cs11-card-bg,var(--card-bg,#ffffff));border:1px solid var(--cs11-card-border,var(--card-border,#e5e7eb));border-radius:var(--cs11-card-radius,var(--card-radius,.9rem));box-shadow:var(--card-shadow,0 10px 24px -18px rgba(0,0,0,.35))}
.cs11-img{width:100%;aspect-ratio:2/3;object-fit:cover;display:block;border-radius:var(--cs11-radius,.9rem);background:var(--bg-muted,#f3f4f6);box-shadow:0 12px 26px -16px rgba(0,0,0,.4)}
.cs11-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;margin-top:.9rem;font-size:var(--fs-body,1rem);font-weight:700;line-height:1.3;min-height:calc(1.3em * 2);color:var(--cs11-title,var(--text-strong,#111827));overflow:hidden}
.cs11-author{display:block;margin-top:.15rem;color:var(--cs11-author,var(--text-muted,#6b7280));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cs11-price{display:block;margin-top:.35rem;font-weight:800;color:var(--cs11-price,var(--primary-color,#e11d48))}

/* ── ts-10 illustrated testimonial cards ─────────────────────────────────── */
.ts10-pager{flex:0 0 auto;display:flex;align-items:center;gap:.4rem}
.ts10-pager .swiper-pagination-bullet{width:.5rem;height:.5rem;border-radius:9999px;background:var(--ts10-dot,#e5cfc9);opacity:1;margin:0!important;transition:width .25s,background .25s}
.ts10-pager .swiper-pagination-bullet-active{width:1.5rem;background:var(--ts10-dot-active,var(--primary-color,#e11d48))}
.ts10-slide{height:auto;box-sizing:border-box;display:flex}
.ts10-card{position:relative;flex:1 1 auto;min-width:0;box-sizing:border-box;padding:2.2rem 1.8rem 4.4rem;display:flex;flex-direction:column;align-items:center;text-align:center;background:var(--ts10-item-bg,var(--ts10-card-bg,#ffffff));border:var(--ts10-border-w,1px) solid var(--ts10-item-border,var(--ts10-border,var(--border-color,#e5e7eb)));border-radius:var(--ts10-radius,1rem);overflow:hidden}
.ts10-avatar{width:var(--ts10-avatar,70px);height:var(--ts10-avatar,70px);border-radius:50%;object-fit:cover;display:block;background:var(--bg-muted,#f3f4f6);flex:0 0 auto}
.ts10-quote{margin:1.5rem 0 0;flex:1 1 auto;color:var(--ts10-item-text,var(--ts10-quote,var(--text-color,#111827)));display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.ts10-by{position:relative;z-index:1;margin-top:1.4rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem;font-size:var(--fs-xs,.8rem);letter-spacing:.06em;text-transform:uppercase}
.ts10-name{color:var(--ts10-item-text,var(--ts10-name,var(--text-strong,#111827)));font-weight:500}
.ts10-place{color:var(--ts10-item-text,var(--ts10-place,var(--text-muted,#6b7280)))}
.ts10-place::before{content:"/";margin-right:.35rem;color:var(--ts10-item-text,var(--ts10-place,var(--text-muted,#6b7280)))}
.ts10-mark{position:absolute;left:50%;bottom:.6rem;transform:translateX(-50%);width:3.2rem;height:auto;color:var(--ts10-mark,#eeeeee);opacity:var(--ts10-mark-op,1);pointer-events:none}

/* ── hs-09 split hero with floating covers ─────────────────────────────────
   Every look is a variable (style-config), and every cover has its own tilt / scale / position
   (per-slide number inputs). Three layers per cover, so the three motions never fight over
   `transform`:  .hs09-el  = position + tilt + scale + offset  ·  .hs09-in = entrance animation
   ·  img.hs09-cover = floating motion + shadow. */
.hs09{position:relative;overflow:hidden;isolation:isolate;background:var(--hs09-bg,#fdeee8);
  --hs09-shc:color-mix(in srgb,var(--hs09-shadow-color,#000000) calc(var(--hs09-shadow-op,45) * 1%),transparent)}
.hs09-swiper{position:relative;z-index:1;overflow:hidden}
.hs09-slide{position:relative;box-sizing:border-box}
/* every slide is as tall as the tallest one, in every transition (cube/flip set height:100% otherwise) */
.hs09-swiper .swiper-wrapper{align-items:stretch}
.hs09-swiper .swiper-slide{height:auto!important;display:flex;flex-direction:column}
.hs09-swiper .swiper-slide>.hs09-wrap{flex:1 1 auto;width:100%}
/* the buffer (Buffer Top / Right / Bottom / Left) is the wrapper's padding, so background art stays full-bleed */
.hs09{--hs09-safe:calc(var(--snav-size,var(--btn-n-size,40px)) * var(--hero-navscale,1) + 1.6rem)}
.hs09-wrap{position:relative;z-index:1;box-sizing:border-box;max-width:var(--hs09-mw,80rem);margin:0 auto;
  padding:var(--sec-buf-t,0rem) calc(var(--sec-buf-r,var(--gbuf-h,0rem)) + var(--hs09-gutter,0rem) + var(--hs09-safe,0px)) var(--sec-buf-b,0rem) calc(var(--sec-buf-l,var(--gbuf-h,0rem)) + var(--hs09-gutter,0rem) + var(--hs09-safe,0px));
  min-height:var(--hs09-min-h-d,72svh);display:flex;flex-direction:var(--hs09-dir,row);align-items:var(--hs09-valign,center);gap:var(--hs09-gap,2rem)}
.hs09-copy{position:relative;z-index:2;min-width:0;flex:1 1 var(--hs09-copy-w,46%);max-width:var(--hs09-copy-w,46%);text-align:var(--hs09-align,left)}
.hs09-stage{position:relative;z-index:1;min-width:0;flex:1 1 0;min-height:26rem;align-self:stretch}
.hs09-eyebrow{margin:0 0 .8rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--hs09-eyebrow,var(--primary-color,#e11d48))}
.hs09-headline{margin:0;font-size:var(--hs09-fs,clamp(2.4rem,5.4vw,4.2rem));font-weight:800;line-height:1.1;letter-spacing:-.02em;color:var(--hs09-headline,var(--text-strong,#111827))}
.hs09-sub{margin:1.3rem 0 0;font-weight:700;color:var(--hs09-sub,var(--primary-color,#e11d48))}
.hs09-ctas{margin-top:2rem;display:flex;flex-wrap:wrap;gap:.8rem;justify-content:var(--hs09-just,flex-start)}
.hs09-btn{display:inline-flex;align-items:center;gap:.5rem;height:3.1rem;padding:0 1.8rem;box-sizing:border-box;border-radius:9999px;background:var(--hs09-btn-bg,#ffffff);color:var(--hs09-btn-text,var(--text-strong,#111827));font-weight:700;text-decoration:none;line-height:normal;box-shadow:0 8px 20px -12px rgba(0,0,0,.3);transition:transform .2s,box-shadow .2s,background .2s,color .2s}
.hs09-btn:hover{transform:translateY(-2px);background:var(--hs09-btn-hover-bg,var(--primary-color,#e11d48));color:var(--hs09-btn-hover-text,#ffffff)}
.hs09-btn--ghost{background:transparent;box-shadow:none;border:1.5px solid var(--hs09-headline,var(--text-strong,#111827))}

/* underline: any text marked with the editor's underline button (<u>) in the headline or sub-line */
.hs09-headline u,.hs09-sub u,.hs09-mark{text-decoration-line:underline;text-decoration-style:var(--hs09-u-style,solid);text-decoration-color:var(--hs09-u-color,var(--primary-color,#e11d48));text-decoration-thickness:var(--hs09-u-w,4px);text-underline-offset:var(--hs09-u-offset,6px);text-decoration-skip-ink:none}
.hs09[style*="--hs09-u-style:brush"] u,.hs09[style*="--hs09-u-style: brush"] u,.hs09[style*="--hs09-u-style:brush"] .hs09-mark,.hs09[style*="--hs09-u-style: brush"] .hs09-mark{text-decoration:none;position:relative;display:inline-block;z-index:0}
.hs09[style*="--hs09-u-style:brush"] u::after,.hs09[style*="--hs09-u-style: brush"] u::after,.hs09[style*="--hs09-u-style:brush"] .hs09-mark::after,.hs09[style*="--hs09-u-style: brush"] .hs09-mark::after{content:"";position:absolute;left:-2%;right:-2%;bottom:calc(var(--hs09-u-offset,6px) * -1);height:calc(var(--hs09-u-w,4px) * 2.6);z-index:-1;background:var(--hs09-u-color,var(--primary-color,#e11d48));opacity:.92;transform:rotate(-1.4deg);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 20' preserveAspectRatio='none'%3E%3Cpath d='M2 12C40 4 80 16 130 9s90 5 168-3' fill='none' stroke='%23000' stroke-width='9' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 20' preserveAspectRatio='none'%3E%3Cpath d='M2 12C40 4 80 16 130 9s90 5 168-3' fill='none' stroke='%23000' stroke-width='9' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat}

/* the covers */
.hs09-glow{position:absolute;left:50%;top:52%;width:78%;aspect-ratio:1/.62;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(closest-side,var(--hs09-glow-color,#ffffff),transparent);opacity:var(--hs09-glow-op,.95);filter:blur(6px);z-index:0;pointer-events:none}
.hs09-stage{display:flex;align-items:center;justify-content:center}
.hs09-el{position:relative;z-index:1;display:block;width:calc(var(--hs09-img-w,100) * 1%);max-width:none;flex:0 0 auto;transform:translate(calc(var(--hs09-img-x,0) * 1%),calc(var(--hs09-img-y,0) * 1%))}
.hs09-in{display:block}
.hs09-cover{display:block;width:100%;height:auto;animation:var(--hs09-float,hs09-float) var(--hs09-float-speed,7s) ease-in-out infinite;will-change:transform}
/* pictures saved before the wrapper existed */
.hs09-stage>.hs09-cover{position:relative;width:100%}
.hs09-stage>.hs09-cover--2,.hs09-stage>.hs09-cover--3{display:none}
@keyframes hs09-float{0%,100%{transform:translateY(0)}50%{transform:translateY(calc(var(--hs09-float-amp,14px) * -1))}}

/* how things appear: runs each time a slide becomes the active one */
.swiper-slide-active .hs09-el--1 .hs09-in{animation:var(--hs09-c1-in,hs09-in-up) var(--hs09-dur,.9s) var(--hs09-ease,cubic-bezier(.2,.7,.2,1)) var(--hs09-c1-delay,.15s) both}
.swiper-slide-active .hs09-copy{animation:var(--hs09-text-in,none) var(--hs09-dur,.9s) var(--hs09-ease,cubic-bezier(.2,.7,.2,1)) 0s both}
@keyframes hs09-in-fade{from{opacity:0}to{opacity:1}}
@keyframes hs09-in-up{from{opacity:0;transform:translateY(48px)}to{opacity:1;transform:none}}
@keyframes hs09-in-down{from{opacity:0;transform:translateY(-48px)}to{opacity:1;transform:none}}
@keyframes hs09-in-left{from{opacity:0;transform:translateX(-64px)}to{opacity:1;transform:none}}
@keyframes hs09-in-right{from{opacity:0;transform:translateX(64px)}to{opacity:1;transform:none}}
@keyframes hs09-in-zoom{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
@keyframes hs09-in-pop{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.09)}100%{opacity:1;transform:none}}
@keyframes hs09-in-flip{from{opacity:0;transform:perspective(700px) rotateY(-75deg)}to{opacity:1;transform:none}}

/* background art (your own upload, per slide) and the built-in shapes */
.hs09-bgart{position:absolute;inset:0;z-index:0;width:100%;height:100%;display:block;pointer-events:none;object-fit:cover;object-position:center}
.hs09-bgart.pe-hidden{display:none}

/* Back / Next: placed with margins, NOT transform. The site-wide button hover effect sets `transform`
   on hover, which replaced a translateY(-50%) and made the arrows jump. */
.hs09-nav{position:absolute;z-index:5;top:calc(50% - (var(--snav-size,var(--btn-n-size,40px)) * var(--hero-navscale,1)) / 2);display:var(--hs09-arrows,flex)}
.hs09-nav:hover,.hs09-nav:focus,.hs09-nav:active,.v-focus__arrow:hover,.v-focus__arrow:focus,.v-focus__arrow:active{transform:none!important}
.hs09-nav--prev{left:.8rem}
.hs09-nav--next{right:.8rem}
.hs09-dots{position:absolute;left:0;right:0;bottom:1.1rem;z-index:4;display:var(--hs09-dots,flex);gap:.45rem;justify-content:center}
.hs09-dots .swiper-pagination-bullet{width:.65rem;height:.65rem;border-radius:9999px;background:var(--hs09-dot,#c9c4c1);opacity:1;margin:0!important;transition:background .2s}
.hs09-dots .swiper-pagination-bullet-active{background:var(--hs09-dot-active,var(--primary-color,#e11d48))}

@media (max-width:900px){
  .hs09-wrap{flex-direction:column;min-height:var(--hs09-min-h-m,auto);text-align:center}
  .hs09-copy{order:1;flex:none;max-width:none;width:100%;text-align:center}
  .hs09-ctas{justify-content:center}
  .hs09-eyebrow{justify-content:center}
  .hs09-stage{order:2;flex:none;width:100%;min-height:0;overflow:hidden}
  .hs09-el{width:min(100%,28rem,calc(var(--hs09-img-w,100) * 1%));transform:none;margin:0 auto}
  .hs09[style*="--hs09-m-order:image-first"] .hs09-stage,.hs09[style*="--hs09-m-order: image-first"] .hs09-stage{order:0}
  .hs09[style*="--hs09-m-order:image-first"] .hs09-copy,.hs09[style*="--hs09-m-order: image-first"] .hs09-copy{order:1}
  /* compact stacked hero: tight spacing, smaller headline and picture */
  .hs09-wrap{gap:1rem;padding-top:calc(var(--sec-buf-t,0rem) * .5);padding-bottom:calc(var(--sec-buf-b,0rem) * .5)}
  .hs09-headline{font-size:var(--hs09-fs,clamp(1.7rem,7vw,2.6rem))}
  .hs09-sub{margin-top:.7rem}
  .hs09-ctas{margin-top:1.1rem}
  .hs09-el{width:min(100%,20rem,calc(var(--hs09-img-w,100) * 1%))}
}
/* phones swipe: no Back / Next arrows below tablet width */
@media (max-width:767px){.hs09-nav{display:none}.hs09{--hs09-safe:0px}}
@media (prefers-reduced-motion:reduce){.hs09-cover,.hs09 .hs09-in,.hs09 .hs09-copy{animation:none!important}}

/* ═══════════════════════════════════════════════════════════════════════
   §BK3 — Category Grid: Masonry Photo Tiles (cg-02)
   Pinterest-style CSS-columns masonry, same technique as ig-01 (Gallery —
   Masonry Grid): a repeating 6-item height cycle gives the staggered look
   without JS. Each tile is one big clickable <a> — photo, colour tint,
   bottom-left title/sub-line over a gradient so text reads on any photo.
   ═══════════════════════════════════════════════════════════════════════ */
.cg02-wrap{margin:0 auto;box-sizing:border-box}
.cg02-grid{columns:1;column-gap:var(--cg02-gap,1rem)}
@media (min-width:640px){.cg02-grid{columns:2}}
@media (min-width:1024px){.cg02-grid{columns:3}}
.cg02-item{position:relative;display:block;break-inside:avoid;margin-bottom:var(--cg02-gap,1rem);overflow:hidden;border-radius:var(--cg02-radius,.75rem);text-decoration:none;color:inherit;background:var(--cg02-item-bg,var(--bg-muted,#f3f4f6));
  border:var(--cg02-border-w,0px) solid var(--cg02-border-color,var(--card-border,#e5e7eb));box-shadow:var(--cg02-shadow,0 8px 24px rgba(0,0,0,.1))}
.cg02-item[style*="--cg02-card:0"],.cg02-item[style*="--cg02-card: 0"]{border-width:0;box-shadow:none}
/* height cycle repeats every 6 tiles, on both axes of the flowed columns, for the staggered/masonry look */
.cg02-item:nth-child(6n+1){height:340px}
.cg02-item:nth-child(6n+2){height:220px}
.cg02-item:nth-child(6n+3){height:280px}
.cg02-item:nth-child(6n+4){height:260px}
.cg02-item:nth-child(6n+5){height:200px}
.cg02-item:nth-child(6n+6){height:320px}
.cg02-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}
.cg02-item:hover .cg02-img{transform:scale(1.05)}
.cg02-tint{position:absolute;inset:0;background:var(--cg02-item-tint,var(--cg02-default-tint,transparent));opacity:calc(var(--cg02-tint-op,35) / 100);pointer-events:none}
/* text position: 9-point placement via a class the editor toggles on .cg02-content (renderClassSelect, the same shared mechanism as any other per-item class-select field — no bespoke JS needed). The backdrop itself is a separate section-wide setting (--cg02-textbg), independent of the item Tint / Background colour. */
.cg02-content{position:absolute;z-index:2;display:inline-flex;flex-direction:column;gap:.15rem;
  max-width:calc(100% - 2rem);padding:.5rem .75rem;border-radius:.5rem;background:var(--cg02-textbg,rgba(0,0,0,.55));
  bottom:1rem;left:1rem;align-items:flex-start;text-align:left}
.cg02-content.cg02-pos-top-left{top:1rem;right:auto;bottom:auto;left:1rem;transform:none;align-items:flex-start;text-align:left}
.cg02-content.cg02-pos-top-center{top:1rem;right:auto;bottom:auto;left:50%;transform:translateX(-50%);align-items:center;text-align:center}
.cg02-content.cg02-pos-top-right{top:1rem;right:1rem;bottom:auto;left:auto;transform:none;align-items:flex-end;text-align:right}
.cg02-content.cg02-pos-middle-left{top:50%;right:auto;bottom:auto;left:1rem;transform:translateY(-50%);align-items:flex-start;text-align:left}
.cg02-content.cg02-pos-middle-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%);align-items:center;text-align:center}
.cg02-content.cg02-pos-middle-right{top:50%;right:1rem;bottom:auto;left:auto;transform:translateY(-50%);align-items:flex-end;text-align:right}
.cg02-content.cg02-pos-bottom-left{top:auto;right:auto;bottom:1rem;left:1rem;transform:none;align-items:flex-start;text-align:left}
.cg02-content.cg02-pos-bottom-center{top:auto;right:auto;bottom:1rem;left:50%;transform:translateX(-50%);align-items:center;text-align:center}
.cg02-content.cg02-pos-bottom-right{top:auto;right:1rem;bottom:1rem;left:auto;transform:none;align-items:flex-end;text-align:right}
.cg02-title{font-weight:800;font-size:1.05rem;color:var(--cg02-item-color,var(--cg02-title-color,var(--text-inverse,#fff)));line-height:1.2}
.cg02-sub{color:var(--cg02-item-color,var(--cg02-sub-color,var(--text-inverse,#f3f4f6)));opacity:.9}
@media (prefers-reduced-motion:reduce){.cg02-img{transition:none}}
/* Theme-owned header (imported themes): same scrolled state as #rn-navbar, keyed on [data-hdr-scroll].
   --hdr-text-now carries the scrolled text colour to every header text that reads it. */
header[data-hdr-scroll].is-scrolled{background:var(--hdr-scrolled-bg,var(--hdr-bg,#fff)) !important;box-shadow:var(--hdr-shadow-scroll,var(--hdr-shadow,none)) !important;backdrop-filter:var(--hdr-blur-scroll,var(--hdr-blur,none)) !important;-webkit-backdrop-filter:var(--hdr-blur-scroll,var(--hdr-blur,none)) !important;--hdr-text-now:var(--hdr-text-scrolled,var(--hdr-text,#0f172a))}

/* v-dd-panel: a <details> dropdown panel slides down from its trigger (header search, mobile menu). */
@keyframes vDdIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
details[open]>.v-dd-panel{animation:vDdIn .18s ease-out}
@media(prefers-reduced-motion:reduce){details[open]>.v-dd-panel{animation:none}}

/* ── Cookie consent banner (sf-consent.js) ─────────────────────────────────────────────────────────────────────────── */
.v-consent{position:fixed;left:0;right:0;bottom:0;z-index:2147483000;background:var(--bg-color,#fff);color:var(--text-color,#374151);border-top:1px solid var(--border-color,#e5e7eb);box-shadow:0 -10px 30px -18px rgba(0,0,0,.35);font-family:var(--font-family,inherit);font-size:.92rem;line-height:1.5;animation:vConsentUp .35s ease-out both}
@keyframes vConsentUp{from{transform:translateY(100%);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.v-consent{animation:none}}
.v-consent[hidden],.v-consent__fab[hidden],.v-consent__bar[hidden],.v-consent__panel[hidden]{display:none}
.v-consent__bar{max-width:80rem;margin:0 auto;padding:.8rem clamp(1rem,3vw,2rem);display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1.5rem}
.v-consent__text{margin:0;flex:1 1 24rem;min-width:0}
.v-consent__link{color:var(--primary-dark,var(--primary-color,#2563eb));text-decoration:underline;font-weight:600}
.v-consent__actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}
.v-consent__btn{cursor:pointer;border-radius:var(--btn-p-radius,.5rem);padding:.6rem 1.1rem;font:inherit;font-weight:700;line-height:1.2;border:1.5px solid var(--text-strong,#111827);background:transparent;color:var(--text-strong,#111827)}
.v-consent__btn--primary{background:var(--btn-p-bg,var(--primary-color,#2563eb));border-color:var(--btn-p-bg,var(--primary-color,#2563eb));color:var(--btn-p-text,var(--text-strong,#111827))}
.v-consent__btn:focus-visible,.v-consent__fab:focus-visible,.v-consent__row input:focus-visible{outline:3px solid var(--primary-color,#2563eb);outline-offset:2px}
.v-consent__panel{max-width:46rem;margin:0 auto;padding:1.2rem clamp(1rem,3vw,2rem) 1.4rem;display:grid;gap:.9rem}
.v-consent__row{display:flex;align-items:flex-start;gap:.8rem;cursor:pointer}
.v-consent__row input{width:1.15rem;height:1.15rem;margin-top:.2rem;accent-color:var(--primary-color,#2563eb);flex:none}
.v-consent__rowtxt{display:grid;gap:.1rem}
.v-consent__rowtxt small{color:var(--text-muted,#6b7280);font-size:.82rem}
.v-consent__fab{position:fixed;left:1rem;bottom:1rem;z-index:2147482999;width:2.6rem;height:2.6rem;border-radius:9999px;border:1px solid var(--border-color,#e5e7eb);background:var(--bg-color,#fff);color:var(--text-strong,#111827);box-shadow:0 6px 16px -6px rgba(0,0,0,.35);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
@media (max-width:640px){.v-consent__actions{width:100%}.v-consent__actions .v-consent__btn{flex:1 1 auto}}
