/*
 * Storefront — a Shopclass public theme.
 * Built on the Modern design system: Archivo type, a warm light ground with a
 * teal accent and coral secondary, tonal ramps generated on one shared lightness
 * scale, soft ink-tinted elevation, 2px section rules and gently rounded corners.
 * SPDX-License-Identifier: GPL-3.0-or-later
 */

/* Archivo, self-hosted: one variable file per subset covers every weight. Licence: fonts/OFL.txt. */
@font-face {
    font-family: 'Archivo';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/archivo-vietnamese.woff2') format('woff2');
    unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

@font-face {
    font-family: 'Archivo';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/archivo-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Archivo';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/archivo-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ──────────────────────────────────────────────────────────────────────────
   Tokens — the source of truth for the look. Retune here.
   ────────────────────────────────────────────────────────────────────────── */
:root {
    --color-bg: #f7f5f1;
    --color-surface: #ffffff;
    --color-text: #0f2742;
    --color-accent: #12a6a0;
    --color-accent-2: #ff6b4a;
    /* Fixed palette — mode-INVARIANT colours that must NOT flip with the theme:
       text/icons on a teal or coral fill, a scrim that stays dark, a frosted chip
       or glass rim that stays light, the near-black lightbox stage. Never redefine
       these in the dark blocks. */
    --color-fixed-ink: #0f2742;    /* non-flipping navy: scrim + media-overlay fills, ink on frosted chips */
    --color-fixed-light: #ffffff;  /* non-flipping white: labels on accent fills, frosted/glass surfaces, text on dark overlays */
    --color-scrim: color-mix(in srgb, var(--color-fixed-ink) 55%, transparent); /* dim behind drawers & dialogs */
    --color-overlay: #0b1420;      /* near-black lightbox stage */
    --color-divider: color-mix(in srgb, #0f2742 16%, transparent);
    /* Secondary/muted text. Derived from --color-text so it re-resolves per theme;
       tuned to clear WCAG AA (>=4.5:1) on both bg and surface, light and dark. */
    --color-muted: color-mix(in srgb, var(--color-text) 70%, transparent);
    /* Teal for text/links sitting on the page ground. --color-accent (#12a6a0) is
       mode-invariant and only clears ~2.8:1 on the sand ground, so it fails AA as
       text; this steps to a darker teal on light and a lighter one on dark, keeping
       teal text >=4.5:1 in both themes. Fills/buttons still use --color-accent. */
    --color-accent-ink: var(--color-accent-700);
    /* Coral/amber/pink counterpart to --color-accent-ink, same rationale: any TEXT
       or meaningful icon coloured with accent-2 must flip with the theme (dark
       backgrounds need the lighter -300 step) rather than hard-coding a step tuned
       for the light ground only. Fills/chips still use --color-accent-2 directly. */
    --color-accent-2-ink: var(--color-accent-2-700);

    /* Tonal ramps — generated in OKLCH on one shared lightness scale, so the
       same step of any role matches the others in visual value. */
    --color-neutral-100: #f2f3f5;
    --color-neutral-200: #e2e5e9;
    --color-neutral-300: #ccd2d9;
    --color-neutral-400: #a7b1bc;
    --color-neutral-500: #7d8a98;
    --color-neutral-600: #5f6d7c;
    --color-neutral-700: #435466;
    --color-neutral-800: #2c3c4e;
    --color-neutral-900: #16273a;

    --color-accent-100: #dcf4f2;
    --color-accent-200: #b7e8e5;
    --color-accent-300: #86d6d1;
    --color-accent-400: #4cc0ba;
    --color-accent-500: #12a6a0;
    --color-accent-600: #0f8c87;
    --color-accent-700: #0d716d;
    --color-accent-800: #0b5854;
    --color-accent-900: #0a413e;

    --color-accent-2-100: #ffe7e0;
    --color-accent-2-200: #ffcabd;
    --color-accent-2-300: #ffa88f;
    --color-accent-2-400: #ff8767;
    --color-accent-2-500: #ff6b4a;
    --color-accent-2-600: #ec4e2b;
    --color-accent-2-700: #c53c1e;
    --color-accent-2-800: #99301a;
    --color-accent-2-900: #6b2414;

    /* Solid-fill tokens for buttons/chips that carry --color-fixed-light text. The
       base accent (500) only clears ~2.8:1 against white, so white-on-accent fails
       AA as text; these resolve to the LIGHTEST ramp step that still clears >=4.5:1
       against white, keeping fills as vibrant as AA allows. Fill-vs-white is
       mode-invariant (the ramps don't flip light/dark), so no dark-theme override
       is needed. Redefined per palette below since each hue reaches AA at a
       different step (teal needs 700; indigo/violet clear it already at 500). The
       -hover/-active steps are one/two steps further down the same ramp, so press
       states only ever gain contrast, never lose it. */
    --color-accent-fill: var(--color-accent-700);
    --color-accent-fill-hover: var(--color-accent-800);
    --color-accent-fill-active: var(--color-accent-900);
    --color-accent-2-fill: var(--color-accent-2-700);
    --color-accent-2-fill-hover: var(--color-accent-2-800);

    --font-heading: "Archivo", system-ui, sans-serif;
    --font-heading-weight: 800;
    --font-body: "Archivo", system-ui, sans-serif;

    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-6: 24px;
    --space-8: 32px;

    --radius-sm: 4px;
    --radius-md: 6px;
    --radius-lg: 12px;

    /* Elevation — soft ink-tinted shadows tuned to the light ground. */
    --shadow-sm: 0 1px 3px color-mix(in srgb, #262c38 10%, transparent), 0 1px 2px color-mix(in srgb, #262c38 8%, transparent);
    --shadow-md: 0 4px 14px color-mix(in srgb, #262c38 12%, transparent), 0 2px 6px color-mix(in srgb, #262c38 8%, transparent);
    --shadow-lg: 0 18px 44px color-mix(in srgb, #262c38 18%, transparent), 0 6px 16px color-mix(in srgb, #262c38 10%, transparent);

    /* Layout */
    --sf-container: 1200px;
    --sf-header-h: 66px;

    /* Legacy aliases — earlier markup referenced these; keep them resolving to
       the design tokens so every template stays on one palette. */
    --sf-navy: var(--color-text);
    --sf-teal: var(--color-accent);
    --sf-teal-dark: var(--color-accent-600);
    --sf-slate: var(--color-neutral-700);
    --sf-surface: var(--color-bg);
    --sf-coral: var(--color-accent-2);
    --sf-bg: var(--color-surface);
    --sf-panel: var(--color-surface);
    --sf-ink: var(--color-text);
    --sf-muted: var(--color-neutral-700);
    --sf-line: var(--color-divider);
    --sf-shadow: var(--shadow-sm);
    --sf-radius: var(--radius-lg);
    --sf-radius-sm: var(--radius-md);
    --sf-gap: var(--space-6);

    /* Light is the default and the only theme that applies on its own. Dark still
       ships — set data-theme="dark" on <html> to force it, or data-theme="auto" to
       follow the OS. With no attribute present the UI never darkens by itself. */
    color-scheme: light;
}

/* Opt-in dark theme. Keep these tokens in sync with the data-theme="auto" block. */
:root[data-theme="dark"] {
    color-scheme: dark;
    --color-bg: #0c1a2b;
    --color-surface: #12283f;
    --color-text: #eaf1f8;
    --color-divider: color-mix(in srgb, #eaf1f8 16%, transparent);
    --color-accent-ink: var(--color-accent-300);
    --color-accent-2-ink: var(--color-accent-2-300);

    --color-neutral-100: #16273a;
    --color-neutral-200: #1e3145;
    --color-neutral-300: #294056;
    --color-neutral-400: #3c566d;
    --color-neutral-500: #6b8299;
    --color-neutral-600: #93a6b8;
    --color-neutral-700: #b6c4d2;
    --color-neutral-800: #d3dde7;
    --color-neutral-900: #eaf1f8;

    --shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .3);
    --shadow-md: 0 4px 14px rgba(0, 0, 0, .45), 0 2px 6px rgba(0, 0, 0, .35);
    --shadow-lg: 0 18px 44px rgba(0, 0, 0, .55), 0 6px 16px rgba(0, 0, 0, .4);
}

/* data-theme="auto" tracks the OS setting; mirrors the tokens above. */
@media (prefers-color-scheme: dark) {
    :root[data-theme="auto"] {
        color-scheme: dark;
        --color-bg: #0c1a2b;
        --color-surface: #12283f;
        --color-text: #eaf1f8;
        --color-divider: color-mix(in srgb, #eaf1f8 16%, transparent);
        --color-accent-ink: var(--color-accent-300);
        --color-accent-2-ink: var(--color-accent-2-300);

        --color-neutral-100: #16273a;
        --color-neutral-200: #1e3145;
        --color-neutral-300: #294056;
        --color-neutral-400: #3c566d;
        --color-neutral-500: #6b8299;
        --color-neutral-600: #93a6b8;
        --color-neutral-700: #b6c4d2;
        --color-neutral-800: #d3dde7;
        --color-neutral-900: #eaf1f8;

        --shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .3);
        --shadow-md: 0 4px 14px rgba(0, 0, 0, .45), 0 2px 6px rgba(0, 0, 0, .35);
        --shadow-lg: 0 18px 44px rgba(0, 0, 0, .55), 0 6px 16px rgba(0, 0, 0, .4);
    }
}

/* Palette presets — swap only the accent (primary) and accent-2 (secondary) tonal ramps
   for `data-palette="indigo"|"violet"`; teal is the `:root` default so it needs no block.
   bg/surface/text/neutral/fixed tokens are untouched, so only the brand hue moves.
   Ramps are generated in OKLCH mirroring the teal ramp's own step-to-step LIGHTNESS shape
   (100 lightest … 900 darkest), anchored to each hue's true rendered lightness rather than
   the teal ramp's raw numbers — blue/violet renders noticeably darker than teal at matched
   OKLCH lightness, so a straight copy would crush the ramp. --color-accent-700 clears
   >=4.5:1 on the light ground and --color-accent-300 clears >=4.5:1 on the dark ground,
   so --color-accent-ink (which resolves to one of those two, see above) keeps passing
   text contrast under either preset. */
:root[data-palette="indigo"] {
    --color-accent: #4f46e5;
    --color-accent-2: #f59e0b;

    --color-accent-100: #aeb9ff;
    --color-accent-200: #9aa6ff;
    --color-accent-300: #7f89ff;
    --color-accent-400: #6465ff;
    --color-accent-500: #4f46e5;
    --color-accent-600: #4000de;
    --color-accent-700: #2e00a8;
    --color-accent-800: #1e0076;
    --color-accent-900: #0f004a;

    --color-accent-2-100: #fff3e5;
    --color-accent-2-200: #ffe4c5;
    --color-accent-2-300: #ffcf97;
    --color-accent-2-400: #ffb557;
    --color-accent-2-500: #f59e0b;
    --color-accent-2-600: #d68900;
    --color-accent-2-700: #9c6200;
    --color-accent-2-800: #955e00;
    --color-accent-2-900: #784b00;

    /* Indigo already clears 4.5:1 at 500, so fill sits two steps lighter than
       teal's; amber accent-2 only reaches AA at 700. */
    --color-accent-fill: var(--color-accent-500);
    --color-accent-fill-hover: var(--color-accent-600);
    --color-accent-fill-active: var(--color-accent-700);
    --color-accent-2-fill: var(--color-accent-2-700);
    --color-accent-2-fill-hover: var(--color-accent-2-800);
}

:root[data-palette="violet"] {
    --color-accent: #7c3aed;
    --color-accent-2: #ec4899;

    --color-accent-100: #cbbeff;
    --color-accent-200: #bba9ff;
    --color-accent-300: #a789ff;
    --color-accent-400: #9261ff;
    --color-accent-500: #7c3aed;
    --color-accent-600: #6900d8;
    --color-accent-700: #4f00a6;
    --color-accent-800: #380079;
    --color-accent-900: #220050;

    --color-accent-2-100: #ffe7ef;
    --color-accent-2-200: #ffccdf;
    --color-accent-2-300: #ffa6ca;
    --color-accent-2-400: #ff73b2;
    --color-accent-2-500: #ec4899;
    --color-accent-2-600: #d90083;
    --color-accent-2-700: #b1006a;
    --color-accent-2-800: #8b0052;
    --color-accent-2-900: #69003d;

    /* Violet already clears 4.5:1 at 500, like indigo; pink accent-2 gets there
       one step earlier than teal/indigo's amber-or-coral, at 600. */
    --color-accent-fill: var(--color-accent-500);
    --color-accent-fill-hover: var(--color-accent-600);
    --color-accent-fill-active: var(--color-accent-700);
    --color-accent-2-fill: var(--color-accent-2-600);
    --color-accent-2-fill-hover: var(--color-accent-2-700);
}

/* ──────────────────────────────────────────────────────────────────────────
   Base
   ────────────────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
/* Neutralise the browser's default fieldset box. The theme groups fields with
   headings, not <fieldset>, but plugins (the search_form / item custom-field hooks)
   wrap their fields in a bare <fieldset>, which would otherwise draw a stray border. */
fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
legend { padding: 0; }

body.sf {
    margin: 0;
    min-height: 100vh; min-height: 100dvh;
    display: flex; flex-direction: column;
    background: var(--color-bg);
    color: var(--color-text);
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 1.55;
    font-weight: 400;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: var(--font-heading-weight);
    line-height: 1.12;
    letter-spacing: -0.015em;
    margin: 0 0 var(--space-2);
}
h1 { font-size: 42px; }
h2 { font-size: 32px; }
h3 { font-size: 25px; }
h4 { font-size: 20px; }
h5 { font-size: 16px; }
h6 { font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; }
p { margin: 0 0 var(--space-3); }

/* Ink token, not the raw --color-accent: base teal only clears ~2.8:1 on the
   page ground, so text/links route through the mode-flipping ink step instead. */
a { color: var(--color-accent-ink); text-decoration: none; text-underline-offset: 3px; }
a:hover { color: var(--color-accent-ink); text-decoration: underline; }
img { display: block; max-width: 100%; height: auto; }

.text-muted, .sf-muted { color: var(--color-muted); }

:focus { outline: none; }
:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
::selection { background: color-mix(in srgb, var(--color-accent) 30%, transparent); }

.sf-container {
    width: 100%;
    max-width: var(--sf-container);
    margin-inline: auto;
    padding-inline: var(--space-6);
}

.sf-skip {
    position: absolute; left: -9999px; top: 0; z-index: 100;
    background: var(--color-text); color: var(--color-bg);
    padding: 10px 16px; font-family: var(--font-heading); font-weight: 800;
}
.sf-skip:focus { left: 8px; top: 8px; border-radius: var(--radius-md); }

/* ──────────────────────────────────────────────────────────────────────────
   Design-system components (available to every template)
   ────────────────────────────────────────────────────────────────────────── */
.btn, .sf-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    cursor: pointer; text-decoration: none; white-space: nowrap;
    font-family: var(--font-heading); font-weight: var(--font-heading-weight);
    font-size: 13px; line-height: 1.2; color: var(--color-text);
    background: transparent; border: 1px solid transparent;
    padding: calc(var(--space-2) * 0.85) var(--space-3);
    border-radius: var(--radius-md);
    transition: background .15s ease, color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .05s ease;
}
.btn svg, .sf-btn svg { display: block; }
.btn:hover, .sf-btn:hover { text-decoration: none; }
.btn:active, .sf-btn:active { transform: translateY(1px); }
.btn:disabled, .sf-btn:disabled { opacity: 0.45; cursor: not-allowed; }

/* Fill token, not the raw --color-accent: base teal (500) only clears ~2.8:1
   against the white label, so the AA-safe step (see --color-accent-fill above)
   is used instead. */
.btn-primary, .sf-btn--primary { background: var(--color-accent-fill); color: var(--color-fixed-light); }
.btn-primary:hover, .sf-btn--primary:hover { background: var(--color-accent-fill-hover); color: var(--color-fixed-light); }
.btn-primary:active, .sf-btn--primary:active { background: var(--color-accent-fill-active); }

.btn-secondary, .sf-btn--ghost, .sf-btn--secondary { color: var(--color-text); border-color: var(--color-divider); }
.btn-secondary:hover, .sf-btn--ghost:hover, .sf-btn--secondary:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); border-color: var(--color-divider); color: var(--color-text); }
.btn-secondary:active, .sf-btn--ghost:active, .sf-btn--secondary:active { background: color-mix(in srgb, var(--color-text) 14%, transparent); }

/* Fill token, not the raw --color-accent-2: base coral/amber/pink (500) fails AA
   against the white label in every palette (see --color-accent-2-fill above). */
.btn-accent, .sf-btn--accent { background: var(--color-accent-2-fill); color: var(--color-fixed-light); }
.btn-accent:hover, .sf-btn--accent:hover { background: var(--color-accent-2-fill-hover); color: var(--color-fixed-light); }

/* Solid destructive button — the confirm dialog's primary action. Uses the darker
   accent-2-700 fill so the white label clears AA (≈5.2:1); the -600 tint fails it. */
.sf-btn--danger { background: var(--color-accent-2-700); color: var(--color-fixed-light); border-color: transparent; }
.sf-btn--danger:hover { background: var(--color-accent-2-800); border-color: transparent; color: var(--color-fixed-light); }

.btn-ghost { color: var(--color-accent-ink); padding-inline: var(--space-1); }
.btn-ghost:hover { background: color-mix(in srgb, var(--color-accent) 10%, transparent); }

/* Touch targets: on a coarse pointer every button clears the 44px WCAG 2.5.5 size
   (the resting look stays denser on mouse/trackpad), and breadcrumb text links get a
   comfortable hit height without bloating the row. */
@media (pointer: coarse) {
    .btn, .sf-btn { min-height: 44px; }
    .btn-icon, .sf-btn--icon-only { width: 44px; height: 44px; }
    .sf-crumbs a { display: inline-flex; align-items: center; min-height: 32px; }
}

.btn-icon, .sf-btn--icon-only { width: 34px; height: 34px; padding: 0; flex: none; }
.btn-block, .sf-btn--block { width: 100%; }
.sf-btn--sm { font-size: 12px; padding: 4px var(--space-2); }

/* A form's own action buttons match its 40px fields. */
@media not (pointer: coarse) {
    .sf-form .sf-btn[type=submit], .sf-comment-form .sf-btn[type=submit], .sf-dialog__actions .sf-btn { min-height: 40px; }
}

/* Screen-reader-only utility: keeps a label in the accessibility tree without
   occupying layout (used by icon-only controls and the price/keyword fields). */
.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;
}

/* Forms */
.field > label, .sf-field > label, .sf-field label:not(.sf-check) {
    display: block; font-size: 13px; margin-bottom: 5px;
    color: var(--color-muted);
    font-weight: 600;
}
.input, .sf-input, .sf-textarea, .sf-select,
.sf-field input[type="text"], .sf-field input[type="email"],
.sf-field input[type="password"], .sf-field input[type="tel"],
.sf-field input[type="url"], .sf-field input[type="number"],
.sf-field textarea, .sf-field select {
    width: 100%; min-height: 40px; padding: 8px 10px; font: inherit;
    font-size: 14px; color: var(--color-text); caret-color: var(--color-accent);
    background: var(--color-surface);
    border: 1px solid var(--color-divider); border-radius: var(--radius-md);
    transition: border-color .15s ease, box-shadow .15s ease;
}
.input:hover, .sf-input:hover, .sf-textarea:hover, .sf-select:hover,
.sf-field input:hover, .sf-field textarea:hover, .sf-field select:hover {
    border-color: color-mix(in srgb, var(--color-text) 45%, transparent);
}
.input:focus, .input:focus-visible, .sf-input:focus, .sf-textarea:focus, .sf-select:focus,
.sf-field input:focus, .sf-field textarea:focus, .sf-field select:focus {
    border-color: var(--color-accent); outline: none;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent) 30%, transparent);
    position: relative; z-index: 1;
}
textarea.input, .sf-textarea, .sf-field textarea { min-height: 96px; resize: vertical; }
select.sf-select, .sf-field select { cursor: pointer; }

.sf-field { margin-bottom: var(--space-4); }
.sf-field--check label, .sf-check {
    display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
    font-size: 14px; font-weight: 400; color: var(--color-text); margin: 0;
}
.sf-field--check input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--color-accent); }
.sf-field__hint { margin: var(--space-1) 0 0; font-size: 13px; line-height: 1.45; color: var(--color-muted); }
.sf-field input[type="file"] { max-width: 100%; font: inherit; font-size: 13px; color: var(--color-muted); }
.sf-field input[type="file"]::file-selector-button {
    margin-inline-end: var(--space-3); padding: 6px var(--space-3); cursor: pointer;
    font-family: var(--font-heading); font-weight: 800; font-size: 13px; color: var(--color-text);
    background: transparent; border: 1px solid var(--color-divider); border-radius: var(--radius-md);
    transition: background .15s ease;
}
.sf-field input[type="file"]::file-selector-button:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); }

/* Cards (generic surface) */
.card {
    display: flex; flex-direction: column; gap: var(--space-2);
    padding: var(--space-3); border-radius: var(--radius-md); background: var(--color-surface);
    box-shadow: var(--shadow-sm);
}
.elev-sm { box-shadow: var(--shadow-sm); }
.elev-md { box-shadow: var(--shadow-md); }
.elev-lg { box-shadow: var(--shadow-lg); }

/* Tags */
.tag {
    display: inline-flex; align-items: center; font-size: 11px;
    letter-spacing: 0.02em; padding: 3px 10px;
    border-radius: calc(var(--radius-md) * 0.75); font-weight: 600;
}
.tag-accent { background: var(--color-accent-100); color: var(--color-accent-800); }
.tag-accent-2 { background: var(--color-accent-2-100); color: var(--color-accent-2-800); }
.tag-neutral { background: var(--color-neutral-100); color: var(--color-neutral-800); }
.tag-outline { border: 1px solid var(--color-accent); color: var(--color-accent-ink); }

/* Tables */
.table {
    width: 100%; border-collapse: collapse; font-size: 14px;
}
.table th {
    text-align: left; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
    color: var(--color-muted);
    padding: var(--space-2); border-bottom: 2px solid var(--color-divider);
}
.table td { padding: var(--space-2); border-bottom: 1px solid var(--color-divider); }
.table tbody tr:hover { background: color-mix(in srgb, var(--color-text) 4%, transparent); }

/* Rule */
.hr, .sf-hr { height: 2px; border: 0; margin: var(--space-4) 0; background: var(--color-divider); }

/* Panel */
.sf-panel {
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-lg); padding: var(--space-6); box-shadow: var(--shadow-sm);
}

/* ──────────────────────────────────────────────────────────────────────────
   Header / navigation
   ────────────────────────────────────────────────────────────────────────── */
.sf-header {
    position: sticky; top: 0; z-index: 40;
    background: color-mix(in srgb, var(--color-bg) 85%, transparent);
    backdrop-filter: blur(10px) saturate(1.3);
    -webkit-backdrop-filter: blur(10px) saturate(1.3);
    border-bottom: 2px solid var(--color-divider);
}
.sf-header__bar { display: flex; align-items: center; gap: var(--space-4); min-height: var(--sf-header-h); }

.sf-logo {
    display: inline-flex; align-items: center; gap: 8px; margin-right: var(--space-4);
    font-family: var(--font-heading); font-weight: 800; font-size: 20px;
    color: var(--color-text); letter-spacing: -0.02em;
}
.sf-logo:hover { text-decoration: none; color: var(--color-text); }
.sf-logo::before {
    content: ""; width: 14px; height: 14px; flex: none;
    background: var(--color-accent); display: inline-block;
}
.sf-logo img { max-height: 34px; width: auto; }
/* An inline SVG logo (viewBox only, no width/height attrs) has no intrinsic size,
   so a definite height is needed for the width to resolve from the aspect ratio —
   max-height alone computes to 0×0. max-width guards an over-wide wordmark SVG. */
.sf-logo svg { height: 34px; width: auto; max-width: 220px; }
/* Hide the wordmark's brand bullet whenever a real logo is present — an uploaded
   raster (img) or an inline SVG mark. The ::before square is only the fallback mark
   for the plain-text wordmark. */
.sf-logo:has(.sf-logo__mark)::before,
.sf-logo:has(img)::before { display: none; }
.sf-wordmark { letter-spacing: -0.02em; }

/* Compact logo mark — hidden by default; the header's mobile breakpoint below swaps it in
   for the full mark. Only rendered as its own element when a compact upload/SVG is set —
   otherwise the full mark stands in for it and just keeps showing at every width. */
.sf-logo__mark--compact { display: none; }

/* The brand SVG paints its ink parts in fixed navy, which vanishes on the dark ground. */
:root[data-theme="dark"] .sf-logo svg [fill="#0f2742" i] { fill: var(--color-text); }
:root[data-theme="dark"] .sf-logo svg [stroke="#0f2742" i] { stroke: var(--color-text); }
@media (prefers-color-scheme: dark) {
    :root[data-theme="auto"] .sf-logo svg [fill="#0f2742" i] { fill: var(--color-text); }
    :root[data-theme="auto"] .sf-logo svg [stroke="#0f2742" i] { stroke: var(--color-text); }
}

.sf-nav { display: flex; align-items: center; gap: var(--space-4); margin-inline-start: auto; }
.sf-nav__link {
    color: color-mix(in srgb, var(--color-text) 78%, transparent);
    font-size: 14px; font-weight: 600;
}
.sf-nav__link:hover { color: var(--color-accent-ink); text-decoration: none; }
.sf-nav__cta { margin-inline-start: var(--space-1); }

.sf-nav-toggle {
    display: none; margin-inline-start: auto; background: none; border: 0; cursor: pointer;
    width: 44px; height: 44px; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
}
.sf-nav-toggle span { display: block; width: 22px; height: 2px; background: var(--color-text); border-radius: 2px; }

/* Active nav item — a short teal underline so the current section is visible, not
   only announced via aria-current. */
.sf-nav__link { position: relative; }
.sf-nav__link[aria-current] { color: var(--color-accent-ink); }
.sf-nav__link[aria-current]::after {
    content: ""; position: absolute; inset-inline: 0; bottom: -6px; height: 2px;
    background: var(--color-accent); border-radius: 2px;
}

/* Account menu — one avatar+name control that opens a dropdown (desktop) or shows its
   items inline inside the mobile drawer. Replaces the old redundant icon+greeting pair. */
.sf-account { position: relative; }
.sf-account__toggle {
    display: inline-flex; align-items: center; gap: var(--space-2);
    min-height: 40px; padding: 4px 6px 4px 4px; margin-inline-start: var(--space-1);
    background: none; border: 0; border-radius: var(--radius-md);
    font: inherit; color: var(--color-text); cursor: pointer;
    transition: background-color .15s ease;
}
.sf-account__toggle:hover { background: color-mix(in srgb, var(--color-text) 6%, transparent); }
/* Higher specificity than the 60px .sf-avatar base so the header control stays compact. */
.sf-account__toggle .sf-account__avatar { width: 30px; height: 30px; border-radius: var(--radius-sm); box-shadow: none; }
.sf-account__toggle .sf-avatar__monogram { font-size: 12px; font-weight: 800; }
.sf-account__name { font-size: 14px; font-weight: 600; max-width: 14ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sf-account__toggle > svg { color: var(--color-muted); transition: transform .15s ease; flex: none; }
.sf-account__toggle[aria-expanded="true"] > svg { transform: rotate(180deg); }

.sf-account__menu {
    position: absolute; inset-inline-end: 0; top: calc(100% + 8px); z-index: 60;
    min-width: 210px; padding: var(--space-1);
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-lg);
    display: flex; flex-direction: column;
}
/* `display: flex` above would otherwise beat the UA `[hidden]{display:none}` (equal
   specificity, author wins), leaving the menu open on load; keep it closed until the
   toggle clears [hidden]. The mobile drawer re-shows it inline in its own rule below. */
.sf-account__menu[hidden] { display: none; }
.sf-account__item {
    display: flex; align-items: center; gap: var(--space-2);
    min-height: 40px; padding: 9px var(--space-3); border-radius: var(--radius-md);
    font-size: 14px; font-weight: 600; color: var(--color-text); text-decoration: none;
}
.sf-account__item:hover {
    background: color-mix(in srgb, var(--color-accent) 10%, transparent);
    color: var(--color-accent-ink); text-decoration: none;
}
.sf-account__item svg { flex: none; color: currentColor; }
.sf-account__sep { height: 1px; margin: var(--space-1) 0; border: 0; background: var(--color-divider); }
.sf-account__item--logout { color: var(--color-accent-2-ink); }
.sf-account__item--logout:hover {
    background: color-mix(in srgb, var(--color-accent-2) 12%, transparent); color: var(--color-accent-2-ink);
}
@media (prefers-reduced-motion: no-preference) {
    .sf-account__menu:not([hidden]) { animation: sf-menu-in .16s cubic-bezier(0.16, 1, 0.3, 1); }
}
@keyframes sf-menu-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }

/* Scrim behind the open mobile nav drawer. Gated by the [hidden] attribute (JS
   toggles it), so it never shows on desktop where the drawer cannot open. */
.sf-nav-backdrop {
    position: fixed; inset: 0; top: var(--sf-header-h); z-index: 30;
    background: var(--color-scrim);
}

/* Compact inline search box (used on the 404 page). NB: the bare class must not
   be `.sf-search` — that collides with the `sf-search` body page-class. */
.sf-searchbox {
    display: flex; gap: 0; align-items: stretch;
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm);
}
.sf-search__input {
    flex: 1 1 auto; min-width: 0; border: 0; background: transparent; color: var(--color-text);
    font: inherit; font-size: 15px; padding: 12px 14px;
}
.sf-search__input:focus { outline: none; }
.sf-searchbox .sf-btn { border-radius: 0; padding-inline: var(--space-6); }

/* ──────────────────────────────────────────────────────────────────────────
   Main
   ────────────────────────────────────────────────────────────────────────── */
.sf-main { display: block; flex: 1 0 auto; }
body.sf > * { flex-shrink: 0; }
.sf-main__pad { padding-block: var(--space-6) var(--space-8); }

/* ── Home hero ── */
.sf-hero {
    position: relative; overflow: hidden;
    border-bottom: 2px solid var(--color-divider);
    /* The home hero is a brand surface: a bright teal/coral field lifts it off the
       sand ground so it reads as the peak of the page, not another section. */
    background:
        radial-gradient(115% 120% at 86% -12%, color-mix(in srgb, var(--color-accent) 24%, transparent), transparent 56%),
        radial-gradient(92% 100% at -8% 118%, color-mix(in srgb, var(--color-accent-2) 15%, transparent), transparent 55%),
        var(--color-bg);
}
.sf-hero__inner { position: relative; z-index: 1; padding-block: clamp(var(--space-8), 8vw, 88px); }
/* Content sits in a left column so the full-width search row never runs under the
   brand motif; the motif breathes in the right whitespace, behind the content. */
.sf-hero__content { position: relative; z-index: 1; max-width: 800px; }
.sf-hero__title {
    font-size: clamp(46px, 7.4vw, 78px); line-height: 1.0; margin: 0 0 var(--space-4);
    max-width: 16ch; letter-spacing: -0.03em; text-wrap: balance;
}
.sf-hero__sub {
    color: color-mix(in srgb, var(--color-text) 72%, transparent);
    max-width: 52ch; font-size: clamp(16px, 1.5vw, 19px);
    margin-bottom: var(--space-6); text-wrap: pretty;
}

.sf-hero__decor {
    position: absolute; top: 0; right: 0; z-index: 0; width: min(40%, 440px); height: auto;
    pointer-events: none; opacity: 0.95;
    filter: drop-shadow(0 16px 34px color-mix(in srgb, var(--color-accent) 24%, transparent));
}
@media (max-width: 860px) { .sf-hero__decor { display: none; } }

/* Hero entrance — one authored moment. Content elements rise into place with
   transform only, never opacity, so they stay fully visible even when a headless
   renderer or hidden tab captures the frame mid-animation. Only the decorative,
   aria-hidden motif fades in. The global reduced-motion rule collapses these. */
@keyframes sf-hero-rise { from { transform: translateY(18px); } to { transform: none; } }
@keyframes sf-hero-pop  { from { transform: scale(.92) rotate(-2deg); } to { transform: none; } }
.sf-hero__title   { animation: sf-hero-rise .6s cubic-bezier(.22, 1, .36, 1) both; }
.sf-hero__sub     { animation: sf-hero-rise .6s cubic-bezier(.22, 1, .36, 1) .05s both; }
.sf-hero__glass   { animation: sf-hero-rise .7s cubic-bezier(.22, 1, .36, 1) .1s both; }
.sf-hero__popular { animation: sf-hero-rise .6s cubic-bezier(.22, 1, .36, 1) .16s both; }
.sf-hero__decor   { animation: sf-hero-pop  .9s cubic-bezier(.22, 1, .36, 1) .05s both; }

.sf-hero__glass {
    width: 100%; padding: var(--space-3); border-radius: 16px;
    background: color-mix(in srgb, var(--color-bg) 55%, transparent);
    backdrop-filter: blur(16px) saturate(1.4); -webkit-backdrop-filter: blur(16px) saturate(1.4);
    border: 1px solid color-mix(in srgb, var(--color-fixed-light) 55%, transparent);
    box-shadow: var(--shadow-lg);
}
.sf-hero__search {
    display: flex; flex-wrap: nowrap; gap: 0;
    border: 1px solid var(--color-divider); border-radius: 10px; overflow: hidden;
    box-shadow: var(--shadow-sm); background: var(--color-bg);
}
.sf-hero__search .sf-hero__field { flex: 1 1 300px; min-width: 0; display: flex; align-items: center; gap: 10px; padding: 0 14px; }
.sf-hero__search .sf-hero__field + .sf-hero__field { flex: 1 1 180px; border-inline-start: 1px solid var(--color-divider); }
.sf-hero__search input, .sf-hero__search select {
    border: 0; background: transparent; font: inherit; font-size: 15px;
    height: 54px; color: var(--color-text); flex: 1; min-width: 0;
}
.sf-hero__search input:focus, .sf-hero__search select:focus { outline: none; }
.sf-hero__search .sf-hero__cat { flex: 0 0 auto; display: flex; align-items: center; border-inline-start: 1px solid var(--color-divider); }
.sf-hero__search .sf-hero__cat select { height: 54px; padding: 0 14px; cursor: pointer; font-size: 14px; }
.sf-hero__search .sf-btn { border-radius: 0; padding-inline: var(--space-6); font-size: 14px; white-space: nowrap; }
.sf-hero__icon { flex: none; color: var(--color-neutral-600); }

.sf-hero__popular { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-4); align-items: center; }
.sf-hero__popular > span { font-size: 12px; color: var(--color-muted); }
.sf-hero__chip {
    display: inline-flex; align-items: center; padding: 3px 10px;
    border-radius: calc(var(--radius-md) * 0.75); border: 0;
    background: var(--color-neutral-100); color: var(--color-neutral-800);
    font: inherit; font-size: 12px; transition: background .15s ease, color .15s ease;
}
.sf-hero__chip:hover { background: var(--color-accent-100); color: var(--color-accent-800); text-decoration: none; }

@media (max-width: 640px) {
    .sf-hero__search { flex-direction: column; }
    .sf-hero__search > * { border-inline-start: 0 !important; border-top: 1px solid var(--color-divider); }
    .sf-hero__search > *:first-child { border-top: 0; }
    /* Stacked: each control takes its natural height, so the horizontal flex-basis
       (300/180px) never inflates a field vertically. Matches the base rules'
       specificity so it wins inside the query. */
    .sf-hero__search .sf-hero__field,
    .sf-hero__search .sf-hero__field + .sf-hero__field,
    .sf-hero__search .sf-hero__cat { flex: 0 0 auto; }
    .sf-hero__search .sf-btn { width: 100%; padding: 14px 20px; }
}

/* 2026-10-23: Exposé v5. The image mosaic is the visual header across the
   complete detail container. Only the content below it splits into reading
   column and contact rail. */
@media (min-width: 1121px) {
    .sf-detail__grid {
        grid-template-columns: minmax(0, 824px) minmax(320px, 360px);
        grid-template-areas:
            "media media"
            "intro aside"
            "body aside";
        row-gap: 26px;
    }
    .sf-detail__media { width: 100%; }
    .sf-gallery--mosaic {
        grid-template-columns: minmax(0, 1.95fr) minmax(330px, .95fr);
        height: clamp(520px, 45vw, 620px);
    }
    .sf-gallery--mosaic .sf-gallery__thumbs { min-width: 0; }
    .sf-detail__aside { align-self: start; }
}

/* B2B acquisition pages: one visual and data contract for partners, media and pricing. */
.wa-b2b-page{color:#102a43;background:#fff}.wa-page-eyebrow{margin:0 0 9px;color:#08766f;font-size:12px;font-weight:850;letter-spacing:.11em;text-transform:uppercase}.wa-b2b-hero{padding:72px 0;background:linear-gradient(135deg,#edf9f7 0%,#fff 55%,#edf3f8 100%);border-bottom:1px solid #dce7e9}.wa-b2b-hero--ads{background:linear-gradient(135deg,#eef8f6 0%,#fff6ef 100%)}.wa-b2b-hero__grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:60px;align-items:center}.wa-b2b-hero h1{max-width:820px;margin:0;font-size:clamp(42px,5vw,68px);line-height:1.01;letter-spacing:-.045em;text-wrap:balance}.wa-b2b-hero__lead{max-width:760px;margin:22px 0 0;color:#4f6578;font-size:18px;line-height:1.65}.wa-b2b-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.wa-b2b-actions .sf-btn{min-height:52px;padding-inline:22px}.wa-b2b-proof{display:flex;flex-wrap:wrap;gap:10px 24px;margin:25px 0 0;padding:0;list-style:none;color:#405d70;font-size:13px;font-weight:700}.wa-b2b-proof li:before{content:'✓';margin-right:7px;color:#08766f}.wa-b2b-promo{padding:30px;border-radius:22px;background:#102f49;color:#fff;box-shadow:0 22px 52px rgba(13,43,69,.18)}.wa-b2b-promo>span{color:#79eadf;font-size:11px;font-weight:850;letter-spacing:.11em;text-transform:uppercase}.wa-b2b-promo>strong{display:block;margin:10px 0;font-size:30px;line-height:1.1}.wa-b2b-promo p{margin:0;color:#d6e4eb;line-height:1.6}.wa-b2b-promo a{display:inline-block;margin-top:20px;color:#fff;font-weight:800}.wa-b2b-section{padding:72px 0}.wa-b2b-section--soft{background:#f3f7f8}.wa-b2b-heading{max-width:820px;margin-bottom:30px}.wa-b2b-heading h2{margin:0;font-size:clamp(30px,4vw,48px);line-height:1.08;letter-spacing:-.035em}.wa-b2b-heading>p:last-child{margin:12px 0 0;color:#52687a;line-height:1.65}.wa-b2b-plans,.wa-ad-products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.wa-b2b-plans>article,.wa-ad-products>article{position:relative;display:flex;flex-direction:column;padding:30px;border:1px solid #d9e4e8;border-radius:20px;background:#fff;box-shadow:0 12px 34px rgba(15,42,67,.07)}.wa-b2b-plans>article.is-featured,.wa-ad-products>article.is-featured{border:2px solid #26b8ad;box-shadow:0 18px 45px rgba(9,118,111,.14)}.wa-b2b-plan__top{display:flex;align-items:center;justify-content:space-between;gap:16px}.wa-b2b-plan__top span,.wa-ad-products>article>span{padding:6px 10px;border-radius:999px;background:#e2f6f3;color:#08766f;font-size:11px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.wa-b2b-plan__top b{color:#617587;font-size:12px}.wa-b2b-plans h3,.wa-ad-products h3{margin:17px 0 7px;font-size:25px}.wa-b2b-plan__price{display:grid;gap:3px;margin:10px 0}.wa-b2b-plan__price strong,.wa-ad-products>article>strong{color:#08766f;font-size:31px}.wa-b2b-plan__price small{color:#607589}.wa-b2b-plans ul,.wa-ad-products ul{flex:1;padding-left:20px;color:#314a60;line-height:1.75}.wa-b2b-plans li::marker,.wa-ad-products li::marker{color:#21a99e}.wa-b2b-plans>article>a{display:block;margin-top:18px;padding:13px 15px;border-radius:10px;background:#08766f;color:#fff;text-align:center;text-decoration:none;font-weight:850}.wa-b2b-compare{margin-top:24px;overflow-x:auto;border:1px solid #d8e3e7;border-radius:17px}.wa-b2b-compare table{width:100%;min-width:620px;border-collapse:collapse;background:#fff}.wa-b2b-compare th,.wa-b2b-compare td{padding:14px 18px;border-bottom:1px solid #e4eaed;text-align:left}.wa-b2b-compare thead th{background:#102f49;color:#fff}.wa-b2b-compare tbody th{color:#173b52}.wa-b2b-compare td{color:#52677b}.wa-b2b-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px}.wa-b2b-steps article{padding:24px;border:1px solid #dae5e8;border-radius:17px;background:#fff}.wa-b2b-steps article>span{display:grid;place-items:center;width:40px;height:40px;margin-bottom:22px;border-radius:12px;background:#dff5f1;color:#08766f;font-weight:900}.wa-b2b-steps h3{margin:0 0 8px;font-size:18px}.wa-b2b-steps p{margin:0;color:#5d7384;font-size:13px;line-height:1.6}.wa-ad-products{grid-template-columns:repeat(4,minmax(0,1fr))}.wa-ad-products>article{padding:25px}.wa-ad-products>article>p{color:#5c7182;line-height:1.58}.wa-ad-products>article>strong{font-size:22px}.wa-ad-specs{display:grid;grid-template-columns:minmax(0,1fr) minmax(380px,.8fr);gap:55px;align-items:center}.wa-ad-specs h2{margin:0;font-size:clamp(30px,4vw,47px);line-height:1.08}.wa-ad-specs>div>p:last-child{color:#52677b;line-height:1.65}.wa-ad-specs__cards{display:grid;gap:14px}.wa-ad-specs__cards article{padding:22px;border:1px solid #d8e4e7;border-radius:16px;background:#fff}.wa-ad-specs__cards span,.wa-ad-specs__cards strong{display:block}.wa-ad-specs__cards span{color:#08766f;font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.09em}.wa-ad-specs__cards strong{margin:7px 0;font-size:18px}.wa-ad-specs__cards p{margin:0;color:#607589;font-size:13px}.wa-b2b-lead-wrap{padding-block:74px}.wa-lead-card{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr);gap:48px;padding:38px;border:1px solid #d7e4e6;border-radius:24px;background:linear-gradient(135deg,#f1faf8,#fff 42%);box-shadow:0 18px 50px rgba(15,42,67,.08);scroll-margin-top:95px}.wa-lead-card__intro h2{margin:0;font-size:clamp(28px,3.4vw,42px);line-height:1.1}.wa-lead-card__intro>p:not(.wa-page-eyebrow){color:#52677b;line-height:1.65}.wa-lead-card__intro ul{padding-left:20px;color:#355366;line-height:1.75}.wa-lead-form{position:relative;padding:26px;border:1px solid #dce6e9;border-radius:18px;background:#fff}.wa-lead-form__honeypot{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;overflow:hidden!important}.wa-lead-form__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.wa-lead-form label>span{display:block;margin-bottom:6px;color:#173b52;font-size:12px;font-weight:800}.wa-lead-form input,.wa-lead-form select,.wa-lead-form textarea{width:100%;min-height:47px;border:1px solid #b9c8d2;border-radius:9px;padding:10px 12px;background:#fff;color:#102a43;font:inherit}.wa-lead-form textarea{min-height:120px;resize:vertical}.wa-lead-form input:focus,.wa-lead-form select:focus,.wa-lead-form textarea:focus{outline:2px solid #54cec4;outline-offset:1px;border-color:#08766f}.wa-lead-form__wide{grid-column:1/-1}.wa-lead-form__consent{display:flex;align-items:flex-start;gap:9px;margin:18px 0;color:#52677b;font-size:12px;line-height:1.5}.wa-lead-form__consent input{width:16px;min-height:16px;margin-top:2px;flex:none}.wa-lead-form>.sf-btn{width:100%;min-height:50px}.wa-lead-form__note{margin:9px 0 0;color:#6a7e8e;font-size:11px;text-align:center}.wa-b2b-faq{padding:70px 0;background:#102f49;color:#fff}.wa-b2b-faq .wa-page-eyebrow{color:#79eadf}.wa-b2b-faq h2{color:#fff}.wa-b2b-faq__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.wa-b2b-faq details{padding:20px 22px;border:1px solid rgba(255,255,255,.17);border-radius:14px;background:rgba(255,255,255,.06)}.wa-b2b-faq summary{cursor:pointer;font-weight:800}.wa-b2b-faq details p{margin:13px 0 0;color:#d5e3ea;font-size:13px;line-height:1.65}
@media(max-width:1080px){.wa-b2b-hero{padding:54px 0}.wa-b2b-hero__grid{grid-template-columns:minmax(0,1fr) 330px;gap:30px}.wa-ad-products{grid-template-columns:repeat(2,minmax(0,1fr))}.wa-b2b-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.wa-lead-card{grid-template-columns:1fr;gap:26px}.wa-ad-specs{grid-template-columns:1fr}.wa-footer-action__inner{min-height:0;align-items:flex-start;flex-direction:column;padding-block:38px}.wa-footer-action__buttons{width:100%}}
@media(max-width:820px){.wa-b2b-hero__grid{grid-template-columns:1fr}.wa-b2b-promo{max-width:none}.wa-b2b-plans{grid-template-columns:1fr}.wa-b2b-hero h1{font-size:clamp(36px,7vw,52px)}.wa-b2b-section{padding:54px 0}.wa-b2b-lead-wrap{padding-block:54px}.wa-lead-card{padding:28px}.sf-footer__intro{align-items:flex-start}.sf-footer__trust{display:flex;flex-wrap:wrap;gap:6px 12px;text-align:left}.sf-footer__trust svg{flex:none}}
@media(max-width:620px){.wa-b2b-hero{padding:40px 0}.wa-b2b-actions{flex-direction:column}.wa-b2b-actions .sf-btn{width:100%;justify-content:center}.wa-b2b-proof{display:grid;gap:8px}.wa-b2b-plans,.wa-ad-products,.wa-b2b-steps,.wa-b2b-faq__grid{grid-template-columns:1fr}.wa-b2b-plan__top{align-items:flex-start;flex-direction:column}.wa-lead-card{margin-inline:0;padding:22px 16px;border-radius:18px}.wa-lead-form{padding:18px 14px}.wa-lead-form__grid{grid-template-columns:1fr}.wa-lead-form__wide{grid-column:auto}.wa-ad-specs__cards{grid-template-columns:1fr}}
.wa-ad-booking{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:28px;border:1px solid #d7e4e8;border-radius:20px;background:#f7fafb;box-shadow:0 14px 38px rgba(15,42,67,.08)}.wa-ad-booking label{display:grid;gap:7px;color:#173b52;font-size:13px;font-weight:800}.wa-ad-booking input,.wa-ad-booking select{min-width:0;width:100%;box-sizing:border-box;min-height:48px;padding:11px 12px;border:1px solid #b8c9d1;border-radius:9px;background:#fff;color:#102a43;font:inherit}.wa-ad-booking button{grid-column:1/-1;min-height:50px;border:0;border-radius:10px;background:#08766f;color:#fff;font-weight:850;font-size:1rem;cursor:pointer}.wa-ad-booking button:disabled{opacity:.55;cursor:wait}.wa-ad-booking [role=alert]{grid-column:1/-1;margin:0;padding:12px;border-radius:9px;background:#fff0eb;color:#8c3215}.wa-ad-booking-login{padding:28px;border:1px solid #d7e4e8;border-radius:20px;background:#f4f8f9}.wa-ad-booking-login h3{margin-top:0}.wa-ad-booking-login p{max-width:760px;color:#52677b;line-height:1.6}@media(max-width:820px){.wa-ad-booking{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.wa-ad-booking{grid-template-columns:1fr;padding:20px 16px}.wa-ad-booking button,.wa-ad-booking [role=alert]{grid-column:1}}

/* Homepage: search is the primary action; provider entry points are separate. */
.wa-home-paths{padding:34px 0 42px;background:#fff;border-bottom:1px solid #e1e8eb}.wa-home-paths__head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px 30px;margin-bottom:20px}.wa-home-paths__head .wa-hero__eyebrow{grid-column:1/-1;color:#08766f}.wa-home-paths__head h2{max-width:720px;margin:0;color:#102f49;font-size:clamp(25px,3vw,36px);line-height:1.12}.wa-home-paths__head>a{color:#08766f;font-weight:800}.wa-home-paths__grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.wa-home-paths__grid>a{display:grid;gap:5px;padding:22px 24px;border:1px solid #d9e4e8;border-radius:16px;background:#f8fbfc;color:#102f49;text-decoration:none;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.wa-home-paths__grid>a:hover{transform:translateY(-2px);border-color:#8ccfc8;box-shadow:0 12px 30px rgba(15,42,67,.08)}.wa-home-paths__grid span{color:#08766f;font-size:11px;font-weight:850;letter-spacing:.09em;text-transform:uppercase}.wa-home-paths__grid strong{font-size:20px}.wa-home-paths__grid small{color:#52677b;font-size:13px;line-height:1.45}

/* Publishing choice and professional launch programme. */
.wa-sell-paths{scroll-margin-top:100px}.wa-sell-pathgrid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:24px}.wa-sell-path{display:flex;flex-direction:column;padding:30px;border:1px solid #d9e4e8;border-radius:20px;background:#fff;box-shadow:0 12px 34px rgba(15,42,67,.07)}.wa-sell-path--business{border-color:#8dd4cd;background:linear-gradient(145deg,#fff,#edf9f7)}.wa-sell-path>span{width:max-content;padding:5px 9px;border-radius:999px;background:#e8f5f3;color:#08766f;font-size:11px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.wa-sell-path h3{margin:14px 0 8px;color:#102f49;font-size:25px}.wa-sell-path p{color:#52677b;line-height:1.6}.wa-sell-path>strong{margin:8px 0;color:#08766f;font-size:22px}.wa-sell-path ul{flex:1;padding-left:20px;color:#314a60;line-height:1.7}.wa-sell-path .sf-btn{margin-top:14px}.wa-sell-path__compare{margin-top:12px;color:#08766f;text-align:center;font-size:13px;font-weight:800}
.wa-partner-page{color:#102f49}.wa-partner-hero{padding:38px 0;background:linear-gradient(135deg,#eef9f7,#fff)}.wa-partner-hero__grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:42px;align-items:center}.wa-partner-hero h1{max-width:760px;margin:7px 0 16px;font-size:clamp(36px,5vw,60px);line-height:1.02;letter-spacing:-.035em}.wa-partner-hero>div>div>p:not(.wa-publish-eyebrow){max-width:760px;color:#40596e;font-size:17px;line-height:1.65}.wa-partner-hero aside{padding:26px;border-radius:18px;background:#102f49;color:#fff;box-shadow:0 18px 44px rgba(15,42,67,.16)}.wa-partner-hero aside span,.wa-partner-hero aside strong{display:block}.wa-partner-hero aside span{color:#79eadf;font-size:11px;font-weight:850;letter-spacing:.11em;text-transform:uppercase}.wa-partner-hero aside strong{margin:8px 0;font-size:28px}.wa-partner-hero aside p{margin:0;color:#d8e5ec;line-height:1.55}.wa-partner-section{padding:58px 0}.wa-partner-section--soft{background:#f4f8fa}.wa-partner-section h2{margin:6px 0 24px;font-size:clamp(28px,4vw,42px)}.wa-partner-plans{display:grid;grid-template-columns:1fr 1fr;gap:18px}.wa-partner-plans article{padding:28px;border:1px solid #d8e3e8;border-radius:18px;background:#fff;box-shadow:0 10px 30px rgba(15,42,67,.06)}.wa-partner-plans article.is-selected{border:2px solid #23b8ac;box-shadow:0 16px 38px rgba(11,118,111,.13)}.wa-partner-plans article>span{color:#08766f;font-size:12px;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.wa-partner-plans h3{margin:8px 0;font-size:25px}.wa-partner-plans p{margin:0;color:#607589}.wa-partner-plans>article>strong{display:block;margin:5px 0 14px;color:#08766f;font-size:30px}.wa-partner-plans ul{padding-left:20px;color:#314a60;line-height:1.75}.wa-partner-plans a{display:block;margin-top:18px;padding:13px;border-radius:9px;background:#08766f;color:#fff;text-align:center;text-decoration:none;font-weight:850}.wa-partner-section__note{max-width:850px;margin:22px 0 0;color:#52677b;line-height:1.6}
@media(max-width:760px){.wa-home-paths__head,.wa-home-paths__grid,.wa-sell-pathgrid,.wa-partner-hero__grid,.wa-partner-plans{grid-template-columns:1fr}.wa-home-paths__head>a{margin-top:8px}.wa-partner-hero{padding:28px 0}.wa-partner-hero__grid{gap:24px}.wa-sell-path{padding:22px}.wa-partner-section{padding:42px 0}}

/* ── Section wrapper ── */
.sf-section { border-bottom: 2px solid var(--color-divider); }
.sf-section > .sf-container { padding-block: var(--space-6); }
.sf-section:last-of-type { border-bottom: 0; }
.sf-section__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); margin-bottom: var(--space-4); }
.sf-section__title { font-size: 32px; margin: 0; }
.sf-section__aside { font-size: 13px; color: var(--color-muted); }
.sf-section__head > a { flex: none; white-space: nowrap; }
.sf-empty {
    color: var(--color-muted);
    padding: var(--space-8); text-align: center;
    border: 1px solid var(--color-divider); border-radius: var(--radius-lg);
}
.sf-empty > h4 { color: var(--color-text); }
.sf-more { text-align: center; margin-top: var(--space-6); }

/* ── Category grid ── */
/* Flex-wrap board: tiles grow to fill each row, so a partial final row never
   leaves empty cells for any category count. Hairlines are drawn by the tiles'
   inline-end/block-end borders against the board's inline-start/block-start edges. */
.sf-catgrid {
    display: flex; flex-wrap: wrap;
    background: var(--color-bg);
    border-inline-start: 1px solid var(--color-divider);
    border-block-start: 1px solid var(--color-divider);
    border-radius: var(--radius-md); overflow: hidden; box-shadow: var(--shadow-sm);
    list-style: none; margin: 0; padding: 0;
}
.sf-catgrid > li { flex: 1 1 200px; display: flex; }
.sf-catgrid__item {
    flex: 1; display: flex; flex-direction: column; gap: 6px;
    background: var(--color-bg); padding: var(--space-4); min-height: 118px;
    border-top: 3px solid var(--color-accent);
    border-inline-end: 1px solid var(--color-divider);
    border-block-end: 1px solid var(--color-divider);
    color: var(--color-text); transition: background .15s ease;
}
.sf-catgrid__item:hover { background: var(--color-neutral-100); text-decoration: none; color: var(--color-text); }
/* The tile hue is tuned for a border; mixing it toward the text colour keeps the number readable. */
.sf-catgrid__num { font-family: ui-monospace, monospace; font-size: 11px; color: color-mix(in srgb, var(--sf-hue, var(--color-accent)) 50%, var(--color-text)); }
.sf-catgrid__name { font-family: var(--font-heading); font-weight: 800; font-size: 18px; margin-top: auto; }
.sf-catgrid__count { font-size: 12px; color: var(--color-muted); }

/* Legacy category chips (used by 404) */
.sf-cats { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: var(--space-4) 0; padding: 0; list-style: none; }
.sf-cat-chip {
    display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px;
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-md); color: var(--color-text); font-weight: 600; font-size: 14px;
}
.sf-cat-chip:hover { border-color: var(--color-accent); color: var(--color-accent-ink); text-decoration: none; }
.sf-cat-chip__count { color: var(--color-muted); font-weight: 500; }

/* ──────────────────────────────────────────────────────────────────────────
   Listing cards (ListingCardModern)
   ────────────────────────────────────────────────────────────────────────── */
.sf-cards {
    list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-4);
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
}
.sf-card {
    position: relative; display: flex; flex-direction: column; height: 100%;
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm);
    transition: box-shadow .18s ease, transform .18s ease;
}
.sf-card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); }
.sf-card__media { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--color-neutral-200); }
/* Pin the image to the media box so it covers the exact space in every layout —
   the grid's 4:3 box and the list view's flex-stretched column alike. */
.sf-card__media img, .sf-card__noimg { position: absolute; inset: 0; width: 100%; height: 100%; }
.sf-card__media img { object-fit: cover; }
.sf-card__noimg {
    background: linear-gradient(135deg, var(--color-neutral-100), var(--color-neutral-300));
}
.sf-card__body { padding: var(--space-3); display: flex; flex-direction: column; gap: 6px; flex: 1; }
.sf-card__pricerow { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
/* Ink token, not hard-coded accent-700: on the dark surface that step only clears
   ~2.9:1, so the price would nearly vanish on a dark card. */
.sf-card__price { font-family: var(--font-heading); font-weight: 800; font-size: 16px; color: var(--color-accent-ink); letter-spacing: -0.01em; white-space: nowrap; }
/* Category badge, overlaid on the listing image (bottom-left) so it never crowds or
   truncates the price. A frosted light chip with fixed ink text stays legible over any
   photo and over the noimg gradient, in both themes; the Featured badge keeps top-left. */
.sf-card__cat {
    position: absolute; inset-block-end: 8px; inset-inline-start: 8px; z-index: 1;
    max-width: calc(100% - 16px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-size: 11px; font-weight: 600; padding: 3px 9px; border-radius: calc(var(--radius-md) * 0.75);
    background: color-mix(in srgb, var(--color-fixed-light) 88%, transparent); color: var(--color-fixed-ink);
    box-shadow: 0 1px 2px color-mix(in srgb, var(--color-fixed-ink) 25%, transparent);
    -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
}
.sf-card__title {
    display: block; font-family: var(--font-heading); font-weight: 800;
    font-size: 15px; line-height: 1.25; color: var(--color-text); margin: 0;
    text-wrap: pretty;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.sf-card__title:hover { color: var(--color-accent-ink); text-decoration: none; }
/* Description teaser: hidden in the grid, revealed in list view (below). */
.sf-card__desc { display: none; }
.sf-card__meta {
    margin-top: auto; display: flex; justify-content: space-between; align-items: center;
    gap: 8px; font-size: 11px; color: var(--color-neutral-700);
}
.sf-card__loc { display: inline-flex; align-items: center; gap: 4px; min-width: 0; }
.sf-card__loc span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sf-card__date { white-space: nowrap; }

/* Featured / urgent ribbon */
.sf-badge {
    position: absolute; top: 8px; inset-inline-start: 8px; z-index: 1;
    font-size: 11px; font-weight: 600; letter-spacing: 0.02em;
    padding: 3px 10px; border-radius: calc(var(--radius-md) * 0.75);
}
.sf-badge--featured { background: var(--color-accent-100); color: var(--color-accent-800); }
.sf-badge--urgent { background: var(--color-accent-2-100); color: var(--color-accent-2-800); }
.sf-card--featured { border-color: color-mix(in srgb, var(--color-accent) 40%, var(--color-divider)); }
/* Highlighted: a paid outline in the accent colour. */
.sf-card--highlight { border-color: var(--color-accent); box-shadow: 0 0 0 1px var(--color-accent), var(--shadow-sm); }

/* List view (search show-as=list): horizontal rows */
body.sf-list .sf-cards { grid-template-columns: 1fr; gap: var(--space-3); }
body.sf-list .sf-card { flex-direction: row; align-items: stretch; }
body.sf-list .sf-card:hover { transform: translateX(3px); }
body.sf-list .sf-card__media { flex: none; width: 190px; aspect-ratio: auto; }
body.sf-list .sf-card__body { padding: var(--space-4); }
body.sf-list .sf-card__title { font-size: 17px; -webkit-line-clamp: 1; }
body.sf-list .sf-card__desc {
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
    margin: 0; font-size: 13px; line-height: 1.5; color: var(--color-neutral-700);
}
@media (max-width: 620px) {
    body.sf-list .sf-card { flex-direction: column; }
    body.sf-list .sf-card__media { width: 100%; aspect-ratio: 4 / 3; }
    body.sf-list .sf-card__desc { -webkit-line-clamp: 2; }
}

/* ──────────────────────────────────────────────────────────────────────────
   Search page
   ────────────────────────────────────────────────────────────────────────── */
.sf-crumbs { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; color: var(--color-neutral-700); margin-bottom: var(--space-3); }
.sf-crumbs a { color: var(--color-neutral-700); }
.sf-crumbs a:hover { color: var(--color-accent-ink); }

.sf-searchlayout { display: flex; gap: var(--space-6); align-items: flex-start; }
/* Main column is first in the DOM so the results <h1> precedes the rail's
   sub-headings for a screen reader; order places the rail on the left visually. */
.sf-searchlayout__main { flex: 1; min-width: 0; order: 1; }
.sf-searchlayout__side {
    flex: 0 0 280px; min-width: 280px; order: 0;
    position: sticky; top: calc(var(--sf-header-h) + var(--space-4));
    /* Small inset so field focus rings clear the rail edges. */
    padding: var(--space-1) var(--space-2);
}

/* Filter rail */
.sf-filters__head {
    display: flex; align-items: center; gap: var(--space-2);
    padding-block: var(--space-2); border-bottom: 2px solid var(--color-divider); margin-bottom: var(--space-4);
}
.sf-filters__head h2 { margin: 0; margin-inline-end: auto; font-size: 14px; text-transform: uppercase; letter-spacing: 0.08em; }
.sf-filters__close { display: none; }

.sf-filters__group { padding-bottom: var(--space-4); margin-bottom: var(--space-4); border-bottom: 1px solid var(--color-divider); }
.sf-filters__group:last-of-type { border-bottom: 0; }
.sf-filters__label { margin: 0 0 var(--space-2); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; color: var(--color-text); }
.sf-filters .sf-field { margin-bottom: var(--space-3); }
.sf-filters .sf-field:last-child { margin-bottom: 0; }
/* Distance field: the markup is core's osc_search_distance_field(). */
.sf-distance .osc-distance { border: 0; margin: 0; padding: 0; min-width: 0; }
.sf-distance .osc-near-me {
    display: inline-flex; margin-top: var(--space-2); padding: 0; border: 0; background: none;
    font: inherit; font-size: 13px; font-weight: 600; color: var(--color-accent); cursor: pointer;
}
.sf-distance .osc-near-me:hover { text-decoration: underline; }
.sf-distance .osc-near-me:disabled { opacity: 0.6; cursor: progress; }
.sf-card__distance::before { content: "\00b7"; margin-inline-end: 4px; }

/* ──────────────────────────────────────────────────────────────────────────
   Custom fields (per-category, core-rendered)
   Core emits its own Bootstrap-derived markup for admin-defined fields —
   form-control / form-select / form-check / form-label / form-text /
   meta-radio-list / input-group — into two theme surfaces: the publish &
   edit form (injected into #plugin-hook as .meta_list) and the search rail
   (.sf-filters__plugin). Neither knows which field TYPES an install will
   configure, so every primitive core supports is bridged here — text,
   number, textarea, dropdown, radio, checkbox, url/email, date, and
   from/to date & number ranges — onto the theme's own field system so a
   custom field is indistinguishable from a native one, light and dark.
   Scoped to the two container classes so the generic core class names
   cannot leak onto anything else. accent-color + inherited color-scheme
   flip the native radio/checkbox/date controls at paint time.
   ────────────────────────────────────────────────────────────────────────── */
.meta_list,
.sf-filters__plugin { accent-color: var(--color-accent); }

/* Text-like controls, selects and textareas — the theme's input look. */
.meta_list .form-control,
.meta_list .form-select,
.meta_list input[type="text"],
.meta_list input[type="number"],
.meta_list input[type="url"],
.meta_list input[type="email"],
.meta_list input[type="date"],
.meta_list select,
.meta_list textarea,
.sf-filters__plugin .form-control,
.sf-filters__plugin .form-select,
.sf-filters__plugin input[type="text"],
.sf-filters__plugin input[type="number"],
.sf-filters__plugin input[type="url"],
.sf-filters__plugin input[type="date"],
.sf-filters__plugin select,
.sf-filters__plugin textarea {
    width: 100%; min-height: 40px; padding: 8px 10px; font: inherit;
    font-size: 14px; color: var(--color-text); caret-color: var(--color-accent);
    background: var(--color-surface);
    border: 1px solid var(--color-divider); border-radius: var(--radius-md);
    transition: border-color .15s ease, box-shadow .15s ease;
}
.meta_list .form-control:hover, .meta_list .form-select:hover,
.meta_list select:hover, .meta_list textarea:hover, .meta_list input:hover,
.sf-filters__plugin .form-control:hover, .sf-filters__plugin .form-select:hover,
.sf-filters__plugin select:hover, .sf-filters__plugin textarea:hover, .sf-filters__plugin input:hover {
    border-color: color-mix(in srgb, var(--color-text) 45%, transparent);
}
.meta_list .form-control:focus, .meta_list .form-select:focus,
.meta_list select:focus, .meta_list textarea:focus, .meta_list input:focus,
.sf-filters__plugin .form-control:focus, .sf-filters__plugin .form-select:focus,
.sf-filters__plugin select:focus, .sf-filters__plugin textarea:focus, .sf-filters__plugin input:focus {
    border-color: var(--color-accent); outline: none;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent) 30%, transparent);
    position: relative; z-index: 1;
}
.meta_list textarea, .sf-filters__plugin textarea { min-height: 96px; resize: vertical; }
.meta_list select, .sf-filters__plugin select { cursor: pointer; }

/* Field title (stacked above its control). On the publish form core emits a
   .form-label — or a bare <label> for a date range — as the direct child of
   each .meta; the search rail titles fields with an <h6> instead (handled
   below). Radio-option and checkbox labels sit deeper, so they are untouched. */
.meta_list .meta > label {
    display: block; margin: 0 0 5px; font-family: var(--font-body);
    font-size: 13px; font-weight: 600; color: var(--color-muted);
}
/* Search-rail field title — core writes an <h6>; align it to the rail's own
   filter labels rather than a browser-default heading. */
.sf-filters__plugin h3,
.sf-filters__plugin h4,
.sf-filters__plugin h5,
.sf-filters__plugin h6,
.sf-filters__plugin legend {
    margin: 0 0 var(--space-2); font-family: var(--font-heading); font-size: 12px;
    font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; color: var(--color-text);
}
.meta_list .form-text, .sf-filters__plugin .form-text {
    margin: 5px 0 0; font-size: 12px; line-height: 1.5; color: var(--color-muted);
}

/* RADIO group — kill the UA list bullets and lay each option out as a
   tappable, hoverable row with a teal control. */
.meta_list .meta-radio-list, .sf-filters__plugin .meta-radio-list {
    list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px;
}
.meta_list .meta-radio label, .sf-filters__plugin .meta-radio label {
    display: flex; align-items: center; gap: var(--space-2);
    margin: 0; padding: 6px var(--space-2); border-radius: var(--radius-md);
    font-size: 14px; font-weight: 400; color: var(--color-text); cursor: pointer;
}
.meta_list .meta-radio label:hover, .sf-filters__plugin .meta-radio label:hover {
    background: color-mix(in srgb, var(--color-accent) 8%, transparent);
}

/* CHECKBOX — control and label share a baseline row. */
.meta_list .form-check, .sf-filters__plugin .form-check {
    display: flex; align-items: center; gap: var(--space-2); margin: 0; padding: 0;
}
.meta_list .form-check .form-label, .sf-filters__plugin .form-check .form-label {
    margin: 0; font-size: 14px; font-weight: 400; color: var(--color-text); cursor: pointer;
}

/* Native radio / checkbox controls — one accent, one size, no default blue. */
.meta_list .meta-radio input, .meta_list .form-check-input,
.sf-filters__plugin .meta-radio input, .sf-filters__plugin .form-check-input {
    width: 18px; height: 18px; margin: 0; flex: none; cursor: pointer;
    accent-color: var(--color-accent);
}

/* From / To ranges (NUMBER + DATEINTERVAL). The publish form has room for one
   row; the narrow search rail stacks the two pairs so native date pickers
   never overflow the column. */
.meta_list .input-group {
    display: grid; grid-template-columns: auto minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center; gap: var(--space-2);
}
.sf-filters__plugin .input-group {
    display: grid; grid-template-columns: auto minmax(0, 1fr);
    align-items: center; gap: var(--space-1) var(--space-2);
}
.meta_list .input-group-text, .sf-filters__plugin .input-group-text {
    font-size: 12px; font-weight: 600; color: var(--color-muted); white-space: nowrap;
}
.meta_list .input-group > input, .sf-filters__plugin .input-group > input { min-width: 0; }
@media (max-width: 560px) {
    .meta_list .input-group { grid-template-columns: auto minmax(0, 1fr); }
}

/* Field rhythm. Publish form: one .meta per field, sections carry a 2px rule
   in the theme's own section-heading idiom. Search rail: one .row per field. */
.meta_list .meta { margin-bottom: var(--space-4); }
.meta_list .meta:last-child { margin-bottom: 0; }
.meta_list .meta-section { margin-bottom: var(--space-6); }
.meta_list .meta-section:last-child { margin-bottom: 0; }
.meta_list .meta-section-title {
    margin: 0 0 var(--space-3); padding-bottom: var(--space-2);
    font-family: var(--font-heading); font-size: 16px; font-weight: 800;
    color: var(--color-text); border-bottom: 2px solid var(--color-divider);
}
.sf-form .meta_list { margin-top: var(--space-6); }
.sf-filters__plugin fieldset > .row { margin-bottom: var(--space-3); }
.sf-filters__plugin fieldset > .row:last-child { margin-bottom: 0; }

/* ──────────────────────────────────────────────────────────────────────────
   Publish flow — a calm, guided property form with an independent identity.
   ────────────────────────────────────────────────────────────────────────── */
.wa-publish { background: #f4f7f8; color: var(--color-text); }
.wa-publish-hero { background: linear-gradient(135deg,#0b2c44 0%,#0e4552 68%,#0d665f 100%); color:#fff; padding:56px 0 48px; }
.wa-publish-hero__inner { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:48px; }
.wa-publish-eyebrow { margin:0 0 10px; color:#5de2d0; font-size:12px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.wa-publish-hero h1 { max-width:820px; margin:0; color:#fff; font-size:clamp(34px,4vw,54px); line-height:1.06; letter-spacing:-.035em; }
.wa-publish-lead { max-width:760px; margin:18px 0 0; color:#dce9ed; font-size:18px; line-height:1.65; }
.wa-publish-benefits { display:flex; flex-wrap:wrap; gap:10px 22px; margin-top:24px; font-size:14px; font-weight:650; color:#edfafa; }
.wa-publish-benefits span { display:flex; align-items:center; gap:7px; }
.wa-publish-benefits b { display:grid; place-items:center; width:20px; height:20px; border-radius:50%; background:#49d7c5; color:#073947; font-size:12px; }
.wa-publish-hero__meter { display:grid; place-items:center; width:150px; height:150px; padding:20px; border:1px solid rgba(255,255,255,.3); border-radius:50%; background:rgba(255,255,255,.08); text-align:center; box-shadow:inset 0 0 0 8px rgba(255,255,255,.04); }
.wa-publish-hero__meter strong { font-family:var(--font-heading); font-size:23px; }
.wa-publish-hero__meter span { max-width:90px; color:#dce9ed; font-size:12px; line-height:1.35; }
.wa-publish-layout { display:grid; grid-template-columns:minmax(0,820px) 300px; justify-content:center; align-items:start; gap:32px; padding-top:32px; padding-bottom:64px; }
.wa-publish-main { min-width:0; }
.wa-publish-progress { margin-bottom:18px; padding:14px 18px; border:1px solid #dbe5e8; border-radius:14px; background:#fff; box-shadow:0 4px 18px rgba(15,42,56,.05); }
.wa-publish-progress__bar { height:6px; overflow:hidden; border-radius:10px; background:#e6edef; }
.wa-publish-progress__bar span { display:block; width:0; height:100%; border-radius:inherit; background:linear-gradient(90deg,#0d746b,#45d5c3); transition:width .25s ease; }
.wa-publish-progress p { display:flex; justify-content:space-between; gap:16px; margin:9px 0 0; color:#657987; font-size:12px; }
.wa-publish-progress strong { color:#15344a; }
.wa-publish-errors:empty { display:none; }
.wa-publish-errors { margin:0 0 18px; padding:14px 18px 14px 38px; border:1px solid #f2b8b5; border-radius:12px; background:#fff3f2; color:#85251f; }
.wa-publish-form { display:flex; flex-direction:column; gap:20px; }
.wa-publish-card { scroll-margin-top:calc(var(--sf-header-h) + 28px); padding:30px; border:1px solid #dbe4e7; border-radius:18px; background:#fff; box-shadow:0 7px 28px rgba(16,47,64,.055); }
.wa-publish-card__head { display:flex; gap:15px; align-items:flex-start; margin-bottom:26px; padding-bottom:20px; border-bottom:1px solid #e6edef; }
.wa-publish-step { display:grid; place-items:center; flex:0 0 36px; width:36px; height:36px; border-radius:11px; background:#d9f7f2; color:#0b665f; font-size:14px; font-weight:850; }
.wa-publish-card__head h2,.wa-publish-review h2 { margin:0; color:#102f45; font-size:23px; letter-spacing:-.015em; }
.wa-publish-card__head p { margin:5px 0 0; color:#657987; font-size:14px; line-height:1.5; }
.wa-publish-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.wa-publish-grid__wide { grid-column:1/-1; }
.wa-publish .sf-field { margin:0; min-width:0; }
.wa-publish .sf-field > label { display:block; margin-bottom:7px; color:#16354b; font-size:13px; font-weight:750; }
.wa-publish input[type="text"],.wa-publish input[type="email"],.wa-publish input[type="number"],.wa-publish select,.wa-publish textarea { width:100%; min-height:48px; padding:11px 13px; border:1px solid #b8c8ce; border-radius:10px; background:#fff; color:#102f45; font:inherit; font-size:15px; transition:border-color .16s,box-shadow .16s; }
.wa-publish textarea { min-height:190px; resize:vertical; line-height:1.6; }
.wa-publish input:hover,.wa-publish select:hover,.wa-publish textarea:hover { border-color:#708c96; }
.wa-publish input:focus,.wa-publish select:focus,.wa-publish textarea:focus { outline:none; border-color:#0d746b; box-shadow:0 0 0 3px rgba(13,116,107,.17); }
.wa-field-help { display:block; margin-top:7px; color:#6c7f8b; font-size:12px; line-height:1.45; }
.wa-price-control { display:grid; grid-template-columns:minmax(0,1fr) 112px; gap:10px; }
.wa-description-guide,.wa-location-privacy,.wa-photo-advice { margin-top:12px; padding:14px 16px; border-radius:11px; background:#f0f8f7; color:#385664; font-size:13px; line-height:1.55; }
.wa-description-guide strong { color:#123c4b; }
.wa-location-privacy,.wa-photo-advice { display:flex; align-items:flex-start; gap:12px; margin:0 0 22px; }
.wa-location-privacy > span,.wa-photo-advice > span { display:grid; place-items:center; flex:0 0 34px; width:34px; height:34px; border-radius:10px; background:#d5f2ed; color:#0d6b63; font-size:19px; }
.wa-location-privacy p,.wa-photo-advice p { margin:0; }
.wa-photo-advice div > p { margin-top:3px; }
.wa-publish-plugin-fields .meta_list { margin-top:0; }
.wa-publish-plugin-fields .meta_list .meta-section { padding:18px 0; border-bottom:1px solid #e6edef; }
.wa-publish-plugin-fields .meta_list .meta-section:first-child { padding-top:0; }
.wa-publish-plugin-fields .meta_list .meta-section:last-child { padding-bottom:0; border-bottom:0; }
.wa-publish-plugin-fields .meta_list .meta-section-title { border-bottom:0; font-size:17px; }
.wa-uploader-wrap { min-height:120px; padding:18px; border:1.5px dashed #8eabb4; border-radius:13px; background:#f9fbfb; }
.wa-publish-review > p { color:#607683; line-height:1.6; }
.wa-rights-check { display:flex; align-items:flex-start; gap:10px; margin:22px 0; padding:15px; border-radius:10px; background:#f5f8f9; color:#284857; font-size:13px; line-height:1.5; }
.wa-rights-check input { flex:0 0 auto; width:18px; height:18px; margin-top:1px; accent-color:#0d746b; }
.wa-publish .sf-form__actions { display:flex; align-items:center; gap:18px; margin:0; }
.wa-publish-submit { min-height:52px; padding-inline:24px; font-size:15px; }
.wa-publish .sf-form__actions p { margin:0; color:#72848d; font-size:11px; line-height:1.45; }
.wa-publish-aside { position:sticky; top:calc(var(--sf-header-h) + 24px); display:flex; flex-direction:column; gap:16px; }
.wa-publish-nav,.wa-publish-help,.wa-publish-support { padding:20px; border:1px solid #dbe4e7; border-radius:16px; background:#fff; box-shadow:0 6px 22px rgba(16,47,64,.05); }
.wa-publish-nav > p { margin:0 0 12px; color:#607784; font-size:11px; font-weight:850; letter-spacing:.1em; text-transform:uppercase; }
.wa-publish-nav a { display:flex; align-items:center; gap:10px; margin:2px 0; padding:9px 8px; border-radius:9px; color:#355362; font-size:13px; font-weight:650; text-decoration:none; }
.wa-publish-nav a span { display:grid; place-items:center; width:24px; height:24px; border-radius:50%; background:#edf3f4; color:#617680; font-size:11px; }
.wa-publish-nav a:hover,.wa-publish-nav a.is-current { background:#e9f7f5; color:#095f59; }
.wa-publish-nav a.is-current span { background:#0d746b; color:#fff; }
.wa-publish-help > strong { color:#14364a; font-size:14px; }
.wa-publish-help ul { margin:12px 0 15px; padding-left:19px; color:#58707d; font-size:12px; line-height:1.7; }
.wa-publish-help a,.wa-publish-support a { color:#0b6861; font-size:12px; font-weight:700; }
.wa-publish-support { display:flex; align-items:center; gap:12px; }
.wa-publish-support > span { display:grid; place-items:center; width:34px; height:34px; border-radius:50%; background:#e8f1f3; color:#315b6b; font-weight:850; }
.wa-publish-support p { margin:0; color:#566e79; font-size:12px; line-height:1.5; }
.wa-publish-seo-copy { padding:64px 0; background:#e7f3f2; border-top:1px solid #d1e5e3; }
.wa-publish-seo-copy .sf-container { display:grid; grid-template-columns:1.2fr .8fr; gap:72px; }
.wa-publish-seo-copy h2,.wa-publish-seo-copy h3 { margin:0 0 14px; color:#102f45; }
.wa-publish-seo-copy p { color:#4c6875; line-height:1.7; }
.wa-publish-seo-copy .sf-btn { margin-top:8px; }
@media (max-width:980px) { .wa-publish-layout { grid-template-columns:minmax(0,760px); }.wa-publish-aside { position:static; grid-row:1; }.wa-publish-nav { display:none; }.wa-publish-help,.wa-publish-support { display:none; } }
@media (max-width:720px) { .wa-publish-hero { padding:38px 0 34px; }.wa-publish-hero__inner { grid-template-columns:1fr; }.wa-publish-hero__meter { display:none; }.wa-publish-benefits { flex-direction:column; gap:8px; }.wa-publish-layout { padding-top:18px; padding-bottom:42px; }.wa-publish-progress p span { display:none; }.wa-publish-card { padding:21px 17px; border-radius:14px; }.wa-publish-card__head { gap:11px; margin-bottom:21px; }.wa-publish-grid { grid-template-columns:1fr; }.wa-publish-grid__wide { grid-column:auto; }.wa-publish .sf-form__actions { align-items:stretch; flex-direction:column; }.wa-publish-submit { width:100%; }.wa-publish-seo-copy { padding:44px 0; }.wa-publish-seo-copy .sf-container { grid-template-columns:1fr; gap:32px; } }

/* Public "inserieren" landing page. */
.sf-main > .sf-container.sf-main__pad:has(.wa-sell),
.sf-main > .sf-container.sf-main__pad:has(.wa-publish) { max-width:none; padding:0; }
.wa-sell { color:#102f45; }
.wa-sell-hero { padding:72px 0; overflow:hidden; background:linear-gradient(145deg,#e8f8f5 0%,#f8fbfb 54%,#e6eff5 100%); }
.wa-sell-hero__grid { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(360px,.75fr); align-items:center; gap:76px; }
.wa-sell-hero h1 { max-width:760px; margin:0; font-size:clamp(38px,4.5vw,64px); line-height:1.03; letter-spacing:-.045em; }
.wa-sell-hero h1 + p { max-width:680px; margin:22px 0 0; color:#4f6b78; font-size:18px; line-height:1.7; }
.wa-sell-actions { display:flex; align-items:center; gap:22px; margin-top:28px; }
.wa-sell-actions .sf-btn { min-height:52px; padding-inline:24px; }
.wa-sell-actions > a:not(.sf-btn) { color:#0a665f; font-weight:750; }
.wa-sell-trust { display:flex; flex-wrap:wrap; gap:10px 24px; margin:28px 0 0; padding:0; list-style:none; color:#42616e; font-size:13px; font-weight:650; }
.wa-sell-trust li::before { content:'✓'; margin-right:7px; color:#0b756c; font-weight:900; }
.wa-sell-preview { position:relative; border:1px solid rgba(23,76,89,.16); border-radius:22px; background:#fff; box-shadow:0 28px 70px rgba(16,55,70,.16); transform:rotate(1.2deg); }
.wa-sell-preview::before { content:''; position:absolute; z-index:-1; inset:28px -32px -28px 32px; border-radius:24px; background:#0e746c; opacity:.12; }
.wa-sell-preview__photo { display:grid; place-items:end start; min-height:260px; padding:20px; border-radius:21px 21px 0 0; background:linear-gradient(155deg,rgba(11,51,70,.04),rgba(11,51,70,.3)),linear-gradient(35deg,#b3d6cc,#edf4ef 52%,#d9c6ad); }
.wa-sell-preview__photo span { padding:7px 10px; border-radius:20px; background:rgba(255,255,255,.9); color:#153c4c; font-size:11px; font-weight:800; }
.wa-sell-preview__body { padding:22px; }
.wa-sell-preview__tag { display:inline-block; margin-bottom:12px; padding:5px 9px; border-radius:7px; background:#d8f7f0; color:#09665e; font-size:10px; font-weight:850; text-transform:uppercase; letter-spacing:.05em; }
.wa-sell-preview__body > strong { display:block; font-family:var(--font-heading); font-size:22px; }
.wa-sell-preview__body > p { margin:6px 0 18px; color:#6a7e87; font-size:13px; }
.wa-sell-preview__body > div { display:flex; align-items:baseline; gap:8px; padding-top:16px; border-top:1px solid #e3eaec; }
.wa-sell-preview__body b { font-size:25px; }.wa-sell-preview__body div span { color:#71828b; font-size:12px; }
.wa-sell-section { padding:76px 0; }
.wa-sell-section--soft { background:#f1f6f7; }
.wa-sell-section h2 { max-width:760px; margin:0; font-size:clamp(30px,3.2vw,44px); letter-spacing:-.035em; }
.wa-sell-steps { display:grid; grid-template-columns:repeat(4,1fr); gap:18px; margin-top:38px; }
.wa-sell-steps article { padding:26px 23px; border:1px solid #dce5e8; border-radius:17px; background:#fff; }
.wa-sell-steps article > span { display:grid; place-items:center; width:38px; height:38px; margin-bottom:24px; border-radius:11px; background:#d9f5f0; color:#0b6b63; font-weight:850; }
.wa-sell-steps h3 { margin:0 0 9px; font-size:18px; }.wa-sell-steps p { margin:0; color:#617986; font-size:13px; line-height:1.65; }
.wa-sell-split { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:72px; }
.wa-sell-split > div > p:not(.wa-publish-eyebrow) { color:#516c78; font-size:16px; line-height:1.7; }
.wa-sell-checks { margin:24px 0 0; padding:0; list-style:none; }
.wa-sell-checks li { position:relative; margin:11px 0; padding-left:28px; color:#385864; font-size:14px; }
.wa-sell-checks li::before { content:'✓'; position:absolute; left:0; top:-1px; display:grid; place-items:center; width:19px; height:19px; border-radius:50%; background:#d4f2ed; color:#096b62; font-size:11px; font-weight:900; }
.wa-sell-featuregrid { display:grid; grid-template-columns:repeat(2,1fr); gap:14px; }
.wa-sell-featuregrid article { min-height:130px; padding:22px; border:1px solid #dbe5e7; border-radius:16px; background:#fff; box-shadow:0 6px 22px rgba(13,52,68,.045); }
.wa-sell-featuregrid b { display:block; margin-bottom:8px; color:#123b4b; font-size:17px; }.wa-sell-featuregrid span { color:#667d88; font-size:12px; line-height:1.55; }
.wa-sell-audiences { display:grid; grid-template-columns:.75fr 1.25fr; gap:64px; align-items:start; }
.wa-sell-plans { display:grid; grid-template-columns:repeat(2,1fr); gap:18px; }
.wa-sell-plans article { padding:28px; border:1px solid #d9e4e7; border-radius:17px; background:#fff; box-shadow:0 6px 22px rgba(13,52,68,.045); }
.wa-sell-plans article:last-child { border-color:#9ed5ce; background:#f3fbfa; }
.wa-sell-plans h3 { margin:0; font-size:21px; }.wa-sell-plans p { min-height:86px; color:#627985; line-height:1.6; }.wa-sell-plans a { color:#096860; font-weight:800; }
.wa-sell-cta { padding:54px 0; background:#d8f3ee; }.wa-sell-cta .sf-container { display:flex; align-items:center; justify-content:space-between; gap:30px; }.wa-sell-cta h2 { margin:0; font-size:34px; }.wa-sell-cta p:not(.wa-publish-eyebrow) { margin:8px 0 0; color:#4d6975; }.wa-sell-cta .sf-btn { min-width:200px; min-height:52px; }
@media(max-width:900px){.wa-sell-hero__grid,.wa-sell-split,.wa-sell-audiences{grid-template-columns:1fr}.wa-sell-preview{max-width:540px}.wa-sell-steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.wa-sell-hero{padding:48px 0}.wa-sell-hero__grid{gap:46px}.wa-sell-actions{align-items:stretch;flex-direction:column}.wa-sell-actions>a{text-align:center}.wa-sell-preview__photo{min-height:200px}.wa-sell-section{padding:52px 0}.wa-sell-steps,.wa-sell-featuregrid,.wa-sell-plans{grid-template-columns:1fr}.wa-sell-plans article p{min-height:0}.wa-sell-cta .sf-container{align-items:stretch;flex-direction:column}.wa-sell-cta .sf-btn{width:100%}}

/* Keyword field + inline search button */
.sf-filters__search { display: flex; gap: var(--space-2); }
.sf-filters__search .sf-input { flex: 1; }
.sf-filters__search .sf-btn { flex: none; height: 40px; }

/* Price range */
.sf-range { display: flex; gap: var(--space-2); align-items: center; }
.sf-range .sf-input { flex: 1; min-width: 0; }
.sf-range__sep { color: var(--color-muted); flex: none; }

/* Category refinement (navigation, not form controls) */
.sf-catnav { margin-top: var(--space-4); }
.sf-cat-list { list-style: none; margin: 0; padding: 0; }
.sf-cat-list li { margin: 0; }
.sf-cat-link, .sf-cat-reset a, .sf-cat-list .is-empty {
    display: flex; align-items: center; gap: var(--space-2);
    padding: 7px var(--space-2); border-radius: var(--radius-md);
    font-size: 14px; color: var(--color-text); text-decoration: none;
}
.sf-cat-link { justify-content: space-between; }
.sf-cat-link .sf-cat-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sf-cat-link svg, .sf-cat-reset a svg { color: var(--color-muted); flex: none; }
.sf-cat-link:hover, .sf-cat-reset a:hover { background: color-mix(in srgb, var(--color-accent) 8%, transparent); color: var(--color-accent-ink); text-decoration: none; }
.sf-cat-link:hover svg { color: var(--color-accent-ink); }
.sf-cat-reset a { color: var(--color-muted); font-weight: 600; }
.sf-cat-current { padding: 7px var(--space-2); font-weight: 800; color: var(--color-text); }
.sf-cat-list .is-empty { justify-content: space-between; color: var(--color-muted); cursor: default; }
.sf-cat-empty { padding: 7px var(--space-2); font-size: 13px; color: var(--color-muted); }

/* Email-alert form */
.sf-alert-form__hint, .sf-alert-form__done { font-size: 13px; color: var(--color-muted); margin: 0 0 var(--space-2); }
.sf-alert-form__done { display: flex; align-items: center; gap: var(--space-2); color: var(--color-accent-ink); }
.sf-alert-form .sf-btn { margin-top: var(--space-1); }
.sf-alert-form__msg { font-size: 13px; margin: var(--space-2) 0 0; color: var(--color-muted); }
.sf-alert-form__msg:empty { display: none; }
.sf-alert-form__msg[data-state="ok"] { color: var(--color-accent-ink); }
.sf-alert-form__msg[data-state="err"] { color: var(--color-accent-2-ink); }

/* "Selling something?" promo. Sits on the fixed light-teal accent-100 tint, which
   doesn't flip in dark mode, so its text uses fixed accent-ink (like tags/badges)
   rather than the theme-adaptive muted token — legible in both themes. */
.sf-filters__promo {
    background: var(--color-accent-100); border: 1px solid var(--color-accent-200);
    border-radius: var(--radius-lg); padding: var(--space-3); margin-top: var(--space-4);
}
.sf-filters__promo h3 { font-size: 14px; margin: 0 0 4px; color: var(--color-accent-900); }
.sf-filters__promo p { font-size: 12px; margin: 0 0 var(--space-2); color: var(--color-accent-800); }

/* Active-filter chips (on the results head) */
.sf-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); list-style: none; margin: 0 0 var(--space-4); padding: 0; }
.sf-chip {
    display: inline-flex; align-items: center; gap: var(--space-1);
    padding-block: var(--space-1); padding-inline: var(--space-3) var(--space-2);
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-md); font-size: 13px; color: var(--color-text); text-decoration: none;
}
.sf-chip svg { color: var(--color-muted); }
.sf-chip:hover { border-color: var(--color-accent); color: var(--color-accent-ink); text-decoration: none; }
.sf-chip:hover svg { color: var(--color-accent-ink); }
.sf-chip__label { max-width: 22ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sf-chip--clear { padding-inline: var(--space-3); color: var(--color-muted); font-weight: 600; }

/* Mobile "Filters" button (desktop: hidden, the rail is always visible) */
.sf-filterbtn {
    display: none; align-items: center; gap: var(--space-2);
    min-height: 40px; padding: var(--space-2) var(--space-3); border: 1px solid var(--color-divider);
    border-radius: var(--radius-md); background: var(--color-surface);
    font-family: var(--font-heading); font-weight: 800; font-size: 13px; color: var(--color-text); cursor: pointer;
}
.sf-filterbtn:hover { border-color: var(--color-accent); color: var(--color-accent-ink); }
.sf-filterbtn__count {
    display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px;
    padding: 0 var(--space-1); border-radius: 999px; background: var(--color-accent-700); color: var(--color-fixed-light); font-size: 11px; font-weight: 800;
}
.sf-filters__backdrop { display: none; }

/* Location autocomplete listbox */
.sf-field { position: relative; }
/* Autocomplete listbox. Every autocomplete on the theme — the location fields and
   the custom-field filters (e.g. "Make") — runs on core's shared combobox
   (oscAutocomplete in oc-includes/assets/osclass/ui-common.js), which portals
   .osc-ac-list to <body>, positions it fixed inline, and leaves the look to the
   theme. So the theme owns only the skin here. */
.osc-ac-list {
    padding: var(--space-1); list-style: none;
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-md); box-shadow: var(--shadow-md);
    max-height: 240px; overflow-y: auto;
}
.osc-ac-option {
    padding: 7px var(--space-2); border-radius: var(--radius-sm);
    font-size: 14px; color: var(--color-text); cursor: pointer; list-style: none;
}
.osc-ac-option.is-active, .osc-ac-option:hover {
    background: color-mix(in srgb, var(--color-accent) 12%, transparent); color: var(--color-accent-ink);
}

/* Mobile: the rail becomes an off-canvas drawer so results lead the page */
@media (max-width: 1120px) {
    .sf-filterbtn { display: inline-flex; }
    .sf-filters__close { display: inline-flex; }
    .sf-searchlayout__side {
        position: fixed; inset-block: 0; inset-inline-start: 0; z-index: 60;
        width: min(88vw, 360px); max-height: none; margin: 0; padding: var(--space-4);
        background: var(--color-surface); box-shadow: var(--shadow-lg); overflow-y: auto;
        transform: translateX(-100%); visibility: hidden;
        transition: transform .25s ease, visibility .25s ease;
    }
    [dir="rtl"] .sf-searchlayout__side { inset-inline-start: auto; inset-inline-end: 0; transform: translateX(100%); }
    .sf-searchlayout__side.is-open { transform: none; visibility: visible; }
    /* Only while the drawer is open (JS clears [hidden]); the class rule must not
       override the hidden attribute or the closed scrim veils the whole page. */
    .sf-filters__backdrop:not([hidden]) { display: block; position: fixed; inset: 0; z-index: 55; background: var(--color-scrim); }
    body.sf-noscroll { overflow: hidden; }
}
@media (prefers-reduced-motion: reduce) {
    .sf-searchlayout__side { transition: none; }
}

.sf-results__head {
    display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: baseline; justify-content: space-between;
    padding-bottom: var(--space-3); border-bottom: 2px solid var(--color-divider); margin-bottom: var(--space-4);
}
.sf-results__title { font-size: 26px; margin: 0 0 2px; }
.sf-alert__summary { margin: 0; font-size: 14px; color: var(--color-muted); }
.sf-alert__summary--paused { color: var(--color-accent-2-ink); }
.sf-results__count { font-size: 13px; color: var(--color-muted); }
/* Subscribe-to-this-search (RSS): a quiet, muted affordance beside the count, going
   teal on hover — content leads, the feed link never competes. */
.sf-results__feed {
    display: inline-flex; align-items: center; gap: 4px; margin-inline-start: var(--space-3);
    font-size: 12px; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase;
    color: var(--color-muted); text-decoration: none;
}
.sf-results__feed:hover { color: var(--color-accent-ink); }
.sf-results__feed svg { flex: none; }
.sf-results__tools { display: inline-flex; align-items: center; gap: var(--space-3); }
/* Phones: the title takes its own line; Filters and the view/sort tools share the row below. */
@media (max-width: 860px) {
    .sf-results__head { align-items: center; }
    .sf-results__headline { order: -1; flex: 1 1 100%; }
    .sf-results__tools { flex: 1 1 0; min-width: 0; justify-content: flex-end; gap: var(--space-2); }
    .sf-sort { flex: 0 1 auto; min-width: 0; }
    .sf-sort select { min-width: 0; max-width: 100%; }
}
@media (max-width: 480px) {
    .sf-sort > span {
        position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden;
        clip: rect(0, 0, 0, 0); white-space: nowrap;
    }
}

.sf-results__views {
    display: inline-flex; border: 1px solid var(--color-divider);
    border-radius: var(--radius-md); overflow: hidden;
}
.sf-viewbtn {
    width: 38px; height: 34px; display: inline-flex; align-items: center; justify-content: center;
    color: var(--color-text); background: transparent;
}
.sf-viewbtn + .sf-viewbtn { border-inline-start: 1px solid var(--color-divider); }
.sf-viewbtn:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); text-decoration: none; }
/* Fill token: same white-on-accent pattern as the buttons above, so it needs the
   AA-safe step rather than the raw (fails ~3:1 for teal) --color-accent. */
.sf-viewbtn.is-active { background: var(--color-accent-fill); color: var(--color-fixed-light); }

.sf-sort { display: inline-flex; align-items: center; gap: var(--space-2); font-size: 13px; }
.sf-sort > span { color: var(--color-muted); }
.sf-sort select { width: auto; min-height: 34px; font-size: 13px; }

/* Pagination — core's `Pagination` class emits <li><a class="searchPagination…">
   number and glyph («‹›») links, with the current page as
   <li><span class="searchPaginationSelected">. Style the classes core actually
   emits (an earlier build targeted .active/<strong>, which core never renders, so
   the current page was invisible). Core supplies the aria-current + control names;
   common/pagination.php wraps this in a presentational (non-landmark) container. */
.sf-pagination { margin-top: var(--space-6); padding-top: var(--space-4); border-top: 2px solid var(--color-divider); }
.sf-pagination ul { display: flex; flex-wrap: wrap; gap: var(--space-2); list-style: none; padding: 0; margin: 0; justify-content: center; }
.sf-pagination a, .sf-pagination span {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 40px; min-height: 40px; padding: 0 var(--space-3);
    border: 1px solid var(--color-divider); border-radius: var(--radius-md);
    color: var(--color-text); font-family: ui-monospace, monospace; font-size: 13px; line-height: 1;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.sf-pagination a:hover {
    background: color-mix(in srgb, var(--color-accent) 12%, transparent);
    border-color: color-mix(in srgb, var(--color-accent) 40%, transparent);
    color: var(--color-accent-ink); text-decoration: none;
}
.sf-pagination a:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
/* Current page: solid teal so "you are here" is unmistakable. Steps to the 700
   fill so the white label clears WCAG AA (~5.8:1), unlike white on base teal. */
.sf-pagination .searchPaginationSelected {
    background: var(--color-accent-700); border-color: var(--color-accent-700);
    color: var(--color-fixed-light); font-weight: var(--font-heading-weight); cursor: default;
}
/* Directional controls («‹›») read as controls, not page numbers. */
.sf-pagination .searchPaginationFirst,
.sf-pagination .searchPaginationPrev,
.sf-pagination .searchPaginationNext,
.sf-pagination .searchPaginationLast { color: var(--color-accent-ink); font-weight: var(--font-heading-weight); }

/* ──────────────────────────────────────────────────────────────────────────
   Item detail
   ────────────────────────────────────────────────────────────────────────── */
/* Layout: ONE grid, named areas. The aside is named in both rows, so it spans
   them and `position: sticky` can hold the price + seller beside the scrolling
   body. A single DOM order then reads correctly on both axes — desktop shows
   media|aside / body|aside; mobile stacks media → aside → body, i.e. photo,
   then title/price/seller, then the description. No duplicated markup. */
.sf-detail__grid {
    display: grid; align-items: start; gap: var(--space-6) var(--space-8);
    grid-template-columns: minmax(0, 1fr) minmax(340px, 390px);
    grid-template-areas: "media aside" "body aside";
}
.sf-detail__media { grid-area: media; min-width: 0; }
.sf-detail__aside { grid-area: aside; min-width: 0; display: flex; flex-direction: column; gap: var(--space-4); }
.sf-detail__body  { grid-area: body;  min-width: 0; }
@media (min-width: 1121px) {
    .sf-detail__aside { position: sticky; top: calc(var(--sf-header-h) + var(--space-4)); }
}
@media (max-width: 920px) {
    .sf-detail__grid { grid-template-columns: 1fr; grid-template-areas: "media" "aside" "body"; }
}

/* Status alert (expired / inactive) */
.sf-alert {
    display: flex; gap: 10px; align-items: flex-start; margin-bottom: var(--space-6);
    padding: var(--space-3) var(--space-4); border-radius: var(--radius-md); font-size: 14px;
}
.sf-alert svg { flex: none; margin-top: 1px; }
.sf-alert--warning { background: var(--color-accent-2-100); color: var(--color-accent-2-800); border: 1px solid var(--color-accent-2-200); }

/* ──────────────────────────────────────────────────────────────────────────
   Flash messages + form error list
   Core queues page-level feedback (osc_add_flash_*_message) and prints it via
   osc_show_flash_message() as `.flashmessage.flashmessage-<type>` — type is one
   of ok / error / info / warning — with a leading `.ico-close` dismiss anchor.
   The theme renders that call in common/header.php; here it is bridged to the
   design system. The tinted panel is mixed against --color-surface so it reads
   correctly in both themes at paint time, and the type is carried by a masked
   status icon (background-color, so it recolours per theme) as well as hue —
   never colour alone. #error_list is the empty <ul> that core's client-side
   validation fills with <li> messages on the item, contact, user and profile
   forms; styled as a coral error panel, hidden while empty.
   ────────────────────────────────────────────────────────────────────────── */
.sf-flash-wrap { margin-top: var(--space-4); }
.flashmessage {
    position: relative; display: flex; align-items: flex-start; gap: var(--space-2);
    margin-bottom: var(--space-2);
    padding: var(--space-3) var(--space-8) var(--space-3) var(--space-3);
    font-size: 14px; line-height: 1.5; color: var(--color-text);
    background: var(--color-surface);
    border: 1px solid var(--color-divider); border-radius: var(--radius-md);
    box-shadow: var(--shadow-sm);
}
.flashmessage::before {
    content: ""; flex: none; width: 20px; height: 20px; margin-top: 1px;
    background-color: var(--color-text);
    -webkit-mask: var(--flash-icon) center / contain no-repeat;
            mask: var(--flash-icon) center / contain no-repeat;
}
.flashmessage a.ico-close {
    position: absolute; top: var(--space-2); inset-inline-end: var(--space-2);
    width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center;
    border-radius: var(--radius-sm); color: var(--color-muted);
    font-size: 15px; line-height: 1; text-decoration: none; cursor: pointer;
}
.flashmessage a.ico-close:hover { background: color-mix(in srgb, var(--color-text) 8%, transparent); color: var(--color-text); }

.flashmessage-ok {
    background: color-mix(in srgb, var(--color-accent) 12%, var(--color-surface));
    border-color: color-mix(in srgb, var(--color-accent) 34%, var(--color-surface));
    --flash-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='m8 12 3 3 5-6'/%3E%3C/svg%3E");
}
.flashmessage-ok::before { background-color: var(--color-accent); }

.flashmessage-error {
    background: color-mix(in srgb, var(--color-accent-2) 12%, var(--color-surface));
    border-color: color-mix(in srgb, var(--color-accent-2) 36%, var(--color-surface));
    --flash-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 8v5'/%3E%3Cpath d='M12 16h.01'/%3E%3C/svg%3E");
}
.flashmessage-error::before { background-color: var(--color-accent-2); }

.flashmessage-warning {
    background: color-mix(in srgb, var(--color-accent-2) 12%, var(--color-surface));
    border-color: color-mix(in srgb, var(--color-accent-2) 36%, var(--color-surface));
    --flash-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4 3 19h18z'/%3E%3Cpath d='M12 10v4'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E");
}
.flashmessage-warning::before { background-color: var(--color-accent-2); }

.flashmessage-info {
    background: color-mix(in srgb, var(--color-text) 5%, var(--color-surface));
    border-color: color-mix(in srgb, var(--color-text) 18%, var(--color-surface));
    --flash-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5'/%3E%3Cpath d='M12 8h.01'/%3E%3C/svg%3E");
}
.flashmessage-info::before { background-color: var(--color-neutral-600); }

/* Client-side validation errors — the same coral error language as a flash. */
#error_list:empty { display: none; }
#error_list:not(:empty) {
    list-style: none; margin: 0 0 var(--space-4); padding: var(--space-3) var(--space-4);
    font-size: 14px; line-height: 1.5; color: var(--color-text);
    background: color-mix(in srgb, var(--color-accent-2) 12%, var(--color-surface));
    border: 1px solid color-mix(in srgb, var(--color-accent-2) 36%, var(--color-surface));
    border-radius: var(--radius-md);
}
#error_list:not(:empty) li { margin: 0; padding: 2px 0 2px var(--space-4); position: relative; }
#error_list:not(:empty) li::before {
    content: ""; position: absolute; inset-inline-start: 0; top: 11px;
    width: 6px; height: 6px; border-radius: 50%; background: var(--color-accent-2);
}

/* ── Gallery: a large stage + a thumbnail strip; the stage opens a lightbox ── */
.sf-gallery { display: flex; flex-direction: column; gap: var(--space-2); margin: 0; }
.sf-gallery__stage {
    position: relative; display: block; width: 100%; aspect-ratio: 16 / 10; padding: 0;
    border: 1px solid var(--color-divider); border-radius: 18px; overflow: hidden;
    background: var(--color-neutral-200); box-shadow: var(--shadow-sm); cursor: zoom-in;
}
/* The whole photo shows; a blurred copy of it fills the space a tall or wide photo leaves. */
.sf-gallery__stage img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.sf-gallery__stage img.sf-gallery__backdrop {
    object-fit: cover; filter: blur(28px) saturate(1.15) brightness(.92); transform: scale(1.2);
}
.sf-gallery__zoom {
    position: absolute; inset-block-end: 10px; inset-inline-end: 10px; z-index: 1;
    display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; font-size: 12px;
    font-family: var(--font-heading); font-weight: 800; color: var(--color-fixed-light);
    background: color-mix(in srgb, var(--color-fixed-ink) 66%, transparent); border-radius: var(--radius-md);
    backdrop-filter: blur(4px); pointer-events: none;
}
.sf-gallery__thumbs {
    display: flex; gap: var(--space-2); overflow-x: auto; overscroll-behavior-inline: contain;
    scrollbar-width: thin; list-style: none; margin: 0; padding: 0 0 4px;
}
.sf-gallery__thumbs li { flex: 0 0 88px; }
.sf-gallery__thumb {
    position: relative; display: block; width: 100%; aspect-ratio: 1; padding: 0; cursor: pointer;
    border: 2px solid transparent; border-radius: var(--radius-md); overflow: hidden;
    background: var(--color-neutral-200);
}
.sf-gallery__thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.sf-gallery__thumb[aria-pressed="true"] { border-color: var(--color-accent); }
.sf-gallery__empty {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-2);
    aspect-ratio: 16 / 7; border: 1px solid var(--color-divider); border-radius: var(--radius-lg);
    background: var(--color-neutral-200); box-shadow: var(--shadow-sm);
    color: var(--color-muted); font-size: 14px;
}

/* ── Aside: meta, title, price, actions ── */
.sf-detail__summary {
    padding: clamp(18px, 2.4vw, 26px); background: var(--color-surface);
    border: 1px solid var(--color-divider); border-radius: 18px; box-shadow: var(--shadow-sm);
}
.sf-detail__meta { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-2); }
.sf-detail__date { color: var(--color-muted); font-size: 12px; }
.sf-detail__title { font-size: clamp(23px, 3.4vw, 30px); line-height: 1.14; margin: 0 0 var(--space-2); text-wrap: balance; }
.sf-detail__price {
    font-family: var(--font-heading); font-weight: 800; font-size: 32px; letter-spacing: -0.02em;
    color: var(--color-accent-ink); margin: 0 0 var(--space-2);
}
/* Non-money states are not shouted in the price colour. */
.sf-detail__price[data-price-state="ask"],
.sf-detail__price[data-price-state="free"] { font-size: 19px; color: var(--color-text); }
.sf-detail__location { display: flex; align-items: center; gap: 6px; color: var(--color-neutral-700); font-size: 14px; margin: 0 0 var(--space-4); }
.sf-detail__location svg { flex: none; color: var(--color-accent-ink); }

.sf-detail__quickfacts {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px;
    margin: 0 0 var(--space-4); padding: 1px; overflow: hidden;
    background: var(--color-divider); border: 1px solid var(--color-divider); border-radius: var(--radius-md);
}
.sf-detail__quickfacts > div { min-width: 0; padding: 11px 12px; background: var(--color-neutral-100); }
.sf-detail__quickfacts dt { margin: 0 0 2px; color: var(--color-muted); font-size: 11px; line-height: 1.25; }
.sf-detail__quickfacts dd { margin: 0; overflow-wrap: anywhere; color: var(--color-text); font-family: var(--font-heading); font-size: 15px; font-weight: 800; line-height: 1.25; }

.sf-detail__actions {
    display: flex; gap: var(--space-2); flex-wrap: wrap;
    padding-top: var(--space-3); margin: 0; border-top: 1px solid var(--color-divider);
}
.sf-detail__actions .sf-btn { flex: 1 1 auto; }

.sf-detail__owner {
    background: var(--color-neutral-100); border-radius: var(--radius-md);
    padding: var(--space-3); margin-bottom: var(--space-4);
}
.sf-detail__owner-label { font-size: 12px; color: var(--color-muted); margin: 0 0 var(--space-2); font-weight: 600; }
.sf-detail__owner-actions { display: flex; gap: var(--space-2); flex-wrap: wrap; }

/* ── Seller trust block ── */
.sf-seller {
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: 18px; padding: var(--space-5); box-shadow: var(--shadow-sm);
}
.sf-seller__head { font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-muted); margin: 0 0 var(--space-3); }
.sf-seller__id { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-3); }
.sf-seller__id .sf-seller__name { min-width: 0; }
/* Long seller names must not blow out the 350px rail. */
.sf-seller__name a, .sf-seller__name > span:first-child { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Monogram fallback: same white-on-accent pattern as the buttons, so the fill
   token is used instead of the raw --color-accent it would otherwise fail AA on. */
.sf-seller__avatar {
    flex: none; width: 44px; height: 44px; border-radius: var(--radius-md); overflow: hidden;
    display: grid; place-items: center;
    font-family: var(--font-heading); font-weight: 800; font-size: 18px; color: var(--color-fixed-light); background: var(--color-accent-fill);
}
.sf-seller__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-seller__name { font-family: var(--font-heading); font-weight: 800; font-size: 16px; line-height: 1.2; }
.sf-seller__name a { color: var(--color-text); }
.sf-seller__name a:hover { color: var(--color-accent-ink); }
.sf-seller__kind { display: block; font-family: var(--font-body); font-weight: 400; font-size: 12px; color: var(--color-muted); margin-top: 2px; }
.sf-seller__facts { list-style: none; margin: 0 0 var(--space-3); padding: 0; font-size: 13px; color: var(--color-neutral-700); display: flex; flex-direction: column; gap: var(--space-2); align-items: flex-start; }
/* "New seller" — an honest expectation-setter for a days-old account, not an alarm. */
.sf-seller__badge { display: inline-block; padding: 2px 8px; border-radius: var(--radius-sm); background: var(--color-accent-100); color: var(--color-accent-800); font-size: 11px; font-weight: 800; letter-spacing: 0.02em; }
.sf-seller__actions { display: flex; flex-direction: column; gap: var(--space-2); }
.sf-seller__actions .sf-btn { width: 100%; }
.sf-seller__note { font-size: 13px; color: var(--color-muted); margin: 0; }

.sf-phone { margin: 0; }
.sf-phone > summary {
    list-style: none; cursor: pointer; width: 100%;
}
.sf-phone > summary::-webkit-details-marker { display: none; }
.sf-phone__num {
    display: block; margin-top: var(--space-2); text-align: center;
    font-family: var(--font-heading); font-weight: 800; font-size: 18px; color: var(--color-text);
}
.sf-phone__num:hover { color: var(--color-accent-ink); }

.sf-safetynote { font-size: 13px; color: var(--color-muted); margin: var(--space-3) 0 0; line-height: 1.5; }

/* ── Body: description, details, map, related ── */
.sf-detail__section { margin-top: 0; }
.sf-detail__section + .sf-detail__section { margin-top: var(--space-8); }
.sf-detail__section > h2 { font-size: 22px; margin: 0 0 var(--space-3); }
.sf-budget {
    display: grid; grid-template-columns: minmax(0, 1fr) 230px; gap: var(--space-6); align-items: center;
    padding: clamp(20px, 3vw, 32px); background: var(--color-surface);
    border: 1px solid var(--color-divider); border-radius: 18px; box-shadow: var(--shadow-sm);
}
.sf-budget__eyebrow { margin: 0 0 6px; color: var(--color-accent-ink); font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.sf-budget__intro h2 { margin: 0 0 8px; font-size: clamp(21px, 2.5vw, 27px); line-height: 1.2; }
.sf-budget__intro > p:not(.sf-budget__eyebrow) { margin: 0 0 var(--space-4); color: var(--color-muted); line-height: 1.55; }
.sf-budget__field { display: block; max-width: 360px; color: var(--color-text); font-size: 13px; font-weight: 700; }
.sf-budget__field > span { display: flex; align-items: center; margin-top: 6px; overflow: hidden; border: 1px solid var(--color-divider); border-radius: var(--radius-md); background: var(--color-surface); }
.sf-budget__field input { width: 100%; min-width: 0; padding: 11px 12px; border: 0; color: var(--color-text); background: transparent; font: inherit; font-size: 16px; outline: 0; }
.sf-budget__field > span:focus-within { border-color: var(--color-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent) 24%, transparent); }
.sf-budget__field b { padding: 0 12px; color: var(--color-muted); }
.sf-budget__hint { min-height: 42px; margin-top: var(--space-3) !important; font-size: 13px; }
.sf-budget__visual { position: relative; display: grid; place-items: center; }
.sf-budget__ring { width: 164px; height: 164px; transform: rotate(-90deg); }
.sf-budget__track, .sf-budget__progress { fill: none; stroke-width: 11; }
.sf-budget__track { stroke: var(--color-neutral-200); }
.sf-budget__progress { stroke: var(--color-accent); stroke-linecap: round; stroke-dasharray: 0 100; transition: stroke-dasharray .35s ease, stroke .2s ease; }
.sf-budget__center { position: absolute; top: 52px; display: flex; flex-direction: column; align-items: center; pointer-events: none; }
.sf-budget__center strong { font-family: var(--font-heading); font-size: 25px; line-height: 1.05; }
.sf-budget__center span { color: var(--color-muted); font-size: 11px; }
.sf-budget__costs { width: 100%; margin: var(--space-3) 0 0; }
.sf-budget__costs div { display: flex; justify-content: space-between; gap: var(--space-3); padding: 7px 0; border-top: 1px solid var(--color-divider); font-size: 13px; }
.sf-budget__costs dt { color: var(--color-muted); }
.sf-budget__costs dd { margin: 0; color: var(--color-text); font-weight: 800; }
@media (max-width: 620px) {
    .sf-budget { grid-template-columns: 1fr; }
    .sf-budget__visual { grid-template-columns: 164px minmax(0, 1fr); column-gap: var(--space-3); }
    .sf-budget__center { top: 52px; left: 0; width: 164px; }
}
.sf-prose { line-height: 1.7; font-size: 15px; max-width: 66ch; }
.sf-prose img { border-radius: var(--radius-md); margin: var(--space-3) 0; }
/* Muted reference line — listing id + view count, out of the buyer's spec scan.
   Inside the Details section it's a footnote under the table; standing alone (a
   listing with no spec table) it takes the section's own vertical rhythm. */
.sf-detail__ref { margin: var(--space-4) 0 0; font-family: ui-monospace, monospace; font-size: 12px; color: var(--color-muted); }
.sf-detail__body > .sf-detail__ref { margin-block: var(--space-8); }
.sf-detail__ref-sep { margin: 0 var(--space-1); }
/* The label (row-header) column shares the value column's 1px rule — the heavier 2px
   .table th rule is meant for a real header row, which this spec sheet has none of. */
.sf-detail__table th { border-bottom-width: 1px; }
/* Custom-field groups (6.0 field groups): each is a titled spec block. The title
   is the system "label" eyebrow (Archivo 800, tracked, muted) so a group reads as a
   sub-section of Details, not a competing h2. */
.sf-spec-group + .sf-spec-group { margin-top: var(--space-6); }
.sf-spec-group__title { margin: 0 0 var(--space-2); font-size: 12px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-muted); }
.sf-spec-group .sf-detail__table { margin-top: 0; }
/* Checkbox custom-field value: a ticked feature reads as "✓ Yes" (core would emit an
   <img tick.png> this theme doesn't ship). Only ticked fields render; unticked are
   omitted, so a spec sheet isn't padded with "No" rows. */
.sf-spec-yes { display: inline-flex; align-items: center; gap: 6px; }
.sf-spec-yes svg { color: var(--color-accent-ink); flex: none; }

/* Location map — interactive + lazy: the tiles/API load only when "Show map" is
   pressed, so nothing external is fetched (or billed) by default. The canvas is the
   live map (Google or Leaflet); the button and error share the same framed box. */
.sf-map { position: relative; border: 1px solid var(--color-divider); border-radius: var(--radius-lg); overflow: hidden; background: var(--color-neutral-100); }
/* Default state is a compact click-to-load bar, not a full-size placeholder — the
   canvas only grows to map height once loaded. border-radius:inherit keeps the
   button's own hover fill and focus ring on the container's rounded corners. */
.sf-map__load {
    width: 100%; min-height: 56px; padding: var(--space-3) var(--space-4);
    display: flex; align-items: center; justify-content: center; gap: 8px;
    background: transparent; color: var(--color-text);
    font-family: var(--font-heading); font-weight: 800; font-size: 14px;
    border: 0; border-radius: inherit; cursor: pointer;
}
.sf-map__load:hover { background: color-mix(in srgb, var(--color-accent) 8%, transparent); color: var(--color-accent-ink); }
.sf-map__load[aria-busy="true"] { cursor: progress; opacity: .65; }
.sf-map__canvas { width: 100%; height: 340px; }
.sf-map__canvas .leaflet-container { height: 100%; font: inherit; background: var(--color-neutral-100); }
.sf-map__error { margin: 0; min-height: 120px; display: flex; align-items: center; justify-content: center; padding: var(--space-6); text-align: center; color: var(--color-muted); font-size: 14px; }
.sf-map__link { margin: var(--space-2) 0 0; font-size: 13px; }
.sf-map__link a { display: inline-flex; align-items: center; gap: 6px; color: var(--color-accent-ink); font-weight: 600; }
.sf-map__link a:hover { color: var(--color-accent-ink); }

/* Comments — a calm thread of bordered cards on the body column (not nested cards),
   then the post form (or a sign-in invite when comments require an account). */
.sf-comments__count {
    display: inline-flex; align-items: center; justify-content: center; min-width: 24px; height: 22px;
    padding: 0 7px; margin-inline-start: 6px; border-radius: 999px; vertical-align: 3px;
    background: var(--color-accent-100); color: var(--color-accent-800);
    font-family: ui-monospace, monospace; font-size: 13px; font-weight: 800;
}
.sf-comments__list { list-style: none; margin: 0 0 var(--space-6); padding: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.sf-comment {
    padding: var(--space-4); background: var(--color-surface);
    border: 1px solid var(--color-divider); border-radius: var(--radius-lg);
}
.sf-comment__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); }
.sf-comment__author { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--font-heading); font-weight: 800; font-size: 14px; color: var(--color-text); }
.sf-comment__date { flex: none; font-size: 12px; color: var(--color-muted); }
.sf-comment__title { font-family: var(--font-heading); font-weight: 800; font-size: 15px; margin: var(--space-2) 0 var(--space-1); }
.sf-comment__body { margin: var(--space-1) 0 0; font-size: 15px; line-height: 1.6; color: var(--color-text); }
.sf-comment__delete { display: inline-flex; align-items: center; gap: 5px; margin-top: var(--space-3); font-size: 12px; font-weight: 600; color: var(--color-accent-2-ink); }
.sf-comment__delete:hover { color: var(--color-accent-2-ink); text-decoration: none; }
.sf-comments__empty { margin: 0 0 var(--space-6); font-size: 15px; color: var(--color-muted); }
.sf-comments__formhead { font-family: var(--font-heading); font-weight: 800; font-size: 16px; line-height: 1.3; margin: 0 0 var(--space-3); }
.sf-comments__hint { margin: 0; font-size: 14px; color: var(--color-muted); }
.sf-comment-form, .sf-comments__gate { margin-top: var(--space-6); padding-top: var(--space-6); border-top: 2px solid var(--color-divider); }
.sf-comment-form > :is(.sf-field, .sf-field-grid) { max-width: 64ch; }
.sf-comment-form .sf-form__actions { margin-top: var(--space-4); }

/* Sticky mobile contact bar — desktop keeps the sticky rail, so this is off there. */
.sf-buybar { display: none; }
@media (max-width: 860px) {
    .sf-buybar {
        position: fixed; inset-inline: 0; bottom: 0; z-index: 70;
        display: flex; align-items: center; gap: var(--space-4);
        padding: var(--space-2) var(--space-4);
        padding-bottom: max(var(--space-2), env(safe-area-inset-bottom));
        background: color-mix(in srgb, var(--color-surface) 92%, transparent);
        -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
        border-top: 2px solid var(--color-divider); box-shadow: var(--shadow-lg);
        animation: sf-buybar-in .25s cubic-bezier(.22, 1, .36, 1);
    }
    .sf-buybar[hidden] { display: none; }
    .sf-buybar__price { flex: 1; min-width: 0; display: flex; flex-direction: column; }
    .sf-buybar__amount { font-family: var(--font-heading); font-weight: 800; font-size: 18px; line-height: 1.1; color: var(--color-accent-ink); }
    .sf-buybar__amount--ask { font-size: 15px; color: var(--color-text); }
    .sf-buybar__title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; color: var(--color-muted); }
    .sf-buybar .sf-btn { flex: none; }
}
@keyframes sf-buybar-in { from { transform: translateY(100%); } to { transform: none; } }
@media (prefers-reduced-motion: reduce) { .sf-buybar { animation: none; } }

.sf-related { margin-top: var(--space-8); padding-top: var(--space-6); border-top: 2px solid var(--color-divider); }
.sf-related__title { font-size: 22px; margin: 0 0 var(--space-4); }
/* Four related cards: one row where the column allows it, a 2x2 block otherwise. */
.sf-related { container-type: inline-size; }
.sf-related .sf-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); }
@container (min-width: 640px) {
    .sf-related .sf-cards { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ── Admin moderation bar (admin-only; dashed to read as meta, not listing content) ── */
.sf-admin {
    background: var(--color-neutral-100); border: 1px dashed var(--color-neutral-400);
    border-radius: var(--radius-md); padding: var(--space-3); margin-bottom: var(--space-4);
}
.sf-admin__head { display: flex; align-items: center; gap: 6px; font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-muted); margin: 0 0 var(--space-3); }
.sf-admin__state { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 var(--space-3); padding: 0; }
.sf-state { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 800; letter-spacing: 0.02em; padding: 3px 8px; border-radius: calc(var(--radius-md) * 0.75); }
/* A per-state icon so status survives grayscale — the teal+coral palette alone
   can't separate Expired / Flagged / Blocked for a colourblind or fast-scanning eye. */
.sf-state svg { width: 12px; height: 12px; flex: none; }
.sf-state--ok { background: var(--color-accent-100); color: var(--color-accent-800); }
.sf-state--warn { background: var(--color-accent-2-100); color: var(--color-accent-2-800); }
/* Fill token: the -600 step this used to hard-code fails AA (teal ~3.7:1, indigo
   ~2.8:1) against the white label; --color-accent-2-fill is the step that clears it. */
.sf-state--danger { background: var(--color-accent-2-fill); color: var(--color-fixed-light); }
/* Benign, no-action-needed state (e.g. Pending review) — neutral, so it reads as
   distinct from the warm "needs attention" Expired chip rather than identical to it. */
.sf-state--muted { background: var(--color-neutral-200); color: var(--color-neutral-700); }
.sf-admin__actions { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); margin-bottom: var(--space-3); }
.sf-admin__form { margin: 0; }
.sf-admin__actions .sf-btn { width: 100%; font-size: 12px; }
.sf-admin__link { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; }

/* ── Prev / next listing nav ── */
.sf-itemnav { display: flex; gap: var(--space-3); margin-top: var(--space-8); padding-top: var(--space-6); border-top: 2px solid var(--color-divider); }
.sf-itemnav__link {
    display: inline-flex; align-items: center; gap: 8px; padding: var(--space-3) var(--space-4);
    border: 1px solid var(--color-divider); border-radius: var(--radius-md); background: var(--color-surface);
    color: var(--color-text); font-family: var(--font-heading); font-weight: 800; font-size: 14px;
    box-shadow: var(--shadow-sm); transition: border-color .15s ease, color .15s ease, transform .15s ease;
}
.sf-itemnav__link:hover { border-color: var(--color-accent); color: var(--color-accent-ink); text-decoration: none; }
.sf-itemnav__link--prev:hover { transform: translateX(-2px); }
.sf-itemnav__link--next { margin-inline-start: auto; text-align: end; }
.sf-itemnav__link--next:hover { transform: translateX(2px); }

/* ──────────────────────────────────────────────────────────────────────────
   Dialogs (native <dialog>): contact, share, report, lightbox
   ────────────────────────────────────────────────────────────────────────── */
.sf-dialog {
    width: min(520px, calc(100vw - 2 * var(--space-4))); padding: 0; border: 0;
    background: var(--color-surface); color: var(--color-text);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-lg);
}
.sf-dialog::backdrop { background: var(--color-scrim); }
.sf-dialog__head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: var(--space-4) var(--space-4) var(--space-2); }
.sf-dialog__title { font-size: 18px; margin: 0; }
.sf-dialog__close {
    flex: none; width: 34px; height: 34px; display: grid; place-items: center; cursor: pointer;
    color: var(--color-text); background: transparent; border: 0; border-radius: var(--radius-md);
}
.sf-dialog__close:hover { background: color-mix(in srgb, var(--color-text) 8%, transparent); }
.sf-dialog__body { padding: 0 var(--space-4) var(--space-4); }
.sf-dialog__actions { display: flex; justify-content: flex-end; gap: var(--space-2); padding: var(--space-3) var(--space-4) var(--space-4); }
.sf-dialog .sf-field:last-of-type { margin-bottom: 0; }
.sf-dialog .sf-report .sf-field { margin-bottom: var(--space-4); }
.sf-dialog .sf-field textarea { height: 120px; }

.sf-dialog__context {
    display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3);
    padding: var(--space-3); margin-bottom: var(--space-3);
    background: var(--color-neutral-100); border-radius: var(--radius-md);
}
.sf-dialog__context-title { font-family: var(--font-heading); font-weight: 800; font-size: 14px; }
.sf-dialog__context-price { font-family: var(--font-heading); font-weight: 800; color: var(--color-accent-ink); white-space: nowrap; }
.sf-dialog__note {
    display: flex; gap: 8px; align-items: flex-start; font-size: 13px; line-height: 1.5;
    padding: var(--space-3); margin-bottom: var(--space-4); border-radius: var(--radius-md);
    background: var(--color-accent-100); color: var(--color-accent-900);
}
.sf-dialog__note svg { flex: none; margin-top: 2px; }

/* Confirm — the branded guard for irreversible owner actions (footer.php #sf-confirm,
   driven by core JS). Names the exact item so the trust-critical moment is specific. */
.sf-confirm {
    width: min(420px, calc(100vw - 2 * var(--space-4))); padding: 0; border: 0;
    background: transparent; box-shadow: none;
}
.sf-confirm::backdrop { background: var(--color-scrim); }
.sf-confirm__box {
    background: var(--color-surface); color: var(--color-text);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); padding: var(--space-6);
}
.sf-confirm__title { font-family: var(--font-heading); font-weight: 800; font-size: 20px; margin: 0 0 var(--space-2); }
.sf-confirm__msg { color: var(--color-muted); line-height: 1.5; margin: 0 0 var(--space-6); }
.sf-confirm__actions { display: flex; justify-content: flex-end; gap: var(--space-2); }
@media (prefers-reduced-motion: no-preference) {
    .sf-confirm[open] .sf-confirm__box { animation: sf-confirm-in .16s ease-out; }
    @keyframes sf-confirm-in { from { opacity: 0; transform: translateY(6px) scale(.985); } }
}

/* Share */
.sf-share__copy { display: flex; gap: var(--space-2); }
.sf-share__copy .sf-input { flex: 1; font-family: ui-monospace, monospace; font-size: 13px; }
.sf-share__status { font-size: 12px; color: var(--color-muted); margin: var(--space-2) 0 0; min-height: 1em; }
.sf-share__targets { display: flex; gap: var(--space-2); flex-wrap: wrap; margin-top: var(--space-3); }
.sf-share__targets .sf-btn { flex: 1 1 auto; }

/* Full-viewport photo viewer. Mixed landscape and portrait images keep their
   natural ratio; a restrained copy of the same photo fills the stage instead
   of producing unrelated coloured blocks around portrait media. */
html.sf-lightbox-open { overflow: hidden; }
.sf-lightbox,
.sf-lightbox[open] {
    position: fixed; inset: 0; grid-template-rows: 64px minmax(0,1fr) 104px;
    width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0;
    border: 0; border-radius: 0; background: #081522; color: #fff; box-shadow: none; overflow: hidden;
}
.sf-lightbox[open] { display: grid; }
.sf-lightbox::backdrop { background: rgba(4,12,20,.96); }
.sf-lightbox__head { display:flex; align-items:center; justify-content:space-between; gap:20px; min-width:0; padding:10px 22px; border-bottom:1px solid rgba(255,255,255,.12); background:#0b1c2c; z-index:5; }
.sf-lightbox__head>div { display:flex; align-items:baseline; gap:12px; min-width:0; }
.sf-lightbox__head strong { font-size:16px; }
.sf-lightbox__count { font-family:ui-monospace,monospace; font-size:13px; color:rgba(255,255,255,.72); }
.sf-lightbox__stage { position:relative; display:grid; place-items:center; min-width:0; min-height:0; overflow:hidden; background:#07131f; isolation:isolate; }
.sf-lightbox__backdrop { position:absolute; inset:-48px; z-index:0; width:calc(100% + 96px); height:calc(100% + 96px); object-fit:cover; filter:blur(38px) saturate(.75) brightness(.42); opacity:.52; transform:scale(1.06); pointer-events:none; }
.sf-lightbox__stage::after { content:""; position:absolute; inset:0; z-index:0; background:rgba(3,12,20,.32); pointer-events:none; }
.sf-lightbox__img { position:absolute; inset-block:0; inset-inline:78px; z-index:1; display:block; width:calc(100% - 156px); height:100%; max-width:none; max-height:none; object-fit:contain; border-radius:4px; background:transparent; filter:drop-shadow(0 16px 34px rgba(0,0,0,.28)); transition:transform .18s ease; cursor:zoom-in; }
.sf-lightbox__btn { width:44px; height:44px; display:grid; place-items:center; flex:0 0 auto; cursor:pointer; color:#fff; background:rgba(6,22,35,.74); border:1px solid rgba(255,255,255,.2); border-radius:50%; }
.sf-lightbox__btn:hover { background:rgba(21,54,76,.94); border-color:rgba(255,255,255,.45); }
.sf-lightbox__btn:focus-visible,.sf-lightbox__dl:focus-visible,.sf-lightbox__thumbs button:focus-visible { outline:3px solid #20c7b7; outline-offset:3px; }
.sf-lightbox__close { position:static; }
.sf-lightbox__nav { position:absolute; top:50%; z-index:4; transform:translateY(-50%); }
.sf-lightbox__nav--prev { inset-inline-start:24px; }
.sf-lightbox__nav--next { inset-inline-end:24px; }
.sf-lightbox__foot { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:20px; min-width:0; padding:10px 22px; border-top:1px solid rgba(255,255,255,.12); background:#0b1c2c; z-index:5; }
.sf-lightbox__thumbs { display:flex; align-items:center; gap:8px; min-width:0; margin:0; padding:3px; list-style:none; overflow-x:auto; scrollbar-width:thin; overscroll-behavior-inline:contain; }
.sf-lightbox__thumbs li { flex:0 0 auto; }
.sf-lightbox__thumbs button { display:block; width:68px; height:68px; padding:0; overflow:hidden; cursor:pointer; border:2px solid transparent; border-radius:8px; background:#142b3d; opacity:.65; }
.sf-lightbox__thumbs button[aria-pressed="true"] { border-color:#20c7b7; opacity:1; }
.sf-lightbox__thumbs img { display:block; width:100%; height:100%; object-fit:cover; }
.sf-lightbox__dl { display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:9px 12px; border-radius:8px; color:#fff; font-size:13px; font-weight:750; text-decoration:none; white-space:nowrap; }
.sf-lightbox__dl:hover { background:rgba(255,255,255,.1); }
.sf-lightbox.is-zoomed .sf-lightbox__stage { overflow:auto; place-items:start center; }
.sf-lightbox.is-zoomed .sf-lightbox__img { transform:scale(1.5); transform-origin:center; cursor:zoom-out; }
.sf-lightbox.is-loading::after {
    content: ""; position: absolute; top: 50%; left: 50%; z-index: 3;
    width: 34px; height: 34px; margin: -17px; border: 3px solid rgba(255,255,255,.35);
    border-top-color: #fff; border-radius: 50%; animation: sf-gallery-spin .7s linear infinite;
    pointer-events: none;
}
@keyframes sf-gallery-spin { to { transform: rotate(360deg); } }
@media (max-width: 700px) {
    .sf-lightbox,.sf-lightbox[open] { grid-template-rows:56px minmax(0,1fr) 88px; }
    .sf-lightbox__head { padding:6px 12px; }
    .sf-lightbox__stage { touch-action:pan-y; }
    .sf-lightbox__img { inset-inline:0; width:100%; height:100%; max-width:none; max-height:none; border-radius:0; }
    .sf-lightbox__nav { width:42px; height:52px; border-radius:10px; }
    .sf-lightbox__nav--prev { inset-inline-start:8px; }
    .sf-lightbox__nav--next { inset-inline-end:8px; }
    .sf-lightbox__foot { grid-template-columns:minmax(0,1fr) auto; gap:8px; padding:8px 10px; }
    .sf-lightbox__thumbs button { width:58px; height:58px; }
    .sf-lightbox__dl { width:44px; padding:0; justify-content:center; }
    .sf-lightbox__dl span { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
}

/* Listing pages avoid large translucent sticky layers. Chromium and WebKit can
   repaint those layers on every scroll tick, which presents as header flicker on
   image-heavy pages. Solid surfaces keep the same contrast without the GPU churn. */
.sf-item .sf-header,
.sf:has(.sf-detail__grid) .sf-header { background: #0f2942; backdrop-filter: none; -webkit-backdrop-filter: none; }
.sf-item .wa-section-nav,
.sf:has(.sf-detail__grid) .wa-section-nav { background: var(--color-surface); backdrop-filter: none; -webkit-backdrop-filter: none; }
.sf-item .sf-gallery,
.sf:has(.sf-detail__grid) .sf-gallery { contain: layout paint; isolation: isolate; }
@media (prefers-reduced-motion: reduce) {
    .sf-lightbox__img { transition: none; }
    .sf-lightbox.is-loading::after { animation: none; }
}

/* ──────────────────────────────────────────────────────────────────────────
   Forms & account pages
   ────────────────────────────────────────────────────────────────────────── */
.sf-form { max-width: 680px; }
.sf-form--narrow { max-width: 440px; }
.sf-form__legend { font-family: var(--font-heading); font-weight: 800; font-size: 20px; margin: var(--space-6) 0 var(--space-4); }
.sf-form__legend:first-of-type { margin-top: 0; }
.sf-form__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-6); }
/* Post / edit listing page */
.sf-post, .sf-contact-page { margin-inline: auto; }
.sf-contact-page__title { font-size: 32px; }
.sf-contact-page .sf-dialog__actions { padding-inline: 0; }
.sf-post > .sf-hero__kicker {
    margin-bottom: var(--space-2); font-family: var(--font-heading); font-weight: 800; font-size: 12px;
    letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-accent-ink);
}
.sf-field.control-group-price { display: grid; grid-template-columns: minmax(0, 1fr) minmax(110px, 130px); gap: 0 var(--space-3); }
.sf-field.control-group-price > label { grid-column: 1 / -1; }
.sf-field.sf-field--check label:not(.sf-check) {
    display: flex; align-items: center; gap: var(--space-2); margin: 0;
    font-size: 14px; font-weight: 400; color: var(--color-text); cursor: pointer;
}
/* Core's photo uploader, on the theme's tokens. */
.sf-form .osc-uploader {
    --osc-rule: var(--color-divider); --osc-rule-strong: color-mix(in srgb, var(--color-text) 30%, transparent);
    --osc-bronze: var(--color-accent-fill); --osc-bronze-tint: color-mix(in srgb, var(--color-accent) 12%, var(--color-surface));
    --osc-ink-muted: var(--color-muted); --osc-bench-sunk: var(--color-neutral-100);
    --osc-danger: var(--color-accent-2-ink); --osc-danger-tint: color-mix(in srgb, var(--color-accent-2) 12%, var(--color-surface));
    --osc-radius: var(--radius-lg); --osc-radius-sm: var(--radius-sm);
}
.sf-field .osc-uploader label.osc-uploader-drop {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-2);
    min-height: 120px; margin: 0; padding: var(--space-4); text-align: center;
    font-size: 14px; font-weight: 400; color: var(--color-muted);
    background: var(--color-surface); border-radius: var(--radius-lg);
}
.sf-field .osc-uploader label.osc-uploader-drop:hover { border-color: var(--color-accent); color: var(--color-accent-ink); }
.sf-form__links { display: flex; flex-wrap: wrap; gap: var(--space-4); margin-top: var(--space-4); font-size: 14px; }

/* Grouped form (profile editor): labelled fieldset sections + a paired-field grid */
.sf-form__lede { color: var(--color-muted); font-size: 14px; margin: -4px 0 var(--space-6); max-width: 60ch; }
.sf-form__group { border: 0; margin: 0 0 var(--space-8); padding: 0; min-width: 0; }
.sf-form__group:last-of-type { margin-bottom: var(--space-6); }
.sf-form__group > .sf-form__legend { margin: 0 0 var(--space-4); padding: 0; }
.sf-field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 var(--space-4); }
@media (max-width: 560px) { .sf-field-grid { grid-template-columns: 1fr; } }

/* Avatar editor */
.sf-avatar-edit { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; }
.sf-avatar-edit__body { min-width: 0; flex: 1 1 12rem; }
.sf-avatar-edit__hint { color: var(--color-muted); font-size: 13px; margin: 0 0 var(--space-3); }
.sf-avatar-edit__actions { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; }
.sf-avatar-edit__remove { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: 13px; font-weight: 600; color: var(--color-muted); cursor: pointer; }
.sf-avatar-edit__remove input { accent-color: var(--color-accent-2); }
.sf-avatar-edit__remove:hover { color: var(--color-accent-2-ink); }

/* Avatar in the sticky header's account button */
.sf-nav__avatar { width: 26px; height: 26px; border-radius: var(--radius-sm); object-fit: cover; display: block; }
.sf-btn--avatar { overflow: hidden; }

/* Auth card wrapper */
.sf-authcard {
    max-width: 440px; margin-inline: auto;
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-md); padding: var(--space-6);
}

/* Account area — identity band on top, tab strip below, content stacked under.
   Deliberately NOT a sidebar: a rail stacked above content on mobile, so every
   account page opened on a menu instead of on the thing the user came for. */
.sf-account { display: flex; flex-direction: column; gap: var(--space-6); }
.sf-account__main { min-width: 0; }
/* "Your data" — the two requests someone can make about their own account. Ruled
   off from the profile form above it, because neither is part of editing a
   profile: one hands over everything held about them, the other ends the account.
   The destructive half sits in its own tinted panel so it reads as a separate
   decision rather than the next control in a list. */
.sf-account__data { border-top: 2px solid var(--color-divider); margin-top: var(--space-8); padding-top: var(--space-6); }
.sf-account__data .sf-section__title { margin-bottom: var(--space-4); }
/* Tinted with color-mix over whatever the surface is, not with the fixed -100 step:
   that step is a light value in every palette and does not flip, so on a dark
   background it put near-white body text on pale pink. */
.sf-account__data .sf-field--danger { background: color-mix(in srgb, var(--color-accent-2) 12%, transparent); border-radius: var(--radius-md); margin-top: var(--space-6); padding: var(--space-5); }
.sf-account__data .sf-field--danger .sf-form__lede { margin: 0 0 var(--space-4); }
.sf-dialog__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); justify-content: flex-end; margin-top: var(--space-6); }
/* Public seller identity card — the buyer's trust moment. Mirrors the account
   identity band, tuned for a larger avatar and a stranger's first impression.
   (Named -card to stay clear of .sf-seller, the item-page buy-box.) */
.sf-sellercard { display: flex; align-items: center; gap: var(--space-6); flex-wrap: wrap; margin-bottom: var(--space-6); }
.sf-sellercard__identity { min-width: 0; flex: 1 1 14rem; }
.sf-sellercard__name {
    font-family: var(--font-heading); font-weight: 800; font-size: clamp(26px, 4vw, 34px);
    line-height: 1.08; letter-spacing: -0.015em; margin: 0;
}
.sf-sellercard__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 8px 0 0; color: var(--color-muted); font-size: 14px; }
.sf-sellercard__loc { display: inline-flex; align-items: center; gap: 4px; }
.sf-sellercard__sep { color: color-mix(in srgb, var(--color-text) 35%, transparent); }
.sf-sellercard__web { display: inline-flex; align-items: center; gap: 5px; margin-top: 10px; font-size: 14px; font-weight: 700; color: var(--color-accent-ink); }
.sf-sellercard__web:hover { color: var(--color-accent-ink); text-decoration: none; }
.sf-sellercard__subhead { font-size: 20px; margin: var(--space-8) 0 var(--space-4); }
.sf-sellercard__about { color: var(--color-text); line-height: 1.7; max-width: 65ch; }

/* Public profile body — the seller's listings lead, with a sticky contact panel
   in a rail to the RIGHT (mirroring the item page's buy-box). Two columns only
   when both a contact panel and listings exist; else it collapses to one stack,
   listings first (they come first in the DOM). */
.sf-pubprofile { display: grid; grid-template-columns: 1fr minmax(0, 320px); gap: var(--space-6); align-items: start; }
.sf-pubprofile--solo { display: block; }
.sf-pubprofile__main { min-width: 0; }
.sf-pubprofile__aside { position: sticky; top: var(--space-6); }
.sf-pubprofile--solo .sf-pubprofile__aside { position: static; }
@media (max-width: 860px) {
    .sf-pubprofile { grid-template-columns: 1fr; }
    .sf-pubprofile__aside { position: static; }
}
.sf-contact-gate__text { color: var(--color-muted); font-size: 14px; line-height: 1.55; margin: 0 0 var(--space-4); }
.sf-contact-gate .sf-btn + .sf-btn { margin-top: var(--space-2); }

/* Identity band */
.sf-account-head { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; }
/* Avatar — shared component. The brand mark is a teal square, so avatars echo it
   (rounded-square, not round). Shows an uploaded photo or a monogram fallback.
   Fill token, not raw --color-accent, so the monogram's white text clears AA. */
.sf-avatar {
    flex: none; width: 60px; height: 60px; border-radius: var(--radius-lg);
    display: grid; place-items: center; overflow: hidden;
    background: var(--color-accent-fill); color: var(--color-fixed-light); box-shadow: var(--shadow-sm);
}
.sf-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-avatar__monogram { font-family: var(--font-heading); font-weight: 800; font-size: 26px; line-height: 1; }
.sf-avatar--lg { width: 104px; height: 104px; border-radius: calc(var(--radius-lg) * 1.4); }
.sf-avatar--lg .sf-avatar__monogram { font-size: 44px; }
.sf-account-head__identity { min-width: 0; flex: 1 1 12rem; }
.sf-account-head__name {
    font-family: var(--font-heading); font-weight: 800; font-size: 28px;
    line-height: 1.1; letter-spacing: -0.015em; margin: 0;
}
.sf-account-head__meta {
    display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
    margin: 5px 0 0; color: var(--color-muted); font-size: 13px;
}
.sf-account-head__place { display: inline-flex; align-items: center; gap: 4px; }
.sf-account-head__sep { color: color-mix(in srgb, var(--color-text) 35%, transparent); }
.sf-account-head__actions { display: flex; gap: var(--space-2); flex: none; }

/* Tab strip — one row, current tab underlined; scrolls sideways on small screens
   rather than stacking, so content stays above the fold. */
.sf-account-tabs { display: flex; gap: 2px; flex-wrap: wrap; border-bottom: 2px solid var(--color-divider); }
.sf-account-tab {
    display: inline-flex; align-items: center; gap: 7px; white-space: nowrap;
    padding: 10px 14px; margin-bottom: -2px; border-bottom: 2px solid transparent;
    color: var(--color-muted); font-size: 14px; font-weight: 600;
}
.sf-account-tab svg { opacity: .85; }
.sf-account-tab:hover { color: var(--color-text); text-decoration: none; }
.sf-account-tab.is-active { color: var(--color-accent-ink); border-bottom-color: var(--color-accent); }
.sf-account-tab.is-active svg { opacity: 1; }
.sf-account-tabs + .sf-settings-nav { margin-top: calc(var(--space-3) - var(--space-6)); }
@media (max-width: 640px) {
    .sf-account-tabs { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
    .sf-account-tabs::-webkit-scrollbar { display: none; }
    .sf-account-head__actions { width: 100%; }
    .sf-account-head__actions .sf-btn { flex: 1 1 auto; }
}
@media (max-width: 420px) {
    .sf-account-head__actions { display: grid; grid-template-columns: minmax(0, 1fr); }
    .sf-account-head__actions .sf-btn { width: 100%; min-width: 0; white-space: normal; text-align: center; }
}

/* Dashboard overview */
.sf-dash-lead { margin: 6px 0 0; color: var(--color-muted); font-size: 14px; }
.sf-dash-lead__count {
    font-family: var(--font-heading); font-weight: 800; color: var(--color-text);
    font-size: 18px; margin-inline-end: 2px;
}
.sf-account-more {
    display: inline-flex; align-items: center; gap: 4px; white-space: nowrap;
    color: var(--color-accent-ink); font-weight: 700; font-size: 14px;
}
.sf-account-more:hover { color: var(--color-accent-ink); text-decoration: none; }

/* Dashboard card owner actions — a View / Edit / Delete footer on the owner's own
   listings (loop.php gates it behind sfCardOwner; never on a public grid). */
.sf-card__actions { display: flex; gap: var(--space-1); padding: var(--space-2) var(--space-3); border-top: 1px solid var(--color-divider); }
.sf-card__actions .sf-btn { flex: 1; padding-inline: var(--space-2); font-size: 12px; }
/* View + Edit are the co-equal pair that stretch; Delete stays compact and pushed
   to the end so the destructive action isn't given routine-action prominence. */
.sf-card__actions .sf-card__delete { flex: 0 0 auto; margin-inline-start: var(--space-1); color: var(--color-accent-2-ink); }
.sf-card__delete:hover { background: var(--color-accent-2-100); color: var(--color-accent-2-800); }

/* Manage listings — a table on desktop, stacked rows on mobile, with a status +
   actions column. Owner-only (user-items.php), so edit/delete are always safe. */
.sf-manage-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); margin-bottom: var(--space-4); }
.sf-manage-head .sf-section__title { margin: 0; }
/* Status filter chips above the manage list (built by storefront-account.js). */
.sf-manage-filter { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-4); }
.sf-filter-chip {
    display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
    padding: 6px 12px; font-family: var(--font-heading); font-weight: 800; font-size: 13px;
    color: var(--color-muted); background: var(--color-surface);
    border: 1px solid var(--color-divider); border-radius: 999px;
    transition: color .12s ease, background .12s ease, border-color .12s ease;
}
.sf-filter-chip:hover { color: var(--color-text); border-color: color-mix(in srgb, var(--color-text) 22%, var(--color-divider)); }
/* Fill token: white label on raw --color-accent fails AA (teal ~3:1). */
.sf-filter-chip.is-active { color: var(--color-fixed-light); background: var(--color-accent-fill); border-color: var(--color-accent-fill); }
.sf-filter-chip__n { font-size: 11px; font-variant-numeric: tabular-nums; padding: 1px 6px; border-radius: 999px; background: color-mix(in srgb, var(--color-text) 8%, transparent); }
.sf-filter-chip.is-active .sf-filter-chip__n { background: color-mix(in srgb, var(--color-fixed-light) 24%, transparent); }
.sf-manage__row.is-hidden { display: none; }
.sf-manage { list-style: none; margin: 0; padding: 0; background: var(--color-surface); border: 1px solid var(--color-divider); border-radius: var(--radius-lg); overflow: hidden; }
.sf-manage__headrow, .sf-manage__row { display: grid; grid-template-columns: minmax(0, 1fr) 96px 84px 128px; align-items: center; gap: var(--space-4); padding: var(--space-3) var(--space-4); }
.sf-manage__headrow { background: var(--color-neutral-100); font-family: var(--font-heading); font-weight: 800; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-muted); }
.sf-manage__col-actions { text-align: right; }
.sf-manage__row + .sf-manage__row, .sf-manage__headrow + .sf-manage__row { border-top: 1px solid var(--color-divider); }
.sf-manage__row:hover { background: color-mix(in srgb, var(--color-text) 3%, transparent); }
.sf-manage__listing { display: flex; align-items: center; gap: var(--space-3); min-width: 0; color: var(--color-text); }
.sf-manage__listing:hover { text-decoration: none; }
.sf-manage__listing:hover .sf-manage__title { color: var(--color-accent-ink); }
.sf-manage__thumb { position: relative; flex: none; width: 56px; height: 56px; border-radius: var(--radius-md); overflow: hidden; background: var(--color-neutral-200); }
.sf-manage__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-manage__thumb .sf-card__noimg { display: block; width: 100%; height: 100%; }
.sf-manage__info { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.sf-manage__title { font-family: var(--font-heading); font-weight: 800; font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sf-manage__sub { display: flex; gap: var(--space-2); font-size: 12px; color: var(--color-muted); }
.sf-manage__price { color: var(--color-accent-ink); font-weight: 800; }
.sf-manage__views { display: inline-flex; align-items: center; gap: 4px; font-family: ui-monospace, monospace; font-size: 13px; color: var(--color-neutral-700); }
.sf-manage__actions { display: flex; gap: var(--space-1); justify-content: flex-end; }
.sf-manage__delete { color: var(--color-accent-2-ink); }
.sf-manage__delete:hover { border-color: color-mix(in srgb, var(--color-accent-2) 40%, var(--color-divider)); color: var(--color-accent-2-ink); }
.sf-manage__actlabel { display: none; }
@media (max-width: 760px) {
    .sf-manage__headrow { display: none; }
    .sf-manage__row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); }
    .sf-manage__listing { flex: 1 1 100%; }
    /* Full title on mobile: it's how the row is identified before edit/delete, so it
       must not truncate — wrap to two lines instead. */
    .sf-manage__title { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
    .sf-manage__actions { flex: 1 1 100%; justify-content: flex-start; }
    /* Icon-only loses its meaning on touch (no tooltip); show the label and let the
       button size to it. */
    .sf-manage__actions .sf-btn { width: auto; min-width: 44px; padding-inline: var(--space-3); gap: 6px; }
    .sf-manage__actlabel { display: inline; }
}

/* Account settings sub-navigation — a segmented control for Profile / Username /
   E-mail / Password, inside the Profile section. */
/* One-line segmented control — scrolls horizontally on narrow screens rather than
   wrapping a lone "Password" onto a second row (which reads as a layout hiccup). */
.sf-settings-nav { display: flex; flex-wrap: nowrap; gap: var(--space-1); padding: var(--space-1); background: var(--color-neutral-100); border-radius: var(--radius-md); overflow-x: auto; scrollbar-width: none; }
.sf-settings-nav::-webkit-scrollbar { display: none; }
.sf-settings-nav__tab { flex: none; white-space: nowrap; padding: var(--space-2) var(--space-4); border-radius: var(--radius-sm); font-family: var(--font-heading); font-weight: 800; font-size: 13px; color: var(--color-muted); }
.sf-settings-nav__tab:hover { color: var(--color-text); text-decoration: none; }
.sf-settings-nav__tab.is-active { background: var(--color-surface); color: var(--color-accent-ink); box-shadow: var(--shadow-sm); }

/* Per-listing view count, account grids only */
.sf-card__views { display: inline-flex; align-items: center; gap: 4px; }
.sf-card__views svg { opacity: .8; }

/* Empty state — reusable: icon, headline, one reassuring line, one action */
.sf-empty-state {
    display: flex; flex-direction: column; align-items: center; text-align: center;
    gap: var(--space-3); padding: var(--space-8) var(--space-6);
}
.sf-empty-state__icon {
    display: grid; place-items: center; width: 60px; height: 60px; border-radius: 50%;
    background: var(--color-accent-100); color: var(--color-accent-700);
}
.sf-empty-state__title { font-family: var(--font-heading); font-weight: 800; font-size: 20px; margin: 0; }
.sf-empty-state__text { color: var(--color-muted); font-size: 14px; max-width: 44ch; margin: 0; }
.sf-empty-state__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-2); margin-top: var(--space-1); }
.sf-btn--lg { font-size: 15px; padding: 11px 20px; }

.sf-page > .sf-section__title { margin: 0 0 var(--space-4); }
.sf-page__body { line-height: 1.7; max-width: 68ch; }
.sf-page__body h2, .sf-page__body h3 { margin-top: var(--space-6); }
/* Page-builder canvas: stacked widget blocks get vertical rhythm without a max-width
   cap (a block may be a full-width band, not prose). See template-widgets.php. */
.sf-page__blocks { max-width: none; }
.sf-page__blocks > * + * { margin-top: var(--space-8); }

/* 404 */
.sf-error__code {
    font-family: ui-monospace, monospace; font-size: clamp(56px, 10vw, 96px);
    line-height: 0.9; color: var(--color-accent-ink); letter-spacing: -0.04em; margin-bottom: var(--space-3);
}

/* ──────────────────────────────────────────────────────────────────────────
   Footer
   ────────────────────────────────────────────────────────────────────────── */
/* The 2px signature rule earns its weight: stepped up from the 16% divider so it
   reads as an authored line, not a hairline. Derived from --color-text, so it holds
   in both themes. */
.sf-footer { border-top: 2px solid color-mix(in srgb, var(--color-text) 22%, transparent); margin-top: var(--space-8); }
.sf-footer__grid {
    display: flex; flex-wrap: wrap; align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-8) var(--space-6);
    padding-block: var(--space-8);
}
/* Brand is capped so its tagline fills the box (no dead trailing space); nav columns
   size to their own content. flex:0 so they never balloon into rivers, and
   space-between spreads all four across the full width in an even rhythm rather than
   clustering into a lopsided band. */
.sf-footer__brand { flex: 0 1 300px; min-width: 220px; }
.sf-footer__links { flex: 0 1 auto; min-width: 120px; display: flex; flex-direction: column; }
@media (max-width: 860px) {
    /* Brand takes its own row; nav columns share the row below and fill it. */
    .sf-footer__brand { flex-basis: 100%; }
    .sf-footer__links { flex: 1 1 140px; }
}
@media (max-width: 480px) {
    .sf-footer__links { flex-basis: 100%; }
}

.sf-footer__brand .sf-logo { display: inline-flex; margin-bottom: var(--space-3); }
.sf-footer__tagline { color: var(--color-muted); font-size: 14px; line-height: 1.5; max-width: 34ch; margin: 0 0 var(--space-4); }
/* The footer's one action deserves a comfortable box, not the compact inline size. */
.sf-footer__cta { display: inline-flex; align-items: center; gap: 6px; min-height: 42px; padding-inline: var(--space-4); }

/* Social row — icon buttons at a full 40px tap target; muted by default so the row reads
   quiet next to the tagline, stepping to the accent on hover/focus. Icons are drawn with
   currentColor so they follow that colour change for free. */
.sf-footer__social { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin: 0 0 var(--space-4); }
.sf-footer__social-link {
    display: inline-flex; align-items: center; justify-content: center;
    width: 40px; height: 40px; border-radius: var(--radius-md);
    color: var(--color-muted);
    transition: color .15s ease, background-color .15s ease;
}
.sf-footer__social-link svg { width: 18px; height: 18px; fill: currentColor; }
.sf-footer__social-link:hover,
.sf-footer__social-link:focus-visible {
    color: var(--color-accent-ink);
    background: color-mix(in srgb, var(--color-accent) 10%, transparent);
}

/* Structure leads: the label sits at near-full ink (not muted), so the uppercase
   Archivo 800 reads as the strongest layer of the column, above its links. */
.sf-footer__links h2 {
    font-family: var(--font-heading); font-weight: 800; font-size: 12px;
    letter-spacing: 0.08em; text-transform: uppercase;
    color: color-mix(in srgb, var(--color-text) 92%, transparent);
    margin: 0 0 var(--space-2);
}
/* Tight, even rows on desktop (pointer); a full 44px tap box on the mobile stack. */
.sf-footer__links a {
    display: inline-flex; align-items: center; min-height: 30px;
    color: color-mix(in srgb, var(--color-text) 82%, transparent);
    font-size: 14px; line-height: 1.3;
}
.sf-footer__links a:hover { color: var(--color-accent-ink); }
@media (max-width: 860px) { .sf-footer__links a { min-height: 44px; } }

.sf-footer__legal { border-top: 1px solid var(--color-divider); }
.sf-footer__legal-row {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
    gap: var(--space-2) var(--space-6); padding-block: var(--space-3);
}
.sf-footer__copy { color: var(--color-muted); font-size: 13px; margin: 0; }
.sf-footer__copy a { color: var(--color-accent-ink); font-weight: 600; }
.sf-footer__copy a:hover { text-decoration: underline; }
.sf-footer__sep { margin-inline: 4px; }

.sf-footer__legal-end { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-6); }
.sf-footer__lang { display: flex; flex-wrap: wrap; gap: 2px 8px; align-items: center; }
.sf-footer__lang-label {
    font-family: var(--font-heading); font-weight: 800; font-size: 11px;
    letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-muted);
}
.sf-footer__lang a {
    display: inline-flex; align-items: center; min-height: 40px; padding-inline: 2px;
    color: var(--color-muted); font-size: 13px;
}
.sf-footer__lang a:hover { color: var(--color-accent-ink); }
/* Active locale marked by ink + underline, not weight alone, so "which is current"
   is unambiguous at a glance. */
.sf-footer__lang a.is-active {
    color: var(--color-text); font-weight: 700;
    text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 2px;
}

/* Collapsed switcher for many locales — a disclosure labelled with the current
   language; the list floats above the legal bar instead of wrapping it. */
.sf-footer__lang-menu { position: relative; }
.sf-footer__lang-menu > summary {
    display: inline-flex; align-items: center; gap: 6px; min-height: 40px;
    list-style: none; cursor: pointer;
    color: var(--color-muted); font-size: 13px; font-weight: 600;
}
.sf-footer__lang-menu > summary::-webkit-details-marker { display: none; }
.sf-footer__lang-menu > summary:hover,
.sf-footer__lang-menu[open] > summary { color: var(--color-text); }
.sf-footer__lang-menu > summary > svg:last-child { transition: transform .15s ease; }
.sf-footer__lang-menu[open] > summary > svg:last-child { transform: rotate(180deg); }
.sf-footer__lang-list {
    position: absolute; bottom: calc(100% + 6px); inset-inline-end: 0; z-index: 20;
    display: flex; flex-direction: column; min-width: 168px; max-height: 264px; overflow-y: auto;
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-md); box-shadow: var(--shadow-md); padding: var(--space-1);
}
.sf-footer__lang-list a {
    display: flex; align-items: center; min-height: 40px; padding-inline: var(--space-2);
    border-radius: var(--radius-sm); font-size: 13px;
    color: color-mix(in srgb, var(--color-text) 82%, transparent);
}
.sf-footer__lang-list a:hover { background: var(--color-neutral-100); color: var(--color-accent-ink); }
.sf-footer__lang-list a.is-active { color: var(--color-text); font-weight: 700; }
@media (prefers-reduced-motion: reduce) { .sf-footer__lang-menu > summary > svg:last-child { transition: none; } }

.sf-footer__top {
    display: inline-flex; align-items: center; gap: 6px; min-height: 40px;
    color: var(--color-muted); font-size: 13px; font-weight: 600;
}
.sf-footer__top:hover { color: var(--color-accent-ink); }
.sf-footer__top svg { transition: transform .15s ease; }
.sf-footer__top:hover svg { transform: translateY(-2px); }
@media (prefers-reduced-motion: reduce) { .sf-footer__top svg { transition: none; } }

/* ──────────────────────────────────────────────────────────────────────────
   Responsive nav
   ────────────────────────────────────────────────────────────────────────── */
@media (max-width: 860px) {
    .sf-nav-toggle { display: flex; }
    /* Header has condensed to the hamburger row — hand off to the compact mark. */
    .sf-logo__mark--full { display: none; }
    .sf-logo__mark--compact { display: inline-flex; }
    .sf-nav {
        position: absolute; inset-inline: 0; top: 100%; flex-direction: column; align-items: stretch;
        gap: 0; background: var(--color-bg); border-bottom: 2px solid var(--color-divider);
        padding: var(--space-2) var(--space-6) var(--space-4); display: none;
        max-height: calc(100vh - var(--sf-header-h)); overflow-y: auto; overscroll-behavior: contain;
    }
    .sf-nav.is-open { display: flex; }
    .sf-nav__link { padding: 12px 0; border-bottom: 1px solid var(--color-divider); }
    .sf-nav__link[aria-current] { font-weight: 800; }
    .sf-nav__link[aria-current]::after { display: none; }
    .sf-nav__cta { margin-top: var(--space-3); }

    /* Account cluster becomes an inline, always-open list inside the drawer:
       an identity row (avatar + name) with its menu items indented beneath it. */
    .sf-account { width: 100%; }
    .sf-account__toggle {
        width: 100%; justify-content: flex-start; margin: 0; padding: 12px 0;
        min-height: 44px; border-radius: 0; border-bottom: 1px solid var(--color-divider);
    }
    .sf-account__toggle > svg { display: none; }
    .sf-account__toggle .sf-account__avatar { width: 38px; height: 38px; }
    .sf-account__name { max-width: none; font-weight: 700; }
    .sf-account__menu, .sf-account__menu[hidden] {
        position: static; display: flex; z-index: auto; min-width: 0;
        padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; animation: none;
    }
    .sf-account__item {
        padding: 12px 0 12px var(--space-6); min-height: 44px; border-radius: 0;
        border-bottom: 1px solid var(--color-divider);
    }
    .sf-account__item:hover { background: none; }
    .sf-account__sep { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    * { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
}

/* ==========================================================================
   Pages core draws — account, sign-in, profile, contact.
   Core prints .oe-* markup with its own small stylesheet after this one, so
   rules here carry the extra `.sf` (body) class to win, and core's colour
   tokens are pointed at the theme's so light/dark still flips.
   ========================================================================== */
.sf .oe-page {
    --oe-ink: var(--color-text); --oe-ink-muted: var(--color-muted);
    --oe-teal: var(--color-accent-ink); --oe-teal-deep: var(--color-accent-fill-hover);
    --oe-rule: var(--color-divider); --oe-bench: var(--color-surface);
    --oe-bench-sunk: var(--color-neutral-100); --oe-danger: var(--color-accent-2-ink);
    --oe-success: var(--color-accent-ink);
}
.sf .oe-page .oe-doc { max-width: none; margin: 0; padding: 0; }
.sf .oe-page .oe-h1 { font-family: var(--font-heading); font-weight: 800; font-size: 32px; letter-spacing: -.01em; margin: 0 0 var(--space-4); }
.sf .oe-page h2 { font-family: var(--font-heading); font-weight: 800; }

/* Account pages: the theme's band and tabs (account_page_before) replace core's
   heading and side menu, which stay in the page for screen readers only. */
.sf .oe-doc:has(> .oe-account) > .oe-h1,
.sf .oe-page .oe-account-nav {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.sf .oe-page .oe-account { display: block; }
.sf .oe-page .oe-account-main > .sf-account { margin-bottom: var(--space-6); }
.sf .oe-page .oe-dashboard-intro, .sf .oe-page .oe-dashboard-actions,
.sf .oe-page .oe-dashboard-title,
.sf .oe-page .oe-dashboard-more { display: none; }

/* Buttons and fields */
.sf .oe-page .oe-btn, .sf .oe-page .oe-actions a.oe-primary {
    display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-heading); font-weight: 800;
    font-size: 14px; line-height: 1.2; padding: calc(var(--space-2) * 0.85) var(--space-3);
    border-radius: var(--radius-md); border: 1px solid transparent; background: var(--color-accent-fill);
    color: var(--color-fixed-light); text-decoration: none;
}
.sf .oe-page .oe-btn:hover { background: var(--color-accent-fill-hover); color: var(--color-fixed-light); }
.sf .oe-page .oe-btn.oe-secondary, .sf .oe-page .oe-actions a.oe-secondary {
    background: transparent; color: var(--color-text); border-color: var(--color-divider);
}
.sf .oe-page .oe-btn.oe-secondary:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); color: var(--color-text); }
.sf .oe-page .oe-btn-danger { background: var(--color-accent-2-700); border-color: transparent; color: var(--color-fixed-light); }
.sf .oe-page .oe-btn-danger:hover { background: var(--color-accent-2-800); }
.sf .oe-page .oe-label { font-size: 13px; font-weight: 600; color: var(--color-muted); margin-bottom: 5px; }
.sf .oe-page .oe-field :is(input:not([type=checkbox]):not([type=radio]):not([type=file]), select, textarea) {
    width: 100%; max-width: none; min-height: 40px; padding: 8px 10px; font: inherit; font-size: 14px;
    color: var(--color-text); background: var(--color-surface);
    border: 1px solid var(--color-divider); border-radius: var(--radius-md);
}
.sf .oe-page .oe-field :is(input, select, textarea):focus {
    border-color: var(--color-accent); outline: none;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent) 30%, transparent);
}
.sf .oe-page .oe-field textarea { min-height: 96px; resize: vertical; }
.sf .oe-page .oe-hint, .sf .oe-page .oe-muted { color: var(--color-muted); font-size: 13px; }

/* Sign in, register and password pages: the theme's auth card. */
.sf .oe-page .oe-doc:has(> .oe-form-page) {
    max-width: 440px; margin: var(--space-6) auto var(--space-8);
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-md); padding: var(--space-6);
}
.sf .oe-page .oe-doc:has(> .oe-form-page) > .oe-h1 { font-size: 28px; margin-bottom: var(--space-4); }
.sf .oe-page .oe-form-page .oe-btn[type=submit] { width: 100%; min-height: 40px; justify-content: center; }
.sf .oe-page .oe-form-page form > .oe-check { display: flex; margin: 0; }
.sf .oe-page .oe-form-page form > .oe-actions { margin-top: var(--space-4); }
.sf .oe-page .oe-form-page :is(.oe-actions a, .oe-muted) { font-size: 13px; }

/* Panels, empty states, status tabs, pager */
.sf .oe-page .oe-panel {
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-lg); padding: var(--space-6); margin-bottom: var(--space-4);
}
.sf .oe-page .oe-empty {
    padding: var(--space-8) var(--space-6); text-align: center; color: var(--color-muted);
    font-size: 14px; border: 1px dashed var(--color-divider); border-radius: var(--radius-lg);
}
.sf .oe-page .oe-tabs {
    display: flex; flex-wrap: nowrap; gap: var(--space-1); margin-bottom: var(--space-4);
    padding: var(--space-1); background: var(--color-neutral-100); border: 0;
    border-radius: var(--radius-md); overflow-x: auto; scrollbar-width: none;
}
.sf .oe-page .oe-tabs a {
    flex: none; padding: var(--space-2) var(--space-4); border: 0; margin: 0; border-radius: var(--radius-sm);
    font-family: var(--font-heading); font-weight: 800; font-size: 13px; color: var(--color-muted);
}
.sf .oe-page .oe-tabs [aria-current] { background: var(--color-surface); color: var(--color-accent-ink); box-shadow: var(--shadow-sm); }
.sf .oe-page .oe-pager { margin-top: var(--space-6); padding-top: var(--space-4); border-top: 2px solid var(--color-divider); justify-content: center; }
.sf .oe-page .oe-pager ul { display: flex; flex-wrap: wrap; gap: var(--space-2); list-style: none; padding: 0; margin: 0; }
.sf .oe-page .oe-pager :is(a, span) {
    display: inline-flex; align-items: center; justify-content: center; min-width: 40px; min-height: 40px;
    padding: 0 var(--space-3); border: 1px solid var(--color-divider); border-radius: var(--radius-md);
    color: var(--color-text); font-family: ui-monospace, monospace; font-size: 13px;
}
.sf .oe-page .oe-pager .searchPaginationSelected { background: var(--color-accent-fill); border-color: transparent; color: var(--color-fixed-light); }

/* My listings: POST actions sit in the icon row like links. */
.sf-manage__form { display: contents; }
.sf-manage__promote {
    grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2);
    padding-top: var(--space-2); font-size: 12px; color: var(--color-muted);
}
.sf-manage__promote-label { font-weight: 600; }
.sf-manage__status { display: flex; flex-wrap: wrap; gap: 4px; }

/* Profile form: core's groups take the theme's sections. */
.sf .oe-page form:has(> .oe-group) { max-width: 680px; }
.sf .oe-page .oe-group { margin: 0 0 var(--space-8); }
.sf .oe-page .oe-group > legend { font-family: var(--font-heading); font-weight: 800; font-size: 20px; margin: 0 0 var(--space-4); padding: 0; }
.sf .oe-page .oe-grid { grid-template-columns: 1fr 1fr; gap: 0 var(--space-4); }
@media (max-width: 640px) { .sf .oe-page .oe-grid { grid-template-columns: 1fr; } }
.sf .oe-page .oe-avatar-field { align-items: center; gap: var(--space-4); }
.sf .oe-page .oe-avatar, .sf .oe-page .oe-avatar-field .sf-avatar {
    width: 104px; height: 104px; margin: 0; border-radius: calc(var(--radius-lg) * 1.4); object-fit: cover; opacity: 1;
}
.sf .oe-page .oe-avatar-field input[type=file] { font-size: 13px; color: var(--color-muted); }
.sf .oe-page .oe-avatar-field input[type=file]::file-selector-button {
    font: inherit; font-family: var(--font-heading); font-weight: 800; font-size: 13px; margin-right: var(--space-3);
    padding: 6px var(--space-3); border-radius: var(--radius-md); cursor: pointer;
    background: transparent; color: var(--color-text); border: 1px solid var(--color-divider);
}
.sf .oe-page .oe-check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--color-muted); margin-top: var(--space-2); }
.sf .oe-page .oe-danger { max-width: 680px; }
.sf .oe-page .oe-avatar-field input[type=file] { border: 0; padding: 0; background: none; min-height: 0; max-width: none; width: auto; }
.sf .oe-page .oe-account-main > .oe-panel { max-width: 680px; }
.sf .oe-page .oe-panel > h2 { font-size: 20px; margin: 0 0 var(--space-3); }

/* Public profile: picture beside the name and details, the Message button on the right. */
.sf .oe-page .oe-doc:has(> .oe-profile-head) {
    display: grid; grid-template-columns: 104px minmax(0, 1fr) auto; column-gap: var(--space-4); align-items: center;
}
.sf .oe-page .oe-doc:has(> .oe-profile-head) > * { grid-column: 1 / -1; }
.sf .oe-page .oe-doc:has(> .oe-profile-head) > .oe-h1 { grid-column: 2; grid-row: 1; align-self: end; margin: 0; }
.sf .oe-page .oe-profile-head { display: contents; }
.sf .oe-page .oe-profile-head > .oe-avatar { grid-column: 1; grid-row: 1 / span 2; width: 104px; height: 104px; border-radius: calc(var(--radius-lg) * 1.4); box-shadow: var(--shadow-sm); }
.sf .oe-page .oe-profile-head > .oe-meta { grid-column: 2; grid-row: 2; align-self: start; margin: 6px 0 0; font-size: 14px; }
.sf .oe-page .oe-profile-head > .oe-actions { grid-column: 3; grid-row: 1 / span 2; margin: 0; }
.sf .oe-page .oe-doc:has(> .oe-profile-head) > h2 { font-size: 26px; margin: var(--space-8) 0 var(--space-4); }
@media (max-width: 640px) {
    .sf .oe-page .oe-doc:has(> .oe-profile-head) { grid-template-columns: 72px minmax(0, 1fr); }
    .sf .oe-page .oe-profile-head > .oe-avatar { width: 72px; height: 72px; }
    .sf .oe-page .oe-profile-head > .sf-avatar .sf-avatar__monogram { font-size: 32px; }
    .sf .oe-page .oe-profile-head > .oe-actions { grid-column: 1 / -1; grid-row: 3; margin-top: var(--space-4); }
}

/* Core's message dialog, in the theme's dialog look. */
.sf .oe-dialog[data-osc-dialog-ready] {
    width: min(480px, calc(100vw - 2 * var(--space-4))); border: 0; border-radius: var(--radius-lg);
    background: var(--color-surface); color: var(--color-text); box-shadow: var(--shadow-lg);
}
.sf .oe-dialog[data-osc-dialog-ready]::backdrop { background: var(--color-scrim); }
.sf .oe-dialog-head { border-color: var(--color-divider); padding: var(--space-4) var(--space-6); }
.sf .oe-dialog-head h2 { font-family: var(--font-heading); font-weight: 800; font-size: 20px; }
.sf .oe-dialog-body { padding: var(--space-4) var(--space-6) var(--space-6); }
.sf .oe-dialog-body .oe-actions .oe-btn { width: 100%; justify-content: center; }
.sf .oe-form-error {
    border-color: var(--color-accent-2-ink); color: var(--color-accent-2-ink);
    background: color-mix(in srgb, var(--color-accent-2) 12%, transparent);
}

/* Contact page: the form, and the support panels beside it. */
.sf .oe-page .oe-contact { grid-template-columns: minmax(0, 1fr) 320px; gap: var(--space-8); }
.sf .oe-page .oe-contact-main { max-inline-size: none; }
.sf .oe-page .oe-contact-aside { display: flex; flex-direction: column; gap: var(--space-4); }
@media (max-width: 900px) { .sf .oe-page .oe-contact { grid-template-columns: minmax(0, 1fr); } }
.sf-contact-panel { padding: var(--space-4); }
.sf .oe-page .sf-contact-panel__title, .sf-contact-panel__title { font-size: 13px; letter-spacing: .08em; text-transform: uppercase; margin: 0 0 var(--space-2); }
.sf-contact-panel__lead { font-size: 14px; margin: 0; }
.sf-contact-panel__note { font-size: 13px; color: var(--color-muted); margin: 0; }
.sf-contact-panel__links { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 14px; }

/* Core's save-this-search form in the filter rail. */
.sf-filters__alert .oe-alert-form .oe-label { display: block; font-size: 13px; font-weight: 600; color: var(--color-muted); margin-bottom: 5px; }
.sf-filters__alert .oe-alert-form .oe-field { margin: 0 0 var(--space-2); }
.sf-filters__alert .oe-alert-form .oe-input {
    width: 100%; max-width: none; min-height: 40px; padding: 8px 10px; font: inherit; font-size: 14px;
    color: var(--color-text); background: var(--color-surface);
    border: 1px solid var(--color-divider); border-radius: var(--radius-md);
}
.sf-filters__alert .oe-alert-form .oe-actions { margin: 0; }
.sf-filters__alert .oe-alert-form .oe-btn {
    width: 100%; justify-content: center; display: inline-flex; font-family: var(--font-heading); font-weight: 800;
    font-size: 14px; padding: calc(var(--space-2) * 0.85) var(--space-3); border-radius: var(--radius-md);
    background: transparent; color: var(--color-text); border: 1px solid var(--color-divider); cursor: pointer;
}
.sf-filters__alert .oe-alert-form .oe-btn:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); }
.sf-form-error {
    margin: 0 0 var(--space-4); padding: 10px 14px; border-radius: var(--radius-md); font-size: 14px;
    border: 1px solid var(--color-accent-2-ink); color: var(--color-accent-2-ink);
    background: color-mix(in srgb, var(--color-accent-2) 12%, transparent);
}

/* Credits pages: the balance beside its label, the history as the theme's table. */
.sf .oe-page .oe-bill-balance { font-family: var(--font-heading); font-weight: 800; font-size: 40px; line-height: 1; font-variant-numeric: tabular-nums; }
.sf .oe-page .oe-bill table th { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--color-muted); }
.sf .oe-page .oe-bill .oe-bill-badge { font-family: var(--font-heading); font-weight: 800; font-size: 12px; }
/* The delete page's warning: the band repeats it under the heading, so core's copy above is for screen readers. */
.sf .oe-page .oe-doc:has(> .oe-account) > p {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.sf .oe-page .oe-account-main > form:not(:has(.oe-group)) { max-width: 440px; }

/* A tab strip with more tabs past its end fades that edge (storefront-core.js sets data-more). */
.sf-account-tabs[data-more], .sf-settings-nav[data-more] {
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
    mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
}
[dir="rtl"] :is(.sf-account-tabs, .sf-settings-nav)[data-more] {
    -webkit-mask-image: linear-gradient(to left, #000 calc(100% - 28px), transparent);
    mask-image: linear-gradient(to left, #000 calc(100% - 28px), transparent);
}
.sf .oe-page .oe-check input[type=checkbox] { accent-color: var(--color-accent); width: 16px; height: 16px; }
/* A failed form shows its reason inside the form, so the same flash above the page is left out. */
.sf:has(.oe-form-error, .sf-form-error) .flashmessage-error { display: none; }

/* Type on core's pages: the theme's global h2/h3 sizes are for page sections, so
   headings inside core's markup come down to the scale of the old account pages. */
.sf .oe-page h2 { font-size: 20px; line-height: 1.25; }
.sf .oe-page h3 { font-size: 16px; line-height: 1.3; }
.sf .oe-page .oe-danger h2 { font-size: 20px; }
.sf .oe-page .oe-group > legend { font-size: 18px; }
.sf .oe-page .oe-account-main > .sf-account { margin-bottom: var(--space-4); }
.sf .oe-page .sf-account .sf-manage-head { margin-bottom: 0; }
.sf .oe-page .sf-account .sf-section__title { font-size: 26px; }
.sf .oe-page .oe-tabs { margin-top: 0; }
.sf-manage__promote .sf-btn { white-space: nowrap; }

/* The letter badge is a stand-in only: hidden until the profile script shows it. */
[data-sf-monogram][hidden] { display: none; }

/* Your listings: the listing-limit lines as one notice. */
.sf .oe-page .oe-tabs ~ .oe-muted {
    margin: 0; padding: var(--space-2) var(--space-4); font-size: 14px; color: var(--color-text);
    background: var(--color-neutral-100);
    border-inline: 1px solid var(--color-divider);
}
.sf .oe-page .oe-tabs + .oe-muted { border-top: 1px solid var(--color-divider); border-radius: var(--radius-md) var(--radius-md) 0 0; padding-top: var(--space-3); }
.sf .oe-page .oe-tabs ~ .oe-muted:not(:has(+ .oe-muted)) { border-bottom: 1px solid var(--color-divider); border-radius: 0 0 var(--radius-md) var(--radius-md); padding-bottom: var(--space-3); margin-bottom: var(--space-4); }
.sf .oe-page .oe-tabs + .oe-muted:not(:has(+ .oe-muted)) { border-radius: var(--radius-md); }

/* Credits: the figures in a row, each label under its figure, the buttons at the end. */
.sf .oe-page .oe-bill-card:has(> .oe-bill-balance) {
    display: grid; grid-template-rows: auto auto; grid-auto-flow: column; grid-auto-columns: max-content;
    align-items: end; column-gap: var(--space-8); row-gap: var(--space-1); padding: var(--space-6);
}
.sf .oe-page .oe-bill-card > .oe-bill-balance { margin: 0; }
.sf .oe-page .oe-bill-card > .oe-bill-sub { margin: 0; }
.sf .oe-page .oe-bill-card > .oe-bill-actions {
    grid-row: 1 / -1; align-self: center; justify-self: end;
    display: flex; flex-wrap: wrap; gap: var(--space-2); margin: 0;
}
@media (min-width: 641px) {
    .sf .oe-page .oe-bill-card:has(> .oe-bill-balance) { grid-template-columns: max-content max-content 1fr; }
    .sf .oe-page .oe-bill-card > .oe-bill-actions { grid-column: -2 / -1; }
}
@media (max-width: 640px) {
    .sf .oe-page .oe-bill-card:has(> .oe-bill-balance) { grid-template-rows: none; grid-auto-flow: row; grid-auto-columns: auto; padding: var(--space-4); }
    .sf .oe-page .oe-bill-card > .oe-bill-sub + .oe-bill-balance { margin-top: var(--space-4); }
    .sf .oe-page .oe-bill-card > .oe-bill-actions { grid-row: auto; justify-self: start; margin-top: var(--space-4); }
}
.sf .oe-page .oe-account-main > .sf-account:has(+ form) { margin-bottom: var(--space-6); }
.sf .oe-page .oe-account-main > form + * , .sf .oe-page .oe-account-main > form ~ .oe-panel { margin-top: var(--space-6); }
.sf-manage__row > .sf-manage__promote { padding-top: 0; margin-top: calc(var(--space-2) * -1); }

/* ---- Profile form, finished ---- */
.sf .oe-page .sf-account .sf-form__lede { margin: 6px 0 0; }
.sf .oe-page .oe-group { margin: 0 0 var(--space-6); }
.sf .oe-page .oe-group > legend { margin-bottom: var(--space-3); }

/* Photo: the file control is a theme button (its label); the native one stays for keyboard and screen readers. */
.sf .oe-page .oe-avatar-field > div { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-4); }
.sf .oe-page .oe-avatar-field .oe-hint { order: -1; flex-basis: 100%; margin: 0 0 var(--space-1); }
.sf .oe-page .oe-avatar-field input[type=file] {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden;
    clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; opacity: 0;
}
.sf .oe-page .oe-avatar-field label[for=oe-avatar] {
    display: inline-flex; align-items: center; margin: 0; cursor: pointer;
    font-family: var(--font-heading); font-weight: 800; font-size: 14px; color: var(--color-text);
    padding: calc(var(--space-2) * 0.85) var(--space-3); border: 1px solid var(--color-divider); border-radius: var(--radius-md);
}
.sf .oe-page .oe-avatar-field label[for=oe-avatar]:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); }
.sf .oe-page .oe-avatar-field:has(input[type=file]:focus-visible) label[for=oe-avatar] { outline: 2px solid var(--color-accent); outline-offset: 2px; }
.sf .oe-page .oe-avatar-field .oe-check { margin: 0; }

/* Other languages: a quiet disclosure in the theme's link colour. */
.sf .oe-page details.oe-field > summary {
    cursor: pointer; list-style: none; font-weight: 600; font-size: 14px; color: var(--color-accent-ink);
}
.sf .oe-page details.oe-field > summary::-webkit-details-marker { display: none; }
.sf .oe-page details.oe-field > summary::before { content: "+"; display: inline-block; width: 1em; font-weight: 800; }
.sf .oe-page details.oe-field[open] > summary::before { content: "\2212"; }
.sf .oe-page details.oe-field[open] > summary { margin-bottom: var(--space-3); }

/* The form's own button is its main action. */
.sf .oe-page form:has(> .oe-group) > .oe-actions { margin-top: var(--space-2); }
.sf .oe-page form:has(> .oe-group) > .oe-actions .oe-btn { font-size: 15px; padding: 11px 20px; }
@media (max-width: 640px) { .sf .oe-page form:has(> .oe-group) > .oe-actions .oe-btn { width: 100%; justify-content: center; } }

/* Your data and deleting the account read as one ruled section, as the theme had them. */
.sf .oe-page .oe-account-main > form:has(> .oe-group) ~ .oe-panel {
    max-width: 680px; margin-top: var(--space-8); padding: var(--space-6) 0 0;
    background: none; border: 0; border-top: 2px solid var(--color-divider); border-radius: 0;
}
.sf .oe-page .oe-account-main > form:has(> .oe-group) ~ .oe-danger {
    max-width: 680px; margin-top: var(--space-6); padding: var(--space-5); border: 0; border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--color-accent-2) 12%, transparent);
}
.sf .oe-page .oe-danger h2 { font-size: 16px; margin: 0 0 var(--space-2); color: var(--color-accent-2-ink); }
.sf .oe-page .oe-danger .oe-muted { margin: 0 0 var(--space-3); }

/* ---- Profile as settings cards: title on the left, fields on the right (desktop) ---- */
.sf .oe-page form:has(> .oe-group) { max-width: none; }
.sf .oe-page .oe-group,
.sf .oe-page .oe-account-main > form:has(> .oe-group) ~ .oe-panel,
.sf .oe-page .oe-account-main > form:has(> .oe-group) ~ .oe-danger {
    max-width: none; margin: 0 0 var(--space-4); padding: var(--space-6);
    background: var(--color-surface); border: 1px solid var(--color-divider);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
}
/* A floated legend is an ordinary box, so it can sit in the card's grid. */
.sf .oe-page .oe-group > legend { float: left; width: 100%; padding: 0; margin: 0 0 var(--space-4); font-size: 18px; }
.sf .oe-page .oe-group > legend + * { clear: both; }
.sf .oe-page .oe-group .oe-field:last-child, .sf .oe-page .oe-group .oe-grid:last-child .oe-field { margin-bottom: 0; }
.sf .oe-page .oe-account-main > form:has(> .oe-group) ~ .oe-panel { margin-top: var(--space-8); }
.sf .oe-page .oe-account-main > form:has(> .oe-group) ~ .oe-danger {
    margin-top: 0; background: var(--color-surface);
    border-inline-start: 4px solid var(--color-accent-2-ink);
}
.sf .oe-page .oe-account-main > form:has(> .oe-group) ~ :is(.oe-panel, .oe-danger) > h2 { font-size: 18px; margin: 0 0 var(--space-2); }
.sf .oe-page .oe-account-main > form:has(> .oe-group) ~ :is(.oe-panel, .oe-danger) .oe-muted { margin: 0 0 var(--space-4); }

@media (min-width: 900px) {
    .sf .oe-page .oe-group,
    .sf .oe-page .oe-account-main > form:has(> .oe-group) ~ :is(.oe-panel, .oe-danger) {
        display: grid; grid-template-columns: 220px minmax(0, 1fr); column-gap: var(--space-8); align-items: start;
    }
    .sf .oe-page .oe-group > legend,
    .sf .oe-page .oe-account-main > form:has(> .oe-group) ~ :is(.oe-panel, .oe-danger) > h2 {
        grid-column: 1; grid-row: 1 / span 20; margin: 0; padding-top: 6px;
    }
    .sf .oe-page .oe-group > :not(legend),
    .sf .oe-page .oe-account-main > form:has(> .oe-group) ~ :is(.oe-panel, .oe-danger) > :not(h2) { grid-column: 2; }
    /* Save lines up with the fields column. */
    .sf .oe-page form:has(> .oe-group) > .oe-actions { padding-inline-start: calc(220px + var(--space-8) + var(--space-6) + 1px); }
}
.sf .oe-page .oe-avatar-field { margin: 0; }
.sf .oe-page .oe-group .oe-grid { row-gap: var(--space-4); }
.sf .oe-page .oe-group .oe-grid .oe-field { margin: 0; }
.sf .oe-page .oe-group .oe-grid + .oe-field { margin-top: var(--space-4); }
.sf .oe-page .oe-account-main > form:has(> .oe-group) ~ :is(.oe-panel, .oe-danger) .oe-btn { justify-self: start; }
.sf .oe-page .oe-account-main > form:has(> .oe-group) ~ .oe-danger {
    border-inline-start: 1px solid var(--color-divider);
    box-shadow: inset 4px 0 0 var(--color-accent-2-ink), var(--shadow-sm);
}
[dir="rtl"] .sf .oe-page .oe-account-main > form:has(> .oe-group) ~ .oe-danger { box-shadow: inset -4px 0 0 var(--color-accent-2-ink), var(--shadow-sm); }

/* Dark-only component fixes: pale accent-100 panels become a teal-tinted surface, and the
   active tab pill is lifted above its track. Mirrored for data-theme="auto". */
:root[data-theme="dark"] :is(.sf-filters__promo, .sf-dialog__note) {
    background: color-mix(in srgb, var(--color-accent) 14%, var(--color-surface));
    border-color: color-mix(in srgb, var(--color-accent) 30%, var(--color-surface));
    color: var(--color-text);
}
:root[data-theme="dark"] .sf-filters__promo :is(h3, p) { color: var(--color-text); }
:root[data-theme="dark"] :is(.sf .oe-page .oe-tabs [aria-current], .sf-settings-nav__tab.is-active) {
    background: var(--color-neutral-300); box-shadow: var(--shadow-md);
}
@media (prefers-color-scheme: dark) {
    :root[data-theme="auto"] :is(.sf-filters__promo, .sf-dialog__note) {
        background: color-mix(in srgb, var(--color-accent) 14%, var(--color-surface));
        border-color: color-mix(in srgb, var(--color-accent) 30%, var(--color-surface));
        color: var(--color-text);
    }
    :root[data-theme="auto"] .sf-filters__promo :is(h3, p) { color: var(--color-text); }
    :root[data-theme="auto"] :is(.sf .oe-page .oe-tabs [aria-current], .sf-settings-nav__tab.is-active) {
        background: var(--color-neutral-300); box-shadow: var(--shadow-md);
    }
}

/* Sign-in details: full-width cards laid out like the Profile cards. */
.sf .oe-page .oe-account-main > .oe-panel:is(#email, #username, #password) { max-width: none; box-shadow: var(--shadow-sm); }
.sf .oe-page .oe-account-main > .oe-panel:is(#email, #username, #password) > h2 { font-size: 18px; margin: 0 0 var(--space-2); }
@media (min-width: 900px) {
    .sf .oe-page .oe-account-main > .oe-panel:is(#email, #username, #password) {
        display: grid; grid-template-columns: 220px minmax(0, 1fr); column-gap: var(--space-8); align-items: start;
    }
    .sf .oe-page .oe-account-main > .oe-panel:is(#email, #username, #password) > h2 { grid-column: 1; grid-row: 1 / span 20; margin: 0; padding-top: 6px; }
    .sf .oe-page .oe-account-main > .oe-panel:is(#email, #username, #password) > :not(h2) { grid-column: 2; }
}
.sf .oe-page .oe-account-main > .oe-panel:is(#email, #username, #password) > .oe-muted { margin: 0 0 var(--space-4); }

/* Delete account: the Profile page's danger card. */
.sf .oe-page .oe-account-main > form.osc-user-delete-account {
    max-width: none; padding: var(--space-6);
    background: var(--color-surface); border: 1px solid var(--color-divider); border-radius: var(--radius-lg);
    box-shadow: inset 4px 0 0 var(--color-accent-2-ink), var(--shadow-sm);
}
[dir="rtl"] .sf .oe-page .oe-account-main > form.osc-user-delete-account { box-shadow: inset -4px 0 0 var(--color-accent-2-ink), var(--shadow-sm); }
.sf .oe-page .osc-user-delete-account .oe-field { max-width: 440px; }
.sf .oe-page .osc-user-delete-account .oe-actions { align-items: center; margin-top: var(--space-4); }
.sf .oe-page .osc-user-delete-account .oe-actions a.oe-muted {
    display: inline-flex; align-items: center; margin: 0; padding: calc(var(--space-2) * 0.85) var(--space-3);
    font-family: var(--font-heading); font-weight: 800; font-size: 14px; line-height: 1.2; color: var(--color-text);
    border: 1px solid var(--color-divider); border-radius: var(--radius-md); text-decoration: none;
}
.sf .oe-page .osc-user-delete-account .oe-actions a.oe-muted:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); }

/* TinyMCE on the post form: the editor chrome on the theme's tokens, so it flips with dark mode.
   The editing area is an iframe; storefront-search.js paints its body. */
.sf .tox.tox-tinymce { border: 1px solid var(--color-divider); border-radius: var(--radius-md); }
.sf .tox.tox-tinymce :is(.tox-editor-header, .tox-toolbar-overlord, .tox-toolbar, .tox-toolbar__primary, .tox-toolbar__overflow,
    .tox-statusbar, .tox-edit-area__iframe, .tox-view-wrap, .tox-view-wrap__slot-container) {
    background-color: var(--color-surface); background-image: none;
}
.sf .tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header { border-bottom: 1px solid var(--color-divider); box-shadow: none; padding: 0; }
.sf .tox.tox-tinymce .tox-statusbar { border-top: 1px solid var(--color-divider); color: var(--color-muted); }
.sf .tox.tox-tinymce :is(.tox-statusbar a, .tox-statusbar__path-item) { color: var(--color-muted); }
.sf .tox.tox-tinymce .tox-tbtn { background: transparent; color: var(--color-text); }
.sf .tox.tox-tinymce :is(.tox-tbtn svg, .tox-statusbar__resize-handle svg) { fill: currentColor; }
.sf .tox.tox-tinymce :is(.tox-tbtn:hover, .tox-tbtn--enabled, .tox-tbtn--enabled:hover) {
    background: color-mix(in srgb, var(--color-accent) 16%, transparent); color: var(--color-text);
}
.sf .tox.tox-tinymce :is(.tox-tbtn--disabled, .tox-tbtn--disabled:hover, .tox-tbtn:disabled) { background: transparent; color: var(--color-muted); }
.sf .tox.tox-tinymce:focus-within { border-color: var(--color-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent) 30%, transparent); }

/* The editor's link dialog, menus and pop-up toolbar live in the page, so the theme reaches them. */
.sf .tox.tox-tinymce-aux, .sf .tox .tox-dialog, .sf .tox .tox-menu, .sf .tox .tox-pop__dialog { font-family: var(--font-body); }
.sf .tox .tox-dialog-wrap__backdrop { background: color-mix(in srgb, var(--color-overlay) 55%, transparent); }
.sf .tox .tox-dialog {
    background: var(--color-surface); color: var(--color-text); border: 1px solid var(--color-divider);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-lg);
}
.sf .tox :is(.tox-dialog__header, .tox-dialog__footer, .tox-dialog__body) { background: transparent; color: var(--color-text); border-color: var(--color-divider); }
.sf .tox .tox-dialog__title { font-family: var(--font-heading); font-weight: var(--font-heading-weight); font-size: 18px; }
.sf .tox :is(.tox-label, .tox-form__group label) { color: var(--color-muted); font-size: 13px; font-weight: 600; }
.sf .tox :is(.tox-textfield, .tox-listboxfield .tox-listbox--select, .tox-textarea),
.sf .tox :is(.tox-textfield, .tox-listboxfield .tox-listbox--select, .tox-textarea):is(:hover, :focus) {
    background: var(--color-surface); color: var(--color-text); border-color: var(--color-divider); border-radius: var(--radius-md); font-family: inherit; font-size: 14px;
}
.sf .tox :is(.tox-textfield, .tox-listboxfield .tox-listbox--select, .tox-textarea):focus { border-color: var(--color-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent) 30%, transparent); }
.sf .tox :is(.tox-listbox__select-chevron, .tox-button--icon, .tox-button--naked) svg { fill: currentColor; }
.sf .tox .tox-form__group { margin-bottom: var(--space-3); }
.sf .tox .tox-button {
    font-family: var(--font-heading); font-weight: var(--font-heading-weight); font-size: 13px; border-radius: var(--radius-md);
    background: var(--color-accent-fill); border-color: transparent; color: var(--color-fixed-light);
}
.sf .tox .tox-button:hover:not(:disabled) { background: var(--color-accent-fill-hover); border-color: transparent; color: var(--color-fixed-light); }
.sf .tox :is(.tox-button--secondary, .tox-button--naked) { background: transparent; border: 1px solid var(--color-divider); color: var(--color-text); }
.sf .tox .tox-button--naked { border-color: transparent; }
.sf .tox :is(.tox-button--secondary, .tox-button--naked):hover:not(:disabled) { background: color-mix(in srgb, var(--color-text) 7%, transparent); color: var(--color-text); }
.sf .tox :is(.tox-menu, .tox-collection--list, .tox-pop__dialog) { background: var(--color-surface); color: var(--color-text); border-color: var(--color-divider); }
.sf .tox .tox-collection__item { color: var(--color-text); }
.sf .tox .tox-collection__item--active { background: color-mix(in srgb, var(--color-accent) 16%, transparent); }
.sf .tox .tox-pop .tox-tbtn { background: transparent; color: var(--color-text); }
.sf .tox .tox-pop .tox-tbtn svg { fill: currentColor; }

/* Wohnungsanzeiger portal redesign, 2026-10-22. */
:root {
    --color-bg: #f4f7f8;
    --color-surface: #ffffff;
    --color-text: #102a43;
    --color-accent: #0b8f87;
    --color-accent-500: #0b8f87;
    --color-accent-600: #08766f;
    --color-accent-700: #075f5a;
    --color-accent-800: #064b47;
    --color-accent-900: #043936;
    --color-accent-2: #f97316;
    --color-accent-2-500: #f97316;
    --color-accent-2-600: #ea580c;
    --color-accent-2-700: #c2410c;
    --color-accent-2-800: #9a3412;
    --color-accent-2-900: #7c2d12;
    --radius-sm: 7px;
    --radius-md: 10px;
    --radius-lg: 16px;
    --sf-container: 1240px;
    --shadow-sm: 0 2px 8px rgba(15, 42, 67, .08);
    --shadow-md: 0 10px 30px rgba(15, 42, 67, .12);
    --shadow-lg: 0 24px 64px rgba(15, 42, 67, .22);
}

.sf-header {
    background: #0f2942;
    border-bottom: 0;
    box-shadow: 0 3px 16px rgba(7, 30, 49, .22);
}
.sf-header .sf-logo,
.sf-header .sf-logo:hover,
.sf-header .sf-nav__link { color: #fff; }
.sf-header .sf-nav__link { opacity: .88; }
.sf-header .sf-nav__link:hover,
.sf-header .sf-nav__link[aria-current] { color: #fff; opacity: 1; }
.sf-header .sf-nav__link[aria-current]::after { background: #5eead4; }
.sf-header .sf-nav-toggle span { background: #fff; }
.sf-header .sf-btn--primary { background: #f97316; border-color: #f97316; }
.sf-header .sf-btn--primary:hover { background: #ea580c; border-color: #ea580c; }
.sf-header .sf-logo::before { border-radius: 4px 4px 4px 0; background: #2dd4bf; }

.wa-trustbar { background: #fff; border-bottom: 1px solid rgba(15, 42, 67, .1); }
.wa-trustbar__inner {
    min-height: 66px; display: grid; grid-template-columns: repeat(3, 1fr);
    align-items: center; gap: 22px;
}
.wa-trustbar__inner > span { display: grid; grid-template-columns: 30px 1fr; column-gap: 10px; align-items: center; }
.wa-trustbar__inner svg { grid-row: 1 / 3; color: #0b8f87; width: 25px; height: 25px; }
.wa-trustbar__inner strong { color: #102a43; font-size: 14px; line-height: 1.25; }
.wa-trustbar__inner small { color: #52667a; font-size: 12px; line-height: 1.3; }

.sf-hero {
    min-height: 570px; display: flex; align-items: center;
    border-bottom: 0;
    background-image:
        linear-gradient(90deg, rgba(6, 26, 43, .90) 0%, rgba(8, 34, 55, .78) 34%, rgba(8, 34, 55, .24) 62%, rgba(8, 34, 55, .08) 100%),
        url('../images/wohnungsanzeiger-hero-family-v1.webp');
    background-size: cover;
    background-position: center center;
}
.sf-hero__inner { width: 100%; padding-block: clamp(56px, 7vw, 96px); }
.sf-hero__content { max-width: 1180px; }
.wa-hero__eyebrow {
    display: inline-flex; align-items: center; margin: 0 0 14px;
    color: #99f6e4; font-size: 13px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase;
}
.sf-hero__title {
    max-width: 760px; color: #fff; font-size: clamp(40px, 5.6vw, 68px); line-height: 1.04;
    text-shadow: 0 2px 20px rgba(0, 0, 0, .22);
}
.sf-hero__sub { max-width: 630px; color: rgba(255,255,255,.9); font-size: clamp(17px, 1.5vw, 21px); }
.sf-hero__glass {
    max-width: 1180px; padding: 10px; background: #fff; border: 0;
    border-radius: 14px; box-shadow: 0 24px 58px rgba(0, 0, 0, .3); backdrop-filter: none;
}
.sf-hero__search { border: 0; border-radius: 9px; box-shadow: none; background: #fff; }
.sf-hero__search .sf-hero__field { min-height: 60px; }
.sf-hero__search input,
.sf-hero__search select,
.sf-hero__search .sf-hero__cat select { height: 60px; color: #102a43; }
.sf-hero__search .sf-btn {
    min-height: 60px; padding-inline: 28px; background: #f97316; border-color: #f97316;
    font-size: 15px; font-weight: 800;
}
.sf-hero__search .sf-btn:hover { background: #ea580c; border-color: #ea580c; }
.sf-hero__popular > span { color: rgba(255,255,255,.74); }
.sf-hero__chip { background: rgba(255,255,255,.94); color: #102a43; font-weight: 700; padding: 6px 12px; }
.sf-hero__chip:hover { background: #fff; color: #075f5a; }
.wa-hero__proof { margin: 14px 0 0; color: rgba(255,255,255,.88); font-size: 12px; font-weight: 600; }
.wa-hero__proof svg { vertical-align: -3px; color: #5eead4; }

.sf-section { border-bottom: 0; }
.sf-section > .sf-container { padding-block: clamp(34px, 5vw, 64px); }
.sf-section__title { color: #102a43; font-size: clamp(27px, 3vw, 38px); }
.sf-catgrid { gap: 14px; background: transparent; border: 0; border-radius: 0; overflow: visible; box-shadow: none; }
.sf-catgrid > li { flex-basis: 230px; }
.sf-catgrid__item {
    min-height: 140px; background: #fff; border: 1px solid rgba(15,42,67,.1) !important;
    border-top: 4px solid var(--sf-hue) !important; border-radius: 14px; box-shadow: var(--shadow-sm);
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.sf-catgrid__item:hover { background: #fff; transform: translateY(-4px); box-shadow: var(--shadow-md); }
.sf-catgrid__name { font-size: 19px; }
.sf-empty { background: #fff; border-style: dashed; }
.sf-card { border: 0; box-shadow: var(--shadow-sm); }
.sf-card:hover { box-shadow: var(--shadow-md); transform: translateY(-4px); }

@media (max-width: 760px) {
    .wa-trustbar__inner { grid-template-columns: 1fr; gap: 8px; padding-block: 12px; }
    .wa-trustbar__inner > span { grid-template-columns: 25px 1fr; }
    .wa-trustbar__inner small { display: none; }
    .sf-hero { min-height: 0; background-position: 66% center; }
    .sf-hero::before { content: ''; position: absolute; inset: 0; background: rgba(5, 26, 43, .3); }
    .sf-hero__inner { padding-block: 48px; }
    .sf-hero__title { font-size: clamp(34px, 10vw, 48px); }
    .sf-hero__glass { padding: 8px; }
    .wa-hero__proof { line-height: 1.7; }
}

@media (max-width: 640px) {
    .sf-hero__search .sf-hero__field,
    .sf-hero__search .sf-hero__field + .sf-hero__field,
    .sf-hero__search .sf-hero__cat { min-height: 54px; }
    .sf-hero__search input,
    .sf-hero__search select,
    .sf-hero__search .sf-hero__cat select { height: 54px; }
    .sf-hero__search .sf-btn { min-height: 54px; border-radius: 8px; }
}

/* Wohnungsanzeiger portal shell v2: compact trust line, task navigation and mobile-safe layout. */
.wa-top-trust { background:#f5faf9; color:#173b52; border-bottom:1px solid #dce8e7; }
.wa-top-trust__inner { min-height:38px; display:flex; align-items:center; justify-content:center; gap:9px; font-size:12px; letter-spacing:.01em; text-align:center; }
.wa-top-trust__inner svg { flex:none; color:#0b8f87; }
.wa-top-trust__inner strong { color:#0b6f69; }
.sf-header__bar { min-height:72px; }
.sf-header .sf-logo {
  flex:0 0 auto;
  align-self:stretch;
  justify-content:center;
  margin-right:28px;
  line-height:0;
}
.sf-header .sf-logo__mark { align-items:center; }
.sf-header .sf-logo svg {
  display:block;
  width:auto;
  height:46px;
  max-width:265px;
}
.wa-nav { gap:5px; }
.wa-nav__group { position:relative; }
.wa-nav__trigger { appearance:none; border:0; background:transparent; min-height:44px; display:flex; align-items:center; gap:5px; padding:0 10px; color:#fff; opacity:.92; font:700 14px/1.2 inherit; cursor:pointer; border-radius:8px; }
.wa-nav__trigger:hover,.wa-nav__trigger:focus-visible,.wa-nav__group.is-open > .wa-nav__trigger { opacity:1; background:rgba(255,255,255,.09); }
.wa-nav__trigger:focus-visible { outline:3px solid #79eadf; outline-offset:2px; }
.wa-nav__trigger svg { transition:transform .16s ease; }
.wa-nav__group.is-open > .wa-nav__trigger svg { transform:rotate(180deg); }
.wa-nav__menu { position:absolute; z-index:50; top:calc(100% + 8px); left:0; width:max-content; min-width:230px; padding:9px; background:#fff; border:1px solid #dbe4ea; border-radius:12px; box-shadow:0 18px 50px rgba(7,30,49,.18); }
.wa-nav__menu[hidden] { display:none!important; }
.wa-nav__menu a { display:block; min-height:42px; padding:10px 12px; color:#173b52; font-size:14px; font-weight:650; border-radius:7px; }
.wa-nav__menu a:hover { background:#edf8f6; color:#08766f; text-decoration:none; }
.wa-nav__menu--properties{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;min-width:500px}.wa-nav__menu--properties>div>strong{display:block;padding:8px 12px 4px;color:#0b766f;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.wa-nav__menu--properties .wa-nav__menu-all{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;padding-top:7px;border-top:1px solid #e5ecef}
.sf-footer { margin-top:0; background:#0c2338; color:#fff; border:0; }
.wa-newsletter{background:#fff;border-top:1px solid #dce8e7}.wa-newsletter__inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(420px,.9fr);align-items:center;gap:48px;padding-block:48px}.wa-newsletter h2{margin:0 0 8px;color:#102a43;font-size:clamp(26px,3vw,38px)}.wa-newsletter p{max-width:650px;margin:0;color:#52667a}.wa-newsletter__form>label:first-of-type{display:block;margin-bottom:7px;color:#173b52;font-size:13px;font-weight:800}.wa-newsletter__row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.wa-newsletter__row input{min-width:0;border:1px solid #b8c7d1;border-radius:9px;padding:13px 14px;font:inherit}.wa-newsletter__consent{display:flex;align-items:flex-start;gap:8px;margin-top:11px;color:#52667a;font-size:12px;line-height:1.45}.wa-newsletter__consent input{margin-top:3px;flex:none}.wa-newsletter__consent a{text-decoration:underline}
.wa-footer-action { background:#eaf5f3; border-top:1px solid #d4e6e3; }
.wa-footer-action__inner { min-height:250px; display:flex; align-items:center; justify-content:space-between; gap:36px; padding-block:52px; }
.wa-footer-action__eyebrow { margin:0 0 6px; color:#08766f; font-size:12px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.wa-footer-action h2 { margin:0 0 8px; color:#102a43; font-size:clamp(26px,3vw,38px); }
.wa-footer-action p { max-width:650px; margin:0; color:#52667a; }
.wa-footer-action__buttons { display:flex; flex-wrap:wrap; gap:10px; flex:none; }
.sf-footer__intro { display:flex; align-items:flex-end; justify-content:space-between; gap:32px; padding-block:44px 26px; border-bottom:1px solid rgba(255,255,255,.12); }
.sf-footer__brand { flex:1 1 420px; }
.sf-footer__brand .sf-logo { color:#fff; }
.sf-footer__brand p { max-width:520px; margin:12px 0 0; color:#b9c8d5; font-size:14px; }
.sf-footer__trust { margin:0; color:#cde8e3; font-size:13px; text-align:right; display:flex; flex-wrap:wrap; justify-content:flex-end; align-items:center; gap:7px 14px; }
.sf-footer__trust span{position:relative;white-space:nowrap}.sf-footer__trust span+span:before{content:'·';position:absolute;left:-9px;color:#66869a}
.sf-footer__trust svg { color:#5eead4; vertical-align:-3px; }
.sf-footer__grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:30px; padding-block:38px 48px; }
.sf-footer__links { min-width:0; }
.sf-footer__links h2 { color:#fff; font-size:13px; letter-spacing:.08em; text-transform:uppercase; }
.sf-footer__links a { min-height:0; padding:6px 0; color:#c3d0db; font-size:13px; line-height:1.4; }
.sf-footer__links a:hover { color:#fff; }
.sf-footer__legal { border-color:rgba(255,255,255,.12); }
.sf-footer__legal-row { color:#aebdca; }
.sf-footer__legal-row p { margin:0; font-size:12px; }
.sf-footer__legal-end a,.sf-footer__legal-end span { color:#b9c8d5; font-size:12px; }
.sf-footer__top { color:#b9c8d5; }

@media (max-width:1120px) {
  .sf-header__bar { min-height:64px; }
  .sf-header .sf-logo { align-self:center; margin-right:14px; }
  .sf-header .sf-logo svg { height:42px; max-width:230px; }
  .sf-header .sf-wordmark { font-size:clamp(21px,6vw,27px); }
  .sf-nav-toggle { display:flex; }
  .sf-nav.wa-nav { position:absolute; inset-inline:0; top:100%; display:none; flex-direction:column; align-items:stretch; gap:0; max-height:calc(100vh - 64px); overflow-y:auto; overscroll-behavior:contain; padding:10px 18px 18px; background:#0f2942; border-bottom:0; box-shadow:0 20px 40px rgba(4,20,34,.28); }
  .sf-nav.wa-nav.is-open { display:flex; }
  .wa-nav__group { width:100%; border-bottom:1px solid rgba(255,255,255,.14); }
  .wa-nav__trigger { width:100%; justify-content:space-between; padding:12px 2px; border-radius:0; }
  .wa-nav__menu { position:static; width:100%; min-width:0; padding:0 0 9px 12px; background:transparent; border:0; border-radius:0; box-shadow:none; }
  .wa-nav__menu--properties{display:block}.wa-nav__menu--properties>div>strong{padding-left:8px;color:#99f6e4}.wa-nav__menu--properties .wa-nav__menu-all{display:block;border-color:rgba(255,255,255,.14)}
  .wa-nav__menu a { color:#dce7ef; min-height:40px; padding:9px 8px; }
  .wa-nav__menu a:hover { background:rgba(255,255,255,.08); color:#fff; }
  .sf-header .sf-nav__link { color:#fff; opacity:.95; padding:12px 2px; border-color:rgba(255,255,255,.14); }
  .sf-nav__cta { width:100%; justify-content:center; margin-top:12px; }
  .sf-nav-backdrop { top:0; background:rgba(4,18,31,.48); }
  .wa-footer-action__inner,.sf-footer__intro { align-items:flex-start; flex-direction:column; }
  .wa-footer-action__buttons { width:100%; }
  .sf-footer__trust { justify-content:flex-start;text-align:left; }
  .sf-footer__grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:30px 24px; }
  .wa-newsletter__inner{grid-template-columns:1fr;gap:24px}
}

/* Full-width portal templates must not remain inside Shopclass' additional
   padded custom-page container. The templates provide their own containers. */
.sf-main > .sf-container.sf-main__pad:has(> .wa-b2b-page),
.sf-main > .sf-container.sf-main__pad:has(> .wa-editorial),
.sf-main > .sf-container.sf-main__pad:has(> .wa-provider-booking) {
  width:100%;
  max-width:none;
  padding:0;
}
@media (max-width:640px) {
  .wa-top-trust__inner { min-height:34px; gap:6px; padding-inline:14px; white-space:nowrap; overflow:hidden; font-size:11px; }
  .wa-top-trust__inner span:nth-of-type(2),.wa-top-trust__inner span:nth-of-type(3) { display:none; }
  .sf-header .sf-logo::before { width:22px; height:22px; }
  .sf-header .sf-logo svg { height:40px; max-width:180px; }
  .sf-header .sf-wordmark { font-size:21px; }
  .sf-hero { background-position:61% center; }
  .sf-hero__inner { padding-block:34px 38px; }
  .wa-hero__eyebrow { margin-bottom:9px; font-size:11px; }
  .sf-hero__title { max-width:10.5em; font-size:clamp(34px,10.2vw,42px); line-height:1.01; }
  .sf-hero__sub { max-width:27em; font-size:16px; line-height:1.5; }
  .sf-hero__glass { margin-top:22px; padding:6px; border-radius:12px; }
  .sf-hero__popular { margin-top:16px; }
  .sf-section > .sf-container { padding-block:34px; }
  .sf-catgrid__item { min-height:112px; }
  .wa-footer-action__inner { min-height:0; padding-block:36px; gap:24px; }
  .wa-footer-action__buttons { flex-direction:column; }
  .wa-footer-action__buttons .sf-btn { width:100%; justify-content:center; }
  .sf-footer__intro { padding-block:34px 22px; }
  .sf-footer__grid { grid-template-columns:1fr; gap:25px; padding-block:30px 36px; }
  .sf-footer__links a { padding:5px 0; }
  .sf-footer__legal-row,.sf-footer__legal-end { align-items:flex-start; flex-direction:column; }
  .wa-newsletter__inner{padding-block:36px}.wa-newsletter__row{grid-template-columns:1fr}.wa-newsletter__row .sf-btn{width:100%;justify-content:center}
}

/* Final narrow-screen containment verified at 430 px. */
@media (max-width:640px) {
  html,body { max-width:100%; overflow-x:hidden; }
  .wa-top-trust__inner span { display:none; }
  .sf-section__head { align-items:flex-start; flex-wrap:wrap; gap:8px 14px; }
  .sf-section__head > a { margin-left:0; white-space:nowrap; }
  .sf-catgrid,.sf-catgrid > li,.sf-empty { min-width:0; width:100%; }
}

/* Search and location architecture v3. */
.wa-search-intent{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:2px 2px 10px}.wa-search-intent>span{margin-right:4px;color:#52667a;font-size:12px;font-weight:750}
.wa-search-intent a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 18px;border-radius:8px;background:#eaf5f3;color:#0b6f69;font-weight:800;font-size:14px}
.wa-search-intent a:hover{background:#0b766f;color:#fff;text-decoration:none}
.sf-hero__search{display:grid;grid-template-columns:minmax(190px,1fr) minmax(210px,1.1fr) minmax(125px,.58fr) minmax(180px,.8fr) auto;align-items:stretch;overflow:visible}.sf-hero__search>*{min-width:0}.sf-hero__search .sf-hero__cat select{width:100%;min-width:0}.sf-hero__search .sf-hero__cat{min-width:0}
.wa-price-field input{padding-left:42px!important}
.wa-region-quicklinks{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:16px;color:rgba(255,255,255,.82);font-size:12px}
.wa-region-quicklinks span{font-weight:800}.wa-region-quicklinks a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.wa-location-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px}
.wa-location-grid a{display:flex;flex-direction:column;gap:8px;min-height:120px;padding:22px;color:#102a43}.wa-location-grid span{color:#0b766f;font-size:14px}
.wa-location-page .sf-crumbs{margin-bottom:24px}.wa-location-hero{padding:clamp(28px,5vw,64px);border-radius:18px;background:linear-gradient(135deg,#0f2942,#155e75);color:#fff}.wa-location-hero h1{color:#fff;font-size:clamp(34px,5vw,58px)}.wa-location-hero p{max-width:68ch;color:#dce7ef}
.wa-catalogue-note{margin:32px 0;padding:24px;border:1px solid #dce8e7;border-radius:14px;background:#f5faf9}
.wa-city-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 18px;margin-top:20px}.wa-city-list a{padding:8px 0;border-bottom:1px solid #e5ecef;color:#173b52}
.wa-place-directory{margin-top:44px}.wa-place-filter{max-width:640px;margin:18px 0 8px}.wa-place-filter label{display:block;margin-bottom:8px;font-weight:700}.wa-place-filter>div{display:flex;gap:10px}.wa-place-filter input{min-width:0;flex:1;border:1px solid #b8c7d1;border-radius:10px;padding:12px 14px}.wa-pagination{display:flex;align-items:center;justify-content:center;gap:18px;margin:28px 0}.wa-pagination a{font-weight:700;color:#0b766f}
.wa-article-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:46px;margin-top:42px}.wa-article-toc{position:sticky;top:110px;align-self:start;display:flex;flex-direction:column;gap:10px;padding:18px;border:1px solid #dce8e7;border-radius:12px}.wa-article-body{max-width:780px;line-height:1.75}
@media(max-width:1050px){.sf-hero__search{grid-template-columns:1fr 1fr}.sf-hero__search .sf-btn{grid-column:1/-1}.wa-location-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wa-city-list{grid-template-columns:repeat(3,minmax(0,1fr))}.wa-article-layout{grid-template-columns:1fr}.wa-article-toc{position:static}.wa-article-toc strong{cursor:pointer}}
@media(max-width:640px){.wa-search-intent{overflow-x:auto}.wa-search-intent a{flex:none;padding-inline:14px}.sf-hero__search{display:flex;flex-direction:column}.wa-region-quicklinks{display:none}.wa-location-grid,.wa-city-list{grid-template-columns:1fr}.wa-location-hero{padding:26px 20px}.wa-article-toc{display:block}.wa-article-toc a{display:none}.wa-article-toc:focus-within a{display:block}.wa-place-filter>div{flex-direction:column}.wa-pagination{justify-content:space-between;gap:8px}.wa-pagination span{font-size:14px}}

/* Homepage hero v5. The image is a real responsive asset instead of a cover
   background. This keeps faces, headline and crop independent at every width. */
.sf-home .wa-home-hero {
  min-height:0;
  display:block;
  border:0;
  background:
    radial-gradient(circle at 8% 8%,rgba(45,212,191,.18),transparent 32%),
    linear-gradient(135deg,#09253d 0%,#0f3650 54%,#0d4d57 100%);
}
.sf-home .wa-home-hero::before { content:none; }
.sf-home .wa-home-hero .sf-hero__inner {
  width:100%;
  display:grid;
  grid-template-columns:minmax(0,.88fr) minmax(440px,1.12fr);
  align-items:center;
  gap:clamp(32px,4.4vw,64px);
  padding-block:clamp(42px,5vw,70px);
}
.sf-home .wa-home-hero .sf-hero__content { max-width:610px; }
.sf-home .wa-home-hero .sf-hero__title {
  max-width:100%;
  margin:0 0 18px;
  color:#fff;
  font-size:clamp(43px,3.8vw,50px);
  line-height:1.01;
  letter-spacing:-.045em;
  text-wrap:balance;
  text-shadow:none;
}
.sf-home .wa-home-hero .sf-hero__title>span { display:inline;white-space:normal; }
.sf-home .wa-home-hero .sf-hero__title>span+span::before { content:' '; }
.sf-home .wa-home-hero .sf-hero__sub {
  max-width:55ch;
  margin:0;
  color:#dceaf0;
  font-size:clamp(16px,1.35vw,19px);
  line-height:1.62;
}
.sf-home .wa-home-hero .wa-hero__eyebrow { color:#79eadf; }
.sf-home .wa-home-hero .wa-hero__proof {
  display:flex;
  align-items:flex-start;
  gap:9px;
  max-width:52ch;
  margin:23px 0 0;
  color:#dceaf0;
  font-size:13px;
  line-height:1.5;
}
.sf-home .wa-home-hero .wa-hero__proof svg { flex:none;margin-top:1px;color:#79eadf; }
.wa-home-hero__visual {
  min-width:0;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.2);
  border-radius:22px;
  background:#071e31;
  box-shadow:0 28px 70px rgba(2,15,27,.34);
}
.wa-home-hero__visual picture { display:block;aspect-ratio:5/3;overflow:hidden; }
.wa-home-hero__visual img { display:block;width:100%;height:100%;object-fit:cover;object-position:70% center; }
.wa-home-hero__caption {
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  margin:0;
  padding:13px 17px;
  color:#dceaf0;
  font-size:12px;
  line-height:1.45;
}
.wa-home-hero__caption strong { color:#79eadf; }
.wa-hero__proof { display:flex;align-items:center;gap:8px;margin-top:22px;font-size:14px; }
.wa-home-search { padding:28px 0 34px;background:linear-gradient(180deg,#edf7f5 0%,#f7fafb 100%);border-bottom:1px solid #dbe8e7; }
.wa-home-search__panel { max-width:none;margin:0;padding:22px;border:1px solid #d4e2e1;border-radius:16px;box-shadow:0 14px 38px rgba(16,42,67,.12); }
.wa-home-search__heading { display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:16px;padding:0 2px; }
.wa-home-search__heading h2 { margin:2px 0 0;color:#102a43;font-size:clamp(24px,2.5vw,34px);line-height:1.08; }
.wa-home-search__heading>p { max-width:480px;margin:0;color:#52667a;line-height:1.55;text-align:right; }
.wa-home-search__eyebrow { margin:0;color:#0b766f;font-size:12px;font-weight:850;letter-spacing:.09em;text-transform:uppercase; }
.wa-home-search .sf-hero__search { border:1px solid #d8e2e7;box-shadow:0 4px 14px rgba(16,42,67,.07); }
.wa-home-search .sf-hero__search { grid-template-columns:minmax(185px,.95fr) minmax(220px,1.15fr) minmax(145px,.68fr) minmax(190px,.9fr) auto; }
.wa-home-search .sf-hero__control { position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:18px 30px;column-gap:10px;align-content:center;min-height:70px;padding:8px 14px;border-inline-start:1px solid #d8e2e7;cursor:text; }
.wa-home-search .sf-hero__control:first-child { border-inline-start:0;cursor:default; }
.wa-home-search .sf-hero__label { grid-column:1/-1;color:#52667a;font-size:11px;font-weight:800;letter-spacing:.02em;line-height:18px;white-space:nowrap; }
.wa-home-search .sf-hero__icon { grid-column:1;grid-row:2;align-self:center; }
.wa-home-search .sf-hero__control input,
.wa-home-search .sf-hero__control select,
.wa-home-search .sf-hero__cat select { grid-column:2;grid-row:2;width:100%;height:30px!important;padding:0!important;color:#102a43;font-size:15px;font-weight:650;line-height:30px; }
.wa-home-search .sf-hero__cat select { grid-column:1/-1; }
.wa-home-search .wa-price-field input { padding-left:0!important; }
.wa-home-search .sf-hero__search .sf-btn { min-height:70px; }
.sf-hero__error { grid-column:1/-1;margin:0;padding:10px 14px;border-top:1px solid #f1c5c1;background:#fff3f1;color:#9a2e25;font-size:13px;font-weight:700; }
.wa-home-search .sf-hero__popular { margin-top:14px; }
.wa-home-search .sf-hero__popular>span { color:#52667a; }
.wa-home-search .sf-hero__chip { border:1px solid #d5e3e2;background:#fff;color:#173b52; }
.wa-home-search .sf-hero__chip:hover { border-color:#0b766f;background:#e9f7f4;color:#075f5a; }
.wa-home-search .wa-region-quicklinks { margin:16px 2px 0;color:#52667a; }
.wa-home-search .wa-region-quicklinks a { color:#0b6f69;font-weight:700;text-decoration:none; }
.wa-home-search .wa-region-quicklinks a:hover { text-decoration:underline;text-underline-offset:3px; }
@media(max-width:1120px) {
  .sf-home .wa-home-hero .sf-hero__inner { grid-template-columns:minmax(0,1fr) minmax(390px,1fr);gap:30px; }
  .sf-home .wa-home-hero .sf-hero__content { max-width:560px; }
  .sf-home .wa-home-hero .sf-hero__title { font-size:clamp(38px,4vw,43px); }
  .wa-home-search__heading { align-items:flex-start; }
  .wa-home-search .sf-hero__search { grid-template-columns:1fr 1fr; }
  .wa-home-search .sf-hero__search .sf-btn { grid-column:1/-1;min-height:54px; }
  .wa-home-search .sf-hero__control:nth-of-type(odd) { border-inline-start:0; }
}
@media(min-width:641px) {
  .sf-home .wa-home-hero .sf-hero__title>span { display:block;white-space:nowrap; }
  .sf-home .wa-home-hero .sf-hero__title>span+span::before { content:none; }
}
@media(max-width:900px) {
  .sf-home .wa-home-hero .sf-hero__inner { grid-template-columns:1fr;gap:26px;padding-block:28px 38px; }
  .sf-home .wa-home-hero .wa-home-hero__visual { order:-1; }
  .sf-home .wa-home-hero .sf-hero__content { max-width:680px; }
  .sf-home .wa-home-hero .sf-hero__title { max-width:100%;font-size:clamp(40px,6.1vw,50px); }
  .wa-home-hero__visual picture { aspect-ratio:16/8; }
}
@media(max-width:760px) {
  .wa-home-search { padding:18px 0 24px; }
  .wa-home-search__panel { padding:16px;border-radius:14px; }
  .wa-home-search__heading { display:block;margin-bottom:14px; }
  .wa-home-search__heading>p { margin-top:7px;text-align:left; }
}
@media(max-width:640px) {
  .sf-home .wa-home-hero .sf-hero__inner { gap:24px;padding-block:18px 32px; }
  .sf-home .wa-home-hero .wa-home-hero__visual { border-radius:16px; }
  .sf-home .wa-home-hero .wa-home-hero__visual picture { aspect-ratio:16/9; }
  .sf-home .wa-home-hero .wa-home-hero__visual img { object-position:center center; }
  .sf-home .wa-home-hero .sf-hero__content { max-width:100%; }
  .sf-home .wa-home-hero .sf-hero__title { max-width:12ch;font-size:clamp(34px,10vw,43px);line-height:1.02; }
  .sf-home .wa-home-hero .sf-hero__sub { font-size:15px;line-height:1.55; }
  .sf-home .wa-home-hero .wa-hero__proof { font-size:12px;line-height:1.45; }
  .wa-home-hero__caption { padding:11px 13px; }
  .wa-home-search__panel { padding:13px; }
  .wa-home-search__heading h2 { font-size:25px; }
  .wa-home-search__heading>p { font-size:14px; }
  .wa-home-search .wa-search-intent { margin-inline:-2px;padding-bottom:12px; }
  .wa-home-search .sf-hero__control,
  .wa-home-search .sf-hero__control:nth-of-type(odd) { width:100%;min-height:64px;border-inline-start:0;border-top:1px solid #d8e2e7; }
  .wa-home-search .sf-hero__control:first-child { border-top:0; }
}

/* 2026-10-22: coordinated portal navigation */
@media (min-width:1121px) {
  .wa-nav__group > .wa-nav__menu { top:calc(100% + 6px); }
  .wa-nav__group > .wa-nav__menu::before { content:""; position:absolute; left:0; right:0; top:-8px; height:8px; }
  .wa-nav__group:last-of-type > .wa-nav__menu { left:auto; right:0; }
  .wa-nav__menu { z-index:100; box-shadow:0 16px 42px rgba(7,28,48,.2); border:1px solid rgba(15,41,66,.08); }
}

/* Compact, responsive search refinement rail */
.wa-filters { background:#fff; border:1px solid #dfe7eb; border-radius:16px; box-shadow:0 10px 30px rgba(15,41,66,.08); overflow:hidden; }
.wa-filters .sf-filters__head { padding:18px 18px 14px; border-bottom:1px solid #e7edef; align-items:center; }
.wa-filters .sf-filters__head h2 { margin:2px 0 0; font-size:24px; }
.wa-filter-kicker { display:block; color:#0b766f; font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.wa-filters .sf-filters__form { padding:0 14px; }
.wa-filter-group { border-bottom:1px solid #e7edef; }
.wa-filter-group > summary { list-style:none; display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:center; gap:8px; min-height:52px; padding:10px 4px; color:#102a43; font-weight:750; cursor:pointer; }
.wa-filter-group > summary::-webkit-details-marker { display:none; }
.wa-filter-group > summary > span { display:flex; align-items:center; gap:9px; min-width:0; }
.wa-filter-group > summary > span svg { color:#0b766f; flex:none; }
.wa-filter-group > summary > small { color:#60758a; font-size:12px; font-weight:600; white-space:nowrap; max-width:105px; overflow:hidden; text-overflow:ellipsis; }
.wa-filter-group > summary > svg { transition:transform .16s ease; color:#60758a; }
.wa-filter-group[open] > summary > svg { transform:rotate(180deg); }
.wa-filter-group__body { padding:0 4px 16px; }
.wa-filter-group__body .sf-field { margin-top:12px; }
.wa-filter-group__body label:not(.sf-sr-only) { font-size:13px; font-weight:700; color:#314a60; }
.wa-filter-submit { position:sticky; bottom:0; z-index:2; margin:0 -14px; padding:14px; background:linear-gradient(to top,#fff 80%,rgba(255,255,255,.86)); }
.wa-filter-categories { margin:0 14px; }
.wa-filter-categories .sf-cat-list { max-height:310px; overflow:auto; padding-right:5px; scrollbar-width:thin; }
.wa-search-alert { margin:16px 14px; padding:18px; border-radius:14px; color:#fff; background:linear-gradient(145deg,#0f2942,#174365); box-shadow:0 10px 24px rgba(15,41,66,.18); }
.wa-search-alert__icon { display:grid; place-items:center; width:40px; height:40px; margin-bottom:12px; border-radius:50%; color:#0f2942; background:#79eadf; }
.wa-search-alert h3 { color:#fff; font-size:19px; line-height:1.25; margin:4px 0 8px; }
.wa-search-alert p { color:#dfeaf2; font-size:13px; line-height:1.5; }
.wa-search-alert form { margin-top:13px; }
.wa-search-alert input[type=email] { width:100%; min-height:44px; border-radius:8px; border:1px solid rgba(255,255,255,.4); padding:0 12px; }
.wa-search-alert button,.wa-search-alert input[type=submit] { width:100%; margin-top:8px; min-height:44px; }
.wa-results-alert-link { display:inline-flex; align-items:center; gap:5px; margin-left:8px; color:#0b766f; font-size:13px; font-weight:750; text-decoration:none; }
.wa-results-alert-link:hover { text-decoration:underline; }

/* Newsletter segmentation: editorial, regional market and listing alerts stay distinct. */
.wa-newsletter__choices { border:0; padding:0; margin:0 0 14px; }
.wa-newsletter__choices legend { margin-bottom:8px; font-size:13px; font-weight:800; }
.wa-choice { display:flex; gap:10px; align-items:flex-start; padding:10px 12px; margin:7px 0; border:1px solid rgba(255,255,255,.28); border-radius:10px; cursor:pointer; }
.wa-choice:has(input:checked) { border-color:#79eadf; background:rgba(121,234,223,.12); }
.wa-choice input { margin-top:4px; }
.wa-choice span,.wa-choice strong,.wa-choice small { display:block; }
.wa-choice small { margin-top:2px; opacity:.82; font-size:12px; }
.wa-newsletter__region { display:grid; grid-template-columns:1fr 1fr; gap:8px 12px; margin:12px 0 15px; }
.wa-newsletter__region[hidden] { display:none !important; }
.wa-newsletter__region label { font-size:12px; font-weight:700; }
.wa-newsletter__region label span { opacity:.7; font-weight:500; }
.wa-newsletter__region input,.wa-newsletter__region select { width:100%; min-height:42px; border:1px solid rgba(255,255,255,.35); border-radius:8px; padding:0 10px; background:#fff; color:#102a43; }

@media (max-width:860px) {
  .wa-filters { border-radius:0; box-shadow:none; }
  .wa-filters .sf-filters__head { padding-top:max(18px,env(safe-area-inset-top)); }
  .wa-filter-group > summary { min-height:58px; }
  .wa-filter-group__body { padding-bottom:18px; }
  .wa-filter-categories .sf-cat-list { max-height:38vh; }
  .wa-results-alert-link { display:none; }
  .wa-newsletter__region { grid-template-columns:1fr; }
}
.wa-search-alert .oe-label { color:#fff; }
.wa-search-alert .oe-input { color:#102a43; background:#fff; }
.wa-search-alert .oe-btn { width:100%; min-height:44px; border:0; border-radius:8px; background:#79eadf; color:#0f2942; font-weight:800; cursor:pointer; }
.wa-search-alert .oe-btn:hover { background:#fff; }

/* Managed editorial system: distinct magazine, guide and company-blog hubs. */
.wa-editorial{color:#102f49;background:#fff}
.wa-editorial-hub__hero{padding:clamp(40px,5.5vw,72px) 0;background:linear-gradient(135deg,#0b263e 0%,#104b5f 58%,#0c726b 100%);color:#fff}
.wa-editorial--guide .wa-editorial-hub__hero{background:linear-gradient(135deg,#0f2942 0%,#174b61 60%,#196b75 100%)}
.wa-editorial--blog .wa-editorial-hub__hero{background:linear-gradient(135deg,#0d2940 0%,#253f55 62%,#6c4b38 130%)}
.wa-editorial-hub__hero>.sf-container{display:grid;grid-template-columns:minmax(0,1fr) minmax(440px,.92fr);gap:clamp(34px,5vw,72px);align-items:center}
.wa-editorial-hub__hero>.sf-container>*{min-width:0}.wa-editorial-hub__copy{max-width:680px}.wa-editorial-hub__hero .wa-page-eyebrow{color:#79eadf}
.wa-editorial-hub__hero h1{max-width:18ch;margin:9px 0 18px;color:#fff;font-size:clamp(40px,4.2vw,62px);line-height:1.02;letter-spacing:-.045em;text-wrap:balance;overflow-wrap:normal;word-break:normal;hyphens:none}
.wa-editorial-hub__copy>p:not(.wa-page-eyebrow){max-width:610px;margin:0;color:#dbe9ed;font-size:clamp(16px,1.5vw,19px);line-height:1.65}
.wa-editorial-hub__actions{display:flex;flex-wrap:wrap;gap:11px;margin-top:27px}.wa-editorial-hub__actions .sf-btn--secondary{border-color:rgba(255,255,255,.58);color:#fff;background:rgba(255,255,255,.08)}
.wa-editorial-hub__lead,.wa-editorial-hub__cover{min-width:0;width:100%;overflow:hidden;margin:0;border:1px solid rgba(255,255,255,.18);border-radius:22px;background:#fff;color:#102a43;box-shadow:0 24px 60px rgba(3,18,31,.26)}
.wa-editorial-hub__cover img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:#dce7e9}.wa-editorial-hub__cover figcaption{padding:14px 17px;color:#dce9ef;background:#102f49;font-size:12px;line-height:1.5}
.wa-editorial-hub__lead{display:grid;grid-template-columns:190px minmax(0,1fr);grid-template-rows:auto auto 1fr auto;gap:5px 19px;padding:14px;text-decoration:none}.wa-editorial-hub__lead img{grid-row:1/5;width:190px;height:166px;object-fit:cover;border-radius:13px;background:#dce7e9}.wa-editorial-hub__lead span{color:#0b766f;font-size:11px;font-weight:850;letter-spacing:.07em;text-transform:uppercase}.wa-editorial-hub__lead strong{font-size:clamp(20px,2vw,25px);line-height:1.18}.wa-editorial-hub__lead small{color:#52667a;line-height:1.48}.wa-editorial-hub__lead b{color:#0b766f;font-size:12px}
.wa-editorial-categories{display:flex;gap:8px;overflow-x:auto;padding-block:20px;scrollbar-width:thin}.wa-editorial-categories a{flex:none;padding:9px 14px;border:1px solid #dbe5ea;border-radius:999px;color:#173b52;font-size:13px;font-weight:750;text-decoration:none}.wa-editorial-categories a[aria-current=page]{border-color:#0b766f;background:#e5f5f2;color:#075c57}
.wa-editorial-hub__layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:clamp(28px,4vw,48px);padding:24px 0 72px}.wa-editorial-hub__content{min-width:0}.wa-editorial-hub__section-head{margin-bottom:24px}.wa-editorial-hub__section-head h2{max-width:760px;margin:5px 0 0;font-size:clamp(30px,3.4vw,44px);line-height:1.08;letter-spacing:-.035em;text-wrap:balance;hyphens:none}.wa-editorial-hub__section-head>p:last-child:not(.wa-page-eyebrow){color:#52667a}
.wa-editorial-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.wa-editorial-cards article{overflow:hidden;border:1px solid #dfe7eb;border-radius:18px;background:#fff;box-shadow:0 10px 30px rgba(15,41,66,.075)}.wa-editorial-cards article>a{display:flex;height:100%;flex-direction:column;color:#102a43;text-decoration:none}.wa-editorial-cards img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:#dce7e9}.wa-editorial-cards span,.wa-editorial-cards h3,.wa-editorial-cards p,.wa-editorial-cards small{display:block;margin-inline:20px}.wa-editorial-cards span{margin-top:19px;color:#0b766f;font-size:11px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}.wa-editorial-cards h3{margin-top:7px;margin-bottom:9px;font-size:23px;line-height:1.2;hyphens:none}.wa-editorial-cards p{margin-top:0;color:#52667a;line-height:1.56}.wa-editorial-cards small{margin-top:auto;padding-top:17px;margin-bottom:20px;color:#60758a}
.wa-editorial-empty{display:grid;grid-template-columns:50px minmax(0,1fr);gap:18px;align-items:start;padding:28px;border:1px solid #cfe0e2;border-radius:18px;background:linear-gradient(135deg,#f3faf9,#fff);box-shadow:0 10px 28px rgba(15,41,66,.055)}.wa-editorial-empty>span{display:grid;place-items:center;width:50px;height:50px;border-radius:15px;background:#dff5f1;color:#08766f;font-size:24px}.wa-editorial-empty h3{margin:1px 0 8px;font-size:24px;line-height:1.2}.wa-editorial-empty p{max-width:680px;margin:0;color:#52667a;line-height:1.6}.wa-editorial-empty a{display:inline-block;margin-top:14px;color:#08766f;font-weight:800;text-decoration:none}.wa-editorial-hub__single-note{padding:20px 22px;border:1px solid #dfe7eb;border-radius:14px;background:#f6f9fa;color:#52667a}
.wa-editorial-sidebar{display:flex;min-width:0;flex-direction:column;gap:18px}.wa-editorial-sidebar>form,.wa-editorial-sidebar>div,.wa-editorial-ad{padding:20px;border:1px solid #dfe7eb;border-radius:15px;background:#fff}.wa-editorial-sidebar label,.wa-editorial-sidebar strong{display:block;margin-bottom:10px;font-weight:800}.wa-editorial-search-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.wa-editorial-sidebar input{width:100%;min-width:0;min-height:44px;border:1px solid #b8c7d1;border-radius:8px;padding:0 12px}.wa-editorial-sidebar button{min-height:44px;padding:0 14px;border:0;border-radius:8px;background:#0b766f;color:#fff;font-weight:800;cursor:pointer}.wa-editorial-sidebar>div a{display:block;padding:9px 0;border-bottom:1px solid #edf1f3;color:#173b52;text-decoration:none}.wa-editorial-ad{background:#eef8f6;color:#102a43;border-style:dashed}.wa-editorial-ad small,.wa-editorial-ad strong,.wa-editorial-ad span{display:block}.wa-editorial-ad small{color:#60758a;font-weight:800;letter-spacing:.1em}.wa-editorial-ad strong{margin:12px 0;font-size:21px}.wa-editorial-ad span{color:#0b766f;font-weight:750}
.wa-article__hero{padding:clamp(34px,5vw,64px) 0;background:linear-gradient(145deg,#edf6f5,#f7fafb 62%,#eef3f7)}.wa-article__hero-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(420px,1.08fr);gap:clamp(34px,5vw,72px);align-items:center}.wa-article__hero-grid>*{min-width:0}.wa-article__category{display:inline-flex;padding:7px 11px;border-radius:999px;background:#dff4f1;color:#08766f;font-size:12px;font-weight:850;text-decoration:none}.wa-article__hero h1{max-width:17ch;margin:15px 0 17px;font-size:clamp(38px,4.6vw,62px);line-height:1.02;letter-spacing:-.045em;text-wrap:balance;overflow-wrap:normal;word-break:normal;hyphens:none}.wa-article__hero-copy>p{max-width:690px;margin:0;color:#52667a;font-size:clamp(17px,1.6vw,20px);line-height:1.6}.wa-article__meta{margin-top:20px;color:#60758a;font-size:13px;line-height:1.5}.wa-article__hero-media{overflow:hidden;margin:0;border:1px solid #d4e1e4;border-radius:20px;background:#dce7e9;box-shadow:0 20px 48px rgba(15,41,66,.14)}.wa-article__hero-media img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}
.wa-article__layout{display:grid;grid-template-columns:230px minmax(0,760px);gap:clamp(34px,5vw,60px);justify-content:center;padding-block:48px 76px}.wa-article__layout>aside{position:sticky;top:112px;align-self:start;display:flex;max-height:calc(100vh - 140px);overflow:auto;flex-direction:column;gap:5px;padding:19px;border:1px solid #dfe7eb;border-radius:14px;background:#fff}.wa-article__layout>aside strong{margin-bottom:7px}.wa-article__layout>aside a{padding:7px 0;color:#456074;font-size:13px;line-height:1.35;text-decoration:none}.wa-article__layout>aside a:hover{color:#08766f}.wa-article__body{min-width:0;font-size:17px;line-height:1.78}.wa-article__body>p:first-child{margin-top:0;font-size:19px;line-height:1.7;color:#345369}.wa-article__body h2{scroll-margin-top:120px;margin:48px 0 16px;font-size:clamp(28px,3vw,38px);line-height:1.14;letter-spacing:-.025em;hyphens:none}.wa-article__body ol,.wa-article__body ul{padding-left:1.35em}.wa-article__body li+li{margin-top:8px}.wa-article__body table{display:block;width:100%;max-width:100%;margin:26px 0;overflow-x:auto;border-collapse:collapse;border-spacing:0;-webkit-overflow-scrolling:touch}.wa-article__body th,.wa-article__body td{min-width:150px;padding:12px 14px;border:1px solid #dce6ea;text-align:left;vertical-align:top;line-height:1.5}.wa-article__body th{background:#eef6f5;color:#173b52;font-size:14px}.wa-article__body td{background:#fff}.wa-article__sources{margin-top:50px;padding:26px;border-radius:16px;background:#f2f7f7;border:1px solid #dce7e9}.wa-article__sources h2{margin-top:0}
.wa-managed-faq{padding:56px 0;background:#f4f8f8}.wa-managed-faq h2{font-size:clamp(30px,4vw,44px)}.wa-managed-faq__grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.wa-managed-faq details{padding:18px 20px;border:1px solid #dfe7eb;border-radius:12px;background:#fff}.wa-managed-faq summary{cursor:pointer;font-weight:800}.wa-managed-faq p{color:#52667a;line-height:1.6}
@media(max-width:1120px){.wa-editorial-hub__hero>.sf-container,.wa-article__hero-grid{grid-template-columns:1fr}.wa-editorial-hub__copy,.wa-editorial-hub__lead,.wa-editorial-hub__cover,.wa-article__hero-copy,.wa-article__hero-media{max-width:820px}.wa-editorial-hub__layout{grid-template-columns:1fr}.wa-editorial-sidebar{display:grid;grid-template-columns:1fr 1fr}.wa-editorial-sidebar>.wa-public-ad,.wa-editorial-ad{grid-column:1/-1}.wa-article__layout{grid-template-columns:1fr;justify-content:stretch}.wa-article__layout>aside{position:static;max-height:none;flex-direction:row;overflow-x:auto;white-space:nowrap}.wa-managed-faq__grid{grid-template-columns:1fr}}
@media(max-width:640px){.wa-editorial-hub__hero{padding:28px 0 36px}.wa-editorial-hub__hero>.sf-container,.wa-article__hero-grid{gap:24px}.wa-editorial-hub__cover,.wa-editorial-hub__lead,.wa-article__hero-media{order:-1;border-radius:16px}.wa-editorial-hub__hero h1,.wa-article__hero h1{max-width:100%;font-size:clamp(32px,9vw,40px);line-height:1.04;overflow-wrap:normal;word-break:normal;hyphens:none}.wa-editorial-hub__actions{flex-direction:column}.wa-editorial-hub__actions .sf-btn{width:100%;justify-content:center}.wa-editorial-hub__lead{grid-template-columns:1fr;padding:12px}.wa-editorial-hub__lead img{grid-row:auto;width:100%;height:auto;aspect-ratio:16/9}.wa-editorial-hub__layout{padding-top:12px}.wa-editorial-cards,.wa-editorial-sidebar{grid-template-columns:1fr}.wa-editorial-sidebar>.wa-public-ad,.wa-editorial-ad{grid-column:auto}.wa-editorial-search-row{grid-template-columns:1fr}.wa-editorial-sidebar button{width:100%}.wa-editorial-empty{grid-template-columns:1fr;padding:22px}.wa-article__hero{padding:26px 0 34px}.wa-article__layout{padding-top:30px}.wa-article__body{font-size:16px}.wa-article__body>p:first-child{font-size:17px}.wa-article__layout>aside{margin-inline:-4px;padding:14px}}
.wa-search-alert__privacy { margin:8px 0 0!important; font-size:11px!important; opacity:.82; }
@media(max-width:640px){.sf-main__pad{padding-inline:16px}.sf-results__title{font-size:24px}.sf-empty{padding-inline:18px}.wa-newsletter__inner{padding-inline:16px}.wa-newsletter h2{overflow-wrap:anywhere}.sf-footer__grid,.sf-footer__intro,.sf-footer__legal-row,.wa-footer-action__inner{padding-inline:16px}}

/* 2026-10-22: clear filter hierarchy, full-width search alerts and contact page */
.wa-filter-group > summary{grid-template-columns:minmax(0,1fr) minmax(0,88px) 16px;font-size:14px;font-weight:700}
.wa-filter-group > summary > span{overflow-wrap:anywhere;line-height:1.3}
.wa-filter-group > summary > small{max-width:88px;text-align:right;font-size:11px;font-weight:550;white-space:normal;line-height:1.25;overflow-wrap:anywhere}
.wa-filter-advanced{margin-top:12px;border:1px solid #dfe7eb;border-radius:10px;background:#f8fbfc}
.wa-filter-advanced>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;list-style:none;padding:11px 12px;color:#173b52;font-size:12px;font-weight:750;cursor:pointer}
.wa-filter-advanced>summary::-webkit-details-marker{display:none}.wa-filter-advanced>summary span{color:#0b766f;font-size:11px;font-weight:650}.wa-filter-advanced[open]>summary span{font-size:0}.wa-filter-advanced[open]>summary span:after{content:"schließen";font-size:11px}
.wa-filter-advanced .sf-filters__plugin{padding:0 12px 12px;border-top:1px solid #e5ecef}.wa-filter-advanced .sf-filters__plugin h3{margin:16px 0 7px;font-size:11px;line-height:1.25;font-weight:750;letter-spacing:.04em;overflow-wrap:anywhere}.wa-filter-advanced .sf-filters__plugin label{font-size:12px;font-weight:600;overflow-wrap:anywhere}.wa-filter-advanced .sf-filters__plugin input,.wa-filter-advanced .sf-filters__plugin select{min-width:0;max-width:100%}
.wa-sidebar-alert-link{display:grid;grid-template-columns:28px minmax(0,1fr) 16px;align-items:center;gap:10px;margin:14px;padding:14px;border:1px solid #bfe5df;border-radius:12px;background:#eefaf8;color:#102a43;text-decoration:none}.wa-sidebar-alert-link>svg:first-child{color:#0b766f}.wa-sidebar-alert-link span,.wa-sidebar-alert-link strong,.wa-sidebar-alert-link small{display:block;min-width:0}.wa-sidebar-alert-link strong{font-size:13px;line-height:1.25}.wa-sidebar-alert-link small{margin-top:3px;color:#52667a;font-size:11px;font-weight:500;line-height:1.35;overflow-wrap:anywhere}
.sf-searchlayout__main>.wa-search-alert{margin:20px 0 28px;padding:26px;border-radius:18px;background:linear-gradient(135deg,#0f2942 0%,#123c59 100%)}
.wa-search-alert__intro{display:grid;grid-template-columns:48px minmax(0,1fr);gap:16px}.wa-search-alert__intro .wa-search-alert__icon{margin:0;width:48px;height:48px}.wa-search-alert__intro h2{margin:3px 0 7px;color:#fff;font-size:clamp(22px,3vw,30px);line-height:1.15}.wa-search-alert__intro p{max-width:780px;margin:0;color:#dfeaf2;font-size:14px}.wa-search-alert .wa-filter-kicker{color:#79eadf}
.wa-search-alert__criteria{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;margin:22px 0 18px;overflow:hidden;border:1px solid rgba(255,255,255,.16);border-radius:12px;background:rgba(255,255,255,.13)}.wa-search-alert__criteria>div{min-width:0;padding:12px;background:rgba(8,32,51,.72)}.wa-search-alert__criteria dt{margin-bottom:4px;color:#a9c6d8;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.wa-search-alert__criteria dd{margin:0;color:#fff;font-size:13px;font-weight:700;line-height:1.35;overflow-wrap:anywhere}
.wa-search-alert__form{max-width:720px}.wa-search-alert__form form{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:10px;align-items:end;margin:0}.wa-search-alert__form .oe-field{margin:0}.wa-search-alert__form .oe-label{display:block;margin-bottom:6px}.wa-search-alert__form .oe-btn{width:auto;margin:0;padding-inline:22px}.wa-search-alert__form .wa-search-alert__privacy{margin-top:9px!important}
.wa-newsletter{background:#fff}.wa-newsletter__inner{align-items:start}.wa-newsletter__copy{padding-top:4px}.wa-newsletter__alert-cta{display:grid;grid-template-columns:28px minmax(0,1fr) 16px;align-items:center;gap:10px;max-width:620px;margin-top:22px;padding:15px;border:1px solid #bfe5df;border-radius:12px;background:#eefaf8;color:#102a43;text-decoration:none}.wa-newsletter__alert-cta>svg:first-child{color:#0b766f}.wa-newsletter__alert-cta span,.wa-newsletter__alert-cta strong,.wa-newsletter__alert-cta small{display:block;min-width:0}.wa-newsletter__alert-cta small{margin-top:3px;color:#52667a;font-size:12px;line-height:1.4}.wa-newsletter__choices legend{color:#173b52}.wa-choice{border-color:#d5e2e7;background:#fff}.wa-choice:has(input:checked){border-color:#31b9ad;background:#eefaf8}.wa-choice strong{color:#173b52}.wa-choice small{color:#52667a;opacity:1}.wa-newsletter__region input,.wa-newsletter__region select{border-color:#b8c7d1}.wa-newsletter__form>label:first-of-type{color:#173b52}
.wa-contact{padding-block:20px 64px}.wa-contact__hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);gap:48px;align-items:center;padding:48px;border-radius:24px;background:linear-gradient(135deg,#0f2942,#174b62);color:#fff}.wa-contact__hero h1{margin:5px 0 12px;color:#fff;font-size:clamp(34px,5vw,58px);line-height:1.03}.wa-contact__hero>div>p:last-child{max-width:650px;margin:0;color:#dbe8ef;font-size:18px;line-height:1.6}.wa-contact__hero .wa-filter-kicker{color:#79eadf}.wa-contact__facts{display:grid;gap:12px}.wa-contact__facts>div{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;padding:16px;border:1px solid rgba(255,255,255,.17);border-radius:12px;background:rgba(255,255,255,.08)}.wa-contact__facts svg{color:#79eadf}.wa-contact__facts span,.wa-contact__facts strong,.wa-contact__facts small,.wa-contact__facts a{display:block}.wa-contact__facts strong{margin-bottom:3px;font-size:13px}.wa-contact__facts small,.wa-contact__facts a{color:#dbe8ef;font-size:13px;line-height:1.4}.wa-contact__body{display:grid;grid-template-columns:minmax(240px,.65fr) minmax(0,1.35fr);gap:50px;margin-top:40px}.wa-contact__intro{padding:8px 0}.wa-contact__intro h2{margin:0 0 10px;color:#102a43;font-size:30px}.wa-contact__intro p{color:#52667a;line-height:1.65}.wa-contact__intro ul{padding-left:20px;color:#314a60;line-height:1.6}.wa-contact__intro li+li{margin-top:8px}.wa-contact__form{padding:30px;border:1px solid #dfe7eb;border-radius:18px;background:#fff;box-shadow:0 14px 36px rgba(15,41,66,.08)}.wa-contact__grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.wa-contact .oe-field{margin-bottom:18px}.wa-contact .oe-label{display:block;margin-bottom:6px;color:#173b52;font-size:13px;font-weight:750}.wa-contact .oe-input{width:100%;min-height:48px;border:1px solid #b8c7d1;border-radius:9px;padding:11px 13px;font:inherit;color:#102a43;background:#fff}.wa-contact textarea.oe-input{min-height:170px;resize:vertical}.wa-contact .oe-input:focus{outline:2px solid #46cfc2;outline-offset:1px;border-color:#0b766f}.wa-contact .oe-actions{display:flex;align-items:center;gap:18px}.wa-contact .oe-actions .oe-btn{min-height:48px;padding:0 22px;border:0;border-radius:9px;background:#0b766f;color:#fff;font-weight:800;cursor:pointer}.wa-contact .oe-actions p{margin:0;color:#60758a;font-size:11px;line-height:1.4}
@media(max-width:980px){.wa-search-alert__criteria{grid-template-columns:repeat(2,minmax(0,1fr))}.wa-search-alert__criteria>div:last-child{grid-column:1/-1}.wa-contact__hero,.wa-contact__body{grid-template-columns:1fr}.wa-contact__hero{gap:26px}.wa-contact__facts{grid-template-columns:repeat(3,minmax(0,1fr))}.wa-contact__facts>div{grid-template-columns:1fr}.wa-contact__facts svg{margin-bottom:3px}}
@media(max-width:640px){.sf-searchlayout__main>.wa-search-alert{margin-inline:0;padding:20px 16px}.wa-search-alert__intro{grid-template-columns:1fr}.wa-search-alert__criteria{grid-template-columns:1fr}.wa-search-alert__criteria>div:last-child{grid-column:auto}.wa-search-alert__form form{grid-template-columns:1fr}.wa-search-alert__form .oe-btn{width:100%}.wa-newsletter__alert-cta{grid-template-columns:26px minmax(0,1fr)}.wa-newsletter__alert-cta>svg:last-child{display:none}.wa-contact{padding-block:0 40px}.wa-contact__hero{margin-inline:-16px;padding:30px 20px;border-radius:0}.wa-contact__facts{grid-template-columns:1fr}.wa-contact__body{gap:20px;margin-top:28px}.wa-contact__form{padding:20px 16px}.wa-contact__grid{grid-template-columns:1fr}.wa-contact .oe-actions{align-items:stretch;flex-direction:column}.wa-contact .oe-actions .oe-btn{width:100%}}
.wa-provider-booking{padding:20px 0 72px}.wa-provider-booking__hero{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,.7fr);gap:48px;align-items:center;padding:clamp(32px,5vw,64px);border-radius:24px;background:linear-gradient(135deg,#0f2942,#155e75);color:#fff}.wa-provider-booking__hero h1{max-width:760px;margin:6px 0 14px;color:#fff;font-size:clamp(36px,5vw,60px);line-height:1.02}.wa-provider-booking__hero>div>p:last-child{max-width:700px;margin:0;color:#dce9ef;font-size:18px;line-height:1.65}.wa-provider-booking__summary{display:grid;gap:12px}.wa-provider-booking__summary div{padding:16px 18px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(255,255,255,.08)}.wa-provider-booking__summary strong,.wa-provider-booking__summary span{display:block}.wa-provider-booking__summary span{margin-top:3px;color:#dce9ef;font-size:13px}.wa-provider-booking__layout{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr);gap:44px;margin-top:40px}.wa-provider-booking__benefits{padding:8px 0}.wa-provider-booking__benefits h2{margin:4px 0 20px;color:#102a43;font-size:32px}.wa-provider-booking__benefits ul{display:grid;gap:16px;margin:0;padding:0;list-style:none}.wa-provider-booking__benefits li{position:relative;padding-left:30px;color:#314a60;line-height:1.6}.wa-provider-booking__benefits li:before{position:absolute;left:0;top:2px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#d9f5f1;color:#0b766f;content:'✓';font-size:12px;font-weight:900}.wa-provider-booking__privacy{margin-top:26px;padding:15px 16px;border-radius:11px;background:#f0f8f7;color:#486477;font-size:13px;line-height:1.55}.wa-provider-booking__calendar{min-height:520px;overflow:hidden;border:1px solid #dfe7eb;border-radius:18px;background:#fff;box-shadow:0 14px 36px rgba(15,41,66,.08)}.wa-provider-booking__calendar iframe{display:block;width:100%;min-height:720px;border:0}.wa-provider-booking__calendar>p{margin:0;padding:12px 18px;border-top:1px solid #e8eef1;font-size:13px}.wa-provider-booking__pending{display:flex;min-height:520px;padding:44px;align-items:flex-start;justify-content:center;flex-direction:column}.wa-provider-booking__pending>span{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#d9f5f1;color:#0b766f;font-size:24px;font-weight:900}.wa-provider-booking__pending h2{margin:20px 0 10px;color:#102a43;font-size:30px}.wa-provider-booking__pending p{max-width:580px;color:#52667a;line-height:1.65}.wa-provider-booking__pending small{margin-top:13px;color:#60758a}@media(max-width:900px){.wa-provider-booking__hero,.wa-provider-booking__layout{grid-template-columns:1fr}.wa-provider-booking__summary{grid-template-columns:repeat(3,minmax(0,1fr))}.wa-provider-booking__layout{gap:24px}}@media(max-width:640px){.wa-provider-booking{padding-top:0}.wa-provider-booking__hero{margin-inline:-16px;padding:30px 20px;border-radius:0}.wa-provider-booking__summary{grid-template-columns:1fr}.wa-provider-booking__pending{min-height:430px;padding:28px 20px}.wa-provider-booking__calendar{min-height:430px}}

/* 2026-10-22: Exposé gallery and verified provider rail. */
.sf-gallery--mosaic{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(220px,.8fr);gap:8px;height:min(520px,52vw)}
.sf-gallery--mosaic .sf-gallery__stage{height:100%;aspect-ratio:auto;border-radius:18px 6px 6px 18px}
.sf-gallery--mosaic .sf-gallery__thumbs{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:8px;overflow:hidden;padding:0}
.sf-gallery--mosaic .sf-gallery__thumbs li{min-width:0;min-height:0;flex:auto}
.sf-gallery--mosaic .sf-gallery__thumb{height:100%;aspect-ratio:auto;border:0;border-radius:6px}
.sf-gallery--mosaic .sf-gallery__thumbs li:nth-child(2n) .sf-gallery__thumb{border-radius:6px 18px 18px 6px}
.sf-gallery__more{position:absolute;inset:0;display:grid;place-items:center;background:rgba(7,30,49,.62);color:#fff;font-size:26px;font-weight:800}
.sf-seller__eyebrow{margin:0 0 2px;color:var(--color-accent-ink);font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
.sf-seller__head{margin-bottom:16px;color:var(--color-text);font-size:22px;letter-spacing:0;text-transform:none}
.sf-seller__id{align-items:flex-start;margin-bottom:14px}
.sf-seller__avatar{width:64px;height:64px;border-radius:50%;font-size:23px}
.sf-seller__name{padding-top:7px;font-size:17px}
.sf-seller__name a,.sf-seller__name>span:first-child{white-space:normal;overflow-wrap:anywhere}
.sf-seller__status{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.sf-seller__status span{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:800;line-height:1.2}
.sf-seller__status .is-premium{background:#102a43;color:#fff}.sf-seller__status .is-verified{background:#e7f8f5;color:#08766f}.sf-seller__status .is-neutral{background:#f1f4f6;color:#60758a}
.sf-seller__rating{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:5px;margin:0 0 14px;padding:11px 12px;border:1px solid #dce8e7;border-radius:10px;color:var(--color-text);background:#fbfdfd;text-decoration:none}
.sf-seller__rating strong{font-size:18px}.sf-seller__rating>span{color:#f5b301;font-size:18px}.sf-seller__rating small{color:var(--color-muted);font-size:11px;line-height:1.3}.sf-seller__rating:hover{border-color:var(--color-accent);text-decoration:none}
.sf-seller__rating-empty{margin:0 0 14px;padding:10px 12px;border-radius:9px;background:#f4f7f8;color:#60758a;font-size:12px;line-height:1.4}
.sf-seller__facts{display:flex;flex-direction:row;flex-wrap:wrap;gap:6px 14px;margin-bottom:15px}
.sf-seller__facts li{font-size:12px}.sf-seller__contact{min-height:48px;background:#0b8f87;border-color:#0b8f87;font-size:15px}.sf-seller__contact:hover{background:#08766f;border-color:#08766f}
.sf-seller__profile{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:14px 0 0;padding-top:14px;border-top:1px solid var(--color-divider);color:var(--color-accent-ink);font-size:12px;font-weight:800;line-height:1.4}
.sf-seller__safety{display:grid;grid-template-columns:20px 1fr;gap:9px;margin-top:15px;padding:12px;border-radius:10px;background:#f6f8f9;color:#52667a}.sf-seller__safety svg{margin-top:2px;color:#0b766f}.sf-seller__safety p,.sf-seller__safety strong,.sf-seller__safety span{display:block;margin:0}.sf-seller__safety strong{color:#314a60;font-size:12px}.sf-seller__safety span{margin-top:3px;font-size:11px;line-height:1.45}
@media(max-width:920px){.sf-gallery--mosaic{height:min(560px,68vw);grid-template-columns:minmax(0,1.5fr) minmax(180px,.7fr)}}
@media(max-width:640px){.sf-gallery--mosaic{display:block;height:auto}.sf-gallery--mosaic .sf-gallery__stage{aspect-ratio:4/3;border-radius:14px}.sf-gallery--mosaic .sf-gallery__thumbs{display:flex;margin-top:8px;overflow-x:auto}.sf-gallery--mosaic .sf-gallery__thumbs li{flex:0 0 86px}.sf-gallery--mosaic .sf-gallery__thumb{height:auto;aspect-ratio:1;border-radius:9px!important}.sf-detail__summary,.sf-seller{border-radius:14px}.sf-seller{padding:18px}.sf-seller__avatar{width:56px;height:56px}}

/* 2026-10-23: Expose v3. The gallery, title and content form one calm reading
   column. Price, contact and provider form one conversion rail. Keep the admin
   panel outside the sticky public rail so moderation controls never cover the
   provider profile or page content. */
.sf-detail__grid{grid-template-columns:minmax(0,820px) minmax(340px,380px);grid-template-areas:"media aside" "intro aside" "body aside";column-gap:32px;row-gap:28px;max-width:1232px;margin-inline:auto}
.sf-detail__media{grid-area:media;min-width:0}
.sf-detail__intro{display:block!important;visibility:visible!important;grid-area:intro;min-width:0;padding:6px 2px 24px;border-bottom:1px solid var(--color-divider)}
.sf-detail__intro-meta{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:12px;color:var(--color-muted);font-size:12px}
.sf-detail__intro-row{display:flex;align-items:flex-start;justify-content:space-between;gap:28px}.sf-detail__intro-row>div:first-child{min-width:0;max-width:880px}
.sf-detail__intro .sf-detail__title{display:block!important;visibility:visible!important;color:var(--color-text);font-size:clamp(30px,3vw,42px);line-height:1.12;margin:0 0 12px;overflow-wrap:anywhere}.sf-detail__intro .sf-detail__location{display:flex;align-items:center;gap:7px;color:var(--color-neutral-700);font-size:15px;margin:0 0 20px}
.sf-detail__intro-actions{display:flex;gap:8px;flex:none}.sf-detail__intro .sf-detail__quickfacts{display:flex;flex-wrap:wrap;gap:0;margin:0;border:0;background:transparent}.sf-detail__intro .sf-detail__quickfacts>div{min-width:138px;padding:11px 20px 11px 0;margin-right:20px;border-right:1px solid var(--color-divider);background:transparent}.sf-detail__intro .sf-detail__quickfacts>div:last-child{border-right:0}
.wa-premium-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:#102f49;color:#fff;font-size:12px;font-weight:800;letter-spacing:.01em}.wa-premium-badge--gallery{position:absolute;z-index:3;top:16px;left:16px;padding:8px 12px;background:linear-gradient(135deg,#102f49,#1b536d);box-shadow:0 7px 22px rgba(7,30,49,.24)}
.sf-gallery--mosaic{height:clamp(430px,45vw,540px);grid-template-columns:minmax(0,1.65fr) minmax(230px,.78fr)}.sf-gallery--mosaic .sf-gallery__stage>img{object-fit:cover}.sf-gallery__stage img{object-fit:cover}.sf-gallery__stage:focus-visible,.sf-gallery__thumb:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}
.sf-detail__aside{grid-area:aside;position:relative!important;top:auto!important;z-index:2;align-self:stretch;min-width:0;display:flex;flex-direction:column;gap:16px}.sf-detail__summary{padding:26px}.sf-detail__price-label{margin:0 0 10px;color:var(--color-neutral-700);font-size:13px;font-weight:700}.sf-detail__summary .sf-detail__price{margin:0;color:var(--color-accent-ink);font-size:38px;line-height:1.05}.sf-detail__price-note{margin:8px 0 20px;color:var(--color-neutral-700);font-size:13px;line-height:1.45}.sf-detail__primary-contact{display:grid;gap:10px;padding-top:18px;border-top:1px solid var(--color-divider)}.sf-detail__primary-contact .sf-btn--primary{min-height:52px;font-size:15px}.sf-detail__primary-contact .sf-phone{width:100%}
.sf-detail__sticky{display:flex;flex-direction:column;gap:0;filter:drop-shadow(0 10px 24px rgba(15,42,67,.09))}.sf-detail__sticky .sf-detail__summary{border-bottom-left-radius:0;border-bottom-right-radius:0;box-shadow:none}.sf-detail__sticky .sf-seller{border-top:1px solid var(--color-divider);border-top-left-radius:0;border-top-right-radius:0;box-shadow:none}.sf-detail__sticky .sf-seller__head{margin-bottom:14px}.sf-detail__sticky .sf-seller__eyebrow{margin-bottom:4px}.sf-detail__sticky .sf-seller__rating-empty{border:1px solid var(--color-divider);background:var(--color-neutral-50)}
.sf-admin{position:relative!important;inset:auto!important;z-index:1;margin:0!important;box-shadow:none!important}
.wa-section-nav{position:sticky;top:calc(var(--sf-header-h) + 8px);z-index:5;display:flex;gap:6px;overflow-x:auto;padding:8px;margin:0 0 34px;border:1px solid var(--color-divider);border-radius:12px;background:color-mix(in srgb,var(--color-surface) 94%,transparent);box-shadow:var(--shadow-sm);backdrop-filter:blur(10px);scrollbar-width:thin}.wa-section-nav a{flex:none;padding:8px 10px;border-radius:8px;color:var(--color-neutral-700);font-size:12px;font-weight:750;text-decoration:none}.wa-section-nav a:hover,.wa-section-nav a:focus{background:var(--color-accent-100);color:var(--color-accent-ink)}
.wa-listing-section{scroll-margin-top:150px;padding:0 0 34px;border-bottom:1px solid var(--color-divider)}.wa-listing-section+.wa-listing-section{margin-top:34px}.wa-listing-section .sf-prose{max-width:72ch;font-size:16px;line-height:1.75}.wa-listing-section .sf-prose p:first-child{margin-top:0}.wa-listing-section--ausstattung .sf-prose ul,.wa-listing-section--eckdaten .sf-prose ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 22px;padding:0;list-style:none}.wa-listing-section--ausstattung .sf-prose li,.wa-listing-section--eckdaten .sf-prose li{position:relative;padding-left:20px}.wa-listing-section--ausstattung .sf-prose li:before,.wa-listing-section--eckdaten .sf-prose li:before{content:"\2713";position:absolute;left:0;color:var(--color-accent-ink);font-weight:900}
.sf-map{border-radius:18px;overflow:hidden}.sf-map__canvas{min-height:430px}.sf-map__load{min-height:180px}.sf-map__canvas:after{content:"Ungefähre Lage · der genaue Standort bleibt geschützt";position:absolute;z-index:500;left:12px;bottom:12px;padding:7px 10px;border-radius:8px;background:rgba(255,255,255,.92);color:#173b52;font-size:11px;font-weight:750;box-shadow:0 3px 12px rgba(15,41,66,.14)}
/* Lightbox zoom is defined with its complete overflow behaviour in the viewer
   component above. Do not override it in the exposé layout layer. */
@media(min-width:921px){.sf-detail__sticky{position:sticky;top:calc(var(--sf-header-h) + var(--space-4))}.sf-detail__sticky--admin{position:static}.sf-detail__body{grid-area:body}}
@media(max-width:920px){.sf-detail__grid{grid-template-columns:1fr;grid-template-areas:"media" "intro" "aside" "body";gap:24px}.sf-detail__aside{position:static!important}.sf-detail__sticky{position:static}.sf-detail__intro-row{display:block}.sf-detail__intro-actions{margin-top:14px}.sf-gallery--mosaic{height:min(600px,68vw)}.wa-section-nav{top:8px}}
@media(max-width:640px){.sf-detail__grid{gap:18px}.sf-detail__intro{padding-top:0}.sf-detail__intro .sf-detail__title{font-size:27px}.sf-detail__intro-actions .sf-btn{flex:1}.sf-detail__intro-actions{display:grid;grid-template-columns:1fr 1fr}.sf-detail__intro .sf-detail__quickfacts{display:grid;grid-template-columns:1fr 1fr}.sf-detail__intro .sf-detail__quickfacts>div{min-width:0;margin:0;padding:10px;border-right:0;border-bottom:1px solid var(--color-divider)}.sf-detail__intro .sf-detail__quickfacts>div:nth-child(odd){border-right:1px solid var(--color-divider)}.sf-detail__sticky .sf-detail__summary{border-radius:14px 14px 0 0}.sf-detail__sticky .sf-seller{border-radius:0 0 14px 14px}.wa-section-nav{margin-inline:-2px;margin-bottom:26px}.wa-listing-section{padding-bottom:28px}.wa-listing-section+.wa-listing-section{margin-top:28px}.wa-listing-section--ausstattung .sf-prose ul,.wa-listing-section--eckdaten .sf-prose ul{grid-template-columns:1fr}.sf-map__canvas{min-height:330px}.wa-premium-badge--gallery{top:10px;left:10px}}
.sf-dialog__context-title small{display:block;margin-top:4px;color:var(--color-muted);font-family:var(--font-body);font-size:11px;font-weight:600}

/* 2026-10-23: Expose v4 — denser editorial rhythm and a clearer conversion rail. */
.sf-detail__grid{grid-template-columns:minmax(0,824px) minmax(320px,360px);column-gap:28px;row-gap:22px}
.sf-gallery--mosaic{height:clamp(440px,43vw,548px);grid-template-columns:minmax(0,1.72fr) minmax(220px,.78fr);gap:6px;padding:0;border-radius:20px;background:#dfe7eb;box-shadow:0 12px 34px rgba(15,42,67,.12)}
.sf-gallery--mosaic .sf-gallery__stage{border:0;border-radius:20px 4px 4px 20px;box-shadow:none}
.sf-gallery--mosaic.sf-gallery--single{grid-template-columns:minmax(0,1fr);background:#dfe7eb}
.sf-gallery--mosaic.sf-gallery--single .sf-gallery__stage{width:100%;border-radius:20px}
.sf-gallery--mosaic .sf-gallery__thumbs{gap:6px}
.sf-gallery--mosaic .sf-gallery__thumb{border-radius:4px}
.sf-gallery--mosaic .sf-gallery__thumbs li:nth-child(2n) .sf-gallery__thumb{border-radius:4px 20px 20px 4px}
.sf-gallery__zoom{padding:8px 12px;border:1px solid rgba(255,255,255,.32);background:rgba(8,31,49,.78)}
.sf-detail__intro{padding:2px 0 22px}
.sf-detail__intro-meta{gap:8px;margin-bottom:14px}
.sf-detail__intro-meta .tag{display:inline-flex;align-items:center;min-height:28px;padding:5px 10px;border:1px solid #d9e4e8;border-radius:999px;background:#fff;color:#365267;font-weight:750;text-decoration:none}
.sf-detail__intro-meta time{margin-left:auto;white-space:nowrap}
.sf-detail__intro-row{gap:18px}
.sf-detail__intro .sf-detail__title{max-width:18ch;font-size:clamp(32px,3vw,43px);letter-spacing:-.025em}
.sf-detail__intro .sf-detail__location{margin-bottom:18px}
.sf-detail__quickfacts{gap:10px!important}
.sf-detail__intro .sf-detail__quickfacts>div{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:10px;min-width:150px;margin:0!important;padding:12px 14px!important;border:1px solid #dce6ea!important;border-radius:12px;background:#fff!important;box-shadow:0 4px 16px rgba(15,42,67,.045)}
.sf-detail__fact-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#e8f7f5;color:#08766f}
.sf-detail__quickfacts dt{font-size:10px;text-transform:uppercase;letter-spacing:.055em}
.sf-detail__quickfacts dd{font-size:16px}
.sf-detail__summary{padding:24px;border-radius:18px 18px 0 0}
.sf-detail__summary .sf-detail__price{font-size:40px;letter-spacing:-.035em}
.sf-detail__primary-contact .sf-btn--primary{box-shadow:0 8px 20px rgba(8,118,111,.18)}
.sf-phone>summary{min-height:46px;justify-content:center;border-color:#aacbc8;color:#075f59;background:#f1faf9}
.sf-seller{padding:22px 24px 24px}
.sf-seller__eyebrow{margin-bottom:5px;font-size:10px;line-height:1.2;letter-spacing:.14em}
.sf-seller__head{font-size:21px;line-height:1.18}
.sf-seller__status a,.sf-seller__status span{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border-radius:999px;font-size:11px;font-weight:800;line-height:1.2;text-decoration:none}
.sf-seller__status .is-membership{background:#f4efe2;color:#6f5314;border:1px solid #e5d4a1}
.sf-seller__status .is-silber{background:#edf1f4;color:#415466;border-color:#cfd9df}.sf-seller__status .is-gold{background:#fff4d1;color:#735400;border-color:#efd781}.sf-seller__status .is-platinum{background:#e9f5f6;color:#104d5b;border-color:#a8d3d8}
.sf-seller__verification{margin:-5px 0 14px;color:#52677b;font-size:11px;line-height:1.45}
.sf-seller__verification summary{width:max-content;max-width:100%;color:#08766f;font-weight:750;cursor:pointer}
.sf-seller__verification p{margin:8px 0 0;padding:10px 12px;border-left:3px solid #30b9ad;border-radius:0 8px 8px 0;background:#f1faf9}
.sf-seller__rating-empty{display:grid;gap:3px}.sf-seller__rating-empty strong{color:#314a60;font-size:12px}.sf-seller__rating-empty span{font-size:11px;line-height:1.45}
.sf-ad-placeholder{display:grid;gap:7px;padding:20px;border:1px dashed #87aaa8;border-radius:16px;background:linear-gradient(145deg,#f6fbfa,#eaf5f3);color:#314a60}
.sf-ad-placeholder>span{width:max-content;padding:3px 7px;border-radius:5px;background:#dcebea;color:#52677b;font-size:9px;font-weight:850;letter-spacing:.12em;text-transform:uppercase}
.sf-ad-placeholder strong{color:#102f49;font-size:17px}.sf-ad-placeholder p{margin:0;font-size:12px;line-height:1.5}.sf-ad-placeholder a{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:3px;color:#08766f;font-size:12px;font-weight:800;text-decoration:none}
.sf-detail__body{display:flex;flex-direction:column;gap:0}
.sf-detail__section+.sf-detail__section{margin-top:26px}
.sf-budget{gap:22px;padding:24px 26px}.sf-budget__intro>p:not(.sf-budget__eyebrow){margin-bottom:14px}.sf-budget__hint{min-height:0}
.wa-cost-analysis__grid{gap:18px!important;margin-top:16px!important}.wa-cost-analysis__method{margin-top:14px!important}
.wa-section-nav{margin-bottom:24px}
.wa-listing-section{padding-bottom:24px}.wa-listing-section+.wa-listing-section{margin-top:24px}.wa-listing-section .sf-prose{line-height:1.62}.wa-listing-section .sf-prose p{margin:0 0 14px}.wa-listing-section .sf-prose p:last-child{margin-bottom:0}.wa-listing-section .sf-prose li+li{margin-top:5px}
@media(max-width:1100px) and (min-width:921px){.sf-detail__grid{grid-template-columns:minmax(0,1fr) 320px;column-gap:20px}.sf-detail__intro .sf-detail__title{font-size:34px}.sf-detail__intro .sf-detail__quickfacts>div{min-width:calc(50% - 5px)}}
@media(max-width:920px){.sf-detail__intro-meta time{margin-left:0}.sf-ad-placeholder{display:none}}
@media(max-width:640px){.sf-gallery--mosaic{padding:0;border-radius:14px;box-shadow:none}.sf-gallery--mosaic .sf-gallery__stage{border-radius:14px}.sf-detail__intro .sf-detail__quickfacts{gap:8px!important}.sf-detail__intro .sf-detail__quickfacts>div{grid-template-columns:32px minmax(0,1fr);gap:8px;padding:10px!important}.sf-detail__fact-icon{width:32px;height:32px}.sf-detail__summary,.sf-seller{padding:20px}.sf-budget{padding:20px}.wa-listing-section .sf-prose{font-size:15px;line-height:1.58}}

/* Newsletter and footer refinement. */
.wa-newsletter{padding:28px 0;background:linear-gradient(135deg,#edf8f6 0%,#fff 54%,#f4f8fb 100%)}
.wa-newsletter__inner{position:relative;gap:34px;padding:40px 42px;border:1px solid #d6e7e4;border-radius:24px;background:rgba(255,255,255,.88);box-shadow:0 18px 50px rgba(15,42,67,.08)}
.wa-newsletter__copy{padding:0}.wa-newsletter h2{max-width:12ch;font-size:clamp(29px,3vw,40px);line-height:1.08;letter-spacing:-.025em}.wa-newsletter__copy>p:not(.wa-footer-action__eyebrow){font-size:14px;line-height:1.6}
.wa-newsletter__alert-cta{margin-top:18px;padding:14px 16px;border:0;background:#0f2942;color:#fff;box-shadow:0 9px 22px rgba(15,41,66,.16)}.wa-newsletter__alert-cta>svg:first-child{color:#79eadf}.wa-newsletter__alert-cta small{color:#cddce5}
.wa-newsletter__form{padding:22px;border:1px solid #dce6ea;border-radius:16px;background:#fff;box-shadow:0 8px 24px rgba(15,42,67,.055)}
.wa-choice{padding:12px 13px}.wa-newsletter__row input{min-height:48px}.wa-newsletter__row .sf-btn{min-height:48px}
.sf-footer__intro{max-width:980px;align-items:center;padding-block:30px 22px}.sf-footer__brand{flex:0 1 500px}.sf-footer__claim{max-width:500px!important;margin:0!important;color:#d5e0e8!important;font-size:15px!important;line-height:1.55}.sf-footer__trust{max-width:350px;line-height:1.6}
.sf-footer__grid{padding-block:32px 42px}.sf-footer__links h2{margin-bottom:10px}.sf-footer__links a{transition:color .15s ease,transform .15s ease}.sf-footer__links a:hover{transform:translateX(2px)}
.sf-footer__legal-end{justify-content:flex-end}.sf-footer__legal-end a{position:relative}.sf-footer__legal-end a:not(:last-child):after{content:"";position:absolute;right:-13px;top:50%;width:3px;height:3px;border-radius:50%;background:#60788b}.sf-footer__privacy{min-height:40px;padding:0;border:0;background:transparent;color:#b9c8d5;font:inherit;font-size:12px;cursor:pointer}.sf-footer__privacy:hover,.sf-footer__privacy:focus-visible{color:#fff;text-decoration:underline;text-underline-offset:3px}.sf-footer__privacy:focus-visible{outline:2px solid #79eadf;outline-offset:3px;border-radius:3px}
@media(max-width:860px){.wa-newsletter{padding:18px 0}.wa-newsletter__inner{padding:30px;border-radius:18px}.sf-footer__intro{max-width:none}.sf-footer__legal-end a:not(:last-child):after{display:none}}
@media(max-width:640px){.wa-newsletter__inner{margin-inline:12px;padding:24px 18px}.wa-newsletter h2{max-width:none}.wa-newsletter__form{padding:16px}.sf-footer__intro{padding-block:26px 18px}.sf-footer__legal-end{gap:10px 18px!important}}

/* Trust, advertising and contractual information pages. */
.wa-info-page{max-width:1120px;margin:0 auto;padding:28px 22px 80px;color:#102f49}.wa-info-hero{padding:clamp(30px,5vw,58px);border-radius:24px;background:linear-gradient(135deg,#0f2942,#155e75);color:#fff}.wa-info-hero h1{max-width:17ch;margin:7px 0 14px;color:#fff;font-size:clamp(36px,5vw,58px);line-height:1.04;letter-spacing:-.035em}.wa-info-hero>p:not(.wa-filter-kicker){max-width:720px;margin:0 0 24px;color:#dce9ef;font-size:17px;line-height:1.65}.wa-info-page>section{margin-top:44px}.wa-info-page>section>h2{font-size:clamp(25px,3vw,34px)}.wa-info-page>section>p,.wa-info-page>section>ul{max-width:78ch;color:#40596e;line-height:1.7}.wa-info-cards,.wa-info-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.wa-info-cards article,.wa-info-steps article{padding:22px;border:1px solid #dce6ea;border-radius:16px;background:#fff;box-shadow:0 8px 26px rgba(15,42,67,.06)}.wa-info-cards h3,.wa-info-steps h2{margin:0 0 10px;font-size:18px}.wa-info-cards strong{color:#08766f;font-size:20px}.wa-info-cards p,.wa-info-steps p{color:#52677b;line-height:1.55}.wa-info-steps{grid-template-columns:repeat(3,minmax(0,1fr))}.wa-info-steps span{display:grid;place-items:center;width:34px;height:34px;margin-bottom:16px;border-radius:50%;background:#dff6f2;color:#08766f;font-weight:900}.wa-info-definitions{max-width:850px}.wa-info-definitions>div{display:grid;grid-template-columns:240px minmax(0,1fr);gap:26px;padding:16px 0;border-bottom:1px solid #dce6ea}.wa-info-definitions dt{font-weight:850}.wa-info-definitions dd{margin:0;color:#52677b;line-height:1.55}@media(max-width:850px){.wa-info-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.wa-info-steps{grid-template-columns:1fr}}@media(max-width:600px){.wa-info-page{padding:0 16px 56px}.wa-info-hero{margin-inline:-16px;padding:30px 20px;border-radius:0}.wa-info-cards{grid-template-columns:1fr}.wa-info-definitions>div{grid-template-columns:1fr;gap:5px}}

/* Final responsive guard: v4 desktop rules are declared late in this file, so
   the mobile grid must be reset after them. This keeps every detail region at
   full viewport width instead of squeezing the gallery into the first desktop
   column. */
@media (max-width: 920px) {
    .sf-detail__grid {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas: "media" "intro" "aside" "body";
        column-gap: 0;
        width: 100%;
    }
    .sf-detail__media,
    .sf-detail__intro,
    .sf-detail__aside,
    .sf-detail__body { width: 100%; min-width: 0; }
}
@media (max-width: 640px) {
    .sf-gallery--mosaic {
        display: block;
        width: 100%;
        height: auto;
        background: transparent;
    }
    .sf-gallery--mosaic .sf-gallery__stage {
        width: 100%;
        height: auto;
        aspect-ratio: 4 / 3;
        border-radius: 14px;
    }
    .sf-gallery--mosaic .sf-gallery__thumbs {
        display: flex;
        width: 100%;
        margin-top: 8px;
        overflow-x: auto;
    }
    .sf-gallery--mosaic .sf-gallery__thumbs li { flex: 0 0 82px; }
    .sf-gallery--mosaic .sf-gallery__thumb { height: auto; aspect-ratio: 1; border-radius: 9px !important; }
}

/* Exposé layout correction (v4.2)
   Leaflet's panes use z-index values up to 700. Keep the complete map in its
   own stacking context and the sticky site header above it so map tiles and
   controls can never paint across the navigation while scrolling. */
.sf-header { z-index: 1200; }
.sf-map {
    z-index: 0;
    isolation: isolate;
    box-shadow: 0 10px 30px rgba(15, 42, 67, .08);
}
.sf-detail__section:has(> .sf-map) { scroll-margin-top: calc(var(--sf-header-h) + 54px); }

/* The customer editor preserves line breaks between list tags as <br>. Those
   nodes must not become grid cells: otherwise every real list item lands in
   the second column and leaves the large empty area reported on production. */
.wa-listing-section .sf-prose {
    width: 100%;
    max-width: none;
    color: #1f3b52;
    font-size: 16px;
    line-height: 1.62;
}
.wa-listing-section .sf-prose > br,
.wa-listing-section .sf-prose ul > br { display: none; }
.wa-listing-section {
    padding-bottom: 20px;
    border-bottom: 1px solid #dce5ea;
}
.wa-listing-section + .wa-listing-section { margin-top: 18px; }
.wa-listing-section > h2 {
    margin-bottom: 14px;
    color: #102f49;
    font-size: 23px;
    line-height: 1.25;
    letter-spacing: -.015em;
}
.wa-listing-section .sf-prose p { margin: 0 0 12px; }
.wa-listing-section .sf-prose p:last-child { margin-bottom: 0; }
.wa-listing-section .sf-prose ul { margin-block: 0; }

.wa-listing-section--ausstattung .sf-prose ul,
.wa-listing-section--eckdaten .sf-prose ul {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px 12px;
    width: 100%;
    margin: 0;
}
.wa-listing-section--ausstattung .sf-prose li,
.wa-listing-section--eckdaten .sf-prose li {
    min-height: 48px;
    margin: 0 !important;
    padding: 12px 14px 12px 42px;
    border: 1px solid #dce6ea;
    border-radius: 11px;
    background: #fff;
    box-shadow: 0 3px 12px rgba(15, 42, 67, .035);
    list-style: none;
}
.wa-listing-section--ausstattung .sf-prose li::before,
.wa-listing-section--eckdaten .sf-prose li::before {
    left: 14px;
    top: 12px;
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #e4f6f3;
    color: #08766f;
    font-size: 12px;
}
.wa-listing-section--miete .sf-prose,
.wa-listing-section--kontakt-rundgang-video .sf-prose {
    padding: 17px 19px;
    border: 1px solid #dce6ea;
    border-radius: 12px;
    background: #f8fbfc;
}

@media (max-width: 640px) {
    .wa-listing-section { padding-bottom: 18px; }
    .wa-listing-section + .wa-listing-section { margin-top: 16px; }
    .wa-listing-section > h2 { margin-bottom: 12px; font-size: 21px; }
    .wa-listing-section .sf-prose { font-size: 15px; line-height: 1.58; }
    .wa-listing-section--ausstattung .sf-prose ul,
    .wa-listing-section--eckdaten .sf-prose ul { grid-template-columns: 1fr; gap: 8px; }
    .wa-listing-section--ausstattung .sf-prose li,
    .wa-listing-section--eckdaten .sf-prose li { min-height: 44px; padding-block: 10px; }
    .wa-listing-section--ausstattung .sf-prose li::before,
    .wa-listing-section--eckdaten .sf-prose li::before { top: 10px; }
    .wa-listing-section--miete .sf-prose,
    .wa-listing-section--kontakt-rundgang-video .sf-prose { padding: 14px 15px; }
    .sf-map__canvas { min-height: 300px; }
    .wa-newsletter__inner {
        width: auto;
        max-width: calc(100% - 24px);
        margin-inline: auto;
    }
    .wa-newsletter__copy,
    .wa-newsletter__form { min-width: 0; width: 100%; }
}

/* Final v5 desktop precedence: full-width gallery above content and contact. */
@media (min-width: 921px) {
    .sf-detail__grid {
        grid-template-columns: minmax(0, 824px) minmax(320px, 360px);
        grid-template-areas: "media media" "intro aside" "body aside";
        column-gap: 28px;
        row-gap: 26px;
    }
    .sf-detail__media { width: 100%; }
    .sf-gallery--mosaic {
        grid-template-columns: minmax(0, 1.95fr) minmax(330px, .95fr);
        width: 100%;
        height: clamp(520px, 45vw, 620px);
    }
    .sf-detail__aside { align-self: start; }
}

/* Exposé v4.4: calm title rhythm and device-specific advertising. */
.sf-detail__intro-row { display: block; }
.sf-detail__intro-row > div:first-child { max-width: none; }
.sf-detail__intro .sf-detail__title {
    max-width: 27ch;
    font-size: clamp(30px, 2.45vw, 38px);
    line-height: 1.1;
    letter-spacing: -.022em;
    overflow-wrap: normal;
    word-break: normal;
    text-wrap: balance;
}
.sf-detail__intro-support {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin-top: 2px;
}
.sf-detail__intro .sf-detail__intro-support .sf-detail__location { margin: 0; }
.sf-detail__intro-support .sf-detail__intro-actions { margin: 0; }

/* Price and provider stay in normal document flow. Once their following
   advertisement reaches the header, the compact ad itself remains visible. */
.sf-detail__sticky { gap: 14px; filter: none; }
.sf-detail__sticky .sf-detail__summary,
.sf-detail__sticky .sf-seller,
.sf-detail__sticky .sf-ad-placeholder {
    border-radius: 18px;
    box-shadow: 0 10px 24px rgba(15,42,67,.075);
}
.sf-detail__sticky .sf-seller { border-top: 0; }
.sf-ad-placeholder__creative,
.sf-ad-mobile__creative { display: block; overflow: hidden; border-radius: 11px; }
.sf-ad-placeholder__creative img,
.sf-ad-mobile__creative img { display: block; width: 100%; height: 100%; object-fit: cover; }
.sf-ad-placeholder__creative { aspect-ratio: 1 / 1; }
.wa-public-ad{position:relative;display:block;width:min(100% - 32px,1200px);margin:24px auto;padding:14px;border:1px solid #cfe0e2;border-radius:18px;background:#fff;box-shadow:0 10px 28px rgba(15,42,67,.06);overflow:hidden}.wa-public-ad__label{position:absolute;z-index:2;top:22px;left:22px;padding:4px 8px;border-radius:5px;background:rgba(16,47,73,.88);color:#fff;font-size:9px;font-weight:850;letter-spacing:.12em;text-transform:uppercase}.wa-public-ad__creative{display:block;overflow:hidden;border-radius:12px;background:#eef4f5}.wa-public-ad__creative img{display:block;width:100%;height:100%;min-height:160px;max-height:330px;object-fit:cover}.wa-public-ad__creative--mobile{display:none}.wa-public-ad__fallback{display:flex;min-height:126px;align-items:center;justify-content:space-between;gap:20px;padding:28px 30px;border:1px dashed #87aaa8;border-radius:12px;background:linear-gradient(135deg,#f5fbfa,#edf5f7);color:#102f49;text-decoration:none}.wa-public-ad__fallback strong{font-size:clamp(18px,2.4vw,28px)}.wa-public-ad__fallback span{color:#08766f;font-weight:850}.wa-editorial-sidebar .wa-public-ad{width:100%;margin:0;padding:10px;border-radius:15px}.wa-editorial-sidebar .wa-public-ad__label{top:17px;left:17px}.wa-editorial-sidebar .wa-public-ad__creative img{aspect-ratio:1/1;min-height:0;max-height:none}.wa-editorial-sidebar .wa-public-ad__fallback{min-height:220px;align-items:flex-start;justify-content:flex-end;flex-direction:column;padding:52px 20px 20px}.wa-article__body>.wa-public-ad{width:100%;margin:36px 0}.wa-public-ad--home{margin-block:28px 48px}.wa-public-ad--search{margin-block:20px}
@media(max-width:767px){.wa-public-ad{width:min(100% - 24px,1200px);padding:9px;border-radius:14px}.wa-public-ad__creative--desktop{display:none}.wa-public-ad__creative--mobile{display:block}.wa-public-ad__creative img{min-height:0;max-height:none;aspect-ratio:4/1}.wa-public-ad__label{top:15px;left:15px}.wa-public-ad__fallback{min-height:112px;align-items:flex-start;justify-content:flex-end;flex-direction:column;padding:42px 18px 18px}.wa-public-ad__fallback strong{font-size:18px}.wa-editorial-sidebar .wa-public-ad{margin-top:20px}.wa-editorial-sidebar .wa-public-ad__creative img{aspect-ratio:4/1}.wa-article__body>.wa-public-ad{width:100%;margin:28px 0}}
.sf-ad-mobile { display: none; grid-area: mobile-ad; }

@media (min-width: 921px) {
    .sf-detail__aside { align-self: stretch; }
    .sf-detail__sticky { position: static; top: auto; }
    .sf-detail__aside > .sf-ad-placeholder {
        position: sticky;
        top: calc(var(--sf-header-h) + 16px);
        z-index: 1;
    }
}

@media (max-width: 920px) {
    .sf-detail__grid {
        grid-template-areas: "media" "intro" "aside" "mobile-ad" "body";
    }
    .sf-detail__intro-support { align-items: center; }
    .sf-ad-mobile {
        display: grid;
        grid-template-columns: auto minmax(0,1fr);
        align-items: center;
        gap: 10px 14px;
        min-height: 104px;
        padding: 14px;
        border: 1px solid #cfe1e3;
        border-radius: 14px;
        background: linear-gradient(135deg,#f2faf8,#eef5f8);
        color: #183a52;
        box-shadow: 0 7px 20px rgba(15,42,67,.06);
    }
    .sf-ad-mobile > span {
        align-self: start;
        padding: 3px 7px;
        border-radius: 5px;
        background: #dcebea;
        color: #52677b;
        font-size: 9px;
        font-weight: 850;
        letter-spacing: .12em;
        text-transform: uppercase;
    }
    .sf-ad-mobile > div { display: grid; gap: 8px; }
    .sf-ad-mobile strong { font-size: 16px; }
    .sf-ad-mobile a { color: #08766f; font-size: 12px; font-weight: 800; text-decoration: none; }
    .sf-ad-mobile__creative { grid-column: 1 / -1; width: 100%; aspect-ratio: 4 / 1; }
    .sf-ad-mobile > span {
        align-self: start;
        padding: 3px 7px;
        border-radius: 5px;
        background: #dcebea;
        color: #52677b;
        font-size: 9px;
        font-weight: 850;
        letter-spacing: .12em;
        text-transform: uppercase;
    }
    .sf-ad-mobile > div { display: grid; gap: 8px; }
    .sf-ad-mobile strong { font-size: 16px; }
    .sf-ad-mobile a { color: #08766f; font-size: 12px; font-weight: 800; text-decoration: none; }
    .sf-ad-mobile__creative { grid-column: 1 / -1; width: 100%; aspect-ratio: 4 / 1; }
}

@media (max-width: 640px) {
    .sf-detail__intro .sf-detail__title { max-width: none; font-size: 29px; line-height: 1.12; }
    .sf-detail__intro-support { display: block; }
    .sf-detail__intro-support .sf-detail__intro-actions { margin-top: 12px; }
}

/* Exposé v4.5: the right rail is useful on wide desktop only. Between 921 and
   1100px it reduced the article to about 520px while desktop-only cost cards
   still required more than 700px. Use the complete tablet width instead. */
@media (max-width: 1120px) {
    .sf-detail__grid {
        grid-template-columns: minmax(0, 1fr) !important;
        grid-template-areas: "media" "intro" "aside" "mobile-ad" "body" !important;
        column-gap: 0 !important;
        width: 100%;
    }
    .sf-detail__media,
    .sf-detail__intro,
    .sf-detail__aside,
    .sf-detail__body { width: 100%; min-width: 0; }
    .sf-detail__aside { position: static !important; }
    .sf-detail__sticky { position: static !important; top: auto !important; }
    .sf-detail__aside > .sf-ad-placeholder { display: none; }
    .sf-gallery--mosaic { width:100%; height:min(600px,68vw); grid-template-columns:minmax(0,1.55fr) minmax(180px,.7fr); }
    .sf-ad-mobile {
        display: grid;
        grid-template-columns: auto minmax(0,1fr);
        align-items: center;
        gap: 10px 14px;
        min-height: 104px;
        padding: 14px;
        border: 1px solid #cfe1e3;
        border-radius: 14px;
        background: linear-gradient(135deg,#f2faf8,#eef5f8);
        color: #183a52;
        box-shadow: 0 7px 20px rgba(15,42,67,.06);
    }
    .wa-cost-analysis { overflow: visible; }
    .wa-cost-analysis__grid {
        grid-template-columns: minmax(160px, .65fr) minmax(220px, 1fr) !important;
    }
    .wa-cost-analysis__cards { grid-column: 1 / -1; grid-template-columns: repeat(3,minmax(0,1fr)); }
    .wa-section-nav {
        position: static;
        display: grid;
        grid-template-columns: repeat(3,minmax(0,1fr));
        overflow: visible;
        gap: 6px;
    }
    .wa-section-nav a { min-width: 0; text-align: center; white-space: normal; }
}

/* An administrator gets additional controls below the public conversion rail.
   Disable the advertising stickiness in that state so it cannot paint over the
   moderation panel while the page scrolls. */
@media (min-width: 1121px) {
    .sf-detail__aside--admin > .sf-ad-placeholder { position: static; top: auto; }
}

@media (max-width: 640px) {
    .wa-cost-analysis__head { gap: 12px; }
    .wa-cost-analysis__grid { grid-template-columns: 1fr !important; }
    .wa-cost-analysis__cards { grid-column: auto; grid-template-columns: 1fr; }
    .wa-section-nav { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

/* Footer advertising stage and editorial navigation. */
.sf-footer__intro.wa-footer-ad {
    position: relative;
    max-width: 1232px;
    margin-top: 0;
    padding: 34px 36px;
    overflow: hidden;
    border: 1px solid rgba(121,234,223,.34);
    border-radius: 22px;
    background:
        radial-gradient(circle at 88% 12%,rgba(121,234,223,.2),transparent 30%),
        linear-gradient(125deg,#163b58 0%,#0f2942 58%,#0a5d62 140%);
    box-shadow: 0 22px 56px rgba(3,22,37,.24);
}
.wa-footer-ad__copy { max-width: 680px; }
.wa-footer-ad__eyebrow { margin: 0 0 8px; color: #79eadf; font-size: 11px; font-weight: 850; letter-spacing: .13em; text-transform: uppercase; }
.wa-footer-ad h2 { max-width: 17ch; margin: 0; color: #fff; font-size: clamp(28px,3vw,42px); line-height: 1.04; letter-spacing: -.03em; }
.wa-footer-ad__copy>p:last-child { max-width: 650px; margin: 12px 0 0; color: #d8e7ed; font-size: 14px; line-height: 1.6; }
.wa-footer-ad__actions { display: grid; justify-items: start; gap: 9px; min-width: 270px; }
.wa-footer-ad__primary,.wa-footer-ad__secondary { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; border-radius: 10px; text-decoration: none; font-weight: 850; }
.wa-footer-ad__primary { padding: 12px 17px; background: #ff6b16; color: #fff; box-shadow: 0 10px 24px rgba(255,107,22,.25); }
.wa-footer-ad__secondary { min-height: auto; color: #a8f1ea; font-size: 13px; }
.wa-footer-ad__actions small { max-width: 300px; color: #b9ccd7; font-size: 10px; line-height: 1.45; }
.sf-footer__grid { grid-template-columns: 1.15fr 1.15fr 1.3fr 1fr 1fr; }

/* Magazine and blog are real destinations, not empty footer labels. */
.wa-editorial { color:#102f49; background:#fff; }
.wa-editorial__hero { padding: clamp(42px,6vw,74px) 0; background: radial-gradient(circle at 78% 18%,rgba(49,191,179,.24),transparent 28%),linear-gradient(135deg,#edf9f7,#fff 52%,#edf3f8); border-bottom:1px solid #dbe7e9; }
.wa-editorial--blog .wa-editorial__hero { background: radial-gradient(circle at 82% 18%,rgba(255,107,22,.16),transparent 30%),linear-gradient(135deg,#f0f8f7,#fff 52%,#f8f3ed); }
.wa-editorial__hero-grid { display:grid;grid-template-columns:minmax(0,.9fr) minmax(420px,1.1fr);gap:clamp(34px,5vw,68px);align-items:center; }
.wa-editorial__hero-copy { min-width:0; }
.wa-editorial__hero h1 { max-width: 14ch; margin: 8px 0 18px; font-size:clamp(42px,4.8vw,64px); line-height:1; letter-spacing:-.05em; text-wrap:balance; }
.wa-editorial__hero p:not(.wa-page-eyebrow) { max-width:760px; margin:0; color:#4f687a; font-size:18px; line-height:1.65; }
.wa-editorial__hero-actions { display:flex; flex-wrap:wrap; gap:11px; margin-top:28px; }
.wa-editorial__hero-visual { min-width:0;overflow:hidden;margin:0;border:1px solid rgba(15,47,73,.13);border-radius:22px;background:#0f2942;box-shadow:0 24px 58px rgba(15,42,67,.18); }
.wa-editorial__hero-visual img { display:block;width:100%;aspect-ratio:16/9;object-fit:cover; }
.wa-editorial__hero-visual figcaption { padding:13px 16px;color:#dce9ef;font-size:12px;line-height:1.45; }
.wa-editorial__section { padding:72px 0; }
.wa-editorial__heading { max-width:800px; margin-bottom:28px; }
.wa-editorial__heading h2 { margin:0; font-size:clamp(31px,4vw,48px); line-height:1.05; letter-spacing:-.035em; }
.wa-editorial__topics,.wa-editorial__stories { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.wa-editorial__topics>a,.wa-editorial__stories>article { display:flex; flex-direction:column; min-height:260px; padding:25px; border:1px solid #d9e5e8; border-radius:18px; background:#fff; color:#102f49; text-decoration:none; box-shadow:0 12px 34px rgba(15,42,67,.065); transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease; }
.wa-editorial__topics>a:hover { transform:translateY(-3px); border-color:#73c9c1; box-shadow:0 18px 42px rgba(15,42,67,.11); }
.wa-editorial__topics span,.wa-editorial__stories span { width:max-content; padding:5px 9px; border-radius:999px; background:#e3f5f2; color:#08766f; font-size:10px; font-weight:850; letter-spacing:.08em; text-transform:uppercase; }
.wa-editorial__topics h3,.wa-editorial__stories h3 { margin:18px 0 9px; font-size:22px; line-height:1.18; }
.wa-editorial__topics p,.wa-editorial__stories p { margin:0; color:#567083; line-height:1.58; }
.wa-editorial__topics b,.wa-editorial__stories a { margin-top:auto; padding-top:20px; color:#08766f; font-size:13px; font-weight:850; text-decoration:none; }
.wa-editorial__stories time { margin-bottom:13px; color:#6a7f90; font-size:12px; }
.wa-editorial__feature { padding:0 0 72px; }
.wa-editorial__feature>.sf-container { display:flex; align-items:center; justify-content:space-between; gap:34px; padding:38px 42px; border-radius:22px; background:#102f49; color:#fff; }
.wa-editorial__feature h2 { margin:5px 0 10px; color:#fff; font-size:clamp(28px,3.5vw,43px); line-height:1.06; }
.wa-editorial__feature p:not(.wa-page-eyebrow) { max-width:720px; margin:0; color:#d5e3ea; line-height:1.6; }
.wa-editorial__feature .wa-page-eyebrow { color:#79eadf; }

@media (max-width: 1000px) {
    .sf-footer__grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .wa-editorial__hero-grid { grid-template-columns:1fr; }
    .wa-editorial__hero-copy { max-width:760px; }
    .wa-editorial__hero-visual { max-width:760px; }
    .wa-editorial__topics,.wa-editorial__stories { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 760px) {
    .sf-footer__intro.wa-footer-ad { width:auto; margin-inline:16px; padding:27px 22px; border-radius:17px; }
    .wa-footer-ad__actions { min-width:0; width:100%; }
    .wa-footer-ad__primary { width:100%; }
    .sf-footer__grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .wa-editorial__hero { padding:30px 0 44px; }
    .wa-editorial__hero-grid { gap:25px; }
    .wa-editorial__hero-visual { order:-1;border-radius:16px; }
    .wa-editorial__section { padding:54px 0; }
    .wa-editorial__topics,.wa-editorial__stories { grid-template-columns:1fr; }
    .wa-editorial__topics>a,.wa-editorial__stories>article { min-height:230px; }
    .wa-editorial__feature>.sf-container { align-items:flex-start; flex-direction:column; margin-inline:16px; padding:28px 22px; width:auto; }
}
@media (max-width: 480px) {
    .sf-footer__grid { grid-template-columns:1fr; }
    .wa-editorial__hero h1 { font-size:42px; }
}
.wa-upload-status{margin:10px 0 0;color:#486477;font-size:14px;font-weight:700}.wa-upload-status:focus{outline:3px solid #79eadf;outline-offset:3px}
.wa-location-status{min-height:20px;margin:-4px 0 2px;color:#526b7d;font-size:13px;font-weight:700}.wa-location-status:empty{min-height:0;margin:0}.wa-location-status[data-state="error"]{color:#a52d21}.wa-location-status[data-state="ok"]{color:#08766f}

/* Zoho Bookings denies third-party framing. Present the provider as a clear,
   accessible external action and retain the local CRM callback below it. */
.wa-provider-booking__external{display:flex;min-height:520px;padding:clamp(28px,5vw,52px);align-items:flex-start;justify-content:center;flex-direction:column;background:linear-gradient(145deg,#fff 0%,#edf9f7 100%)}
.wa-provider-booking__external>span{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:#0b766f;color:#fff;font-size:25px;font-weight:900;box-shadow:0 12px 28px rgba(11,118,111,.2)}
.wa-provider-booking__external .wa-filter-kicker{margin:24px 0 8px}
.wa-provider-booking__external h2{max-width:560px;margin:0;color:#102a43;font-size:clamp(28px,3.5vw,40px);line-height:1.1;letter-spacing:-.025em}
.wa-provider-booking__external>p:not(.wa-filter-kicker,.wa-provider-booking__reference){max-width:590px;margin:16px 0 0;color:#52667a;line-height:1.65}
.wa-provider-booking__external .sf-btn{margin-top:26px;min-height:54px;justify-content:center}
.wa-provider-booking__external small{display:block;max-width:570px;margin-top:14px;color:#60758a;line-height:1.55}
.wa-provider-booking__reference{margin:18px 0 0;padding:11px 14px;border-radius:10px;background:#e3f4f1;color:#355b66;font-size:13px}
@media(max-width:640px){.wa-provider-booking__external{min-height:430px;padding:30px 20px}.wa-provider-booking__external .sf-btn{width:100%}}
