    :root {
  --color-brand-950: #3e9796;
  --color-brand-900: #426892;
  --color-brand-800: #426892;
  --color-brand-700: #313f72;
  --color-primary-50: #DEE2E2;
  --color-primary-100: #CBD6D6;
  --color-primary-500: #48B0AF;
  --color-primary-600: #3e9796;
  --color-primary-700: #327A79;
  --color-primary: #3e9796;
  --color-primary-hover: #327A79;
  --color-primary-subtle: #DEE2E2;
  --color-accent-400: #FBCB7E;
  --color-accent-500: #f9b548;
  --color-accent-600: #F8A31C;
  --color-accent: #f9b548;
  --color-accent-hover: #F8A31C;
  --color-text-on-accent: #ffffff;
  --color-success: #6cb33f;
  --color-error: #e23b3b;
  --color-danger-500: #e23b3b;
  --color-warning: #d97706;
  --color-bg: #eef1f6;
  --color-canvas: #eef1f6;
  --color-surface: #ffffff;
  --color-ink: #426892;
  --color-muted: #6b7280;
  --color-line: #e5e8ef;
  --color-text-primary: #426892;
  --color-text-secondary: #6b7280;
  --color-text-inverse: #ffffff;
  --color-nav-bg: #fafafa;
  --color-nav-bg-scrolled: #426892;
  --color-nav-text: #54B9B8;
  --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
  --font-heading: "Plus Jakarta Sans", "Inter", ui-sans-serif, system-ui, sans-serif;
  --font-display: "Plus Jakarta Sans", "Inter", ui-sans-serif, system-ui, sans-serif;
  --font-body: "Inter", ui-sans-serif, system-ui, sans-serif;
  --radius-button: 6px;
  --radius-card: 8px;
  --radius-input: 6px;
  --radius-badge: 4px;
  --radius-modal: 12px;
  --space-section-sm: 48px;
  --space-section-md: 80px;
  --space-section-lg: 128px;
  --space-container-max: 1440px;
  --shadow-card-rest: 0 1px 3px 0 rgba(31,39,55,0.08);
  --shadow-card-hover: 0 10px 20px -3px rgba(31,39,55,0.10);
  --shadow-focus-primary: 0 0 0 3px rgba(53,81,160,0.25);
  --motion-ease: cubic-bezier(0,0,.2,1);
  --duration-fast: .15s;
  --duration-base: .3s;
  --duration-slow: .7s;
  --marquee-duration: 26s;
  --h-transform: uppercase;
  --h-letter-spacing: -.01em;
  --h-weight: 900;
  --h-line-height: .95;
  --h1-size: clamp(1.25rem, 2.2vw, 1.75rem);
  --h2-size: clamp(1.25rem, 2.2vw, 1.75rem);
  --h3-size: clamp(1.25rem, 2.2vw, 1.75rem);
  --font-size-base: 1rem;
  --line-height-base: 1.65;
  --btn-pad-y: .75rem;
  --btn-pad-x: 1.5rem;
  --btn-font-size: .8rem;
  --btn-weight: 600;
  --btn-letter-spacing: .07em;
  --btn-transform: uppercase;
  --grad-angle: 135deg;
  --hero-overlay-grad: linear-gradient(108deg, rgba(14,5,23,.90) 0%, rgba(28,8,44,.65) 48%, rgba(28,8,44,.22) 100%);
  --color-header-scrolled: rgba(14,5,23,.96);
  --color-header-scrolled-solid: rgba(14,5,23,.97);
  --scrollbar-thumb: #B882C2;
  --scrollbar-thumb-hover: #9B5CAF;
  --section-gap: clamp(2.75rem, 5vw, 4.75rem);
  --band-pad: clamp(3rem, 7vw, 6rem);
  --card-pad: .75rem .875rem 1rem;
  --card-pad-lg: 1.75rem;
  --color-accent-active: #E89208;
  --color-accent-subtle: #FFFFFF;
  --color-sale: #f9b548;
  --color-nav-text-scrolled: #efefef;
  --color-primary-active: #286160;
  --color-primary-subtle-hover: #CBD6D6;
  --color-border-focus: #3e9796;
  --color-badge-new: #3e9796;
  --h3-color: #f9b548;
  --h4-color: #3e9796;
  --h4-font: "Barlow Condensed", system-ui, sans-serif;
  --h5-font: Caveat, system-ui, sans-serif;
  --h4-size: clamp(1.2rem, 2vw, 1.6rem);
  --h5-size: clamp(1.25rem, 2.2vw, 1.75rem);
  --h6-size: clamp(1.2rem, 2vw, 1.6rem);
  --h5-transform: none;
  --h6-transform: none;
  --h6-color: #3e9796;
        /* --- engine defaults (overridden by token set above if present) --- */
        --radius-sm: var(--radius-badge, 2px);
        --radius: var(--radius-button, 4px);
        --radius-lg: var(--radius-card, 8px);
        --radius-xl: var(--radius-modal, 12px);
        --shadow-sm: var(--shadow-card-rest, 0 1px 3px rgba(28,4,35,.08));
        --shadow: 0 4px 6px -1px rgba(28,4,35,.08), 0 2px 4px -2px rgba(28,4,35,.04);
        --shadow-lg: var(--shadow-card-hover, 0 10px 20px -3px rgba(28,4,35,.10));
        --ring: var(--shadow-focus-primary, 0 0 0 3px rgba(107,31,123,.25));
        --grad-brand: linear-gradient(var(--grad-angle, 135deg), var(--grad-brand-from, var(--color-brand-900, var(--color-nav-bg))), var(--grad-brand-to, var(--color-primary-600, var(--color-primary))));
        --grad-accent: linear-gradient(var(--grad-angle, 135deg), var(--color-accent-500, var(--color-accent)), var(--color-accent-600, var(--color-accent-hover)));
        --color-panel-dark: var(--color-brand-950, #16181b);
        --container: var(--space-container-max, 90rem);
        --ease: var(--motion-ease, cubic-bezier(0,0,.2,1));
        --dur-fast: var(--duration-fast, .15s);
        --dur-base: var(--duration-base, .3s);
        --dur-slow: var(--duration-slow, .7s);
        --content-width: var(--container, 90rem);
        --content-width-narrow: 48rem;
        /* W0 (Wave 2) — motion množitelj: W1 motionLevel ga SAMO zmanjšuje (subtle .6, off 0);
           variante gibanja računajo trajanja kot calc(var(--dur-*) * var(--motion-scale)). */
        --motion-scale: var(--motion-level, 1);
        --sf-reveal: fade-up;
        --sf-card-motion: rise-stagger;
        --sf-search-suggest: rich-panel;
        --header-scrolled-bg: var(--color-nav-bg-scrolled, var(--color-header-scrolled, rgba(14,5,23,.96)));
        --hero-overlay: var(--hero-overlay-grad, linear-gradient(108deg, rgba(14,5,23,.90) 0%, rgba(28,8,44,.65) 48%, rgba(28,8,44,.22) 100%));
    }

    * { box-sizing: border-box; }
    html, body { margin: 0; padding: 0; }
    html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
    body {
        background: var(--color-canvas); color: var(--color-ink);
        font-family: var(--font-sans); line-height: var(--line-height-base, 1.65);
        font-size: var(--font-size-base, 1rem); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
        /* `clip` (ne `hidden`): reže vodoravni preliv (full-bleed trik) ENAKO kot hidden, a NE
           ustvari drsnega konteksta — sicer overflow-y postane auto in telo prevzame drsenje,
           kar POKVARI position:sticky (npr. drsni napis se ne prilepi na vrh). */
        overflow-x: clip;
    }
    a { color: var(--color-primary-600); text-decoration: none; }
    img { max-width: 100%; display: block; }
    ::selection { background: var(--color-primary-500); color: #fff; }

    .sf-container { max-width: var(--container); margin: 0 auto; padding: 0 1.5rem; }

    h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading); color: var(--color-brand-900); margin: 0 0 .5rem; line-height: var(--h-line-height, 1.05); letter-spacing: var(--h-letter-spacing, .03em); font-weight: var(--h-weight, 800); text-transform: var(--h-transform, uppercase); }
    h1 { font-size: var(--h1-size, clamp(2.5rem, 6vw, 4.5rem)); color: var(--h1-color, var(--color-brand-900)); font-family: var(--h1-font, var(--font-heading)); }
    h2 { font-size: var(--h2-size, clamp(1.75rem, 3.5vw, 2.75rem)); color: var(--h2-color, var(--color-brand-900)); font-family: var(--h2-font, var(--font-heading)); }
    h3 { font-size: var(--h3-size, clamp(1.2rem, 2vw, 1.6rem)); color: var(--h3-color, var(--color-brand-900)); font-family: var(--h3-font, var(--font-heading)); }
    h4 { font-size: var(--h4-size, clamp(1.05rem, 1.6vw, 1.3rem)); color: var(--h4-color, var(--color-brand-900)); font-family: var(--h4-font, var(--font-heading)); }
    h5 { font-size: var(--h5-size, 1.1rem); color: var(--h5-color, var(--color-brand-900)); font-family: var(--h5-font, var(--font-heading)); }
    h6 { font-size: var(--h6-size, .95rem); color: var(--h6-color, var(--color-brand-900)); font-family: var(--h6-font, var(--font-heading)); }
    h1 { text-transform: var(--h1-transform, var(--h-transform, uppercase)); border-left: var(--h1-bar-w, 0px) solid var(--h1-bar-color, currentColor); padding-left: var(--h1-bar-pad, 0px); }
    h1::after { content: ""; display: var(--h1-under-display, none); width: var(--h1-under-w, 2.5rem); height: var(--h1-under-h, 3px); background: var(--h1-under-color, currentColor); margin-top: .5rem; border-radius: 999px; }
    h2 { text-transform: var(--h2-transform, var(--h-transform, uppercase)); border-left: var(--h2-bar-w, 0px) solid var(--h2-bar-color, currentColor); padding-left: var(--h2-bar-pad, 0px); }
    h2::after { content: ""; display: var(--h2-under-display, none); width: var(--h2-under-w, 2.5rem); height: var(--h2-under-h, 3px); background: var(--h2-under-color, currentColor); margin-top: .5rem; border-radius: 999px; }
    h3 { text-transform: var(--h3-transform, var(--h-transform, uppercase)); border-left: var(--h3-bar-w, 0px) solid var(--h3-bar-color, currentColor); padding-left: var(--h3-bar-pad, 0px); }
    h3::after { content: ""; display: var(--h3-under-display, none); width: var(--h3-under-w, 2.5rem); height: var(--h3-under-h, 3px); background: var(--h3-under-color, currentColor); margin-top: .5rem; border-radius: 999px; }
    h4 { text-transform: var(--h4-transform, var(--h-transform, uppercase)); border-left: var(--h4-bar-w, 0px) solid var(--h4-bar-color, currentColor); padding-left: var(--h4-bar-pad, 0px); }
    h4::after { content: ""; display: var(--h4-under-display, none); width: var(--h4-under-w, 2.5rem); height: var(--h4-under-h, 3px); background: var(--h4-under-color, currentColor); margin-top: .5rem; border-radius: 999px; }
    h5 { text-transform: var(--h5-transform, var(--h-transform, uppercase)); border-left: var(--h5-bar-w, 0px) solid var(--h5-bar-color, currentColor); padding-left: var(--h5-bar-pad, 0px); }
    h5::after { content: ""; display: var(--h5-under-display, none); width: var(--h5-under-w, 2.5rem); height: var(--h5-under-h, 3px); background: var(--h5-under-color, currentColor); margin-top: .5rem; border-radius: 999px; }
    h6 { text-transform: var(--h6-transform, var(--h-transform, uppercase)); border-left: var(--h6-bar-w, 0px) solid var(--h6-bar-color, currentColor); padding-left: var(--h6-bar-pad, 0px); }
    h6::after { content: ""; display: var(--h6-under-display, none); width: var(--h6-under-w, 2.5rem); height: var(--h6-under-h, 3px); background: var(--h6-under-color, currentColor); margin-top: .5rem; border-radius: 999px; }
    p { margin: .5rem 0; }
    .sf-eyebrow { display: inline-flex; align-items: center; gap: .6rem; font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--color-accent-500); }
    .sf-eyebrow::before { content: ""; display: block; width: 1.5rem; height: 2px; background: currentColor; }
    .sf-eyebrow--pill, .sf-eyebrow--pillSolid { padding: .28rem .75rem; border-radius: 999px; letter-spacing: .12em; }
    .sf-eyebrow--pill { border: 1px solid color-mix(in srgb, currentColor 45%, transparent); }
    .sf-eyebrow--pillSolid { background: var(--color-primary); color: var(--color-text-on-accent, #fff); }
    .sf-eyebrow--pill::before, .sf-eyebrow--pillSolid::before { display: none; }
    .sf-lead { font-size: 1.05rem; color: var(--color-muted); max-width: 42rem; font-family: var(--font-sans); font-weight: 400; text-transform: none; letter-spacing: 0; }
    .sf-grad-text { color: var(--color-accent-500); }

    /* ============ announcement bar ============ */
    .sf-announce { background: var(--color-accent-500); color: #fff; font-size: .72rem; text-align: center; padding: .45rem 1rem; letter-spacing: .04em; font-family: var(--font-sans); font-weight: 500; }
    .sf-announce strong { font-weight: 700; }

    .sh-scope { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin: 0 0 .9rem; font-size: .85rem; color: var(--color-muted, #857597); }
    .sh-scope-cat { font-weight: 600; color: var(--color-ink, #1a1128); background: var(--color-canvas, rgba(0,0,0,.05)); padding: .2rem .6rem; border-radius: 999px; }
    .sh-scope-clear { color: var(--color-accent-600, var(--color-accent-500)); text-decoration: none; font-weight: 500; }
    .sh-scope-clear:hover { text-decoration: underline; }

    /* ============ header ============ */
    .sf-chrome-row { position: relative; }
    /* transparent variant — fades in on scroll (default for hero-over-image pages) */
    .sf-header { position: fixed; top: 0; left: 0; right: 0; z-index: 200; background: transparent; transition: background .35s var(--ease), box-shadow .35s var(--ease); }
    .sf-header.is-stuck { background: var(--header-scrolled-bg); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: 0 2px 28px rgba(0,0,0,.4); }
    /* solid variant — always dark (e.g. Grašca: brand-900 always visible) */
    .sf-header--solid { background: var(--color-nav-bg, var(--color-brand-900)) !important; }
    .sf-header--solid.is-stuck { background: var(--color-nav-bg-scrolled, var(--color-header-scrolled-solid, rgba(14,5,23,.97))) !important; backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: 0 2px 28px rgba(0,0,0,.4); }

    /* ── configured-header settings (position × cover), set by the Header editor ──
       Four explicit combinations so behaviour never depends on the base default. */
    /* FIXED + COVER: pinned, transparent over the first block (banner shows through), darkens on scroll */
    .sf-header--fixed.sf-header--over   { position: fixed;    background: transparent; }
    /* FIXED + PUSH: pinned solid bar; a spacer below offsets the page content */
    .sf-header--fixed.sf-header--push   { position: fixed;    background: var(--color-nav-bg, var(--color-brand-900)); }
    /* SCROLL + COVER: transparent over the banner, but scrolls away with the page */
    .sf-header--scroll.sf-header--over  { position: absolute; background: transparent; }
    /* SCROLL + PUSH: solid bar in normal flow, scrolls away with the page */
    .sf-header--scroll.sf-header--push  { position: relative; background: var(--color-nav-bg, var(--color-brand-900)); }
    /* darken/elevate the transparent "cover" header once scrolled (push variants are already solid) */
    .sf-header--over.is-stuck  { background: var(--header-scrolled-bg); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: 0 2px 28px rgba(0,0,0,.4); }
    /* push variant je ob mirovanju že poln (--color-nav-bg); ob drsenju preide na scrolled barvo */
    .sf-header--push.is-stuck  { background: var(--color-nav-bg-scrolled, var(--color-nav-bg, var(--color-brand-900))); box-shadow: 0 2px 28px rgba(0,0,0,.4); }
    /* spacer keeps content clear of a fixed+push header (which is out of flow).
       --header-h is set by the storefront script; the fallback covers no-JS / other pages. */
    .sf-header-spacer { height: var(--header-h, 4.75rem); }

    /* ── Layer 3 (F3, docs/structural-presets.md): lupina glave + obnašanje ob drsenju ──
       Modifikatorji pridejo iz _HeaderZone.cshtml (tema, ne kroma); classic/solid ne dodata
       ničesar (privzeti markup nespremenjen). Kompozicija vrstic je stvar builderja. */
    /* pill — plavajoča zaobljena školjka; steklen videz deluje nad pasico in nad vsebino */
    .sf-header--v-pill {
        left: max(1rem, calc((100% - var(--container, 90rem)) / 2));
        right: max(1rem, calc((100% - var(--container, 90rem)) / 2));
        top: .75rem;
        border-radius: var(--radius-header-pill, 18px);
        background: var(--header-scrolled-bg);
        backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
        box-shadow: 0 6px 24px rgba(0,0,0,.22);
    }
    /* scroll+push je position:relative — inseti ne primejo, enak učinek dosežejo margine */
    .sf-header--scroll.sf-header--push.sf-header--v-pill {
        margin: .75rem auto 0; max-width: calc(var(--container, 90rem) - 2rem); width: auto;
    }
    .sf-header--v-pill .sf-search-panel { border-radius: 0 0 var(--radius-header-pill, 18px) var(--radius-header-pill, 18px); overflow: hidden; }
    .sf-header--v-pill + .sf-header-spacer { height: calc(var(--header-h, 4.75rem) + .75rem); }
    /* autohide — skrije se ob drsenju navzdol, prikaže ob drsenju navzgor (JS spodaj) */
    .sf-header--b-autohide { transition: transform .3s var(--ease), background .35s var(--ease), box-shadow .35s var(--ease); }
    .sf-header--b-autohide.is-hidden { transform: translateY(-130%); }
    /* compact — ob drsenju se vrstice stisnejo (inline padding vrstic prepiše !important) */
    .sf-header--b-compact.is-stuck { font-size: .95em; }
    .sf-header--b-compact.is-stuck .sf-chrome-row > div > div { padding-top: 5px !important; padding-bottom: 5px !important; }
    .sf-header .sf-container { display: flex; align-items: center; gap: 1.5rem; padding-top: .85rem; padding-bottom: .85rem; }
    .sf-logo { display: inline-flex; align-items: center; gap: .5rem; font-family: var(--font-heading); font-size: 1.4rem; font-weight: 900; color: #fff; letter-spacing: .04em; text-transform: uppercase; }
    .sf-logo-mark { display: none; }
    /* Preklop logotipa ob drsenju: pri mirovanju kaže --rest, ko se glava prilepi (.is-stuck)
       in obarva, kaže --scrolled (npr. svetel logotip na temni drsni glavi). Aktivno le, ko sta
       naložena oba (razred sf-logo--swap). */
    .sf-logo--swap .sf-logo-img--scrolled { display: none; }
    .sf-header.is-stuck .sf-logo--swap .sf-logo-img--rest { display: none; }
    .sf-header.is-stuck .sf-logo--swap .sf-logo-img--scrolled { display: inline-block; }
    .sf-nav { display: flex; gap: 2px; margin-left: .5rem; font-size: .75rem; font-weight: 600; }
    .sf-nav > a, .sf-nav .sf-nav-toggle { color: rgba(255,255,255,.72); padding: .5rem .65rem; border-radius: var(--radius); transition: background .15s var(--ease), color .15s var(--ease); display: inline-block; letter-spacing: .05em; text-transform: uppercase; font-family: var(--font-sans); }
    .sf-nav > a:hover, .sf-nav .sf-nav-toggle:hover { background: rgba(255,255,255,.08); color: #fff; }
    .sf-header-actions { margin-left: auto; display: flex; align-items: center; gap: .25rem; }
    .sf-iconbtn { position: relative; width: 2.4rem; height: 2.4rem; display: grid; place-items: center; border-radius: 50%; color: rgba(255,255,255,.8); background: transparent; border: 0; cursor: pointer; transition: background .15s var(--ease); }
    .sf-iconbtn:hover { background: rgba(255,255,255,.1); }
    .sf-iconbtn svg { width: 1.15rem; height: 1.15rem; }
    .sf-badge { position: absolute; top: .2rem; right: .2rem; min-width: 1.1rem; height: 1.1rem; padding: 0 .2rem; border-radius: 1rem; background: var(--color-accent-500); color: #fff; font-size: .62rem; font-weight: 800; display: grid; place-items: center; }
    .sf-search { display: flex; align-items: center; gap: .5rem; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.15); border-radius: var(--radius-lg); padding: .45rem .85rem; min-width: 14rem; color: rgba(255,255,255,.5); transition: border-color .2s var(--ease); }
    .sf-search:focus-within { border-color: rgba(255,255,255,.35); }
    .sf-search input { border: 0; outline: 0; background: transparent; font: inherit; font-size: .88rem; color: #fff; width: 100%; }
    .sf-search input::placeholder { color: rgba(255,255,255,.45); }
    .sf-search svg { width: 1rem; height: 1rem; flex: none; }

    /* ── sf-nav-lnk: unified nav link — same style for <a> and <span> ── */
    .sf-nav-lnk {
        display: inline-flex; align-items: center; gap: .3rem;
        color: var(--color-ink); padding: .5rem .75rem; border-radius: .6rem;
        white-space: nowrap; cursor: pointer; font-weight: 600; font-size: inherit;
        transition: background .2s var(--ease), color .2s var(--ease);
    }
    .sf-nav-lnk:hover, .sf-mega-item:hover > .sf-nav-lnk {
        background: var(--color-primary-50); color: var(--color-primary-700);
    }
    /* chrome-row header is dark — nav links and icon buttons in white */
    /* nav-lnk barva/velikost/debelina berejo blok-spremenljivke (chromeNav »Videz«); privzete = tema */
    .sf-chrome-row .sf-nav-lnk { color: var(--nav-link-color, color-mix(in srgb, var(--color-nav-text, #fff) 72%, transparent)); font-size: var(--nav-font-size, inherit); font-weight: var(--nav-font-weight, 600); }
    .sf-chrome-row .sf-nav-lnk:hover, .sf-chrome-row .sf-mega-item:hover > .sf-nav-lnk {
        background: var(--nav-link-hover-bg, rgba(255,255,255,.08)); color: var(--nav-link-hover-color, var(--color-nav-text, #fff));
    }
    .sf-chrome-row .sf-iconbtn { color: color-mix(in srgb, var(--color-nav-text, #fff) 80%, transparent); }
    .sf-chrome-row .sf-iconbtn:hover { background: rgba(255,255,255,.1); }

    /* ── Builder/Puck glava (nima .sf-chrome-row): TOP-LEVEL nav povezave naj tudi
       sledijo temo žetonu --color-nav-text, da nastavitve »Navigacija« veljajo tudi tu.
       Ciljamo LE neposredne otroke .sf-nav-ovf (povezave + mega sprožilci + »več« gumb) —
       elementi v spustnem .sf-mega-panel (.sf-mega-lnk, na svetli površini) ostanejo ink.
       Blok-spremenljivka --nav-link-color (chromeNav »Videz«) še vedno prevlada, če je nastavljena. */
    .sf-header .sf-nav-ovf > a.sf-nav-lnk,
    .sf-header .sf-nav-ovf > .sf-mega-item > .sf-nav-lnk,
    .sf-header .sf-nav-ovf > .sf-ovf-more {
        color: var(--nav-link-color, var(--color-nav-text, var(--color-ink)));
    }
    .sf-header .sf-nav-ovf > a.sf-nav-lnk:hover,
    .sf-header .sf-nav-ovf > .sf-mega-item:hover > .sf-nav-lnk,
    .sf-header .sf-nav-ovf > .sf-ovf-more:hover {
        color: var(--nav-link-hover-color, var(--color-nav-text, var(--color-ink)));
        background: var(--nav-link-hover-bg, color-mix(in srgb, var(--color-nav-text, #000) 14%, transparent));
    }
    /* ── Ločena barva povezav/ikon za DRSNO (scrolled) glavo ──
       Ob mirovanju glava uporablja --color-nav-text; ko se prilepi (.is-stuck) in ozadje
       preide na --color-nav-bg-scrolled, povezave in ikone preidejo na --color-nav-text-scrolled
       (fallback = --color-nav-text, torej brez spremembe, dokler urednik ne nastavi svoje barve).
       Velja za klasično (.sf-chrome-row) IN builder glavo (.sf-nav-ovf). */
    .sf-header.is-stuck .sf-chrome-row .sf-nav-lnk,
    .sf-header.is-stuck .sf-nav-ovf > a.sf-nav-lnk,
    .sf-header.is-stuck .sf-nav-ovf > .sf-mega-item > .sf-nav-lnk,
    .sf-header.is-stuck .sf-nav-ovf > .sf-ovf-more {
        color: var(--nav-link-color-scrolled, var(--color-nav-text-scrolled, var(--color-nav-text, var(--color-ink))));
    }
    .sf-header.is-stuck .sf-chrome-row .sf-iconbtn,
    .sf-header.is-stuck .sf-iconbtn,
    .sf-header.is-stuck .sf-chrome-row .sf-hb-toggle {
        color: var(--color-nav-text-scrolled, var(--color-nav-text, #fff));
    }
    /* Barva ikon glave (search/račun/želje/primerjava/košarica) — blok »Ikone« postavi
       --nav-icon / --nav-icon-scrolled na vsebnik. Pri mirovanju --nav-icon (fallback nav-text),
       ob drsenju --nav-icon-scrolled (fallback nav-text-scrolled → nav-icon → nav-text).
       Bolj specifično in kasneje od splošnega is-stuck pravila zgoraj, zato prevlada za ta blok. */
    .sf-header-actions .sf-iconbtn {
        color: var(--nav-icon, var(--color-nav-text, #fff));
    }
    .sf-header.is-stuck .sf-header-actions .sf-iconbtn {
        color: var(--nav-icon-scrolled, var(--color-nav-text-scrolled, var(--nav-icon, var(--color-nav-text, #fff))));
    }
    /* Hamburger (.sf-hb--auto) v builder glavi ni v .sf-chrome-row (postavljen je v .sf-column), zato
       ga is-stuck prebarvanje ni doseglo → na obarvani drsni glavi je ostal v barvi mirovanja in se
       ni videl (npr. na mobilnem). Priklopi ga na isto verigo kot ostale ikone: ob drsenju
       --nav-icon-scrolled → --color-nav-text-scrolled, torej ga urednik nastavi z istim gumbom. */
    .sf-header.is-stuck .sf-hb-toggle {
        color: var(--nav-icon-scrolled, var(--color-nav-text-scrolled, var(--nav-icon, var(--color-nav-text, #fff))));
    }
    .sf-caret { width: .5rem; height: .32rem; opacity: .5; flex: none; transition: transform .2s var(--ease); }
    /* menu-item icon (lucide via CSS mask; inherits text colour) */
    .sf-ico { display: inline-block; width: 1.05em; height: 1.05em; flex: none; background: currentColor; vertical-align: -.15em; margin-right: .4em; -webkit-mask: var(--m) center / contain no-repeat; mask: var(--m) center / contain no-repeat; }

    /* ============ hamburger nav (chromeNav display=hamburger) ============ */
    .sf-hb { position: relative; display: inline-flex; }
    .sf-hb-toggle { display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border: 0; border-radius: .8rem; background: color-mix(in srgb, currentColor 10%, transparent); color: inherit; cursor: pointer; transition: background .2s var(--ease), transform .15s var(--ease); }
    /* v temni/barvni chrome vrstici črtice sledijo barvi nav povezav (kot .sf-chrome-row .sf-iconbtn) */
    .sf-chrome-row .sf-hb-toggle { color: var(--nav-link-color, color-mix(in srgb, var(--color-nav-text, #fff) 85%, transparent)); }
    .sf-hb-toggle:hover { background: color-mix(in srgb, currentColor 18%, transparent); }
    .sf-hb-toggle:active { transform: scale(.92); }
    .sf-hb-toggle:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
    .sf-hb-bars { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 5px; }
    .sf-hb-bars span { display: block; width: 20px; height: 2.5px; background: currentColor; border-radius: 99px; transition: transform .25s var(--ease), opacity .2s, width .25s var(--ease); }
    .sf-hb-bars span:nth-child(2) { width: 13px; }
    .sf-hb-toggle[aria-expanded="true"] .sf-hb-bars span { width: 20px; }
    .sf-hb-scrim { position: fixed; inset: 0; background: rgba(15,23,42,.45); z-index: 200; opacity: 0; pointer-events: none; transition: opacity .3s ease; }
    .sf-hb-scrim.is-open { opacity: 1; pointer-events: auto; }
    .sf-hb-drawer { position: fixed; top: 0; left: 0; bottom: 0; width: min(360px, 86vw); background: var(--color-surface); z-index: 201; box-shadow: var(--shadow-lg); transform: translateX(-101%); transition: transform .3s cubic-bezier(.22,.61,.36,1); display: flex; flex-direction: column; }
    .sf-hb-drawer.is-open { transform: translateX(0); }
    .sf-hb-head { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; border-bottom: 1px solid var(--color-line); }
    .sf-hb-title { font-family: var(--font-heading); font-weight: 800; color: var(--color-brand-900); font-size: 1.1rem; }
    .sf-hb-close { border: 0; background: transparent; font-size: 1.7rem; line-height: 1; color: var(--color-muted); cursor: pointer; width: 2.2rem; height: 2.2rem; border-radius: .5rem; }
    .sf-hb-close:hover { background: var(--color-canvas); color: var(--color-ink); }
    .sf-hb-title { flex: 1; text-align: center; }
    .sf-hb-back { border: 0; background: transparent; cursor: pointer; color: var(--color-muted); width: 2rem; height: 2rem; border-radius: .5rem; display: inline-flex; align-items: center; justify-content: center; }
    .sf-hb-back svg { width: .55rem; height: .9rem; }
    .sf-hb-back:hover { background: var(--color-canvas); color: var(--color-ink); }
    .sf-hb-back[hidden] { display: none; }
    /* drill-down panel stack */
    .sf-hb-panels { position: relative; flex: 1; overflow: hidden; }
    .sf-hb-panel { position: absolute; inset: 0; overflow-y: auto; padding: .5rem; background: var(--color-surface); transform: translateX(100%); transition: transform .3s cubic-bezier(.22,.61,.36,1); }
    .sf-hb-panel.is-active { transform: translateX(0); }
    .sf-hb-panel.is-prev { transform: translateX(-100%); }
    .sf-hb-lnk { display: flex; align-items: center; gap: .6rem; width: 100%; text-align: left; padding: .85rem .9rem; border: 0; background: transparent; border-radius: .6rem; color: var(--color-ink); font: inherit; font-weight: 600; cursor: pointer; }
    .sf-hb-lnk:hover { background: var(--color-primary-50); color: var(--color-primary-700); }
    .sf-hb-lnk--desc { align-items: flex-start; }
    .sf-hb-lnk-c { display: flex; flex-direction: column; gap: .12rem; min-width: 0; }
    .sf-hb-desc { font-size: .78rem; font-weight: 400; line-height: 1.3; color: var(--color-muted); white-space: normal; }
    .sf-hb-grow { flex: 1; }
    .sf-hb-fwd { width: .42rem; height: .7rem; margin-left: auto; opacity: .4; flex: none; }
    .sf-hb-all { color: var(--color-primary-700); font-weight: 700; border-bottom: 1px solid var(--color-line); border-radius: 0; margin-bottom: .25rem; }
    .sf-hb-mega { padding: .25rem .5rem 1rem; }
    .sf-hb-mega > * + * { margin-top: 1rem; }
    /* auto-hamburger (chromeNav mobile=hamburger, samo v glavi): na namizju je gumb skrit in
       velja inline <nav>; na ≤760px se inline nav umakne, hamburger + drsni predal prevzameta. */
    .sf-hb--auto { display: none; }
    @media (max-width: 760px) {
        .sf-hb--auto { display: inline-flex; }
        .sf-nav--collapse { display: none !important; }
        /* Na telefonu hamburger stoji v isti vrsti kot iskanje, račun, priljubljeni in košarica.
           S svojim ozadjem, zaobljenim kvadratom in 2.75rem je edini, ki štrli iz vrste krogcev,
           zato tu prevzame slog .sf-iconbtn. Na namizju ostane, kot je — tam stoji sam. */
        .sf-hb-toggle { width: 2.4rem; height: 2.4rem; border-radius: 50%; background: transparent; }
        .sf-hb-toggle:hover { background: color-mix(in srgb, currentColor 12%, transparent); }
        /* Črtice na širino ikon v vrsti (1.15rem). Le širina — razmiki ostanejo, da se ob
           odprtem predalu prelijejo v X po nespremenjeni geometriji. */
        .sf-hb-bars span { width: 1.15rem; }
        .sf-hb-bars span:nth-child(2) { width: .75rem; }
    }
    /* Kategorije v mobilnem meniju: [data-scat-mob] je le inertni vir markupa (JS ga izprazni
       v predal navigacije), zato ostane skrit. Fallback: če predala ni, naj spustni meni
       kategorij ostane uporaben tudi na ≤760px (premaga .sf-scat{display:none} iz sf-scat.js). */
    .sf-catmob { display: none !important; }
    @media (max-width: 760px) { .sf-scat--mobfallback { display: flex !important; } }
    /* odprt predal: hamburger črtice se prelijejo v X */
    .sf-hb-toggle[aria-expanded="true"] .sf-hb-bars span:nth-child(1) { transform: translateY(7.5px) rotate(45deg); }
    .sf-hb-toggle[aria-expanded="true"] .sf-hb-bars span:nth-child(2) { opacity: 0; }
    .sf-hb-toggle[aria-expanded="true"] .sf-hb-bars span:nth-child(3) { transform: translateY(-7.5px) rotate(-45deg); }
    /* postopni prikaz vrstic aktivnega panela (ob odprtju in ob vsakem drill-down/nazaj) */
    @keyframes sfHbRow { from { opacity: 0; transform: translateX(-.55rem); } to { opacity: 1; transform: none; } }
    .sf-hb-drawer.is-open .sf-hb-panel.is-active > * { animation: sfHbRow .32s var(--ease) backwards; }
    .sf-hb-drawer.is-open .sf-hb-panel.is-active > *:nth-child(2) { animation-delay: .04s; }
    .sf-hb-drawer.is-open .sf-hb-panel.is-active > *:nth-child(3) { animation-delay: .08s; }
    .sf-hb-drawer.is-open .sf-hb-panel.is-active > *:nth-child(4) { animation-delay: .12s; }
    .sf-hb-drawer.is-open .sf-hb-panel.is-active > *:nth-child(5) { animation-delay: .16s; }
    .sf-hb-drawer.is-open .sf-hb-panel.is-active > *:nth-child(6) { animation-delay: .2s; }
    .sf-hb-drawer.is-open .sf-hb-panel.is-active > *:nth-child(7) { animation-delay: .24s; }
    .sf-hb-drawer.is-open .sf-hb-panel.is-active > *:nth-child(n+8) { animation-delay: .28s; }
    @media (prefers-reduced-motion: reduce) {
        .sf-hb-drawer, .sf-hb-panel { transition: none; }
        .sf-hb-drawer.is-open .sf-hb-panel.is-active > * { animation: none; }
    }
    .sf-mega-item:not(.no-hover):hover .sf-caret, .sf-mega-item.is-open .sf-caret { transform: rotate(180deg); }
    /* nav trigger as a <button> (group buttons + click-to-open caret) — strip native chrome */
    button.sf-nav-lnk { background: transparent; border: 0; }
    .sf-mega-trigger { font-family: inherit; }
    .sf-mega-caret {
        background: transparent; border: 0; cursor: pointer; color: inherit;
        display: inline-flex; align-items: center; padding: .5rem .35rem; margin-left: -.4rem;
        border-radius: .5rem; transition: background .2s var(--ease);
    }
    .sf-mega-caret:hover { background: var(--color-primary-50); }
    .sf-chrome-row .sf-mega-caret { color: var(--nav-link-color, var(--color-primary-600)); }
    .sf-chrome-row .sf-mega-caret:hover { background: rgba(255,255,255,.12); }

    /* ── mega-menu (siteHeader block, full-width panel) ── */
    /* sf-mega-item must be position:static so panel anchors to sf-header (position:sticky) */
    .sf-mega-item { display: inline-flex; align-items: center; }
    .sf-mega-panel {
        position: absolute; left: 0; right: 0; top: 100%;
        background: var(--color-surface);
        border-top: 1px solid var(--color-line);
        border-bottom: 1px solid var(--color-line);
        box-shadow: var(--shadow-lg);
        z-index: 50; padding: 1.25rem 0 1.75rem;
        opacity: 0; visibility: hidden;
        transform: translateY(-.35rem);
        /* visibility delay on hide so mouse can cross the gap between trigger and panel */
        transition: opacity .18s var(--ease), transform .18s var(--ease), visibility 0s .35s;
    }
    .sf-mega-item:not(.no-hover):hover .sf-mega-panel, .sf-mega-item.is-open .sf-mega-panel {
        opacity: 1; visibility: visible; transform: translateY(0);
        transition: opacity .18s var(--ease), transform .18s var(--ease), visibility 0s 0s;
    }
    .sf-mega-inner {
        max-width: var(--container); margin: 0 auto; padding: 0 1.5rem;
        display: flex; flex-wrap: wrap; gap: .2rem 3rem; align-items: flex-start;
    }
    /* rich block-document mega content renders in normal block flow (columns/sections lay out themselves) */
    .sf-mega-inner--doc { display: block; }
    .sf-mega-inner--doc > * + * { margin-top: 1rem; }
    /* Predstavitev kategorije v panelu (chromeNav submenuInfo=on): povezave levo,
       kartica kategorije (markup _ScatInfo, CSS iz sf-scat.js) desno. */
    .sf-mega-inner--winfo { flex-wrap: nowrap; gap: 2rem; }
    .sf-mega-inner--winfo .sf-mega-links { display: flex; flex-wrap: wrap; gap: .2rem 3rem; align-items: flex-start; flex: 1 1 auto; min-width: 0; }
    .sf-mega-inner--winfo .sf-scat-info { flex: none; margin-left: auto; border-left: 1px solid var(--color-line); padding-left: 1.6rem; }
    @media (max-width: 900px) { .sf-mega-inner--winfo .sf-scat-info { display: none; } }
    /* flat link in the panel (leaf node) */
    .sf-mega-lnk {
        display: flex; align-items: center; gap: .4rem;
        min-width: 11rem; max-width: 18rem;
        padding: .5rem .75rem; border-radius: .5rem;
        border-left: 2.5px solid transparent;
        color: var(--color-ink); font-size: .9rem; font-weight: 500;
        transition: background .15s, color .15s, border-color .15s; cursor: pointer;
    }
    .sf-mega-lnk:hover { background: var(--color-primary-50); color: var(--color-primary-700); border-left-color: var(--color-primary-400); }
    /* group heading inside panel (L2 item that has children) */
    .sf-mega-lnk--head { font-weight: 700; color: var(--color-brand-900); }
    a.sf-mega-lnk--head::after { content: " →"; font-size: .78em; opacity: .4; margin-left: auto; padding-left: .35rem; }
    /* group container */
    .sf-mega-group { display: flex; flex-direction: column; min-width: 11rem; max-width: 18rem; margin-bottom: .35rem; }
    /* grandchild link (L3) */
    .sf-mega-sub {
        display: block; padding: .28rem .75rem .28rem 1.5rem;
        color: var(--color-muted); font-size: .85rem; font-weight: 500;
        border-radius: .4rem; transition: color .15s, background .15s;
    }
    .sf-mega-sub:hover { color: var(--color-primary-700); background: var(--color-primary-50); }
    /* Opis (mega-menu caption): naslov + drobni podnapis pod njim */
    .sf-mega-lnk--desc { align-items: flex-start; }
    .sf-mega-lnk-c { display: flex; flex-direction: column; gap: .1rem; min-width: 0; }
    .sf-mega-lnk-t { font-weight: inherit; }
    .sf-mega-desc {
        font-size: .76rem; font-weight: 400; line-height: 1.3;
        color: var(--color-muted); white-space: normal;
    }
    .sf-mega-sub--desc { padding-top: .34rem; padding-bottom: .34rem; }
    .sf-mega-sub--desc .sf-mega-desc { margin-top: .05rem; }
    a.sf-mega-lnk--head.sf-mega-lnk--desc::after { align-self: center; }

    .sf-mega-panel--v-full-bar .sf-mega-inner { max-width: none; justify-content: space-between; gap: .2rem 2rem; }
    .sf-mega-panel--v-grid-cols .sf-mega-inner { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: .35rem 2rem; align-items: start; }
    .sf-mega-panel--v-grid-cols .sf-mega-group, .sf-mega-panel--v-grid-cols .sf-mega-lnk { max-width: none; }
    .sf-mega-item:has(.sf-mega-panel--v-compact) { position: relative; }
    .sf-mega-panel--v-compact { left: 0; right: auto; width: max-content; min-width: 15rem; max-width: min(38rem, 92vw); border: 1px solid var(--color-line); border-radius: 0 0 var(--radius-lg, 8px) var(--radius-lg, 8px); }
    .sf-mega-panel--v-compact .sf-mega-inner { max-width: none; margin: 0; padding: .4rem .5rem; flex-direction: column; flex-wrap: nowrap; gap: 0; }
    .sf-mega-panel--v-compact .sf-mega-group { max-width: none; min-width: 0; }
    .sf-header .sf-nav-ovf--v-more-menu { flex-wrap: nowrap !important; overflow: hidden; max-width: 100%; }
    /* Stolpec z nav se MORA krčiti z vrstico (inline flex:0 0 auto / grid min-width:auto sicer
       zraste do vsebine) — brez tega meritev nima prave meje in vrstica steče čez rob okna. */
    .sf-header .sf-chrome-row div:has(> .sf-nav-ovf--v-more-menu) { flex: 1 1 auto !important; min-width: 0; max-width: 100%; }
    .sf-header .sf-nav-ovf--v-more-menu .sf-nav-lnk { white-space: nowrap; }
    .sf-header .sf-nav-ovf--v-more-menu > .sf-ovf-hide { display: none !important; }
    .sf-ovf-more { display: none; align-items: center; justify-content: center; flex: 0 0 auto;
        width: 2.2rem; height: 2.2rem; border: 0; border-radius: .6rem; background: transparent;
        color: var(--nav-link-color, rgba(255,255,255,.72)); cursor: pointer; }
    .sf-ovf-more:hover { background: var(--nav-link-hover-bg, rgba(255,255,255,.08)); color: var(--nav-link-hover-color, #fff); }
    .sf-ovf-more.is-on { display: inline-flex; }
    .sf-ovf-more svg { width: 20px; height: 20px; }
    .sf-ovf-scrim { position: fixed; inset: 0; background: rgba(10,4,16,.45); opacity: 0; pointer-events: none; transition: opacity .25s var(--ease); z-index: 200; }
    .sf-ovf-scrim.is-open { opacity: 1; pointer-events: auto; }
    .sf-ovf-panel { position: fixed; top: 0; right: 0; bottom: 0; width: min(19rem, 86vw); z-index: 201; /* nad glavo (200), kot sf-hb predal */
        background: var(--color-surface, #fff); color: var(--color-ink, #1a1a1a); box-shadow: -8px 0 30px rgba(0,0,0,.25);
        transform: translateX(102%); transition: transform calc(var(--dur-base, .3s) * var(--motion-scale, 1)) var(--ease);
        display: flex; flex-direction: column; overflow-y: auto; padding: .9rem .9rem calc(.9rem + env(safe-area-inset-bottom, 0px)); }
    .sf-ovf-panel.is-open { transform: none; }
    .sf-ovf-head { display: flex; align-items: center; justify-content: space-between; padding: 0 .35rem .6rem; border-bottom: 1px solid var(--color-line, #eee); margin-bottom: .5rem; }
    .sf-ovf-title { font-weight: 700; font-size: .85rem; letter-spacing: .04em; text-transform: uppercase; }
    .sf-ovf-close { border: 0; background: transparent; color: inherit; font-size: 1.5rem; line-height: 1; cursor: pointer; padding: .25rem .45rem; border-radius: .5rem; }
    .sf-ovf-close:hover { background: var(--color-primary-50, rgba(0,0,0,.05)); }
    .sf-ovf-list a { display: block; padding: .55rem .6rem; border-radius: .55rem; color: inherit; text-decoration: none; font-weight: 600; font-size: .9rem; }
    .sf-ovf-list a:hover { background: var(--color-primary-50, rgba(0,0,0,.05)); color: var(--color-primary-700, inherit); }
    .sf-ovf-group { margin: .3rem 0; }
    .sf-ovf-group > span { display: block; padding: .55rem .6rem .2rem; font-weight: 700; font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; opacity: .6; }
    .sf-ovf-group > a:first-child { font-weight: 700; }
    .sf-ovf-group a + a { padding-left: 1.1rem; font-weight: 500; }
    /* ============ main / sections ============ */
    .sf-main { max-width: var(--content-width); margin: 0 auto; padding: 0 1.5rem; }
    .sf-main > * + * { margin-top: var(--section-gap, clamp(2.75rem, 5vw, 4.75rem)); }
    /* Glava sekcije je uvod v to, kar SLEDI, ne samostojen blok. Ker jo `.sf-section-head`
       postavi na `margin: 0 …`, je pravilo zgoraj razmik pomotoma vrinilo MED naslov in
       njegovo vsebino, nad naslov pa nič — strani so se zato stikale, sekcije pa razpadale.
       Razmik odslej pade PRED glavo, med glavo in vsebino pa ostane le njen spodnji rob. */
    .sf-main > * + .sf-section-head { margin-top: var(--section-gap, clamp(2.75rem, 5vw, 4.75rem)); }
    .sf-main > .sf-section-head + * { margin-top: 0; }
    /* Urejevalniško platno: ritem NE sme na vsak edit ovoj (.sf-addzone IN .sf-eb sta
       dobila vsak svoj margin → razmiki ne glede na nastavljene odmike). Ritem nosi
       blok (.sf-eb) kot na živi strani; addzone lebdi v vrzeli s svojim minimalnim
       robom. Eksplicitni odmiki (_layoutSpace* na notranjem .sf-bw) se čez ovoj
       uveljavijo s :has() — glej blok pravil pri .sf-bw--st/sb spodaj. */
    .sf-main > .sf-slot-edit > .sf-eb ~ .sf-addzone + .sf-eb { margin-top: var(--section-gap, clamp(2.75rem, 5vw, 4.75rem)); }
    .sf-fullbleed { width: 100vw; max-width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }

    /* ============ universal per-block layout wrapper (»Postavitev na strani«) ============
       _Block.cshtml wraps a block in .sf-bw only when the editor changes a _layout* prop. */
    /* »Čez celotno širino«: gradniki z lastnim notranjim stropom (90rem — mreže
       izdelkov/novic ipd. berejo var(--sf-inner-max)) strop spustijo in dobijo
       robni odmik, da vsebina ne lepi na rob okna. */
    .sf-bw--full { --sf-inner-max: none; --sf-inner-pad: 1.5rem; }
    /* Strop je NOTRANJI pas lupine (.sf-main = --content-width minus 2x1.5rem padding), ne njena
       zunanja sirina. Kot neposreden otrok .sf-main brez ucinka (tam je pas ze tak), znotraj
       polnosirinskega odseka pa vsebino poravna na isto os kot vse ostale bloke. */
    .sf-bw--content { max-width: calc(var(--content-width) - 3rem); margin-left: auto; margin-right: auto; width: 100%; }
    .sf-bw--narrow { max-width: var(--content-width-narrow, 46rem); margin-left: auto; margin-right: auto; width: 100%; }
    /* Inside a constrained wrapper the block's own fullbleed must not escape. */
    .sf-bw--content .sf-fullbleed, .sf-bw--narrow .sf-fullbleed {
        width: 100%; max-width: 100%; margin-left: 0; margin-right: 0;
    }
    /* Layout blocks in the header/footer zone already span the zone — the
       viewport-escape trick would misalign a fixed/over header. */
    .sf-header .sf-fullbleed, .sf-footer .sf-fullbleed {
        width: 100%; max-width: 100%; margin-left: 0; margin-right: 0;
    }
    /* ── Eksplicitni odmiki gradnika (_layoutSpaceTop/Bottom) ──
       !important, ker morajo premagati ritem strani (.sf-main > * + *), lastna
       »prilepi se« pravila blokov (.sf-main > #uid, .sf-bw:has(>.sf-trustbar))
       in ritme vgnezdenih kontejnerjev (.sf-column/.sf-tabs-panel/.sf-section). */
    .sf-bw--st-none { margin-top: 0 !important; }
    .sf-bw--st-sm   { margin-top: 1rem !important; }
    .sf-bw--st-md   { margin-top: 3rem !important; }
    .sf-bw--st-lg   { margin-top: 6rem !important; }
    .sf-bw--sb-none { margin-bottom: 0 !important; }
    .sf-bw--sb-sm   { margin-bottom: 1rem !important; }
    .sf-bw--sb-md   { margin-bottom: 3rem !important; }
    .sf-bw--sb-lg   { margin-bottom: 6rem !important; }
    /* »Odmik pod blokom« mora premagati margin-top RITMA na naslednjem bloku
       (kolaps marginov sicer vzame večjo od obeh → nastavitev pod ~2.75rem ni
       imela učinka). Naslednji blok z LASTNIM eksplicitnim odmikom zmaga
       (!important zgoraj); .sf-sect-div obdrži svoj razmik. Specifičnost (0,3,0)
       namenoma prekaša vse ritme (max (0,2,0)). */
    :is(.sf-bw--sb-none, .sf-bw--sb-sm, .sf-bw--sb-md, .sf-bw--sb-lg)
        + :not(.sf-glue-top):not(.sf-sect-div) { margin-top: 0; }
    /* Rob gradnika znotraj ovoja ne sme dodajati svojega: prvi/zadnji koren
       izgubi zunanji margin, ko je odmik izrecno nastavljen. */
    :is(.sf-bw--st-none, .sf-bw--st-sm, .sf-bw--st-md, .sf-bw--st-lg) > :first-child { margin-top: 0 !important; }
    :is(.sf-bw--sb-none, .sf-bw--sb-sm, .sf-bw--sb-md, .sf-bw--sb-lg) > :last-child { margin-bottom: 0 !important; }
    /* Gradniki, ki se ob polni širini LEPIJO na prejšnji blok (marquee, pasica-banner,
       trustBar, linkGallery), morajo to ohraniti tudi znotraj .sf-bw ovoja. */
    .sf-main > .sf-bw:has(> .sf-glue-top) { margin-top: 0; }
    /* Isti gradnik je lahko UGNEZDEN v Sekcijo — tudi tedaj naj se lepi na prejšnji blok:
       Sekcija, ki neposredno vsebuje glue-top gradnik (npr. drsni napis pod bannerjem),
       izgubi vrhnji odmik IN vrhnjo notranjo oblogo, da med bannerjem in napisom ni vrzeli. */
    .sf-main > .sf-sect:has(> .sf-glue-top),
    .sf-main > .sf-sect:has(> .sf-bw > .sf-glue-top) { margin-top: 0; padding-top: 0; }
    /* ── Urejevalniško platno: ista pravila čez edit ovoje (.sf-slot-edit/.sf-eb) ──
       Odmiki so razredi na notranjem .sf-bw, ritem pa nosi ovoj .sf-eb — brez teh
       preslikav platno kaže razmike ne glede na »Odmik nad/pod blokom«. */
    .sf-main > .sf-slot-edit > .sf-eb:has(> :is(.sf-bw--sb-none, .sf-bw--sb-sm, .sf-bw--sb-md, .sf-bw--sb-lg)) + .sf-addzone + .sf-eb { margin-top: 0; }
    .sf-main > .sf-slot-edit > .sf-eb:has(> .sf-bw--st-none) { margin-top: 0 !important; }
    .sf-main > .sf-slot-edit > .sf-eb:has(> .sf-bw--st-sm)   { margin-top: 1rem !important; }
    .sf-main > .sf-slot-edit > .sf-eb:has(> .sf-bw--st-md)   { margin-top: 3rem !important; }
    .sf-main > .sf-slot-edit > .sf-eb:has(> .sf-bw--st-lg)   { margin-top: 6rem !important; }
    .sf-main > .sf-slot-edit > .sf-eb:has(> .sf-bw--sb-none) { margin-bottom: 0 !important; }
    .sf-main > .sf-slot-edit > .sf-eb:has(> .sf-bw--sb-sm)   { margin-bottom: 1rem !important; }
    .sf-main > .sf-slot-edit > .sf-eb:has(> .sf-bw--sb-md)   { margin-bottom: 3rem !important; }
    .sf-main > .sf-slot-edit > .sf-eb:has(> .sf-bw--sb-lg)   { margin-bottom: 6rem !important; }
    .sf-main > .sf-slot-edit > .sf-eb:has(> .sf-glue-top),
    .sf-main > .sf-slot-edit > .sf-eb:has(> .sf-bw > .sf-glue-top) { margin-top: 0; }
    @media (max-width: 760px) { .sf-hide-mobile { display: none !important; } }
    @media (min-width: 761px) { .sf-hide-desktop { display: none !important; } }
    /* ── Univerzalni »ton besedila« (_textTone) — gumb v »Postavitev na strani« za VSAK gradnik.
       Sili barvo NASLOVOV in besedila »na sekciji« na svetlo (za temna ozadja) ali temno (za
       svetla). Kartice z lastnim ozadjem (izdelki/mnenja/prednosti/statistika/kategorije) IZVZAMEMO
       (:not(<kartica> *)), da njihova vsebina ostane berljiva. Nadnaslovi (accent <span>) niso
       h/p → ostanejo v poudarni barvi. Nova vrsta kartice = doda se v izključitveni seznam.
       Naslovi berejo --color-on-dark (privzeto belo), NE --color-text-inverse: pri temnih temah
       je »inverse« temna barva, zato je naslov na temni pasici oziroma na fotografiji izginil,
       medtem ko je bilo besedilo pod njim belo. »Na temnem« in »obrnjeno« nista isto. */
    .sf-bw--tone-light :is(h1,h2,h3,h4,h5,h6):not(:is(.sh-pcard,.sf-quote,.sf-feature,.sf-stat,.sf-product,.sf-cat,.ci-card,.si-item,.ct-card,.sf-okvir) *) { color: var(--color-on-dark, #fff) !important; }
    .sf-bw--tone-light :is(p,li,dd,dt,blockquote,figcaption):not(:is(.sh-pcard,.sf-quote,.sf-feature,.sf-stat,.sf-product,.sf-cat,.ci-card,.si-item,.ct-card,.sf-okvir) *) { color: rgba(255,255,255,.85) !important; }
    .sf-bw--tone-dark :is(h1,h2,h3,h4,h5,h6):not(:is(.sh-pcard,.sf-quote,.sf-feature,.sf-stat,.sf-product,.sf-cat,.ci-card,.si-item,.ct-card,.sf-okvir) *) { color: var(--color-brand-900, #14121A) !important; }
    .sf-bw--tone-dark :is(p,li,dd,dt,blockquote,figcaption):not(:is(.sh-pcard,.sf-quote,.sf-feature,.sf-stat,.sf-product,.sf-cat,.ci-card,.si-item,.ct-card,.sf-okvir) *) { color: var(--color-ink, #2a2730) !important; }
    :is(.sh-pcard,.sf-quote,.sf-feature,.sf-stat,.sf-product,.sf-cat,.ci-card,.si-item,.ct-card,.sf-okvir) .sf-bw--tone-light :is(h1,h2,h3,h4,h5,h6) { color: var(--color-on-dark, #fff) !important; }
    :is(.sh-pcard,.sf-quote,.sf-feature,.sf-stat,.sf-product,.sf-cat,.ci-card,.si-item,.ct-card,.sf-okvir) .sf-bw--tone-light :is(p,li,dd,dt,blockquote,figcaption) { color: rgba(255,255,255,.85) !important; }
    :is(.sh-pcard,.sf-quote,.sf-feature,.sf-stat,.sf-product,.sf-cat,.ci-card,.si-item,.ct-card,.sf-okvir) .sf-bw--tone-dark :is(h1,h2,h3,h4,h5,h6) { color: var(--color-brand-900, #14121A) !important; }
    :is(.sh-pcard,.sf-quote,.sf-feature,.sf-stat,.sf-product,.sf-cat,.ci-card,.si-item,.ct-card,.sf-okvir) .sf-bw--tone-dark :is(p,li,dd,dt,blockquote,figcaption) { color: var(--color-ink, #2a2730) !important; }
    .sf-okvir--tone-light :is(h1,h2,h3,h4,h5,h6) { color: var(--color-on-dark, #fff) !important; }
    .sf-okvir--tone-light :is(p,li,dd,dt,blockquote,figcaption) { color: rgba(255,255,255,.85) !important; }
    .sf-okvir--tone-dark :is(h1,h2,h3,h4,h5,h6) { color: var(--color-brand-900, #14121A) !important; }
    .sf-okvir--tone-dark :is(p,li,dd,dt,blockquote,figcaption) { color: var(--color-ink, #2a2730) !important; }

    /* ============ flow: horizontal swipe carousel for item grids ============
       Applied to the ITEM CONTAINER (productGrid .pg-grid / newsList cards div).
       One visible row; the visitor swipes left/right to load the next run of
       items (scroll-snap paging, next card peeks in to signal swipeability). */
    .sf-flow-carousel {
        display: flex !important;
        grid-template-columns: none !important;
        gap: 16px !important; /* card-width calc below assumes this gap */
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .sf-flow-carousel::-webkit-scrollbar { display: none; }
    .sf-flow-carousel > * { flex: 0 0 calc((100% - 3 * 16px) / 4); min-width: 0; scroll-snap-align: start; }
    @media (max-width: 760px) {
        .sf-flow-carousel > * { flex-basis: 74%; }
        .sf-flow-carousel-m {
            display: flex !important;
            grid-template-columns: none !important;
            gap: 16px !important;
            overflow-x: auto;
            scroll-snap-type: x mandatory;
            -webkit-overflow-scrolling: touch;
            scrollbar-width: none;
        }
        .sf-flow-carousel-m::-webkit-scrollbar { display: none; }
        .sf-flow-carousel-m > * { flex: 0 0 74%; min-width: 0; scroll-snap-align: start; }
    }
    .sf-band { padding: var(--band-pad, clamp(3rem, 7vw, 6rem)) 0; }
    .sf-band-tight { padding: clamp(2rem, 4vw, 3rem) 0; }
    /* ── Deljena glava gradnika (nadnaslov + naslov + podnaslov) ──
       Skupni vzorec za VSE vsebinske gradnike (features, productGrid, stats, faq,
       newsList, categoryGrid, customerOpinions, gallery …) — nanjo se veže tudi
       preset sectionHeading. Enotna metrika naslova prek --sec-title-size. */
    .sf-section-head { text-align: left; max-width: none; margin: 0 0 clamp(1.9rem, 3.5vw, 2.75rem); }
    .sf-section-head :is(h1, h2, h3) { margin: 0; line-height: 1.12; }
    /* Velikost bere per-nivo zeton iz Dizajna (--hN-size), da je naslov sekcije enako velik kot
       enak nivo naslova kjerkoli drugje. --sec-title-size ostane izbirni globalni preglas. */
    .sf-section-head h1 { font-size: var(--sec-title-size, var(--h1-size, clamp(2.5rem, 6vw, 4.5rem))); }
    .sf-section-head h2 { font-size: var(--sec-title-size, var(--h2-size, clamp(1.75rem, 3.5vw, 2.75rem))); }
    .sf-section-head h3 { font-size: var(--sec-title-size, var(--h3-size, clamp(1.2rem, 2vw, 1.6rem))); }
    .sf-section-head .sf-eyebrow { margin-bottom: .5rem; }
    .sf-section-head .sf-lead { margin: .55rem 0 0; }
    .sf-section-head--center { text-align: center; }
    .sf-section-head--center .sf-lead { margin-left: auto; margin-right: auto; }
    .sf-section-head:not(.sf-section-head--center) { padding-left: 1.1rem; border-left: 3px solid var(--color-primary-600); }
    /* B — isti preset velja tudi za samostojne naslove (blok »Naslov«) in za naslove,
       natipkane v bloku Besedilo (rich text), da je videz naslovov enoten po vsej strani.
       Per-nivo žetoni (--hN-bar-w/-pad) PREGLASIJO ta preset: če je pri naslovu izbrano
       »brez črtice« (0px), črtice ni niti pri presetu side-rule. Prazen žeton = privzeto
       po temi, torej 1.1rem/3px kot doslej. */
    h1.sf-heading, .sf-richtext h1 { padding-left: var(--h1-bar-pad, 1.1rem); border-left: var(--h1-bar-w, 3px) solid var(--h1-bar-color, var(--color-primary-600)); }
    h2.sf-heading, .sf-richtext h2 { padding-left: var(--h2-bar-pad, 1.1rem); border-left: var(--h2-bar-w, 3px) solid var(--h2-bar-color, var(--color-primary-600)); }
    h3.sf-heading, .sf-richtext h3 { padding-left: var(--h3-bar-pad, 1.1rem); border-left: var(--h3-bar-w, 3px) solid var(--h3-bar-color, var(--color-primary-600)); }
    h4.sf-heading { padding-left: var(--h4-bar-pad, 1.1rem); border-left: var(--h4-bar-w, 3px) solid var(--h4-bar-color, var(--color-primary-600)); }
    h5.sf-heading { padding-left: var(--h5-bar-pad, 1.1rem); border-left: var(--h5-bar-w, 3px) solid var(--h5-bar-color, var(--color-primary-600)); }
    h6.sf-heading { padding-left: var(--h6-bar-pad, 1.1rem); border-left: var(--h6-bar-w, 3px) solid var(--h6-bar-color, var(--color-primary-600)); }

    /* ============ product card (Layer 3 preseti — docs/structural-presets.md F1) ============
       Ena družina razredov za VSE mreže izdelkov (trgovina/iskanje, gradnik productGrid,
       sorodni izdelki, izdelki ob novici). Markup: /Views/Shop/_ProductCard.cshtml.
       Neodvisne osi (razredi iz ProductCardLook):
         zgradba  .sh-pcard--{standard|editorial|overlay|technical|horizontal|tile}
         razmerje .sh-pcard--r-{landscape|square|portrait}
         prileg.  .sh-pcard--fit-contain  (W18; privzeti cover ne doda razreda)
         hover    .sh-pcard--h-{zoom|swap|lift|none}
         gumb     .sh-pcard--cta-{hover-bar|visible|icon|none}
       Imena razredov so NOSILNA: CSS preseti tem (Oblikovanje) ciljajo .sh-pcard* — ne
       preimenuj. Privzeta kombinacija = kartica trgovine pred F1 (nespremenjen videz);
       fallback literali so vrednosti stare kartice. */
    .sh-pcard { --pcard-ratio: 4/3; position: relative; display: flex; flex-direction: column; background: var(--color-surface, #fff); text-decoration: none; border-radius: var(--radius-card, 4px); overflow: hidden; border: 1px solid var(--color-line, #E5E0EC); box-shadow: var(--shadow-card-rest, 0 1px 3px rgba(28,4,35,.08)); transition: transform 250ms var(--ease), box-shadow 250ms var(--ease); }
    .sh-pcard--r-square   { --pcard-ratio: 1/1; }
    .sh-pcard--r-portrait { --pcard-ratio: 3/4; }
    .sh-pcard-media { position: relative; aspect-ratio: var(--pcard-ratio); overflow: hidden; background: var(--color-primary-50, #EDE8F5); flex-shrink: 0; }
    .sh-pcard-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
    .sh-pcard-media-placeholder { width: 100%; height: 100%; display: flex; flex-direction: column; gap: .6rem; align-items: center; justify-content: center; padding: 1rem; text-align: center; color: var(--color-primary-600, #6B1F7B); }
    .sh-pcard-media-name { font-family: var(--font-heading); font-size: .95rem; font-weight: var(--h-weight, 700); line-height: 1.2; color: var(--color-muted); text-wrap: balance; }
    /* hover osi */
    .sh-pcard--h-zoom:hover, .sh-pcard--h-lift:hover { transform: translateY(-4px); box-shadow: var(--shadow-card-hover, 0 10px 20px -3px rgba(28,4,35,.10)); }
    .sh-pcard--h-zoom .sh-pcard-media img { transition: transform 450ms ease; }
    .sh-pcard--h-zoom:hover .sh-pcard-media img { transform: scale(1.06); }
    /* video kot primarni medij kartice (samopredvajanje, nemo, v zanki) — polni okvir slike;
       pointer-events off, da klik ostane na kartici-<a> (iframe bi ga sicer požrl). */
    .sh-pcard-vid { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; border: 0; pointer-events: none; background: #000; }
    .sh-pcard-img--hover { position: absolute; inset: 0; opacity: 0; transition: opacity 320ms var(--ease); }
    .sh-pcard--gal-hover-swap:hover .sh-pcard-img--hover { opacity: 1; }
    /* značke + zaloga */
    .sh-pcard-badges { position: absolute; top: 10px; left: 10px; z-index: 2; display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
    .sh-pcard-badge { color: var(--color-badge-text, #fff); font-family: var(--font-heading); font-weight: 700; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; padding: 2px 7px; border-radius: var(--radius-badge, 2px); }
    .sh-pcard-badge--sale { background: var(--color-badge-bg, var(--color-accent-500, #C8176A)); }
    .sh-pcard-badge--new  { background: var(--color-badge-bg, var(--color-primary-600, #6B1F7B)); }
    .sh-pcard-badge--ship { background: var(--color-badge-bg, var(--color-success-500, #16a34a)); }
    .sh-pcard-badge--brandbg { background: var(--color-badge-bg, var(--color-primary-600, #6B1F7B)); }
/* EU energijska nalepka (EPREL, docs/energy-labels.md) — majhna značka razreda ob ceni na kartici,
   oblikovana kot pravi razred na nalepki (puščica z barvo razreda A-G), da je takoj jasno, za kaj
   gre — NE po temi (--eu-color pride od izdelka, glej EnergyLabelColors, fiksne barve nalepke).
   Nevidno, dokler ni podatka (repo vrne prazno). */
.sh-pcard-energy { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 20px; padding: 0 8px 0 6px; margin-right: 6px; font-family: var(--font-heading); font-weight: 500; font-size: 13px; line-height: 1; color: var(--eu-color-text, #fff); background: var(--eu-color, #8A8A8A); clip-path: polygon(0 0, 78% 0, 100% 50%, 78% 100%, 0 100%); vertical-align: middle; }
    /* Mobilni telefon: znacke ne smejo poziralne slike izdelka — ena kompaktna vrstica,
       najvec dve vidni znacki, ostale se odrezejo; tudi ostale prekritja (paket, zaloga,
       logotip znamke) so manjsa in tesneje v kotih. */
    @media (max-width: 760px) {
      .sh-pcard-badges { top: 6px; left: 6px; right: 6px; flex-direction: row; flex-wrap: nowrap; gap: 3px; overflow: hidden; }
      .sh-pcard-badges > * { flex: 0 1 auto; min-width: 0; }
      .sh-pcard-badges > :nth-child(n+3) { display: none; }
      .sh-pcard-badge { font-size: 9px; letter-spacing: .03em; padding: 2px 5px; max-width: 46%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
      .sh-pcard-badge-img { max-height: 26px !important; max-width: 54px !important; }
      .sh-pcard--badge-ribbon .sh-pcard-badges { flex-direction: column; }
      .sh-pcard-bundle { left: 6px; bottom: 6px; font-size: 9px; padding: 2px 7px; }
      .sh-pcard-stock { top: 6px; right: 6px; font-size: 9px; padding: 1px 5px; }
      .sh-pcard-brandlogo { left: 6px; bottom: 6px; height: 20px; padding: 2px 5px; }
      .sh-pcard-media:has(.sh-pcard-bundle) .sh-pcard-brandlogo { bottom: 32px; }
    }
    /* Tocke zvestobe pri izdelku — poudarjen pas (ne drobna siva vrstica). */
    .sh-earn { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 12px; padding: 10px 12px; border-radius: var(--radius-md, 10px); background: color-mix(in srgb, var(--color-accent-500, #C8176A) 9%, transparent); border: 1px solid color-mix(in srgb, var(--color-accent-500, #C8176A) 26%, transparent); font-family: var(--font-sans); font-size: 14px; color: var(--color-ink, #2A1F33); }
    .sh-earn-ico { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 999px; background: var(--color-accent-500, #C8176A); color: #fff; }
    .sh-earn-pts { font-family: var(--font-heading); font-weight: 700; font-size: 17px; color: var(--color-accent-600, #A01254); letter-spacing: .01em; }
    .sh-earn-mult { font-family: var(--font-heading); font-weight: 700; font-size: 11px; letter-spacing: .05em; text-transform: uppercase; padding: 3px 8px; border-radius: 999px; background: var(--color-accent-500, #C8176A); color: #fff; }
    /* EU garancija/energijska nalepka (docs/guarantees.md, docs/energy-labels.md) — lahka
       kartica, isti vzorec kot sh-earn a bolj umirjen (nevtralna siva, ne poudarjena barva teme),
       da elementi delujejo kot ločen razdelek, ne kot vrženi v besedilo. Bela podloga za sliko je
       nujna, ne kozmetika: uradne EU grafike (GARAN nalepka) nimajo lastnega ozadja (namenjene so
       tisku na papir), zato bi temni elementi na temni temi izginili brez nje. */
    .sh-eu-card { display: flex; align-items: center; gap: 12px; flex-wrap: nowrap; width: 100%; box-sizing: border-box; margin-top: 10px; padding: 10px 14px; border-radius: var(--radius-md, 10px); background: color-mix(in srgb, var(--color-ink, #2A1F33) 4%, transparent); border: 1px solid color-mix(in srgb, var(--color-ink, #2A1F33) 10%, transparent); font-family: var(--font-sans); font-size: 13px; }
    .sh-eu-card-imgwrap { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; background: #fff; border-radius: var(--radius-sm, 6px); padding: 5px 7px; line-height: 0; }
    .sh-eu-card-icon { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: var(--radius-sm, 6px); background: #fff; color: #034ea2; }
    .sh-eu-card-text { display: flex; flex-direction: column; gap: 2px; color: var(--color-muted, #857597); text-align: left; min-width: 0; }
    .sh-eu-card-text a, .sh-eu-card-text button { color: inherit; text-align: left; }
    @media (max-width: 480px) { .sh-eu-card { max-width: 100%; flex-wrap: wrap; } }
    /* Klikljiva značka »v paketu« → graditelj paketa (/paket/{id}). Spodaj levo na mediju, da se
       ne prekriva z zgornje-levimi značkami; jasno klikljiva (pill + pointer + hover). */
    .sh-pcard-bundle { position: absolute; left: 10px; bottom: 10px; z-index: 3; display: inline-flex; align-items: center; gap: 4px; cursor: pointer; padding: 3px 9px; border-radius: 999px; font-family: var(--font-heading); font-weight: 700; font-size: 11px; letter-spacing: .04em; color: #fff; background: var(--color-primary-600, #6B1F7B); box-shadow: 0 1px 5px rgba(0,0,0,.22); border: none; transition: background .15s, transform .15s; }
    .sh-pcard-bundle:hover, .sh-pcard-bundle:focus-visible { background: var(--color-primary-700, #56176B); transform: translateY(-1px); outline: none; }
    .sh-pcard-bundle svg { flex: 0 0 auto; opacity: .95; }
    .sh-pcard-bundle--body { position: static; margin-bottom: 8px; align-self: flex-start; }
    .sh-pcard-stock { position: absolute; top: 8px; right: 8px; z-index: 2; font-family: var(--font-sans); font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 2px 7px; border-radius: var(--radius-badge, 3px); color: #fff; }
    .sh-pcard-stock.in  { background: var(--color-success-500, #16a34a); }
    .sh-pcard-stock.out { background: var(--color-muted, #64748b); }
    /* Logotip znamke (Feed:BrandFilterId) — značka spodaj-levo na foto (privzeti CTA je ikona spodaj-desno,
       značke zgoraj-levo, srček/zaloga zgoraj-desno → spodaj-levo je prosto). */
    .sh-pcard-brandlogo { position: absolute; left: 10px; bottom: 10px; z-index: 2; display: inline-flex; align-items: center; justify-content: center; max-width: 45%; height: 26px; padding: 3px 7px; background: rgba(255,255,255,.92); border-radius: var(--radius-badge, 4px); box-shadow: 0 2px 8px rgba(0,0,0,.12); pointer-events: none; }
    .sh-pcard-brandlogo img { max-height: 100%; max-width: 100%; width: auto; height: auto; object-fit: contain; display: block; }
    /* Značka »V paketu ceneje« sedi v istem kotu in je nad logotipom (z-index 3) — ko je
       prisotna, logotip dvignemo nadnjo, da ostane viden. */
    .sh-pcard-media:has(.sh-pcard-bundle) .sh-pcard-brandlogo { bottom: 42px; }
    /* CTA osi */
    .sh-pcard-atc { position: absolute; bottom: 0; left: 0; right: 0; z-index: 2; background: var(--color-cart-bg, var(--color-primary-600, #6B1F7B)); color: var(--color-cart-text, #fff); border: none; padding: 10px; cursor: pointer; font-family: var(--font-sans); font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; display: flex; align-items: center; justify-content: center; gap: 8px; }
    .sh-pcard--cta-hover-bar .sh-pcard-atc { transform: translateY(100%); transition: transform 220ms ease; }
    .sh-pcard--cta-hover-bar:hover .sh-pcard-atc { transform: translateY(0); }
    .sh-pcard-atc--icon { left: auto; right: 10px; bottom: 10px; width: 38px; height: 38px; padding: 0; border-radius: 9999px; box-shadow: 0 2px 8px rgba(28,4,35,.22); }
    /* telo + tipografija (vrednosti stare kartice) */
    .sh-pcard-body { padding: 12px 14px 16px; flex-grow: 1; display: flex; flex-direction: column; }
    .sh-pcard-brand { font-family: var(--font-heading); font-weight: 600; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--color-primary-600, #6B1F7B); margin-bottom: 3px; display: block; }
    .sh-pcard-sku { font-family: var(--font-mono, ui-monospace, monospace); font-size: 10.5px; letter-spacing: .04em; color: var(--color-muted, #857597); margin-bottom: 3px; display: block; }
    .sh-pcard-name { margin: 0 0 8px; font-family: var(--font-sans); font-size: 14px; font-weight: 500; line-height: 1.4; color: var(--color-ink, #1A1128); flex-grow: 1; text-transform: none; letter-spacing: 0; }
    .sh-pcard-stars { display: flex; align-items: center; gap: 4px; margin-bottom: 8px; }
    .sh-pcard-stars-row { display: flex; gap: 1px; color: var(--color-accent-500, #C8176A); }
    .sh-pcard-stars-row .dim { opacity: .2; }
    .sh-pcard-stars-count { font-family: var(--font-sans); font-size: 11px; color: var(--color-muted, #857597); }
    .sh-pcard-price { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
    .sh-pcard-price-main { font-family: var(--font-heading); font-size: 20px; font-weight: 700; color: var(--color-ink, #1A1128); }
    .sh-pcard-price-main.is-sale { color: var(--color-accent-500, #C8176A); }
    /* Merska enota ob ceni (»/ kg«) — samo vizualna pripona, zato manjša in umirjena. */
    .sh-pcard-price-unit { font-family: var(--font-sans); font-size: 12px; font-weight: 600; color: var(--color-muted, #857597); }
    /* Izpeljana cena na sekundarno enoto (»≈ 37,00 €/m²«) — lastna vrstica pod ceno. */
    .sh-pcard-price-ppu { display: block; width: 100%; font-family: var(--font-sans); font-size: 12px; color: var(--color-muted, #857597); }
    .sh-pcard-price-was { font-family: var(--font-sans); font-size: 12px; color: var(--color-muted, #A89BB6); text-decoration: line-through; }
    .sh-pcard-price-disc { font-size: 12px; font-weight: 600; color: var(--color-accent-500, #C8176A); }
    .sh-pcard-price-omnibus { display: block; font-size: 11px; color: var(--color-muted, #857597); }
    /* Javna koda za popust — »S kodo XY še ceneje« (T_KodaZaPopust.ShowOnArt). */
    .sh-pcard-code { display: inline-flex; align-items: center; gap: 4px; margin-top: 4px; padding: 2px 8px; border-radius: var(--radius-sm, 6px); font-family: var(--font-sans); font-size: 11px; font-weight: 600; line-height: 1.3; color: var(--color-accent-600, #A01254); background: var(--color-accent-50, rgba(200,23,106,.09)); border: 1px dashed var(--color-accent-500, #C8176A); }
    .sh-pcard-code svg { flex: 0 0 auto; opacity: .85; }
    .sh-pcard-code strong { font-weight: 700; letter-spacing: .02em; }
    .sh-pcard-sticker { position: absolute; top: 10px; right: 10px; z-index: 2; background: var(--color-accent-500, #C8176A); color: #fff; font-weight: 700; font-size: 12px; padding: 4px 9px; border-radius: 999px; box-shadow: 0 2px 6px rgba(0,0,0,.18); }
    .sh-pcard--qa-wishlist .sh-pcard-sticker, .sh-pcard--qa-rail .sh-pcard-sticker { right: 52px; }
    .sh-pcard-wish { position: absolute; top: 10px; right: 10px; z-index: 3; width: 34px; height: 34px; border-radius: 50%; border: 0; background: rgba(255,255,255,.92); color: var(--color-ink, #1A1128); cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 8px rgba(0,0,0,.12); opacity: 0; transform: translateY(-4px); transition: opacity .2s var(--ease), transform .2s var(--ease), color .2s; }
    .sh-pcard:hover .sh-pcard-wish { opacity: 1; transform: none; }
    .sh-pcard-wish:hover, .sh-pcard-wish.is-wished { color: var(--color-accent-500, #C8176A); }
    .sh-pcard-wish.is-wished svg { fill: var(--color-accent-500, #C8176A); }
    @media (max-width: 760px) { .sh-pcard-wish { opacity: 1; transform: none; } }
    /* scroll-snap trak — podrsavanje deluje brez JS; puščici streže pogojni JS spodaj */
    .sh-pcard-gal { position: absolute; inset: 0; display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
    .sh-pcard-gal::-webkit-scrollbar { display: none; }
    .sh-pcard-gal-slide { flex: 0 0 100%; scroll-snap-align: start; scroll-snap-stop: always; }
    .sh-pcard-gal-btn { position: absolute; top: 50%; transform: translateY(-50%); z-index: 3; width: 30px; height: 30px; border-radius: 50%; border: 0; background: rgba(255,255,255,.92); color: var(--color-ink, #1A1128); cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 8px rgba(0,0,0,.12); opacity: 0; transition: opacity .2s var(--ease), background .2s; }
    .sh-pcard-gal-btn--prev { left: 8px; }
    .sh-pcard-gal-btn--next { right: 8px; }
    .sh-pcard:hover .sh-pcard-gal-btn { opacity: 1; }
    .sh-pcard-gal-btn:hover { background: #fff; }
    /* zoom osi ne animira traku (transform bi podrl scroll-snap izračun) */
    .sh-pcard--h-zoom:hover .sh-pcard-gal-slide { transform: none; }
    /* dotik: puščici skriti, podrsavanje je naravna gesta */
    @media (hover: none) { .sh-pcard-gal-btn { display: none; } }
    .sh-pcard-thumbs { display: flex; gap: 6px; padding: 8px 10px 0; flex-wrap: nowrap; overflow: hidden; }
    .sh-pcard-thumb { flex: 0 0 auto; width: 40px; height: 40px; padding: 0; border: 1px solid var(--color-line, #E5E0EC); border-radius: var(--radius-badge, 2px); background: var(--color-surface, #fff); cursor: pointer; overflow: hidden; opacity: .75; transition: opacity .2s, border-color .2s; }
    .sh-pcard-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
    .sh-pcard-thumb.is-on { border-color: var(--color-primary-600, #6B1F7B); opacity: 1; }
    .sh-pcard-thumb:hover { opacity: 1; }
    /* perspektiva na korenu (vzor .sf-okvir-flip), overflow visible da mid-obrata ne reže */
    .sh-pcard.sh-pcard--flip-opis { perspective: 1200px; overflow: visible; }
    /* koren ne reže (overflow visible) → fotografija sama nosi zgornja robova */
    .sh-pcard--flip-opis .sh-pcard-media { border-radius: calc(var(--radius-card, 4px) - 1px) calc(var(--radius-card, 4px) - 1px) 0 0; }
    .sh-pcard-flip-inner { display: grid; flex: 1 1 auto; min-width: 0; transform-style: preserve-3d; transition: transform .6s var(--ease); }
    .sh-pcard--flip-opis.is-flipped .sh-pcard-flip-inner { transform: rotateY(180deg); }
    .sh-pcard-flip-front { grid-area: 1 / 1; min-width: 0; display: flex; flex-direction: column; backface-visibility: hidden; -webkit-backface-visibility: hidden; }
    /* vrstični pogled (Category .sh-grid--list) postavi kartico v vrsto → zrcali na ploskvi */
    .sh-grid--list .sh-pcard--flip-opis .sh-pcard-flip-front { flex-direction: row; }
    /* skrita ploskev ne lovi klikov (fokus ureja inert v JS) — vzor Okvir */
    .sh-pcard--flip-opis:not(.is-flipped) .sh-pcard-back { pointer-events: none; }
    .sh-pcard--flip-opis.is-flipped .sh-pcard-flip-front { pointer-events: none; }
    /* gumb za obrat — vzorec srčka (skrit do prehoda, na dotiku stalno viden) */
    .sh-pcard-flip-btn { position: absolute; top: 10px; right: 10px; z-index: 4; width: 34px; height: 34px; border-radius: 50%; border: 0; background: rgba(255,255,255,.92); color: var(--color-ink, #1A1128); cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 8px rgba(0,0,0,.12); opacity: 0; transform: translateY(-4px); transition: opacity .2s var(--ease), transform .2s var(--ease), color .2s; }
    .sh-pcard:hover .sh-pcard-flip-btn, .sh-pcard-flip-btn:focus-visible { opacity: 1; transform: none; }
    .sh-pcard-flip-btn:hover { color: var(--color-accent-500, #C8176A); }
    @media (max-width: 760px) { .sh-pcard-flip-btn { opacity: 1; transform: none; } }
    /* sostanovalca zgornjega desnega kota se umakneta gumbu (le na karticah, ki ga imajo) */
    .sh-pcard--flip-opis:has(.sh-pcard-flip-btn) .sh-pcard-wish { top: 52px; }
    .sh-pcard--flip-opis:has(.sh-pcard-flip-btn) .sh-pcard-sticker { right: 52px; }
    .sh-pcard--flip-opis:has(.sh-pcard-flip-btn) .sh-pcard-stock { right: 52px; }
    /* hrbtna ploskev — grid sosed sprednje (višina = višja od obeh, vzor Okvir), predobrnjena */
    .sh-pcard--flip-opis .sh-pcard-back { grid-area: 1 / 1; min-width: 0; position: relative; transform: rotateY(180deg); backface-visibility: hidden; -webkit-backface-visibility: hidden; background: var(--color-surface, #fff); border-radius: calc(var(--radius-card, 4px) - 1px); padding: 16px; display: flex; flex-direction: column; align-items: flex-start; overflow: hidden; }
    .sh-pcard--flip-opis .sh-pcard-back .sh-pcard-flip-btn--back { opacity: 1; transform: none; background: color-mix(in oklab, var(--color-ink) 6%, transparent); box-shadow: none; }
    .sh-pcard-back-name { font-family: var(--font-sans); font-size: 14px; font-weight: 600; line-height: 1.35; color: var(--color-ink, #1A1128); margin: 0 0 8px; padding-right: 40px; }
    .sh-pcard-back-desc { margin: 0; font-family: var(--font-sans); font-size: 12.5px; line-height: 1.55; color: var(--color-muted, #857597); flex-grow: 1; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 8; }
    .sh-pcard-back-more { margin-top: 10px; font-family: var(--font-sans); font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--color-primary-600, #6B1F7B); }
    @media (prefers-reduced-motion: reduce) { .sh-pcard-flip-inner { transition: none; } }
    /* info ikona s tooltipom (nastavljivi info teksti cen) — prej v Category.cshtml */
    .sh-info { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 14px; border-radius: 50%; border: 1px solid var(--color-muted, #A89BB6); color: var(--color-muted, #857597); font-size: 9px; font-weight: 700; font-style: normal; cursor: help; vertical-align: middle; font-family: var(--font-sans); line-height: 1; }
    .sh-info::after { content: attr(data-tip); position: absolute; bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%); background: var(--color-ink, #1A1128); color: #fff; font-size: 11px; font-weight: 400; line-height: 1.4; padding: 6px 9px; border-radius: 6px; width: max-content; max-width: 220px; opacity: 0; pointer-events: none; transition: opacity .12s ease; z-index: 30; text-align: left; white-space: normal; }
    .sh-info:hover::after, .sh-info:focus::after { opacity: 1; }
    /* kompaktna izpeljanka za ozke mreže (sorodni izdelki, izdelki ob novici) */
    .sh-pcard--compact .sh-pcard-body { padding: 10px 12px 14px; }
    .sh-pcard--compact .sh-pcard-name { font-size: 13px; margin-bottom: 6px; }
    .sh-pcard--compact .sh-pcard-price-main { font-size: 17px; }
    /* ── zgradba: editorial — brez okvirja, zračno, umirjena cena ── */
    .sh-pcard--editorial { background: transparent; border: none; box-shadow: none; border-radius: 0; overflow: visible; }
    .sh-pcard--editorial .sh-pcard-media { border-radius: var(--radius-card, 4px); }
    .sh-pcard--editorial:hover { transform: none; box-shadow: none; }
    .sh-pcard--editorial .sh-pcard-body { padding: 12px 2px 4px; }
    .sh-pcard--editorial .sh-pcard-name { font-size: 15px; }
    .sh-pcard--editorial .sh-pcard-price-main { font-size: 16px; font-weight: 600; }
    /* ── zgradba: overlay — podatki na spodnjem robu fotografije ── */
    .sh-pcard--overlay .sh-pcard-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 44px 14px 14px; flex-grow: 0; background: var(--pcard-scrim, linear-gradient(to top, rgba(12,8,18,.78), rgba(12,8,18,0))); }
    .sh-pcard--overlay .sh-pcard-name { color: #fff; flex-grow: 0; margin-bottom: 4px; }
    .sh-pcard--overlay .sh-pcard-brand { color: rgba(255,255,255,.75); }
    .sh-pcard--overlay .sh-pcard-price-main { color: #fff; }
    .sh-pcard--overlay .sh-pcard-price-was { color: rgba(255,255,255,.65); }
    .sh-pcard--overlay .sh-pcard-price-omnibus { color: rgba(255,255,255,.7); }
    /* ── zgradba: technical — gosto, šifra artikla, slika na podlagi površine ── */
    .sh-pcard--technical { border-radius: 2px; }
    .sh-pcard--technical .sh-pcard-media { background: var(--color-surface, #fff); }
    .sh-pcard--technical .sh-pcard-media img { object-fit: contain; padding: 8px; box-sizing: border-box; }
    .sh-pcard--technical .sh-pcard-body { padding: 10px 12px 12px; }
    .sh-pcard--technical .sh-pcard-name { font-size: 13px; font-weight: 600; margin-bottom: 6px; }
    .sh-pcard--technical .sh-pcard-price-main { font-size: 17px; }
    /* ── zgradba: horizontal — slika levo, vsebina desno; na telefonu navpično ── */
    .sh-pcard--horizontal { flex-direction: row; align-items: stretch; }
    .sh-pcard--horizontal .sh-pcard-media { width: 42%; flex: 0 0 42%; aspect-ratio: auto; min-height: 140px; }
    .sh-pcard--horizontal .sh-pcard-media img { position: absolute; inset: 0; }
    @media (max-width: 700px) {
        .sh-pcard--horizontal { flex-direction: column; }
        .sh-pcard--horizontal .sh-pcard-media { width: 100%; flex: none; aspect-ratio: var(--pcard-ratio); min-height: 0; }
        .sh-pcard--horizontal .sh-pcard-media img { position: static; }
    }
    /* ── zgradba: tile — fotografija čez vso kartico, izrazit naslov na prelivu ── */
    .sh-pcard--tile { border: none; box-shadow: none; }
    .sh-pcard--tile .sh-pcard-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 60px 16px 16px; flex-grow: 0; background: var(--pcard-scrim-strong, linear-gradient(to top, rgba(12,8,18,.88), rgba(12,8,18,.25) 70%, rgba(12,8,18,0))); }
    .sh-pcard--tile .sh-pcard-name { color: #fff; font-family: var(--font-heading); font-size: 17px; font-weight: 700; text-transform: var(--h-transform, uppercase); letter-spacing: var(--h-letter-spacing, .03em); flex-grow: 0; margin-bottom: 4px; }
    .sh-pcard--tile .sh-pcard-brand { color: var(--color-accent-500, #C8176A); }
    .sh-pcard--tile .sh-pcard-price-main { color: #fff; }
    .sh-pcard--tile .sh-pcard-price-was { color: rgba(255,255,255,.6); }
    .sh-pcard--tile .sh-pcard-price-omnibus { color: rgba(255,255,255,.7); }
    /* prosti rob dobi barvo kartice (ne vijolične medijske podlage), sicer bi letterbox štrlel */
    .sh-pcard.sh-pcard--fit-contain .sh-pcard-media { background: var(--color-surface, #fff); }
    .sh-pcard.sh-pcard--fit-contain .sh-pcard-media img { object-fit: contain; padding: 8px; box-sizing: border-box; }
    /* video kot primarni medij ostane cover — okvir 16:9 v kvadratu bi sicer pustil črna pasova */

    /* ============ buttons ============ */
    .sf-btn { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: .5rem; border-radius: var(--radius); padding: var(--btn-pad-y, .75rem) var(--btn-pad-x, 1.5rem); font-size: var(--btn-font-size, .8rem); font-weight: var(--btn-weight, 600); font-family: var(--font-sans); letter-spacing: var(--btn-letter-spacing, .07em); text-transform: var(--btn-transform, uppercase); cursor: pointer; border: 1px solid transparent; transition: background var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease); overflow: hidden; }
    .sf-btn svg { width: 1rem; height: 1rem; }
    /* Barve elementov (Oblikovanje → Barve elementov): gumbi/značke/košarica berejo lastne
       žetone; fallback = dosedanja akcentna/primarna barva, torej brez spremembe dokler niso
       nastavljeni. Ločen tekst-žeton reši kontrast (svetel akcent + belo besedilo = neberljivo). */
    .sf-btn-primary { background: var(--color-button-bg, var(--color-accent-500)); color: var(--color-button-text, #fff) !important; }
    .sf-btn-primary:hover { background: color-mix(in srgb, var(--color-button-bg, var(--color-accent-500)) 88%, #000); }
    .sf-btn-secondary { background: var(--color-button2-bg, transparent); border: 2px solid var(--color-button2-text, rgba(255,255,255,.55)); color: var(--color-button2-text, #fff) !important; }
    .sf-btn-secondary:hover { background: rgba(255,255,255,.12); }
    .sf-btn-ghost { background: var(--color-button2-bg, transparent); color: var(--color-button2-text, var(--color-primary-600)) !important; border: 2px solid var(--color-button2-text, var(--color-primary-600)); }
    .sf-btn-ghost:hover { background: var(--color-primary-50); }
    .sf-btn-lg { padding: .9rem 1.75rem; font-size: .85rem; }
    .sf-btn-cart { display: inline-flex; align-items: center; gap: .5rem; background: var(--color-cart-bg, var(--color-accent-500)); color: var(--color-cart-text, #fff) !important; text-decoration: none; padding: .5rem 1rem; border-radius: var(--radius); font-family: var(--font-sans); font-weight: 600; font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; margin-left: .5rem; transition: background .15s var(--ease); white-space: nowrap; }
    .sf-btn-cart:hover { background: color-mix(in srgb, var(--color-cart-bg, var(--color-accent-500)) 88%, #000); }
    .sf-btn-cart svg { flex-shrink: 0; }
    @media (max-width: 600px) { .sf-cart-label { display: none; } }
    .sf-cart-badge { background: #fff; color: var(--color-accent-500); border-radius: 9999px; min-width: 1.1rem; height: 1.1rem; padding: 0 .2rem; display: inline-grid; place-items: center; font-size: .62rem; font-weight: 800; line-height: 1; }

    /* ============ hero ============ */
    .sf-hero { position: relative; overflow: hidden; color: #fff; background: var(--color-panel-dark); height: 100svh; min-height: 600px; display: flex; align-items: flex-start; }
    /* When a background image is set the gradient overlay handles legibility */
    .sf-hero-has-bg::after { content: ""; position: absolute; inset: 0; z-index: 0;
        background: var(--hero-overlay); }
    /* No image: aurora gradient fallback */
    .sf-hero:not(.sf-hero-has-bg)::before { content: ""; position: absolute; inset: 0;
        background: radial-gradient(60rem 40rem at 15% -10%, color-mix(in srgb, var(--color-primary-500) 75%, transparent), transparent 60%),
                    radial-gradient(50rem 40rem at 100% 0%, color-mix(in srgb, var(--color-accent-500) 55%, transparent), transparent 55%); }
    .sf-hero-bg { position: absolute; inset: 0; z-index: 0; }
    .sf-hero-bg img, .sf-hero-bg video { width: 100%; height: 100%; object-fit: cover; }
    .sf-hero .sf-container { position: relative; z-index: 1; padding-top: max(10rem, calc(var(--header-h, 10rem) + 3rem)); padding-bottom: clamp(4rem,8vw,7rem); }
    .sf-hero h1 { color: #fff; font-size: clamp(3rem,9vw,7rem); line-height: .91; }
    .sf-hero .sf-eyebrow { color: var(--color-accent-500); }
    .sf-hero .sf-lead { color: rgba(255,255,255,.72); font-size: 1.05rem; }
    .sf-hero-cta { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
    .sf-hero-trust { display: flex; gap: 1.5rem; margin-top: 2rem; flex-wrap: wrap; color: rgba(255,255,255,.65); font-size: .82rem; font-family: var(--font-sans); }
    .sf-hero-trust b { color: #fff; font-size: 1.3rem; font-family: var(--font-heading); display: block; text-transform: uppercase; letter-spacing: .04em; }
    .sf-hero-visual { display: none; } /* photo-based hero has no card visual */

    /* ============ trust / logos marquee ============ */
    .sf-marquee { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
    .sf-marquee-track { display: flex; gap: 3.5rem; width: max-content; animation: sf-scroll var(--marquee-duration, 26s) linear infinite; }
    .sf-marquee-item { font-weight: 800; font-family: var(--font-heading); font-size: 1.3rem; color: var(--color-muted); opacity: .65; white-space: nowrap; letter-spacing: -.01em; }
    @keyframes sf-scroll { to { transform: translateX(-50%); } }

    /* ============ category grid ============ */
    .sf-cats { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .6rem; }
    .sf-cat { position: relative; overflow: hidden; border-radius: var(--radius-lg); aspect-ratio: 4/3; padding: 1rem 1.1rem 1.2rem; display: flex; flex-direction: column; justify-content: flex-end; color: #fff; background: var(--color-brand-900); transition: transform .35s var(--ease); }
    .sf-cat:hover { transform: translateY(-4px); }
    /* bg image is set via inline style on the element; this handles the overlay */
    .sf-cat::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(14,5,23,.88) 0%, rgba(14,5,23,.22) 55%, transparent 100%); z-index: 0; transition: opacity .3s var(--ease); }
    .sf-cat:hover::before { opacity: .95; }
    .sf-cat-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform: scale(1); transition: transform .6s var(--ease); }
    .sf-cat:hover .sf-cat-bg { transform: scale(1.07); }
    .sf-cat-emoji { display: none; }
    .sf-cat-name { position: relative; z-index: 1; font-family: var(--font-heading); font-weight: 700; font-size: 1.15rem; text-transform: uppercase; letter-spacing: .04em; line-height: 1.1; transform: translateY(0); transition: transform .28s var(--ease); }
    .sf-cat:hover .sf-cat-name { transform: translateY(-3px); }
    .sf-cat-count { position: relative; z-index: 1; font-size: .75rem; color: rgba(255,255,255,.65); margin-top: .2rem; opacity: 0; transform: translateY(5px); transition: opacity .25s .03s var(--ease), transform .25s .03s var(--ease); font-family: var(--font-sans); text-transform: none; letter-spacing: 0; }
    .sf-cat:hover .sf-cat-count { opacity: 1; transform: translateY(0); }
    .sf-cat-arrow { display: none; }

    /* ============ product grid ============ */
    .sf-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); }
    .sf-product { position: relative; border: 1px solid var(--color-line); border-radius: var(--radius-lg); background: var(--color-surface); overflow: hidden; cursor: pointer; transition: transform .25s var(--ease), box-shadow .25s var(--ease); }
    .sf-product:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
    .sf-product-link { color: inherit; text-decoration: none; display: block; }
    .sf-product-link::before { content: ""; position: absolute; inset: 0; z-index: 1; }
    .sf-product .sf-add, .sf-product .sh-quick-add, .sf-product .sf-wish, .sf-product .sf-tag, .sf-product .sh-badge-free, .sf-product .sh-preorder { position: relative; z-index: 2; }
    .sf-product-media { position: relative; aspect-ratio: 4/3; background: var(--color-primary-50); overflow: hidden; }
    .sf-product-media img { width: 100%; height: 100%; object-fit: cover; transform: scale(1); transition: transform .45s var(--ease); }
    .sf-product:hover .sf-product-media img { transform: scale(1.06); }
    .sf-product-media::after { content: ""; position: absolute; inset: 0; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect x='6' y='14' width='40' height='32' rx='2' fill='%23e5e0ec' stroke='%23cac2d4' stroke-width='2'/%3E%3Ccircle cx='18' cy='26' r='4' fill='%23cac2d4'/%3E%3Cpolyline points='6,38 18,26 27,35 33,29 46,46' fill='none' stroke='%23cac2d4' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E") center/45% no-repeat; opacity: .7; }
    .sf-product-media img ~ *::after, .sf-product-media img + *::after { display: none; }
    /* hide placeholder when image is present */
    .sf-product-media:has(img) ::after { display: none; }
    .sf-tag { position: absolute; top: .625rem; left: .625rem; z-index: 2; font-size: .68rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; padding: .2rem .5rem; border-radius: var(--radius-sm); background: var(--color-accent-500); color: #fff; font-family: var(--font-heading); }
    .sf-tag-new { background: var(--color-primary-600); }
    /* add-to-cart overlay slides up on hover */
    .sf-add { position: absolute; bottom: 0; left: 0; right: 0; z-index: 2; border: 0; border-radius: 0; cursor: pointer; background: var(--color-primary-600); color: #fff; padding: .6rem 1rem; font-family: var(--font-sans); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; display: flex; align-items: center; justify-content: center; gap: .5rem; transform: translateY(100%); transition: transform .22s var(--ease), background .15s; }
    .sf-product:hover .sf-add { transform: translateY(0); }
    .sf-add:hover { background: var(--color-primary-700); }
    .sf-add svg { width: .85rem; height: .85rem; }
    .sf-wish { position: absolute; top: .5rem; right: .5rem; z-index: 2; width: 2rem; height: 2rem; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.9); color: var(--color-brand-900); border: 0; cursor: pointer; opacity: 0; transform: translateY(-4px); transition: opacity .25s var(--ease), transform .25s var(--ease); }
    .sf-product:hover .sf-wish { opacity: 1; transform: translateY(0); }
    .sf-wish svg { width: 1rem; height: 1rem; }
    .sf-product-body { padding: var(--card-pad, .75rem .875rem 1rem); }
    .sf-product-brand { font-family: var(--font-heading); font-weight: 600; font-size: .68rem; letter-spacing: .13em; text-transform: uppercase; color: var(--color-primary-600); display: block; margin-bottom: .2rem; }
    .sf-product-rating { display: flex; align-items: center; gap: .25rem; font-size: .72rem; color: var(--color-muted); margin-bottom: .5rem; font-family: var(--font-sans); }
    .sf-stars { color: var(--color-accent-500); letter-spacing: .04em; }
    .sf-product-name { font-size: .88rem; font-weight: 500; color: var(--color-ink); font-family: var(--font-sans); text-transform: none; letter-spacing: 0; line-height: 1.4; margin: 0 0 .6rem; }
    .sf-product-foot { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
    .sf-price { display: flex; align-items: baseline; gap: .4rem; }
    .sf-price b { font-size: 1.2rem; font-weight: 700; color: var(--color-ink); font-family: var(--font-heading); text-transform: uppercase; letter-spacing: .02em; }
    .sf-price b.is-sale { color: var(--color-accent-500); }
    .sf-price s { font-size: .78rem; color: var(--color-muted); font-family: var(--font-sans); }

    /* ============ feature cards ============ */
    .sf-features { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: 1.25rem; }
    .sf-feature { background: var(--color-surface); border: 1px solid var(--color-line); border-radius: var(--radius-lg); padding: var(--card-pad-lg, 1.75rem); transition: transform var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease); }
    .sf-feature:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
    .sf-feature-ico { width: 3rem; height: 3rem; border-radius: var(--radius); display: grid; place-items: center; background: var(--color-primary-50); color: var(--color-primary-600); margin-bottom: 1rem; }
    .sf-feature-ico svg { width: 1.5rem; height: 1.5rem; }
    .sf-feature h3 { font-size: 1.15rem; margin-bottom: .35rem; }
    .sf-feature p { color: var(--color-muted); font-size: .92rem; margin: 0; }

    /* Mreža kartic (»bento«) — _CardGrid. Kartice so enake kot pri Prednostih, le brez ikone
       in z mono oznako; velikost pove, koliko polj mreže postavka zasede. Na telefonu se vse
       zložijo v en stolpec, ker dvopoljna kartica v enem stolpcu nima pomena. */
    .sf-cardgrid { display: grid; gap: 1rem; grid-auto-flow: dense; }
    .sf-cardgrid--c2 { grid-template-columns: repeat(2, 1fr); }
    .sf-cardgrid--c3 { grid-template-columns: repeat(3, 1fr); }
    .sf-cardgrid--c4 { grid-template-columns: repeat(4, 1fr); }
    .sf-card { position: relative; overflow: hidden; display: flex; flex-direction: column; gap: .4rem; background: var(--color-surface); border: 1px solid var(--color-line); border-radius: var(--radius-lg); padding: var(--card-pad-lg, 1.75rem); color: inherit; text-decoration: none; transition: transform var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease); }
    /* Odziv na miško (polje »Odziv na miško« pri bloku Mreža kartic). »dvig« je privzetek in
       velja tudi za kartice brez povezave — prej se je premaknila samo povezana. »sij« doda
       še radialen odsev na poziciji kazalca (--mx/--my nastavlja skripta v _CardGrid). */
    .sf-cardgrid--hv-lift .sf-card:hover,
    .sf-cardgrid--hv-glow .sf-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); border-color: var(--color-primary); }
    .sf-cardgrid--hv-glow .sf-card::before {
        content: ''; position: absolute; inset: 0; pointer-events: none; opacity: 0;
        transition: opacity var(--dur-base) var(--ease);
        background: radial-gradient(340px circle at var(--mx, 50%) var(--my, 0%),
            color-mix(in srgb, var(--color-primary) 16%, transparent), transparent 65%); }
    .sf-cardgrid--hv-glow .sf-card:hover::before { opacity: 1; }
    /* Vsebina kartice mora ostati nad sijem (::before je v isti plasti). */
    .sf-cardgrid--hv-glow .sf-card > * { position: relative; z-index: 1; }
    @media (prefers-reduced-motion: reduce) {
        .sf-cardgrid .sf-card:hover { transform: none; }
        .sf-cardgrid--hv-glow .sf-card::before { display: none; }
    }
    .sf-card-label { font-family: var(--font-mono, ui-monospace, monospace); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--color-primary); }
    .sf-card h3 { font-size: 1.05rem; margin: 0; }
    .sf-card p { color: var(--color-muted); font-size: .9rem; margin: 0; }
    .sf-card--wide { grid-column: span 2; }
    .sf-card--tall { grid-row: span 2; }
    .sf-card--featured { grid-column: span 2; grid-row: span 2; justify-content: center; }
    .sf-card--featured h3 { font-size: 1.5rem; }
    .sf-card--featured p { font-size: 1rem; }
    @media (max-width: 900px) {
        .sf-cardgrid--c3, .sf-cardgrid--c4 { grid-template-columns: repeat(2, 1fr); }
    }
    @media (max-width: 560px) {
        .sf-cardgrid, .sf-cardgrid--c2, .sf-cardgrid--c3, .sf-cardgrid--c4 { grid-template-columns: 1fr; }
        .sf-card--wide, .sf-card--tall, .sf-card--featured { grid-column: auto; grid-row: auto; }
    }

    /* Koraki — _Steps. Navpicno: stevilke v stolpcu s crto med njimi (crta je ::before na
       elementu, ne locen element, da je ni treba skrivati pri zadnjem koraku — tega ujame
       :last-child). Vodoravno: enakomerni stolpci brez crte, ker bi se pri prelomu vrstice
       lomila tudi ona. */
    .sf-steps { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.5rem; counter-reset: sf-step; }
    .sf-steps--horizontal { grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
    .sf-step { position: relative; display: flex; flex-direction: column; gap: .6rem; }
    .sf-steps--vertical .sf-step { padding-left: 3.25rem; padding-bottom: 1.5rem; }
    .sf-steps--vertical .sf-step::before { content: ''; position: absolute; left: 1.1rem; top: 2.2rem; bottom: -.5rem; width: 1px; background: var(--color-line); }
    .sf-steps--vertical .sf-step:last-child { padding-bottom: 0; }
    .sf-steps--vertical .sf-step:last-child::before { display: none; }
    .sf-step-label { font-family: var(--font-mono, ui-monospace, monospace); font-size: .72rem; letter-spacing: .1em; color: var(--color-primary); }
    .sf-steps--vertical .sf-step-label { position: absolute; left: 0; top: 0; width: 2.2rem; height: 2.2rem; display: grid; place-items: center; border: 1px solid var(--color-line); border-radius: 50%; background: var(--color-surface); }
    .sf-step-img { width: 100%; border: 1px solid var(--color-line); border-radius: var(--radius-lg); }
    .sf-step h3 { font-size: 1.1rem; margin: 0 0 .3rem; }
    .sf-step p { color: var(--color-muted); font-size: .92rem; margin: 0; }

    /* Paketi in cene — _PricingPlans. Kartice so enako visoke (align-items: stretch je privzet),
       gumb pa je potisnjen na dno z margin-top: auto, da so gumbi vseh paketov v isti črti tudi
       takrat, ko imajo paketi različno število vrstic. */
    .sf-plans { display: grid; gap: 1.25rem; align-items: stretch; }
    .sf-plans--c2 { grid-template-columns: repeat(2, 1fr); }
    .sf-plans--c3 { grid-template-columns: repeat(3, 1fr); }
    .sf-plans--c4 { grid-template-columns: repeat(4, 1fr); }
    .sf-plan { position: relative; display: flex; flex-direction: column; background: var(--color-surface); border: 1px solid var(--color-line); border-radius: var(--radius-lg); padding: var(--card-pad-lg, 1.75rem); }
    .sf-plan--featured { border-color: var(--color-primary);
        background: linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 8%, transparent), transparent 45%), var(--color-surface);
        box-shadow: 0 24px 70px -40px color-mix(in srgb, var(--color-primary) 55%, transparent); }
    .sf-plan-badge { position: absolute; top: -.7rem; left: var(--card-pad-lg, 1.75rem); background: var(--color-primary); color: var(--color-text-on-accent, #fff); font-family: var(--font-mono, ui-monospace, monospace); font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; padding: .25rem .6rem; border-radius: var(--radius-badge, 4px); }
    .sf-plan-name { font-size: 1.25rem; margin: 0 0 .25rem; }
    .sf-plan-tagline { color: var(--color-muted); font-size: .9rem; margin: 0 0 1rem; }
    .sf-plan-price { margin: 0; display: flex; align-items: baseline; gap: .35rem; flex-wrap: wrap; }
    .sf-plan-amount { font-family: var(--font-heading); font-size: clamp(1.9rem, 3vw, 2.6rem); font-weight: var(--h-weight, 800); letter-spacing: -.03em; line-height: 1; }
    .sf-plan-period { color: var(--color-muted); font-size: .88rem; }
    .sf-plan-delta { color: var(--color-primary); font-size: .82rem; margin: .35rem 0 0; }
    .sf-plan-credits { display: flex; flex-direction: column; gap: .15rem; margin-top: 1.1rem;
        padding: 1.1rem 1.1rem 1.2rem; background: rgba(255,255,255,.03);
        border: 1px solid var(--color-line); border-radius: var(--radius-lg, .7rem); }
    .sf-plan-credits-n { font-family: var(--font-heading); font-size: 1.9rem; font-weight: 850;
        letter-spacing: -.04em; line-height: 1.1; color: var(--color-primary); }
    .sf-plan-credits-l { font-size: .85rem; color: var(--color-muted); }
    .sf-plan-credits-w { margin-top: .5rem; font-family: var(--font-mono, ui-monospace, monospace);
        font-size: .74rem; color: var(--color-ink); }
    .sf-plan-lines { list-style: none; padding: 0; margin: 1.25rem 0 1.5rem; display: flex; flex-direction: column; gap: .5rem; }
    .sf-plan-lines li { position: relative; padding-left: 1.35rem; font-size: .92rem; color: var(--color-ink); }
    .sf-plan-lines li::before { content: ''; position: absolute; left: 0; top: .45em; width: .7rem; height: .38rem; border-left: 2px solid var(--color-primary); border-bottom: 2px solid var(--color-primary); transform: rotate(-45deg); }
    .sf-plan-btn { margin-top: auto; justify-content: center; width: 100%; }
    @media (max-width: 900px) {
        .sf-plans--c3, .sf-plans--c4 { grid-template-columns: repeat(2, 1fr); }
    }
    @media (max-width: 620px) {
        .sf-plans, .sf-plans--c2, .sf-plans--c3, .sf-plans--c4 { grid-template-columns: 1fr; }
    }

    /* ============ stats ============ */
    .sf-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: 1rem; }
    .sf-stat { text-align: center; padding: 1.5rem 1rem; border-radius: var(--radius-lg); background: var(--color-surface); border: 1px solid var(--color-line); }
    .sf-stat b { display: block; font-family: var(--font-heading); font-size: clamp(2rem,4vw,2.75rem); font-weight: 800; background: var(--grad-brand); -webkit-background-clip: text; background-clip: text; color: transparent; }
    .sf-stat span { color: var(--color-muted); font-size: .9rem; font-weight: 600; }

    /* ============ testimonials ============ */
    .sf-testi { display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: 1.25rem; }
    .sf-quote { background: var(--color-surface); border: 1px solid var(--color-line); border-radius: var(--radius-lg); padding: 1.75rem; box-shadow: var(--shadow-sm); }
    .sf-quote .sf-stars { font-size: 1.05rem; }
    .sf-quote p { font-size: 1.02rem; color: var(--color-ink); margin: .75rem 0 1.25rem; }
    .sf-quote-by { display: flex; align-items: center; gap: .75rem; }
    .sf-avatar { width: 2.6rem; height: 2.6rem; border-radius: 50%; background: var(--grad-brand); color: #fff; display: grid; place-items: center; font-weight: 800; font-family: var(--font-heading); }
    .sf-quote-by b { display: block; color: var(--color-brand-900); font-size: .92rem; }
    .sf-quote-by span { color: var(--color-muted); font-size: .82rem; }

    /* ============ newsletter ============ */
    .sf-newsletter { position: relative; overflow: hidden; border-radius: var(--radius-xl); background: var(--color-panel-dark); color: #fff; padding: clamp(2.5rem,5vw,4rem); text-align: center; }
    .sf-newsletter::before { content: ""; position: absolute; inset: 0; background: radial-gradient(40rem 30rem at 80% 120%, color-mix(in srgb, var(--color-primary-500) 70%, transparent), transparent 60%), radial-gradient(30rem 30rem at 0% 0%, color-mix(in srgb, var(--color-accent-500) 45%, transparent), transparent 55%); }
    .sf-newsletter > * { position: relative; z-index: 1; }
    .sf-newsletter h2 { color: #fff; }
    .sf-newsletter p { color: rgba(255,255,255,.78); max-width: 34rem; margin: .5rem auto 1.75rem; }
    .sf-nl-form { display: flex; gap: .6rem; max-width: 30rem; margin: 0 auto; flex-wrap: wrap; }
    .sf-nl-form input { flex: 1 1 14rem; border: 1px solid rgba(255,255,255,.25); background: rgba(255,255,255,.1); color: #fff; border-radius: .8rem; padding: .85rem 1.1rem; font: inherit; outline: 0; }
    .sf-nl-form input::placeholder { color: rgba(255,255,255,.6); }
    .sf-nl-form input:focus { border-color: var(--color-accent-400); }

    /* ============ legacy/simple blocks ============ */
    .sf-tw { display: flex; flex-direction: column; gap: 1rem; }
    .sf-tw-prompt { display: flex; align-items: center; gap: .6rem; background: var(--color-canvas);
        border: 1px solid color-mix(in srgb, var(--color-ink) 16%, transparent); border-radius: .7rem;
        padding: .9rem 1.1rem; font-family: var(--font-mono, ui-monospace, monospace);
        font-size: .82rem; line-height: 1.5; min-height: 3.1rem; }
    .sf-tw-ps { color: var(--color-primary); flex: none; }
    .sf-tw-typing { color: var(--color-ink); }
    .sf-tw-caret { width: 8px; height: 16px; flex: none; margin-left: auto; background: var(--color-primary);
        animation: sfTwBlink 1.1s steps(1) infinite; }
    @keyframes sfTwBlink { 50% { opacity: 0; } }
    @media (prefers-reduced-motion: reduce) { .sf-tw-caret { animation: none; } }
    .sf-tw-result { background: var(--color-canvas); border: 1px solid var(--color-line);
        border-radius: .7rem; padding: 1.1rem; display: flex; flex-direction: column; gap: .9rem; }
    .sf-tw-result[hidden] { display: none; }
    .sf-tw-label { font-family: var(--font-mono, ui-monospace, monospace); font-size: .62rem;
        letter-spacing: .14em; text-transform: uppercase; color: var(--color-muted); }
    .sf-tw-swatches { display: flex; gap: .5rem; }
    .sf-tw-swatches i { width: 34px; height: 34px; border-radius: .45rem;
        border: 1px solid color-mix(in srgb, var(--color-ink) 16%, transparent); }
    .sf-tw-rows { display: grid; grid-template-columns: auto 1fr; gap: .4rem 1.2rem; margin: 0;
        font-family: var(--font-mono, ui-monospace, monospace); font-size: .72rem; color: var(--color-muted); }
    .sf-tw-rows dt { white-space: nowrap; }
    .sf-tw-rows dd { margin: 0; color: var(--color-primary); }

    .sf-richtext { color: var(--color-ink); }
    .sf-richtext p { margin: .6rem 0; }
    .sf-richtext--label { font-family: var(--font-mono, ui-monospace, monospace); font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; color: var(--color-muted); }
    .sf-richtext--small { font-size: .85rem; color: var(--color-muted); }
    .sf-richtext--lead  { font-size: 1.05rem; color: var(--color-muted); }
    .sf-richtext--mono  { font-family: var(--font-mono, ui-monospace, monospace); font-size: .82rem; }
    .sf-richtext--number { font-family: var(--font-heading); font-size: 1.9rem; font-weight: 850; letter-spacing: -.04em; line-height: 1.1; }
    .sf-richtext--label p, .sf-richtext--number p { margin: 0; }
    .sf-richtext--small p { margin: .25rem 0; }
    .sf-richtext--small p:first-child, .sf-richtext--lead p:first-child { margin-top: 0; }
    .sf-richtext--small p:last-child, .sf-richtext--lead p:last-child { margin-bottom: 0; }
    .sf-richtext--list-accent ul, .sf-richtext--list-check ul { list-style: none; padding-left: 0; }
    .sf-richtext--list-accent ul > li, .sf-richtext--list-check ul > li { position: relative; padding-left: 1.5rem; }
    .sf-richtext--list-accent ul > li::before { content: ""; position: absolute; left: 0; top: .55em; width: .5rem; height: .5rem; border-radius: 2px; background: var(--color-primary); }
    .sf-richtext--list-check ul > li::before { content: "✓"; position: absolute; left: 0; color: var(--color-primary); }
    /* Prazne vrstice, ki jih urednik namenoma vstavi (Enter), naj bodo vidne kot razmik —
       sicer se prazen <p></p> (ali <p><br></p>) sesede na višino 0. (#5) */
    .sf-richtext p:empty { min-height: 1em; }
    .sf-richtext p > br:only-child { display: block; content: ""; }
    /* Tabela, vpisana v besedilnem bloku (RTE ali HTML). Blok »table« ima svoj videz (.sf-table),
       tabela znotraj besedila pa je bila doslej brez obrob in razmikov — stolpci so se zlili v
       besedilo. Isti tokeni kot pri bloku, da sta videza usklajena. */
    .sf-richtext table { width: 100%; border-collapse: collapse; margin: 1.1rem 0; font-size: .95rem; }
    .sf-richtext :is(th, td) { padding: .6rem .8rem; border: 1px solid var(--color-line); text-align: left; vertical-align: top; }
    .sf-richtext th { background: var(--color-primary-50, #f1f5f9); font-weight: 700; }
    .sf-richtext tbody tr:nth-child(even) td { background: var(--color-canvas); }
    /* Na telefonu široka tabela raztegne stran — raje naj drsi sama. */
    @media (max-width: 640px) {
        .sf-richtext table { display: block; overflow-x: auto; white-space: nowrap; }
    }
    .sf-image { width: 100%; border-radius: var(--radius-lg); box-shadow: var(--shadow); }
    .sf-image-placeholder { display: flex; align-items: center; justify-content: center; aspect-ratio: 16/6; width: 100%; border-radius: var(--radius-lg); background: linear-gradient(135deg, var(--color-primary-50), var(--color-canvas)); color: var(--color-muted); font-size: .9rem; }
    /* Brez lastnega zunanjega margina — razmik med bloki daje ritem strani/slota,
       izrecno pa »Odmik nad/pod blokom« (.sf-bw--st/sb). */
    .sf-section { border: 1px solid var(--color-line); border-radius: var(--radius-lg); padding: 1.75rem; background: var(--color-surface); }
    .sf-section > h2 { font-size: clamp(1.25rem, 1rem + 1.1vw, 1.6rem); margin: 0 0 1rem; }
    .sf-section-surface { background: var(--color-canvas); }
    /* »Brez ozadja«: gol odsek — samo ovoj za vsebino, brez kartičnega videza. */
    .sf-section--plain { border: 0; border-radius: 0; padding: 0; background: none; }
    .sf-section > .sf-slot > * + * { margin-top: 1rem; }
    /* Celostranski blok (postavitev »Polna širina«): kartični videz ob robu strani nima smisla —
       1px obroba odseka se med obarvanimi sekcijami vidi kot bela črta, zaobljeni vogali pa ob
       robu zaslona puščajo bele zareze. Velja za odsek in okvir (tudi obračalnega) v polni širini. */
    .sf-bw--full > .sf-section { border: 0; border-radius: 0; }
    .sf-bw--full > .sf-okvir,
    .sf-bw--full > .sf-okvir-flip .sf-okvir { border-radius: 0; }
    /* ============ Tabela (blok »table«) ============ */
    /* Videz: --sf-table-head = barva glave (prop »Barva glave«, sicer token teme).
       Odzivnost: .sf-table--m-cards zloži vrstice v kartice (celica dobi naslov kolone iz
       data-label), .sf-table--m-scroll drsi vodoravno, .sf-table--m-shrink stisne pisavo. */
    .sf-table { --sf-table-head: var(--color-primary-50, #f1f5f9); --sf-table-pad: .8rem 1rem; --sf-table-fs: .95rem; color: var(--color-ink); }
    .sf-table-head { margin-bottom: 1rem; }
    .sf-table-eyebrow { display: block; font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--color-primary-600, #4338ca); margin-bottom: .3rem; }
    .sf-table-title { font-size: clamp(1.15rem, 1rem + .8vw, 1.5rem); margin: 0 0 .35rem; }
    .sf-table-intro { margin: 0; color: var(--color-muted); max-width: 46rem; }
    .sf-table-note { margin: .6rem 0 0; font-size: .8rem; color: var(--color-muted); }

    /* Ovoj skrbi za vodoravno drsenje in obrez zaobljenih vogalov. */
    .sf-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
    .sf-table-scroll:focus-visible { outline: 2px solid var(--color-primary-600, #4338ca); outline-offset: 2px; }
    .sf-table--r-md .sf-table-scroll { border-radius: .5rem; }
    .sf-table--r-lg .sf-table-scroll { border-radius: var(--radius-lg, .9rem); }
    .sf-table table { width: 100%; border-collapse: collapse; font-size: var(--sf-table-fs); background: var(--color-surface, #fff); }
    .sf-table caption { caption-side: top; text-align: left; font-size: .85rem; color: var(--color-muted); padding: 0 0 .5rem; }
    .sf-table th, .sf-table td { padding: var(--sf-table-pad); text-align: left; vertical-align: top; }
    .sf-table thead th { background: var(--sf-table-head); font-weight: 700; white-space: nowrap; border-bottom: 1px solid var(--color-line); }
    /* Vrstica skupine (prva celica se zacne z »##«) — naslov sklopa cez celo sirino. */
    .sf-table .sf-tr-group th { background: var(--color-canvas, var(--sf-table-head)); font-family: var(--font-mono, ui-monospace, monospace); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--color-primary); font-weight: 600; border-top: 1px solid var(--color-line); border-bottom: 1px solid var(--color-line); }
    /* Poudarjena kolona — pokaze priporoceni paket, ne da bi urednik barval celice. */
    .sf-table .sf-tc--hl { background: color-mix(in srgb, var(--color-primary) 8%, transparent); }
    .sf-table thead th.sf-tc--hl { background: color-mix(in srgb, var(--color-primary) 16%, var(--sf-table-head)); }
    .sf-table tbody th { font-weight: 650; }
    .sf-table tbody tr + tr th, .sf-table tbody tr + tr td { border-top: 1px solid var(--color-line); }
    .sf-tc--center { text-align: center !important; }
    .sf-tc--right { text-align: right !important; font-variant-numeric: tabular-nums; }

    /* Gostota + velikost pisave */
    .sf-table--d-sm { --sf-table-pad: .45rem .65rem; }
    .sf-table--d-lg { --sf-table-pad: 1.05rem 1.25rem; }
    .sf-table--f-sm { --sf-table-fs: .85rem; }
    .sf-table--f-lg { --sf-table-fs: 1.05rem; }

    /* Različice videza */
    .sf-table--striped tbody tr:nth-child(even) > * { background: color-mix(in srgb, var(--color-line) 28%, transparent); }
    .sf-table--grid table, .sf-table--grid th, .sf-table--grid td { border: 1px solid var(--color-line); }
    .sf-table--cards .sf-table-scroll { border: 1px solid var(--color-line); box-shadow: var(--shadow); }
    .sf-table:not(.sf-table--nohover) tbody tr:hover > * { background: color-mix(in srgb, var(--color-primary-600, #4338ca) 6%, transparent); }

    /* Pripeta prva kolona med vodoravnim drsenjem */
    .sf-table--sticky th:first-child, .sf-table--sticky td:first-child { position: sticky; left: 0; z-index: 1; background: var(--color-surface, #fff); }
    .sf-table--sticky thead th:first-child { background: var(--sf-table-head); z-index: 2; }

    /* Razvrščanje s klikom na glavo */
    .sf-tbl-sort { display: inline-flex; align-items: center; gap: .35rem; border: 0; background: none; padding: 0; font: inherit; color: inherit; cursor: pointer; }
    .sf-tbl-sort svg { opacity: .45; flex: 0 0 auto; }
    .sf-tbl-sort:hover svg { opacity: .9; }
    .sf-table th[aria-sort] .sf-tbl-sort svg { opacity: 1; color: var(--color-primary-600, #4338ca); }
    .sf-table th[aria-sort="descending"] .sf-tbl-sort svg { transform: rotate(180deg); }

    @media (max-width: 640px) {
        /* Kolone, ki jih je urednik označil kot »Skrij na telefonu«. */
        .sf-table .sf-tc--hidem { display: none; }
        /* Pomanjšaj: tabela ostane tabela, le tesnejša. */
        .sf-table--m-shrink { --sf-table-pad: .4rem .5rem; --sf-table-fs: .8rem; }
        .sf-table--m-shrink table { table-layout: fixed; word-break: break-word; }
        .sf-table--m-shrink th, .sf-table--m-shrink td { white-space: normal; }
        .sf-table--m-shrink thead th { white-space: normal; }
        /* Namig, da se da drsati vodoravno. */
        .sf-table--m-scroll .sf-table-scroll { background:
            linear-gradient(to right, var(--color-surface, #fff) 30%, transparent),
            linear-gradient(to left, var(--color-surface, #fff) 30%, transparent) 100% 0,
            radial-gradient(farthest-side at 0 50%, rgba(0,0,0,.14), transparent),
            radial-gradient(farthest-side at 100% 50%, rgba(0,0,0,.14), transparent) 100% 0;
            background-repeat: no-repeat; background-size: 3rem 100%, 3rem 100%, 1rem 100%, 1rem 100%; background-attachment: local, local, scroll, scroll; }
        /* Kartice: vsaka vrstica svoja kartica, celica dobi naslov kolone pred vrednostjo. */
        .sf-table--m-cards .sf-table-scroll { overflow: visible; }
        .sf-table--m-cards table, .sf-table--m-cards tbody, .sf-table--m-cards tr, .sf-table--m-cards th, .sf-table--m-cards td { display: block; width: auto; }
        .sf-table--m-cards thead { display: none; }
        /* Ovoj tabele v kartičnem načinu ni več tabela — ozadje in napis morata slediti bloku,
           sicer caption ostane ozka table-caption celica na beli progi. */
        .sf-table--m-cards table { background: none; }
        .sf-table--m-cards caption { display: block; width: auto; }
        .sf-table--m-cards tbody tr { border: 1px solid var(--color-line); border-radius: var(--radius-lg, .9rem); background: var(--color-surface, #fff); padding: .35rem .2rem; margin: 0 0 .7rem; }
        .sf-table--m-cards tbody tr:last-child { margin-bottom: 0; }
        .sf-table--m-cards tbody tr > * { border: 0 !important; background: none !important; display: flex; gap: .8rem; align-items: baseline; justify-content: space-between; padding: .45rem .85rem; text-align: right !important; }
        .sf-table--m-cards tbody tr > * + * { border-top: 1px dashed var(--color-line) !important; }
        .sf-table--m-cards tbody tr > *::before { content: attr(data-label); flex: 0 0 42%; text-align: left; font-size: .8rem; font-weight: 600; color: var(--color-muted); }
        /* Celica brez naslova kolone (prazna glava) naj ne pušča praznega stolpca. */
        .sf-table--m-cards tbody tr > *[data-label=""]::before { content: none; }
        .sf-table--m-cards tbody th[scope="row"] { font-weight: 700; }
        .sf-table--m-cards .sf-table-note { margin-top: .8rem; }
    }

    .sf-unknown { border: 1px dashed var(--color-danger-500); border-radius: .25rem; padding: .5rem; font-size: .75rem; color: var(--color-danger-500); }

    /* ============ footer ============ */
    .sf-footer { background: var(--color-panel-dark); color: rgba(255,255,255,.72); margin-top: 0; }
    .sf-footer .sf-container { padding-top: clamp(3rem,5vw,4.5rem); padding-bottom: 2rem; }
    .sf-foot-grid { display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: 2.5rem; padding-bottom: 2.5rem; border-bottom: 1px solid rgba(255,255,255,.12); }
    .sf-foot-grid--4col { grid-template-columns: 1.4fr repeat(4, 1fr); }
    .sf-foot-contact { display: flex; flex-direction: column; gap: .4rem; margin-top: .85rem; }
    .sf-foot-contact-line { display: flex; align-items: center; gap: .5rem; font-family: var(--font-sans); font-size: .82rem; }
    .sf-foot-contact-line svg { flex-shrink: 0; opacity: .45; }
    .sf-foot-contact-line strong { color: #fff; font-weight: 600; }
    .sf-footer .sf-logo { color: #fff; margin-bottom: 1rem; }
    .sf-footer p { font-size: .9rem; max-width: 22rem; }
    .sf-foot-col h4 { color: #fff; font-size: .95rem; margin-bottom: 1rem; }
    .sf-foot-col a { display: block; color: rgba(255,255,255,.7); padding: .3rem 0; font-size: .9rem; transition: color .2s var(--ease), padding-left .2s var(--ease); }
    .sf-foot-col a:hover { color: #fff; padding-left: .25rem; }
    .sf-foot-social { display: flex; gap: .6rem; margin-top: 1.25rem; }
    .sf-foot-social a { width: 2.4rem; height: 2.4rem; border-radius: .7rem; background: rgba(255,255,255,.08); display: grid; place-items: center; color: #fff; transition: background .2s var(--ease), transform .2s var(--ease); }
    .sf-foot-social a:hover { background: var(--color-primary-600); transform: translateY(-2px); }
    .sf-foot-social svg { width: 1.15rem; height: 1.15rem; }
    .sf-foot-bottom { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-top: 1.5rem; font-size: .82rem; flex-wrap: wrap; }
    .sf-foot-pay { display: flex; gap: .4rem; }
    .sf-foot-pay span { background: rgba(255,255,255,.1); border-radius: .4rem; padding: .25rem .55rem; font-size: .7rem; font-weight: 700; letter-spacing: .03em; }
    .sf-foot-pay { align-items: center; flex-wrap: wrap; }
    .sf-foot-pay img { height: 22px; width: auto; max-width: 60px; object-fit: contain; border-radius: .3rem; background: rgba(255,255,255,.1); padding: .15rem .3rem; }

    /* footer — Layer 3 variants (F5). Default (columns) adds no classes → markup unchanged. */
    /* mega: e-novice band above the columns grid */
    .sf-footer--mega .sf-container { padding-top: clamp(3.5rem,6vw,5.5rem); }
    .sf-foot-news { display: flex; justify-content: center; padding-bottom: 2.75rem; margin-bottom: 2.75rem; border-bottom: 1px solid rgba(255,255,255,.12); }
    /* minimal: one centered row */
    .sf-footer--minimal .sf-container { padding-top: 2.25rem; padding-bottom: 2.25rem; }
    .sf-foot-minimal { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 1.1rem; }
    .sf-foot-minimal .sf-logo { margin-bottom: 0; }
    .sf-foot-minimal .sf-foot-social { margin-top: 0; }
    .sf-foot-links { display: flex; flex-wrap: wrap; justify-content: center; gap: .35rem 1.5rem; }
    .sf-foot-links a { color: rgba(255,255,255,.7); font-size: .9rem; transition: color .2s var(--ease); }
    .sf-foot-links a:hover { color: #fff; }
    .sf-foot-copy { color: rgba(255,255,255,.5); font-size: .82rem; }
    /* bold: oversized brand wordmark above the grid */
    .sf-foot-bold-name { font-family: var(--font-heading); font-weight: 900; line-height: .9; letter-spacing: -.02em; text-transform: uppercase; color: #fff; font-size: clamp(3rem,13vw,11rem); word-break: break-word; margin-bottom: 2rem; padding-bottom: 1.5rem; border-bottom: 1px solid rgba(255,255,255,.12); }

    /* ============ Layer 3 (F6): section rhythm + dividers (CMS main slot) ============
       Emitted always but inert — Page.cshtml only wraps top-level sections when the theme
       opts in (rhythm=alternating / divider≠none); default renders the plain _Slot, no wrappers. */
    /* rhythm=alternating — every other section a subtle panel, aligned to the content column
       (extends into .sf-main's 1.5rem gutter, content re-padded so edges match plain sections). */
    .sf-sect--alt {
        /* Prefer an explicit theme token; else nudge the canvas toward ink so the band reads in
           any theme (light or dark) without a dedicated token. */
        background: var(--color-surface-alt, color-mix(in oklab, var(--color-canvas) 95%, var(--color-ink)));
        margin-inline: -1.5rem;
        padding: clamp(2rem, 4vw, 3.25rem) 1.5rem;
        border-radius: var(--radius-lg, 8px);
    }
    /* Full-bleed blok (pas s statistiko, pasica, znamke …) v ritmski sekciji: sekcija naj NE kaže
       svojega sivega ozadja/obrobe/navpičnega odmika, sicer nad in pod pasom pokukata siva pasova
       (blok sam prekrije le sredino). Blok si širino in barvo uredi sam. Velja za vse ritme. */
    .sf-sect:has(> .sf-fullbleed),
    .sf-sect:has(> .sf-bw--full > .sf-fullbleed) {
        background: transparent !important;
        padding-top: 0 !important;
        padding-bottom: 0 !important;
        border: 0 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
    }
    /* dividers between sections — colour from --color-line, shape from the SVG (stretched full-width). */
    .sf-sect-div { color: var(--color-line, #e5e0ec); line-height: 0; }
    .sf-sect-div--line { height: 1px; background: currentColor; }
    .sf-sect-div svg { display: block; width: 100%; height: clamp(10px, 2.2vw, 22px); }
    .sf-sect-div svg path { fill: none; stroke: currentColor; stroke-width: 1.5; vector-effect: non-scaling-stroke; }
    .sf-main > .sf-sect-div { margin-top: clamp(1.5rem, 3.5vw, 2.75rem); }
    .sf-main > .sf-sect-div + * { margin-top: clamp(1.5rem, 3.5vw, 2.75rem); }

    /* ============ custom scrollbar ============ */
    ::-webkit-scrollbar { width: 5px; height: 5px; }
    ::-webkit-scrollbar-track { background: transparent; }
    ::-webkit-scrollbar-thumb { background: var(--scrollbar-thumb, var(--color-primary-500, #B882C2)); border-radius: 3px; }
    ::-webkit-scrollbar-thumb:hover { background: var(--scrollbar-thumb-hover, var(--color-primary-600, #9B5CAF)); }

    /* ============ scroll reveal ============ */
    .sf-reveal-ready [data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity var(--dur-slow) var(--ease), transform var(--dur-slow) var(--ease); }
    .sf-reveal-ready [data-reveal].is-in { opacity: 1; transform: none; }
    /* »Pripni ob drsenju« potrebuje position:sticky, transform prednika (vstopni reveal)
       pa sticky ONEMOGOČI. Zato ovoj, ki vsebuje pripeto pasico, nikoli ne dobi vstopnega
       transforma — pasica je takoj vidna in se pravilno pripne. */
    .sf-reveal-ready [data-reveal]:has(.sf-banner--pinned) { opacity: 1 !important; transform: none !important; }
    /* W1 scrollReveal — značaj vstopa (koren dobi .sf-rv--<v> prek W1 skripte; osnovni
       skriti privzetek [data-reveal] iz zgornje vrstice ostane, tu le nadgradnje). */
    .sf-rv [data-reveal] { transition-duration: calc(var(--dur-slow) * var(--motion-scale)); }
    .sf-rv--blur-in [data-reveal] { transition: opacity calc(var(--dur-slow) * var(--motion-scale)) var(--ease), transform calc(var(--dur-slow) * var(--motion-scale)) var(--ease), filter calc(var(--dur-slow) * var(--motion-scale)) var(--ease); }
    .sf-rv--blur-in [data-reveal]:not(.is-in) { filter: blur(12px); transform: translateY(10px); }
    .sf-rv--blur-in [data-reveal].is-in { filter: none; }
    .sf-rv--clip-rise [data-reveal] { transition: opacity calc(var(--dur-slow) * var(--motion-scale)) var(--ease), transform calc(var(--dur-slow) * var(--motion-scale)) var(--ease), clip-path calc(var(--dur-slow) * var(--motion-scale)) var(--ease); }
    .sf-rv--clip-rise [data-reveal]:not(.is-in) { transform: translateY(30px); clip-path: inset(0 0 8% 0); }
    .sf-rv--clip-rise [data-reveal].is-in { clip-path: none; }
    .sf-rv--stagger .sh-pcard[data-reveal] { transition-delay: calc(var(--i, 0) * 55ms * var(--motion-scale)); }
    .sf-hr-ready .sf-hr--word-stagger .sf-hr-w { display: inline-block; opacity: 0; transform: translateY(.55em); transition: opacity calc(var(--dur-slow) * var(--motion-scale)) var(--ease), transform calc(var(--dur-slow) * var(--motion-scale)) var(--ease); transition-delay: calc(var(--i, 0) * 55ms * var(--motion-scale)); }
    .sf-hr-ready .sf-hr--word-stagger.is-hr-in .sf-hr-w { opacity: 1; transform: none; }
    .sf-hr-ready .sf-hr--line-mask .sf-hr-w { display: inline-block; overflow: hidden; vertical-align: top; }
    .sf-hr-ready .sf-hr--line-mask .sf-hr-w > span { display: inline-block; transform: translateY(110%); transition: transform calc(var(--dur-slow) * var(--motion-scale)) var(--ease); transition-delay: calc(var(--i, 0) * 42ms * var(--motion-scale)); }
    .sf-hr-ready .sf-hr--line-mask.is-hr-in .sf-hr-w > span { transform: none; }
    @media (prefers-reduced-motion: reduce) { .sf-hr .sf-hr-w, .sf-hr .sf-hr-w > span { opacity: 1 !important; transform: none !important; } }
    /* W1 cardMotion — vstop kartic v mrežah (skrito LE ko je korenski razred .sf-cm prisoten,
       kar doda skripta → brez JS / reduced-motion / motionLevel=off = kartice vidne).
       Skrivanje je omejeno na mreže, ki jih skripta zares obdela (.sh-grid = shop,
       .pg-grid = CMS blok »Izdelki«) — kartica v drugem kontekstu ostane vidna (fail-safe). */
    .sf-cm :is(.sh-grid, .pg-grid) > .sh-pcard { opacity: 0; }
    .sf-cm :is(.sh-grid, .pg-grid) > .sh-pcard.is-cm-in { opacity: 1; transform: none; }
    .sf-cm--rise-stagger :is(.sh-grid, .pg-grid) > .sh-pcard { transform: translateY(26px); transition: opacity calc(var(--dur-base) * var(--motion-scale)) var(--ease), transform calc(var(--dur-base) * var(--motion-scale)) var(--ease); transition-delay: calc(var(--i, 0) * 55ms * var(--motion-scale)); }
    .sf-cm--scale-in :is(.sh-grid, .pg-grid) > .sh-pcard { transform: scale(.92); transition: opacity calc(var(--dur-base) * var(--motion-scale)) var(--ease), transform calc(var(--dur-base) * var(--motion-scale)) var(--ease); }
    .sf-cm--flip-in :is(.sh-grid, .pg-grid) > .sh-pcard { transform: perspective(900px) rotateX(10deg); transform-origin: center top; transition: opacity calc(var(--dur-base) * var(--motion-scale)) var(--ease), transform calc(var(--dur-base) * var(--motion-scale)) var(--ease); }
    /* W1 pageTransition — View Transitions (progresivno; brez podpore = klasična menjava). */
    @view-transition { navigation: auto; }
    @media (prefers-reduced-motion: reduce) { ::view-transition-old(root), ::view-transition-new(root) { animation: none !important; } }
    @media (prefers-reduced-motion: reduce) {
        *, ::before, ::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
        .sf-reveal-ready [data-reveal] { opacity: 1; transform: none; }
    }

    /* ============ responsive ============ */
    @media (max-width: 980px) {
        .sf-hero .sf-container { grid-template-columns: 1fr; }
        .sf-hero-visual { display: none; }
        .sf-foot-grid { grid-template-columns: 1fr 1fr; gap: 1.75rem; }
        .sf-foot-grid--4col { grid-template-columns: 1fr 1fr; }
    }
    @media (max-width: 760px) {
        .sf-search, .sf-nav { display: none; }
        .sf-foot-grid, .sf-foot-grid--4col { grid-template-columns: 1fr; }
    }

    /* on-page edit mode (unchanged behaviour) */
    .sf-slot-edit { min-height: 1.5rem; }
    .sf-eb { position: relative; outline: 1px dashed transparent; border-radius: .25rem; }
    .sf-eb:hover { outline-color: var(--color-primary-500); cursor: pointer; }
    .sf-eb-bar { position: absolute; top: -0.1rem; right: 0; z-index: 60; display: none; gap: 2px;
        background: var(--color-brand-900); border-radius: .25rem; padding: 2px 4px; align-items: center; }
    .sf-eb:hover > .sf-eb-bar { display: inline-flex; }
    .sf-eb-bar .sf-eb-type { color: #fff; font-size: .65rem; margin-right: .25rem; opacity: .8; }
    .sf-eb-bar button { background: transparent; border: 0; color: #fff; cursor: pointer; font-size: .8rem; padding: 2px 4px; }
    .sf-eb-bar button:hover { background: var(--color-brand-700); border-radius: .2rem; }
    .sf-addzone { display: block; width: 100%; margin: .25rem 0; padding: .3rem; font-size: .75rem;
        color: var(--color-primary-600); background: var(--color-primary-50); border: 1px dashed var(--color-primary-500);
        border-radius: .25rem; cursor: pointer; opacity: .45; }
    .sf-addzone:hover { opacity: 1; }

    /* columns layout block */
    .sf-columns { display: grid; gap: 1.5rem; align-items: stretch; }
    .sf-columns--a-center { align-items: center; }
    .sf-columns--a-bottom { align-items: end; }
    .sf-columns--a-fill > .sf-column { display: flex; flex-direction: column; justify-content: center; }
    .sf-columns--a-fill > .sf-column > .sf-okvir:only-child { height: 100%; }
    .sf-column--a-top    { align-self: start; }
    .sf-column--a-center { align-self: center; }
    .sf-column--a-bottom { align-self: end; }
    .sf-column--a-fill   { align-self: stretch; display: flex; flex-direction: column; justify-content: center; }
    .sf-column--a-fill > .sf-okvir:only-child { height: 100%; }
    .sf-columns-2 { grid-template-columns: repeat(2, 1fr); }
    .sf-columns-3 { grid-template-columns: repeat(3, 1fr); }
    .sf-columns-4 { grid-template-columns: repeat(4, 1fr); }
    @media (max-width: 760px) { .sf-columns { grid-template-columns: 1fr !important; } }
    /* Glava: stolpci kroma (logo | navigacija/hamburger | ikone) morajo na mobilnem OSTATI v eni
       vrstici — sicer se zložijo navpično in je glava previsoka (~200px). Otroci stolpcev napolnijo
       svoj trak (nimajo lastne širine), zato `auto` sesede stolpec na 0 → uporabimo eksplicitne
       širine za logo/hamburger in preostanek (1fr) namenimo ikonam, da se vse ikone (vklj. košarico)
       vidijo brez rezanja. Velja LE znotraj glave; ne vpliva na stolpce v vsebini. */
    @media (max-width: 760px) {
        .sf-header .sf-columns { align-items: center; gap: .4rem !important; }
        /* minmax(0,…) namesto golega 1fr: `1fr` = minmax(AUTO,1fr), zato je trak zrasel na
           min-content vsebine (npr. ikone + preklopnik jezika) in glava je stran razširila
           čez zaslon — na mobilnem se je pojavil vodoravni drsnik (npr. v košarici). */
        .sf-header .sf-columns-2 { grid-template-columns: minmax(0, 1fr) auto !important; }
        .sf-header .sf-columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
        /* Vsebina traku se raje prelomi kot razširi glavo. !important, ker ima trak inline
           slog iz gradnika (display:flex …) in ker mora to vzdržati tudi, če blok doda svoje
           pravilo — sicer glava (fiksna, shrink-to-fit) zraste na min-content vseh ikon in
           potegne s sabo celo stran (vodoravni drsnik v košarici). */
        .sf-header .sf-header-actions,
        .sf-header .sf-langswitch { flex-wrap: wrap !important; justify-content: flex-end; }
        /* Varovalo: fiksna glava nikoli širša od zaslona, tudi če vsebina zahteva več. */
        .sf-header { max-width: 100vw; }
        .sf-header .sf-columns { max-width: 100vw; }
        /* ── Logotip na telefonu: čim večji, a glava ostane ENA vrstica ──
           Gradnik logotipa nosi vodoravni odmik iz urejevalnika (npr. padX=large → `0 24px`).
           V ozkem stolpcu glave je ta odmik pojedel skoraj polovico prostora, slika pa se je
           zaradi `object-fit:contain` v ožjem okvirju izrisala precej manjša od nastavljene
           (izmerjeno na temp89: okvir 56×38 → logotip dejansko ~56×18 px). Zato na telefonu
           odmik odpade, okvir dobi cel stolpec in višino 2.75rem. Vizualna velikost je
           min(2.75rem, širina stolpca / razmerje logotipa): kvadraten logotip se ne napihne,
           širok pa izkoristi ves stolpec. */
        .sf-header .sf-logo { padding-left: .5rem !important; padding-right: .75rem !important; }
        .sf-header .sf-logo-img { height: 2.75rem !important; width: auto !important; max-width: 100%; }
        /* Stolpca logotipa in ikon sta odslej gibljiva (`clamp`), ker je bila vrstica na ožjih
           telefonih PREDOLGA in so se ikone prelomile v drugo vrstico (glava 112 px namesto 76):
           6 ikon × 2.4rem + odmiki niso šli v preostanek poleg logotipa. Zdaj se logotip in
           ikone krčijo skupaj z zaslonom — preverjeno v eni vrstici pri 320 / 360 / 375 / 430 /
           758 px. Srednji stolpec je `auto`, da se oklene hamburgerja, ko se ta skrči. */
        .sf-header .sf-columns-3 { grid-template-columns: clamp(6.5rem, 32vw, 8rem) auto minmax(0, 1fr) !important; }
        .sf-header .sf-header-actions { gap: 2px !important; padding-left: 0 !important; padding-right: 2px !important; }
        /* Hamburger je v isti meri kot ostale ikone (slog je dobil že prej) — sicer bi po
           skrčitvi vrste ostal edini pri 2.4rem in bi spet štrlel iz nje. */
        .sf-header .sf-header-actions .sf-iconbtn,
        .sf-header .sf-header-actions .sf-lang-icon,
        .sf-header .sf-hb-toggle {
            width: clamp(1.6rem, 7.4vw, 1.875rem) !important;
            height: clamp(1.6rem, 7.4vw, 1.875rem) !important;
            min-width: 0 !important;
        }
    }
    .sf-column { display: flex; flex-direction: column; min-width: 0; container-type: inline-size; gap: .75rem; }
    .sf-columns--g-sm > .sf-column { gap: .35rem; }
    .sf-columns--g-lg > .sf-column { gap: 1.25rem; }
    /* Razmik med gradniki v stolpcu prek flex `gap` (ne `* + * { margin-top }`): tako
       NE-izrisani otroci (privzeto display:none <script>/<style> in skriti auto-hamburger)
       ne ustvarijo praznega razmika — sicer je npr. sredinska navigacija dobila odvečen
       margin-top in se ni poravnala z logotipom/ikonami. */
    /* V glavi stolpce navpično centriramo, da se logotip, navigacija in ikone poravnajo
       tudi ob različnih višinah vsebine (v telesu strani stolpci ostanejo od zgoraj). */
    .sf-header .sf-column { justify-content: center; }
    /* Stolpec glave, ki poleg navigacije vsebuje še kak gradnik (npr. spustni »Kategorije«),
       naj gradnike postavi V VRSTO (drug ob drugem), navpično centrirano — sicer se v
       navpičnem stolpcu naložijo eden pod drugega. Enostolpčni stolpci (logo, ikone) ostanejo
       nedotaknjeni. Na telefonu (predal) glava tako ali tako uporablja drugačno postavitev. */
    .sf-header .sf-column:has(> .sf-nav-ovf) {
        flex-direction: row;
        align-items: center;
        flex-wrap: nowrap;
        gap: 1rem;
    }
    /* Navigacija se sme skrčiti (njen »več« meni pobere presežek), sosednji gradnik (npr.
       spustni »Kategorije«) ohrani svojo velikost — tako gresta v eno vrsto brez preliva. */
    .sf-header .sf-column:has(> .sf-nav-ovf) > .sf-nav-ovf { flex: 1 1 auto; min-width: 0; }
    .sf-header .sf-column:has(> .sf-nav-ovf) > :not(.sf-nav-ovf) { flex: 0 0 auto; }
    /* Gradnik v stolpcu NE sme pobegniti na širino okna — 100vw trik se izniči,
       gradnik zavzame širino stolpca (velja tudi za pasico/banner, ki ima
       sf-fullbleed vgrajen v koren). */
    .sf-column .sf-fullbleed { width: 100%; max-width: 100%; margin-left: 0; margin-right: 0; }
    /* Hero/pasica v stolpcu: viewport višine (svh) ne veljajo; gradnik se
       razteza čez preostalo višino stolpca, zato so stolpci v isti vrsti
       enako visoki — najvišja vsebina (npr. izdelek + odštevalnik) določi
       višino vrste, hero pa se ji prilagodi. */
    .sf-column > :is(.sf-hero-rot, .sf-hx, .sf-pasica, .sf-banner, .sf-hero-sport),
    .sf-column > .sf-bw:has(> :is(.sf-hero-rot, .sf-hx, .sf-pasica, .sf-banner, .sf-hero-sport)) { flex: 1 1 auto; min-height: 0; }
    .sf-column .sf-bw > :is(.sf-hero-rot, .sf-hx, .sf-pasica, .sf-banner, .sf-hero-sport) { height: 100%; }
    .sf-column .sf-hero-rot > .sf-hero-rot-item > .sf-hx { height: 100%; }
    .sf-column .sf-hx { min-height: 15rem; }
    /* .sf-hero-sport (celozaslonski hero) ima PRAVI height:100svh + min-height:560/max-height:920 —
       drugače od .sf-hx (le min-height). V stolpcu jih nevtraliziramo, da se hero prilagodi
       višini vrste (ki jo določi vsebina sosedov, npr. slika + seznam), ne da vsili 100svh. */
    .sf-column .sf-hero-sport { height: auto; min-height: 15rem; max-height: none; }
    /* Zaokroženi robovi za VSE hero/banner/pasica gradnike v stolpcu (celozaslonski so ostri od
       roba do roba, a v vrsti so kartice ob sosedih). Radij prevzame iz TEME (--radius-lg → --radius-card),
       zato sledi nastavitvi zaobljenosti teme. overflow:hidden imajo te variante že v bazi. */
    .sf-column > :is(.sf-hero-rot, .sf-hx, .sf-pasica, .sf-banner, .sf-hero-sport),
    .sf-column .sf-bw > :is(.sf-hero-rot, .sf-hx, .sf-pasica, .sf-banner, .sf-hero-sport),
    .sf-column .sf-eb > :is(.sf-hero-rot, .sf-hx, .sf-pasica, .sf-banner, .sf-hero-sport) { border-radius: var(--radius-lg, 12px); overflow: hidden; }
    /* Tipografija .sf-hero-sport v stolpcu: naslov, vodilo in odmiki vezani na širino STOLPCA
       (cqw — .sf-column ima container-type:inline-size), ne okna (vw); sicer je naslov ogromen
       in vodoravno odrezan. Velja LE v stolpcu — celozaslonski hero ostane nedotaknjen. */
    .sf-column .sf-hero-sport-inner { padding-left: 1.25rem; padding-right: 1.25rem; }
    .sf-column .sf-hero-sport-title { font-size: clamp(24px, 11cqw, 64px); margin-bottom: clamp(10px, 2.5cqw, 24px); }
    .sf-column .sf-hero-sport-lead { font-size: clamp(13px, 3.4cqw, 17px); margin-bottom: clamp(14px, 3.5cqw, 36px); }
    .sf-column .sf-hero-sport-eyebrow { margin-bottom: 10px; }
    .sf-column .sf-hero-sport-btn { padding: 11px 20px; }
    .sf-column :is(.sf-hx--h-medium, .sf-hx--h-tall, .sf-hx--h-full,
                   .sf-hx--fullbleed, .sf-hx--centered, .sf-hx--gradient, .sf-hx--slideshow) { min-height: 15rem; }
    .sf-column .sf-hx--fullbleed .sf-hx-inner { padding-top: clamp(2rem, 4vw, 3.5rem); }
    .sf-column .sf-hx-inner { padding-left: 1.25rem; padding-right: 1.25rem; }
    /* Gradnik »Slika« v stolpcu je GONILO višine: širina = širina stolpca, višina =
       naravno razmerje (slika ostane cela, brez obreza). picture/img ostane naravna
       (flex-basis:auto, brez flex:1), sosednji banner/hero pa se prilagodijo TEJ višini
       (imajo flex:1 + height:100% → napolnijo vrsto). Slika NE sme dobiti object-fit:cover
       ali flex:1, sicer bi se raztegnila/obrezala do (visokih) sosedov. */
    .sf-column picture { display: block; width: 100%; }
    .sf-column img.sf-image { display: block; width: 100%; height: auto; }
    /* Urejevalnik: ista logika skozi edit ovoje (.sf-slot-edit/.sf-eb). */
    .sf-column > .sf-slot-edit { display: flex; flex-direction: column; flex: 1 1 auto; }
    .sf-column .sf-slot-edit > .sf-eb:has(:is(.sf-hero-rot, .sf-hx, .sf-pasica, .sf-banner, .sf-hero-sport)) { flex: 1 1 auto; display: flex; flex-direction: column; }
    .sf-column .sf-eb > :is(.sf-hero-rot, .sf-hx, .sf-pasica, .sf-banner, .sf-hero-sport, .sf-bw) { flex: 1 1 auto; min-height: 0; }

    /* ============ zavihki (tabs layout block) ============ */
    /* overflow-y hidden: gumbi z negativnim spodnjim robom (underline/boxed) so sprožili
       navpični mini-drsnik ob desnem robu vrstice. */
    .sf-tabs-nav { display: flex; align-items: flex-end; gap: .25rem; margin-bottom: 1.25rem;
        overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
    .sf-tabs--font-heading .sf-tabs-btn { font-family: var(--font-heading); }
    .sf-tabs-btn { font-family: var(--font-sans); font-size: .95rem; font-weight: 600; line-height: 1.2;
        color: var(--color-muted); background: none; border: none; cursor: pointer;
        padding: .6rem .9rem; white-space: nowrap; transition: color .15s, background .15s, border-color .15s; }
    .sf-tabs-btn:hover { color: var(--color-ink); }
    .sf-tabs--size-sm .sf-tabs-btn { font-size: .82rem; padding: .5rem .7rem; }
    .sf-tabs--size-lg .sf-tabs-btn { font-size: 1.15rem; padding: .7rem 1.1rem; }
    /* podčrtani (privzeto) */
    .sf-tabs--underline .sf-tabs-nav { border-bottom: 2px solid var(--color-line); }
    .sf-tabs--underline .sf-tabs-btn { border-bottom: 2px solid transparent; margin-bottom: -2px; }
    .sf-tabs--underline .sf-tabs-btn.is-active { color: var(--color-ink); border-bottom-color: var(--color-primary-600); }
    /* tabletke */
    .sf-tabs--pills .sf-tabs-nav { gap: .5rem; }
    .sf-tabs--pills .sf-tabs-btn { border: 1px solid var(--color-line); border-radius: 999px; }
    .sf-tabs--pills .sf-tabs-btn.is-active { background: var(--color-primary-600); border-color: var(--color-primary-600); color: #fff; }
    /* škatlasti */
    .sf-tabs--boxed .sf-tabs-nav { border-bottom: 1px solid var(--color-line); }
    .sf-tabs--boxed .sf-tabs-btn { border: 1px solid transparent; border-radius: var(--radius-md, 8px) var(--radius-md, 8px) 0 0; margin-bottom: -1px; }
    .sf-tabs--boxed .sf-tabs-btn.is-active { color: var(--color-ink); background: var(--color-canvas);
        border-color: var(--color-line); border-bottom-color: var(--color-canvas); }
    /* Škatlasti zavihki = metafora mape: aktivni zavihek "odpre" uokvirjen list pod seboj. Nav-vrstica
       se zlije z listom (brez odmika, obroba nadaljuje v panel), panel dobi obrobo/ozadje/notranji rob. */
    .sf-tabs--boxed .sf-tabs-nav { margin-bottom: 0; }
    .sf-tabs--boxed .sf-tabs-panel {
        border: 1px solid var(--color-line);
        border-top: none;
        border-radius: 0 0 var(--radius-lg, 12px) var(--radius-lg, 12px);
        background: var(--color-canvas);
        padding: clamp(1.25rem, 2.5vw, 2rem);
    }
    /* poravnava */
    .sf-tabs--center .sf-tabs-nav { justify-content: center; }
    .sf-tabs--stretch .sf-tabs-btn { flex: 1 1 0; text-align: center; }
    .sf-tabs-panel > * + * { margin-top: .75rem; }
    /* Telefon: namesto vodoravnega drsnika puščici. Zavihkov je bilo za dve vrstici, drsnik pa
       je skrival, koliko jih sploh je — vidna je zdaj samo naslovnica aktivnega, puščici pa
       preklapljata v krogu. Ovoj je na namizju `display:contents`, torej v postavitvi ni in
       vrstica ostane natanko takšna kot prej. */
    .sf-tabs-navwrap { display: contents; }
    .sf-tabs-arrow { display: none; }
    @media (max-width: 760px) {
        .sf-tabs-navwrap { display: flex; align-items: center; gap: .4rem; margin-bottom: 1.25rem; }
        .sf-tabs--boxed .sf-tabs-navwrap { margin-bottom: 0; align-items: flex-end; }
        .sf-tabs-navwrap > .sf-tabs-nav { flex: 1 1 auto; min-width: 0; overflow: hidden; margin-bottom: 0; }
        .sf-tabs-nav > .sf-tabs-btn:not(.is-active) { display: none; }
        .sf-tabs-nav > .sf-tabs-btn.is-active { flex: 1 1 auto; text-align: center; white-space: normal; }
        .sf-tabs-arrow { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto;
            width: 2.25rem; height: 2.25rem; padding: 0; border: 1px solid var(--color-line, #e5e0ec);
            border-radius: 999px; background: var(--color-surface, #fff); color: var(--color-ink, #1c0423);
            cursor: pointer; transition: background .15s var(--ease, ease), color .15s var(--ease, ease); }
        .sf-tabs--boxed .sf-tabs-arrow { margin-bottom: .35rem; }
        .sf-tabs-arrow:hover { background: var(--color-primary-600); border-color: var(--color-primary-600); color: #fff; }
        .sf-tabs-arrow:focus-visible { outline: 2px solid var(--color-primary-600); outline-offset: 2px; }
    }
    /* on-page edit način: vsi paneli naloženi, vsak s svojo oznako */
    .sf-tabs--edit .sf-tabs-edit-panel { border: 1.5px dashed var(--color-primary-500); border-radius: .6rem;
        padding: .75rem; margin: .5rem 0; }
    .sf-tabs--edit .sf-tabs-edit-label { display: inline-block; font-family: var(--font-sans); font-size: .68rem;
        font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--color-primary-600);
        background: var(--color-primary-50, rgba(0,0,0,.04)); padding: .25rem .5rem; border-radius: .35rem; margin-bottom: .5rem; }

    /* ============ vsebinski diapozitivi (slides layout block) ============ */
    .sf-slides { position: relative; }
    .sf-slides-vp { overflow: hidden; }
    /* slide: drsni trak; fade: diapozitivi naloženi eden čez drugega (grid stack) */
    .sf-slides--slide .sf-slides-track { display: flex; transition: transform .45s var(--ease, ease); }
    .sf-slides--slide .sf-slides-slide { flex: 0 0 100%; min-width: 0; box-sizing: border-box; }
    .sf-slides--fade .sf-slides-track { display: grid; }
    .sf-slides--fade .sf-slides-slide { grid-area: 1 / 1; opacity: 0; transition: opacity .45s var(--ease, ease); pointer-events: none; }
    .sf-slides--fade .sf-slides-slide.is-active { opacity: 1; pointer-events: auto; }
    .sf-slides-slide > * + * { margin-top: .75rem; }
    /* puščici — ob straneh, navpično na sredini vsebine */
    .sf-slides-arr { position: absolute; top: 50%; transform: translateY(-50%); z-index: 5;
        width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--color-line);
        background: var(--color-surface, #fff); color: var(--color-ink); cursor: pointer;
        display: grid; place-items: center; box-shadow: 0 6px 18px rgba(20,10,40,.12);
        transition: background .15s, color .15s, border-color .15s; }
    .sf-slides-arr svg { width: 20px; height: 20px; }
    .sf-slides-arr:hover { background: var(--color-primary-600); border-color: var(--color-primary-600); color: #fff; }
    .sf-slides-arr--prev { left: .4rem; }
    .sf-slides-arr--next { right: .4rem; }
    /* pike */
    .sf-slides-dots { display: flex; justify-content: center; gap: .45rem; margin-top: 1rem; }
    .sf-slides-dot { width: 9px; height: 9px; border-radius: 50%; border: none; cursor: pointer;
        background: var(--color-line); padding: 0; transition: background .15s, transform .15s; }
    .sf-slides-dot.is-active { background: var(--color-primary-600); transform: scale(1.25); }
    /* on-page edit način: vsi diapozitivi naloženi, vsak s svojo oznako (vzorec zavihkov) */
    .sf-slides--edit .sf-slides-edit-panel { border: 1.5px dashed var(--color-primary-500); border-radius: .6rem;
        padding: .75rem; margin: .5rem 0; }
    .sf-slides--edit .sf-slides-edit-label { display: inline-block; font-family: var(--font-sans); font-size: .68rem;
        font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--color-primary-600);
        background: var(--color-primary-50, rgba(0,0,0,.04)); padding: .25rem .5rem; border-radius: .35rem; margin-bottom: .5rem; }

    /* ============ pasica (full-width section band) ============ */
    .sf-pasica { position: relative; box-sizing: border-box; }
    .sf-pasica--pad-none    { padding-top: 0; padding-bottom: 0; }
    .sf-pasica--pad-compact { padding-top: clamp(1.5rem,3vw,2.5rem); padding-bottom: clamp(1.5rem,3vw,2.5rem); }
    .sf-pasica--pad-normal  { padding-top: clamp(3rem,6vw,5rem); padding-bottom: clamp(3rem,6vw,5rem); }
    .sf-pasica--pad-large   { padding-top: clamp(5rem,10vw,8rem); padding-bottom: clamp(5rem,10vw,8rem); }
    .sf-pasica--brand   { background: var(--grad-brand); color: #fff; }
    .sf-pasica--accent  { background: var(--grad-accent); color: #fff; }
    .sf-pasica--dark    { background: var(--color-panel-dark); color: #fff; }
    .sf-pasica--surface { background: var(--color-surface); }
    /* Odsek + okvir: iste predloge ozadja kot pasica (bgType) — barve iz teme. */
    .sf-section--brand  { background: var(--grad-brand); color: #fff; }
    .sf-section--accent { background: var(--grad-accent); color: #fff; }
    .sf-section--dark   { background: var(--color-panel-dark); color: #fff; }
    .sf-okvir--brand    { background: var(--grad-brand); color: #fff; }
    .sf-okvir--accent   { background: var(--grad-accent); color: #fff; }
    .sf-okvir--dark     { background: var(--color-panel-dark); color: #fff; }
    .sf-okvir--surface  { background: var(--color-surface); }
    .sf-pasica--image   { background-size: cover; background-position: center; background-repeat: no-repeat; }
    .sf-pasica--text-light { color: #fff; }
    .sf-pasica--text-dark  { color: var(--color-ink); }
    .sf-pasica__overlay { position: absolute; inset: 0; pointer-events: none; }
    .sf-pasica__inner {
        position: relative; z-index: 1;
        max-width: var(--content-width);
        margin-left: auto; margin-right: auto;
        padding-left: 1.5rem; padding-right: 1.5rem;
        box-sizing: border-box;
    }
    .sf-pasica__inner--narrow { max-width: var(--content-width-narrow); }
    .sf-pasica__inner--full   { max-width: none; }
    /* In sidebar layouts, pasica can't break out of its column */
    .sf-layout-sidebar .sf-pasica.sf-fullbleed {
        width: 100%; max-width: 100%; margin-left: 0; margin-right: 0;
    }
    .sf-layout-sidebar .sf-pasica .sf-pasica__inner { max-width: none; padding: 0; }

    /* ============ okvir (styled inner container) ============ */
    .sf-okvir { border-radius: var(--radius); overflow: hidden; }
    .sf-okvir--pad-xs { padding: .2rem .55rem; }
    .sf-okvir--round-pill { border-radius: 999px; }
    .sf-okvir--pad-sm { padding: .75rem 1rem; }
    .sf-okvir--pad-md { padding: 1.5rem; }
    .sf-okvir--pad-lg { padding: 2.5rem; }
    .sf-okvir--no-round  { border-radius: 0; }
    .sf-okvir--round-xl  { border-radius: var(--radius-xl); }
    .sf-okvir--border-light  { border: 1px solid var(--color-line); }
    .sf-okvir--border-accent { border: 1px solid color-mix(in srgb, var(--color-primary) 45%, transparent); }
    .sf-okvir--border-medium { border: 2px solid var(--color-line); }
    /* okvir z obračanjem (flip=on): klik obrne kartico kot igralno karto.
       Ploskvi sta v grid skladu (višina = višja od obeh), hrbtna je obrnjena za 180°;
       preklop vrti notranji ovoj, backface-visibility skrije zadnjo ploskev. */
    .sf-okvir-flip { perspective: 1200px; cursor: pointer; -webkit-tap-highlight-color: transparent; }
    .sf-okvir-flip-inner { display: grid; transform-style: preserve-3d; transition: transform .6s var(--ease, ease); }
    .sf-okvir-flip-face { grid-area: 1 / 1; min-width: 0; position: relative; backface-visibility: hidden; -webkit-backface-visibility: hidden; }
    /* namig »obrni me«: krozna puscica zgoraj desno, ob hoverju kartice se poudari in zavrti.
       Barva NE sme dedovati iz starsa (temna pasica → bel span na beli kartici): privzeto
       barva besedila teme, na ploskvah z lastnim tonom pa ton ploskve. */
    .sf-okvir-flip-hint { position: absolute; top: .6rem; right: .6rem; width: 26px; height: 26px;
        display: grid; place-items: center; opacity: .5; pointer-events: none;
        color: var(--color-ink, #2a2730);
        transition: opacity .2s, transform .35s var(--ease, ease); }
    .sf-okvir--tone-light > .sf-okvir-flip-hint { color: #fff; }
    .sf-okvir--tone-dark  > .sf-okvir-flip-hint { color: var(--color-brand-900, #14121A); }
    .sf-okvir-flip-hint svg { width: 15px; height: 15px; }
    .sf-okvir-flip:hover .sf-okvir-flip-hint,
    .sf-okvir-flip:focus-visible .sf-okvir-flip-hint { opacity: 1; transform: rotate(180deg); }
    .sf-okvir-flip--h .sf-okvir-flip-back { transform: rotateY(180deg); }
    .sf-okvir-flip--h.is-flipped .sf-okvir-flip-inner { transform: rotateY(180deg); }
    .sf-okvir-flip--v .sf-okvir-flip-back { transform: rotateX(180deg); }
    .sf-okvir-flip--v.is-flipped .sf-okvir-flip-inner { transform: rotateX(180deg); }
    /* Skrita ploskev ne prestreza klikov (klik pade na koren, ki obrača). */
    .sf-okvir-flip:not(.is-flipped) .sf-okvir-flip-back { pointer-events: none; }
    .sf-okvir-flip.is-flipped .sf-okvir-flip-front { pointer-events: none; }
    /* Telefon: okvir se prilagodi VIDNI ploskvi (razred doda JS gradnika, ki tudi meri višino).
       Prej je kratka sprednja stran podedovala višino dolge hrbtne — obe ploskvi sta v isti
       celici mreže — in je bila videti prazna. Prehod višine teče vzporedno z obratom.
       `overflow` je na PLOSKVI, ne na .sf-okvir-flip-inner: ta nosi `transform-style: preserve-3d`,
       ki ga karkoli razen `overflow: visible` sploščí in obrat ne bi bil več prostorski. */
    @media (max-width: 760px) {
        .sf-okvir-flip--fit .sf-okvir-flip-inner { transition: transform .6s var(--ease, ease), height .45s var(--ease, ease); }
        .sf-okvir-flip--fit .sf-okvir-flip-face { height: 100%; overflow: hidden; }
    }
    /* Zmanjsana animacija: tudi prilagojena visina (--fit) mora biti brez prehoda — sicer bi
       jo prevzelo bolj specificno pravilo zgoraj. */
    @media (prefers-reduced-motion: reduce) { .sf-okvir-flip-inner, .sf-okvir-flip--fit .sf-okvir-flip-inner { transition: none; } }
    /* on-page edit način: obe strani naloženi, vsaka s svojo oznako (vzorec zavihkov) */
    .sf-okvir-edit-panel { border: 1.5px dashed var(--color-primary-500); border-radius: .6rem;
        padding: .75rem; margin: .5rem 0; }
    .sf-okvir-edit-label { display: inline-block; font-family: var(--font-sans); font-size: .68rem;
        font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--color-primary-600);
        background: var(--color-primary-50, rgba(0,0,0,.04)); padding: .25rem .5rem; border-radius: .35rem; margin-bottom: .5rem; }

    /* ====================================================================
       HERO v2 — rich variant system (ported from cms-za-web).
       Layout classes (sf-hx-*) + neutral motion/decoration layer (t-*).
       The t-* classes read brand colours from the theme tokens, so they
       restyle with the site. Used only inside the hero block.
       ==================================================================== */
    .sf-hx { position: relative; isolation: isolate; overflow: hidden; color: var(--color-ink); }
    .sf-hx-inner { position: relative; z-index: 10; margin: 0 auto; width: 100%; max-width: var(--content-width); padding-left: 1.5rem; padding-right: 1.5rem; box-sizing: border-box; }
    .sf-hx-bg { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
    .sf-hx-bg img, .sf-hx-bg video { width: 100%; height: 100%; object-fit: cover; }
    .sf-hx-ovl { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
    .sf-hx-deco { position: absolute; inset: 0; z-index: 2; pointer-events: none; overflow: hidden; }
    .sf-hx-aurora { position: absolute; inset: 0; z-index: 0; }

    /* heights */
    .sf-hx--h-medium { min-height: 60svh; }
    .sf-hx--h-tall   { min-height: 82svh; }
    .sf-hx--h-full   { min-height: 100svh; }

    /* split rendering (change-mode): content-only layer is transparent so the static bg shows through */
    .sf-hx--transparent { background: transparent !important; }
    /* tone backgrounds */
    .sf-hx--tone-brand   { background: var(--grad-brand); color: #fff; }
    .sf-hx--tone-neutral { background: var(--color-canvas); color: var(--color-ink); }
    .sf-hx--tone-inverse { background: var(--color-panel-dark); color: #fff; }

    /* content stack + alignment */
    .sf-hx-content { display: flex; flex-direction: column; }
    .sf-hx-content--center { align-items: center; text-align: center; }
    .sf-hx-content--right  { align-items: flex-end; text-align: right; }
    .sf-hx-content--left   { align-items: flex-start; text-align: left; }
    .sf-hx h1 { color: inherit; margin: 0; letter-spacing: -.02em; line-height: 1.05; }
    /* accent-coloured words in the heading (per-slide "obarvane besede") */
    .sf-hl { color: var(--color-accent-500, var(--color-accent, #c8176a)); }
    .sf-hx-content h1 { max-width: 20ch; }
    .sf-hx-sub { margin: 1.25rem 0 0; max-width: 38rem; font-size: 1.125rem; line-height: 1.6; color: var(--color-muted); }
    .sf-hero-body { margin: 1rem 0 0; max-width: 42rem; font-size: 1rem; line-height: 1.65; }
    .sf-hx-body { color: var(--color-muted); }
    .sf-hx--light-text .sf-hx-body { color: rgba(255,255,255,.8); }
    .sf-hx-eyebrow { display: inline-flex; align-items: center; gap: .65rem; margin-bottom: 1rem; font-size: .78rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--color-primary-600); }
    .sf-hx-eyebrow::before { content: ""; width: 2rem; height: 1px; background: currentColor; opacity: .6; }
    .sf-hx-cta { display: flex; flex-wrap: wrap; gap: .85rem; margin-top: 2.25rem; }
    .sf-hx-cta--center { justify-content: center; }
    .sf-hx-cta--right  { justify-content: flex-end; }
    /* light text (content over a dark surface / image) */
    .sf-hx--light-text, .sf-hx--light-text h1 { color: #fff; }
    .sf-hx--light-text .sf-hx-sub { color: rgba(255,255,255,.85); }
    .sf-hx--light-text .sf-hx-eyebrow { color: rgba(255,255,255,.85); }
    .sf-hx-grayscale { filter: grayscale(1); transition: filter .7s var(--ease); }
    .sf-hx-grayscale:hover { filter: grayscale(0); }

    /* per-variant heading scale */
    .sf-hx--fullbleed h1 { font-size: clamp(2.5rem, 6vw, 4.5rem); max-width: 18ch; }
    .sf-hx--centered h1, .sf-hx--gradient h1, .sf-hx--slideshow h1 { font-size: clamp(2.25rem, 5.5vw, 4rem); }
    .sf-hx--split h1, .sf-hx--collage h1, .sf-hx--minimal h1 { font-size: clamp(2rem, 4vw, 3.25rem); }

    /* variant: fullBleed — image fills, content bottom */
    .sf-hx--fullbleed { display: flex; align-items: flex-end; min-height: 80svh; }
    .sf-hx--fullbleed .sf-hx-inner { padding-top: 10rem; padding-bottom: clamp(3rem,6vw,6rem); }
    /* variant: centered */
    .sf-hx--centered { display: flex; align-items: center; justify-content: center; min-height: 88svh; }
    .sf-hx--centered .sf-hx-inner { max-width: var(--content-width-narrow); padding-top: 7rem; padding-bottom: 7rem; }
    /* variant: minimal */
    .sf-hx--minimal { padding: clamp(3.5rem,8vw,6.5rem) 0; }
    .sf-hx--minimal .sf-hx-inner { max-width: var(--content-width-narrow); }
    /* variant: gradient */
    .sf-hx--gradient { display: flex; align-items: center; justify-content: center; min-height: 80svh; background: var(--color-canvas); }
    .sf-hx--gradient .sf-hx-inner { max-width: var(--content-width-narrow); padding-top: 7rem; padding-bottom: 7rem; text-align: center; }
    /* variant: split */
    .sf-hx--split { padding: clamp(3.5rem,8vw,6.5rem) 0; }
    .sf-hx-splitgrid { display: grid; gap: 3rem; align-items: center; }
    .sf-hx-splitimg { position: relative; aspect-ratio: 4/3; overflow: hidden; border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); }
    .sf-hx-splitimg img, .sf-hx-splitimg video { width: 100%; height: 100%; object-fit: cover; }
    /* Gradnik v OZKEM stolpcu ne sme nositi naslova, pisanega za polno širino. »Sorodno« ima
       naslov clamp(24–36px) v verzalkah — pravilen pod celo stranjo, v stranskem stolpcu pa
       glasnejši od vsebine, ki jo spremlja. Tu ga postavimo na velikost stranskega naslova. */
    .sf-columns .sh-related h2 { font-size: 1.05rem; text-transform: none; letter-spacing: 0; line-height: 1.3; }
    .sf-columns .sh-related { margin-top: 0; }

    /* Opis vnosa (gradnik »Izdelek — opis«): DOKUMENT, ne oglasna stran. Naslovi v temi so
       plakatni (h2 do 2.75rem), kar je pri navodilih s petimi razdelki preglasno — razdelek
       kriči glasneje od besedila, ki ga uvaja. Tu jih zato zmanjšamo na bralno lestvico in
       jim damo zrak nad seboj. Berljiva dolžina vrstice ostane naloga postavitve. */
    .sh-proddesc { font-size: .96rem; line-height: 1.7; }
    .sh-proddesc :is(h2, h3, h4) { font-family: var(--font-heading); letter-spacing: -.01em; line-height: 1.25; }
    .sh-proddesc h2 { font-size: 1.35rem; margin: 2.2rem 0 .6rem; }
    .sh-proddesc h3 { font-size: 1.1rem;  margin: 1.7rem 0 .5rem; }
    .sh-proddesc h4 { font-size: 1rem;    margin: 1.4rem 0 .4rem; }
    .sh-proddesc > :first-child { margin-top: 0; }
    .sh-proddesc p, .sh-proddesc ul, .sh-proddesc ol { margin: 0 0 .9rem; }
    .sh-proddesc :is(ul, ol) { padding-left: 1.25rem; }
    .sh-proddesc li { margin-bottom: .35rem; }
    .sh-proddesc img { border: 1px solid var(--color-line); border-radius: var(--radius-lg); margin: .4rem 0 1.2rem; }
    .sh-proddesc table { width: 100%; border-collapse: collapse; font-size: .9rem; margin: 0 0 1.2rem; }
    .sh-proddesc :is(th, td) { text-align: left; padding: .5rem .7rem; border-bottom: 1px solid var(--color-line); vertical-align: top; }
    .sh-proddesc th { font-weight: 700; color: var(--color-ink); }

    /* variant: uiSlate — »Okno vmesnika«. Besedilo levo, okno programa desno. Ko slike ni,
       okno pokaze abstraktno maketo urejevalnika iz samega CSS-a: brez besedila (ni je treba
       prevajati) in brez slik (nic dodatnih zahtevkov). Vstop je zamaknjen prek --d. */
    .sf-hx--uislate { padding: clamp(3.5rem, 8vw, 6.5rem) 0; }
    .sf-hx-slategrid { display: grid; gap: 2.5rem; align-items: center; }
    .sf-uiw { border: 1px solid var(--color-line); border-radius: var(--radius-lg); overflow: hidden; background: var(--color-surface); box-shadow: var(--shadow-card-hover, 0 18px 40px -12px rgba(0,0,0,.45)); }
    .sf-uiw-bar { display: flex; align-items: center; gap: .6rem; padding: .55rem .8rem; border-bottom: 1px solid var(--color-line); background: var(--color-canvas); }
    .sf-uiw-dots { display: inline-flex; gap: .3rem; }
    .sf-uiw-dots i { width: .5rem; height: .5rem; border-radius: 50%; background: var(--color-line); }
    .sf-uiw-tab { font-family: var(--font-mono, ui-monospace, monospace); font-size: .68rem; letter-spacing: .06em; color: var(--color-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .sf-uiw-shot img, .sf-uiw-shot video { width: 100%; height: auto; display: block; }
    .sf-uiw-mock { display: grid; grid-template-columns: 22% 1fr 24%; gap: .5rem; padding: .6rem; min-height: 15rem; }
    .sf-uiw-side { display: flex; flex-direction: column; gap: .35rem; }
    .sf-uiw-canvas { display: flex; flex-direction: column; gap: .4rem; }
    .sf-uiw-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: .4rem; flex: 1; }
    .sf-uiw-chip, .sf-uiw-row, .sf-uiw-band, .sf-uiw-card, .sf-uiw-drop { border-radius: calc(var(--radius-card) * .5); background: var(--color-canvas); border: 1px solid var(--color-line); }
    .sf-uiw-chip { height: 1.35rem; }
    .sf-uiw-row { height: 1.1rem; }
    .sf-uiw-band { height: 3.6rem; background: color-mix(in srgb, var(--color-primary) 14%, var(--color-canvas)); border-color: color-mix(in srgb, var(--color-primary) 30%, transparent); }
    .sf-uiw-drop { height: 1.6rem; border-style: dashed; border-color: color-mix(in srgb, var(--color-primary) 45%, transparent); background: transparent; }
    @media (min-width: 1024px) {
        .sf-hx-slategrid { grid-template-columns: 1.05fr 1fr; gap: 3.5rem; }
    }
    @media (max-width: 560px) {
        .sf-uiw-mock { grid-template-columns: 1fr; min-height: 0; }
        .sf-uiw-side--r { display: none; }
    }
    /* Zamaknjen vstop delov makete. Ce uporabnik ne zeli gibanja, so vsi deli takoj vidni. */
    @keyframes sfUiwIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
    .sf-uiw-mock > * > *, .sf-uiw-mock > * { animation: sfUiwIn .5s var(--motion-ease, cubic-bezier(.16,1,.3,1)) both; animation-delay: var(--d, 0s); }
    @media (prefers-reduced-motion: reduce) {
        .sf-uiw-mock > * > *, .sf-uiw-mock > * { animation: none; }
    }

    /* variant: collage */
    .sf-hx--collage { padding: clamp(3.5rem,8vw,6.5rem) 0; }
    .sf-hx-collage-grid { display: grid; gap: 2.5rem; align-items: center; }
    .sf-hx-collage-imgs { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
    .sf-hx-collage-imgs > div { position: relative; aspect-ratio: 4/3; overflow: hidden; border-radius: var(--radius-lg); box-shadow: var(--shadow); }
    .sf-hx-collage-imgs img { width: 100%; height: 100%; object-fit: cover; }
    @media (min-width: 1024px) {
        .sf-hx-splitgrid { grid-template-columns: 1fr 1fr; gap: 4rem; }
        .sf-hx-collage-grid { grid-template-columns: 1fr 1fr; gap: 4rem; }
    }
    /* variant: slideshow */
    .sf-hx--slideshow { display: flex; align-items: center; justify-content: center; min-height: 88svh; background: var(--color-panel-dark); }
    .sf-hx-slides { position: absolute; inset: 0; }
    .sf-hx-slide-static { position: absolute; inset: 0; }
    .sf-hx-slide-content { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 6rem 1.5rem; }
    .sf-hx-slide-content .sf-hx-content { max-width: var(--content-width-narrow); }
    .sf-hx-slide-foot { position: absolute; bottom: 2.5rem; left: 50%; transform: translateX(-50%); z-index: 10; display: flex; flex-direction: column; align-items: center; gap: 1.5rem; color: #fff; }

    /* H3 — 9-point content anchor (overrides variant placement; source order beats variant rules) */
    .sf-hx--anchored { display: flex; justify-content: flex-start; }
    .sf-hx--av-top    { align-items: flex-start; }
    .sf-hx--av-mid    { align-items: center; }
    .sf-hx--av-bottom { align-items: flex-end; }
    .sf-hx--anchored .sf-hx-inner { width: 100%; }
    .sf-hx--ah-left   .sf-hx-inner { margin-inline: 0 auto; }
    .sf-hx--ah-center .sf-hx-inner { margin-inline: auto; }
    .sf-hx--ah-right  .sf-hx-inner { margin-inline: auto 0; }
    .sf-hx--cw-narrow .sf-hx-inner { max-width: var(--content-width-narrow); }
    .sf-hx--cw-medium .sf-hx-inner { max-width: 46rem; }
    .sf-hx--cw-wide   .sf-hx-inner { max-width: var(--content-width); }
    .sf-hx--cw-full   .sf-hx-inner { max-width: none; }

    @media (max-width: 760px) {
        .sf-hx--fullbleed .sf-hx-inner { padding-top: 6rem; }
        .sf-hx-collage-imgs { grid-template-columns: 1fr; }

        /* H4c — mobilni override sidrišča (za desktop pravili, da jih prepiše) + skrit podnaslov */
        .sf-hx--m-anchored { display: flex; justify-content: flex-start; }
        .sf-hx--m-anchored .sf-hx-inner { width: 100%; }
        .sf-hx--m-av-top    { align-items: flex-start; }
        .sf-hx--m-av-mid    { align-items: center; }
        .sf-hx--m-av-bottom { align-items: flex-end; }
        .sf-hx--m-ah-left   .sf-hx-inner { margin-inline: 0 auto; }
        .sf-hx--m-ah-center .sf-hx-inner { margin-inline: auto; }
        .sf-hx--m-ah-right  .sf-hx-inner { margin-inline: auto 0; }
        .sf-m-hide { display: none !important; }
    }

    /* ======================================================================
       Hero variant: "sport" (Grašca) — full-bleed cinematic, left-aligned,
       stacked uppercase headline with an accent highlight word, scroll cue.
       Reproduces TEMP/Design1 index.html Hero(); theme-driven where it matters.
       ====================================================================== */
    .sf-hero-sport { position: relative; display: flex; align-items: center; height: 100svh; min-height: 560px; max-height: 920px; overflow: hidden; }
    .sf-hero-sport-bg { position: absolute; inset: 0; z-index: 0; }
    .sf-hero-sport-bg img, .sf-hero-sport-bg video { width: 100%; height: 100%; object-fit: cover; object-position: center 30%; }
    .sf-hero-sport-bg picture { display: block; width: 100%; height: 100%; }
    .sf-hero-sport-ovl { position: absolute; inset: 0; z-index: 1; pointer-events: none;
        background: var(--hero-overlay); }
    .sf-hero-sport-inner { position: relative; z-index: 2; width: 100%; max-width: 90rem; margin: 0 auto; padding: 0 clamp(20px,5vw,64px); box-sizing: border-box; }
    .sf-hero-sport-copy { max-width: 640px; }
    /* per-slide effects on the base template: anchor (position), text align, content width */
    .sf-hero-sport.sf-sp-av-top { align-items: flex-start; }
    .sf-hero-sport.sf-sp-av-bottom { align-items: flex-end; }
    .sf-hero-sport.sf-sp-ah-center .sf-hero-sport-copy { margin-left: auto; margin-right: auto; }
    .sf-hero-sport.sf-sp-ah-right .sf-hero-sport-copy { margin-left: auto; }
    .sf-hero-sport.sf-sp-align-center .sf-hero-sport-copy { text-align: center; }
    .sf-hero-sport.sf-sp-align-center .sf-hero-sport-eyebrow,
    .sf-hero-sport.sf-sp-align-center .sf-hero-sport-cta { justify-content: center; }
    .sf-hero-sport.sf-sp-align-right .sf-hero-sport-copy { text-align: right; }
    .sf-hero-sport.sf-sp-align-right .sf-hero-sport-eyebrow,
    .sf-hero-sport.sf-sp-align-right .sf-hero-sport-cta { justify-content: flex-end; }
    /* Lead (Podnaslov) is a width-capped block; without this its box stays pinned left, so right/center
       text alignment would leave it misaligned with the (uncapped) title & eyebrow. */
    .sf-hero-sport.sf-sp-align-center .sf-hero-sport-lead { margin-left: auto; margin-right: auto; }
    .sf-hero-sport.sf-sp-align-right .sf-hero-sport-lead { margin-left: auto; margin-right: 0; }
    .sf-hero-sport.sf-sp-cw-narrow .sf-hero-sport-copy { max-width: 440px; }
    .sf-hero-sport.sf-sp-cw-medium .sf-hero-sport-copy { max-width: 560px; }
    .sf-hero-sport.sf-sp-cw-wide .sf-hero-sport-copy { max-width: 760px; }
    .sf-hero-sport.sf-sp-cw-full .sf-hero-sport-copy { max-width: none; }
    .sf-hero-sport-eyebrow { display: flex; align-items: center; gap: 10px; margin-bottom: 18px; animation: t-fade-up .7s ease-out both; }
    .sf-hero-sport-eyebrow .line { display: block; width: 32px; height: 2px; background: var(--color-accent-500, #C8176A); }
    .sf-hero-sport-eyebrow span:last-child { font-family: var(--font-heading); font-weight: 600; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--color-accent-500, #C8176A); }
    .sf-hero-sport-title { font-family: var(--font-heading); font-weight: 900; font-size: clamp(52px,8.5vw,100px); text-transform: uppercase; line-height: .91; letter-spacing: .03em; color: #fff; margin: 0 0 24px; animation: t-fade-up .7s .12s ease-out both; }
    .sf-hero-sport-word { display: block; }
    .sf-hero-sport-word.hl { color: var(--color-accent-500, #C8176A); }
    .sf-hero-sport-lead { font-family: var(--font-sans); font-size: 17px; line-height: 1.65; color: rgba(255,255,255,.72); margin: 0 0 36px; max-width: 420px; animation: t-fade-up .7s .25s ease-out both; }
    .sf-hero-sport-cta { display: flex; gap: 12px; flex-wrap: wrap; animation: t-fade-up .7s .25s ease-out both; }
    .sf-hero-sport-btn { display: inline-flex; align-items: center; gap: 10px; padding: 14px 28px; border-radius: var(--radius-button, 3px); font-family: var(--font-sans); font-weight: 600; font-size: 13px; letter-spacing: .08em; text-transform: uppercase; text-decoration: none; transition: background .15s var(--ease), border-color .15s var(--ease); }
    .sf-hero-sport-btn svg { width: 13px; height: 13px; }
    .sf-hero-sport-btn--primary { background: var(--color-button-bg, var(--color-accent-500, #C8176A)); color: var(--color-button-text, #fff); border: none; }
    .sf-hero-sport-btn--primary:hover { background: color-mix(in srgb, var(--color-button-bg, var(--color-accent-500, #C8176A)) 88%, #000); }
    .sf-hero-sport-btn--ghost { background: var(--color-button2-bg, transparent); border: 2px solid var(--color-button2-text, rgba(255,255,255,.55)); color: var(--color-button2-text, #fff); }
    .sf-hero-sport-btn--ghost:hover { background: rgba(255,255,255,.14); }
    .sf-hero-sport-scroll { position: absolute; bottom: 48px; right: 48px; z-index: 2; display: flex; flex-direction: column; align-items: center; gap: 8px; font-family: var(--font-heading); font-size: 10px; letter-spacing: .2em; text-transform: uppercase; color: rgba(255,255,255,.3); }
    .sf-hero-sport-scroll .line { width: 1px; height: 40px; background: linear-gradient(to bottom, rgba(255,255,255,.3), transparent); }
    @media (max-width: 768px) {
        .sf-hero-sport-scroll { display: none; }
        .sf-hero-sport-copy { max-width: 100%; }
        .sf-hero-sport-lead { font-size: 15px; }

        /* H4c — mobilni override sidrišča na sport predlogi */
        .sf-hero-sport.sf-sp-m-av-top    { align-items: flex-start; }
        .sf-hero-sport.sf-sp-m-av-mid    { align-items: center; }
        .sf-hero-sport.sf-sp-m-av-bottom { align-items: flex-end; }
        .sf-hero-sport.sf-sp-m-ah-left   .sf-hero-sport-copy { margin-left: 0; margin-right: auto; }
        .sf-hero-sport.sf-sp-m-ah-center .sf-hero-sport-copy { margin-left: auto; margin-right: auto; }
        .sf-hero-sport.sf-sp-m-ah-right  .sf-hero-sport-copy { margin-left: auto; margin-right: 0; }
    }

    /* ---- hero-fx: text entrance animations ---- */
    @keyframes t-fade { from { opacity: 0; } to { opacity: 1; } }
    @keyframes t-fade-up { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
    @keyframes t-fade-down { from { opacity: 0; transform: translateY(-26px); } to { opacity: 1; transform: none; } }
    @keyframes t-blur-in { from { opacity: 0; filter: blur(16px); } to { opacity: 1; filter: blur(0); } }
    @keyframes t-zoom-in { from { opacity: 0; transform: scale(0.92); } to { opacity: 1; transform: none; } }
    .t-anim { animation-duration: .85s; animation-timing-function: cubic-bezier(.22,1,.36,1); animation-fill-mode: both; }
    .t-anim-fade { animation-name: t-fade; }
    .t-anim-fadeUp { animation-name: t-fade-up; }
    .t-anim-fadeDown { animation-name: t-fade-down; }
    .t-anim-blurIn { animation-name: t-blur-in; }
    .t-anim-zoomIn { animation-name: t-zoom-in; }
    .t-words > span { display: inline-block; animation: t-fade-up .8s cubic-bezier(.22,1,.36,1) both; }

    /* ---- hero-fx: image effects ---- */
    /* H4c-4 — --fx-speed (množitelj, 1 = privzeto) nastavi render na ovoj medija (počasi 1.7, hitro .55) */
    .t-kenburns { transform-origin: center; will-change: transform; animation: t-kenburns calc(24s * var(--fx-speed, 1)) ease-in-out infinite alternate; }
    @keyframes t-kenburns { from { transform: scale(1.08) translate3d(0,0,0); } to { transform: scale(1.2) translate3d(-2.5%,-2%,0); } }
    .t-zoom-settle { animation: t-zoom-settle calc(1.6s * var(--fx-speed, 1)) cubic-bezier(.22,1,.36,1) both; }
    @keyframes t-zoom-settle { from { transform: scale(1.16); } to { transform: scale(1); } }
    .t-hero-float { animation: t-hero-float calc(7s * var(--fx-speed, 1)) ease-in-out infinite alternate; }
    @keyframes t-hero-float { from { transform: translateY(0); } to { transform: translateY(-14px); } }
    .t-img-reveal { animation: t-img-reveal calc(1.15s * var(--fx-speed, 1)) cubic-bezier(.22,1,.36,1) both; }
    @keyframes t-img-reveal { from { clip-path: inset(0 0 100% 0); } to { clip-path: inset(0 0 0 0); } }

    /* H4d — akcijska vrstica: cena (+ prečrtana) in odštevalnik (tiktakanje: skripta v Page.cshtml) */
    .sf-hx-promo { display: flex; align-items: center; gap: 1.1rem; flex-wrap: wrap; margin: 0 0 1.5rem; }
    .sf-hx-price { display: inline-flex; align-items: baseline; gap: .55rem; font-family: var(--font-heading); }
    .sf-hx-price b { font-size: 1.9em; font-weight: 900; color: var(--color-accent-500, #C8176A); line-height: 1; }
    .sf-hx-price s { opacity: .55; font-size: 1.05em; }
    .sf-hx-cd { display: inline-flex; align-items: center; gap: .45rem; }
    .sf-cd-label { font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; opacity: .78; margin-right: .2rem; }
    .sf-cd-box { display: inline-flex; flex-direction: column; align-items: center; min-width: 2.7em; padding: .38em .45em;
        border-radius: .45em; background: rgb(0 0 0 / .35); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
    .sf-cd-box b { font-family: var(--font-heading); font-weight: 800; font-size: 1.15em; line-height: 1; font-variant-numeric: tabular-nums; }
    .sf-cd-box i { font-style: normal; font-size: .58em; letter-spacing: .08em; text-transform: uppercase; opacity: .7; margin-top: .22em; }
    .sf-tx-dark .sf-cd-box { background: rgb(20 20 25 / .08); }
    .sf-hx-content--center .sf-hx-promo { justify-content: center; }
    .sf-hx-content--right .sf-hx-promo { justify-content: flex-end; }
    .sf-hero-sport.sf-sp-align-center .sf-hx-promo { justify-content: center; }
    .sf-hero-sport.sf-sp-align-right .sf-hx-promo { justify-content: flex-end; }

    /* Per-slide barva besedila (svetla/temna slika) — prisili belo oz. temno čez privzetke predloge.
       Poudarjene besede (akcent / marker / gradient) ostanejo nedotaknjene. */
    .sf-tx-dark .sf-hero-sport-word:not(.hl) { color: var(--color-ink, #16181d); }
    .sf-tx-dark .sf-hero-sport-lead { color: rgb(23 23 28 / .72); }
    .sf-tx-dark .sf-hero-sport-btn--ghost { border-color: rgb(20 20 25 / .45); color: #16181d; }
    .sf-tx-dark .sf-hero-sport-btn--ghost:hover { background: rgb(20 20 25 / .08); }
    .sf-tx-dark .sf-hero-sport-scroll { color: rgb(20 20 25 / .4); }
    .sf-tx-dark .sf-hero-sport-scroll .line { background: linear-gradient(to bottom, rgb(20 20 25 / .4), transparent); }
    .sf-hx.sf-tx-dark { color: var(--color-ink, #16181d); }
    .sf-hx.sf-tx-dark .sf-hx-sub { color: rgb(23 23 28 / .75); }
    .sf-tx-light .sf-hero-sport-word:not(.hl) { color: var(--color-on-dark, #fff); }
    .sf-tx-light .sf-hero-sport-lead { color: rgba(255,255,255,.72); }
    .sf-hx.sf-tx-light { color: var(--color-on-dark, #fff); }
    .sf-hx.sf-tx-light .sf-hx-sub { color: rgba(255,255,255,.85); }
    .sf-hero.sf-tx-light .sf-hero-copy { color: var(--color-on-dark, #fff); }
    .sf-hero.sf-tx-dark .sf-hero-copy { color: var(--color-ink, #16181d); }

    /* H4c-5 — velikost naslova (per-slide override; !important prevlada nad variantnimi pravili) */
    /* mobilni floor mora biti dovolj majhen, da se naslov (in nedeljivi .t-rw izrazi) ne obreže na telefonu */
    h1.t-hs-sm { font-size: clamp(22px, 4vw, 44px) !important; }
    h1.t-hs-md { font-size: clamp(26px, 5.5vw, 64px) !important; }
    h1.t-hs-lg { font-size: clamp(30px, 7.5vw, 92px) !important; }
    h1.t-hs-xl { font-size: clamp(32px, 10vw, 128px) !important; }
    /* H4c-5 — slog poudarjenih besed (klasa t-hlm-* na h1; cilja .sf-hl in sport .hl) */
    .t-hlm-marker .sf-hl, .t-hlm-marker .sf-hero-sport-word.hl {
        background: var(--color-accent-500, #C8176A); color: #fff; padding: .02em .14em; border-radius: .08em;
        -webkit-box-decoration-break: clone; box-decoration-break: clone; }
    .t-hlm-marker .sf-hero-sport-word.hl { display: inline-block; }
    .t-hlm-underline .sf-hl, .t-hlm-underline .sf-hero-sport-word.hl {
        color: inherit; text-decoration: underline; text-decoration-color: var(--color-accent-500, #C8176A);
        text-decoration-thickness: .12em; text-underline-offset: .1em; }
    .t-hlm-gradient .sf-hl, .t-hlm-gradient .sf-hero-sport-word.hl {
        background: linear-gradient(100deg, var(--color-primary-500), var(--color-accent-500, #C8176A));
        -webkit-background-clip: text; background-clip: text; color: transparent; }

    /* ---- hero-fx: living gradient / aurora ---- */
    .t-aurora {
        background:
            radial-gradient(42% 60% at 18% 28%, color-mix(in srgb, var(--color-primary-500) 60%, transparent), transparent 70%),
            radial-gradient(46% 55% at 82% 22%, color-mix(in srgb, var(--color-accent-500) 55%, transparent), transparent 70%),
            radial-gradient(52% 62% at 62% 82%, color-mix(in srgb, var(--color-primary-700) 50%, transparent), transparent 72%),
            var(--color-canvas);
        background-size: 200% 200%, 200% 200%, 200% 200%, 100% 100%;
        animation: t-aurora-drift 18s ease-in-out infinite alternate;
    }
    @keyframes t-aurora-drift {
        0% { background-position: 0% 50%, 100% 0%, 50% 100%, 0 0; }
        100% { background-position: 100% 50%, 0% 100%, 25% 10%, 0 0; }
    }

    /* ---- hero-fx: background decorations ---- */
    /* decoration line/dot colour adapts to the hero surface — dark heroes get light lines,
       so grid/dots/rings stay visible (were --color-ink only → invisible on dark backgrounds). */
    .sf-hx-deco { --deco-ink: color-mix(in srgb, var(--color-ink) 15%, transparent); --deco-ink-strong: color-mix(in srgb, var(--color-ink) 24%, transparent); }
    .sf-hx--light-text .sf-hx-deco { --deco-ink: rgba(255,255,255,.18); --deco-ink-strong: rgba(255,255,255,.30); }
    .t-blob { border-radius: 9999px; filter: blur(48px); opacity: .62; will-change: transform; animation: t-blob-float 15s ease-in-out infinite alternate; }
    @keyframes t-blob-float { 0% { transform: translate3d(0,0,0) scale(1); } 100% { transform: translate3d(24px,-32px,0) scale(1.18); } }
    .t-deco-grid {
        background-image:
            linear-gradient(to right, var(--deco-ink) 1px, transparent 1px),
            linear-gradient(to bottom, var(--deco-ink) 1px, transparent 1px);
        background-size: 54px 54px;
        -webkit-mask-image: radial-gradient(ellipse at center, black, transparent 88%);
        mask-image: radial-gradient(ellipse at center, black, transparent 88%);
    }
    .t-deco-dots {
        background-image: radial-gradient(var(--deco-ink-strong) 1.8px, transparent 1.9px);
        background-size: 22px 22px;
        -webkit-mask-image: radial-gradient(ellipse at center, black, transparent 88%);
        mask-image: radial-gradient(ellipse at center, black, transparent 88%);
    }
    .t-deco-rings {
        background-image: repeating-radial-gradient(circle at 50% 45%, transparent 0 37px, var(--deco-ink) 37px 40px);
        -webkit-mask-image: radial-gradient(circle at 50% 45%, black, transparent 80%);
        mask-image: radial-gradient(circle at 50% 45%, black, transparent 80%);
        animation: t-spin-slow 70s linear infinite;
    }
    @keyframes t-spin-slow { to { transform: rotate(360deg); } }
    .t-deco-glow { background: radial-gradient(55% 55% at 50% 38%, color-mix(in srgb, var(--color-primary-500) 45%, transparent), transparent 72%); }
    .t-deco-noise { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); opacity: .13; mix-blend-mode: overlay; }
    .t-deco-beams {
        background-image: repeating-linear-gradient(115deg, transparent 0 44px, color-mix(in srgb, var(--color-primary-500) 24%, transparent) 44px 47px, transparent 47px 128px);
        background-size: 200% 200%;
        -webkit-mask-image: radial-gradient(ellipse at center, black, transparent 86%);
        mask-image: radial-gradient(ellipse at center, black, transparent 86%);
        animation: t-beams 14s linear infinite;
    }
    @keyframes t-beams { from { background-position: 0 0; } to { background-position: 200% 0; } }

    /* ---- hero-fx: image overlays (legibility scrim) ---- */
    .t-ovl-dark { background: rgb(0 0 0 / .45); }
    .t-ovl-grad-b { background: linear-gradient(to top, rgb(0 0 0 / .78), rgb(0 0 0 / .32) 45%, rgb(0 0 0 / .05)); }
    .t-ovl-grad-t { background: linear-gradient(to bottom, rgb(0 0 0 / .72), rgb(0 0 0 / .26) 45%, transparent); }
    .t-ovl-radial { background: radial-gradient(ellipse at center, transparent 34%, rgb(0 0 0 / .62)); }
    .t-ovl-scrim { background: rgb(0 0 0 / .42); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }

    /* ---- hero-fx: slideshow crossfade ---- */
    .t-slide { position: absolute; inset: 0; opacity: 0; animation-timing-function: ease-in-out; animation-iteration-count: infinite; will-change: opacity; }
    @keyframes t-slide-2 { 0%{opacity:0} 3%{opacity:1} 47%{opacity:1} 50%{opacity:0} 100%{opacity:0} }
    @keyframes t-slide-3 { 0%{opacity:0} 2%{opacity:1} 30%{opacity:1} 33%{opacity:0} 100%{opacity:0} }
    @keyframes t-slide-4 { 0%{opacity:0} 1.6%{opacity:1} 23%{opacity:1} 25%{opacity:0} 100%{opacity:0} }
    @keyframes t-slide-5 { 0%{opacity:0} 1.4%{opacity:1} 18%{opacity:1} 20%{opacity:0} 100%{opacity:0} }
    .t-slide-2 { animation-name: t-slide-2; }
    .t-slide-3 { animation-name: t-slide-3; }
    .t-slide-4 { animation-name: t-slide-4; }
    .t-slide-5 { animation-name: t-slide-5; }
    /* H4c — prehod "pomik" (drsni vstop/izstop; html ima overflow-x:hidden, zato brez drsnikov) */
    @keyframes t-slide-2-sl { 0%{opacity:0;transform:translateX(6%)} 3%{opacity:1;transform:none} 47%{opacity:1;transform:none} 50%{opacity:0;transform:translateX(-6%)} 100%{opacity:0;transform:translateX(6%)} }
    @keyframes t-slide-3-sl { 0%{opacity:0;transform:translateX(6%)} 2%{opacity:1;transform:none} 30%{opacity:1;transform:none} 33%{opacity:0;transform:translateX(-6%)} 100%{opacity:0;transform:translateX(6%)} }
    @keyframes t-slide-4-sl { 0%{opacity:0;transform:translateX(6%)} 1.6%{opacity:1;transform:none} 23%{opacity:1;transform:none} 25%{opacity:0;transform:translateX(-6%)} 100%{opacity:0;transform:translateX(6%)} }
    @keyframes t-slide-5-sl { 0%{opacity:0;transform:translateX(6%)} 1.4%{opacity:1;transform:none} 18%{opacity:1;transform:none} 20%{opacity:0;transform:translateX(-6%)} 100%{opacity:0;transform:translateX(6%)} }
    /* H4c — prehod "približanje" (vstop iz rahlega zooma) */
    @keyframes t-slide-2-zm { 0%{opacity:0;transform:scale(1.06)} 3%{opacity:1;transform:scale(1)} 47%{opacity:1;transform:scale(1)} 50%{opacity:0;transform:scale(.985)} 100%{opacity:0;transform:scale(1.06)} }
    @keyframes t-slide-3-zm { 0%{opacity:0;transform:scale(1.06)} 2%{opacity:1;transform:scale(1)} 30%{opacity:1;transform:scale(1)} 33%{opacity:0;transform:scale(.985)} 100%{opacity:0;transform:scale(1.06)} }
    @keyframes t-slide-4-zm { 0%{opacity:0;transform:scale(1.06)} 1.6%{opacity:1;transform:scale(1)} 23%{opacity:1;transform:scale(1)} 25%{opacity:0;transform:scale(.985)} 100%{opacity:0;transform:scale(1.06)} }
    @keyframes t-slide-5-zm { 0%{opacity:0;transform:scale(1.06)} 1.4%{opacity:1;transform:scale(1)} 18%{opacity:1;transform:scale(1)} 20%{opacity:0;transform:scale(.985)} 100%{opacity:0;transform:scale(1.06)} }
    /* Universal slide rotator — stacks full template renders (grid overlap) + crossfades opacity.
       Every template supports the slideshow; each slide shows in the chosen layout. */
    .sf-hero-rot { display: grid; position: relative; isolation: isolate; }
    .sf-hero-rot > .sf-hero-rot-item { grid-area: 1 / 1; min-width: 0; opacity: 0; will-change: opacity; animation-fill-mode: both; }
    .sf-hero-rot-dots { position: absolute; bottom: 1.75rem; left: 50%; transform: translateX(-50%); z-index: 30; display: inline-flex; gap: .5rem; }
    .sf-hero-rot-dots > * { width: .5rem; height: .5rem; border-radius: 9999px; background: #fff; opacity: .4;
        border: 0; padding: 0; cursor: pointer; transition: opacity .25s var(--ease), transform .25s var(--ease); }
    .sf-hero-rot:not(.is-manual) .sf-hero-rot-dots > :first-child { opacity: .95; }
    .sf-hero-rot-dots > .is-on { opacity: .95; transform: scale(1.25); }
    .sf-hero-rot-dots > *:hover { opacity: .8; }
    /* H4g — ročni način: skripta (_Theme, __sfHeroFxInit) izklopi CSS animacijo in preklaplja
       .is-on; neaktivni sloji ne lovijo klikov. Brez JS ostane CSS crossfade. */
    .sf-hero-rot.is-manual > .sf-hero-rot-anim { animation: none !important; opacity: 0;
        transition: opacity .7s var(--ease); pointer-events: none; }
    .sf-hero-rot.is-manual > .sf-hero-rot-anim.is-on { opacity: 1; pointer-events: auto; }
    .sf-hero-rot-arr { position: absolute; top: 50%; transform: translateY(-50%); z-index: 30;
        display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem;
        border: 1px solid rgb(255 255 255 / .3); border-radius: 9999px; background: rgb(10 12 18 / .32);
        color: #fff; cursor: pointer; padding: 0; opacity: 0; visibility: hidden;
        -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
        transition: opacity .25s var(--ease), visibility .25s, background .15s var(--ease); }
    .sf-hero-rot-arr svg { width: 1.15rem; height: 1.15rem; }
    .sf-hero-rot-arr--prev { left: 1.1rem; }
    .sf-hero-rot-arr--next { right: 1.1rem; }
    .sf-hero-rot-arr--next svg { transform: scaleX(-1); }
    .sf-hero-rot-arr:hover { background: rgb(10 12 18 / .55); }
    /* puščice pokaže šele ročni način (JS); na dotičnih zaslonih so vedno vidne */
    .sf-hero-rot.is-manual .sf-hero-rot-arr { opacity: 1; visibility: visible; }
    @media (hover: hover) {
        .sf-hero-rot.is-manual .sf-hero-rot-arr { opacity: 0; }
        .sf-hero-rot.is-manual:hover .sf-hero-rot-arr, .sf-hero-rot.is-manual .sf-hero-rot-arr:focus-visible { opacity: 1; }
    }
    @media (max-width: 760px) {
        .sf-hero-rot-arr { width: 2.25rem; height: 2.25rem; }
        .sf-hero-rot-arr--prev { left: .6rem; }
        .sf-hero-rot-arr--next { right: .6rem; }
    }
    .t-dots { display: inline-flex; gap: .5rem; }
    .t-dots > span { width: .5rem; height: .5rem; border-radius: 9999px; background: currentColor; opacity: .35; }
    .t-dots > span:first-child { opacity: .9; }

    /* ---- H4d: plavajoče nalepke (badges) — zunanji span pozicija/rotacija, notranji videz+animacija.
       Prefiks sf-hxb (hero-badge): .sf-badge je že zaseden (števec v košarici, _ChromeIcons). ---- */
    .sf-hero-badges { position: absolute; inset: 0; z-index: 25; pointer-events: none; }
    .sf-hxb { position: absolute; transform: translate(-50%,-50%) rotate(var(--b-rot, 0deg)); }
    .sf-hxb-in { display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-heading);
        font-weight: 800; letter-spacing: .05em; text-transform: uppercase; white-space: nowrap; line-height: 1;
        box-shadow: 0 8px 24px -8px rgb(0 0 0 / .4); }
    .sf-hxb--sm { font-size: 11px; padding: .4em .95em; }
    .sf-hxb--md { font-size: 14px; padding: .5em 1.05em; }
    .sf-hxb--lg { font-size: 19px; padding: .6em 1.15em; }
    .sf-hxb--accent  { background: var(--color-accent-500, #C8176A); color: #fff; }
    .sf-hxb--primary { background: var(--color-primary-600); color: #fff; }
    .sf-hxb--dark    { background: var(--color-ink, #101010); color: var(--color-text-inverse, #fff); }
    .sf-hxb--light   { background: var(--color-surface, #fff); color: var(--color-ink, #141414); }
    .sf-hxb--outline { background: rgb(0 0 0 / .22); color: #fff; border: 2px solid #fff;
        -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); box-shadow: none; }
    .sf-hxb--pill   { border-radius: 999px; }
    .sf-hxb--tag    { border-radius: 4px 14px 4px 14px; }
    .sf-hxb--circle { border-radius: 50%; aspect-ratio: 1; padding: 1em; }
    .sf-hxb--burst  { padding: 1.7em 2em; box-shadow: none;
        clip-path: polygon(100.0% 50.0%, 86.7% 59.8%, 93.3% 75.0%, 76.9% 76.9%, 75.0% 93.3%, 59.8% 86.7%, 50.0% 100.0%, 40.2% 86.7%, 25.0% 93.3%, 23.1% 76.9%, 6.7% 75.0%, 13.3% 59.8%, 0.0% 50.0%, 13.3% 40.2%, 6.7% 25.0%, 23.1% 23.1%, 25.0% 6.7%, 40.2% 13.3%, 50.0% 0.0%, 59.8% 13.3%, 75.0% 6.7%, 76.9% 23.1%, 93.3% 25.0%, 86.7% 40.2%); }
    @keyframes t-badge-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.09); } }
    .t-badge-pulse { animation: t-badge-pulse 1.8s ease-in-out infinite; }
    @keyframes t-badge-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
    .t-badge-float { animation: t-badge-float 3.6s ease-in-out infinite; }
    @keyframes t-badge-bounce { 0%, 55%, 100% { transform: translateY(0); } 30% { transform: translateY(-12px); } 42% { transform: translateY(2px); } }
    .t-badge-bounce { animation: t-badge-bounce 2.2s cubic-bezier(.34,1.56,.64,1) infinite; }
    @keyframes t-badge-wiggle { 0%, 100% { transform: rotate(-4deg); } 50% { transform: rotate(4deg); } }
    .t-badge-wiggle { animation: t-badge-wiggle 1.6s ease-in-out infinite; }
    @keyframes t-badge-pop { 0% { opacity: 0; transform: scale(.4); } 70% { opacity: 1; transform: scale(1.12); } 100% { opacity: 1; transform: scale(1); } }
    .t-badge-pop { animation: t-badge-pop .6s .35s cubic-bezier(.34,1.56,.64,1) both; }
    /* H4g — slikovna nalepka (izrezan izdelek, PNG) + klikljive nalepke (povezava na izdelek) */
    .sf-hxb-img { display: block; max-width: 42vw; height: auto;
        filter: drop-shadow(0 18px 28px rgb(0 0 0 / .35)); }
    .sf-hero-badges a.sf-hxb { pointer-events: auto; text-decoration: none; }
    .sf-hero-badges a.sf-hxb:hover .sf-hxb-in { filter: brightness(1.08); }
    .sf-hero-badges a.sf-hxb:hover .sf-hxb-img { filter: drop-shadow(0 22px 32px rgb(0 0 0 / .45)) brightness(1.04); }

    /* ---- hero-fx: heading mask-up + shine ---- */
    .t-anim-maskUp { animation: t-mask-up .95s cubic-bezier(.22,1,.36,1) both; -webkit-mask-image: linear-gradient(black, black); mask-image: linear-gradient(black, black); }
    @keyframes t-mask-up { from { clip-path: inset(110% 0 0 0); transform: translateY(.25em); } to { clip-path: inset(0 0 0 0); transform: none; } }
    .t-anim-shine {
        background: linear-gradient(100deg, currentColor 35%, color-mix(in srgb, currentColor 35%, white) 50%, currentColor 65%);
        background-size: 250% 100%;
        -webkit-background-clip: text; background-clip: text; color: transparent;
        animation: t-shine 3.2s linear infinite;
    }
    @keyframes t-shine { from { background-position: 150% 0; } to { background-position: -150% 0; } }

    /* ==== H4f: premium možnosti pasice ================================== */

    /* Barvni filter slike (t-if-*) — razred na ovoju medija (.sf-hx-bg / .sf-hero-sport-bg /
       .sf-hx-splitimg); "brand" = razbarvana slika + primarna barva prek mix-blend (duotone). */
    .t-if-warm img,  .t-if-warm video  { filter: saturate(1.22) sepia(.16) contrast(1.05); }
    .t-if-cool img,  .t-if-cool video  { filter: saturate(1.08) hue-rotate(-12deg) brightness(1.03); }
    .t-if-mono img,  .t-if-mono video  { filter: grayscale(1) contrast(1.06); }
    .t-if-vivid img, .t-if-vivid video { filter: saturate(1.45) contrast(1.1); }
    .t-if-soft img,  .t-if-soft video  { filter: saturate(.88) brightness(1.06) contrast(.92); }
    .t-if-brand img, .t-if-brand video { filter: grayscale(1) contrast(1.05); }
    .t-if-brand::after { content: ""; position: absolute; inset: 0; background: var(--color-primary-600);
        mix-blend-mode: color; pointer-events: none; }

    /* Podlaga vsebine (steklena kartica / obroba) — na .sf-hx-content oz. .sf-hero-sport-copy. */
    .sf-cbk { border-radius: 1.25rem; padding: clamp(1.4rem, 3.5vw, 2.5rem); max-width: 100%; box-sizing: border-box; }
    .sf-hx-content--center.sf-cbk { margin-inline: auto; }
    .sf-hx-content--right.sf-cbk  { margin-left: auto; }
    .sf-cbk--glass { background: rgb(10 12 18 / .42); border: 1px solid rgb(255 255 255 / .16);
        -webkit-backdrop-filter: blur(18px) saturate(1.25); backdrop-filter: blur(18px) saturate(1.25);
        box-shadow: 0 24px 70px -32px rgb(0 0 0 / .55); }
    .sf-cbk--glassLight { background: rgb(255 255 255 / .78); border: 1px solid rgb(255 255 255 / .5);
        -webkit-backdrop-filter: blur(16px) saturate(1.15); backdrop-filter: blur(16px) saturate(1.15);
        box-shadow: 0 24px 70px -36px rgb(0 0 0 / .35); }
    .sf-cbk--outline { border: 1.5px solid rgb(255 255 255 / .38); }
    .sf-hx.sf-tx-dark .sf-cbk--outline, .sf-hx--tone-neutral .sf-cbk--outline { border-color: rgb(20 20 25 / .28); }
    /* svetlo steklo prisili temno besedilo (sicer belo besedilo na beli podlagi) */
    .sf-hx .sf-cbk--glassLight, .sf-hx .sf-cbk--glassLight h1 { color: var(--color-ink, #16181d); }
    .sf-hx .sf-cbk--glassLight .sf-hx-sub { color: rgb(23 23 28 / .75); }
    .sf-hero-sport-copy.sf-cbk--glassLight .sf-hero-sport-word:not(.hl) { color: var(--color-ink, #16181d); }
    .sf-hero-sport-copy.sf-cbk--glassLight .sf-hero-sport-lead { color: rgb(23 23 28 / .72); }
    .sf-hero-sport-copy.sf-cbk--glassLight .sf-hero-sport-btn--ghost { border-color: rgb(20 20 25 / .45); color: var(--color-ink, #16181d); }
    .sf-hero-sport-copy.sf-cbk { max-width: min(640px, 100%); }

    /* Velika obrisna beseda v ozadju (watermark) — pod vsebino, nad medijem/prekritjem. */
    .sf-hx-bword { position: absolute; inset: 0; z-index: 3; display: flex; align-items: center;
        justify-content: center; overflow: hidden; pointer-events: none; }
    .sf-hero-sport .sf-hx-bword { z-index: 1; }
    /* --sf-bw (privzeto 1) skalira alfo obrisa → nastavljiva »moč besede v ozadju«. Prva (statična)
       izjava je fallback za brskalnike brez calc() v rgb(); druga jo na sodobnih prepiše. Pri --sf-bw:1
       je rezultat enak fallbacku (obstoječe pasice byte-identične). */
    .sf-hx-bword span { font-family: var(--font-heading); font-weight: 900; font-size: clamp(80px, 17vw, 240px);
        line-height: 1; letter-spacing: .04em; text-transform: uppercase; white-space: nowrap;
        color: transparent; -webkit-text-stroke: 1.5px rgb(255 255 255 / .18);
        -webkit-text-stroke: 1.5px rgb(255 255 255 / calc(.18 * var(--sf-bw, 1))); }
    .sf-tx-dark .sf-hx-bword span, .sf-hx--tone-neutral .sf-hx-bword span,
    .sf-hx--gradient .sf-hx-bword span, .sf-hx--minimal .sf-hx-bword span,
    .sf-hx--split .sf-hx-bword span { -webkit-text-stroke-color: rgb(20 20 25 / .12);
        -webkit-text-stroke-color: rgb(20 20 25 / calc(.12 * var(--sf-bw, 1))); }

    /* Koda za popust — čip s klikom-za-kopiranje (skripta v Page.cshtml, [data-copy]). */
    .sf-hx-code { display: inline-flex; align-items: baseline; gap: .6em; padding: .55em 1em;
        border: 1.5px dashed rgb(255 255 255 / .55); border-radius: .65em; background: rgb(255 255 255 / .08);
        color: inherit; font-family: var(--font-heading); font-size: .95rem; cursor: pointer;
        transition: background .15s var(--ease), border-color .15s var(--ease); }
    .sf-hx-code b { font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
    .sf-hx-code i { font-style: normal; font-size: .68em; letter-spacing: .1em; text-transform: uppercase; opacity: .65; }
    .sf-hx-code:hover { background: rgb(255 255 255 / .16); }
    .sf-hx-code.is-copied { border-style: solid; border-color: var(--color-accent-500, #C8176A); }
    .sf-hx.sf-tx-dark .sf-hx-code, .sf-hx--tone-neutral .sf-hx-code, .sf-hero.sf-tx-dark .sf-hx-code {
        border-color: rgb(20 20 25 / .4); background: rgb(20 20 25 / .06); }

    /* Izmenjujoče besede v naslovu — grid-stack; vsaka beseda vidna 1/n cikla (inline animacija). */
    .t-rw { display: inline-grid; vertical-align: baseline; color: var(--color-accent-500, var(--color-accent, #c8176a)); }
    .t-rw > span { grid-area: 1 / 1; opacity: 0; white-space: nowrap; will-change: opacity, transform; }
    @keyframes t-rw-2 { 0%{opacity:0;transform:translateY(.4em)} 8%{opacity:1;transform:none} 42%{opacity:1;transform:none} 50%{opacity:0;transform:translateY(-.4em)} 100%{opacity:0;transform:translateY(.4em)} }
    @keyframes t-rw-3 { 0%{opacity:0;transform:translateY(.4em)} 6%{opacity:1;transform:none} 27.3%{opacity:1;transform:none} 33.3%{opacity:0;transform:translateY(-.4em)} 100%{opacity:0;transform:translateY(.4em)} }
    @keyframes t-rw-4 { 0%{opacity:0;transform:translateY(.4em)} 4.5%{opacity:1;transform:none} 20.5%{opacity:1;transform:none} 25%{opacity:0;transform:translateY(-.4em)} 100%{opacity:0;transform:translateY(.4em)} }
    @keyframes t-rw-5 { 0%{opacity:0;transform:translateY(.4em)} 3.6%{opacity:1;transform:none} 16.4%{opacity:1;transform:none} 20%{opacity:0;transform:translateY(-.4em)} 100%{opacity:0;transform:translateY(.4em)} }

    /* Oblika spodnjega roba — SVG v barvi podlage strani čez dno pasice. */
    .sf-hero-edge { position: absolute; left: 0; right: 0; bottom: -1px; z-index: 12; pointer-events: none; line-height: 0; }
    .sf-hero-edge svg { display: block; width: 100%; height: clamp(28px, 6vw, 76px); fill: var(--color-canvas, #fff); }

    /* H4f-2 — parallax ob drsenju: slika je višja od pasice (rezerva za pomik), transform
       nastavlja deljena skripta na dnu te datoteke (brez JS = statičen izrez zgornjega dela). */
    .sf-hx-bg .t-parallax, .sf-hero-sport-bg .t-parallax, .sf-hx-splitimg .t-parallax {
        height: 132%; will-change: transform; }

    /* H4f-2 — žaromet sledi miški: radialen sij na poziciji kazalca (--spot-x/y nastavlja
       skripta; privzeto rahlo nad sredino, zato je viden tudi brez miške/na dotik). */
    .t-deco-spotlight {
        background: radial-gradient(clamp(220px, 30vw, 460px) circle at var(--spot-x, 50%) var(--spot-y, 40%),
            rgb(255 255 255 / .18), rgb(255 255 255 / .06) 45%, transparent 70%);
        mix-blend-mode: overlay; }

    /* ══ W0 · Wave-2 infrastruktura (docs/structural-presets-wave2.md) ══
       Deljeni primitivi za faze W1+; dokler jih preseti ne uporabijo, so vizualni no-op. */

    /* A11y quality-floor: »Na vsebino« (vstavi jo W0 skripta spodaj) — vidna šele ob fokusu
       s tipkovnico; + tematiziran fokusni obroč za tipkovnično navigacijo. */
    .sf-skip { position: fixed; top: .75rem; left: .75rem; z-index: var(--z-skip, 210);
        background: var(--color-surface, var(--color-canvas)); color: var(--color-ink);
        font-weight: 600; padding: .55rem .9rem; border-radius: var(--radius);
        border: 1px solid var(--color-line); box-shadow: var(--shadow-lg);
        transform: translateY(-250%); }
    .sf-skip:focus { transform: none; }
    :focus-visible { outline: var(--focus-ring-w, 2px) solid var(--focus-ring-color, var(--color-primary-600)); outline-offset: 2px; }
    main:focus, main:focus-visible { outline: none; } /* cilj skip povezave, ni interaktiven */
    .sf-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
        overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

    /* Skeleton shimmer za asinhrone površine (mini-cart, predlogi iskanja …) — W2/W3. */
    .sf-skel { position: relative; overflow: hidden; color: transparent !important;
        pointer-events: none; user-select: none; border-radius: var(--radius-sm);
        background: var(--skel-bg, color-mix(in oklab, var(--color-ink) 8%, var(--color-canvas))); }
    .sf-skel::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%);
        background: linear-gradient(100deg, transparent 20%, color-mix(in oklab, var(--color-canvas) 65%, transparent) 50%, transparent 80%);
        animation: sf-skel-wave calc(1.4s * var(--motion-scale, 1)) infinite; }
    @keyframes sf-skel-wave { to { transform: translateX(100%); } }

    /* Bottom-dock (mobilni fiksni pasovi) — sfDock dovoli EN »commerce bar« naenkrat
       (prioritete: nakup > košarica > filtri > obvestilo); safe-area za iOS brado. */
    .sf-dock-item { position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-dock, 80);
        padding-bottom: env(safe-area-inset-bottom, 0); }
    .sf-dock-item.is-dock-hidden { display: none !important; }

    @media (prefers-reduced-motion: reduce) {
        .sf-skel::after { animation: none; }
        .t-anim, .t-anim-maskUp, .t-anim-shine, .t-words > span, .t-kenburns, .t-zoom-settle,
        .t-hero-float, .t-img-reveal, .t-aurora, .t-blob, .t-deco-rings, .t-deco-beams, .t-slide,
        .sf-hero-rot-item,
        .t-badge-pulse, .t-badge-float, .t-badge-bounce, .t-badge-wiggle, .t-badge-pop {
            animation: none !important;
        }
        /* H4f — brez kinetike: prikaži samo prvo izmenjujočo besedo */
        .t-rw > span { animation: none !important; }
        .t-rw > span:first-child { opacity: 1; }
        /* H4f-2 — parallax brez JS pomika: normalna višina (brez čudnega izreza) */
        .sf-hx-bg .t-parallax, .sf-hero-sport-bg .t-parallax, .sf-hx-splitimg .t-parallax { height: 100%; }
        /* H4g — ročno listanje ostane (uporabnikova akcija), a preklop brez prelivanja */
        .sf-hero-rot.is-manual > .sf-hero-rot-anim { transition: none !important; }
        .t-img-reveal, .t-anim-maskUp { clip-path: none !important; }
        .t-anim-shine { background: none; -webkit-background-clip: border-box; background-clip: border-box; color: inherit; }
        .t-slide, .sf-hero-rot-item { opacity: 0; }
        .t-slide:first-child, .sf-hero-rot-item:first-child { opacity: 1; }
    }
    .sf-mc { position: fixed; inset: 0; z-index: var(--z-modal, 200); display: none; }
    .sf-mc.is-open { display: block; }
    .sf-mc-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.42); opacity: 0; transition: opacity .25s; }
    .sf-mc.is-open .sf-mc-backdrop { opacity: 1; }
    .sf-mc--dropdown .sf-mc-backdrop { background: transparent; }
    .sf-mc-panel { position: absolute; background: var(--color-surface); color: var(--color-ink); display: flex; flex-direction: column; box-shadow: 0 12px 40px rgba(0,0,0,.24); }
    .sf-mc--drawer .sf-mc-panel { top: 0; right: 0; bottom: 0; width: min(400px, 92vw); transform: translateX(100%); transition: transform .28s var(--ease); }
    .sf-mc--drawer.is-open .sf-mc-panel { transform: none; }
    .sf-mc--dropdown .sf-mc-panel { top: var(--sf-mc-top, 64px); right: var(--sf-mc-right, 16px); width: min(360px, 92vw); max-height: 70vh; border-radius: var(--radius-lg, 8px); border: 1px solid var(--color-line); opacity: 0; transform: translateY(-8px); transition: opacity .2s, transform .2s; }
    .sf-mc--dropdown.is-open .sf-mc-panel { opacity: 1; transform: none; }
    .sf-mc-head { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.15rem; border-bottom: 1px solid var(--color-line); }
    .sf-mc-title { font-weight: 700; font-size: 1rem; margin: 0; }
    .sf-mc-close { background: none; border: none; cursor: pointer; color: var(--color-muted); padding: .3rem; display: flex; border-radius: .4rem; }
    .sf-mc-close:hover { background: color-mix(in oklab, var(--color-ink) 8%, transparent); }
    .sf-mc-body { flex: 1; overflow-y: auto; padding: .5rem .75rem; }
    .sf-mc-line { display: flex; gap: .75rem; padding: .6rem .4rem; border-bottom: 1px solid var(--color-line); align-items: center; }
    .sf-mc-line:last-child { border-bottom: none; }
    .sf-mc-img { width: 52px; height: 52px; flex-shrink: 0; border-radius: .5rem; overflow: hidden; background: var(--color-canvas); display: flex; align-items: center; justify-content: center; }
    .sf-mc-img img { width: 100%; height: 100%; object-fit: contain; }
    .sf-mc-info { flex: 1; min-width: 0; }
    .sf-mc-name { font-size: .85rem; font-weight: 600; margin: 0 0 .15rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .sf-mc-meta { font-size: .8rem; color: var(--color-muted); }
    .sf-mc-empty { padding: 2.5rem 1rem; text-align: center; color: var(--color-muted); }
    .sf-mc-foot { padding: 1rem 1.15rem; border-top: 1px solid var(--color-line); }
    .sf-mc-sum { display: flex; justify-content: space-between; font-weight: 700; margin-bottom: .75rem; }
    .sf-mc-cta { display: block; text-align: center; padding: .8rem; background: var(--grad-brand); color: #fff; font-weight: 700; border-radius: .6rem; text-decoration: none; }
    .sf-mc-skel { display: flex; gap: .75rem; padding: .6rem .4rem; align-items: center; }
    .sf-mc-skel .sf-mc-img { background: none; }
    @media (prefers-reduced-motion: reduce) { .sf-mc-backdrop, .sf-mc-panel { transition: none !important; } }
