/* ============================================================================
   nordjouren-ui.css  —  Shared public UI layer (loaded on every layout page)
   ----------------------------------------------------------------------------
   PURPOSE: One consistent, in-brand polish + component layer so the public site
   feels cohesive. This does NOT introduce a new colour theme. Every colour here
   references the EXISTING brand tokens defined in style.css :root
   (--heading-color #102529, --normal-dark-color #000, --primary-color #f8f8f8,
   --secondary-color #f5fbff, --note-text-color #47857F, etc.), with literal
   fallbacks equal to those same values.

   Radii / shadows reuse the brand's existing scale (card 15px, panel 20px,
   pill 300px, dark-CTA 24px; elevated shadow 0 0 45px rgba(0,0,0,.2)).

   Loaded AFTER the breakpoint files. New-page components are namespaced `.nj-`
   so they can never collide with existing rules. Global tweaks are intentionally
   light and never use !important (except the reduced-motion safety block).
   ============================================================================ */

:root{
    /* Aliases to the established brand palette — no new hues introduced. */
    --nj-ink:        var(--heading-color, #102529);
    --nj-ink-soft:   #3f5257;                 /* desaturated tint of #102529 for body copy */
    --nj-black:      var(--normal-dark-color, #000);
    --nj-surface:    var(--normal-color, #fff);
    --nj-surface-2:  var(--primary-color, #f8f8f8);
    --nj-surface-3:  var(--secondary-color, #f5fbff);
    --nj-teal:       var(--note-text-color, #47857F);
    --nj-border:     #e7ecee;                  /* light neutral hairline (tint of ink) */
    --nj-radius:     15px;                      /* brand card radius */
    --nj-radius-lg:  20px;                      /* brand panel radius */
    --nj-radius-pill:300px;
    --nj-shadow-sm:  0 4px 16px rgba(16,37,41,.06);
    --nj-shadow-md:  0 10px 30px rgba(16,37,41,.10);
    --nj-shadow-lg:  0 0 45px rgba(0,0,0,.14);  /* softened brand elevated shadow */
    --nj-ease:       .2s ease;
}

/* ---------------------------------------------------------------------------
   1. Global interaction polish (moved out of the layout's inline <style>)
   Subtle, brand-safe: transforms/opacity only, consistent focus, motion-safe.
   --------------------------------------------------------------------------- */
a, .btn, button, .homebtn,
header .navbar-nav li a, header .navbar-nav li button,
.servicesMenuDropdown a, .accordion-button,
footer .links a, footer .social-media a, footer .social-media i,
.section-services .card, .section-two .card, .reviewcard,
.testinomial-carsouel .card, .nj-card, .nj-btn {
    transition: color var(--nj-ease), background-color var(--nj-ease),
                border-color var(--nj-ease), box-shadow var(--nj-ease),
                transform var(--nj-ease), opacity var(--nj-ease);
}
.btn:hover, .homebtn:hover, header .navbar-nav li button:hover { transform: translateY(-1px); }
.section-services .card:hover, .section-two .card:hover { transform: translateY(-3px); }

/* Consistent, visible keyboard focus in the brand ink colour. */
a:focus-visible, button:focus-visible, .btn:focus-visible, .nj-btn:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible,
.accordion-button:focus-visible, [tabindex]:focus-visible {
    outline: 2px solid var(--nj-ink);
    outline-offset: 2px;
    border-radius: 4px;
}

/* Layout stability + kill the phantom carousel-transform horizontal sliver.
   overflow-x:clip on <html> clips WITHOUT creating a scroll container, so the
   sticky header keeps working. */
html { overflow-x: clip; }
body { overflow-x: hidden; }
img  { max-width: 100%; }
.owl-carousel, .owl-stage-outer { max-width: 100%; overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
    }
}

/* ===========================================================================
   2. Reusable public components (namespaced .nj-) — used by the rebuilt
   /services, /cities and 404 pages. Fully responsive via CSS grid, so they
   need NO per-breakpoint duplicate files.
   =========================================================================== */

.nj-page { font-family: var(--font-family, 'Montserrat', sans-serif); color: var(--nj-ink); }

/* --- Section shell + rhythm --- */
.nj-section { padding: clamp(40px, 6vw, 84px) 0; }
.nj-section--tight { padding: clamp(28px, 4vw, 52px) 0; }
.nj-container { width: 100%; max-width: 1200px; margin-inline: auto; padding-inline: clamp(16px, 4vw, 32px); }

/* --- Page hero / intro band --- */
.nj-hero {
    background: linear-gradient(180deg, var(--nj-surface-3) 0%, var(--nj-surface) 100%);
    padding: clamp(40px, 7vw, 96px) 0 clamp(32px, 5vw, 64px);
    text-align: center;
}
.nj-breadcrumb {
    display: flex; flex-wrap: wrap; gap: .35rem; justify-content: center;
    font-size: 14px; color: var(--nj-ink-soft); margin-bottom: 18px;
}
.nj-breadcrumb a { color: var(--nj-ink-soft); text-decoration: none; }
.nj-breadcrumb a:hover { color: var(--nj-ink); text-decoration: underline; }
.nj-breadcrumb span[aria-hidden] { opacity: .5; }
.nj-hero h1, .nj-title {
    font-size: clamp(28px, 4.4vw, 46px);
    line-height: 1.12; font-weight: 800; letter-spacing: -.01em;
    color: var(--nj-ink); margin: 0 0 14px;
}
.nj-hero p.nj-lead, .nj-lead {
    font-size: clamp(15px, 1.6vw, 18px); line-height: 1.6;
    color: var(--nj-ink-soft); max-width: 640px; margin: 0 auto;
}
/* Yellow-underline accent echoing the hero heading treatment (brand element). */
.nj-accent { position: relative; white-space: nowrap; }
.nj-accent::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: .08em; height: .32em;
    background: #FFD54A; opacity: .55; z-index: -1; border-radius: 2px;
}

/* --- Card grid --- */
.nj-grid { display: grid; gap: clamp(14px, 1.6vw, 22px); }
.nj-grid--services { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
.nj-grid--cities   { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
.nj-grid--wide     { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }

/* --- Card --- */
.nj-card {
    display: flex; flex-direction: column; background: var(--nj-surface);
    border: 1px solid var(--nj-border); border-radius: var(--nj-radius);
    box-shadow: var(--nj-shadow-sm); text-decoration: none; color: inherit;
    overflow: hidden; height: 100%;
}
.nj-card:hover, .nj-card:focus-visible { transform: translateY(-4px); box-shadow: var(--nj-shadow-md); border-color: #d9e2e4; }

/* Service card: centred icon + label */
.nj-card--service { align-items: center; text-align: center; padding: 26px 16px; gap: 14px; }
.nj-card--service .nj-card__icon {
    width: 64px; height: 64px; display: grid; place-items: center;
    border-radius: 50%; background: var(--nj-surface-3);
}
.nj-card--service .nj-card__icon img { width: 38px; height: 38px; object-fit: contain; }
.nj-card--service .nj-card__title { font-size: 16px; font-weight: 600; color: var(--nj-ink); line-height: 1.3; }
.nj-card--service .nj-card__meta { font-size: 13px; color: var(--nj-ink-soft); }

/* City card: label row with chevron.
   min-height + reserved icon width keep the (long) grid from reflowing when the
   web font / icon font finish loading — critical for CLS on the 150+ card list. */
.nj-card--city {
    flex-direction: row; align-items: center; justify-content: space-between;
    padding: 14px 18px; gap: 10px; min-height: 62px;
}
.nj-card--city .nj-card__title { font-size: 16px; font-weight: 600; color: var(--nj-ink); }
.nj-card--city .nj-card__sub { font-size: 12.5px; color: var(--nj-ink-soft); margin-top: 2px; }
.nj-card--city .nj-chevron {
    color: var(--nj-teal); font-size: 18px; flex: none;
    display: inline-flex; justify-content: center; width: 20px;
    transition: transform var(--nj-ease);
}
.nj-card--city:hover .nj-chevron { transform: translateX(3px); }

/* --- Section heading --- */
.nj-section__head { text-align: center; max-width: 720px; margin: 0 auto clamp(22px, 3vw, 40px); }
.nj-section__head h2 { font-size: clamp(22px, 3vw, 32px); font-weight: 800; color: var(--nj-ink); margin: 0 0 10px; }
.nj-section__head p { font-size: clamp(14px, 1.5vw, 16px); color: var(--nj-ink-soft); margin: 0; line-height: 1.55; }
.nj-eyebrow {
    display: inline-block; font-size: 13px; font-weight: 700; letter-spacing: .12em;
    text-transform: uppercase; color: var(--nj-teal); margin-bottom: 10px;
}

/* --- Buttons (brand: black pill; secondary: outline) --- */
.nj-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: .5em;
    font-family: inherit; font-weight: 600; font-size: 16px; line-height: 1;
    padding: 14px 30px; border-radius: var(--nj-radius-pill);
    background: var(--nj-black); color: #fff; border: 2px solid var(--nj-black);
    text-decoration: none; cursor: pointer;
}
.nj-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,0,0,.18); color: #fff; }
.nj-btn--ghost { background: transparent; color: var(--nj-ink); border-color: var(--nj-border); }
.nj-btn--ghost:hover { background: var(--nj-surface-2); border-color: var(--nj-ink); color: var(--nj-ink); box-shadow: none; }
.nj-btn--lg { font-size: 17px; padding: 16px 38px; }

/* --- Search / filter field --- */
.nj-search { position: relative; max-width: 460px; margin: 0 auto clamp(24px, 3vw, 36px); }
.nj-search input {
    width: 100%; height: 52px; padding: 0 20px 0 48px; font-size: 16px; font-family: inherit;
    color: var(--nj-ink); background: var(--nj-surface);
    border: 1px solid var(--nj-border); border-radius: var(--nj-radius-pill);
    box-shadow: var(--nj-shadow-sm); outline: none;
}
.nj-search input:focus { border-color: var(--nj-ink); }
.nj-search .nj-search__icon { position: absolute; left: 18px; top: 50%; transform: translateY(-50%); color: var(--nj-ink-soft); font-size: 18px; width: 18px; text-align: center; }
.nj-empty { text-align: center; color: var(--nj-ink-soft); padding: 40px 0; font-size: 15px; }

/* --- Group label (e.g. "Populära orter") --- */
.nj-grouplabel {
    display: flex; align-items: center; gap: 12px; margin: clamp(28px,3vw,40px) 0 16px;
    font-size: 14px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--nj-ink-soft);
}
.nj-grouplabel::after { content: ""; flex: 1; height: 1px; background: var(--nj-border); }

/* --- Quick-jump chips (e.g. popular cities) --- */
.nj-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 8px; }
.nj-chips__label { font-size: 14px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--nj-ink-soft); margin-right: 4px; }
.nj-chip {
    display: inline-flex; align-items: center; padding: 8px 16px; border-radius: var(--nj-radius-pill);
    background: var(--nj-surface-2); border: 1px solid var(--nj-border); color: var(--nj-ink);
    font-size: 14px; font-weight: 600; text-decoration: none;
}
.nj-chip:hover { background: var(--nj-ink); color: #fff; border-color: var(--nj-ink); transform: translateY(-1px); }

/* --- Big CTA band --- */
.nj-cta {
    background: var(--nj-ink); color: #fff; border-radius: var(--nj-radius-lg);
    text-align: center; padding: clamp(34px, 5vw, 64px) clamp(20px, 5vw, 56px);
}
.nj-cta h2 { color: #fff; font-size: clamp(22px, 3vw, 34px); font-weight: 800; margin: 0 0 12px; }
.nj-cta p { color: #d6e0e2; font-size: clamp(15px,1.6vw,17px); margin: 0 auto 26px; max-width: 560px; line-height: 1.55; }
.nj-cta .nj-btn { background: #fff; color: var(--nj-ink); border-color: #fff; }
.nj-cta .nj-btn:hover { background: var(--nj-surface-3); color: var(--nj-ink); }
/* Secondary (ghost) button on the dark CTA needs light-on-dark treatment. */
.nj-cta .nj-btn--ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.55); }
.nj-cta .nj-btn--ghost:hover { background: rgba(255,255,255,.10); border-color: #fff; color: #fff; box-shadow: none; }

/* --- 404 --- */
.nj-404 { text-align: center; padding: clamp(56px, 9vw, 120px) 0; }
.nj-404 .nj-404__code {
    font-size: clamp(84px, 18vw, 180px); font-weight: 900; line-height: .9;
    color: var(--nj-ink); letter-spacing: -.03em; margin: 0;
}
.nj-404 .nj-404__code .nj-accent::after { height: .18em; }
.nj-404 h1 { font-size: clamp(22px, 3.4vw, 34px); font-weight: 800; color: var(--nj-ink); margin: 18px 0 12px; }
.nj-404 p { color: var(--nj-ink-soft); font-size: clamp(15px,1.6vw,17px); max-width: 520px; margin: 0 auto 30px; line-height: 1.6; }
.nj-404__links { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }

/* Utility */
.nj-mt-cta { margin-top: clamp(36px, 5vw, 64px); }
.nj-center { text-align: center; }

/* ===========================================================================
   3. DESIGN TOKENS (extended) — one source of truth for the form system.
   All values stay inside the existing Nordjouren identity (teal #47857F,
   ink #102529, black CTA, yellow, light surfaces).
   =========================================================================== */
:root{
    --nj-teal-strong: #2f6f68;   /* richer shade of the brand teal for focus/active */
    --nj-teal-ring:   rgba(71,133,127,.22);
    --nj-yellow:      #FFD54A;
    --nj-danger:      #c0392b;
    --nj-danger-bg:   #fdeceb;
    --nj-success:     #2f7d5b;
    --nj-success-bg:  #eaf6f0;
    --nj-field-h:     52px;
    --nj-field-h-sm:  46px;
    --nj-field-radius:12px;
    --nj-field-border:#d6dde0;
    --nj-field-bg:    #fff;
    --nj-btn-h:       52px;
}

/* ===========================================================================
   4. FORM SYSTEM — modern, consistent, accessible, in-brand.
   Opt-in via .nj-field / .nj-select / etc. PLUS a safe uplift for Bootstrap
   .form-control on public pages (never touches the locked hero .form-bar).
   =========================================================================== */

.nj-form { display: grid; gap: 18px; }
.nj-form-row { display: grid; gap: 18px; }
@media (min-width: 640px){ .nj-form-row--2 { grid-template-columns: 1fr 1fr; } }

.nj-fieldgroup { display: flex; flex-direction: column; gap: 7px; }
.nj-label { font-size: 13.5px; font-weight: 600; color: var(--nj-ink); letter-spacing: .01em; }
.nj-label .nj-req { color: var(--nj-danger); margin-left: 2px; }
.nj-help { font-size: 12.5px; color: var(--nj-ink-soft); line-height: 1.45; }
.nj-error-msg { font-size: 12.5px; color: var(--nj-danger); display: none; align-items: center; gap: 5px; }
.nj-fieldgroup.is-invalid .nj-error-msg { display: flex; }

/* Base control look — applied to opt-in classes AND to .form-control on
   public layout pages (excluding the hero form-bar, admin, and booking header). */
.nj-field,
.nj-select,
.nj-textarea,
.nj-page .form-control,
body:not(.aa) .contact-form input:not([type=checkbox]):not([type=radio]),
body:not(.aa) .contact-form textarea,
body:not(.aa) .contact-form select {
    width: 100%;
    height: var(--nj-field-h);
    padding: 0 16px;
    font-family: var(--font-family, 'Montserrat', sans-serif);
    font-size: 15px;
    color: var(--nj-ink);
    background: var(--nj-field-bg);
    border: 1.5px solid var(--nj-field-border);
    border-radius: var(--nj-field-radius);
    box-shadow: none;
    outline: none;
    transition: border-color var(--nj-ease), box-shadow var(--nj-ease), background var(--nj-ease);
    -webkit-appearance: none; appearance: none;
}
.nj-textarea,
.nj-page textarea.form-control,
body:not(.aa) .contact-form textarea {
    height: auto; min-height: 130px; padding: 14px 16px; line-height: 1.5; resize: vertical;
}
.nj-field::placeholder, .nj-textarea::placeholder,
.nj-page .form-control::placeholder { color: var(--nj-placeholder, #98a3a6); opacity: 1; }

.nj-field:hover, .nj-select:hover, .nj-textarea:hover,
.nj-page .form-control:hover { border-color: #b9c4c7; }

.nj-field:focus, .nj-select:focus, .nj-textarea:focus,
.nj-page .form-control:focus,
body:not(.aa) .contact-form input:focus,
body:not(.aa) .contact-form textarea:focus,
body:not(.aa) .contact-form select:focus {
    border-color: var(--nj-teal-strong);
    box-shadow: 0 0 0 3px var(--nj-teal-ring);
    background: #fff;
}

/* Select — custom teal chevron, no native arrow */
.nj-select,
.nj-page select.form-control,
body:not(.aa) .contact-form select {
    padding-right: 44px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2347857F' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
    cursor: pointer;
}

/* Validation states */
.nj-field.is-invalid, .nj-select.is-invalid, .nj-textarea.is-invalid,
.is-invalid > .nj-field, .is-invalid > .nj-select {
    border-color: var(--nj-danger); background: var(--nj-danger-bg);
}
.nj-field.is-invalid:focus { box-shadow: 0 0 0 3px rgba(192,57,43,.18); }
.nj-field.is-valid, .nj-select.is-valid { border-color: var(--nj-success); }

/* Disabled + loading */
.nj-field:disabled, .nj-select:disabled, .nj-textarea:disabled,
.nj-page .form-control:disabled { background: #f1f3f4; color: #9aa4a7; cursor: not-allowed; border-color: #e3e8e9; }
.nj-is-loading { position: relative; pointer-events: none; }
.nj-is-loading::after {
    content: ""; position: absolute; right: 16px; top: 50%; width: 18px; height: 18px; margin-top: -9px;
    border: 2px solid var(--nj-field-border); border-top-color: var(--nj-teal-strong);
    border-radius: 50%; animation: nj-spin .7s linear infinite;
}
@keyframes nj-spin { to { transform: rotate(360deg); } }

/* Custom checkbox */
.nj-check { display: inline-flex; align-items: flex-start; gap: 11px; cursor: pointer; font-size: 15px; color: var(--nj-ink); line-height: 1.4; }
.nj-check input[type="checkbox"] { position: absolute; opacity: 0; width: 0; height: 0; }
.nj-check .nj-box {
    flex: none; width: 22px; height: 22px; margin-top: 1px; border: 1.5px solid var(--nj-field-border);
    border-radius: 7px; background: #fff; display: grid; place-items: center; transition: all var(--nj-ease);
}
.nj-check .nj-box::after {
    content: ""; width: 11px; height: 11px; transform: scale(0);
    background: no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
    transition: transform var(--nj-ease);
}
.nj-check input:checked + .nj-box { background: var(--nj-teal-strong); border-color: var(--nj-teal-strong); }
.nj-check input:checked + .nj-box::after { transform: scale(1); }
.nj-check input:focus-visible + .nj-box { box-shadow: 0 0 0 3px var(--nj-teal-ring); }

/* Custom radio */
.nj-radio { display: inline-flex; align-items: flex-start; gap: 11px; cursor: pointer; font-size: 15px; color: var(--nj-ink); line-height: 1.4; }
.nj-radio input[type="radio"] { position: absolute; opacity: 0; width: 0; height: 0; }
.nj-radio .nj-dot {
    flex: none; width: 22px; height: 22px; margin-top: 1px; border: 1.5px solid var(--nj-field-border);
    border-radius: 50%; background: #fff; display: grid; place-items: center; transition: all var(--nj-ease);
}
.nj-radio .nj-dot::after { content: ""; width: 10px; height: 10px; border-radius: 50%; background: #fff; transform: scale(0); transition: transform var(--nj-ease); }
.nj-radio input:checked + .nj-dot { border-color: var(--nj-teal-strong); background: var(--nj-teal-strong); }
.nj-radio input:checked + .nj-dot::after { transform: scale(1); }
.nj-radio input:focus-visible + .nj-dot { box-shadow: 0 0 0 3px var(--nj-teal-ring); }

/* Selectable option card (radio/checkbox styled as a tile) */
.nj-option { border: 1.5px solid var(--nj-field-border); border-radius: 12px; padding: 14px 16px; background: #fff; transition: all var(--nj-ease); }
.nj-option:hover { border-color: #b9c4c7; }
.nj-option:has(input:checked) { border-color: var(--nj-teal-strong); box-shadow: 0 0 0 1px var(--nj-teal-strong) inset; background: #f4faf8; }

/* Quantity stepper */
.nj-qty { display: inline-flex; align-items: center; border: 1.5px solid var(--nj-field-border); border-radius: var(--nj-radius-pill); overflow: hidden; height: 46px; }
.nj-qty button { width: 42px; height: 100%; border: none; background: #fff; color: var(--nj-ink); font-size: 20px; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: background var(--nj-ease); }
.nj-qty button:hover { background: var(--nj-surface-2); color: var(--nj-teal-strong); }
.nj-qty input { width: 46px; text-align: center; border: none; font-size: 16px; font-weight: 600; color: var(--nj-ink); background: transparent; }

/* Input with leading icon (e.g. phone/email/search) */
.nj-input-icon { position: relative; }
.nj-input-icon > i { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); color: var(--nj-ink-soft); font-size: 17px; width: 18px; text-align: center; }
.nj-input-icon > .nj-field { padding-left: 44px; }

/* ===========================================================================
   5. Buttons (extended) — brand black pill + teal + sizes. Consistent height.
   =========================================================================== */
.nj-btn { height: var(--nj-btn-h); padding: 0 30px; }
.nj-btn--teal { background: var(--nj-teal-strong); border-color: var(--nj-teal-strong); color: #fff; }
.nj-btn--teal:hover { background: #285d57; border-color: #285d57; color: #fff; }
.nj-btn--sm { height: 42px; padding: 0 20px; font-size: 14px; }
.nj-btn--block { width: 100%; }
.nj-btn[disabled], .nj-btn.is-disabled { opacity: .5; pointer-events: none; }

/* ===========================================================================
   6. Content typography (.nj-prose) — readable measure for CMS/content pages.
   =========================================================================== */
.nj-prose { max-width: 72ch; color: var(--nj-ink-soft); font-size: 16.5px; line-height: 1.7; }
.nj-prose > * + * { margin-top: 1.1em; }
.nj-prose h1, .nj-prose h2, .nj-prose h3, .nj-prose h4 { color: var(--nj-ink); font-weight: 800; line-height: 1.2; margin-top: 1.6em; }
.nj-prose h1 { font-size: clamp(28px,4vw,40px); }
.nj-prose h2 { font-size: clamp(23px,3vw,30px); }
.nj-prose h3 { font-size: clamp(19px,2.4vw,23px); }
.nj-prose h4 { font-size: 18px; }
.nj-prose p, .nj-prose li { color: var(--nj-ink-soft); }
.nj-prose a { color: var(--nj-teal-strong); text-decoration: underline; text-underline-offset: 2px; }
.nj-prose a:hover { color: #285d57; }
.nj-prose ul, .nj-prose ol { padding-left: 1.3em; }
.nj-prose li { margin-top: .4em; }
.nj-prose img { border-radius: var(--nj-radius); height: auto; }
.nj-prose blockquote { border-left: 4px solid var(--nj-teal-strong); padding: 6px 0 6px 20px; color: var(--nj-ink); font-style: italic; }
.nj-prose table { width: 100%; border-collapse: collapse; }
.nj-prose th, .nj-prose td { border: 1px solid var(--nj-border); padding: 10px 12px; text-align: left; }
.nj-prose th { background: var(--nj-surface-2); font-weight: 700; color: var(--nj-ink); }
.nj-callout { background: var(--nj-surface-3); border: 1px solid #dcebf2; border-left: 4px solid var(--nj-teal-strong); border-radius: 12px; padding: 18px 20px; }

/* ===========================================================================
   7. Header / navigation polish (in-brand, additive — never recolours the bar).
   =========================================================================== */
header .navbar-nav li a { transition: color var(--nj-ease); }
header .navbar-nav li a:hover,
header .navbar-nav li a:focus-visible { color: var(--nj-teal-strong); }
/* dropdown items: brand-teal hover instead of the old near-black swatch */
.servicesMenuDropdown ul li a { border-radius: 8px; transition: background var(--nj-ease), color var(--nj-ease); }
.servicesMenuDropdown ul li a:hover { background: var(--nj-teal-strong) !important; color: #fff !important; }
.servicesMenuDropdown.firstmenu, .servicesMenuDropdown.secondmenu { border: 1px solid var(--nj-border); }
/* the header nav CTA pill: consistent subtle lift */
header .navbar-nav li button { transition: transform var(--nj-ease), box-shadow var(--nj-ease); }
header .navbar-nav li button:hover { box-shadow: 0 8px 20px rgba(0,0,0,.18); }

/* ===========================================================================
   8. Mobile menu overlay — a designed panel, not a squeezed desktop menu.
   #mobilemenu is toggled .d-none/.d-block by new_site/javascript.js.
   =========================================================================== */
#mobilemenu {
    background: #fff; z-index: 1080; overflow-y: auto;
    box-shadow: 0 10px 40px rgba(16,37,41,.14);
}
#mobilemenu.d-block { animation: nj-menu-in .22s ease both; }
@keyframes nj-menu-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
#mobilemenu .cross { font-size: 26px; cursor: pointer; }
#mobilemenu .navbar-nav { gap: 4px; width: 100%; }
#mobilemenu .navbar-nav > li { width: 100%; border-bottom: 1px solid var(--nj-border); }
#mobilemenu .navbar-nav > li > a { padding: 16px 6px; font-size: 18px; color: var(--nj-ink); }
#mobilemenu .servicesMenuDropdown { position: static !important; display: block !important;
    box-shadow: none !important; width: 100% !important; padding: 0 0 10px !important; background: transparent !important; }
#mobilemenu .servicesMenuDropdown ul { display: block; }
#mobilemenu .servicesMenuDropdown ul li a { font-size: 15px; padding: 9px 14px; color: var(--nj-ink); }
#mobilemenu .servicesMenuDropdown ul li a:hover { color: #fff; }
#mobilemenu .btn { margin-top: 14px; }

/* ===========================================================================
   9. HOMEPAGE REDESIGN  (.hz-*)  — a new composition; same Nordjouren theme,
   same bubble/blob assets (Group12, Path3/Path4, shape1-3), yellow + teal + ink.
   Fully self-contained + responsive (no per-breakpoint duplicate files).
   =========================================================================== */
.home-redesign { background: #fff; }
/* clean solid sticky header for the redesigned home (was transparent via home-4) */
.home-redesign header { background:#fff !important; box-shadow: 0 2px 22px rgba(16,37,41,.07); }
.hz { font-family: var(--font-family,'Montserrat',sans-serif); color: var(--nj-ink); }
.hz-wrap { width: 100%; max-width: 1240px; margin-inline: auto; padding-inline: clamp(16px,4vw,40px); }
.hz-section { padding: clamp(48px,7vw,96px) 0; position: relative; }
.hz-eyebrow { display:inline-block; font-size:13px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color: var(--nj-teal-strong); margin-bottom:12px; }
.hz-h2 { font-size: clamp(26px,3.6vw,42px); font-weight:800; line-height:1.12; letter-spacing:-.01em; color: var(--nj-ink); margin:0; }
.hz-sub { font-size: clamp(15px,1.6vw,17.5px); line-height:1.6; color: var(--nj-ink-soft); margin:14px auto 0; max-width:620px; }
.hz-head { text-align:center; max-width:720px; margin:0 auto clamp(30px,4vw,54px); }
/* yellow marker accent (reuses the brand's hero underline treatment) */
.hz-mark { position:relative; white-space:nowrap; z-index:0; }
.hz-mark::after { content:""; position:absolute; left:-2px; right:-2px; bottom:.06em; height:.36em; background: var(--nj-yellow); opacity:.6; border-radius:3px; z-index:-1; }

/* organic blob decorations (soft, brand-teal tints; never cause h-scroll) */
.hz-blob { position:absolute; border-radius:47% 53% 45% 55% / 55% 45% 55% 45%; filter:blur(2px); opacity:.5; pointer-events:none; z-index:0; }

/* ---- HERO ---- */
.hz-hero { position:relative; overflow:hidden; padding: clamp(28px,5vw,70px) 0 clamp(48px,6vw,92px);
    background: radial-gradient(1200px 600px at 82% -8%, #eaf5f3 0%, rgba(234,245,243,0) 60%), linear-gradient(180deg,#f7fbfb 0%, #ffffff 72%); }
.hz-hero__deco { position:absolute; inset:0; overflow:hidden; z-index:0; pointer-events:none; }
.hz-hero__deco img { position:absolute; opacity:.55; }
.hz-hero__deco .b1 { width:420px; top:-90px; right:-80px; }
.hz-hero__deco .b2 { width:280px; bottom:-70px; left:-90px; opacity:.4; }
.hz-hero__grid { position:relative; z-index:2; display:grid; grid-template-columns: 1.05fr .95fr; gap: clamp(24px,4vw,56px); align-items:center; }
.hz-badge { display:inline-flex; align-items:center; gap:9px; padding:8px 16px 8px 12px; border-radius:var(--nj-radius-pill);
    background:#fff; border:1px solid #d9ebe7; box-shadow: var(--nj-shadow-sm); color: var(--nj-teal-strong); font-size:13.5px; font-weight:600; margin-bottom:20px; }
.hz-badge .dot { width:9px; height:9px; border-radius:50%; background: var(--nj-teal-strong); box-shadow:0 0 0 4px rgba(71,133,127,.18); }
.hz-hero h1 { font-size: clamp(34px,5.2vw,62px); line-height:1.04; font-weight:800; letter-spacing:-.02em; color:var(--nj-ink); margin:0 0 18px; }
.hz-hero__lead { font-size: clamp(15.5px,1.7vw,19px); line-height:1.6; color:var(--nj-ink-soft); max-width:520px; margin:0 0 26px; }

/* booking card */
.hz-bookcard { background:#fff; border:1px solid #e6edee; border-radius:20px; box-shadow: 0 24px 60px rgba(16,37,41,.12); padding: 18px; }
.hz-bookcard__row { display:grid; grid-template-columns: 1fr 1fr; gap:12px; }
.hz-bookcard .nj-fieldgroup { gap:6px; }
.hz-bookcard label { font-size:12.5px; font-weight:700; color:var(--nj-ink); }
.hz-bookcard select, .hz-bookcard input { height:50px; }
.hz-bookcard__submit { margin-top:12px; }
.hz-bookcard__submit .nj-btn { width:100%; height:56px; font-size:16.5px; }
.hz-bookcard__note { display:flex; align-items:center; gap:7px; margin-top:12px; font-size:12.5px; color:var(--nj-ink-soft); }
.hz-hero__actions { display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin-top:18px; }
.hz-hero__ratings { display:flex; align-items:center; gap:14px; margin-top:22px; flex-wrap:wrap; }
.hz-hero__ratings .stars { color:#FFB800; font-size:15px; letter-spacing:1px; }
.hz-hero__ratings b { color:var(--nj-ink); }
.hz-hero__ratings span { color:var(--nj-ink-soft); font-size:13.5px; }

/* hero media — image framed in an organic blob */
.hz-hero__media { position:relative; }
.hz-hero__media .frame {
    position:relative; z-index:2; aspect-ratio: 1/1; width:100%; max-width:520px; margin-inline:auto;
    border-radius: 46% 54% 48% 52% / 55% 46% 54% 45%;
    overflow:hidden; box-shadow: 0 30px 70px rgba(16,37,41,.18); background:#e9f4f2;
}
.hz-hero__media .frame img { width:100%; height:100%; object-fit:cover; }
.hz-hero__media .ring { position:absolute; inset:-14px; z-index:1; border-radius:46% 54% 48% 52% / 55% 46% 54% 45%;
    background: conic-gradient(from 120deg, #e7f4f1, #cfe9e4, #f6f0d6, #e7f4f1); opacity:.7; }
.hz-float { position:absolute; z-index:3; background:#fff; border-radius:16px; box-shadow:0 16px 40px rgba(16,37,41,.16); padding:12px 16px; display:flex; align-items:center; gap:10px; }
.hz-float .g-mini { font-weight:800; color:var(--nj-ink); font-size:18px; }
.hz-float small { color:var(--nj-ink-soft); font-size:12px; }
.hz-float--tl { top:6%; left:-4%; }
.hz-float--br { bottom:8%; right:-2%; }
.hz-float .stars { color:#FFB800; font-size:13px; }

/* ---- TRUST STRIP ---- */
.hz-trust { background:#fff; border-top:1px solid #eef2f3; border-bottom:1px solid #eef2f3; padding: clamp(22px,3vw,34px) 0; }
.hz-trust__inner { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:22px; }
.hz-trust__badges { display:flex; flex-wrap:wrap; gap:14px 26px; }
.hz-trust__badge { display:flex; align-items:center; gap:9px; font-size:14px; font-weight:600; color:var(--nj-ink); }
.hz-trust__badge i { color:var(--nj-teal-strong); font-size:20px; }
.hz-trust__logos { display:flex; flex-wrap:wrap; align-items:center; gap:18px 26px; }
.hz-trust__logos .r { display:flex; flex-direction:column; align-items:center; gap:3px; }
.hz-trust__logos img { height:34px; width:auto; object-fit:contain; }
.hz-trust__logos small { font-size:11.5px; color:var(--nj-ink-soft); font-weight:600; }

/* ---- SERVICE CARDS ---- */
.hz-servicegrid { display:grid; grid-template-columns: repeat(auto-fill,minmax(180px,1fr)); gap: clamp(14px,1.6vw,20px); }
.hz-scard { display:flex; flex-direction:column; align-items:flex-start; gap:14px; background:#fff; border:1px solid #ebeff0;
    border-radius:18px; padding:22px 20px; text-decoration:none; color:inherit; box-shadow: var(--nj-shadow-sm); position:relative; overflow:hidden; }
.hz-scard::before { content:""; position:absolute; top:-30px; right:-30px; width:90px; height:90px; border-radius:50%; background:#f1f8f6; transition:transform var(--nj-ease); }
.hz-scard:hover { transform:translateY(-5px); box-shadow: var(--nj-shadow-md); border-color:#d9e6e3; }
.hz-scard:hover::before { transform:scale(1.5); }
.hz-scard__icon { position:relative; width:60px; height:60px; border-radius:16px; background:linear-gradient(135deg,#eaf5f2,#f6f1dd); display:grid; place-items:center; }
.hz-scard__icon img { width:34px; height:34px; object-fit:contain; }
.hz-scard__title { position:relative; font-size:16.5px; font-weight:700; color:var(--nj-ink); line-height:1.25; }
.hz-scard__link { position:relative; margin-top:auto; font-size:13.5px; font-weight:600; color:var(--nj-teal-strong); display:inline-flex; align-items:center; gap:5px; }
.hz-scard:hover .hz-scard__link i { transform:translateX(3px); }
.hz-scard__link i { transition:transform var(--nj-ease); }

/* ---- STEPS ---- */
.hz-steps { display:grid; grid-template-columns: repeat(3,1fr); gap: clamp(18px,2.4vw,30px); counter-reset: hz; }
.hz-step { position:relative; background:#fff; border:1px solid #ebeff0; border-radius:20px; padding: 34px 26px 30px; box-shadow: var(--nj-shadow-sm); }
.hz-step__shape { position:absolute; top:-26px; right:22px; width:78px; height:auto; opacity:.9; }
.hz-step__num { counter-increment:hz; width:46px; height:46px; border-radius:14px; background:var(--nj-ink); color:#fff; font-weight:800; font-size:20px; display:grid; place-items:center; margin-bottom:16px; }
.hz-step__num::after { content: counter(hz,decimal-leading-zero); }
.hz-step h3 { font-size:19px; font-weight:700; color:var(--nj-ink); margin:0 0 8px; }
.hz-step p { font-size:14.5px; line-height:1.55; color:var(--nj-ink-soft); margin:0; }

/* ---- WHY (om oss) ---- */
.hz-why { background: linear-gradient(180deg,#f7fbfb,#fff); }
.hz-why__grid { display:grid; grid-template-columns: .95fr 1.05fr; gap: clamp(28px,4vw,60px); align-items:center; }
.hz-why__media { position:relative; }
.hz-why__media img { position:relative; z-index:2; width:100%; height:auto; border-radius: 52% 48% 46% 54% / 48% 52% 48% 52%; box-shadow:0 26px 60px rgba(16,37,41,.16); }
.hz-why__media .blob { position:absolute; z-index:1; width:70%; bottom:-24px; left:-24px; opacity:.6; }
.hz-why__stats { display:flex; gap:18px; margin:26px 0; flex-wrap:wrap; }
.hz-why__stat { flex:1; min-width:140px; background:#fff; border:1px solid #ebeff0; border-radius:16px; padding:18px 20px; box-shadow:var(--nj-shadow-sm); }
.hz-why__stat b { display:block; font-size:30px; font-weight:800; color:var(--nj-teal-strong); line-height:1; }
.hz-why__stat span { font-size:13.5px; color:var(--nj-ink-soft); }
.hz-list { list-style:none; margin:20px 0 26px; padding:0; display:grid; gap:12px; }
.hz-list li { display:flex; align-items:flex-start; gap:11px; font-size:15px; color:var(--nj-ink); }
.hz-list li i { color:var(--nj-teal-strong); font-size:18px; margin-top:1px; }

/* ---- CITY CHIPS ---- */
.hz-citychips { display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-top:8px; }

/* ---- REVIEWS ---- */
.hz-reviews { background:#fff; }
.hz-rev-summary { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:10px 20px; margin-bottom:34px; }
.hz-rev-summary .score { font-size:44px; font-weight:800; color:var(--nj-ink); line-height:1; }
.hz-rev-summary .stars { color:#FFB800; font-size:20px; letter-spacing:2px; }
.hz-rev-summary .meta { color:var(--nj-ink-soft); font-size:14px; }
.hz-revgrid { display:grid; grid-template-columns: repeat(auto-fill,minmax(300px,1fr)); gap: clamp(16px,2vw,22px); }
.hz-review { background:#fff; border:1px solid #ebeff0; border-radius:18px; padding:24px; box-shadow: var(--nj-shadow-sm); display:flex; flex-direction:column; gap:12px; }
.hz-review__top { display:flex; align-items:center; gap:12px; }
.hz-review__top img { width:46px; height:46px; border-radius:50%; object-fit:cover; }
.hz-review__top .g { margin-left:auto; width:22px; height:22px; }
.hz-review h5 { margin:0; font-size:15.5px; font-weight:700; color:var(--nj-ink); }
.hz-review__date { font-size:12.5px; color:var(--nj-ink-soft); }
.hz-review .stars { color:#FFB800; font-size:14px; }
.hz-review p { margin:0; font-size:14.5px; line-height:1.6; color:var(--nj-ink-soft); display:-webkit-box; -webkit-line-clamp:6; -webkit-box-orient:vertical; overflow:hidden; }

/* ---- FAQ ---- */
.hz-faq__grid { display:grid; grid-template-columns: 1fr 1fr; gap: clamp(28px,4vw,56px); align-items:center; }
.hz-faq__media img { width:100%; height:auto; border-radius:24px; }
.hz-faq .accordion-item { border:1px solid #ebeff0 !important; border-radius:14px !important; margin-bottom:12px; overflow:hidden; background:#fff; }
.hz-faq .accordion-button { border-radius:14px !important; font-weight:600; color:var(--nj-ink); }
.hz-faq .accordion-button:not(.collapsed){ background:#f4faf8; color:var(--nj-ink); box-shadow:none; }

/* ---- FINAL CTA ---- */
.hz-finalcta { position:relative; overflow:hidden; background: radial-gradient(700px 400px at 85% 20%, #1d3d40 0%, #102529 55%); color:#fff;
    border-radius: clamp(20px,3vw,32px); padding: clamp(40px,6vw,80px) clamp(24px,5vw,72px); }
.hz-finalcta__grid { display:grid; grid-template-columns: 1.1fr .9fr; gap:30px; align-items:center; position:relative; z-index:2; }
.hz-finalcta__blob { position:absolute; z-index:1; opacity:.18; pointer-events:none; }
.hz-finalcta h2 { color:#fff; font-size:clamp(26px,3.6vw,42px); font-weight:800; line-height:1.12; margin:0 0 14px; }
.hz-finalcta p { color:#cfe0e0; font-size:clamp(15px,1.7vw,18px); line-height:1.6; margin:0 0 26px; max-width:520px; }
.hz-finalcta .hz-actions { display:flex; flex-wrap:wrap; gap:14px; }
.hz-finalcta .nj-btn { background:#fff; color:var(--nj-ink); border-color:#fff; }
.hz-finalcta .nj-btn:hover { background:var(--nj-surface-3); }
.hz-finalcta .nj-btn--ghost { background:transparent; color:#fff; border-color:rgba(255,255,255,.5); }
.hz-finalcta .nj-btn--ghost:hover { background:rgba(255,255,255,.12); color:#fff; }
.hz-finalcta__media { position:relative; z-index:2; text-align:center; }
.hz-finalcta__media img { max-width:320px; width:100%; height:auto; filter: drop-shadow(0 24px 50px rgba(0,0,0,.4)); }

/* ---- LOGO STRIP ---- */
.hz-logos { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:26px 44px; opacity:.85; }
.hz-logos img { height:38px; width:auto; object-fit:contain; filter:grayscale(1); opacity:.7; transition:all var(--nj-ease); }
.hz-logos img:hover { filter:none; opacity:1; }

/* ===========================================================================
   10. FOOTER — light-blue (same as the waves) with a wavy top edge. Site-wide.
   =========================================================================== */
footer { position: relative; background: var(--hz-blue, #e9f4fb) !important; background-image: none !important;
    padding-top: clamp(66px,8vw,104px) !important; padding-bottom: 0 !important; border:none !important; }
footer::before { content:""; position:absolute; left:-1px; right:-1px; top:0; transform:translateY(-99%);
    height: clamp(28px,3.6vw,56px); background-repeat:no-repeat; background-size:100% 100%; pointer-events:none;
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2060'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,30%20C300,62%20520,2%20760,26%20C1000,50%201180,8%201440,32%20L1440,60%20L0,60%20Z'%20fill='%23e9f4fb'/%3E%3C/svg%3E"); }
footer .brand-logo { display:inline-block; background:transparent; padding:0; box-shadow:none; margin-bottom:10px; }
footer .brand-logo img { filter:none !important; max-width:160px; height:auto; }
footer .paragraph p { color: var(--nj-ink-soft) !important; font-size:14.5px !important; line-height:1.65 !important; }
footer .foot-box { margin-top: 0 !important; }
footer .foot-box .heading { color: var(--nj-ink) !important; font-weight:700 !important; font-size:16px !important; margin-bottom:18px !important; }
footer .foot-box ul li { padding-bottom: 12px !important; color: var(--nj-ink-soft) !important; font-size:14.5px !important; }
footer .foot-box ul li a, footer .city p, footer .city p a { color: var(--nj-ink-soft) !important; text-decoration:none !important; transition: color var(--nj-ease); }
footer .foot-box ul li a:hover, footer .city p a:hover { color: var(--nj-teal-strong) !important; }
footer .footermail { color: var(--nj-ink-soft) !important; }
footer .city h5 { color: var(--nj-ink) !important; font-weight:700 !important; font-size:16px !important; margin-bottom:14px; }
footer .social-media li { font-size:18px !important; }
footer .social-media li i, footer .social-media li a i { color: var(--nj-ink) !important; transition: color var(--nj-ease), transform var(--nj-ease); }
footer .social-media li a:hover i { color: var(--nj-teal-strong) !important; transform: translateY(-2px); }
.lower-footer { border-top:1px solid rgba(16,37,41,.10) !important; background:transparent !important; margin-top: clamp(30px,4vw,50px); }
.lower-footer span { color: var(--nj-ink-soft) !important; font-size:13px !important; }

/* ===========================================================================
   RESPONSIVE
   =========================================================================== */
@media (max-width: 991px){
    .hz-hero__grid { grid-template-columns: 1fr; }
    .hz-hero__media { order:-1; }
    .hz-hero__media .frame { max-width:360px; }
    .hz-why__grid, .hz-faq__grid, .hz-finalcta__grid { grid-template-columns: 1fr; }
    .hz-steps { grid-template-columns: 1fr; }
    .hz-finalcta__media { order:-1; }
    .hz-finalcta__media img { max-width:220px; }
}
@media (max-width: 640px){
    .hz-bookcard__row { grid-template-columns: 1fr; }
    .hz-hero__ratings { gap:10px; }
    .hz-float--tl { left:2%; top:2%; }
    .hz-float--br { right:2%; }
    .hz-float { padding:9px 12px; }
    .hz-trust__inner { justify-content:center; text-align:center; }
    .hz-rev-summary .score { font-size:36px; }
}

/* ===========================================================================
   11. COMPACTION PASS — tighter, more premium, consistent; same theme + bubbles.
   =========================================================================== */
.hz-wrap { max-width: 1200px; }                       /* one container width everywhere */
.hz-section { padding: clamp(34px,4.5vw,62px) 0; }
.hz-head { margin: 0 auto clamp(20px,2.6vw,36px); }

/* compact header */
.home-redesign header { padding: 8px 0 !important; }
.home-redesign header .brand-logo img { max-height: 58px; width: auto; padding-top:2px !important; padding-bottom:2px !important; }

/* hero — less height/whitespace, booking card sits high */
.hz-hero { padding: clamp(16px,2.6vw,36px) 0 clamp(26px,3.2vw,50px); }
.hz-hero__grid { gap: clamp(20px,3vw,46px); align-items: center; }
.hz-hero h1 { font-size: clamp(30px,4.4vw,52px); margin: 0 0 12px; }
.hz-hero__lead { font-size: clamp(15px,1.5vw,17.5px); margin: 0 0 18px; max-width: 500px; }
.hz-badge { margin-bottom: 16px; }
.hz-bookcard { padding: 15px; border-radius: 18px; }
.hz-bookcard select, .hz-bookcard input { height: 48px; }
.hz-bookcard__submit .nj-btn { height: 52px; font-size: 16px; }
.hz-bookcard__note { margin-top: 10px; }
.hz-hero__actions { margin-top: 12px; }
.hz-hero__ratings { margin-top: 14px; }
.hz-hero__media .frame { max-width: 440px; }
.hz-hero__deco .b1 { width: 340px; }
.hz-hero__deco .b2 { width: 220px; }

/* service grid — 4 per row desktop, even heights, compact */
.hz-servicegrid { grid-template-columns: repeat(2,1fr); gap: 12px; }
@media (min-width:640px){ .hz-servicegrid { grid-template-columns: repeat(3,1fr); } }
@media (min-width:992px){ .hz-servicegrid { grid-template-columns: repeat(4,1fr); } }
.hz-scard { padding: 16px; gap: 10px; border-radius: 16px; }
.hz-scard__icon { width: 50px; height: 50px; border-radius: 14px; }
.hz-scard__icon img { width: 28px; height: 28px; }
.hz-scard__title { font-size: 15.5px; }
.hz-scard__link { font-size: 13px; }

/* merged process + why */
.hz-process__grid { display:grid; grid-template-columns: 1.05fr .95fr; gap: clamp(26px,4vw,54px); align-items:center; }
.hz-processlead__sub { font-size: clamp(14.5px,1.5vw,16.5px); color: var(--nj-ink-soft); line-height:1.6; margin: 12px 0 16px; max-width: 520px; }
.hz-process__media { position: relative; margin: 2px 0 18px; max-width: 440px; }
.hz-process__media > img:last-child { position:relative; z-index:2; width:100%; height:auto; border-radius: 50% 48% 52% 46% / 48% 52% 46% 54%; box-shadow: 0 22px 50px rgba(16,37,41,.16); }
.hz-process__media .blob { position:absolute; z-index:1; width:60%; bottom:-16px; left:-16px; opacity:.5; }
.hz-steps-v { counter-reset: hz; display:flex; flex-direction:column; gap:14px; }
.hz-stepc { display:flex; align-items:flex-start; gap:16px; background:#fff; border:1px solid #ebeff0; border-radius:16px; padding:18px 20px; box-shadow: var(--nj-shadow-sm); }
.hz-stepc .hz-step__num { counter-increment:hz; flex:none; width:42px; height:42px; border-radius:12px; background:var(--nj-ink); color:#fff; font-weight:800; font-size:17px; display:grid; place-items:center; }
.hz-stepc .hz-step__num::after { content: counter(hz,decimal-leading-zero); }
.hz-stepc__body h3 { font-size:17px; font-weight:700; color:var(--nj-ink); margin:0 0 5px; }
.hz-stepc__body p { font-size:14px; line-height:1.5; color:var(--nj-ink-soft); margin:0; }

/* reviews — 3 desktop, 2 tablet, 1 mobile */
.hz-revgrid { grid-template-columns: repeat(3,1fr); }
.hz-review { padding: 20px; }
.hz-rev-summary { margin-bottom: 26px; }

/* faq compact */
.hz-faq .accordion-button { padding: 14px 16px; font-size: 15px; }
.hz-faq .accordion-body { padding: 4px 16px 16px; font-size: 14.5px; }

/* final cta compaction */
.hz-finalcta { padding: clamp(32px,4vw,58px) clamp(22px,4vw,58px); }

/* mobile: SAME content order (image stays after text/booking), discreet bubbles */
@media (max-width: 991px){
    .hz-process__grid { grid-template-columns: 1fr; }
    .hz-hero__media { order: 0 !important; margin-top: 8px; }
    .hz-hero__media .frame { max-width: 330px; }
    .hz-hero__deco .b1 { width: 200px; opacity:.38; }
    .hz-hero__deco .b2 { width: 150px; opacity:.3; }
    .hz-revgrid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px){
    .hz-hero__media .frame { max-width: 260px; }
    .hz-hero h1 { font-size: clamp(28px,8vw,38px); }
    .hz-revgrid { grid-template-columns: 1fr; }
}

/* ===========================================================================
   12. WAVY LIGHT-BLUE BANDS + extended sections. Light blue = brand tint of
   --secondary-color / #9BCEEF family. Waves are the SAME blue as the band.
   =========================================================================== */
:root{ --hz-blue: #e9f4fb; }

/* soften the hero into the light-blue theme */
.hz-hero { background:
    radial-gradient(900px 460px at 84% -6%, #e2f1ef 0%, rgba(226,241,239,0) 62%),
    linear-gradient(180deg, var(--hz-blue) 0%, #f3fafd 46%, #ffffff 100%) !important; }

/* A light-blue band with wavy top + bottom edges bleeding into the white sections
   above/below. Neighbours must be white (no two bands adjacent). */
.hz-band { background: var(--hz-blue); position: relative; }
.hz-band::before, .hz-band::after {
    content:""; position:absolute; left:-1px; right:-1px; height: clamp(28px,3.6vw,56px);
    background-repeat:no-repeat; background-size:100% 100%; z-index:1; pointer-events:none;
}
.hz-band::before {
    top:0; transform: translateY(-99%);
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2060'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,30%20C300,62%20520,2%20760,26%20C1000,50%201180,8%201440,32%20L1440,60%20L0,60%20Z'%20fill='%23e9f4fb'/%3E%3C/svg%3E");
}
.hz-band::after {
    bottom:0; transform: translateY(99%);
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2060'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,30%20C300,-2%20520,58%20760,34%20C1000,10%201180,52%201440,28%20L1440,0%20L0,0%20Z'%20fill='%23e9f4fb'/%3E%3C/svg%3E");
}
/* give banded sections a touch more breathing room for the wave edges */
.hz-band { padding-top: clamp(40px,5vw,70px); padding-bottom: clamp(40px,5vw,70px); }

/* ---- STATS / IMPACT band ---- */
.hz-stats { display:grid; grid-template-columns: repeat(4,1fr); gap: clamp(12px,2vw,26px); text-align:center; }
.hz-stat b { display:block; font-size: clamp(30px,4vw,50px); font-weight:800; color: var(--nj-teal-strong); line-height:1; letter-spacing:-.02em; }
.hz-stat span { display:block; margin-top:6px; font-size: clamp(12.5px,1.4vw,15px); color: var(--nj-ink-soft); font-weight:600; }
.hz-stat { position:relative; }
.hz-stat + .hz-stat::before { content:""; position:absolute; left:0; top:12%; height:76%; width:1px; background:#cfe4ee; }
@media(max-width:640px){ .hz-stats { grid-template-columns: repeat(2,1fr); gap:26px 12px; } .hz-stat:nth-child(odd)::before{display:none;} }

/* ---- TRYGGHET & RUT cards ---- */
.hz-trust3 { display:grid; grid-template-columns: repeat(3,1fr); gap: clamp(16px,2vw,24px); }
.hz-tcard { background:#fff; border:1px solid #e0ecf2; border-radius:18px; padding: 26px 24px; box-shadow: var(--nj-shadow-sm); }
.hz-tcard__ic { width:54px; height:54px; border-radius:15px; background: linear-gradient(135deg,#eaf5f2,#f6f1dd); display:grid; place-items:center; font-size:25px; color:var(--nj-teal-strong); margin-bottom:16px; }
.hz-tcard h3 { font-size:18px; font-weight:700; color:var(--nj-ink); margin:0 0 8px; }
.hz-tcard p { font-size:14.5px; line-height:1.58; color:var(--nj-ink-soft); margin:0; }
@media(max-width:820px){ .hz-trust3 { grid-template-columns:1fr; } }

/* ===========================================================================
   13. HERO/HEADER REFINEMENTS + REFERENCE MARQUEE + CITY HUBS
   =========================================================================== */
/* transparent light-blue sticky header (glass), same tone as the hero */
.home-redesign header {
    background: rgba(233,244,251,0.72) !important;
    -webkit-backdrop-filter: saturate(140%) blur(14px); backdrop-filter: saturate(140%) blur(14px);
    box-shadow: 0 1px 0 rgba(16,37,41,.06) !important;
}
.home-redesign header .servicesMenuDropdown { -webkit-backdrop-filter:none; backdrop-filter:none; }

/* hero image: refined, NOT an exact circle — soft rounded panel with one organic corner */
.hz-hero__media .frame {
    aspect-ratio: 5 / 4 !important;
    border-radius: 26px 26px 26px 90px !important;
}
.hz-hero__media .ring {
    border-radius: 30px 30px 30px 96px !important;
    inset: -13px; opacity: .65;
}

/* compact trust icons under the stars in the hero */
.hz-hero__trust { display:flex; flex-wrap:wrap; gap:7px 16px; margin-top:12px; }
.hz-hero__trust span { display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:600; color:var(--nj-ink-soft); }
.hz-hero__trust i { color:var(--nj-teal-strong); font-size:15px; }

/* reference / client logo marquee (continuous scroll, greyscale → colour on hover) */
.hz-refs { padding: clamp(28px,3.4vw,44px) 0 clamp(20px,2.4vw,34px); background:#fff; overflow:hidden; }
.hz-refs__label { text-align:center; font-size:12.5px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--nj-ink-soft); margin:0 0 24px; }
.hz-marquee { overflow:hidden; width:100%;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
            mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); }
.hz-marquee__track { display:flex; align-items:center; gap: clamp(36px,5vw,76px); width:max-content; animation: hz-marq 34s linear infinite; }
.hz-marquee:hover .hz-marquee__track { animation-play-state: paused; }
.hz-marquee__item { flex:none; display:grid; place-items:center; height:70px; }
.hz-marquee__item img { max-height:60px; max-width:160px; width:auto; object-fit:contain; opacity:.92; transition: opacity var(--nj-ease), transform var(--nj-ease); }
.hz-marquee__item img:hover { opacity:1; transform: translateY(-2px); }
@keyframes hz-marq { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce){ .hz-marquee__track { animation:none; } }

/* regions & city hubs */
.hz-hubgrid { display:grid; grid-template-columns: repeat(4,1fr); gap: clamp(20px,2.6vw,36px); }
.hz-hubcol h4 { display:flex; align-items:center; gap:7px; font-size:15px; font-weight:800; color:var(--nj-ink); margin:0 0 14px; padding-bottom:11px; border-bottom:1px solid var(--nj-border); }
.hz-hubcol h4 i { color:var(--nj-teal-strong); font-size:15px; }
.hz-hubcol ul { list-style:none; margin:0; padding:0; display:grid; gap:9px; }
.hz-hubcol ul li a { font-size:14px; color:var(--nj-ink-soft); text-decoration:none; transition:color var(--nj-ease); display:inline-flex; align-items:center; gap:7px; }
.hz-hubcol ul li a::before { content:"›"; color:var(--nj-teal-strong); font-weight:700; }
.hz-hubcol ul li a:hover { color:var(--nj-teal-strong); }
@media(max-width:900px){ .hz-hubgrid { grid-template-columns: repeat(2,1fr); } }
@media(max-width:520px){ .hz-hubgrid { grid-template-columns: 1fr; } }

/* hero trust platform logos (kept under the stars, compact) */
.hz-hero__logos { display:flex; flex-wrap:wrap; align-items:center; gap:12px 20px; margin-top:12px; }
.hz-hero__logos img { height:27px; width:auto; max-width:118px; object-fit:contain; }
@media(max-width:640px){ .hz-hero__logos { gap:10px 16px; } .hz-hero__logos img { height:23px; } }

/* ---- Sweden map + hubs layout ---- */
.hz-hubs__grid { display:grid; grid-template-columns: minmax(300px, 400px) 1fr; gap: clamp(26px,4vw,58px); align-items:start; }
.hz-hubs__map { position:relative; }
.hz-svmap { width:100%; height:auto; display:block; overflow:visible; filter: drop-shadow(0 18px 38px rgba(16,37,41,.10)); }
.hz-svmap__land { stroke:#bfe0d6; stroke-width:1.4; }
.hz-svmap__city { cursor:pointer; }
.hz-svmap__city circle { fill: var(--nj-teal-strong); }
.hz-svmap__city circle.pulse { opacity:.5; transform-box: fill-box; transform-origin: center; animation: hz-pulse 2.8s ease-out infinite; }
.hz-svmap__city text { font-family: var(--font-family,'Montserrat',sans-serif); font-size:11px; font-weight:600; fill: var(--nj-ink); paint-order: stroke; stroke:#fff; stroke-width:2.6px; stroke-linejoin:round; transition: fill var(--nj-ease); }
.hz-svmap__city:hover circle { fill:#1f544e; }
.hz-svmap__city:hover text { fill: var(--nj-teal-strong); }
@keyframes hz-pulse { 0%{ transform:scale(1); opacity:.5; } 70%{ transform:scale(3.2); opacity:0; } 100%{ opacity:0; } }
@media (prefers-reduced-motion: reduce){ .hz-svmap__city circle.pulse { animation:none; opacity:0; } }
.hz-hubs__grid .hz-hubgrid { grid-template-columns: repeat(2,1fr); gap: clamp(16px,2vw,26px); }
@media (min-width:1180px){ .hz-hubs__grid .hz-hubgrid { grid-template-columns: repeat(3,1fr); } }
@media (max-width:820px){
    .hz-hubs__grid { grid-template-columns: 1fr; }
    .hz-hubs__map { max-width:300px; margin:0 auto; }
}
@media (max-width:520px){ .hz-hubs__grid .hz-hubgrid { grid-template-columns: 1fr; } }

/* ---- scroll reveal (premium, below-fold only; JS-driven, reduced-motion safe) ---- */
.nj-reveal { opacity:0; transform: translateY(20px); transition: opacity .65s cubic-bezier(.2,.7,.2,1), transform .65s cubic-bezier(.2,.7,.2,1); will-change: opacity, transform; }
.nj-reveal.is-in { opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ .nj-reveal { opacity:1 !important; transform:none !important; transition:none !important; } }

/* ===========================================================================
   14. QUICK CONTACT — desktop side rail + mobile sticky bar (call + inquiry)
   =========================================================================== */
.nj-qc { position: fixed; right: 0; top: 50%; transform: translateY(-50%); z-index: 1050; display:flex; flex-direction:column; gap:10px; }
.nj-qc__btn { display:flex; align-items:center; height:54px; width:54px; overflow:hidden; border-radius: 16px 0 0 16px;
    color:#fff !important; text-decoration:none; box-shadow: 0 10px 26px rgba(16,37,41,.24); white-space:nowrap;
    transition: width .3s cubic-bezier(.2,.7,.2,1), background-color .2s ease; }
.nj-qc__btn i { flex:none; width:54px; text-align:center; font-size:20px; line-height:54px; }
.nj-qc__btn span { opacity:0; padding-right:20px; font-size:14px; font-weight:600; transition: opacity .18s ease; }
.nj-qc__btn:hover, .nj-qc__btn:focus-visible { width:206px; }
.nj-qc__btn:hover span, .nj-qc__btn:focus-visible span { opacity:1; }
.nj-qc__btn--call { background:#1f9d57; }
.nj-qc__btn--call:hover { background:#178246; }
.nj-qc__btn--msg { background: var(--nj-teal-strong, #2f6f68); }
.nj-qc__btn--msg:hover { background:#285d57; }
.nj-qc__btn--mail { background: var(--nj-ink, #102529); }
.nj-qc__btn--mail:hover { background:#1d3d40; }

.nj-mbar { position: fixed; left:0; right:0; bottom:0; z-index:1050; display:flex;
    background: rgba(255,255,255,.92); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
    box-shadow: 0 -6px 22px rgba(16,37,41,.14); padding: 8px; gap:8px; }
.nj-mbar__btn { flex:1; display:flex; align-items:center; justify-content:center; gap:8px; height:50px; border-radius:12px;
    font-size:14.5px; font-weight:700; text-decoration:none; color:#fff !important; }
.nj-mbar__btn i { font-size:16px; }
.nj-mbar__btn--call { background:#1f9d57; }
.nj-mbar__btn--msg { background: var(--nj-ink, #102529); }
/* clear the mobile bar so it never covers footer copyright */
@media (max-width: 991px){ .lower-footer { padding-bottom: 74px !important; } }

/* footer quick-contact block (prominent call + inquiry) */
.nj-fqc { display:flex; flex-wrap:wrap; gap:12px; margin-bottom: clamp(28px,4vw,44px); }
.nj-fqc__btn { display:inline-flex; align-items:center; gap:9px; height:50px; padding:0 24px; border-radius: var(--nj-radius-pill, 300px);
    font-size:15px; font-weight:700; text-decoration:none; transition: transform var(--nj-ease), box-shadow var(--nj-ease); }
.nj-fqc__btn i { font-size:17px; }
.nj-fqc__btn--call { background:#1f9d57; color:#fff !important; }
.nj-fqc__btn--msg { background: var(--nj-ink, #102529); color:#fff !important; }
.nj-fqc__btn:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(16,37,41,.2); }
@media (max-width: 575px){ .nj-fqc { flex-direction:column; } .nj-fqc__btn { justify-content:center; } }

/* ===========================================================================
   15. SERVICE FILTER TABS · INTERACTIVE SWEDEN MAP · REVIEW RAIL
   =========================================================================== */

/* ---- filter tabs above the service grid ---- */
.hz-tabs { display:flex; flex-wrap:wrap; justify-content:center; gap:8px; margin: 0 0 26px; }
.hz-tab { -webkit-appearance:none; appearance:none; font:inherit; cursor:pointer;
    display:inline-flex; align-items:center; gap:8px; height:42px; padding:0 18px;
    border:1px solid var(--nj-border,#e4e9ea); background:#fff; color:var(--nj-ink-soft);
    font-size:14px; font-weight:600; border-radius:300px;
    transition: background-color var(--nj-ease), border-color var(--nj-ease), color var(--nj-ease); }
.hz-tab:hover { border-color: var(--nj-teal-strong,#2f6f68); color: var(--nj-teal-strong,#2f6f68); }
.hz-tab.is-active { background: var(--nj-ink,#102529); border-color: var(--nj-ink,#102529); color:#fff; }
.hz-tab__n { display:inline-grid; place-items:center; min-width:20px; height:20px; padding:0 6px;
    border-radius:300px; background: rgba(16,37,41,.07); font-size:11.5px; font-weight:700; }
.hz-tab.is-active .hz-tab__n { background: rgba(255,255,255,.2); }
.hz-scard { animation: hz-fadein .34s cubic-bezier(.2,.7,.2,1) both; }
.hz-scard.is-hidden { display:none; }
@keyframes hz-fadein { from { opacity:0; transform: translateY(9px); } to { opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce){ .hz-scard { animation:none; } }
@media (max-width:600px){
    .hz-tabs { flex-wrap:nowrap; justify-content:flex-start; overflow-x:auto; padding-bottom:4px;
        -webkit-overflow-scrolling:touch; scrollbar-width:none; }
    .hz-tabs::-webkit-scrollbar { display:none; }
    .hz-tab { flex:none; height:38px; padding:0 15px; font-size:13.5px; }
}

/* ---- map <-> region cross-highlight ---- */
.hz-svmap__city { transition: opacity .2s ease; }
.hz-svmap.is-focus .hz-svmap__city { opacity:.26; }
.hz-svmap.is-focus .hz-svmap__city.is-hit { opacity:1; }
.hz-svmap__city.is-hit circle:not(.pulse) { fill:#1f544e; stroke:#fff; stroke-width:2.4; }
.hz-svmap__city.is-hit text { fill: var(--nj-teal-strong,#2f6f68); font-weight:800; }
.hz-hubcol { padding:10px 12px; margin:-10px -12px; border-radius:14px; outline:none;
    transition: background-color var(--nj-ease); }
.hz-hubcol.is-hit { background:#f1f8fc; }
.hz-hubcol.is-hit h4 { color: var(--nj-teal-strong,#2f6f68); }
.hz-maplegend { display:flex; gap:10px; margin-top:18px; }
.hz-maplegend > div { flex:1; text-align:center; background:#fff; border:1px solid #e0ecf2; border-radius:14px;
    padding:12px 8px; box-shadow: var(--nj-shadow-sm); }
.hz-maplegend b { display:block; font-size:24px; font-weight:800; line-height:1; color: var(--nj-teal-strong,#2f6f68); }
.hz-maplegend span { display:block; margin-top:5px; font-size:11.5px; font-weight:600; color: var(--nj-ink-soft); }
.hz-maphint { margin:12px 0 0; text-align:center; font-size:12px; color: var(--nj-ink-soft); }
@media (hover:none){ .hz-maphint { visibility:hidden; position:relative; }
    .hz-maphint::after { content:"Tryck på en ort för att komma till sidan"; visibility:visible;
        position:absolute; left:0; right:0; top:0; } }

/* ---- reviews: swipeable rail on small screens (all reviews stay visible) ---- */
@media (max-width:640px){
    .hz-revgrid { display:flex; gap:12px; overflow-x:auto; scroll-snap-type:x mandatory;
        padding-bottom:10px; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
    .hz-revgrid::-webkit-scrollbar { display:none; }
    .hz-revgrid > .hz-review { flex:0 0 86%; scroll-snap-align:center; }
}

/* region hub columns — count badge + "fler orter" link */
.hz-hubcol h4 a { color: inherit; text-decoration: none; }
.hz-hubcol h4 a:hover { color: var(--nj-teal-strong,#2f6f68); }
.hz-hubcol__n { margin-left: auto; font-size: 11.5px; font-weight: 700; color: var(--nj-ink-soft);
    background: rgba(16,37,41,.06); border-radius: 300px; padding: 2px 8px; }
.hz-hubcol__more { display: inline-flex; align-items: center; gap: 6px; margin-top: 12px;
    font-size: 13px; font-weight: 600; color: var(--nj-teal-strong,#2f6f68); text-decoration: none; }
.hz-hubcol__more:hover { text-decoration: underline; }
@media (min-width:1180px){ .hz-hubs__grid .hz-hubgrid { grid-template-columns: repeat(3,1fr); } }

/* ---- Sverigekartan: alla orter som prickar, de största med namn ---- */
.hz-svmap__city.is-minor circle { fill: var(--nj-teal-strong,#2f6f68); opacity:.42;
    transition: opacity .18s ease, r .18s ease; }
.hz-svmap__city.is-minor:hover circle { opacity:1; r:3.6; }
.hz-svmap__city.is-major circle:not(.pulse) { fill: var(--nj-teal-strong,#2f6f68); }
.hz-svmap.is-focus .hz-svmap__city.is-minor { opacity:.14; }
.hz-svmap.is-focus .hz-svmap__city.is-minor.is-hit { opacity:1; }
.hz-svmap__city.is-minor.is-hit circle { opacity:1; r:3.8; stroke:#fff; stroke-width:1.4; }
.hz-svmap__city title { pointer-events:none; }

/* ===========================================================================
   16. DESIGNPASS — heroets balans, trust-rad, marquee, sektionsrytm
   =========================================================================== */

/* 1. Heroet slutade högt och lämnade ett tomt band före referensraden.
      Dra ihop botten och låt bilden fylla kolumnhöjden bättre. */
.hz-hero { padding-bottom: clamp(24px, 3vw, 44px) !important; }
.hz-hero__grid { align-items: center; }
.hz-hero__ratings { margin-top: 18px; }
.hz-hero__logos { margin-top: 10px; }
.hz-hero__trust { margin-top: 10px; padding-top: 12px; border-top: 1px solid rgba(16,37,41,.08); }
@media (min-width: 992px){
    .hz-hero__media .frame { max-width: 520px; margin-left: auto; }
}

/* 2. "Se alla tjänster" hängde löst mellan bokningskortet och betygen.
      Gör den till en diskret textlänk i kortets underkant i stället. */
.hz-hero__actions { margin-top: 10px; }
.hz-hero__actions .nj-btn--ghost {
    height: auto; padding: 6px 0; border: 0; background: none;
    font-size: 14.5px; font-weight: 600; color: var(--nj-teal-strong,#2f6f68);
    text-decoration: underline; text-underline-offset: 4px;
    text-decoration-color: rgba(47,111,104,.35);
}
.hz-hero__actions .nj-btn--ghost:hover { text-decoration-color: currentColor; transform: none; box-shadow: none; }

/* 3. Trust-loggorna hade olika optisk höjd. Normalisera och lägg dem på
      en gemensam baslinje, avtonade tills man tittar på dem. */
.hz-hero__logos { gap: 10px 22px; align-items: center; }
.hz-hero__logos img {
    height: 24px; width: auto; max-width: 104px; object-fit: contain;
    filter: grayscale(1); opacity: .62;
    transition: filter var(--nj-ease), opacity var(--nj-ease);
}
.hz-hero__logos:hover img, .hz-hero__logos img:hover { filter: none; opacity: 1; }

/* 5. Referensraden: mjukare kanter så loggorna inte ser avklippta ut. */
.hz-marquee {
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 14%, #000 86%, transparent 100%);
            mask-image: linear-gradient(90deg, transparent 0, #000 14%, #000 86%, transparent 100%);
}
.hz-marquee__item img { filter: grayscale(1); opacity: .55; }
.hz-marquee__item img:hover { filter: none; opacity: 1; }

/* 6. Regionsektionen var 28 % av hela sidan. Visa sex regioner, resten
      bakom en knapp — utan att tappa en enda intern länk för sökmotorer. */
.hz-hubgrid.is-collapsed .hz-hubcol:nth-child(n+7) { display: none; }
.hz-hubs__more { display: block; margin: 26px auto 0; }

/* 7. Sektionsrytm: diskret fade-up. Klassen sätts av JS, så utan JS
      syns allt direkt — sidan kan aldrig bli tom. */
.nj-anim { opacity: 0; transform: translateY(16px); }
.nj-anim.is-in { opacity: 1; transform: none;
    transition: opacity .55s cubic-bezier(.2,.7,.2,1), transform .55s cubic-bezier(.2,.7,.2,1); }
@media (prefers-reduced-motion: reduce){
    .nj-anim { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* Heroets två kolumner var olika höga: texten 569 px, bilden 368 px. Det gav
   ~100 px död yta över och under bilden. Låt bilden fylla kolumnen i stället. */
@media (min-width: 992px){
    .hz-hero__media .frame { aspect-ratio: 1 / 1 !important; max-width: 560px; }
    .hz-hero__media .ring  { inset: -14px; }
}
/* och stryp luckan ner till referensraden */
.hz-refs { padding-top: clamp(14px, 1.8vw, 22px); }

/* ===========================================================================
   17. DÖDSBO-SIDORNA — 242 sidor på samma mall, så varje fix slår brett
   =========================================================================== */

/* Stegkorten hade fast höjd och klippte texten mitt i en mening. */
.dodsbo-page .card, .dodsbo-page .step-card, body.service-dodsbo .card {
    height: auto !important; min-height: 0 !important; overflow: visible !important;
}
.dodsbo-page .card-body, body.service-dodsbo .card-body {
    height: auto !important; max-height: none !important; overflow: visible !important;
}
.dodsbo-page .card p, body.service-dodsbo .card p {
    display: block !important; -webkit-line-clamp: none !important; overflow: visible !important;
}

/* Trust-loggorna var enorma jämfört med startsidan. Samma dämpade rad här. */
.dodsbo-page .trust-logos img, body.service-dodsbo .rating-images img {
    height: 30px !important; width: auto !important; object-fit: contain;
    filter: grayscale(1); opacity: .65; transition: filter .2s ease, opacity .2s ease;
}
.dodsbo-page .trust-logos img:hover, body.service-dodsbo .rating-images img:hover {
    filter: none; opacity: 1;
}

/* Offertfältet var platt och grått. Ge det samma system som startsidans kort. */
.dodsbo-page .form-bar, body.service-dodsbo .form-bar {
    background: #fff !important; border: 1px solid var(--nj-border,#e4e9ea);
    border-radius: 18px !important; box-shadow: var(--nj-shadow-md, 0 18px 40px rgba(16,37,41,.10));
    padding: 10px !important; overflow: hidden;
}
.dodsbo-page .form-bar input, body.service-dodsbo .form-bar input {
    height: 50px; border: 1px solid var(--nj-border,#e4e9ea) !important; border-radius: 12px !important;
    background: #fff !important; padding: 0 14px !important; font-size: 15px;
    transition: border-color .18s ease, box-shadow .18s ease;
}
.dodsbo-page .form-bar input:focus, body.service-dodsbo .form-bar input:focus {
    border-color: var(--nj-teal-strong,#2f6f68) !important;
    box-shadow: 0 0 0 3px var(--nj-teal-ring, rgba(47,111,104,.16)) !important; outline: none;
}
.dodsbo-page .form-bar button, .dodsbo-page .form-bar .btn,
body.service-dodsbo .form-bar button, body.service-dodsbo .form-bar .btn {
    border-radius: 12px !important; height: 50px; font-weight: 700;
}

/* Rubriken bär nu ortsnamnet — ge den luft och rätt vikt. */
.dodsbo-page h1.main-heading, body.service-dodsbo h1.main-heading {
    font-size: clamp(30px, 4vw, 46px); line-height: 1.12; margin-bottom: 14px;
}
.dodsbo-page h1.main-heading .d-block:last-child,
body.service-dodsbo h1.main-heading .d-block:last-child {
    font-size: clamp(15px, 1.6vw, 19px); font-weight: 500; color: var(--nj-ink-soft); margin-top: 8px;
}


/* ===========================================================================
   18. TJÄNSTESIDORNA — samma formspråk som startsidan (.nj-svc)
   ---------------------------------------------------------------------------
   Ren stilöverlagring på befintlig markup: inga element, fält eller bilder
   tillkommer eller försvinner. Dödsbo-mallen (redan godkänd, egen behandling
   i avsnitt 17) omfattas inte — wrappern .nj-svc sätts bara på övriga mallar.
   Referensvärden är tagna från startsidans .hz-*: H1 800/‑.02em, lead 17.5px
   i --nj-ink-soft, vitt bokningskort (radie 18, skugga 0 24px 60px), fält
   48px/radie 12, svart knapp, små gråskaliga trust-loggor.
   =========================================================================== */

/* ---- Hjälten ------------------------------------------------------------ */
.nj-svc .section-one {
    padding: clamp(26px, 4vw, 54px) 0 clamp(40px, 5vw, 70px);
    background-color: #f7fbfb;   /* startsidans hero-ton, samma bildlager kvar */
}
/* Hjälten ärvde en skärmhög höjd (h-100-kedjan → 100vh) som på mallar utan
   hero-bild gav ett stort tomt band. Låt den bära sitt innehåll som startsidan. */
.nj-svc .section-one,
.nj-svc .section-one > .container-fluid,
.nj-svc .section-one > .container-fluid > .container,
.nj-svc .section-one .container > .row {
    height: auto !important;
    min-height: 0 !important;
}
.nj-svc .section-one .note { margin-bottom: 6px; }

.nj-svc h1.main-heading {
    font-weight: 800; line-height: 1.08; letter-spacing: -.02em; margin: 0 0 14px;
}
.nj-svc h1.main-heading .sliderText {
    font-size: clamp(34px, 4.4vw, 52px); font-weight: 800; line-height: 1.06;
}
/* underrubriken (metas) blir en lead — samma ton som startsidans ingress */
.nj-svc h1.main-heading .d-block:last-child {
    font-size: clamp(15.5px, 1.7vw, 18px); font-weight: 400; line-height: 1.6;
    color: var(--nj-ink-soft, #3f5257); margin-top: 10px; max-width: 560px;
}

/* bokningsfältet: samma kort som startsidan */
.nj-svc .form-bar {
    background: #fff !important;
    border: 1px solid #e6edee;
    border-radius: 18px !important;
    box-shadow: 0 24px 60px rgba(16, 37, 41, .12);
    padding: 14px !important;
    margin-top: 22px !important;
    overflow: hidden;
}
.nj-svc .form-bar > .row {
    --bs-gutter-x: 12px; --bs-gutter-y: 12px;
    align-items: flex-end !important;
}
.nj-svc .form-bar .form-input { height: auto !important; padding: 0; border: 0; }
.nj-svc .form-bar label.form-label {
    font-size: 12.5px; font-weight: 700; line-height: 1.3;
    color: var(--nj-ink, #102529); margin: 0 0 6px;
}
.nj-svc .form-bar input.form-control,
.nj-svc .form-bar select.form-select,
.nj-svc .form-bar select.form-control {
    height: 48px !important;
    border: 1px solid #d6dde0 !important;
    border-radius: 12px !important;
    background: #fff !important;
    padding: 0 14px !important;
    font-size: 15px; color: var(--nj-ink, #102529);
    box-shadow: none !important; width: 100%;
    transition: border-color .18s ease, box-shadow .18s ease;
}
.nj-svc .form-bar input.form-control::placeholder { color: #9aa7ab; }
.nj-svc .form-bar input.form-control:focus,
.nj-svc .form-bar select:focus {
    border-color: var(--nj-teal-strong, #2f6f68) !important;
    box-shadow: 0 0 0 3px var(--nj-teal-ring, rgba(47,111,104,.16)) !important;
    outline: none;
}
/* knappen: svart, lika hög som fälten, radie 12 (samma som dödsbo-sidorna) */
.nj-svc .form-bar button[type="submit"],
.nj-svc .form-bar .btn-dark {
    height: auto !important; min-height: 48px;
    padding: 12px 16px !important;
    border-radius: 12px !important;
    background: #000 !important; border-color: #000 !important; color: #fff;
    font-size: 14.5px; font-weight: 700; line-height: 1.15; white-space: normal;
    transition: background .18s ease, transform .18s ease;
}
.nj-svc .form-bar button[type="submit"]:hover,
.nj-svc .form-bar .btn-dark:hover { background: #1d2b2e !important; border-color: #1d2b2e !important; }

/* trygghets-badgarna: samma rad som startsidans trust-rad */
.nj-svc .listing-logo { margin-top: 22px !important; }
.nj-svc .listing-logo .listrow { row-gap: 10px; }
.nj-svc .listing-logo .box { display: flex; align-items: center; gap: 8px; }
.nj-svc .listing-logo .box img { height: 20px !important; width: auto; }
.nj-svc .listing-logo .box span {
    font-size: 14px; font-weight: 600; color: var(--nj-ink, #102529); margin-left: 0;
}

/* betygsloggorna: små och dämpade som på startsidan, färg vid hover */
.nj-svc .rating-platform { margin-top: 20px !important; }
.nj-svc .rating-platform .box img {
    height: 32px !important; width: auto !important; max-width: 100%; object-fit: contain;
    filter: grayscale(1); opacity: .72;
    transition: filter .2s ease, opacity .2s ease;
}
.nj-svc .rating-platform .box:hover img { filter: none; opacity: 1; }
.nj-svc .rating-platform .rating-stars { font-size: 11px; line-height: 1; color: #FFB800; }
.nj-svc .rating-platform .rating-stars.pt-2 { padding-top: 4px !important; }
.nj-svc .rating-platform .rating-text {
    font-size: 12px !important; font-weight: 600; line-height: 1.3;
    color: var(--nj-ink-soft, #3f5257); padding-top: 4px !important;
}

/* mallar utan hero-bild (storstädning-familjen, återvinning): låt innehållet
   andas i stället för att lämna halva bredden tom */
@media (min-width: 992px) {
    .nj-svc--house-cleaning .section-one .row > .col-lg-6:first-child,
    .nj-svc--office-cleaning .section-one .row > .col-lg-6:first-child,
    .nj-svc--Kontorsstädning .section-one .row > .col-lg-6:first-child,
    .nj-svc--veckostädning .section-one .row > .col-lg-6:first-child,
    .nj-svc--ater .section-one .row > .col-lg-6:first-child {
        flex: 0 0 60%; max-width: 60%;
    }
}

/* ---- Sektionsrytm & typografi (samma skala som .hz-h2 / .hz-sub) ------- */
.nj-svc .heading {
    font-size: clamp(24px, 2.8vw, 36px); font-weight: 800; line-height: 1.18;
    letter-spacing: -.01em; color: var(--nj-ink, #102529);
}
.nj-svc .paragraph {
    font-size: 16.5px; font-weight: 400; line-height: 1.65;
    color: var(--nj-ink-soft, #3f5257); margin-top: 18px;
}
.nj-svc .section-three { padding: clamp(48px, 7vw, 92px) 0; }
.nj-svc .logos-company { margin-top: clamp(36px, 5vw, 64px) !important; }
.nj-svc .logos-company .heading {
    font-size: clamp(22px, 2.4vw, 30px); font-weight: 800; letter-spacing: -.01em;
    color: var(--nj-ink, #102529);
}
.nj-svc .logos-company img {
    filter: grayscale(1); opacity: .65; transition: filter .2s ease, opacity .2s ease;
}
.nj-svc .logos-company img:hover { filter: none; opacity: 1; }

/* steg- och innehållskort: startsidans kortspråk (radie 18, hårfin ram, mjuk skugga) */
.nj-svc .card {
    border: 1px solid #ebeff0 !important;
    border-radius: 18px !important;
    box-shadow: 0 4px 16px rgba(16, 37, 41, .06);
    height: auto !important; min-height: 0 !important; overflow: hidden;
    transition: transform .2s ease, box-shadow .2s ease;
}
.nj-svc .card:hover { transform: translateY(-3px); box-shadow: 0 10px 30px rgba(16, 37, 41, .10); }
.nj-svc .officecontainer .card,
.nj-svc .officecontainer .card:hover {
    /* stegen står utan kortram på startsidan — ikon, rubrik, text */
    border: 0 !important; box-shadow: none; transform: none; background: transparent;
}
.nj-svc .card-title { font-size: 18px; font-weight: 700; color: var(--nj-ink, #102529); }
.nj-svc .card-text  { font-size: 15px; line-height: 1.6; color: var(--nj-ink-soft, #3f5257); }
.nj-svc .card-body  { height: auto !important; max-height: none !important; overflow: visible !important; }
.nj-svc .card p     { display: block !important; -webkit-line-clamp: none !important; overflow: visible !important; }

/* ---- Vanliga frågor: samma kort-dragspel som startsidan ------------------ */
.nj-svc .accordion-item {
    background: transparent !important; border: 0 !important;
    padding: 0 0 12px !important; border-radius: 0 !important;
}
.nj-svc .accordion-button {
    background: #fff !important;
    border: 1px solid #e6edee !important;
    border-radius: 14px !important;
    box-shadow: 0 4px 16px rgba(16, 37, 41, .06) !important;
    font-size: 15.5px !important; font-weight: 700; line-height: 1.35;
    color: var(--nj-ink, #102529) !important;
    padding: 18px 20px !important;
}
.nj-svc .accordion-button:not(.collapsed) {
    border-color: #cfe3df !important; color: var(--nj-teal-strong, #2f6f68) !important;
}
.nj-svc .accordion-button:focus { box-shadow: 0 0 0 3px var(--nj-teal-ring, rgba(47,111,104,.16)) !important; }
.nj-svc .accordion-body {
    font-size: 15.5px; line-height: 1.65; color: var(--nj-ink-soft, #3f5257);
    padding: 16px 20px 6px !important;
}

/* ---- Google-recensionerna: startsidans recensionskort ------------------- */
.nj-svc .coloredrow { border-bottom: 1px solid #e6edee !important; margin-top: 16px; }
.nj-svc .card.reviewcard,
.nj-svc .owl-carousel .item .card.reviewcard {
    height: auto !important; min-height: 0 !important;
    border: 1px solid #ebeff0 !important; border-radius: 18px !important;
    box-shadow: 0 4px 16px rgba(16, 37, 41, .06) !important;
}
.nj-svc .reviewcard h5 { font-size: 16px; font-weight: 700; color: var(--nj-ink, #102529); margin-bottom: 2px; }
.nj-svc .reviewcard .font-weight-light { font-size: 13px; color: var(--nj-ink-soft, #3f5257); }
.nj-svc .reviewcard .text p { font-size: 15px; line-height: 1.6; color: var(--nj-ink-soft, #3f5257); }
.nj-svc .avatarsection i { color: #FFB800; }

/* ---- Knappar utanför bokningsfältet: svart pill som startsidans CTA ------ */
.nj-svc .btn-dark:not(.form-bar .btn-dark) { border-radius: 300px; font-weight: 600; }

/* ---- Mobil ---------------------------------------------------------------- */
@media (max-width: 575.98px) {
    .nj-svc .section-one { padding-top: 18px; }
    .nj-svc .section-one .note { margin-bottom: 10px; }
    .nj-svc h1.main-heading .sliderText { font-size: 30px; }
    .nj-svc h1.main-heading .d-block:last-child { font-size: 15px; }
    /* fälten staplas som på startsidan i stället för tre smala kolumner */
    .nj-svc .form-bar { padding: 12px !important; }
    .nj-svc .form-bar > .row > [class*="col-"] { flex: 0 0 100% !important; max-width: 100% !important; }
    .nj-svc .form-bar button[type="submit"],
    .nj-svc .form-bar .btn-dark { width: 100%; min-height: 50px; font-size: 15px; }
    .nj-svc .listing-logo .listrow > [class*="col-"] { flex: 0 0 auto; max-width: none; width: auto; }
    .nj-svc .listing-logo .listrow { display: flex; flex-wrap: wrap; gap: 8px 18px; }
    .nj-svc .rating-platform .box img { height: 26px !important; }
    .nj-svc .rating-platform .rating-text { font-size: 11px !important; }
    .nj-svc .heading { font-size: 24px; }
}


/* ===========================================================================
   19. NYA TJÄNSTEPELARNA (.nj-svc--nj-service) — startsidans formspråk
   ---------------------------------------------------------------------------
   Mallen front/service/templates/nj-service.blade.php levererar ren, semantisk
   markup utan egna stilar. Här får den startsidans språk: ljusblå hjältebandet
   (--hz-blue), vita kort med hårfin ram och mjuk skugga, .hz-h2-skalan, svart
   CTA i pillerform och det mörka avslutet. Inga nya färger, inga nya typsnitt
   — allt hämtas ur de tokens som redan står i :root.
   =========================================================================== */

/* ---- Hjälten ------------------------------------------------------------ */
.nj-svc--nj-service .nj-svc-hero {
    background: linear-gradient(180deg, var(--hz-blue, #e9f4fb) 0%, #f3fafd 52%, #fff 100%);
    padding: clamp(18px, 2.4vw, 32px) 0 clamp(44px, 5vw, 76px);
}
.nj-svc--nj-service .nj-svc-hero .row { align-items: flex-start; }

.nj-crumbs {
    display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
    font-size: 13.5px; line-height: 1.4; color: var(--nj-ink-soft, #3f5257);
    margin: 0 0 clamp(14px, 2vw, 22px);
}
.nj-crumbs a { color: var(--nj-ink-soft, #3f5257); text-decoration: none; }
.nj-crumbs a:hover { color: var(--nj-teal-strong, #2f6f68); text-decoration: underline; }
.nj-crumbs [aria-hidden="true"] { color: #9aa7ab; }
.nj-crumbs [aria-current="page"] { color: var(--nj-ink, #102529); font-weight: 600; }

.nj-svc-hero__h1 {
    font-size: clamp(32px, 4.2vw, 50px); font-weight: 800; line-height: 1.06;
    letter-spacing: -.02em; color: var(--nj-ink, #102529); margin: 0 0 14px;
}
.nj-svc-hero__lead {
    font-size: clamp(15.5px, 1.7vw, 17.5px); line-height: 1.65; font-weight: 400;
    color: var(--nj-ink-soft, #3f5257); margin: 0 0 24px; max-width: 60ch;
}

.nj-svc-hero__actions {
    display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 22px;
}
/* --dark/--light/--outline fanns inte i knappsystemet; de definieras här och
   följer samma piller, höjd och hover som .nj-btn i avsnitt 3. */
.nj-btn--dark { background: var(--nj-black, #000); border-color: var(--nj-black, #000); color: #fff; }
.nj-btn--dark:hover { background: #1d2b2e; border-color: #1d2b2e; }
.nj-btn--light { background: #fff; border-color: #fff; color: var(--nj-ink, #102529); }
.nj-btn--light:hover { background: #f2f7f6; border-color: #f2f7f6; color: var(--nj-ink, #102529); }
.nj-btn--outline { background: transparent; border-color: rgba(255,255,255,.55); color: #fff; }
.nj-btn--outline:hover { background: rgba(255,255,255,.12); border-color: #fff; color: #fff; }
.nj-btn--block { width: 100%; }

/* USP-raden: chips med bock i stället för punktlista */
.nj-svc-usp {
    list-style: none; padding: 0; margin: 0;
    display: flex; flex-wrap: wrap; gap: 10px 18px;
}
.nj-svc-usp li {
    position: relative; padding-left: 26px;
    font-size: 14.5px; font-weight: 600; line-height: 1.4; color: var(--nj-ink, #102529);
}
.nj-svc-usp li::before {
    content: ""; position: absolute; left: 0; top: 50%; width: 18px; height: 18px;
    transform: translateY(-50%); border-radius: 50%; background: #e6f2ee;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%232f6f68' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: center; background-size: 12px 12px;
}

/* ---- Offertkortet ------------------------------------------------------- */
.nj-quote {
    background: #fff; border: 1px solid #e6edee; border-radius: var(--nj-radius-lg, 20px);
    box-shadow: 0 24px 60px rgba(16, 37, 41, .12);
    padding: clamp(20px, 2.4vw, 28px);
}
.nj-quote__title {
    font-size: clamp(20px, 2.1vw, 24px); font-weight: 800; letter-spacing: -.01em;
    line-height: 1.2; color: var(--nj-ink, #102529); margin: 0 0 6px;
}
.nj-quote__sub { font-size: 14.5px; line-height: 1.5; color: var(--nj-ink-soft, #3f5257); margin: 0 0 18px; }
/* Fälten ärver sajtens formulärsystem (.nj-fieldgroup/.nj-label/.nj-field/
   .nj-textarea i avsnitt 6) — här sätts bara rytmen i kortet. */
.nj-quote__form { display: flex; flex-direction: column; gap: 14px; }
.nj-quote .nj-textarea { min-height: 96px; padding: 12px 16px; line-height: 1.55; resize: vertical; }
.nj-quote .nj-btn { margin-top: 4px; }
.nj-quote__legal { font-size: 12.5px; line-height: 1.5; color: var(--nj-ink-soft, #3f5257); margin: 2px 0 0; }
.nj-quote__legal a { color: var(--nj-teal-strong, #2f6f68); text-decoration: underline; }

/* ---- Faktarutan --------------------------------------------------------- */
.nj-facts { padding: clamp(30px, 4vw, 48px) 0 0; }
.nj-facts__grid {
    display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px;
}
.nj-facts__item {
    display: flex; flex-direction: column; gap: 4px;
    background: #fff; border: 1px solid #ebeff0; border-radius: 18px;
    box-shadow: var(--nj-shadow-sm, 0 4px 16px rgba(16,37,41,.06));
    padding: 18px 20px;
}
.nj-facts__k {
    font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
    color: var(--nj-teal-strong, #2f6f68);
}
.nj-facts__v { font-size: 15.5px; font-weight: 600; line-height: 1.4; color: var(--nj-ink, #102529); }

/* ---- Rubriknivå (samma skala som startsidans .hz-h2) -------------------- */
.nj-svc--nj-service .nj-h2 {
    font-size: clamp(26px, 3.4vw, 40px); font-weight: 800; line-height: 1.14;
    letter-spacing: -.01em; color: var(--nj-ink, #102529);
    margin: 0 0 clamp(24px, 3vw, 38px);
}

/* ---- Så går det till ---------------------------------------------------- */
.nj-steps { padding: clamp(44px, 6vw, 80px) 0; }
.nj-steps__list {
    list-style: none;                 /* annars dubbelnumrering: "1. 1" */
    padding: 0; margin: 0;
    display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 20px;
}
.nj-steps__item {
    background: #fff; border: 1px solid #ebeff0; border-radius: 18px;
    box-shadow: var(--nj-shadow-sm, 0 4px 16px rgba(16,37,41,.06));
    padding: 24px 22px; transition: transform var(--nj-ease, .2s ease), box-shadow var(--nj-ease, .2s ease);
}
.nj-steps__item:hover { transform: translateY(-4px); box-shadow: var(--nj-shadow-md, 0 10px 30px rgba(16,37,41,.10)); }
.nj-steps__num {
    display: grid; place-items: center; width: 42px; height: 42px; border-radius: 14px;
    background: linear-gradient(135deg, #eaf5f2, #f6f1dd);
    font-size: 17px; font-weight: 800; color: var(--nj-teal-strong, #2f6f68);
    margin-bottom: 14px;
}
.nj-steps__title { font-size: 17.5px; font-weight: 700; line-height: 1.3; color: var(--nj-ink, #102529); margin: 0 0 8px; }
.nj-steps__text  { font-size: 15px; line-height: 1.65; color: var(--nj-ink-soft, #3f5257); margin: 0; }

/* ---- Relaterade tjänster ------------------------------------------------ */
.nj-related { padding: 0 0 clamp(44px, 6vw, 80px); }
.nj-related__grid {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 14px;
}
.nj-related__card {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    background: #fff; border: 1px solid #ebeff0; border-radius: 16px;
    box-shadow: var(--nj-shadow-sm, 0 4px 16px rgba(16,37,41,.06));
    padding: 16px 18px; text-decoration: none;
    font-size: 15.5px; font-weight: 600; line-height: 1.35; color: var(--nj-ink, #102529);
    transition: transform var(--nj-ease, .2s ease), box-shadow var(--nj-ease, .2s ease), border-color var(--nj-ease, .2s ease);
}
.nj-related__card:hover {
    transform: translateY(-3px); border-color: #d9e6e3; color: var(--nj-ink, #102529);
    box-shadow: var(--nj-shadow-md, 0 10px 30px rgba(16,37,41,.10));
}
.nj-related__card i { color: var(--nj-teal-strong, #2f6f68); flex: 0 0 auto; }

/* ---- Avslutande CTA: samma mörka avslut som startsidan ------------------ */
.nj-endcta { padding: 0 0 clamp(48px, 6vw, 84px); }
.nj-endcta__box {
    background: var(--nj-ink, #102529); border-radius: clamp(20px, 2.4vw, 28px);
    padding: clamp(30px, 4.4vw, 58px) clamp(22px, 4vw, 56px);
    color: #fff; text-align: center;
}
.nj-endcta__box h2 {
    font-size: clamp(23px, 3vw, 34px); font-weight: 800; line-height: 1.18;
    letter-spacing: -.01em; color: #fff; margin: 0 0 12px;
}
.nj-endcta__box p {
    font-size: clamp(15px, 1.6vw, 17px); line-height: 1.6; margin: 0 auto 26px;
    max-width: 56ch; color: rgba(255,255,255,.82);
}
.nj-endcta__actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }

/* ---- Lokala myndighetslänkar (visas bara på ortssidor) ------------------ */
.nj-local { padding: 0 0 clamp(44px, 6vw, 80px); }
.nj-local__lead {
    font-size: clamp(15px, 1.6vw, 16.5px); line-height: 1.65;
    color: var(--nj-ink-soft, #3f5257); margin: -18px 0 26px; max-width: 68ch;
}
.nj-local__links {
    list-style: none; padding: 0; margin: 0;
    display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px;
}
.nj-local__links a {
    display: flex; align-items: center; gap: 10px;
    background: #fff; border: 1px solid #ebeff0; border-radius: 16px;
    box-shadow: var(--nj-shadow-sm, 0 4px 16px rgba(16,37,41,.06));
    padding: 16px 18px; text-decoration: none; color: var(--nj-ink, #102529);
    transition: transform var(--nj-ease, .2s ease), box-shadow var(--nj-ease, .2s ease), border-color var(--nj-ease, .2s ease);
}
.nj-local__links a:hover {
    transform: translateY(-3px); border-color: #d9e6e3;
    box-shadow: var(--nj-shadow-md, 0 10px 30px rgba(16,37,41,.10));
}
.nj-local__title { font-size: 15.5px; font-weight: 600; line-height: 1.35; }
.nj-local__host  { font-size: 12.5px; color: var(--nj-ink-soft, #3f5257); margin-left: auto; }
.nj-local__links i { color: var(--nj-teal-strong, #2f6f68); flex: 0 0 auto; }

/* ---- Mobil -------------------------------------------------------------- */
@media (max-width: 991.98px) {
    .nj-svc--nj-service .nj-svc-hero .col-lg-5 { margin-top: 30px; }
    .nj-facts__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
    .nj-svc-hero__h1 { font-size: 29px; }
    .nj-svc-hero__actions .nj-btn { width: 100%; }
    .nj-facts__grid { grid-template-columns: 1fr; }
    .nj-steps__list, .nj-related__grid { grid-template-columns: 1fr; }
    .nj-endcta__actions .nj-btn { width: 100%; }
}


/* ===========================================================================
   20. ORTS- OCH REGIONHUBBARNA (.nj-hub) — startsidans formspråk
   ---------------------------------------------------------------------------
   front/city/single.blade.php låg på en 35/65-flex: den långa artikeln pressad
   i en smal spalt till vänster och tjänstekorten till höger, vilket lämnade
   två tredjedelar av sidan tom när orten bara har någon enstaka tjänst.
   Här vänds ordningen — tjänsterna först i ett riktigt rutnät, därefter texten
   i en läsbar spalt — och korten får samma språk som startsidans .hz-scard.
   Ren stilöverlagring: ingen markup ändras, inga fält tillkommer eller faller.
   =========================================================================== */

/* ---- Hjältebandet ------------------------------------------------------- */
.nj-hub .hero-section.for-city {
    height: auto !important;
    margin-top: 0 !important;
    padding: clamp(34px, 5vw, 66px) 0 clamp(26px, 3.6vw, 44px);
    background: linear-gradient(180deg, var(--hz-blue, #e9f4fb) 0%, #f3fafd 58%, #fff 100%);
}
.nj-hub .hero-section.for-city .hero-content {
    position: static !important; transform: none !important; top: auto !important;
}
.nj-hub .hero-section .hero-content .hero-title {
    font-size: clamp(32px, 4.4vw, 52px) !important;
    line-height: 1.06 !important; font-weight: 800 !important;
    letter-spacing: -.02em; color: var(--nj-ink, #102529) !important;
    margin-bottom: 14px !important;
}
.nj-hub .hero-section .navigation .breadcrumb {
    background: transparent; padding: 0; margin: 0;
    font-size: 13.5px; color: var(--nj-ink-soft, #3f5257);
}
.nj-hub .hero-section .breadcrumb-item a { color: var(--nj-ink-soft, #3f5257); text-decoration: none; }
.nj-hub .hero-section .breadcrumb-item a:hover { color: var(--nj-teal-strong, #2f6f68); text-decoration: underline; }
.nj-hub .hero-section .breadcrumb-item + .breadcrumb-item::before { color: #9aa7ab; }

/* ---- Ordningen: tjänsterna först, texten sedan -------------------------- */
.nj-hub .city-wrap {
    display: flex; flex-direction: column;
    gap: clamp(30px, 4vw, 52px);
    padding: clamp(12px, 2vw, 26px) 0 clamp(44px, 6vw, 78px);
}
.nj-hub .city-wrap .services {
    order: 1; width: 100% !important; padding-left: 0 !important; padding-top: 0 !important;
}
.nj-hub .city-wrap .content {
    order: 2; width: 100% !important; max-width: 78ch;
    border: 0 !important; border-radius: 0 !important; padding: 0 !important;
}

/* Tomma platshållar-diven sist i mallen ska inte lämna luft efter sig. */
.nj-hub .container > .row > .content:empty,
.nj-hub .container > .row > .services:empty { display: none; }

/* ---- Tjänstekorten: samma språk som startsidans .hz-scard --------------- */
.nj-hub .city-wrap .services .single-service {
    display: flex !important; flex-direction: column; align-items: flex-start; gap: 10px;
    height: 100%; margin-top: 0 !important;
    background: #fff; border: 1px solid #ebeff0 !important;
    border-radius: 18px !important; padding: 20px !important;
    box-shadow: var(--nj-shadow-sm, 0 4px 16px rgba(16,37,41,.06)) !important;
    text-decoration: none; overflow: hidden;
    transition: transform var(--nj-ease, .2s ease), box-shadow var(--nj-ease, .2s ease), border-color var(--nj-ease, .2s ease);
}
/* Den gamla hovern målade kortet lila (#5027C3) — inte en varumärkesfärg. */
.nj-hub .city-wrap .services .single-service:hover {
    background-color: #fff !important;
    transform: translateY(-4px);
    border-color: #d9e6e3 !important;
    box-shadow: var(--nj-shadow-md, 0 10px 30px rgba(16,37,41,.10)) !important;
}
.nj-hub .city-wrap .services .single-service .wrap { gap: 14px; }
.nj-hub .city-wrap .services .icon {
    height: 52px !important; width: 52px !important; min-width: 52px !important; min-height: 52px !important;
    border-radius: 15px; background-size: cover; background-position: center;
    background-color: #eaf5f2;
}
.nj-hub .city-wrap .services .title {
    font-size: 17px !important; font-weight: 700 !important;
    line-height: 1.3; color: var(--nj-ink, #102529) !important;
}
.nj-hub .city-wrap .services .single-service:hover .title { color: var(--nj-teal-strong, #2f6f68) !important; }
.nj-hub .city-wrap .services .excerpt {
    display: block; font-size: 14.5px; line-height: 1.6;
    color: var(--nj-ink-soft, #3f5257) !important;
}
.nj-hub .city-wrap .services .single-service:hover .excerpt { color: var(--nj-ink-soft, #3f5257) !important; }

/* ---- Artikeltexten: läsbar spalt, startsidans typografi ----------------- */
.nj-hub .city-wrap .content h1 {
    font-size: clamp(26px, 3.2vw, 38px); font-weight: 800; line-height: 1.16;
    letter-spacing: -.01em; color: var(--nj-ink, #102529); margin: 0 0 18px;
}
.nj-hub .city-wrap .content h2,
.nj-hub .city-wrap .content h3 {
    font-size: clamp(19px, 2.1vw, 24px); font-weight: 700; line-height: 1.28;
    color: var(--nj-ink, #102529); margin: clamp(28px, 3.4vw, 40px) 0 12px;
}
.nj-hub .city-wrap .content p,
.nj-hub .city-wrap .content li {
    font-size: 16.5px; line-height: 1.72; color: var(--nj-ink-soft, #3f5257);
}
.nj-hub .city-wrap .content p { margin: 0 0 16px; }
.nj-hub .city-wrap .content ul,
.nj-hub .city-wrap .content ol { margin: 0 0 18px; padding-left: 22px; }
.nj-hub .city-wrap .content li { margin-bottom: 7px; }
.nj-hub .city-wrap .content a { color: var(--nj-teal-strong, #2f6f68); text-decoration: underline; }
.nj-hub .city-wrap .content table { width: 100%; border-collapse: collapse; margin: 0 0 20px; font-size: 15.5px; }
.nj-hub .city-wrap .content th,
.nj-hub .city-wrap .content td { border: 1px solid var(--nj-border, #e7ecee); padding: 10px 12px; text-align: left; }
.nj-hub .city-wrap .content th { background: var(--nj-surface-2, #f8f8f8); color: var(--nj-ink, #102529); font-weight: 700; }

/* ---- Mobil -------------------------------------------------------------- */
@media (max-width: 575.98px) {
    .nj-hub .hero-section .hero-content .hero-title { font-size: 29px !important; }
    .nj-hub .city-wrap .services .single-service { padding: 16px !important; border-radius: 16px !important; }
    .nj-hub .city-wrap .content p,
    .nj-hub .city-wrap .content li { font-size: 15.5px; }
}

/* ---- Sidhuvudet på hubbarna --------------------------------------------
   Den här layoutens header är en äldre Bootstrap-4-navbar med mega-meny, en
   annan markup än layouts/layout.blade.php. Vi matchar inte om den — vi ger
   den samma färger, vikt och svarta CTA som resten av sajten.               */
.nj-hub .header.count-height {
    background: #fff; border-bottom: 1px solid var(--nj-border, #e7ecee);
    position: sticky; top: 0; z-index: 1030;
}
.nj-hub .header .navbar-nav > .nav-item > .nav-link {
    color: var(--nj-ink, #102529) !important; font-weight: 600; font-size: 15.5px;
    transition: color var(--nj-ease, .2s ease);
}
.nj-hub .header .navbar-nav > .nav-item > .nav-link:hover,
.nj-hub .header .navbar-nav > .nav-item.show > .nav-link {
    color: var(--nj-teal-strong, #2f6f68) !important;
}
/* Sista posten är "Kontakta oss" — samma svarta piller som på övriga sidor. */
.nj-hub .header .navbar-nav > .nav-item:last-child > .nav-link {
    background: var(--nj-black, #000); color: #fff !important;
    border-radius: var(--nj-radius-pill, 300px);
    padding: 11px 26px !important; margin-left: 14px; line-height: 1;
}
.nj-hub .header .navbar-nav > .nav-item:last-child > .nav-link:hover {
    background: #1d2b2e; color: #fff !important;
}
.nj-hub .header .dropdown-menu {
    border: 1px solid var(--nj-border, #e7ecee); border-radius: var(--nj-radius, 15px);
    box-shadow: var(--nj-shadow-md, 0 10px 30px rgba(16,37,41,.10)); padding: 10px;
}

/* Ikonrutan renderas även när tjänstetypen saknar ikon (background-image: url(''))
   — då blir det en tom färgplatta. Dölj den i stället; kortet blir rent text. */
.nj-hub .city-wrap .services .icon[style*="url('')"] { display: none !important; }

/* Regionhubbar utan egna tjänsterader ska inte lämna ett tomt band där korten
   skulle ha stått. :has() stöds i alla nuvarande webbläsare; faller det bort
   syns bara den lucka som fanns förut, inget trasigt. */
.nj-hub .city-wrap .services:not(:has(.single-service)) { display: none; }

/* Flera mallar bygger bild-URL:er som asset('design_1/assets/img/') . $fält.
   Är fältet tomt blir src:en bara mappen — en trasig bild. Dölj dem; en tom
   ruta är bättre än en brusten ikon, och layouten har ingen reserverad plats. */
img[src$="/assets/img/"],
img[src$="/assets/img"] { display: none !important; }

/* ===========================================================================
   21. TJÄNSTEMENYN — kategorilist + panel (.nj-menu)
   ---------------------------------------------------------------------------
   Förra versionen la åtta kategorier i fyra kolumner. Med 1–19 tjänster per
   kategori blev kolumnerna olika höga, ögat läste på tvären i stället för
   nedåt, och de största kategorierna kapades vid åtta rader — Sanering dolde
   tio av nitton bakom "+10 till". Den kategori som mest behövde överblick
   visade alltså minst.

   Nu: kategorierna i en list till vänster, tjänsterna i en panel bredvid,
   snabbkontakt längst till höger. Panelen byts på hover och på tangentbords-
   fokus, helt utan JS. Ingen kategori kapas.

   Ingen ny palett: samma ink, teal, gula markering och radier som resten.
   =========================================================================== */

/* Panelen hängs i HÖGERkanten: föräldern är position:static, så en centrering
   med left:50% räknas mot ett helt annat element och skjuter ut den ur
   skärmen. Bredare nu när innehållet ligger i tre spalter. */
.servicesMenuDropdown.firstmenu {
    width: min(1180px, calc(100vw - 40px)) !important;
    max-width: none !important;
    left: auto !important; right: 0 !important;
    transform: none !important;
    padding: 0 !important;
    background: var(--nj-teal-strong, #2f6f68);
    border-radius: 20px;
    box-shadow: 0 30px 80px rgba(16, 37, 41, .28);
    overflow: hidden;
}

/* Hubblayouten (front/layouts/base.blade.php) har en egen behallare med annan
   klass och egen bredd -- dar klamdes mittspalten ihop till 191 px, alltsa for
   smalt for tva kolumner tjanstenamn. Samma matt oavsett vem som hyser menyn. */
.dropdown-menu.mega-menu {
    width: min(1180px, calc(100vw - 40px)) !important;
    max-width: none !important;
    left: auto !important; right: 0 !important;
    padding: 0 !important;
    background: var(--nj-teal-strong, #2f6f68);
    border: 0; border-radius: 20px;
    box-shadow: 0 30px 80px rgba(16, 37, 41, .28);
    overflow: hidden;
}

.nj-menu {
    position: relative;
    display: grid;
    grid-template-columns: 286px minmax(420px, 1fr) 252px;
    min-width: 0;
    align-items: stretch;
    min-height: 396px;
    background: #fff;
    margin: 4px;
    border-radius: 16px;
    overflow: hidden;
    font-family: 'Montserrat', sans-serif;
}

/* ---- Kategorilisten ------------------------------------------------------ */
.nj-menu__rail {
    display: block !important;
    grid-column: 1;
    list-style: none !important;
    margin: 0 !important;
    padding: 10px !important;
    background: #f4f8f9;
    border-right: 1px solid rgba(16, 37, 41, .08);
}
.nj-menu__item {
    display: list-item !important;
    width: auto !important;
    float: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
.nj-menu__tab {
    display: flex !important;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 12px;
    color: var(--nj-ink, #102529) !important;
    text-decoration: none !important;
    transition: background .14s ease, color .14s ease;
}
.nj-menu__icon {
    flex: 0 0 auto;
    width: 34px; height: 34px;
    display: grid; place-items: center;
    border-radius: 10px;
    background: #fff;
    box-shadow: inset 0 0 0 1px rgba(16, 37, 41, .1);
    color: var(--nj-teal-strong, #2f6f68);
    font-size: 16px;
    transition: background .14s ease, color .14s ease, box-shadow .14s ease;
}
.nj-menu__tabtext { display: flex; flex-direction: column; min-width: 0; }
/* Kategorin ska väga tyngre än sina tjänster. Förut var den 13 px mot
   tjänsternas 15 — överrubriken var alltså mindre än underrubriken. */
.nj-menu__cat {
    font-size: 15px; font-weight: 700; line-height: 1.25;
    letter-spacing: -.005em; white-space: nowrap;
    overflow: hidden; text-overflow: ellipsis;
}
.nj-menu__count { font-size: 12px; font-weight: 500; color: #6a7b7f; line-height: 1.3; }
.nj-menu__chev { margin-left: auto; font-size: 12px; color: #9aa7ab; transition: transform .14s ease, color .14s ease; }

.nj-menu__item:hover > .nj-menu__tab,
.nj-menu__item:focus-within > .nj-menu__tab {
    background: var(--nj-ink, #102529);
    color: #fff !important;
}
.nj-menu__item:hover > .nj-menu__tab .nj-menu__count,
.nj-menu__item:focus-within > .nj-menu__tab .nj-menu__count { color: rgba(255, 255, 255, .72); }
.nj-menu__item:hover > .nj-menu__tab .nj-menu__chev,
.nj-menu__item:focus-within > .nj-menu__tab .nj-menu__chev { color: var(--nj-yellow, #ffd54a); transform: translateX(2px); }
.nj-menu__item:hover > .nj-menu__tab .nj-menu__icon,
.nj-menu__item:focus-within > .nj-menu__tab .nj-menu__icon {
    background: var(--nj-yellow, #ffd54a); color: var(--nj-ink, #102529);
    box-shadow: inset 0 0 0 1px rgba(16, 37, 41, .18);
}
.nj-menu__tab:focus-visible { outline: 3px solid var(--nj-yellow, #ffd54a); outline-offset: -3px; }

/* ---- Panelen ------------------------------------------------------------- */
/* Ligger i mittspalten och byts på hover/fokus. Första kategorin visas som
   utgångsläge; så fort menyn berörs tar den hovrade kategorin över. */
.nj-menu__panel {
    position: absolute;
    left: 286px; right: 252px; top: 0; bottom: 0;
    display: none;
    padding: 22px 26px 20px;
    overflow-y: auto;
    background: #fff;
}
.nj-menu__item:first-child > .nj-menu__panel { display: block; }
.nj-menu:hover .nj-menu__item:first-child > .nj-menu__panel,
.nj-menu:focus-within .nj-menu__item:first-child > .nj-menu__panel { display: none; }
.nj-menu__item:hover > .nj-menu__panel,
.nj-menu__item:focus-within > .nj-menu__panel { display: block; }

.nj-menu__panelhead { margin-bottom: 14px; }
.nj-menu__panelcat {
    display: block;
    font-size: 19px; font-weight: 800; letter-spacing: -.015em;
    color: var(--nj-ink, #102529);
}
/* Utan den här raden går "Sanering" och "Avfall & bortforsling" inte att
   skilja åt för den som inte kan branschen. */
.nj-menu__blurb { display: block; margin-top: 3px; font-size: 13.5px; color: #6a7b7f; line-height: 1.45; }

.nj-menu__list {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2px 14px;
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
.nj-menu__list li {
    display: list-item !important;
    width: auto !important;
    float: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
.nj-menu__list a {
    display: flex !important;
    align-items: center;
    min-height: 34px;
    padding: 6px 10px 6px 18px;
    border-radius: 9px;
    font-size: 14.5px; font-weight: 500; line-height: 1.35;
    color: var(--nj-ink-soft, #3f5257) !important;
    text-decoration: none !important;
    position: relative;
    transition: background .12s ease, color .12s ease;
}
/* Liten prick i stället för punktlista — håller radhöjden jämn och gör att
   posterna läses som en lista utan att bli en bullet-vägg. */
.nj-menu__list a::before {
    content: ""; position: absolute; left: 6px; top: 50%;
    width: 4px; height: 4px; margin-top: -2px; border-radius: 50%;
    background: rgba(16, 37, 41, .22); transition: background .12s ease, transform .12s ease;
}
.nj-menu__list a:hover,
.nj-menu__list a:focus-visible {
    background: #f0f6f6; color: var(--nj-ink, #102529) !important;
}
.nj-menu__list a:hover::before { background: var(--nj-yellow, #ffd54a); transform: scale(1.6); }
.nj-menu__list a:focus-visible { outline: 2px solid var(--nj-teal-strong, #2f6f68); outline-offset: -2px; }

/* ---- Snabbkontakt -------------------------------------------------------- */
.nj-menu__aside {
    grid-column: 3;
    display: flex; flex-direction: column; align-items: flex-start; gap: 10px;
    padding: 22px 20px;
    background: var(--nj-ink, #102529);
    color: #fff;
}
.nj-menu__asidekicker {
    margin: 0; font-size: 13px; font-weight: 700; line-height: 1.35;
    color: var(--nj-yellow, #ffd54a);
}
.nj-menu__phone {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: 18px; font-weight: 800; letter-spacing: -.01em;
    color: #fff !important; text-decoration: none !important;
}
.nj-menu__phone:hover { color: var(--nj-yellow, #ffd54a) !important; }
.nj-menu__asidetext { margin: 0; font-size: 13px; line-height: 1.55; color: rgba(255, 255, 255, .74); }
.nj-menu__cta {
    display: inline-flex; align-items: center; justify-content: center;
    width: 100%; min-height: 44px; margin-top: 2px;
    padding: 10px 16px; border-radius: 999px;
    background: var(--nj-yellow, #ffd54a);
    color: var(--nj-ink, #102529) !important;
    font-size: 14px; font-weight: 700; text-decoration: none !important;
    transition: transform .14s ease, box-shadow .14s ease;
}
.nj-menu__cta:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(255, 213, 74, .3); }
.nj-menu__all {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 13px; font-weight: 600;
    color: rgba(255, 255, 255, .8) !important; text-decoration: none !important;
}
.nj-menu__all:hover { color: #fff !important; text-decoration: underline !important; }

/* ---- Mobil och surfplatta ------------------------------------------------
   Listan och panelerna staplas. Hover finns inte på pekskärm, så alla
   tjänster visas direkt under sin kategori — menyn ligger ändå i en låda som
   får vara lång. */
@media (max-width: 991.98px) {
    .servicesMenuDropdown.firstmenu,
    .dropdown-menu.mega-menu {
        width: 100% !important;
        border-radius: 14px;
        box-shadow: none;
    }
    .nj-menu { grid-template-columns: 1fr; }
    .nj-menu {
        display: block;
        min-height: 0;
        margin: 3px;
    }
    .nj-menu__rail { border-right: 0; background: transparent; padding: 4px !important; }
    .nj-menu__item + .nj-menu__item { margin-top: 6px !important; }
    .nj-menu__tab {
        background: #f4f8f9;
        border-radius: 12px 12px 0 0;
    }
    .nj-menu__chev { transform: rotate(90deg); }
    .nj-menu__item:hover > .nj-menu__tab .nj-menu__chev,
    .nj-menu__item:focus-within > .nj-menu__tab .nj-menu__chev { transform: rotate(90deg); }
    .nj-menu__panel,
    .nj-menu__item:first-child > .nj-menu__panel,
    .nj-menu:hover .nj-menu__item:first-child > .nj-menu__panel,
    .nj-menu:focus-within .nj-menu__item:first-child > .nj-menu__panel {
        display: block;
        position: static;
        padding: 10px 12px 14px;
        border: 1px solid rgba(16, 37, 41, .09);
        border-top: 0;
        border-radius: 0 0 12px 12px;
    }
    .nj-menu__panelhead { margin-bottom: 8px; }
    .nj-menu__panelcat { display: none; }   /* står redan i listraden ovanför */
    .nj-menu__aside {
        border-radius: 12px;
        margin: 6px 4px 4px;
    }
}
@media (max-width: 575.98px) {
    .nj-menu__list { grid-template-columns: 1fr; }
    .nj-menu__list a { min-height: 40px; }
}

/* ===========================================================================
   22. GRANSKNINGSRÄTTELSER
   ---------------------------------------------------------------------------
   Punkterna ur designgranskningen 2026-08-22. Enbart rättelser: inget nytt
   formspråk, ingen ny palett. Varje block säger vad som var fel.
   =========================================================================== */

/* ---- 22.1 Ringknappen låg utanför paletten och underkändes på kontrast ----
   #1f9d57 fanns i tre regler och gav 3,49:1 mot vit text — under AA:s 4,5:1
   för brödtextstorlek. Byts mot varumärkets teal, som ger 5,8:1. Grönt var
   dessutom den enda färgen på sajten som inte hörde hemma i paletten. */
.nj-qc__btn--call,
.nj-mbar__btn--call,
.nj-fqc__btn--call { background: var(--nj-teal-strong, #2f6f68) !important; color: #fff !important; }
.nj-qc__btn--call:hover,
.nj-mbar__btn--call:hover,
.nj-fqc__btn--call:hover { background: #265954 !important; color: #fff !important; }

/* ---- 22.2 Telefonnumret i sidhuvudet renderades i 9 px på mobil ----------
   Ärvt från style.css. Under 12 px är siffror inte läsbara, och just det här
   är sajtens viktigaste konverteringspunkt. */
@media (max-width: 767.98px) {
    .header a[href^="tel:"],
    .topbar a[href^="tel:"],
    .footermail,
    .header .footermail { font-size: 13px !important; }
}

/* ---- 22.3 Slut-CTA:n hade vit text på enbart en gradient -----------------
   Ingen background-color i botten. Laddas inte bakgrundsbilder blir texten
   osynlig mot den vita kroppen. Botten lagd, gradienten ligger kvar ovanpå. */
.hz-finalcta { background-color: var(--nj-ink, #102529); }

/* ---- 22.4 Hubbens rubrik och ingress -------------------------------------
   H1 är nu ortsrubriken (var tidigare dödsbotexten ur cities.content) och
   behöver en ingress under sig samt en rubrik över tjänstelistan. */
.nj-hub .hero-section .hero-content .hero-lead {
    max-width: 62ch; margin: 0 auto;
    font-size: clamp(15.5px, 1.5vw, 18px); line-height: 1.62;
    color: var(--nj-ink-soft, #3f5257);
}
.nj-hub .services-heading {
    font-size: clamp(22px, 2.6vw, 30px) !important;
    font-weight: 800; letter-spacing: -.015em;
    color: var(--nj-ink, #102529); margin: 0 0 18px;
}

/* ---- 22.5 Typskalan var inverterad på hubbarna ---------------------------
   H5 renderades i 16 px och H4 i 15 px, alltså en underrubrik större än sin
   överrubrik. 246 element låg dessutom på 14 px, vilket gav sidan noll
   hierarki. En stege, inga hopp. */
.nj-hub h2 { font-size: clamp(22px, 2.6vw, 30px); font-weight: 800; letter-spacing: -.015em; }
.nj-hub h3 { font-size: clamp(18px, 2vw, 22px); font-weight: 700; }
.nj-hub h4 { font-size: 17px; font-weight: 700; }
.nj-hub h5 { font-size: 15px; font-weight: 600; }
.nj-hub h6 { font-size: 14px; font-weight: 600; }
.nj-hub .city-wrap .content p,
.nj-hub .city-wrap .content li { font-size: 16px; line-height: 1.7; }

/* ---- 22.6 Fyra olika "nästan vita" ytor mellan mallarna ------------------
   #F8F8F8, #EAF5F2, #F5FBFF och #E9F4FB användes om vartannat för samma sak.
   Alla pekar nu på samma token, så ytorna tar ut varandra i stället för att
   se ut som fyra olika sajter. */
:root { --nj-surface: #f4f8f9; }
.nj-hub .single-service,
.nj-svc--nj-service .nj-facts,
.section-one { background-color: var(--nj-surface) !important; }

/* ---- 22.7 Klickytor under 24 px -----------------------------------------
   WCAG 2.2 (2.5.8) kräver 24×24 px. Sidfotens ortslänkar och brödsmulorna låg
   på 18–20 px. Padding i stället för ny storlek, så layouten står kvar. */
.footer .col-lg-5 p a,
.nj-hub .breadcrumb-item a,
.footer-links a { display: inline-block; padding: 3px 2px; min-height: 24px; }

/* ---- 22.8 FAQ på tjänstepelarna -----------------------------------------
   Mallen dokumenterade en FAQ men renderade aldrig någon. Byggd på <details>
   så att den fungerar utan JS och så att sökmotorer ser hela svarstexten.
   Samma kortformspråk som resten: vit yta, hårfin ram, mjuk radie. */
.nj-faq { padding: clamp(46px, 6vw, 76px) 0; }
.nj-faq__list { max-width: 860px; margin: 0 auto; display: grid; gap: 12px; }
.nj-faq__item {
    background: #fff; border: 1px solid rgba(16, 37, 41, .1);
    border-radius: 16px; padding: 4px 6px;
    transition: border-color .18s ease, box-shadow .18s ease;
}
.nj-faq__item[open] { border-color: rgba(71, 133, 127, .45); box-shadow: 0 10px 30px rgba(16, 37, 41, .07); }
.nj-faq__q {
    list-style: none; cursor: pointer;
    display: flex; align-items: center; gap: 12px;
    padding: 16px 18px; min-height: 24px;
    font-size: clamp(15.5px, 1.5vw, 17px); font-weight: 700;
    color: var(--nj-ink, #102529); line-height: 1.4;
}
.nj-faq__q::-webkit-details-marker { display: none; }
.nj-faq__q::after {
    content: ""; margin-left: auto; flex: 0 0 auto;
    width: 10px; height: 10px; border-right: 2px solid var(--nj-teal-strong, #2f6f68);
    border-bottom: 2px solid var(--nj-teal-strong, #2f6f68);
    transform: rotate(45deg) translate(-2px, -2px); transition: transform .18s ease;
}
.nj-faq__item[open] .nj-faq__q::after { transform: rotate(225deg) translate(-3px, -3px); }
.nj-faq__q:focus-visible { outline: 3px solid var(--nj-teal-strong, #2f6f68); outline-offset: 2px; border-radius: 12px; }
.nj-faq__a { padding: 0 18px 18px; }
.nj-faq__a p { margin: 0; font-size: 16px; line-height: 1.7; color: var(--nj-ink-soft, #3f5257); max-width: 68ch; }

/* ---- 22.9 Omdömesnamnen var H5 mitt i en H2-sektion ----------------------
   Rubriknivån hoppade från h2 till h5. Namnen är nu h3 och stilsätts som
   tidigare, så inget syns annorlunda men hierarkin håller. */
.hz-review__name { font-size: 16px; font-weight: 700; margin: 0; color: var(--nj-ink, #102529); }

/* ---- 22.10 Toppradens kontaktuppgifter ----------------------------------
   Numret renderades i 9 px i .smallheader på mobil — sajtens viktigaste
   konverteringspunkt, i en storlek ingen kan läsa. Första försöket siktade på
   .header, men remsan ligger utanför den. */
.smallheader a,
.smallheader li,
.smallheader span { font-size: 13px !important; line-height: 1.5; }
@media (max-width: 575.98px) {
    .smallheader a, .smallheader li, .smallheader span { font-size: 12.5px !important; }
}
.smallheader a[href^="tel:"],
.smallheader a[href^="mailto:"] { display: inline-block; min-height: 24px; padding: 2px 0; }

/* ---- 22.11 Stjärnbetyget ------------------------------------------------
   #FFB800 mot vitt ger 1,73:1. Guldet är en del av varumärket och byts inte,
   men betyget får inte HÄNGA på färgen: siffran står i text bredvid och
   varje stjärnrad har ett aria-label. Konturen nedan ger dem en kant så de
   syns mot vitt även för den som ser färgen svagt. */
.stars {
    text-shadow:
        0 0 1px rgba(120, 78, 0, .9),
        0 1px 0 rgba(120, 78, 0, .35);
    letter-spacing: .06em;
}

/* ---- 22.12 Sektionsrytmen på tjänstepelarna -----------------------------
   nj-facts slutade på 0, nj-related och nj-endcta började på 0 medan nj-steps
   låg på 44/44. Sektionerna såg därför olika långt isär ut utan att något
   motiverade det. En och samma rytm, satt en gång. */
.nj-svc--nj-service .nj-facts,
.nj-facts { padding-top: clamp(30px, 4vw, 48px); padding-bottom: clamp(30px, 4vw, 48px); }
.nj-steps,
.nj-related,
.nj-faq,
.nj-endcta { padding-top: clamp(36px, 5vw, 64px); padding-bottom: clamp(36px, 5vw, 64px); }
.nj-related { padding-top: 0; }   /* följer direkt på steg-listan, en rytm räcker */

/* ---- 22.13 .heading-sm var störst av alla H2 ----------------------------
   Klassen heter "sm" men renderade 38 px, medan sidans andra H2 låg på 24 och
   30. Tre storlekar på samma nivå läser sig som tre olika nivåer. */
.nj-hub .heading-sm,
.nj-hub h2.heading-sm { font-size: clamp(22px, 2.6vw, 30px) !important; font-weight: 800; letter-spacing: -.015em; }

/* ---- 22.14 Sidfots- och omdömesrubriker bytte tagg, inte utseende ---------
   "Tjänsteområden" låg på h5 direkt efter sidans h2 — ett hopp på tre nivåer,
   på varenda sida. Samma sak i Google-omdömesblocket (h2 -> h4 -> h5). Taggarna
   är nu h3/h4 så att hierarkin håller; storlekarna pinnas här så att inget
   syns annorlunda än förut (h3 hade annars ärvt Bootstraps 1,75rem). */
.foot-h { font-size: 1.25rem; font-weight: 500; line-height: 1.2; margin-bottom: .5rem; }
.rev-h  { font-size: 1.5rem;  font-weight: 500; line-height: 1.2; margin-bottom: .5rem; }
h4.name { font-size: 1.25rem; font-weight: 500; line-height: 1.2; }
.rev-name { font-size: 1.25rem; font-weight: 500; line-height: 1.2; margin-bottom: .25rem; }
/* Regionkolumnernas rubrik var h4 direkt efter en h2; taggen är nu h3 och
   storleken pinnas så att rutnätet ser exakt likadant ut. */
.hz-hubcol__h { font-size: 15px; font-weight: 700; line-height: 1.3; margin: 0 0 8px; display: flex; align-items: center; gap: 8px; }

/* ===========================================================================
   23. TJÄNSTEPELARNA — bevisremsa, svarskort, löften
   ---------------------------------------------------------------------------
   Sidorna hade tre tecken på att de var byggda på autopilot:

     · hjälten lovade "Ansvarsförsäkrade / Fast pris / Hela Sverige" — tre ord
       utan en enda siffra bakom sig,
     · trygghetsavsnittet var tre ikonkort med rubrikerna RUT / Ansvarsförsäkrad
       / Nöjd-kund-garanti, alltså exakt den trippel varje hantverkarmall har,
     · och tio sektioner marscherade nedför sidan med samma vikt och nästan
       samma höjd, så ögat hade ingenstans att fästa.

   Rättat med tre grepp: en bevisremsa med riktiga siffror, ett svarskort som
   ligger över bildkanten och besvarar pris/tid/område på en gång, och ett
   mörkt löftesavsnitt som bryter rytmen ungefär två tredjedelar ned.

   Ingen ny palett. Gult (#ffd54a) används mer medvetet — det var sajtens minst
   utnyttjade varumärkesfärg och syntes bara i en understrykning.
   =========================================================================== */

/* ---- 23.1 Bevisremsan i hjälten ----------------------------------------- */
.nj-svc-proofbar {
    display: flex; flex-wrap: wrap; align-items: center;
    gap: 8px 20px;
    list-style: none; margin: 22px 0 0; padding: 0;
}
.nj-svc-proofbar li {
    display: inline-flex; align-items: center; gap: 7px;
    font-size: 13.5px; font-weight: 600; line-height: 1.3;
    color: var(--nj-ink-soft, #3f5257);
}
.nj-svc-proofbar li i { font-size: 15px; color: var(--nj-teal-strong, #2f6f68); }
.nj-svc-proofbar__rating strong { font-size: 15px; font-weight: 800; color: var(--nj-ink, #102529); }
.nj-svc-proofbar__rating span:last-child { font-weight: 500; color: #6a7b7f; }
/* Guldet är varumärkesfärg och byts inte. Konturen ger stjärnorna en kant mot
   vitt, så att betyget inte hänger enbart på en färg med låg kontrast. */
.nj-stars {
    color: #ffb800; font-size: 14px; letter-spacing: .06em;
    text-shadow: 0 0 1px rgba(120, 78, 0, .9), 0 1px 0 rgba(120, 78, 0, .35);
}

/* ---- 23.2 Svarskortet ---------------------------------------------------
   Sidans signatur. Ligger med flit utanför bildens vänsterkant så att det
   läses som ett kort ovanpå fotot, inte som ännu ett textblock under det. */
.nj-svc-hero__media { position: relative; }
.nj-answercard {
    position: absolute;
    left: -28px; bottom: -34px;
    width: min(340px, 92%);
    padding: 4px 4px 4px 0;
    background: #fff;
    border-radius: 18px;
    box-shadow: 0 26px 60px rgba(16, 37, 41, .18), 0 0 0 1px rgba(16, 37, 41, .05);
}
.nj-answercard dl { margin: 0; display: grid; }
.nj-answercard div {
    display: grid; grid-template-columns: 1fr;
    gap: 1px;
    padding: 12px 18px 12px 20px;
    border-left: 4px solid var(--nj-yellow, #ffd54a);
    border-radius: 0 12px 12px 0;
}
.nj-answercard div + div { border-top: 1px solid rgba(16, 37, 41, .08); }
.nj-answercard dt {
    font-size: 11.5px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase;
    color: #7a8b8f;
}
.nj-answercard dd {
    margin: 0; font-size: 15px; font-weight: 700; line-height: 1.3;
    color: var(--nj-ink, #102529);
}
.nj-answercard dd span {
    display: block; margin-top: 2px;
    font-size: 12.5px; font-weight: 500; color: #6a7b7f; line-height: 1.4;
}

@media (max-width: 991.98px) {
    /* På mobil ligger bilden redan under texten. Kortet får stå under bilden
       i stället för att täcka den. */
    .nj-answercard {
        position: static; width: 100%;
        margin-top: 18px;
        box-shadow: 0 12px 30px rgba(16, 37, 41, .12), 0 0 0 1px rgba(16, 37, 41, .06);
    }
}

/* ---- 23.3 Löftesavsnittet ----------------------------------------------
   Mörkt band. Det är sidans enda mörka yta och sitter cirka två tredjedelar
   ned — punkten där en besökare antingen ringer eller lämnar. */
.nj-promise {
    background: var(--nj-ink, #102529);
    color: #fff;
    padding: clamp(46px, 6vw, 80px) 0;
    position: relative; overflow: hidden;
}
.nj-promise::before {
    /* Samma organiska form som resten av sajten, som en svag ljusning. */
    content: ""; position: absolute; pointer-events: none;
    width: 520px; height: 460px; right: -140px; top: -180px;
    background: radial-gradient(closest-side, rgba(71, 133, 127, .5), transparent 70%);
}
.nj-promise .nj-h2 { color: #fff; position: relative; }
.nj-promise .nj-h2::after {
    content: ""; display: block; width: 54px; height: 4px; margin-top: 14px;
    border-radius: 3px; background: var(--nj-yellow, #ffd54a);
}
.nj-promise__list {
    position: relative;
    list-style: none; margin: 34px 0 0; padding: 0;
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 26px;
    counter-reset: none;
}
.nj-promise__list li {
    padding: 24px 22px 22px;
    border-radius: 18px;
    background: rgba(255, 255, 255, .045);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .09);
}
.nj-promise__num {
    display: block; margin-bottom: 10px;
    font-size: 30px; font-weight: 800; line-height: 1;
    color: var(--nj-yellow, #ffd54a); opacity: .9;
    font-variant-numeric: tabular-nums;
}
.nj-promise__list h3 {
    margin: 0 0 8px; font-size: 17px; font-weight: 700; line-height: 1.35; color: #fff;
}
.nj-promise__list p {
    margin: 0; font-size: 14.5px; line-height: 1.65; color: rgba(255, 255, 255, .76);
}
@media (max-width: 991.98px) {
    .nj-promise__list { grid-template-columns: 1fr; gap: 14px; }
}

/* ---- 23.4 Rytm ----------------------------------------------------------
   Tio sektioner i rad med samma vita botten gav noll fokus. Nu: ljus yta på
   faktarutan, vitt genom mitten, ett mörkt band vid löftena och den ljusblå
   ytan runt orterna — fyra vilopunkter i stället för noll. */
.nj-svc--nj-service .nj-steps { background: #fff; }
.nj-svc--nj-service .nj-faq { background: var(--nj-surface, #f4f8f9); }
.nj-svc--nj-service .nj-faq .nj-faq__item { box-shadow: 0 1px 0 rgba(16, 37, 41, .03); }
.nj-svc--nj-service .nj-endcta { padding-top: clamp(36px, 5vw, 64px); }

/* Hjältens undertext får luft: den var hopklämd mot knapparna. */
.nj-svc-hero__lead { max-width: 56ch; }
/* Bilden behöver plats under sig nu när kortet hänger utanför kanten. */
@media (min-width: 992px) {
    .nj-svc-hero { padding-bottom: clamp(64px, 7vw, 96px); }
    .nj-svc-hero__media { margin-right: 8px; }
}

/* ===========================================================================
   24. STARTSIDAN — rättelser efter genomgången
   =========================================================================== */

/* ---- 24.1 FAQ-avslutet ---------------------------------------------------
   Sektionen "Har du fortfarande tankar?" (600 px) låg direkt under FAQ:n
   (542 px) och sa samma sak en gång till — 1 142 px av startsidan för ett
   budskap. Den är hopslagen med FAQ:n som en avslutande rad. */
.hz-faq__after {
    margin-top: 26px; padding-top: 22px;
    border-top: 1px solid rgba(16, 37, 41, .1);
}
.hz-faq__after p {
    margin: 0 0 14px; max-width: 52ch;
    font-size: 15.5px; line-height: 1.6; color: var(--nj-ink-soft, #3f5257);
}
.hz-faq__after .hz-actions { display: flex; flex-wrap: wrap; gap: 10px; }

/* ---- 24.2 Processavsnittet -----------------------------------------------
   874 px — sidans näst största sektion, för tre steg. Bilden tog 296 px av
   dem. Luften stramas åt; inget innehåll försvinner. */
.hz-process { padding-top: clamp(40px, 4.4vw, 58px) !important; padding-bottom: clamp(40px, 4.4vw, 58px) !important; }
.hz-process .hz-process__media { max-height: 230px; margin: 18px 0; }
.hz-process .hz-process__media img:not(.blob) { max-height: 230px; width: auto; object-fit: cover; }
.hz-process .hz-list { margin: 14px 0 18px; }
.hz-process .hz-list li { margin-bottom: 8px; line-height: 1.55; }
.hz-process .hz-processlead__sub { max-width: 54ch; }

/* ---- 24.3 Kartans prickar ------------------------------------------------
   220 av dem var <a> med 4,8 px klickyta. De är nu <g> utan länk, så
   markören ska inte längre lova att de går att klicka på. */
.hz-svmap__city.is-minor { pointer-events: none; }
.hz-svmap__city.is-major .hit { cursor: pointer; }

/* ---- 24.4 Regionsektionen ------------------------------------------------
   Sex regioner i stället för tolv, och knappen leder till /cities i stället
   för att veckla ut resten i DOM:en. */
.hz-hubgrid { max-height: none; }

/* ---- 24.5 Kartans höjd ---------------------------------------------------
   Regionsektionen var 21 % av startsidan och kartan stod för 887 av dess
   1 228 px. Med ett tak på höjden ryms den fortfarande läsbart — orterna sitter
   i södra halvan, som är den täta delen. */
.hz-svmap { max-height: 520px; width: 100%; height: auto; display: block; margin: 0 auto; }

/* ---- 24.6 Trygghetsbandet på startsidan ----------------------------------
   De tre ikonkorten är ersatta av samma löftesbehandling som tjänstepelarna.
   Bandet ärver .nj-promise men ligger i hz-wrap i stället för .container. */
.nj-promise--home .hz-h2 { color: #fff; }
.nj-promise--home .hz-h2::after { display: none; }
/* .hz-mark ritar sin gula markering med ett ::after-streck, inte med bakgrund.
   Att sätta färgen till ink på det mörka bandet gjorde orden osynliga — ink på
   ink. Gult som textfärg i stället; strecket under behövs inte här. */
.nj-promise--home .hz-mark { color: var(--nj-yellow, #ffd54a); }
.nj-promise--home .hz-mark::after { display: none; }
.nj-promise--home .hz-head { position: relative; }
.nj-promise--home .nj-promise__list { margin-top: 30px; }

/* ---- 24.7 /anslut-ditt-bolag: etiketter var rubriker ---------------------
   Kampanjremsan och de tre trygghetsorden låg i h6 — före sidans h1. De är
   etiketter, inte rubriker, och gjorde rubrikträdet obegripligt. Nu <p> med
   samma utseende som tag-CSS:en gav dem. */
.banner-promo .banner-promo__kicker { margin: 0; position: relative; }
.points .points__item { margin: 0; display: flex; align-items: center; gap: 8px; }
.join-sub { font-size: 1rem; font-weight: 600; line-height: 1.4; margin-bottom: .5rem; }
