/* Gösab Ventilation & Sotning — Client Token Overrides */
/* Brand Guide: Grafisk guide Gösab.pdf */

/* ─── PAGE HERO (undersidor med bakgrundsbild) ─── */
/* Ändra --page-hero-height på ett ställe för att justera höjd på alla undersidors hero */
:root {
  --page-hero-height: 800px;
  --surface: #f4f7f8;
  --border: #cdd8dc;
}
.page-hero {
  position: relative;
  min-height: var(--page-hero-height);
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.page-hero__overlay {
  position: absolute;
  inset: 0;
  background: rgba(2, 26, 40, 0.55);
}
.page-hero__content {
  position: relative;
  z-index: 1;
  padding: 2.5rem 3rem;
  max-width: 660px;
  background: rgba(2, 26, 40, 0.78);
  border-radius: var(--radius-md);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
}
.page-hero .section-eyebrow { color: var(--gold); }
.page-hero .section-title { color: #fff; }
.page-hero .section-intro { color: #C8D8DD; }
.page-hero .btn-outline {
  border-color: rgba(255,255,255,0.5);
  color: #fff;
}
.page-hero .btn-outline:hover {
  border-color: #fff;
  background: rgba(255,255,255,0.1);
}

/* ─── HERO BENEFITS ─── */
.hero-benefits {
  margin-bottom: 32px;
}

/* ─── SECTION INTRO — context-aware color ─── */
.section-intro {
  color: #4E6878; /* readable on white/light backgrounds */
}
.hero .section-intro {
  color: #C8D8DD; /* light for dark hero background */
}

/* ─── CHECK LIST — remove default bullet point site-wide ─── */
.check-list,
.check-list li {
  list-style: none;
  padding-left: 0;
}

/* ─── SCROLL ANIMATIONS ─── */

/* Fade-in-up reveal */
.gs-reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.gs-revealed {
  opacity: 1;
  transform: translateY(0);
}

/* Navbar shrink on scroll */
.nav {
  transition: padding 0.35s ease, box-shadow 0.35s ease;
}
.nav--scrolled {
  padding-top: 0;
  padding-bottom: 0;
  box-shadow: 0 2px 20px rgba(2,42,58,0.25);
}
.nav-logo img {
  transition: transform 0.35s ease, height 0.35s ease;
}
.nav-logo img.nav-logo--scrolled {
  transform: scale(0.7);
  transform-origin: left center;
}
.top-stripe {
  transition: padding 0.35s ease, max-height 0.35s ease, opacity 0.35s ease;
  max-height: 50px;
  overflow: hidden;
}
.top-stripe--scrolled {
  max-height: 28px;
  padding-top: 2px;
  padding-bottom: 2px;
  opacity: 0.9;
}

/* Hero video parallax base */
.hero-bg-video {
  will-change: transform;
  transform: scale(1.1);
}

/* Topbar: swap positions (phone/social left, links right) */
.top-stripe-inner {
  flex-direction: row-reverse;
}

/* ─── GOOGLE FONTS ─── */
@import url('https://fonts.googleapis.com/css2?family=Roboto+Condensed:wght@400;700&family=Montserrat:wght@300;400;500;700;900&family=Lora:ital,wght@0,400;0,500;0,700;1,400&display=swap&subset=latin-ext');

:root {
  /* Primary: Mörkblå (brand guide exact) */
  --navy: #022a3a;
  --navy-light: #053d52;
  --navy-muted: #08516d;

  /* Accent: Orange (brand guide exact) */
  --gold: #f58e48;
  --gold-light: #f7a870;
  --gold-hover: #e07a32;

  /* Ljusblå (brand guide exact) */
  --teal: #1b7e9a;
  --teal-light: #239ab8;
  --teal-muted: #156a82;

  /* Neutral palette tuned for Gösab navy */
  --off-white: #f4f7f8;
  --gray-50: #f0f4f5;
  --gray-100: #e2e8ea;
  --gray-200: #c8d3d7;
  --gray-400: #7a8f97;
  --gray-600: #4a5f68;
  --text: #1a2a30;
  --text-muted: #4a5f68;

  /* Shadows tuned to navy base */
  --shadow-sm: 0 1px 3px rgba(2,42,58,0.06);
  --shadow-md: 0 4px 20px rgba(2,42,58,0.08);
  --shadow-lg: 0 8px 40px rgba(2,42,58,0.12);
  --shadow-card: 0 2px 12px rgba(2,42,58,0.06), 0 0 0 1px rgba(2,42,58,0.04);

  /* Typography — Brand Guide */
  /* Headings: Roboto Condensed Bold */
  --font-display: 'Roboto Condensed', system-ui, sans-serif;
  /* Accent body (quotes, pull-quotes): Lora (Tiempos Text alternative) */
  --font-accent: 'Lora', Georgia, serif;

  /* Dropdown tokens — Cascade variant, dark navy */
  --dd-bg: rgba(3, 45, 62, 0.97);
  --dd-border: rgba(255,255,255,0.08);
  --dd-shadow: 0 20px 60px rgba(0,0,0,0.35), 0 0 0 1px rgba(255,255,255,0.05);
  --dd-radius: 12px;
  --dd-item-color: rgba(255,255,255,0.6);
  --dd-item-hover: #fff;
  --dd-accent: #f58e48;
  --dd-accent-bg: rgba(245,142,72,0.06);
  --dd-divider: rgba(255,255,255,0.06);

  /* Layout */
  --two-col-gap: 50px;
}

/* ─── CONTENT BLOCK — two-column layout ─── */
.content-block {
  gap: var(--two-col-gap);
}
.content-block > * > :first-child { margin-top: 0; }

/* Body: Montserrat Light/Regular/Bold (brand guide) */
body {
  font-family: 'Montserrat', system-ui, -apple-system, sans-serif;
  font-weight: 400;
}

/* Eyebrows/subheadings: Montserrat Black versaler (brand guide) */
.section-eyebrow {
  font-family: 'Montserrat', system-ui, sans-serif;
  font-weight: 900;
  letter-spacing: 0.1em;
}

/* Section titles: Roboto Condensed Bold */
.section-title {
  font-family: var(--font-display);
  font-weight: 700;
}

/* Hero H1: Roboto Condensed Bold */
.hero h1 {
  font-family: var(--font-display);
  font-weight: 700;
}

/* Pull quotes / accent text: Lora (Tiempos alternative) */
.accent-text,
blockquote,
.testimonial-quote {
  font-family: var(--font-accent);
  font-style: italic;
}

/* Button text: Montserrat Bold */
.btn {
  font-family: 'Montserrat', system-ui, sans-serif;
  font-weight: 700;
}

/* ─── HEADER VARIANT B: "BOLD" (default — mörkblå nav, vit text, vit logga) ─── */
/* This is the current active variant. */
/* To switch to Variant A "Clean", add class "header-clean" to <body> */

.nav {
  background: var(--navy);
}
/* Dropdown background now controlled by --dd-bg token in :root */

/* CTA banner padding */
.cta-banner {
  padding: 30px 0;
}

/* ─── Third-level flyout submenu ─── */
.nav-sub-item {
  position: relative;
}
.nav-sub-item--has-children .nav-sub-link--parent {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
}
.nav-sub-chevron {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  opacity: 0.7;
}
.nav-sub-dropdown {
  display: none;
  position: absolute;
  left: 100%;
  top: 0;
  background: var(--navy-light);
  min-width: 200px;
  padding: 8px 0;
  box-shadow: 4px 4px 20px rgba(0,0,0,0.2);
}
.nav-sub-item--has-children:hover .nav-sub-dropdown {
  display: block;
}
.nav-sub-dropdown a {
  display: block;
  padding: 10px 20px;
  color: rgba(255,255,255,0.85);
  font-size: 0.9rem;
  white-space: nowrap;
}
.nav-sub-dropdown a:hover {
  color: #fff;
  background: rgba(255,255,255,0.08);
}

/* ─── Mobile: level-3 indent instead of flyout ─── */
@media (max-width: 960px) {
  .nav-sub-dropdown {
    position: static !important;
    left: auto !important;
    top: auto !important;
    box-shadow: none !important;
    min-width: auto !important;
    background: transparent !important;
    border: none !important;
    padding: 0 0 4px 16px !important;
    display: none !important;
  }
  .nav-sub-item--has-children.mob-open-sub > .nav-sub-dropdown {
    display: block !important;
  }
  /* Disable desktop hover trigger on mobile */
  .nav-sub-item--has-children:hover > .nav-sub-dropdown {
    display: none !important;
  }
  .nav-sub-item--has-children.mob-open-sub:hover > .nav-sub-dropdown {
    display: block !important;
  }
  /* Rotate chevron when open */
  .nav-sub-link--parent .nav-sub-chevron {
    transition: transform 0.2s;
  }
  .nav-sub-item--has-children.mob-open-sub > .nav-sub-link--parent .nav-sub-chevron {
    transform: rotate(180deg);
  }
  .nav-sub-dropdown a {
    padding: 7px 0 !important;
    color: rgba(255,255,255,0.6) !important;
    background: none !important;
    font-size: 0.85rem !important;
  }
}

/* ─── HEADER VARIANT A: "CLEAN" (vit nav, mörkblå text, svart logga) ─── */
body.header-clean .top-stripe {
  background: var(--navy);
}

body.header-clean .nav {
  background: #ffffff;
  border-bottom: 1px solid var(--gray-100);
}
body.header-clean .nav-item > a {
  color: var(--navy);
}
body.header-clean .nav-item > a:hover,
body.header-clean .nav-item > a.active {
  color: var(--teal);
}
body.header-clean .nav-item > a .nav-chevron {
  color: var(--gray-400);
}
body.header-clean .nav-item:hover > a .nav-chevron {
  color: var(--teal);
}
body.header-clean .nav-dropdown {
  background: #ffffff;
  border: 1px solid var(--gray-100);
  box-shadow: 0 12px 32px rgba(2,42,58,0.12);
}
body.header-clean .nav-dropdown a {
  color: var(--text-muted);
}
body.header-clean .nav-dropdown a:hover {
  color: var(--navy);
  background: var(--gray-50);
}
body.header-clean .nav-toggle span {
  background: var(--navy);
}
body.header-clean .nav-logo img {
  /* Use filter to invert white logo to dark — or swap src via PHP */
  filter: brightness(0) saturate(100%) invert(12%) sepia(30%) saturate(2000%) hue-rotate(170deg) brightness(95%);
}

/* Clean variant mobile menu — dark background for readability */
@media (max-width: 960px) {
  body.header-clean .nav-links {
    background: var(--navy);
  }
  body.header-clean .nav-links .nav-item > a {
    color: rgba(255,255,255,0.85);
  }
  body.header-clean .nav-links .nav-dropdown a {
    color: rgba(255,255,255,0.65);
  }
  body.header-clean .nav-links .nav-dropdown {
    background: transparent;
    border: none;
    box-shadow: none;
  }
  body.header-clean .nav-links .nav-toggle span {
    background: #fff;
  }
}

/* ─── COMPONENT STYLES ─── */

/* Button refinements for Gösab */
.btn-primary {
  box-shadow: 0 2px 8px rgba(245,142,72,0.3);
}
.btn-primary:hover {
  box-shadow: 0 4px 16px rgba(245,142,72,0.4);
}

/* Teal accent class (for service cards, icons) */
.accent-teal {
  color: var(--teal);
}
.bg-teal {
  background: var(--teal);
}
.bg-teal-light {
  background: rgba(27,126,154,0.08);
}

/* Hero tuned for Gösab — darker navy overlay */
.hero {
  background: var(--navy);
}
.hero-content {
  background: rgba(2,42,58,0.85);
}

/* Section eyebrow with teal option */
.section-eyebrow.teal {
  color: var(--teal);
}
.section-eyebrow.teal::before {
  background: var(--teal);
}

/* Feature card icon with teal gradient */
.feature-card-icon {
  background: linear-gradient(135deg, var(--navy), var(--navy-muted));
}
.feature-card-icon svg {
  color: var(--gold);
}

/* Footer darker navy */
.footer {
  background: #011822;
}

/* Testimonials/integrations background */
.testimonials,
.integrations {
  background: var(--navy);
}

/* Service type indicator colors */
.service-tag-ovk { background: rgba(27,126,154,0.12); color: var(--teal); }
.service-tag-ventilation { background: rgba(2,42,58,0.08); color: var(--navy); }
.service-tag-sotning { background: rgba(245,142,72,0.12); color: var(--gold-hover); }

/* Contact split layout */
.contact-split {
  display: grid;
  grid-template-columns: 1fr;
  gap: 40px;
}
@media (min-width: 900px) {
  .contact-split {
    grid-template-columns: 1fr 380px;
    gap: 48px;
    align-items: start;
  }
}
.contact-split__side {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.contact-split__image {
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-md);
}
.contact-split__image img {
  width: 100%;
  height: 320px;
  object-fit: cover;
  display: block;
}
.contact-split__info-card {
  background: var(--navy);
  color: #fff;
  padding: 28px;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
}
.contact-split__info-card h3 {
  font-family: var(--font-display);
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 16px;
  color: var(--gold);
}
.contact-split__info-card p {
  font-size: 14px;
  line-height: 1.5;
  color: rgba(255,255,255,0.85);
  margin: 0;
}
.contact-split__info-card strong {
  color: #fff;
  font-weight: 600;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.contact-split__info-card a {
  color: var(--gold-light);
  text-decoration: none;
  font-weight: 500;
  transition: color 0.2s;
}
.contact-split__info-card a:hover {
  color: #fff;
}

/* Contact info cards (Telefon, E-post, Besöksadress) */
.contact-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
}
@media (min-width: 700px) {
  .contact-cards { grid-template-columns: repeat(3, 1fr); }
}
.contact-card {
  background: #fff;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-card);
  transition: box-shadow 0.3s, transform 0.3s;
}
.contact-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}
.contact-card__header {
  background: var(--navy);
  padding: 16px 20px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.contact-card__header svg {
  width: 20px;
  height: 20px;
  color: var(--gold);
  flex-shrink: 0;
}
.contact-card__header h3 {
  font-family: var(--font-display);
  font-size: 14px;
  font-weight: 700;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin: 0;
}
.contact-card__body {
  padding: 20px;
}
.contact-card__value {
  display: block;
  font-size: 18px;
  font-weight: 700;
  color: var(--navy);
  text-decoration: none;
  margin-bottom: 6px;
  transition: color 0.2s;
}
a.contact-card__value:hover {
  color: var(--teal);
}
.contact-card__desc {
  font-size: 14px;
  color: var(--text-muted);
  margin: 0;
  line-height: 1.5;
}

/* Staff grid & cards */
.staff-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 20px;
  margin-top: 1.5rem;
}
.staff-card {
  background: #fff;
  border-radius: var(--radius-md);
  padding: 20px 24px;
  border: 1px solid var(--border);
  transition: box-shadow 0.25s, transform 0.25s;
}
.staff-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}
.staff-card__name {
  font-size: 16px;
  font-weight: 700;
  color: var(--navy);
  margin: 0 0 4px;
}
.staff-card__role {
  font-size: 14px;
  color: var(--teal);
  font-weight: 600;
  margin: 0 0 10px;
}
.staff-card__contact {
  font-size: 13px;
  color: var(--text-muted);
  margin: 2px 0;
}
.staff-card__contact a {
  color: var(--text-muted);
  text-decoration: none;
  transition: color 0.2s;
}
.staff-card__contact a:hover {
  color: var(--teal);
}

/* Staff photo grid (contact pages) */
.staff-photo-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin-top: 1.5rem;
}
@media (max-width: 1024px) {
  .staff-photo-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 640px) {
  .staff-photo-grid { grid-template-columns: repeat(2, 1fr); }
}
.staff-photo-card {
  background: var(--navy);
  border-radius: var(--radius-md);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform 0.2s, box-shadow 0.2s;
}
.staff-photo-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(0,0,0,0.15);
}
.staff-photo-card__img {
  width: 100%;
  aspect-ratio: 1 / 1;
  overflow: hidden;
}
.staff-photo-card__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  display: block;
  filter: grayscale(10%);
  transition: filter 0.3s;
}
.staff-photo-card:hover .staff-photo-card__img img {
  filter: grayscale(0%);
}
.staff-photo-card__body {
  padding: 14px 16px 18px;
  flex: 1;
  display: flex;
  flex-direction: column;
  color: #fff;
}
.staff-photo-card__area {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--teal);
  margin: 0 0 6px;
  line-height: 1.3;
}
.staff-photo-card__name {
  font-size: 15px;
  font-weight: 700;
  color: #fff;
  margin: 0 0 8px;
}
.staff-photo-card__roles {
  list-style: none;
  padding: 0;
  margin: 0 0 10px;
  flex: 1;
}
.staff-photo-card__roles li {
  font-size: 12px;
  color: rgba(255,255,255,0.75);
  line-height: 1.6;
}
.staff-photo-card__roles li::before {
  content: '– ';
  color: var(--teal);
}
.staff-photo-card__phone {
  font-size: 13px;
  font-weight: 600;
  color: rgba(255,255,255,0.9);
  margin: 0 0 10px;
  text-decoration: none;
  display: block;
}
.staff-photo-card__phone:hover { color: var(--teal); }
.staff-photo-card__email-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--teal);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  padding: 7px 14px;
  border-radius: 20px;
  text-decoration: none;
  transition: background 0.2s;
  align-self: flex-start;
  margin-top: auto;
}
.staff-photo-card__email-btn:hover { background: #0d6f87; }

/* Staff section sub-headings (contact pages) */
.staff-section-heading {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--morkbla, #022a3a);
  margin: 2.5rem 0 0.5rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--teal, #1b7e9a);
  display: inline-block;
}

/* Räddningstjänst partnership box */
.raddningstjanst-box {
  display: flex;
  align-items: center;
  gap: 20px;
  background: var(--navy);
  color: #fff;
  border-radius: var(--radius-md);
  padding: 20px 24px;
  margin-top: 16px;
  border-left: 4px solid var(--teal);
}
.raddningstjanst-box img {
  width: 90px;
  height: 90px;
  object-fit: contain;
  flex-shrink: 0;
  border-radius: 6px;
}
.raddningstjanst-box p {
  font-size: 14px;
  line-height: 1.6;
  color: rgba(255,255,255,0.85);
  margin: 0;
}
.raddningstjanst-box strong {
  color: #fff;
}
@media (max-width: 640px) {
  .raddningstjanst-box { flex-direction: column; align-items: flex-start; }
}

/* Pull quote */
.pull-quote {
  border-left: 4px solid var(--teal);
  padding: 20px 24px;
  margin: 1.5rem 0;
  background: var(--surface);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  font-style: italic;
  color: var(--navy);
  font-size: 17px;
  line-height: 1.7;
}
.pull-quote cite {
  display: block;
  margin-top: 12px;
  font-style: normal;
  font-weight: 600;
  font-size: 14px;
  color: var(--teal);
}

/* ── Smart contact form (v2) ──────────────────────────────── */
.smart-form-wrap {
  max-width: 820px;
}
.smart-form__subtitle {
  font-size: 15px;
  font-weight: 500;
  color: var(--text-muted);
  margin-top: -4px;
  margin-bottom: 24px;
  line-height: 1.5;
}

/* Area info strip */
.area-info-reveal {
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  pointer-events: none;
  transition: max-height 0.35s ease, opacity 0.3s ease, margin 0.3s ease;
  margin-bottom: 0;
}
.area-info-reveal.open {
  max-height: 160px;
  opacity: 1;
  pointer-events: auto;
  margin-bottom: 24px;
}
.area-info-strip {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  background: var(--surface);
  border: 1px solid rgba(3, 35, 54, 0.3);
  border-radius: var(--radius-sm);
  padding: 14px 16px;
  margin-top: 12px;
}
.area-info-strip__icon {
  color: var(--teal);
  flex-shrink: 0;
  margin-top: 2px;
}
.area-info-strip__content {
  flex: 1;
  font-size: 14px;
}
.area-info-strip__content strong {
  display: block;
  font-size: 15px;
  font-weight: 700;
  margin-bottom: 4px;
  color: var(--text);
}
.area-info-strip__content p {
  margin: 0;
  color: var(--text-muted);
  line-height: 1.5;
}
.area-info-strip__link {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  font-weight: 600;
  color: var(--teal);
  text-decoration: none;
  white-space: nowrap;
  flex-shrink: 0;
  margin-top: 2px;
}
.area-info-strip__link:hover { text-decoration: underline; }

.smart-form__switch {
  font-size: 13px;
  color: var(--text-muted);
  margin-bottom: 28px;
}
.smart-form__switch a {
  color: var(--teal);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Step labels */
.smart-step-label {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--teal);
  margin: 0 0 12px;
  position: relative;
  padding-left: 38px;
  overflow: hidden;
  max-height: 40px;
  opacity: 1;
  transition: opacity 0.3s ease, max-height 0.35s ease, margin 0.3s ease;
}
.smart-step-label::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  width: 22px;
  height: 2px;
  background: var(--gold);
  transform: translateY(-50%);
}
.smart-step-label::after {
  content: '';
  position: absolute;
  left: 19px;
  top: 50%;
  width: 0;
  height: 0;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-left: 7px solid var(--gold);
  transform: translateY(-50%);
}
.smart-step-label.fade-out {
  opacity: 0;
  max-height: 0;
  margin-bottom: 0;
  pointer-events: none;
}

/* City selector */
.city-selector {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 32px;
}
.city-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 11px 22px;
  border-radius: 40px;
  border: 2px solid var(--border);
  background: #fff;
  font-size: 14px;
  font-weight: 600;
  color: var(--navy);
  cursor: pointer;
  transition: border-color 0.18s, background 0.18s, color 0.18s, box-shadow 0.18s, transform 0.15s;
  user-select: none;
}
.city-pill svg {
  flex-shrink: 0;
  color: var(--teal);
  transition: color 0.18s;
}
.city-pill:hover {
  border-color: var(--teal);
  box-shadow: 0 2px 10px rgba(16,126,155,0.12);
  transform: translateY(-1px);
}
.city-pill.active {
  border-color: var(--navy);
  background: var(--navy);
  color: #fff;
  box-shadow: 0 4px 14px rgba(3,35,54,0.18);
}
.city-pill.active svg { color: var(--teal); }

/* Ärende selector */
.arende-reveal {
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  transform: translateY(-6px);
  transition: max-height 0.45s ease, opacity 0.35s ease, transform 0.35s ease;
  pointer-events: none;
}
.arende-reveal.open {
  max-height: 800px;
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.arende-selector {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 10px;
  margin-bottom: 32px;
}
.arende-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 18px 10px 16px;
  border-radius: var(--radius-md);
  border: 2px solid var(--border);
  background: #fff;
  font-size: 13px;
  font-weight: 600;
  color: var(--navy);
  cursor: pointer;
  text-align: center;
  line-height: 1.3;
  transition: border-color 0.18s, background 0.18s, color 0.18s, box-shadow 0.18s, transform 0.15s;
  user-select: none;
}
.arende-card svg {
  color: var(--teal);
  flex-shrink: 0;
  transition: color 0.18s;
}
.arende-card:hover {
  border-color: var(--teal);
  box-shadow: 0 2px 10px rgba(16,126,155,0.12);
  transform: translateY(-2px);
}
.arende-card.active {
  border-color: var(--navy);
  background: var(--navy);
  color: #fff;
  box-shadow: 0 4px 14px rgba(3,35,54,0.18);
}
.arende-card.active svg { color: var(--teal); }
.arende-card[data-hidden="1"] {
  display: none;
}

/* Form fields reveal */
.form-fields-reveal {
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  transform: translateY(-6px);
  transition: max-height 0.5s ease, opacity 0.4s ease, transform 0.4s ease;
  pointer-events: none;
}
.form-fields-reveal.open {
  max-height: 1200px;
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

/* Contact form styling */
.gosab-form .form-group {
  margin-bottom: 16px;
}
.gosab-form .form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
@media (max-width: 600px) {
  .gosab-form .form-row {
    grid-template-columns: 1fr;
  }
}
.gosab-form .form-group--checkbox {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.gosab-form .form-group--checkbox input[type="checkbox"] {
  width: auto;
  margin-top: 3px;
  flex-shrink: 0;
}
.gosab-form .form-group--checkbox label {
  font-size: 13px;
  color: var(--text-muted);
  line-height: 1.5;
}
.gosab-form input,
.gosab-form select,
.gosab-form textarea {
  font-family: 'Montserrat', system-ui, sans-serif;
  font-size: 15px;
  padding: 14px 16px;
  border: 2px solid var(--gray-200);
  border-radius: var(--radius-sm);
  background: var(--white);
  color: var(--text);
  width: 100%;
  transition: border-color 0.3s ease, box-shadow 0.3s ease, transform 0.2s ease;
}
.gosab-form input:focus,
.gosab-form select:focus,
.gosab-form textarea:focus {
  outline: none;
  border-color: var(--teal);
  box-shadow: 0 0 0 4px rgba(27,126,154,0.12), 0 2px 8px rgba(27,126,154,0.08);
  transform: translateY(-1px);
}
.gosab-form input:hover,
.gosab-form select:hover,
.gosab-form textarea:hover {
  border-color: var(--gray-400);
}
.gosab-form label {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 6px;
}
.gosab-form label span {
  color: var(--gold);
}
.gosab-form select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%234a5f68' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
  padding-right: 40px;
}
.gosab-form button[type="submit"] {
  margin-top: 8px;
  padding: 14px 40px;
  font-size: 15px;
}

/* Gösab specific: certification badges row */
.cert-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  align-items: center;
}
.cert-badges img {
  height: 50px;
  width: auto;
  opacity: 0.7;
  filter: grayscale(0.3);
  transition: var(--transition);
}
.cert-badges img:hover {
  opacity: 1;
  filter: grayscale(0);
}

/* Pre-footer certifications strip (global — all pages) */
.pre-footer-certs {
  background: var(--gray-50);
  border-top: 1px solid var(--gray-100);
  padding: 28px 0;
  text-align: center;
}
.pre-footer-certs .cert-badges {
  justify-content: center;
  width: 420px;
  margin: 0 auto;
  margin-top: 24px;
  border-radius: 30px;
  gap: 32px;
  background-color: #ffffff;
  position: relative;
  margin-bottom: -50px;
  z-index: 10;
}
.pre-footer-certs .cert-badges img {
  height: 62px;
  width: auto;
  opacity: 0.85;
  filter: grayscale(0.2);
}
.pre-footer-certs .cert-badges img:hover {
  opacity: 1;
  filter: grayscale(0);
}

/* Service area grid */
.area-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}
@media (min-width: 600px) { .area-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 900px) { .area-grid { grid-template-columns: repeat(4, 1fr); } }
.area-tag {
  font-size: 14px;
  font-weight: 500;
  color: var(--navy);
  padding: 10px 16px;
  border-radius: var(--radius-sm);
  background: var(--gray-50);
  border: 1px solid var(--gray-100);
  text-align: center;
  transition: var(--transition);
}
.area-tag:hover {
  border-color: var(--teal);
  background: rgba(27,126,154,0.04);
}

/* Internal link cards (for hub pages) */
.link-card-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}
@media (min-width: 600px) { .link-card-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .link-card-grid { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); } }

/* Goal column grid (3-col on desktop, 1-col on mobile) */
.goal-col-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin: 2rem 0;
}
@media (max-width: 768px) {
  .goal-col-grid {
    grid-template-columns: 1fr;
  }
}

.link-card {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 20px;
  background: var(--white);
  border: 1px solid var(--gray-100);
  border-radius: var(--radius-md);
  transition: var(--transition);
  text-decoration: none;
  color: inherit;
}
.link-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--teal);
  transform: translateY(-2px);
}
.link-card-icon {
  width: 44px;
  height: 44px;
  border-radius: var(--radius-sm);
  background: rgba(27,126,154,0.08);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.link-card-icon svg {
  width: 22px;
  height: 22px;
  color: var(--teal);
}
.link-card h3 {
  font-size: 15px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 4px;
}
.link-card p {
  font-size: 14px;
  color: var(--text-muted);
  line-height: 1.5;
}

/* Info box (for legal notices, important info) */
.info-box {
  padding: 20px 24px;
  border-radius: var(--radius-md);
  border-left: 4px solid var(--teal);
  background: rgba(27,126,154,0.04);
  margin: 24px 0;
}
.info-box.warning {
  border-left-color: var(--gold);
  background: rgba(245,142,72,0.06);
}
.info-box p {
  font-size: 15px;
  color: var(--text);
  line-height: 1.7;
}
.info-box strong {
  color: var(--navy);
}

/* General content table (OVK, etc.) */
.gosab-table {
  width: 100%;
  border-collapse: collapse;
  margin: 24px 0;
  overflow-x: auto;
  display: block;
}
.gosab-table th,
.gosab-table td {
  text-align: left;
  padding: 12px 16px;
  font-size: 15px;
  border-bottom: 1px solid var(--gray-100);
  white-space: nowrap;
}
.gosab-table th {
  background: var(--navy);
  color: white;
  font-weight: 600;
  font-size: 14px;
}
.gosab-table tr:nth-child(even) td { background: var(--gray-50); }
.gosab-table tr:hover td { background: #e8f0f2; }
@media (max-width: 640px) {
  .gosab-table th,
  .gosab-table td { padding: 10px 12px; font-size: 14px; }
}

/* Pricing table (for taxor page) */
.price-table {
  width: 100%;
  border-collapse: collapse;
  margin: 24px 0;
}
.price-table th,
.price-table td {
  text-align: left;
  padding: 12px 16px;
  font-size: 15px;
  border-bottom: 1px solid var(--gray-100);
}
.price-table th {
  background: var(--navy);
  color: white;
  font-weight: 600;
  font-size: 14px;
}
.price-table tr:hover td {
  background: var(--gray-50);
}

/* Knowledge hub / blog article styling */
.article-meta {
  display: flex;
  align-items: center;
  gap: 16px;
  font-size: 14px;
  color: var(--text-muted);
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--gray-100);
}
.article-tag {
  font-size: 12px;
  font-weight: 600;
  padding: 4px 12px;
  border-radius: 100px;
  background: rgba(27,126,154,0.08);
  color: var(--teal);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* Step list (for process descriptions) */
.step-list {
  counter-reset: step;
  margin: 24px 0;
}
.step-item {
  display: flex;
  gap: 20px;
  padding: 20px 0;
  border-bottom: 1px solid var(--gray-100);
  counter-increment: step;
}
.step-item::before {
  content: counter(step);
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--teal);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 16px;
}
.step-item h3 {
  font-size: 16px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 4px;
}
.step-item p {
  font-size: 15px;
  color: var(--text-muted);
  line-height: 1.6;
}

/* ─── KUNSKAPSBANK / BLOG CARDS ─── */

/* Hero card (featured post) */
.kb-hero-card {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  text-decoration: none;
  color: inherit;
  background: #fff;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-md);
  transition: box-shadow 0.3s ease, transform 0.3s ease;
}
@media (min-width: 768px) {
  .kb-hero-card { grid-template-columns: 1fr 1fr; }
}
.kb-hero-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-3px);
}
.kb-hero-card__image {
  overflow: hidden;
}
.kb-hero-card__image img {
  width: 100%;
  height: 100%;
  min-height: 280px;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}
.kb-hero-card:hover .kb-hero-card__image img {
  transform: scale(1.04);
}
.kb-hero-card__content {
  padding: 32px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.kb-hero-card__content h2 {
  font-family: var(--font-display);
  font-size: 24px;
  font-weight: 700;
  color: var(--navy);
  line-height: 1.3;
  margin: 8px 0 12px;
}
.kb-excerpt {
  font-size: 15px;
  color: var(--text-muted);
  line-height: 1.6;
  margin-bottom: 16px;
}
.kb-read-more {
  font-size: 14px;
  font-weight: 700;
  color: var(--teal);
  margin-top: auto;
  transition: color 0.2s;
}
.kb-hero-card:hover .kb-read-more {
  color: var(--navy);
}

/* Tag */
.kb-tag {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  padding: 4px 12px;
  border-radius: 100px;
  background: rgba(27,126,154,0.08);
  color: var(--teal);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* Meta (date) */
.kb-meta {
  font-size: 13px;
  color: var(--gray-400);
}

/* 2-column grid */
.kb-grid-2 {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
}
@media (min-width: 600px) {
  .kb-grid-2 { grid-template-columns: 1fr 1fr; }
}

/* 4-column grid */
.kb-grid-4 {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
}
@media (min-width: 500px) {
  .kb-grid-4 { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 900px) {
  .kb-grid-4 { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1100px) {
  .kb-grid-4 { grid-template-columns: repeat(4, 1fr); }
}

/* Medium card */
.kb-card {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  background: #fff;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-card);
  transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.kb-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-3px);
}
.kb-card__image {
  overflow: hidden;
}
.kb-card__image img {
  width: 100%;
  display: block;
  object-fit: cover;
  transition: transform 0.5s ease;
}
.kb-card:hover .kb-card__image img {
  transform: scale(1.04);
}
.kb-card__body {
  padding: 20px;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.kb-card__body h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--navy);
  line-height: 1.3;
  margin: 8px 0 10px;
}
.kb-card__body .kb-meta {
  margin-top: auto;
}

/* Medium variant */
.kb-card--medium .kb-card__image img {
  height: 220px;
}
.kb-card--medium .kb-card__body h3 {
  font-size: 19px;
}
.kb-card--medium .kb-excerpt {
  font-size: 14px;
  margin-bottom: 12px;
}

/* Small variant */
.kb-card--small .kb-card__image img {
  height: 160px;
}
.kb-card--small .kb-card__body {
  padding: 16px;
}
.kb-card--small .kb-card__body h3 {
  font-size: 15px;
  margin: 6px 0 8px;
}

/* ─── NEWS PAGE (nyheter-sida) ─── */

/* Featured top story — full-width highlight */
.news-featured {
  display: grid;
  grid-template-columns: 1fr;
  background: var(--navy);
  border-radius: 10px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  margin-bottom: 2.5rem;
  transition: box-shadow 0.2s;
}
@media (min-width: 768px) {
  .news-featured { grid-template-columns: 420px 1fr; }
}
.news-featured:hover {
  box-shadow: 0 12px 36px rgba(2,42,58,0.18);
}
.news-featured__img-wrap {
  min-height: 240px;
  background: linear-gradient(135deg, #0d3349 0%, #1a5a7a 100%);
  display: flex;
  align-items: center;
  justify-content: center;
}
.news-featured__img-wrap svg {
  opacity: 0.15;
  width: 80px;
  height: 80px;
  color: #fff;
}
.news-featured__img-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.news-featured__body {
  padding: 36px 40px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.news-featured__label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--teal);
  margin-bottom: 14px;
}
.news-featured__title {
  font-size: 24px;
  font-weight: 700;
  color: #fff;
  line-height: 1.3;
  margin-bottom: 10px;
}
.news-featured:hover .news-featured__title {
  color: rgba(255,255,255,0.85);
}
.news-featured__date {
  font-size: 13px;
  color: rgba(255,255,255,0.45);
  margin-bottom: 14px;
}
.news-featured__excerpt {
  font-size: 15px;
  color: rgba(255,255,255,0.7);
  line-height: 1.65;
}
.news-featured__readmore {
  margin-top: 22px;
  font-size: 14px;
  font-weight: 600;
  color: var(--teal);
  display: flex;
  align-items: center;
  gap: 6px;
}
.news-featured__readmore svg {
  width: 14px;
  height: 14px;
  transition: transform 0.2s;
}
.news-featured:hover .news-featured__readmore svg {
  transform: translateX(3px);
}

/* News list — image left, text right */
.news-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.news-list-item {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  padding: 24px 0;
  border-bottom: 1px solid var(--gray-100);
  text-decoration: none;
  color: inherit;
  transition: background 0.15s;
}
@media (min-width: 600px) {
  .news-list-item { grid-template-columns: 200px 1fr; }
}
@media (min-width: 900px) {
  .news-list-item { grid-template-columns: 260px 1fr; }
}
.news-list-item:hover {
  background: rgba(16,126,155,0.03);
  margin: 0 -16px;
  padding-left: 16px;
  padding-right: 16px;
}
.news-list-item:last-child {
  border-bottom: none;
}
.news-list__img {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 6px;
  background: linear-gradient(135deg, var(--navy) 0%, var(--navy-light) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  flex-shrink: 0;
}
.news-list__img svg {
  opacity: 0.2;
  width: 36px;
  height: 36px;
  color: #fff;
}
.news-list__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.news-list__body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
}
.news-list__meta {
  display: flex;
  align-items: center;
  gap: 10px;
}
.news-list__tag {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--teal);
  background: rgba(16,126,155,0.08);
  padding: 2px 9px;
  border-radius: 20px;
}
.news-list__date {
  font-size: 12px;
  color: var(--text-muted);
}
.news-list__title {
  font-size: 17px;
  font-weight: 700;
  color: var(--navy);
  line-height: 1.35;
  margin: 0;
}
.news-list-item:hover .news-list__title {
  color: var(--teal);
}
.news-list__excerpt {
  font-size: 14px;
  color: var(--text-muted);
  line-height: 1.6;
  margin: 0;
}
.news-list__readmore {
  font-size: 13px;
  font-weight: 600;
  color: var(--teal);
  display: flex;
  align-items: center;
  gap: 4px;
  margin-top: 4px;
}
.news-list__readmore svg {
  width: 13px;
  height: 13px;
  transition: transform 0.2s;
}
.news-list-item:hover .news-list__readmore svg {
  transform: translateX(3px);
}

/* ─── FOOTER CERTIFICATION BADGES ─── */
/* Styled via .footer-badges-row + .footer-badge in main.css */

/* ─── SECTION PADDING — tighter spacing site-wide (25px top+bottom = 50px between sections) ─── */
.section-pad {
  padding: 50px 0;
}

/* ─── BTN-GROUP: always 30px from preceding content in sections ─── */
.section-pad .btn-group,
.content-section .btn-group {
  margin-top: 30px;
}

/* ─── CHECK-LIST: remove orange dots, keep SVG check icons only ─── */
.branch-card ul li::before,
.branch-card ul li::after,
.check-list li::before,
.check-list li::after {
  content: none !important;
  display: none !important;
}

/* ─── BRANCH CARD: image at top with 10px gap, icon beside heading ─── */
.branch-card {
  padding: 20px;
}
.branch-card-img {
  display: block;
  width: calc(100% + 40px);
  height: 180px;
  object-fit: cover;
  border-radius: 0;
}
.branch-card-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 16px 0 8px;
}
.branch-card-header .branch-card-icon {
  margin-bottom: 0;
  flex-shrink: 0;
}
.branch-card-header h3 {
  margin: 0;
  flex: 1;
}

/* ── CONTACT STRIPE ── */
.contact-stripe {
  background: var(--navy);
  color: #fff;
  padding: 48px 0;
}
.contact-stripe__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  flex-wrap: wrap;
}
.contact-stripe .section-eyebrow { color: var(--gold-light); }
.contact-stripe h2 { color: #fff; margin: 0.25rem 0; font-size: 1.6rem; }
.contact-stripe p { color: #C8D8DD; margin: 0; }
.contact-stripe__actions { display: flex; gap: 1rem; flex-shrink: 0; flex-wrap: wrap; }
.contact-stripe .btn-outline {
  color: #fff;
  border-color: rgba(255,255,255,0.45);
}
.contact-stripe .btn-outline:hover {
  border-color: #fff;
  background: rgba(255,255,255,0.1);
  color: #fff;
}

/* ── SMART MODAL ── */
#gosab-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9999;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}
#gosab-modal.open { display: flex; }
.gosab-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(10, 26, 47, 0.75);
  backdrop-filter: blur(3px);
}
.gosab-modal__box {
  position: relative;
  background: #fff;
  border-radius: 16px;
  padding: 2.5rem 2rem;
  max-width: 600px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 24px 80px rgba(10, 26, 47, 0.3);
  animation: modalSlideIn 0.25s ease;
}
@keyframes modalSlideIn {
  from { opacity: 0; transform: translateY(24px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.gosab-modal__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: none;
  border: none;
  font-size: 1.75rem;
  line-height: 1;
  cursor: pointer;
  color: var(--navy);
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  transition: background 0.15s;
}
.gosab-modal__close:hover { background: var(--surface); }
.gosab-modal__header { margin-bottom: 1.5rem; }
.gosab-modal__title { font-size: 1.4rem; margin: 0.25rem 0 0.5rem; color: var(--navy); }
.gosab-modal__subtitle { color: #6b7c85; margin: 0; font-size: 0.9rem; }
body.modal-open { overflow: hidden; }

@media (max-width: 600px) {
  .contact-stripe__inner { flex-direction: column; text-align: center; }
  .contact-stripe__actions { justify-content: center; }
}

/* ── PRE-FOOTER MAP ── */
.pre-footer-map { background: var(--navy); }
.pre-footer-map__embed iframe {
  display: block;
  width: 100%;
  height: 380px;
  border: 0;
}
.pre-footer-map__info {
  display: flex;
  align-items: center;
  gap: 2rem;
  padding: 1.25rem 0;
  flex-wrap: wrap;
}
.pre-footer-map__detail {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: #C8D8DD;
  font-size: 0.9rem;
}
.pre-footer-map__detail svg { flex-shrink: 0; stroke: #5fc5bb; }
.pre-footer-map__detail span { color: #C8D8DD; }
.pre-footer-map__detail a { color: #fff; text-decoration: none; }
.pre-footer-map__detail a:hover { text-decoration: underline; }
.pre-footer-map__directions {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  color: #5fc5bb !important;
  font-weight: 600;
}
@media (max-width: 640px) {
  .pre-footer-map__embed iframe { height: 260px; }
  .pre-footer-map__info { gap: 1rem; }
}

/* Fix oversized arrow SVGs in problem-nav link-cards (section 6) */
.link-card div > svg { width: 20px; height: 20px; flex-shrink: 0; }

/* Card thumbnail photos */
.branch-card-thumb,
.feature-card-thumb {
  width: 100%;
  height: 160px;
  overflow: hidden;
  border-radius: 6px;
  margin-bottom: 16px;
  display: block;
}
.branch-card-thumb img,
.feature-card-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.35s ease;
}
.branch-card:hover .branch-card-thumb img,
.feature-card:hover .feature-card-thumb img {
  transform: scale(1.04);
}

/* ═══════════════════════════════════════════════════════════
   DUCOBOX / SERVICE PAGE COMPONENTS
   Added 2026-05-25 for DucoBox product + local landing pages
   ═══════════════════════════════════════════════════════════ */

/* ─── PAGE HERO — text colors inside content box ─── */
.page-hero__content h1 {
  color: #fff;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.6rem, 3vw, 2.2rem);
  line-height: 1.2;
  margin-bottom: 1rem;
}
.page-hero__content p {
  color: rgba(255,255,255,0.9);
  line-height: 1.65;
  margin-bottom: 0.75rem;
}
.page-hero__content .page-hero__intro {
  font-size: 1.05rem;
  color: #C8D8DD;
}
.page-hero__content .trust-strip {
  font-size: 0.82rem;
  color: rgba(255,255,255,0.55);
  margin-top: 1rem;
  margin-bottom: 0;
}

/* ─── BUTTON GROUP ─── */
.btn-group {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 1.5rem;
}

/* ─── BREADCRUMB ─── */
nav.breadcrumb,
nav.breadcrumb-nav {
  background: #053d52;
  border-bottom: none;
  padding: 12px 0;
}
.breadcrumb {
  padding: 0.75rem 0;
  font-size: 0.82rem;
}
.breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  list-style: none;
  padding: 0;
  margin: 0;
  max-width: var(--max-w, 1200px);
  margin-inline: auto;
  padding-inline: 1.5rem;
}
.breadcrumb__item + .breadcrumb__item::before {
  content: "›";
  margin-right: 0.35rem;
  color: var(--gray-400);
}
.breadcrumb__item a {
  color: var(--teal);
  text-decoration: none;
}
.breadcrumb__item a:hover {
  text-decoration: underline;
}
.breadcrumb__item[aria-current="page"] {
  color: var(--text-muted);
}

/* ─── SERVICE CARD GRID (3-col) ─── */
.service-card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 2rem;
}
@media (max-width: 900px) { .service-card-grid { grid-template-columns: repeat(2, 1fr) !important; } }
@media (max-width: 560px) { .service-card-grid { grid-template-columns: 1fr !important; } }

/* ─── FEATURE CARD ─── */
.feature-card {
  background: #fff;
  border: 1px solid var(--gray-100);
  border-radius: 12px;
  padding: 1.75rem;
  transition: box-shadow 0.3s ease, transform 0.3s ease, border-color 0.3s ease;
}
.feature-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
  border-color: var(--gray-200);
}
.feature-card__icon {
  display: block;
  margin-bottom: 1rem;
  color: var(--teal);
}
.feature-card h3 {
  font-size: 1rem;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 0.4rem;
}
.feature-card p {
  font-size: 0.88rem;
  color: var(--text-muted);
  line-height: 1.6;
}

/* ─── SECTION NAVY — override for feature cards ─── */
.section-navy {
  background: var(--navy) !important;
}
.section-navy h2 {
  color: #fff;
}
.section-navy > .section-inner > .section-eyebrow,
.section-navy .section-eyebrow {
  color: var(--gold-light) !important;
}
.section-navy .feature-card {
  background: #fff;
  border-color: rgba(255,255,255,0.1);
}
.section-navy .feature-card h3 {
  color: var(--navy);
}
.section-navy .feature-card p {
  color: var(--text-muted);
}
.section-navy .link-card {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.12);
  color: #fff;
}
.section-navy .link-card:hover {
  background: rgba(255,255,255,0.1);
  border-color: var(--teal);
}
.section-navy .link-card span {
  color: #fff;
}
.section-navy .link-card__arrow {
  color: var(--teal-light);
}

/* ─── PRODUCT CARD GRID ─── */
.product-card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 2rem;
  overflow: visible;
  padding-top: 14px;
}
@media (max-width: 900px) { .product-card-grid { grid-template-columns: 1fr; } }

/* ─── PRODUCT CARD ─── */
.product-card {
  background: #fff;
  border: 1px solid var(--gray-100);
  border-radius: 12px;
  padding: 1.75rem;
  display: flex;
  flex-direction: column;
  transition: box-shadow 0.3s ease, transform 0.3s ease;
  position: relative;
  overflow: visible;
}
.product-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}
.product-card--featured {
  border-color: var(--teal);
  box-shadow: var(--shadow-md), 0 0 0 1px var(--teal);
}
.product-card__label {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--teal);
  background: rgba(27,126,154,0.08);
  padding: 4px 12px;
  border-radius: 20px;
  margin-bottom: 1rem;
}
.product-card__badge {
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #fff;
  background: var(--gold);
  padding: 5px 18px;
  border-radius: 20px;
  white-space: nowrap;
  box-shadow: 0 2px 8px rgba(245,142,72,0.3);
}
.product-card__badge--subtle {
  background: var(--navy);
  box-shadow: 0 2px 8px rgba(2,42,58,0.25);
}
.product-card__img {
  width: 100%;
  height: auto;
  border-radius: 8px;
  margin-bottom: 1rem;
}
.product-card__header {
  margin-bottom: 0.5rem;
}
.product-card__header h3 {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--navy);
}
.product-card__price {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--teal);
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--gray-100);
}
.product-card__microcopy {
  font-size: 0.82rem;
  color: var(--text-muted);
  margin-top: 0.25rem;
}
.product-card .btn {
  margin-top: 15px;
  text-align: center;
  justify-content: center;
}

/* ─── PROBLEM GRID + CARDS ─── */
.problem-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-top: 2rem;
}
@media (max-width: 900px) { .problem-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .problem-grid { grid-template-columns: 1fr; } }

.problem-card {
  background: #fff;
  border: 1px solid var(--gray-100);
  border-radius: 12px;
  padding: 1.5rem;
  text-align: center;
  transition: box-shadow 0.3s ease, transform 0.3s ease, border-color 0.3s ease;
  text-decoration: none;
  color: inherit;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.problem-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}
.problem-card--link {
  cursor: pointer;
}
.problem-card--link:hover {
  border-color: var(--teal);
}
.problem-card__icon {
  margin-bottom: 1rem;
  color: var(--teal);
}
.problem-card h3 {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 0.5rem;
}
.problem-card p {
  font-size: 0.85rem;
  color: var(--text-muted);
  line-height: 1.5;
}
.problem-card__arrow {
  margin-top: auto;
  padding-top: 0.75rem;
  color: var(--teal);
}

/* ─── GEO GRID (startsida) ─── */
.geo-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* ─── GEO TAG ─── */
.geo-tag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0.7rem 1.2rem;
  background: #fff;
  border: 1px solid rgba(0,0,0,0.08);
  border-radius: 10px;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--navy, #022a3a);
  text-decoration: none;
  box-shadow: 0 2px 6px rgba(0,0,0,0.04);
  transition: all 0.2s ease;
}
.geo-tag::before {
  content: '';
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--teal, #1b7e9a);
  flex-shrink: 0;
}
.geo-tag:hover {
  background: var(--teal, #1b7e9a);
  color: #fff;
  border-color: var(--teal, #1b7e9a);
  box-shadow: 0 4px 12px rgba(27,126,154,0.2);
  transform: translateY(-1px);
  text-decoration: none;
}
.geo-tag:hover::before {
  background: #fff;
}

/* ─── GEO REGION GRID + CARD ─── */
/* Responsive auto-fill: more, neater cards per row on wide screens, graceful on mobile.
   (2026-06-03) */
.geo-region-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
  gap: 16px;
  margin-top: 1.75rem;
}
@media (max-width: 420px) { .geo-region-grid { grid-template-columns: 1fr !important; } }

.geo-region-card {
  background: #fff;
  border: 1px solid var(--gray-100);
  border-radius: 12px;
  padding: 1.75rem;
  transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.geo-region-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}
.geo-region-card__icon {
  display: block;
  margin-bottom: 1rem;
  color: var(--teal);
}
.geo-region-card h3 {
  font-size: 1rem;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 0.5rem;
}
.geo-region-card p {
  font-size: 0.88rem;
  color: var(--text-muted);
  line-height: 1.6;
  margin-bottom: 1rem;
}
.link-card__inline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--teal);
  font-weight: 600;
  font-size: 0.9rem;
  text-decoration: none;
}
.link-card__inline:hover {
  color: var(--teal-muted);
  text-decoration: underline;
}

/* ─── PROCESS TIMELINE (horizontal 5-step) ─── */
.process-timeline {
  display: flex;
  margin: 2.5rem 0 1.5rem;
  position: relative;
}
.process-timeline::before {
  content: "";
  position: absolute;
  top: 28px;
  left: 10%;
  right: 10%;
  height: 2px;
  background: var(--gray-100);
  z-index: 0;
}
.process-step {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  position: relative;
  z-index: 1;
}
.process-step__icon {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--teal);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 0.75rem;
  flex-shrink: 0;
}
.process-step__icon svg {
  width: 24px;
  height: 24px;
  color: var(--teal);
}
.process-step__number {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--navy);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 1.1rem;
  margin-bottom: 0.75rem;
  flex-shrink: 0;
  position: relative;
}
.process-step__label {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--teal);
  margin-bottom: 0.25rem;
}
.process-step p {
  font-size: 0.85rem;
  color: var(--text-muted);
  line-height: 1.4;
  max-width: 160px;
  margin: 0;
}
@media (max-width: 640px) {
  .process-timeline {
    flex-direction: column;
    gap: 1rem;
    align-items: flex-start;
  }
  .process-timeline::before {
    display: none;
  }
  .process-step {
    flex-direction: row;
    text-align: left;
    gap: 1rem;
  }
  .process-step__number,
  .process-step__icon {
    width: 40px;
    height: 40px;
    font-size: 0.95rem;
    margin-bottom: 0;
  }
  .process-step__icon svg { width: 20px; height: 20px; }
  .process-step p { max-width: none; }
}

/* ─── CONTENT WITH IMAGE (2-col) ─── */
.content-with-image {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: start;
  margin-top: 1.5rem;
}
.content-with-image__text { }
.content-with-image__media img {
  width: 100%;
  height: auto;
  border-radius: 12px;
}
.content-with-image__caption {
  font-size: 0.82rem;
  color: var(--text-muted);
  font-style: italic;
  margin-top: 0.75rem;
}
@media (max-width: 768px) {
  .content-with-image { grid-template-columns: 1fr; }
  .content-with-image__media { order: -1; }
  .content-with-image__media img { max-height: 280px; object-fit: cover; }
}

/* ─── CHECKLIST WITH ILLUSTRATION (2-col layout) ─── */
.checklist-with-illustration {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: center;
  margin-top: 1.5rem;
}
.checklist-with-illustration__content { }
.checklist-with-illustration__content p {
  margin-bottom: 1rem;
}
.checklist-with-illustration__media,
.checklist-with-illustration__visual {
  display: flex;
  align-items: center;
  justify-content: center;
}
.checklist-with-illustration__media svg,
.checklist-with-illustration__visual svg {
  width: 100%;
  max-width: 430px;
  height: auto;
}
.checklist-with-illustration__media img,
.checklist-with-illustration__visual img {
  width: 100%;
  height: auto;
  border-radius: 12px;
  object-fit: cover;
  max-height: 400px;
}
.checklist-illustration {
  filter: drop-shadow(0 2px 8px rgba(0,0,0,0.06));
}
@media (max-width: 768px) {
  .checklist-with-illustration { grid-template-columns: 1fr; }
  .checklist-with-illustration__media,
  .checklist-with-illustration__visual { order: -1; }
  .checklist-with-illustration__media svg,
  .checklist-with-illustration__visual svg { max-width: 280px; }
  .checklist-with-illustration__media img,
  .checklist-with-illustration__visual img { max-height: 240px; }
}

/* ─── COMPARISON GRID ─── */
.comparison-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  margin-top: 2rem;
}
.comparison-card {
  background: #fff;
  border: 1px solid var(--gray-100);
  border-radius: 12px;
  padding: 1.75rem;
  text-align: center;
  transition: box-shadow 0.3s ease;
}
.comparison-card:hover {
  box-shadow: var(--shadow-md);
}
.comparison-card__icon {
  margin-bottom: 1rem;
}
.comparison-card__icon svg {
  color: var(--teal);
}
.comparison-card h3 {
  font-size: 1.05rem;
  color: var(--navy);
  margin-bottom: 0.75rem;
}
.comparison-card p {
  font-size: 0.9rem;
  color: var(--text-muted);
  line-height: 1.5;
  margin: 0;
}
@media (max-width: 560px) {
  .comparison-grid { grid-template-columns: 1fr; }
}

/* ─── CALLOUT BOX ─── */
.callout-box {
  background: var(--surface);
  border-left: 4px solid var(--teal);
  border-radius: 0 8px 8px 0;
  padding: 1.25rem 1.5rem;
  margin-top: 1.5rem;
}
.callout-box p {
  margin: 0;
  font-size: 0.95rem;
  color: var(--navy);
  line-height: 1.5;
}

/* ─── TRUST GRID ─── */
.trust-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
  margin-top: 2rem;
}
.trust-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.5rem;
}
.trust-item svg {
  opacity: 0.85;
}
.trust-item span {
  font-size: 0.85rem;
  font-weight: 600;
  opacity: 0.9;
}
@media (max-width: 640px) {
  .trust-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ─── TABLE (comparison) ─── */
.table-responsive {
  overflow-x: auto;
  margin-top: 1.5rem;
  -webkit-overflow-scrolling: touch;
}
.gosab-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9rem;
}
.gosab-table th {
  background: var(--navy);
  color: #fff;
  font-weight: 700;
  padding: 12px 16px;
  text-align: left;
  white-space: nowrap;
}
.gosab-table th:first-child {
  border-radius: 8px 0 0 0;
}
.gosab-table th:last-child {
  border-radius: 0 8px 0 0;
}
.gosab-table td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--gray-100);
  color: var(--text);
}
.gosab-table tbody tr:hover {
  background: var(--gray-50);
}
.gosab-table__highlight {
  background: rgba(27,126,154,0.06) !important;
}
.gosab-table__highlight td {
  color: var(--teal-muted);
  font-weight: 600;
}

/* ─── FAQ ACCORDION (matching main.js selectors) ─── */
.faq-list {
  max-width: 800px;
  margin: 2rem auto 0;
}
.faq-item {
  border-bottom: 1px solid var(--gray-100);
  overflow: hidden;
}
.faq-question {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.25rem 0;
  font-size: 1rem;
  font-weight: 600;
  color: var(--navy);
  text-align: left;
  cursor: pointer;
  gap: 1rem;
  background: none;
  border: none;
  font-family: inherit;
}
.faq-question svg {
  width: 20px;
  height: 20px;
  color: var(--gray-400);
  flex-shrink: 0;
  transition: transform 0.3s ease, color 0.3s ease;
}
.faq-item.open .faq-question svg {
  transform: rotate(180deg);
  color: var(--gold);
}
.faq-answer {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s ease;
}
.faq-answer-inner {
  padding: 0 0 1.25rem;
  font-size: 0.92rem;
  color: var(--text-muted);
  line-height: 1.7;
}

/* ─── CTA BANNER refinement ─── */
.cta-banner h2 {
  color: #fff;
}
.cta-banner p {
  color: rgba(255,255,255,0.8);
}

/* ─── SECTION EYEBROW (universal) ─── */
.section-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--gold);
  margin-bottom: 0.75rem;
}
.section-eyebrow::before {
  content: "";
  width: 28px;
  height: 2px;
  background: currentColor;
  flex-shrink: 0;
}


/* ─── RESPONSIVE VIDEO EMBED (YouTube 16:9) ─── */
.video-embed {
  position: relative;
  max-width: 720px;
  margin: 1.5rem auto 0;
  border-radius: 12px;
  overflow: hidden;
  aspect-ratio: 16 / 9;
}
.video-embed iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
/* Fallback for browsers without aspect-ratio */
@supports not (aspect-ratio: 16 / 9) {
  .video-embed {
    padding-bottom: 56.25%;
    height: 0;
  }
}

/* ─── CARD SLIDER (karusell) ─── */
.card-slider {
  position: relative;
}
.card-slider__track {
  display: flex;
  gap: 1.5rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding: 0.5rem 0 1.5rem;
}
.card-slider__track::-webkit-scrollbar {
  display: none;
}
.card-slider__slide {
  flex: 0 0 calc(33.333% - 1rem);
  scroll-snap-align: start;
  min-width: 0;
}
/* Arrow buttons */
.card-slider__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-70%);
  z-index: 3;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1.5px solid var(--border);
  background: #fff;
  color: var(--navy);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  transition: background 0.2s, border-color 0.2s, box-shadow 0.2s;
}
.card-slider__arrow:hover {
  background: var(--surface);
  border-color: var(--teal);
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}
.card-slider__arrow:disabled {
  opacity: 0.3;
  cursor: default;
  pointer-events: none;
}
.card-slider__arrow--prev {
  left: -22px;
}
.card-slider__arrow--next {
  right: -22px;
}
.card-slider__arrow svg {
  width: 20px;
  height: 20px;
  stroke: currentColor;
  stroke-width: 2;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
/* Dots */
.card-slider__dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  padding-top: 0.25rem;
}
.card-slider__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--border);
  border: none;
  padding: 0;
  cursor: pointer;
  transition: background 0.2s, transform 0.2s;
}
.card-slider__dot--active {
  background: var(--teal);
  transform: scale(1.3);
}
/* section-navy context: light arrows */
.section-navy .card-slider__arrow {
  background: rgba(255,255,255,0.12);
  border-color: rgba(255,255,255,0.3);
  color: #fff;
}
.section-navy .card-slider__arrow:hover {
  background: rgba(255,255,255,0.2);
  border-color: rgba(255,255,255,0.5);
}
.section-navy .card-slider__dot {
  background: rgba(255,255,255,0.3);
}
.section-navy .card-slider__dot--active {
  background: var(--gold);
}

/* ── Slider peek variant (3.5 cards visible — hints at more) ── */
.card-slider--peek .card-slider__slide {
  flex: 0 0 calc(28.5% - 1rem);
}
.card-slider--peek .review-card,
.card-slider__slide .service-card {
  height: 100%;
}

/* ── Slider responsive ── */
@media (max-width: 1024px) {
  .card-slider__slide {
    flex: 0 0 calc(50% - 0.75rem);
  }
  .card-slider--peek .card-slider__slide {
    flex: 0 0 calc(45% - 0.75rem);
  }
  .card-slider__arrow--prev { left: -12px; }
  .card-slider__arrow--next { right: -12px; }
}
@media (max-width: 640px) {
  .card-slider__slide {
    flex: 0 0 85%;
  }
  .card-slider--peek .card-slider__slide {
    flex: 0 0 80%;
  }
  .card-slider__arrow {
    display: none;
  }
}

/* ═══════════════════════════════════════════════════════════
   STARTSIDA — Hero trust badges
   ═══════════════════════════════════════════════════════════ */
.trust-badges {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 15px;
  margin-top: 1.25rem;
}
.trust-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.82rem;
  color: rgba(255,255,255,0.85);
  font-weight: 500;
  letter-spacing: 0.01em;
}
.trust-badge img {
  border-radius: 4px;
  flex-shrink: 0;
}

/* ═══════════════════════════════════════════════════════════
   STARTSIDA — USP row (Varför Gösab)
   ═══════════════════════════════════════════════════════════ */
.usp-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 1.5rem;
}
.usp-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0.45rem 1rem;
  background: rgba(27,126,154,0.12);
  color: var(--teal, #1b7e9a);
  font-size: 0.85rem;
  font-weight: 600;
  border-radius: 100px;
  white-space: nowrap;
}
.section-navy .usp-item {
  background: rgba(255,255,255,0.1);
  color: rgba(255,255,255,0.9);
}

/* ═══════════════════════════════════════════════════════════
   STARTSIDA — Review slider / cards (Google-recensioner)
   ═══════════════════════════════════════════════════════════ */
.review-slider {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-top: 2rem;
}
.review-card {
  background: #fff;
  border-radius: 12px;
  padding: 1.75rem;
  border: 1px solid rgba(0,0,0,0.06);
  box-shadow: 0 2px 8px rgba(0,0,0,0.04);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.review-card:hover {
  box-shadow: 0 6px 20px rgba(0,0,0,0.08);
  transform: translateY(-2px);
}
.review-card__stars {
  color: var(--gold, #f58e48);
  font-size: 1.1rem;
  letter-spacing: 2px;
  margin-bottom: 0.75rem;
}
.review-card__title {
  font-family: var(--font-display, 'Montserrat', sans-serif);
  font-size: 1rem;
  font-weight: 700;
  color: var(--navy, #022a3a);
  margin: 0 0 0.75rem;
}
.review-card__quote {
  font-size: 0.92rem;
  line-height: 1.65;
  color: var(--text-body, #334155);
  margin: 0 0 1rem;
  padding: 0;
  border: none;
  font-style: italic;
}
.review-card__author {
  font-size: 0.8rem;
  color: var(--text-muted, #5a6a75);
  margin: 0;
  font-weight: 500;
}
@media (max-width: 1024px) {
  .review-slider {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 640px) {
  .review-slider {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
}

/* ═══════════════════════════════════════════════════════════
   STARTSIDA — Audience cards (Målgrupper)
   ═══════════════════════════════════════════════════════════ */
.audience-card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-top: 2rem;
}
.audience-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid rgba(0,0,0,0.06);
  box-shadow: 0 2px 8px rgba(0,0,0,0.04);
  text-decoration: none;
  color: inherit;
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.audience-card:hover {
  box-shadow: 0 8px 24px rgba(0,0,0,0.1);
  transform: translateY(-3px);
  text-decoration: none;
  color: inherit;
}
.audience-card__img {
  width: 100%;
  height: 200px;
  overflow: hidden;
}
.audience-card__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.audience-card__body {
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.audience-card__body h3 {
  font-family: var(--font-display, 'Montserrat', sans-serif);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--navy, #022a3a);
  margin: 0 0 0.75rem;
}
.audience-card__body p {
  font-size: 0.92rem;
  line-height: 1.6;
  color: var(--text-body, #334155);
  margin: 0 0 1rem;
  flex: 1;
}
.audience-card__body .link-card-cta {
  margin-top: auto;
}
/* Icon wrapper for audience cards (SVG without explicit w/h) */
.audience-card__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 10px;
  background: rgba(26,138,125,0.08);
  margin-bottom: 1rem;
  flex-shrink: 0;
  color: var(--teal);
}
.audience-card__icon svg {
  width: 24px;
  height: 24px;
}
@media (max-width: 768px) {
  .audience-card-grid {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
  .audience-card__img {
    height: 180px;
  }
}

/* ═══════════════════════════════════════════════════════════
   STARTSIDA — Contact form (cp-form)
   ═══════════════════════════════════════════════════════════ */
.cp-form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.cp-form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
.cp-form__field {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.cp-form__field label {
  font-size: 0.82rem;
  font-weight: 600;
  color: rgba(255,255,255,0.7);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.cp-form__field input,
.cp-form__field select,
.cp-form__field textarea {
  padding: 0.65rem 0.9rem;
  border: 1px solid rgba(255,255,255,0.2);
  border-radius: 8px;
  background: rgba(255,255,255,0.08);
  color: #fff;
  font-size: 0.95rem;
  font-family: var(--font-body, 'Poppins', sans-serif);
  transition: border-color 0.2s ease, background 0.2s ease;
}
.cp-form__field input:focus,
.cp-form__field select:focus,
.cp-form__field textarea:focus {
  outline: none;
  border-color: var(--teal, #1b7e9a);
  background: rgba(255,255,255,0.12);
}
.cp-form__field select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23fff' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.9rem center;
  padding-right: 2.5rem;
}
.cp-form__field select option {
  background: var(--navy, #022a3a);
  color: #fff;
}
.cp-form__field textarea {
  resize: vertical;
  min-height: 100px;
}
.cp-form__note {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.5);
  margin: 0;
}
@media (max-width: 640px) {
  .cp-form__row {
    grid-template-columns: 1fr;
  }
}


/* ═══════════════════════════════════════════════════════════
   DESIGN UPGRADE — Hiro-level finess lift
   Patterns sourced from JobOffice + JMG reference sites.
   Adds: animated card accents, fade-edge sliders, gradient
   overlays, review watermarks, premium shadows, section rhythm.
   ═══════════════════════════════════════════════════════════ */

/* ─── 1. ANIMATED TOP-BORDER ACCENT ON CARDS ─── */
/* Gold gradient line that scales in from left on hover — the #1 pattern
   from both reference sites that creates the "premium" feel. */

.feature-card::before,
.service-card::before,
.audience-card::before,
.review-card::before,
.problem-card::before,
.geo-region-card::before,
.link-card::before,
.product-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--teal), var(--gold));
  border-radius: 12px 12px 0 0;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.35s ease;
}
.feature-card:hover::before,
.service-card:hover::before,
.audience-card:hover::before,
.review-card:hover::before,
.problem-card:hover::before,
.geo-region-card:hover::before,
.link-card:hover::before,
.product-card:hover::before {
  transform: scaleX(1);
}
/* Ensure cards have position:relative for the ::before to work */
.feature-card,
.service-card,
.audience-card,
.review-card,
.problem-card,
.geo-region-card,
.link-card {
  position: relative;
  overflow: hidden;
}

/* ─── 2. SLIDER FADE EDGES ─── */
/* Gradient fades on left/right edges hint that more content is scrollable.
   Pattern from JobOffice's hiro-slider. */

.card-slider::before,
.card-slider::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  width: 3rem;
  z-index: 2;
  pointer-events: none;
  transition: opacity 0.3s ease;
}
.card-slider::before {
  left: 0;
  background: linear-gradient(to right, #fff, transparent);
  opacity: 0; /* hidden until scrolled */
}
.card-slider::after {
  right: 0;
  background: linear-gradient(to left, #fff, transparent);
  opacity: 1; /* visible by default to hint at more */
}
/* When inside section-navy (dark bg), use navy gradient */
.section-navy .card-slider::before {
  background: linear-gradient(to right, var(--navy), transparent);
}
.section-navy .card-slider::after {
  background: linear-gradient(to left, var(--navy), transparent);
}
/* When inside off-white / surface sections */
.section-pad[style*="off-white"] .card-slider::before,
.section-pad[style*="surface"] .card-slider::before {
  background: linear-gradient(to right, var(--surface), transparent);
}
.section-pad[style*="off-white"] .card-slider::after,
.section-pad[style*="surface"] .card-slider::after {
  background: linear-gradient(to left, var(--surface), transparent);
}
/* JS will toggle these classes on scroll */
.card-slider.scrolled::before { opacity: 1; }
.card-slider.scrolled-end::after { opacity: 0; }

/* ─── 3. NAVY SECTION GRADIENT OVERLAY ─── */
/* Subtle radial gradient adds depth to dark sections. */

.section-navy::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 20% 80%, rgba(27,126,154,0.06) 0%, transparent 50%),
              radial-gradient(ellipse at 80% 20%, rgba(245,142,72,0.04) 0%, transparent 50%);
  pointer-events: none;
  z-index: 0;
}
.section-navy {
  position: relative;
  overflow: hidden;
}
.section-navy > .section-inner {
  position: relative;
  z-index: 1;
}

/* ─── 4. REVIEW CARD — QUOTATION MARK WATERMARK ─── */
/* Giant gold quote mark as decorative watermark, from JobOffice testimonials. */

.review-card::after {
  content: '\201C';
  position: absolute;
  top: 8px;
  right: 16px;
  font-family: var(--font-display);
  font-size: 4.5rem;
  color: var(--teal);
  opacity: 0.07;
  line-height: 1;
  pointer-events: none;
  z-index: 0;
}
.review-card > * {
  position: relative;
  z-index: 1;
}

/* ─── 5. PREMIUM SHADOW SYSTEM ─── */
/* Multi-layer shadows with navy hue for depth without darkness. */

.feature-card:hover,
.audience-card:hover,
.review-card:hover,
.geo-region-card:hover,
.kb-card:hover,
.link-card:hover {
  box-shadow: 0 4px 16px rgba(2,42,58,0.08), 0 12px 40px rgba(2,42,58,0.06);
}

/* ─── 6. SECTION RHYTHM — ALTERNATING BACKGROUNDS ─── */
/* Subtle background tint on every other section for visual rhythm. */

.content-section.section-pad:nth-child(even):not(.section-navy):not([style*="background"]) {
  background: var(--surface);
}
/* Override fade edges for surface-bg sections */
.content-section.section-pad:nth-child(even):not(.section-navy) .card-slider::before {
  background: linear-gradient(to right, var(--surface), transparent);
}
.content-section.section-pad:nth-child(even):not(.section-navy) .card-slider::after {
  background: linear-gradient(to left, var(--surface), transparent);
}

/* ─── 7. STATS STRIP — Social proof numbers ─── */
/* Navy bar with gold stat numbers, used after hero on landing pages. */

.stats-strip {
  background: var(--navy);
  color: #fff;
  padding: 2.25rem 0;
  position: relative;
  overflow: hidden;
}
.stats-strip::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(27,126,154,0.06) 0%, transparent 40%, rgba(245,142,72,0.04) 100%);
  pointer-events: none;
}
.stats-strip-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  max-width: 1100px;
  margin-inline: auto;
  padding: 0 clamp(1.25rem, 5vw, 3.75rem);
  position: relative;
  z-index: 1;
}
@media (min-width: 768px) {
  .stats-strip-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: 2rem;
  }
}
.stat-item {
  text-align: center;
}
.stat-value {
  font-family: var(--font-display);
  font-size: clamp(2rem, 4vw, 2.75rem);
  font-weight: 800;
  color: var(--gold);
  line-height: 1;
  margin-bottom: 0.35rem;
}
.stat-label {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.55);
  font-weight: 500;
  letter-spacing: 0.02em;
}

/* ─── 8. CARD ICON UPGRADE ─── */
/* Bigger icon containers with rounded background, like JobOffice feature-mini-icon. */

.feature-card__icon {
  width: 52px;
  height: 52px;
  border-radius: 12px;
  background: rgba(27,126,154,0.08);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1.25rem;
  transition: background 0.3s ease;
}
.feature-card:hover .feature-card__icon {
  background: rgba(27,126,154,0.14);
}
.feature-card__icon svg {
  width: 26px;
  height: 26px;
  color: var(--teal);
}

/* ─── 9. CERTIFICATION BADGE — gold left-border accent ─── */
/* Like JobOffice's cert-badge component. */

.cert-highlight {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 1rem 1.25rem;
  background: rgba(2,42,58,0.04);
  border-radius: var(--radius-md, 8px);
  border-left: 3px solid var(--gold);
  margin-top: 1.5rem;
}
.cert-highlight svg {
  flex-shrink: 0;
  color: var(--gold);
}
.cert-highlight-text {
  font-size: 0.85rem;
  color: var(--text-muted);
  line-height: 1.5;
}
.cert-highlight-text strong {
  color: var(--text);
  display: block;
}

/* ─── 10. INTEGRATION / SERVICE TAGS ─── */
/* Pill-shaped tags with subtle border, like JobOffice's integration-tag. */

.service-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0.45rem 1rem;
  background: rgba(2,42,58,0.05);
  border: 1px solid rgba(2,42,58,0.08);
  border-radius: 100px;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--navy);
  transition: background 0.2s ease, border-color 0.2s ease;
}
.service-tag:hover {
  background: rgba(2,42,58,0.09);
  border-color: var(--teal);
}

/* ─── 11. CONTENT-WITH-IMAGE — subtle image shadow + radius ─── */

.content-with-image__media {
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 20px rgba(2,42,58,0.08);
}
.content-with-image__media img {
  transition: transform 0.5s ease;
}
.content-with-image__media:hover img {
  transform: scale(1.03);
}

/* ─── 12. SECTION TITLE — subtle gold underline ─── */
/* Adds a short gold line under h2 section titles for polish. */

.section-title::after {
  content: '';
  display: block;
  width: 48px;
  height: 3px;
  background: linear-gradient(90deg, var(--gold), var(--teal));
  margin-top: 0.75rem;
  border-radius: 2px;
}
/* Centered variant */
.text-center .section-title::after,
[style*="text-align: center"] .section-title::after {
  margin-left: auto;
  margin-right: auto;
}
/* Dark sections: lighter line */
.section-navy .section-title::after {
  background: linear-gradient(90deg, var(--gold), rgba(255,255,255,0.2));
}
/* Don't double up if already has eyebrow */
.section-eyebrow + .section-title::after {
  display: none;
}

/* ─── 13. PROCESS STEP CONNECTORS — dots between steps ─── */
/* Desktop: dotted line between timeline steps. */

@media (min-width: 641px) {
  .process-step:not(:last-child)::after {
    content: '';
    position: absolute;
    top: 28px;
    right: -12px;
    width: 24px;
    height: 2px;
    background: repeating-linear-gradient(
      to right,
      var(--gray-200) 0px,
      var(--gray-200) 4px,
      transparent 4px,
      transparent 8px
    );
  }
}

/* ─── 14. BUTTON GLOW ON HOVER ─── */
/* Subtle brand-colored glow on primary buttons. */

.btn-primary:hover {
  box-shadow: 0 4px 16px rgba(245,142,72,0.35), 0 0 0 2px rgba(245,142,72,0.1);
}
.btn-outline:hover {
  box-shadow: 0 4px 12px rgba(2,42,58,0.08);
}

/* ─── 15. CONTACT STRIPE — gradient overlay ─── */

.contact-stripe::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(27,126,154,0.08) 0%, transparent 50%, rgba(245,142,72,0.05) 100%);
  pointer-events: none;
}
.contact-stripe {
  position: relative;
  overflow: hidden;
}
.contact-stripe__inner {
  position: relative;
  z-index: 1;
}

/* ─── 16. CTA BANNER — gradient overlay ─── */

.cta-banner {
  position: relative;
  overflow: hidden;
}
.cta-banner::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 30% 50%, rgba(245,142,72,0.08) 0%, transparent 60%);
  pointer-events: none;
}

/* ─── 17. GEO-TAG HOVER MICRO-ANIMATION ─── */

.geo-tag {
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}
.geo-tag:hover {
  transform: translateY(-2px) scale(1.02);
}

/* ─── 18. SLIDER DOTS UPGRADE ─── */
/* Elongated active dot (pill shape) for more polished look. */

.card-slider__dot--active {
  width: 20px;
  border-radius: 4px;
}

/* ─── 19. SECTION-NAVY LINK-CARD — glass effect ─── */
/* Frosted glass look for cards on dark backgrounds. */

.section-navy .feature-card {
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(4px);
}
.section-navy .feature-card::before {
  background: linear-gradient(90deg, var(--gold), var(--teal));
}

/* ─── 20. SMOOTH SCROLL PADDING (for anchor links) ─── */

html {
  scroll-padding-top: 80px;
  scroll-behavior: smooth;
}

/* ─── 21. BREADCRUMB — DARK VARIANT ─── */
/* Breadcrumb on hero/dark backgrounds needs readable contrast.
   Supports both BEM (.breadcrumb__item) and theme (.breadcrumb-list li) patterns. */

.breadcrumb--dark {
  background: #053d52;
  padding: 0.6rem 0;
}
/* BEM pattern */
.breadcrumb--dark .breadcrumb__item a {
  color: rgba(255,255,255,0.7);
}
.breadcrumb--dark .breadcrumb__item a:hover {
  color: #fff;
}
.breadcrumb--dark .breadcrumb__item + .breadcrumb__item::before {
  color: rgba(255,255,255,0.35);
}
.breadcrumb--dark .breadcrumb__item[aria-current="page"] {
  color: rgba(255,255,255,0.5);
}
/* Theme pattern (breadcrumb-list) */
.breadcrumb--dark .breadcrumb-list a {
  color: rgba(255,255,255,0.7);
}
.breadcrumb--dark .breadcrumb-list a:hover {
  color: #fff;
}
.breadcrumb--dark .breadcrumb-list li:not(:last-child)::after {
  color: rgba(255,255,255,0.35);
}
.breadcrumb--dark .breadcrumb-list span {
  color: rgba(255,255,255,0.5);
}

/* ─── 22. KUNSKAPSBANK PAGE ─── */

.kb-page-hero {
  background: #053d52;
  padding: 3rem 0 3.5rem;
  text-align: center;
}
.kb-page-hero .section-eyebrow { color: var(--gold); }
.kb-page-hero .section-title { color: #fff; }
.kb-page-hero .section-title::after { margin-inline: auto; }
.kb-page-hero .section-intro { color: rgba(255,255,255,0.7); max-width: 620px; margin-inline: auto; }

/* Category filter */
.kb-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  margin-bottom: 2.5rem;
}
.kb-filter-btn {
  padding: 0.5rem 1.25rem;
  border-radius: 100px;
  border: 1.5px solid var(--border);
  background: #fff;
  font-family: var(--font-display);
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-muted);
  cursor: pointer;
  transition: all 0.2s ease;
}
.kb-filter-btn:hover {
  border-color: var(--teal);
  color: var(--teal);
}
.kb-filter-btn--active {
  background: var(--teal);
  border-color: var(--teal);
  color: #fff;
}
.kb-filter-btn--active:hover {
  background: var(--navy);
  border-color: var(--navy);
  color: #fff;
}

/* Badge stretch fix */
.kb-tag {
  align-self: flex-start;
}

/* ─── 23. SINGLE POST DESIGN ─── */

.single-post-hero {
  position: relative;
  min-height: 420px;
  display: flex;
  align-items: flex-end;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.single-post-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(2,26,40,0.25) 0%, rgba(2,26,40,0.82) 100%);
}
.single-post-hero__content {
  position: relative;
  z-index: 1;
  padding: 3rem 0;
  width: 100%;
}
.single-post-hero__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-bottom: 1rem;
}
.single-post-hero__meta .kb-tag {
  background: rgba(27,126,154,0.25);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.15);
}
.single-post-hero .section-title {
  color: #fff;
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  max-width: 780px;
}
.single-post-hero .section-title::after { display: none; }
.single-post-hero__date {
  color: rgba(255,255,255,0.6);
  font-size: 0.85rem;
}
.single-post-hero__reading-time {
  color: rgba(255,255,255,0.6);
  font-size: 0.85rem;
}
.single-post-hero__reading-time::before {
  content: "·";
  margin-right: 12px;
}

/* Article body */
.article-body {
  max-width: 740px;
  margin: 0 auto;
  padding: 3rem 0 2rem;
}
.article-body .ingress,
.article-body p.ingress {
  font-size: 1.15rem;
  color: var(--text-muted);
  line-height: 1.75;
  margin-bottom: 1.5rem;
}
.article-body h2 {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--navy);
  margin: 2.5rem 0 0.75rem;
  line-height: 1.3;
}
.article-body h3 {
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--navy);
  margin: 2rem 0 0.5rem;
  line-height: 1.35;
}
.article-body p {
  line-height: 1.75;
  margin-bottom: 1rem;
  color: var(--text);
}
.article-body ul,
.article-body ol {
  padding-left: 1.5rem;
  margin-bottom: 1.25rem;
}
.article-body li {
  margin-bottom: 0.5rem;
  line-height: 1.65;
}
.article-body strong {
  color: var(--navy);
  font-weight: 600;
}
.article-body blockquote {
  border-left: 3px solid var(--gold);
  padding: 1rem 1.5rem;
  margin: 1.5rem 0;
  background: rgba(245,142,72,0.04);
  border-radius: 0 8px 8px 0;
}
.article-body blockquote p {
  color: var(--text-muted);
  font-style: italic;
}
.article-body img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  margin: 1.5rem 0;
}

/* Related posts */
.related-posts {
  border-top: none;
}
.related-posts .section-eyebrow { text-align: center; }
.related-posts .section-title { text-align: center; }
.related-posts .section-title::after { margin-inline: auto; }

/* Single post hero — mobile */
@media (max-width: 600px) {
  .single-post-hero { min-height: 320px; }
  .single-post-hero__content { padding: 2rem 0; }
}

/* Back to KB link */
.back-to-kb {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--teal);
  text-decoration: none;
  transition: color 0.2s;
}
.back-to-kb:hover { color: var(--navy); }
.back-to-kb svg { transition: transform 0.2s; }
.back-to-kb:hover svg { transform: translateX(-3px); }

/* ═══════════════════════════════════════════════════════════
   24–35. MISSING CLASS DEFINITIONS (audit fix 2026-05-29)
   ═══════════════════════════════════════════════════════════ */

/* ─── 24. AUDIENCE GRID ─── */
/* Grid for audience/target-group cards (BRF, industri, etc.) */

.audience-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  margin-top: 2rem;
}
@media (min-width: 769px) {
  .audience-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 480px) {
  .audience-grid { grid-template-columns: 1fr; }
}

/* ─── 25. CTA ACTIONS ─── */
/* Button group wrapper in CTA banners and contact sections. */

.cta-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 1.5rem;
}
.cta-actions .btn { min-width: 180px; }
@media (max-width: 480px) {
  .cta-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .cta-actions .btn { min-width: 0; }
}

/* ─── 26. CTA TEXT LINK ─── */
/* Secondary inline text link with arrow, used for cross-linking services. */

.cta-text-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--teal);
  text-decoration: none;
  transition: color 0.2s ease, gap 0.2s ease;
}
.cta-text-link:hover {
  color: var(--navy);
  gap: 8px;
}

/* ─── 27. CERT GRID / CERT ITEM / CERT CONTACT ─── */
/* Certification badge grid on startsida. */

.cert-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 2.5rem;
  margin-top: 2rem;
}
.cert-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text-muted);
}
.cert-item img {
  max-height: 80px;
  width: auto;
  object-fit: contain;
}
.cert-contact {
  margin-top: 2rem;
  color: var(--text-muted);
  font-size: 0.95rem;
}

/* ─── 28. CTA BANNER OVERLAY & CONTENT ─── */
/* Full-width CTA banner with background image, dark overlay, and centered content. */

.cta-banner__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(2,26,40,0.7) 0%, rgba(2,26,40,0.85) 100%);
  z-index: 0;
}
.cta-banner__content {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: 4rem 1.5rem;
  color: #fff;
}
.cta-banner__content h2 {
  color: #fff;
  margin-bottom: 0.75rem;
}
.cta-banner__content p {
  color: rgba(255,255,255,0.8);
  max-width: 640px;
  margin-inline: auto;
  margin-bottom: 1.5rem;
}

/* ─── 29. SERVICE CARD — IMAGE VARIANT ─── */
/* Horizontal card with image + body, used in card slider. */

.service-card--has-img {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
}
.service-card__img {
  overflow: hidden;
  border-radius: var(--radius-md, 12px) var(--radius-md, 12px) 0 0;
  flex-shrink: 0;
}
.service-card__img img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.service-card--has-img:hover .service-card__img img {
  transform: scale(1.04);
}
.service-card__body {
  padding: 1.25rem 1.5rem 1.5rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.service-card__body h3 {
  margin-bottom: 0.5rem;
}
.service-card__body p {
  flex: 1;
  color: var(--text-muted);
  font-size: 0.92rem;
  margin-bottom: 1rem;
}

/* ─── 30. SERVICE CARD — ICON WRAPPER ─── */
/* Icon container within service/capability cards. */

.service-card__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 10px;
  background: rgba(26,138,125,0.08);
  margin-bottom: 1rem;
  flex-shrink: 0;
  color: var(--teal);
}
.service-card__icon svg {
  width: 24px;
  height: 24px;
}

/* ─── 31. FEATURE CARD GRID ─── */
/* Grid wrapper for feature cards (with or without images). */

.feature-card-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  margin-top: 2rem;
}
.feature-card-grid--img .feature-card {
  overflow: hidden;
}
.feature-card--has-img {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  padding: 0;
}
.feature-card__img {
  overflow: hidden;
  border-radius: var(--radius-md, 12px) var(--radius-md, 12px) 0 0;
}
.feature-card__img img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.feature-card--has-img .feature-card__body {
  padding: 1.25rem 1.5rem 1.5rem;
}
.feature-card--has-img .feature-card__body h3 {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--navy);
  margin: 0 0 0.5rem;
}
.feature-card--has-img .feature-card__body p {
  font-size: 0.88rem;
  color: var(--text-muted);
  line-height: 1.6;
  margin: 0 0 0.75rem;
}
.feature-card--has-img .feature-card__body .service-card__link {
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--teal);
}
.feature-card--has-img:hover .feature-card__img img {
  transform: scale(1.04);
}
@media (max-width: 1024px) {
  .feature-card-grid--img { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 600px) {
  .feature-card-grid,
  .feature-card-grid--img { grid-template-columns: 1fr !important; }
}

/* ─── 32. LINK CARD — NAVY VARIANT ─── */
/* Dark navy background variant for link cards (service navigation). */

.link-card--navy {
  background: var(--navy);
  color: #fff;
  border-color: rgba(255,255,255,0.1);
}
.link-card--navy:hover {
  background: #053d52;
  border-color: var(--teal);
}
.link-card--navy .link-card-icon {
  color: var(--gold);
}
.link-card--navy span {
  color: #fff;
}

/* ─── 33. CONTENT WITH IMAGE — REVERSE ─── */
/* Flipped layout: text left, image right (default is image left, text right). */

.content-with-image--reverse {
  direction: rtl;
}
.content-with-image--reverse > * {
  direction: ltr;
}
@supports (display: grid) {
  .content-with-image--reverse {
    direction: ltr;
  }
  .content-with-image--reverse .content-with-image__media {
    order: 2;
  }
  .content-with-image--reverse .content-with-image__text {
    order: 1;
  }
}

/* ─── 34. GEO TAG LIST ─── */
/* Container for geographic service-area tags. */

.geo-tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 1.5rem 0;
}

/* ─── 35. USP GRID / USP CARD ─── */
/* Benefits/advantages grid (typically 4 cards, 2×2 layout). */

.usp-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  margin-top: 2rem;
}
.usp-card {
  padding: 1.5rem;
  border-radius: var(--radius-md, 12px);
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08);
}
.usp-card h3 {
  font-size: 1.05rem;
  margin-bottom: 0.5rem;
}
.usp-card p {
  font-size: 0.92rem;
  line-height: 1.6;
  opacity: 0.85;
}
.usp-card__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 10px;
  background: rgba(26,138,125,0.15);
  margin-bottom: 1rem;
  color: var(--teal);
}
.usp-card__icon svg {
  width: 22px;
  height: 22px;
}
/* Light section override */
.section-pad:not(.section-navy) .usp-card {
  background: #fff;
  border-color: var(--border);
}
@media (max-width: 600px) {
  .usp-grid { grid-template-columns: 1fr; }
}

/* ─── 36. SUMMARY GRID / SUMMARY ITEM ─── */
/* Simple text-only grid for service summaries. */

.summary-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  margin-top: 2rem;
}
.summary-item {
  padding: 1.5rem;
  border-radius: var(--radius-md, 12px);
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08);
}
.summary-item h3 {
  font-size: 1.05rem;
  margin-bottom: 0.5rem;
}
.summary-item p {
  font-size: 0.92rem;
  line-height: 1.6;
  opacity: 0.85;
}
/* Light section override */
.section-pad:not(.section-navy) .summary-item {
  background: #fff;
  border-color: var(--border);
}
@media (max-width: 600px) {
  .summary-grid { grid-template-columns: 1fr; }
}

/* ─── 37. FAQ PREVIEW GRID ─── */
/* Preview cards linking to FAQ/knowledge base articles. */

.faq-preview-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-top: 2rem;
}
.faq-preview-card {
  padding: 1.5rem;
  border-radius: var(--radius-md, 12px);
  background: #fff;
  border: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.faq-preview-card:hover {
  border-color: var(--teal);
  box-shadow: 0 4px 16px rgba(2,42,58,0.06);
}
.faq-preview-card h3 {
  font-size: 1.05rem;
  margin-bottom: 0.5rem;
  color: var(--navy);
}
.faq-preview-card p {
  font-size: 0.9rem;
  line-height: 1.6;
  color: var(--text-muted);
  flex: 1;
  margin-bottom: 1rem;
}
.faq-preview-card__link {
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--teal);
  text-decoration: none;
  transition: color 0.2s ease;
}
.faq-preview-card__link:hover {
  color: var(--navy);
}
@media (max-width: 768px) {
  .faq-preview-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  .faq-preview-grid { grid-template-columns: 1fr; }
}

/* ─── 38. PROCESS STEP CONTENT ─── */
/* Text wrapper inside process/timeline steps. */

.process-step__content {
  flex: 1;
}
.process-step__content h3 {
  font-size: 1.05rem;
  margin-bottom: 0.35rem;
}
.process-step__content p {
  font-size: 0.92rem;
  line-height: 1.6;
  opacity: 0.85;
}

/* ─── 39. SVG ICON SIZE NORMALIZATION ─── */
/* Enforce consistent icon sizes across all pages. */

/* Check-list icons: always 18×18 */
.check-list li svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
}

/* Feature-card main icon: 28×28 */
.feature-card > svg:first-child,
svg.feature-card__icon {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
}

/* Feature-card arrow: 18×18 */
svg.feature-card__arrow {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
}

/* ═══════════════════════════════════════════════════════════
   40. SITE-WIDE: Icon + Heading Horizontal Layout
   All card types: icon LEFT of heading, 15px gap
   ═══════════════════════════════════════════════════════════ */

/* --- Service Cards (without image variant) --- */
.service-card:not(.service-card--has-img) {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 0 15px;
  padding: 1.75rem;
  background: #fff;
  border: 1px solid var(--gray-100, #e2e8ea);
  border-radius: 12px;
  text-decoration: none;
  color: inherit;
  transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.service-card:not(.service-card--has-img):hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}
.service-card:not(.service-card--has-img) .service-card__icon {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  margin-bottom: 0;
}
.service-card:not(.service-card--has-img) > h3 {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  font-size: 1rem;
  font-weight: 700;
  color: var(--navy);
  margin: 0;
}
.service-card:not(.service-card--has-img) > p {
  grid-column: 1 / -1;
  grid-row: 2;
  font-size: 0.88rem;
  color: var(--text-muted);
  line-height: 1.6;
  margin-top: 0.75rem;
}
.service-card:not(.service-card--has-img) > .service-card__link {
  grid-column: 1 / -1;
  grid-row: 3;
  margin-top: auto;
  padding-top: 0.75rem;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--teal);
}

/* --- Audience Cards (without image/body variant) --- */
.audience-grid .audience-card {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 0 15px;
  padding: 1.75rem;
}
.audience-grid .audience-card .audience-card__icon {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  margin-bottom: 0;
}
.audience-grid .audience-card > h3 {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  font-size: 1rem;
  font-weight: 700;
  color: var(--navy);
  margin: 0;
}
.audience-grid .audience-card > p {
  grid-column: 1 / -1;
  grid-row: 2;
  margin-top: 0.75rem;
}

/* --- USP Cards --- */
.usp-card {
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 0 15px;
}
.usp-card .usp-card__icon {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  margin-bottom: 0;
}
.usp-card > h3 {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  margin: 0;
}
.usp-card > p {
  grid-column: 1 / -1;
  grid-row: 2;
  margin-top: 0.5rem;
}

/* --- Geo Region Cards --- */
.geo-region-card {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 0 15px;
}
.geo-region-card .geo-region-card__icon {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  margin-bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 10px;
  background: rgba(27,126,154,0.08);
  flex-shrink: 0;
}
.geo-region-card .geo-region-card__icon svg {
  width: 24px;
  height: 24px;
}
.geo-region-card > h3 {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  margin: 0;
}
.geo-region-card > p {
  grid-column: 1 / -1;
  grid-row: 2;
  margin-top: 0.5rem;
}

/* --- Problem Cards --- */
.problem-card {
  display: grid !important;
  grid-template-columns: 44px 1fr;
  gap: 0 15px;
  text-align: left !important;
  align-items: start !important;
}
.problem-card .problem-card__icon {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  margin-bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 10px;
  background: rgba(27,126,154,0.08);
  flex-shrink: 0;
}
.problem-card .problem-card__icon svg {
  width: 22px;
  height: 22px;
}
.problem-card > h3 {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  margin: 0;
}
.problem-card > p {
  grid-column: 1 / -1;
  grid-row: 2;
  margin-top: 0.5rem;
}

/* --- Feature Cards with icon — horizontal layout --- */
/* Targets feature-cards that have a .feature-card__icon child (SVG icon boxes).
   Does NOT affect photo-cards (feature-cards with <img>) or text-only cards. */
.feature-card:has(.feature-card__icon) {
  display: grid;
  grid-template-columns: 52px 1fr;
  gap: 0 15px;
}
.feature-card:has(.feature-card__icon) .feature-card__icon {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  margin-bottom: 0;
}
.feature-card:has(.feature-card__icon) > h3 {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  font-size: 1.125rem;
  margin: 0;
}
.feature-card:has(.feature-card__icon) > ul,
.feature-card:has(.feature-card__icon) > p,
.feature-card:has(.feature-card__icon) > a {
  grid-column: 1 / -1;
}

/* ═══════════════════════════════════════════════════════════
   41. NAVY SECTION TEXT COLORS — h3 visibility
   ═══════════════════════════════════════════════════════════ */

/* USP cards on navy: white text */
.section-navy .usp-card h3 {
  color: rgba(255,255,255,0.95);
}
.section-navy .usp-card p {
  color: rgba(255,255,255,0.75);
}

/* Geo-region cards in navy: white text */
.section-navy .geo-region-card h3 {
  color: rgba(255,255,255,0.95);
}
.section-navy .geo-region-card p {
  color: rgba(255,255,255,0.75);
}

/* Link-card navy icon background boost */
.link-card--navy .link-card-icon {
  background: rgba(245,142,72,0.15);
  color: var(--gold);
}
.link-card--navy h3 {
  color: #fff;
}
.link-card--navy p {
  color: rgba(255,255,255,0.75);
}

/* ═══════════════════════════════════════════════════════════
   42. SUMMARY ITEMS — navy context colors
   ═══════════════════════════════════════════════════════════ */
.section-navy .summary-item h3 {
  color: rgba(255,255,255,0.95);
}
.section-navy .summary-item p {
  color: rgba(255,255,255,0.75);
}

/* ════════════════════════════════════════════════════════════════
   /hiro ELEVATION — 2026-05-30 — Global card-system consistency
   • Icon LEFT of title, tight 15px gap (was stacked above)
   • Icon size follows heading level (h3 bigger, h4 ~20% smaller)
   • Cap runaway icons, consistent padding
   CSS-ONLY, no DOM change -> customer overrides preserved.
   :has()-scoped to icon-wrapper cards -> IMAGE cards untouched.
   ════════════════════════════════════════════════════════════════ */

/* ---- 1. ICON-LEFT HEADER (icon-variant cards only) ---- */
.feature-card:has(> .feature-card__icon),
.feature-card:has(> .feature-card-icon),
.geo-region-card,
.audience-card:has(> .audience-card__icon) {
  display: grid !important;
  grid-template-columns: auto 1fr !important;   /* hug icon -> kills wide gap from inline cols */
  align-items: center;
  column-gap: 15px;
  row-gap: 0;
  padding: 1.6rem !important;
}

/* icon cell -> col 1, kill stacking margin */
.feature-card > .feature-card__icon,
.feature-card > .feature-card-icon,
.geo-region-card > .geo-region-card__icon,
.geo-region-card > svg,
.audience-card > .audience-card__icon {
  grid-column: 1; grid-row: 1;
  margin: 0 !important;
  align-self: center;
}

/* title cell (h3 OR h4) -> col 2, centered on icon */
.feature-card:has(> .feature-card__icon) > :is(h3,h4),
.feature-card:has(> .feature-card-icon) > :is(h3,h4),
.geo-region-card > :is(h3,h4),
.audience-card:has(> .audience-card__icon) > :is(h3,h4) {
  grid-column: 2; grid-row: 1;
  align-self: center;
  margin: 0 !important;
  line-height: 1.25;
}
.feature-card:has(> .feature-card__icon) > h3,
.geo-region-card > h3,
.audience-card:has(> .audience-card__icon) > h3 { font-size: 1.06rem; font-weight: 700; }
.feature-card:has(> .feature-card__icon) > h4 { font-size: 0.98rem; font-weight: 700; }

/* everything after the title spans full width below */
.feature-card:has(> .feature-card__icon) > :not(.feature-card__icon):not(h3):not(h4),
.feature-card:has(> .feature-card-icon) > :not(.feature-card-icon):not(h3):not(h4),
.geo-region-card > :not(.geo-region-card__icon):not(svg):not(h3):not(h4),
.audience-card:has(> .audience-card__icon) > :not(.audience-card__icon):not(h3):not(h4) {
  grid-column: 1 / -1;
}
.feature-card:has(> .feature-card__icon) > p,
.feature-card:has(> .feature-card-icon) > p,
.geo-region-card > p,
.audience-card:has(> .audience-card__icon) > p {
  margin-top: 0.6rem !important;
  margin-bottom: 0 !important;
}

/* ---- 2. ICON SIZING (capped; follows heading level) ---- */
/* default / h3 cards */
.feature-card__icon,
.feature-card-icon,
.audience-card__icon {
  width: 46px !important; height: 46px !important;
  display: inline-flex !important; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.feature-card__icon svg, .feature-card-icon svg,
.geo-region-card > svg, .geo-region-card__icon svg,
.audience-card__icon svg {
  width: 26px !important; height: 26px !important; flex-shrink: 0;
}
/* h4 cards -> ~20% smaller icon */
.feature-card:has(> h4) > .feature-card__icon,
.feature-card:has(> h4) > .feature-card-icon {
  width: 37px !important; height: 37px !important;
}
.feature-card:has(> h4) > .feature-card__icon svg,
.feature-card:has(> h4) > .feature-card-icon svg {
  width: 21px !important; height: 21px !important;
}

/* ---- 4. CARD AESTHETICS — tactile, branded (kills "flat white box") ---- */
.feature-card, .geo-region-card, .audience-card {
  border: 1px solid rgba(2,42,58,0.07) !important;
  border-radius: 16px !important;
  box-shadow: 0 1px 2px rgba(2,42,58,.04), 0 18px 30px -22px rgba(2,42,58,.22) !important;
  position: relative;
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease !important;
  background: #fff;
}
.feature-card:hover, .geo-region-card:hover, .audience-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 2px 4px rgba(2,42,58,.05), 0 30px 46px -24px rgba(2,42,58,.30) !important;
  border-color: rgba(26,138,125,.38) !important;
}
/* universal branded icon-chip (works for bare-svg icons AND wrapper icons) */
.feature-card > .feature-card__icon,
.feature-card > .feature-card-icon,
.geo-region-card > .geo-region-card__icon,
.geo-region-card > svg,
.audience-card > .audience-card__icon {
  background: linear-gradient(145deg, rgba(26,138,125,.15), rgba(26,138,125,.05)) !important;
  border-radius: 12px !important;
  box-shadow: inset 0 0 0 1px rgba(26,138,125,.14);
  color: var(--teal, #1a8a7d) !important;
  padding: 9px;
  box-sizing: border-box;
  transition: transform .25s ease, box-shadow .25s ease;
}
.feature-card:hover > .feature-card__icon,
.feature-card:hover > .feature-card-icon,
.geo-region-card:hover > .geo-region-card__icon,
.geo-region-card:hover > svg,
.audience-card:hover > .audience-card__icon {
  transform: scale(1.06);
  box-shadow: inset 0 0 0 1px rgba(26,138,125,.30);
}

/* ---- 5. LOCATION CHIPS — map-pin icon + designed pill (was a flat dot) ---- */
.geo-tag {
  gap: 10px !important;
  padding: 0.9rem 1.4rem !important;
  border-radius: 14px !important;
  border: 1px solid rgba(2,42,58,.07) !important;
  background: #fff !important;
  box-shadow: 0 1px 2px rgba(2,42,58,.05), 0 14px 24px -16px rgba(2,42,58,.30) !important;
  color: var(--navy, #022a3a) !important; font-weight: 700 !important; font-size: 0.98rem !important;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease !important;
}
.geo-tag::before {
  content: '' !important;
  width: 18px !important; height: 18px !important;
  border-radius: 0 !important;
  background: var(--teal, #1a8a7d) !important;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") center/contain no-repeat !important;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") center/contain no-repeat !important;
  transition: transform .2s ease;
}
.geo-tag:hover {
  transform: translateY(-3px) !important;
  border-color: rgba(26,138,125,.40) !important;
  box-shadow: 0 2px 4px rgba(2,42,58,.05), 0 26px 40px -22px rgba(2,42,58,.34) !important;
}
.geo-tag:hover::before { transform: translateY(-1px); }

/* ---- 6. SECTION RHYTHM + CTA CLARITY + NAVY TEXT ---- */
.section-pad, .content-section { padding-top: 40px !important; padding-bottom: 40px !important; }

/* clear CTA link (was indistinguishable body text) */
.link-card-cta {
  display: inline-flex !important; align-items: center; gap: 7px;
  color: var(--teal, #1a8a7d) !important; font-weight: 700 !important;
  font-size: 0.95rem; text-decoration: none !important;
}
.link-card-cta::after { content: '→'; transition: transform .2s ease; }
.link-card-cta:hover::after { transform: translateX(4px); }
.link-card-cta:hover { text-decoration: underline !important; text-underline-offset: 4px; }

/* navy content sections: whiten body copy + links (e.g. Om Gösab) — NOT white cards */
.section-navy .content-with-image__text p,
.section-navy > .section-inner > p { color: rgba(255,255,255,.88) !important; }
.section-navy .content-with-image__text h2,
.section-navy .content-with-image__text h3 { color: #fff !important; }
.section-navy .content-with-image__text .link-card-cta { color: var(--teal-light, #6fd6c6) !important; }

/* ---- 7. TRUST STRIP (under hero, JMG-style floating credentials card) ---- */
.aiwp-trust-wrap { padding: 0 24px; background: transparent; }
.aiwp-trust {
  max-width: 1120px;
  margin: -42px auto 6px;
  position: relative; z-index: 6;
  background: #fff;
  border: 1px solid rgba(2,42,58,.07);
  border-radius: 18px;
  box-shadow: 0 1px 2px rgba(2,42,58,.05), 0 34px 56px -30px rgba(2,42,58,.40);
  display: grid; grid-template-columns: repeat(4, 1fr);
  padding: 20px 6px;
}
.aiwp-trust__item { display: flex; align-items: center; gap: 14px; padding: 8px 24px; position: relative; }
.aiwp-trust__item + .aiwp-trust__item::before {
  content: ''; position: absolute; left: 0; top: 12%; height: 76%; width: 1px;
  background: rgba(2,42,58,.10);
}
.aiwp-trust__item svg { width: 30px; height: 30px; color: var(--teal, #1a8a7d); flex-shrink: 0; }
.aiwp-trust__big {
  display: block; font-family: var(--font-display, 'Montserrat', sans-serif);
  font-weight: 800; color: var(--navy, #022a3a); font-size: 1.05rem; line-height: 1.15;
}
.aiwp-trust__sub { display: block; font-size: .76rem; color: var(--text-muted, #64748b); margin-top: 3px; }
@media (max-width: 860px) {
  .aiwp-trust { grid-template-columns: repeat(2, 1fr); gap: 6px 0; }
  .aiwp-trust__item:nth-child(odd)::before { display: none; }
}
@media (max-width: 520px) {
  .aiwp-trust { grid-template-columns: 1fr; margin-top: -28px; }
  .aiwp-trust__item::before { display: none !important; }
}

/* ---- 8. PHOTO-CARD GRIDS (.st-photo-grid) → 4-col, compact 16:9 image cards ---- */
.st-photo-grid { grid-template-columns: repeat(4, 1fr) !important; gap: 18px !important; }
.st-photo-grid .feature-card { padding: 0 !important; overflow: hidden; }
.st-photo-grid .feature-card img {
  aspect-ratio: 16 / 9 !important;
  width: 100% !important; max-width: 100% !important;
  object-fit: cover;
  border-radius: 15px 15px 0 0 !important;
  margin-bottom: 0 !important;
}
.st-photo-grid .feature-card h3 {
  font-size: calc(1rem + 2px) !important;   /* +2px per Robert */
  padding: 0.85rem 1.05rem 1.05rem !important;
  margin: 0 !important;
}
@media (max-width: 900px) { .st-photo-grid { grid-template-columns: repeat(2, 1fr) !important; } }
@media (max-width: 540px) { .st-photo-grid { grid-template-columns: 1fr !important; } }

/* ---- 9. BARE-SVG AUDIENCE CARDS (e.g. ventilationsrengoring "Vad ingår" tip-boxes) ----
   Fix: client.css `.audience-grid .audience-card{grid:48px 1fr}` auto-placed the bare <svg>
   and <div class=tip-box> into the 48px column -> tip text squished to 1 word/line. */
.audience-card:has(> svg) {
  display: grid !important;
  grid-template-columns: auto 1fr !important;
  align-items: center; column-gap: 15px; row-gap: 0;
  padding: 1.6rem !important;
}
.audience-card:has(> svg) > svg {
  grid-column: 1 !important; grid-row: 1 !important;
  align-self: center; margin: 0 !important;
  width: 26px !important; height: 26px !important; box-sizing: content-box; padding: 9px;
  background: linear-gradient(145deg, rgba(26,138,125,.15), rgba(26,138,125,.05)) !important;
  border-radius: 12px !important;
  box-shadow: inset 0 0 0 1px rgba(26,138,125,.14);
  color: var(--teal, #1a8a7d) !important;
}
.audience-card:has(> svg) > h3 {
  grid-column: 2 !important; grid-row: 1 !important;
  align-self: center; margin: 0 !important; font-size: 1.02rem; font-weight: 700;
}
.audience-card:has(> svg) > :not(svg):not(h3) { grid-column: 1 / -1 !important; }
.audience-card:has(> svg) > p { margin-top: 0.6rem !important; }
.audience-card:has(> svg) > .tip-box { margin-top: 1rem !important; }

/* ---- 10. KOMMUN/LOCATION CHIP CARDS — icon beside name, 6 per row (6+5) ---- */
.service-card-grid[style*="minmax(120px"] {
  grid-template-columns: repeat(6, 1fr) !important;
  gap: 14px !important;
}
.service-card-grid[style*="minmax(120px"] .feature-card {
  display: flex !important;
  align-items: center; justify-content: center; gap: 9px;
  text-align: left !important;
  padding: 0.8rem 0.65rem !important;
}
.service-card-grid[style*="minmax(120px"] .feature-card > svg {
  margin: 0 !important; width: 20px !important; height: 20px !important;
  flex-shrink: 0; color: var(--teal, #1a8a7d);
}
.service-card-grid[style*="minmax(120px"] .feature-card > strong {
  font-size: 0.95rem; color: var(--navy, #022a3a); line-height: 1.2;
}
@media (max-width: 1024px) { .service-card-grid[style*="minmax(120px"] { grid-template-columns: repeat(4, 1fr) !important; } }
@media (max-width: 640px)  { .service-card-grid[style*="minmax(120px"] { grid-template-columns: repeat(2, 1fr) !important; } }

/* ---- 11. INTERNAL LINK LIST — make article links look clickable ---- */
.internal-link-list { list-style: none; padding: 0; margin: 1.4rem 0; display: grid; gap: 4px; }
.internal-link-list li { margin: 0; }
.internal-link-list a {
  display: inline-flex; align-items: center; gap: 9px;
  color: var(--teal, #1a8a7d) !important; font-weight: 600;
  text-decoration: none; padding: 5px 0; transition: gap .2s ease;
}
.internal-link-list a::before {
  content: ''; width: 16px; height: 16px; flex-shrink: 0;
  background: var(--teal, #1a8a7d);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18l6-6-6-6'/%3E%3C/svg%3E") center/contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18l6-6-6-6'/%3E%3C/svg%3E") center/contain no-repeat;
}
.internal-link-list a:hover { gap: 13px; text-decoration: underline; text-underline-offset: 3px; }

/* ---- 12. FIX invisible customer-inserted links on navy (.gs-ovk-link, Image #9) ---- */
.gs-ovk-link {
  display: inline-flex !important; align-items: center; gap: 7px;
  color: var(--teal-light, #6fd6c6) !important;
  font-weight: 600 !important; text-decoration: none !important;
}
.gs-ovk-link::before {
  content: ''; width: 15px; height: 15px; flex-shrink: 0;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") center/contain no-repeat;
}
.gs-ovk-link:hover { color: #fff !important; text-decoration: underline !important; text-underline-offset: 3px; }

/* ---- 13. PROCESS MEDALLIONS — image-in-circle, navy overlay, centered text (HÖJA NIVÅN) ---- */
.process-medallions {
  display: flex !important; justify-content: center; align-items: flex-start;
  gap: clamp(24px, 4vw, 64px) !important; position: relative;
  grid-template-columns: none !important;
}
/* connecting line behind the circles */
.process-medallions::before {
  content: ''; position: absolute; top: 92px; left: 16%; right: 16%; height: 3px;
  background: linear-gradient(90deg, rgba(26,138,125,.0), rgba(26,138,125,.35), rgba(26,138,125,.0));
  z-index: 0;
}
.process-medallions .feature-card {
  background: transparent !important; border: none !important; box-shadow: none !important;
  padding: 0 !important; text-align: center; max-width: 290px;
  position: relative; overflow: visible; display: block !important;
}
.process-medallions .feature-card img {
  width: 184px !important; height: 184px !important; aspect-ratio: 1 !important;
  border-radius: 50% !important; object-fit: cover; display: block; margin: 0 auto 1.15rem !important;
  border: 5px solid #fff;
  box-shadow: 0 16px 34px -14px rgba(2,42,58,.55), 0 0 0 1px rgba(2,42,58,.08);
  position: relative; z-index: 1; transition: transform .35s ease;
}
/* navy "blue tone" overlay sitting on the circular image */
.process-medallions .feature-card::before {
  content: ''; position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: 184px; height: 184px; border-radius: 50%;
  background: radial-gradient(circle at 50% 35%, rgba(2,42,58,.18), rgba(2,42,58,.52));
  z-index: 2; pointer-events: none; transition: opacity .35s ease; opacity: 1;
}
.process-medallions .feature-card:hover img { transform: scale(1.05); }
.process-medallions .feature-card:hover::before { opacity: .62; }
.process-medallions .feature-card h3 {
  font-size: 1.06rem !important; color: var(--navy, #022a3a); margin: 0 0 .4rem !important;
}
.process-medallions .feature-card p { font-size: .9rem; color: var(--text-muted, #64748b); }
@media (max-width: 768px) {
  .process-medallions { flex-direction: column; align-items: center; gap: 28px !important; }
  .process-medallions::before { display: none; }
}

/* ---- 13b. FIX medallion image collapse + uniform navy tint ---- */
.process-medallions .feature-card img {
  min-width: 184px !important; min-height: 184px !important;
  max-width: none !important; aspect-ratio: auto !important;
}
.process-medallions .feature-card::before {
  background: rgba(11, 37, 69, .32) !important;
}
@media (max-width: 768px) {
  .process-medallions .feature-card img { min-width: 160px !important; min-height: 160px !important; width:160px!important; height:160px!important; }
  .process-medallions .feature-card::before { width:160px; height:160px; }
}

/* ---- 14. CONTRAST FIXES — navy lists/text, customer cards, secondary btn on light ---- */
/* navy sections: whiten body text incl. lists (cards re-darkened below) */
.section-navy li, .section-navy ul, .section-navy ol,
.section-navy .section-inner > p, .section-navy .container > p {
  color: rgba(255,255,255,.9) !important;
}
/* keep text inside WHITE cards dark */
.section-navy .feature-card p, .section-navy .feature-card li, .section-navy .feature-card ul,
.section-navy .audience-card p, .section-navy .audience-card li,
.section-navy .price-card p, .section-navy .price-card li, .section-navy .price-card ul {
  color: var(--text-muted, #555) !important;
}
.section-navy .feature-card h3, .section-navy .feature-card h4,
.section-navy .audience-card h3, .section-navy .price-card__service { color: var(--navy, #022a3a) !important; }
/* customer-inserted related-cards on navy (gs-dlg-rel-card, like gs-ovk) */
.section-navy .gs-dlg-rel-card { background: rgba(255,255,255,.06) !important; border: 1px solid rgba(255,255,255,.14) !important; border-radius: 12px; }
.section-navy .gs-dlg-rel-card, .section-navy .gs-dlg-rel-card * { color: rgba(255,255,255,.92) !important; }
/* white-outline secondary button is invisible on light sections -> navy outline there */
section:not(.section-navy) .btn-secondary {
  color: var(--navy, #022a3a) !important; border-color: var(--navy, #022a3a) !important;
}
section:not(.section-navy) .btn-secondary:hover {
  background: var(--navy, #022a3a) !important; color: #fff !important;
}

/* ---- 15. HERO BACKGROUND VIDEO ---- */
.page-hero { position: relative; overflow: hidden; }
.page-hero__video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; z-index: 0; pointer-events: none;
}
.page-hero > .page-hero__overlay { z-index: 1; }
.page-hero > .page-hero__content { position: relative; z-index: 2; }

/* ---- 16. BEHOVSSTYRD VENTILATION adjustments + trust-strip grey ---- */
/* #26 startsida trust-strip: light-grey bg (match section below), not white */
.aiwp-trust { background: #f4f7f8 !important; }

/* #25b Ducobox product-card header: icon LEFT of heading (was missed — it's .product-card not .feature-card) */
.product-card__header { display: flex !important; align-items: center; gap: 15px; }
.product-card__header > svg { flex-shrink: 0; width: 30px !important; height: 30px !important;
  background: linear-gradient(145deg, rgba(26,138,125,.15), rgba(26,138,125,.05)); border-radius: 12px; padding: 9px; box-sizing: content-box; }
.product-card__header > h3 { margin: 0 !important; }

/* #22 "Sänk energikostnader": heading beside the big icon */
.bv-energy-grid > div:first-child { display: grid; grid-template-columns: auto 1fr; column-gap: 24px; align-items: center; }
.bv-energy-grid > div:first-child > svg { grid-column: 1; grid-row: 1 / span 2; align-self: center; margin: 0 !important; width: 92px !important; height: 92px !important; }
.bv-energy-grid > div:first-child > .section-eyebrow { grid-column: 2; grid-row: 1; align-self: end; margin: 0; }
.bv-energy-grid > div:first-child > h2 { grid-column: 2; grid-row: 2; align-self: start; margin: 0 !important; }
.bv-energy-grid > div:first-child > p { grid-column: 1 / -1; grid-row: 3; margin-top: 1.1rem !important; }
@media (max-width: 760px){ .bv-energy-grid > div:first-child{ grid-template-columns: auto 1fr; column-gap:16px; } .bv-energy-grid > div:first-child > svg{ width:64px !important; height:64px !important; } }

/* #24 comparison table: ~30% wider + centered whole part */
section:has(> .section-inner .gosab-table) > .section-inner > .section-eyebrow,
section:has(> .section-inner .gosab-table) > .section-inner > h2 { text-align: center; }
.table-responsive:has(.gosab-table) { max-width: 940px; margin: 1.6rem auto 0 !important; }
.table-responsive:has(.gosab-table) .gosab-table { width: 100%; }

/* #25a "Våra lösningar": 2 columns — text left, white Ducobox card right */
.section-navy:has(> .section-inner .product-card--featured) > .section-inner {
  display: grid; grid-template-columns: 1fr 1.05fr; column-gap: 3rem; align-items: center; row-gap: 0;
}
.section-navy:has(> .section-inner .product-card--featured) > .section-inner > .section-eyebrow { grid-column: 1; grid-row: 1; align-self: end; }
.section-navy:has(> .section-inner .product-card--featured) > .section-inner > h2 { grid-column: 1; grid-row: 2; }
.section-navy:has(> .section-inner .product-card--featured) > .section-inner > p { grid-column: 1; grid-row: 3; align-self: start; margin-bottom: 0; }
.section-navy:has(> .section-inner .product-card--featured) > .section-inner > .product-card { grid-column: 2; grid-row: 1 / span 3; align-self: center; margin-top: 0 !important; }
@media (max-width: 860px){
  .section-navy:has(> .section-inner .product-card--featured) > .section-inner { grid-template-columns: 1fr; }
  .section-navy:has(> .section-inner .product-card--featured) > .section-inner > .product-card { grid-column: 1; grid-row: auto; margin-top: 1.5rem !important; }
}

/* ---- 17. TWO-COLUMN add-zone sections (Smart ventilation + Fördjupa) ---- */
/* Robert: every 2-col section must let the customer add media into column 2 via pennan. */
/* The empty .gs-add-col carries data-aife-block-insert → editor injects a "+" zone (generic picker). */
/* Override-safe: sections 7 & 13 have NO customer overrides; adding a child div does not shift any */
/* sibling <section> nth-of-type, so override on section:nth-of-type(5) (OVK) is untouched. */

.gs-2col-sec > .gs-2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: clamp(2rem, 4vw, 4rem);
  align-items: center;
}
/* Force all text/content children into column 1; the add-col owns column 2 */
.gs-2col-sec > .gs-2col > :not(.gs-add-col) { grid-column: 1; }
.gs-2col-sec > .gs-2col > .gs-add-col {
  grid-column: 2;
  grid-row: 1 / -1;
  align-self: stretch;
  min-height: 220px;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* Tasteful placeholder frame while column 2 is empty (no .aife-bi-block yet) */
.gs-add-col:not(:has(.aife-bi-block)) {
  border: 2px dashed rgba(26,138,125,.30);
  border-radius: 18px;
  background:
    linear-gradient(145deg, rgba(26,138,125,.05), rgba(2,42,58,.03));
  position: relative;
}
.gs-add-col:not(:has(.aife-bi-block))::after {
  content: '';
  width: 46px; height: 46px;
  border-radius: 14px;
  background: rgba(26,138,125,.12);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='2'/%3E%3Ccircle cx='8.5' cy='8.5' r='1.5'/%3E%3Cpath d='M21 15l-5-5L5 21'/%3E%3C/svg%3E") center/22px no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='2'/%3E%3Ccircle cx='8.5' cy='8.5' r='1.5'/%3E%3Cpath d='M21 15l-5-5L5 21'/%3E%3C/svg%3E") center/22px no-repeat;
  background-color: rgba(26,138,125,.22);
}
/* once the customer adds a block, drop the placeholder chrome */
.gs-add-col:has(.aife-bi-block) { border: 0; background: none; min-height: 0; }
.gs-add-col:has(.aife-bi-block) img,
.gs-add-col:has(.aife-bi-block) iframe { border-radius: 16px; max-width: 100%; }
.gs-add-col .aife-bi-video-wrap { width: 100%; }

@media (max-width: 860px) {
  .gs-2col-sec > .gs-2col { grid-template-columns: 1fr; }
  .gs-2col-sec > .gs-2col > .gs-add-col { grid-column: 1; grid-row: auto; min-height: 0; }
  /* hide the empty placeholder frame on mobile so there is no dead gap for visitors */
  .gs-add-col:not(:has(.aife-bi-block)) { display: none; }
}

/* ---- 18. OVK-KOPPLING links → framed boxes on navy (Robert: gör dem till rutor) ---- */
/* CSS-only on customer-inserted .gs-ovk-link (lives inside .link-card-grid, an override target — */
/* we only restyle, never restructure). Makes the 3 sit as an even row of clear bordered cards. */
.section-navy .link-card-grid:has(.gs-ovk-link) {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.gs-ovk-link {
  /* upgrade from inline text-link to a full card box */
  display: flex !important;
  align-items: center;
  gap: 12px !important;
  padding: 18px 20px;
  border: 1px solid rgba(111,214,198,.35);
  border-radius: 14px;
  background: rgba(255,255,255,.05);
  color: #eaf5f3 !important;
  font-weight: 600 !important;
  line-height: 1.3;
  transition: background .2s ease, border-color .2s ease, transform .2s ease;
}
.gs-ovk-link::before {
  width: 22px; height: 22px;
  background-color: var(--teal-light, #6fd6c6);
}
.gs-ovk-link:hover {
  background: rgba(111,214,198,.12);
  border-color: rgba(111,214,198,.7);
  transform: translateY(-2px);
  text-decoration: none !important;
}
@media (max-width: 760px) {
  .section-navy .link-card-grid:has(.gs-ovk-link) { grid-template-columns: 1fr; }
}

/* ════════════════════════════════════════════════════════════════
   /hiro QUALITY PASS — 2026-05-31 — FOUR recurring layout fixes
   §19 PATTERN A — location/city cards: icon LEFT of name (+30% icon)
   §20 PATTERN B — "Läs mer →" CTA links must NOT wrap
   §21 PATTERN C — media plate shrinks to fit image (no dead white)
   §22 PATTERN D — OVK "Vad är OVK" 2-col (handled in HTML + CSS here)
   CSS-FIRST, override-safe. No <section> add/remove/reorder.
   ════════════════════════════════════════════════════════════════ */

/* ---- 19. PATTERN A — LOCATION/CITY CARDS (svg + <span> label) ----
   OVK Regioner cards: <div class=geo-region-card><svg/><span>Borås</span></div>
   §1 placed bare <svg> in col1 but the <span> (not h3/h4) fell into the
   "everything after title → grid-column 1/-1" rule → icon stacked ABOVE name.
   Here we explicitly seat the <span> beside the icon, 15px gap, icon +30%. */
.geo-region-card:has(> svg):has(> span) {
  display: grid !important;
  grid-template-columns: auto 1fr !important;
  align-items: center !important;
  column-gap: 15px !important;
  row-gap: 0 !important;
  text-align: left !important;
}
.geo-region-card:has(> span) > svg {
  grid-column: 1 !important; grid-row: 1 !important;
  align-self: center !important; margin: 0 !important;
  /* +30% vs the §1/§4 26px icon → ~34px glyph in a hugging chip */
  width: 34px !important; height: 34px !important;
  box-sizing: content-box; padding: 9px;
  background: linear-gradient(145deg, rgba(26,138,125,.15), rgba(26,138,125,.05)) !important;
  border-radius: 12px !important;
  box-shadow: inset 0 0 0 1px rgba(26,138,125,.14);
  color: var(--teal, #1a8a7d) !important;
}
.geo-region-card:has(> span) > span {
  grid-column: 2 !important; grid-row: 1 !important;
  align-self: center !important; margin: 0 !important;
  font-size: 1.02rem; font-weight: 700; color: var(--navy, #022a3a);
  line-height: 1.2;
}
/* any further children (rare) drop below, full width */
.geo-region-card:has(> span) > :not(svg):not(span) { grid-column: 1 / -1 !important; }

/* ---- 20. PATTERN B — CTA "Läs mer →" links: one line, never wrapped ----
   .problem-card__arrow & .link-card__inline carry text + an inline arrow svg.
   Lay them out as a single inline-flex row and forbid wrapping. */
.problem-card__arrow,
.link-card__inline {
  display: inline-flex !important;
  align-items: center !important;
  gap: 7px !important;
  white-space: nowrap !important;
  width: auto !important;          /* shrink-to-content so nowrap can't overflow the column */
  max-width: 100%;
}
.problem-card__arrow > svg,
.link-card__inline > svg { flex-shrink: 0; }
/* defensive: §6 .link-card-cta already inline-flex — keep it unbreakable too */
.link-card-cta { white-space: nowrap !important; }

/* ---- 21. PATTERN C — media plate hugs the image (no too-wide white plate) ----
   client.css gives .content-with-image__media the white card (radius+shadow).
   Customer can resize the <img> (e.g. sizePercent override → max-width:75%).
   PROBLEM: the box is a 1fr grid item (stretches to 100%) while the img is
   capped (75%) → ~25% dead plate. `width:fit-content` won't shrink because the
   base rule `.content-with-image__media img{width:100%}` makes the img demand
   the full box (circular). FIX: move the visual plate (radius+shadow+overflow)
   OFF the box and ONTO the <img> itself, and let the box collapse to the image.
   Result: the plate is the image — it follows ANY image size automatically. */
.content-with-image__media {
  box-shadow: none !important;        /* kill the plate on the wide box */
  border-radius: 0 !important;
  overflow: visible !important;
  background: transparent !important;
  display: flex !important;            /* shrink box to image, align inside column */
  flex-direction: column !important;   /* stack img + optional caption (don't push caption beside img) */
  width: 100%;
}
.content-with-image__media > img {
  width: auto !important;              /* drop base width:100% so img keeps its own size */
  /* NB: do NOT set max-width here — the customer's sizePercent override lives as
     inline style="max-width:N%" and MUST win. width:auto lets that cap the size. */
  height: auto !important;
  border-radius: 12px !important;      /* the plate now travels WITH the image */
  box-shadow: 0 4px 20px rgba(2,42,58,0.08) !important;
}
/* column flex: align-items controls horizontal placement of img + caption */
.content-with-image__media { align-items: flex-start; }
/* right-variant: hug toward the text (left edge of right column) for a tidy gutter */
.content-with-image--right .content-with-image__media { align-items: flex-start; }
.content-with-image--reverse .content-with-image__media,
.content-with-image--left .content-with-image__media { align-items: flex-end; }
/* caption follows the image width, sits under it */
.content-with-image__media > .content-with-image__caption { width: 100%; max-width: 100%; }
@media (max-width: 768px) {
  .content-with-image__media { align-items: center !important; }
  .content-with-image__media > img { width: 100% !important; }   /* fill on mobile (matches base max-height crop) */
}

/* ---- 22. PATTERN D — OVK "Vad är OVK" lopsided single column → 2 columns ----
   The HTML now wraps the body in .gs-ovk-2col (col1 = intro + ansvar-list,
   col2 = navy box "Det här hjälper Gösab er med"). The eyebrow + h2 stay full
   width above. col2 carries data-aife-block-insert so the customer can ADD more
   into column 2 via the pen. Section 2 has NO customer overrides → safe wrap. */
.gs-ovk-2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: clamp(2rem, 4vw, 3.5rem);
  align-items: start;
  margin-top: 1.4rem;
}
.gs-ovk-col1 { min-width: 0; }
/* navy box for column 2 */
.gs-navy-box {
  background: linear-gradient(160deg, var(--navy, #022a3a), #16163f);
  border-radius: 18px;
  padding: 2rem 2.1rem;
  box-shadow: 0 24px 44px -26px rgba(2,42,58,.55), inset 0 0 0 1px rgba(255,255,255,.06);
}
.gs-navy-box > h3 {
  color: #fff !important;
  margin: 0 0 1.1rem !important;
  font-size: 1.18rem;
}
.gs-navy-box .check-list { color: rgba(255,255,255,.92); }
.gs-navy-box .check-list li { color: rgba(255,255,255,.92); }
/* the inline check svg uses var(--teal) fills → keep, but lighten for navy */
.gs-navy-box .check-list li svg circle { fill: var(--teal-light, #6fd6c6) !important; opacity: .22 !important; }
.gs-navy-box .check-list li svg path { stroke: var(--teal-light, #6fd6c6) !important; }
/* when customer adds a block via the pen, give it breathing room */
.gs-navy-box .aife-bi-block { margin-top: 1.2rem; }
.gs-navy-box .aife-bi-block img,
.gs-navy-box .aife-bi-block iframe { border-radius: 12px; max-width: 100%; }
@media (max-width: 860px) {
  .gs-ovk-2col { grid-template-columns: 1fr; row-gap: 1.6rem; }
}

/* ---- 23. PATTERN B (edge) — internal-link feature-cards whose icon is nested
   in a wrapper <div> (not a direct child). The base rule
   `.feature-card:has(.feature-card__icon){grid:52px 1fr}` then mis-seats the
   wrapper DIV into the 52px column (squishing icon+title) and overlaps the
   `.link-card__inline` "Läs mer →" span. Only priser-taxor uses this exact
   markup. Restore a clean vertical card: header row (icon+title) then CTA.
   Scoped to the nested-icon + link-inline combo so normal icon cards are
   untouched. CSS-only, no DOM change → overrides safe. */
.feature-card:has(> div > .feature-card__icon):has(> .link-card__inline) {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 0.9rem !important;
  grid-template-columns: none !important;
}
.feature-card:has(> div > .feature-card__icon):has(> .link-card__inline) > div {
  width: 100%;
  grid-column: auto !important;
}
.feature-card:has(> div > .feature-card__icon):has(> .link-card__inline) > .link-card__inline {
  grid-column: auto !important;
  white-space: nowrap !important;
  align-self: flex-start !important;
}

/* ---- 24. PATTERN D (flow) — lopsided single-column "list stacks" → balanced 2 cols ----
   "Så åtgärdar du problemet" (det-drar-kallt) had 4 h3+list sub-blocks stacked in
   the left ~55%, dead right side. CSS multi-column balances them into 2 columns
   without splitting a sub-block across the gap. No customer overrides on this page.
   The intro <p> and the .btn-group stay full width (outside .gs-flow-2col). */
.gs-flow-2col {
  column-count: 2;
  column-gap: clamp(2rem, 4vw, 3.5rem);
  margin-top: .25rem;
}
.gs-flow-2col > h3 {
  break-inside: avoid;
  break-after: avoid;
  margin-top: 0 !important;           /* first item flush to column top */
}
.gs-flow-2col > h3 ~ h3 { margin-top: 1.4rem !important; }
.gs-flow-2col > p,
.gs-flow-2col > ul { break-inside: avoid; }
/* keep an h3 glued to the p+ul that follow it (don't orphan a heading at column foot) */
.gs-flow-2col > p { break-before: avoid; }
@media (max-width: 720px) { .gs-flow-2col { column-count: 1; } }

/* ════════════════════════════════════════════════════════════════
   /hiro 2-COLUMN-EVERYWHERE PASS — 2026-05-31
   Owner ask: kill dead single-column right-half space site-wide.
   §25 comparison-card → horizontal (image left, text left-aligned right)
   §26 KEYSTONE — full-width .check-list (≥4 items) → 2 columns
   §27 per-section lopsided fixes (HTML-wrapper assisted, override-safe)
   CSS-FIRST, override-safe. No <section> add/remove/reorder.
   ════════════════════════════════════════════════════════════════ */

/* ---- 25. COMPARISON CARDS — image LEFT, text LEFT-aligned beside it ----
   /sotning/sotningstjanster/ "...vad är skillnaden?": .comparison-grid >
   .comparison-card (each = <img> + <h3> + <p>). Was text-align:center,
   image stacked on top. Owner wants horizontal: image LEFT (rounded),
   heading + paragraph to the RIGHT, LEFT-justified.
   OVERRIDE-SAFE & sizing rationale: the customer image override lives as an
   inline `max-width:25%` on each <img> (set against the OLD ~full-width card,
   i.e. 25% ≈ 150px — the size they intended). We therefore do NOT use a
   fixed-width grid column (that would re-base 25% to a broken ~38px) and we
   do NOT set max-width on the img. Instead we FLOAT the image left: a float's
   percentage `max-width` resolves against the card content box (~600px), so
   the customer's 25% → ~150px exactly as intended, and any future pen resize
   (larger/smaller %) keeps working. Text flows right of the float, left-aligned.
   CSS-ONLY, no DOM change. */
/* 2026-06-07 REWRITE — clean flex (was a float hack that depended on the pen's
   max-width:25% override; that override is now stripped + the image is LOCKED to its
   4:3 cover box, so we size the image column ourselves). DOM: .comparison-card >
   <img> + .comparison-card__body(> h4 + p). Image LEFT (fixed 150px 4:3), text RIGHT,
   left-aligned. h4 title, larger font. Image stays a direct child → image override safe. */
.comparison-card {
  display: flex !important;
  align-items: flex-start;
  gap: 1.3rem;
  text-align: left !important;
  padding: 1.6rem 1.7rem !important;
}
.comparison-card > img {
  flex: 0 0 auto;
  width: 150px !important;
  height: auto !important;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  margin: 0 !important;
  border-radius: 12px !important;
  align-self: flex-start;
}
.comparison-card__body { flex: 1 1 auto; min-width: 0; text-align: left; }
.comparison-card__body > h4,
.comparison-card > h4 {
  text-align: left !important;
  font-size: 1.3rem !important;
  font-weight: 700;
  color: var(--navy);
  margin: 0 0 0.5rem !important;
  line-height: 1.25;
}
.comparison-card__body > p,
.comparison-card > p {
  text-align: left !important;
  font-size: 0.92rem;
  color: var(--text-muted);
  line-height: 1.55;
  margin: 0 !important;
}
/* MOBILE: keep image left (compact), just smaller column — avoids long scroll */
@media (max-width: 560px) {
  .comparison-card { gap: 1rem; padding: 1.3rem !important; }
  .comparison-card > img { width: 38% !important; }
}

/* ---- 26. KEYSTONE — FULL-WIDTH CHECK-LISTS → 2 COLUMNS (≥4 items) ----
   The owner's recurring complaint: a narrow left-column checklist with a
   big DEAD empty right half (e.g. brandskyddskontroll "Vad kontrolleras",
   "Inför brandskyddskontrollen"; dozens more site-wide).
   SCOPE — only check-lists that are DIRECT children of a full-width
   wrapper (.section-inner / .container). This deliberately EXCLUDES:
     • card-nested lists (.content-card/.feature-card/.responsibility-card)
     • half-width image-beside lists (.content-block > div, .content-with-image__text)
     • accordion (.faq-answer), already-2-col flows (.gs-flow-2col/.gs-ovk-col*)
   GATE — :has(> li:nth-child(4)) → only lists with ≥4 items go 2-col, so
   short (≤3) lists stay a tidy single column (no sparse 2-col).
   NO !important on `columns` → any inline `columns:N` author override wins.
   Override-safe: pure CSS, no DOM change. li break-inside:avoid keeps each
   item whole; 1 column under 768px. */
.section-inner > .check-list:has(> li:nth-child(4)),
.container > .check-list:has(> li:nth-child(4)) {
  columns: 2;
  column-gap: 2.75rem;
}
/* keep each item intact across the column break + no orphan icon/line */
.section-inner > .check-list:has(> li:nth-child(4)) > li,
.container > .check-list:has(> li:nth-child(4)) > li {
  break-inside: avoid;
  -webkit-column-break-inside: avoid;
  page-break-inside: avoid;
}
/* collapse to 1 column on tablet/mobile */
@media (max-width: 768px) {
  .section-inner > .check-list,
  .container > .check-list { columns: 1 !important; }
}

/* ════════════════════════════════════════════════════════════════
   /hiro UNIVERSAL ICON-LEFT PASS — 2026-05-31
   Owner ask: EVERY card/box must have its icon to the LEFT of the
   title — per-class rules kept missing new variants. These rules are
   BROAD-but-SAFE :has() selectors so future card variants are caught.
   §27 KEYSTONE — any feature-card whose media is a bare <svg> (NO img)
       AND has an <h3> → icon LEFT (catches priser-taxor kommun cards
       + any future bare-svg feature card site-wide). Excludes:
         • location chips (use <strong>, styled §10 — no h3 → not matched)
         • image feature-cards (st-photo-grid §8, medallions §13 → have <img>)
   §28 ICON comparison-cards (.comparison-card__icon, NO <img>) → icon LEFT
       (brandskyddskontroll). sotningstjanster comparison-cards HAVE <img>
       → excluded → stay image-left (§25).
   §29 priser-taxor "Priser i olika kommuner" → CSS-ONLY scroll-snap
       SLIDER (override-safe: NO DOM change, preserves data-aife-block-insert).
   CSS-FIRST, override-safe. No <section> add/remove/reorder.
   ════════════════════════════════════════════════════════════════ */

/* ---- 27. KEYSTONE — bare-svg feature-cards: icon LEFT of title ----
   base .feature-card is display:block → a direct-child <svg> renders
   stacked ABOVE the <h3>. Seat the svg in a teal chip beside the title,
   15px gap; sub-line + paragraph drop full-width below. */
.feature-card:has(> svg):has(> h3):not(:has(> img)):not(:has(> picture)) {
  display: grid !important;
  grid-template-columns: auto 1fr !important;
  align-items: center !important;
  column-gap: 15px !important;
  row-gap: 0 !important;
  text-align: left !important;
  padding: 1.6rem !important;
}
.feature-card:has(> svg):has(> h3):not(:has(> img)):not(:has(> picture)) > svg {
  grid-column: 1 !important; grid-row: 1 !important;
  align-self: center !important; margin: 0 !important;
  width: 26px !important; height: 26px !important;
  box-sizing: content-box !important; padding: 9px !important;
  background: linear-gradient(145deg, rgba(26,138,125,.15), rgba(26,138,125,.05)) !important;
  border-radius: 12px !important;
  box-shadow: inset 0 0 0 1px rgba(26,138,125,.14) !important;
  color: var(--teal, #1a8a7d) !important;
  transition: transform .25s ease, box-shadow .25s ease;
}
.feature-card:has(> svg):has(> h3):not(:has(> img)):not(:has(> picture)) > h3 {
  grid-column: 2 !important; grid-row: 1 !important;
  align-self: center !important; margin: 0 !important;
  font-size: 1.06rem; font-weight: 700; line-height: 1.25;
  color: var(--navy, #022a3a);
}
/* everything after the title spans full width below the header row */
.feature-card:has(> svg):has(> h3):not(:has(> img)):not(:has(> picture)) > :not(svg):not(h3) {
  grid-column: 1 / -1 !important;
}
.feature-card:has(> svg):has(> h3):not(:has(> img)):not(:has(> picture)) > p {
  margin-top: 0.55rem !important;
}
.feature-card:has(> svg):has(> h3):not(:has(> img)):not(:has(> picture)) > p:first-of-type {
  margin-top: 0.6rem !important;   /* the small räddningstjänst sub-line */
}
.feature-card:has(> svg):has(> h3):not(:has(> img)):not(:has(> picture)):hover > svg {
  transform: scale(1.06);
  box-shadow: inset 0 0 0 1px rgba(26,138,125,.30) !important;
}

/* ---- 28. ICON COMPARISON CARDS — icon LEFT of title (was stacked) ----
   brandskyddskontroll "Anmärkning/Föreläggande" + "Sotning/Brandskyddskontroll"
   use .comparison-card__icon (svg chip, NO image). §25 set .comparison-card to
   display:block (for the image-float variant) which left the icon stacked above.
   Here: only the ICON variant (:not(:has(img))) becomes a grid icon-left card.
   sotningstjanster comparison-cards HAVE <img> → excluded → keep §25 image-left. */
.comparison-card:has(> .comparison-card__icon):not(:has(img)) {
  display: grid !important;
  grid-template-columns: auto 1fr !important;
  align-items: center !important;
  column-gap: 15px !important;
  row-gap: 0 !important;
  text-align: left !important;
}
.comparison-card:has(> .comparison-card__icon):not(:has(img)) > .comparison-card__icon {
  grid-column: 1 !important; grid-row: 1 !important;
  align-self: center !important; margin: 0 !important;
  width: 48px !important; height: 48px !important;
  display: inline-flex !important; align-items: center; justify-content: center;
  background: linear-gradient(145deg, rgba(26,138,125,.15), rgba(26,138,125,.05)) !important;
  border-radius: 12px !important;
  box-shadow: inset 0 0 0 1px rgba(26,138,125,.14) !important;
  color: var(--teal, #1a8a7d) !important;
  flex-shrink: 0;
}
.comparison-card:has(> .comparison-card__icon):not(:has(img)) > .comparison-card__icon svg {
  width: 26px !important; height: 26px !important;
}
.comparison-card:has(> .comparison-card__icon):not(:has(img)) > h3 {
  grid-column: 2 !important; grid-row: 1 !important;
  align-self: center !important; margin: 0 !important;
  font-size: 1.06rem; font-weight: 700; line-height: 1.25;
  color: var(--navy, #022a3a); text-align: left !important;
}
.comparison-card:has(> .comparison-card__icon):not(:has(img)) > :not(.comparison-card__icon):not(h3) {
  grid-column: 1 / -1 !important; text-align: left !important;
}
.comparison-card:has(> .comparison-card__icon):not(:has(img)) > p {
  margin: 0.55rem 0 0 !important;
}

/* ---- 29. PRISER-TAXOR "Priser i olika kommuner" → SLIDER (CSS-only) ----
   OVERRIDE-SAFETY DECISION: the kommun grid carries
   data-aife-block-insert="card" + a <template> child (the customer can ADD
   kommun cards via the pen). Converting the grid to .card-slider markup would
   (a) break that insert mechanism and (b) risk the page's nth-of-type overrides.
   So we DO NOT restructure the DOM. Instead we turn the EXISTING grid container
   into a horizontal scroll-snap slider — pure CSS, zero DOM change → fully
   override-safe and the pen still works. Scoped to the UNIQUE selector
   (#taxor-per-kommun + the block-insert grid) so nothing else is affected. */
#taxor-per-kommun .service-card-grid[data-aife-block-insert="card"] {
  display: flex !important;
  grid-template-columns: none !important;       /* kill the inline grid */
  flex-wrap: nowrap !important;
  overflow-x: auto !important;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  gap: 18px !important;
  padding-bottom: 14px;                          /* room for scrollbar */
  scroll-padding-left: 2px;
  scrollbar-width: thin;
  scrollbar-color: rgba(26,138,125,.5) rgba(2,42,58,.08);
}
/* the <template> is display:none already; each kommun card = a slide */
#taxor-per-kommun .service-card-grid[data-aife-block-insert="card"] > .feature-card {
  flex: 0 0 280px !important;
  min-width: 280px !important;
  max-width: 280px !important;
  scroll-snap-align: start;
  margin: 0 !important;
}
/* styled scrollbar (WebKit) — branded teal thumb */
#taxor-per-kommun .service-card-grid[data-aife-block-insert="card"]::-webkit-scrollbar {
  height: 8px;
}
#taxor-per-kommun .service-card-grid[data-aife-block-insert="card"]::-webkit-scrollbar-track {
  background: rgba(2,42,58,.07); border-radius: 8px;
}
#taxor-per-kommun .service-card-grid[data-aife-block-insert="card"]::-webkit-scrollbar-thumb {
  background: rgba(26,138,125,.55); border-radius: 8px;
}
#taxor-per-kommun .service-card-grid[data-aife-block-insert="card"]::-webkit-scrollbar-thumb:hover {
  background: rgba(26,138,125,.8);
}
/* hint chip: "dra för att se fler" — subtle, only while scrollable */
#taxor-per-kommun .service-card-grid[data-aife-block-insert="card"] {
  position: relative;
}
@media (max-width: 640px) {
  #taxor-per-kommun .service-card-grid[data-aife-block-insert="card"] > .feature-card {
    flex-basis: 240px !important; min-width: 240px !important; max-width: 240px !important;
  }
}

/* ---- 30. LINK-CARD with __title/__desc: icon-left + stacked text (was 3-col flex → clipped) ---- */
.link-card:has(> .link-card__title) {
  display: grid !important;
  grid-template-columns: auto 1fr;
  column-gap: 14px; row-gap: 3px; align-items: start;
}
.link-card:has(> .link-card__title) > svg,
.link-card:has(> .link-card__title) > .link-card__icon {
  grid-column: 1; grid-row: 1 / span 2; align-self: start;
  width: 26px !important; height: 26px !important; flex-shrink: 0;
}
.link-card:has(> .link-card__title) > .link-card__title {
  grid-column: 2; grid-row: 1; display: block;
  font-weight: 700; color: var(--navy, #022a3a); line-height: 1.3;
}
.link-card:has(> .link-card__title) > .link-card__desc {
  grid-column: 2; grid-row: 2; display: block;
  font-size: 0.88rem; color: var(--text-muted, #64748b); line-height: 1.5;
}
.section-navy .link-card:has(> .link-card__title) > .link-card__title { color: #fff; }
.section-navy .link-card:has(> .link-card__title) > .link-card__desc { color: rgba(255,255,255,.82); }

/* ---- 31. PRICE-CARD-GRID: highlight the "Ring för pris" card (last) — navy, 2-col, centered ---- */
.price-card-grid > .price-card:last-child {
  grid-column: span 2;
  justify-self: center;
  width: 100%; max-width: 560px;
  background: var(--navy, #022a3a) !important;
  border-color: var(--navy, #022a3a) !important;
}
.price-card-grid > .price-card:last-child .price-card__service { color: #fff !important; }
.price-card-grid > .price-card:last-child .price-card__price { color: var(--teal-light, #6fd6c6) !important; }
.price-card-grid > .price-card:last-child .price-card__note,
.price-card-grid > .price-card:last-child .price-card__desc { color: rgba(255,255,255,.82) !important; }
.price-card-grid > .price-card:last-child .price-card__included { border-top-color: rgba(255,255,255,.16) !important; }
.price-card-grid > .price-card:last-child .price-card__included li { color: rgba(255,255,255,.92) !important; }
.price-card-grid > .price-card:last-child .price-card__included li::before { background: rgba(255,255,255,.2) !important; }
.price-card-grid > .price-card:last-child .price-card__included li::after { color: var(--teal-light, #6fd6c6) !important; }
.price-card-grid > .price-card:last-child .price-card__cta { color: var(--teal-light, #6fd6c6) !important; }
@media (max-width: 760px) { .price-card-grid > .price-card:last-child { grid-column: auto; max-width: none; } }

/* ---- 31b. center the navy "Ring för pris" card on the 2 innermost columns ---- */
@media (min-width: 1080px) {
  .price-card-grid { grid-template-columns: repeat(4, 1fr) !important; }
  .price-card-grid > .price-card:last-child {
    grid-column: 2 / span 2 !important;
    justify-self: stretch !important;
    max-width: none !important;
  }
}

/* §32 FLER KONTOR — content-wrapped service cards: undo 48px icon-col squeeze */
.service-card:not(.service-card--has-img):has(> div:only-child) {
  display: block !important;
  grid-template-columns: none !important;
  padding: 0 !important;
  background: #fff;
  border: 1px solid var(--gray-100, #e2e8ea);
  border-radius: 12px;
}

/* §30c — link-card content cards: __cta full width so it doesn't squeeze __desc */
.link-card:has(> .link-card__title) > .link-card__cta {
  grid-column: 1 / -1 !important;
  grid-row: auto;
  margin-top: 8px;
}

/* §33 — center CTA-banner button group (contact pages + all cta-banners) */
.cta-banner .btn-group { justify-content: center; }
/* §33b — contact CTA uses .cta-actions (not .btn-group) — center it too */
.cta-banner .cta-actions, .cta-actions { justify-content: center; }

/* ─── Check-list in two balanced columns (opt-in modifier) ─── 2026-06-03 */
.check-list--cols {
  columns: 2;
  column-gap: 2.5rem;
}
.check-list--cols li {
  break-inside: avoid;
  -webkit-column-break-inside: avoid;
}
@media (max-width: 600px) { .check-list--cols { columns: 1; } }

/* ════════════════════════════════════════════════════════════════
   §34 — COMPACT GEO-REGION PILLS (2026-06-07)
   Owner: brandskyddskontroll kommun cards were big ("Stora knappar")
   → long mobile scroll. Make them compact pills like the startsida,
   and 2-up on mobile to cut the scroll. Appended last = wins cascade. */
.geo-region-grid {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 180px), 1fr)) !important;
  gap: 12px !important;
}
.geo-region-card:has(> svg):has(> span) {
  column-gap: 10px !important;
  padding: 0.6rem 0.85rem !important;
  border-radius: 10px !important;
}
.geo-region-card:has(> span) > svg {
  width: 20px !important; height: 20px !important;
  padding: 6px !important;
  border-radius: 8px !important;
}
.geo-region-card:has(> span) > span {
  font-size: 0.95rem !important;
  line-height: 1.2 !important;
}
/* 2 columns from small tablets down → far less vertical scroll on phones */
@media (max-width: 560px) {
  .geo-region-grid { grid-template-columns: 1fr 1fr !important; gap: 10px !important; }
  .geo-region-card:has(> svg):has(> span) { padding: 0.55rem 0.7rem !important; column-gap: 8px !important; }
  .geo-region-card:has(> span) > svg { width: 18px !important; height: 18px !important; padding: 5px !important; }
  .geo-region-card:has(> span) > span { font-size: 0.9rem !important; }
}

/* ════════════════════════════════════════════════════════════════
   §35 — MOBILE horizontal padding ROOT-FIX (2026-06-07)
   Owner: site-wide on mobile, text ran into both margins (esp. the whole
   sotning cluster). Root cause: content sections use .section-inner.section-pad
   which had 0 horizontal padding on mobile (only the hero variant had 48px).
   Plus .cert-badges (pre-footer strip) was ~420px wide → 50px horizontal
   overflow → page-wide horizontal scroll. Fix both at the source. */
@media (max-width: 768px) {
  .section-inner.section-pad,
  .content-section > .section-inner {
    padding-left: 20px !important;
    padding-right: 20px !important;
  }
  /* pre-footer certifications strip: wrap + shrink so it never overflows */
  .pre-footer-certs .cert-badges {
    flex-wrap: wrap !important;
    justify-content: center;
    gap: 14px;
    max-width: 100%;
  }
  .pre-footer-certs .cert-badges img {
    max-width: 26%;
    height: auto;
  }
}

/* ════════════════════════════════════════════════════════════════
   §36 — TIPS-LIST (numbered list, replaces sparse box-grid on /sotning/)
   CSS counters → auto-renumber when the customer adds/removes <li> via the
   pen's structural list editing. Teal number chip. (2026-06-08) */
.tips-list {
  list-style: none;
  counter-reset: tip;
  padding: 0;
  margin: 1.5rem 0 0;
  max-width: 820px;
}
.tips-list > li {
  counter-increment: tip;
  position: relative;
  padding: 0 0 0 3.1rem;
  margin-bottom: 1rem;
  line-height: 1.6;
  color: var(--text, #2c2c2c);
  min-height: 2.1rem;
  display: flex;
  align-items: center;
}
.tips-list > li::before {
  content: counter(tip);
  position: absolute;
  left: 0;
  top: 0;
  width: 2.1rem;
  height: 2.1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(145deg, rgba(26,138,125,.15), rgba(26,138,125,.05));
  box-shadow: inset 0 0 0 1px rgba(26,138,125,.14);
  color: var(--teal, #1a8a7d);
  font-weight: 700;
  font-size: 1.05rem;
  border-radius: 9px;
}
@media (max-width: 560px) {
  .tips-list > li { padding-left: 2.7rem; }
  .tips-list > li::before { width: 1.9rem; height: 1.9rem; font-size: 0.98rem; }
}

/* ════════════════════════════════════════════════════════════════
   §37 — FOOTER tweaks (2026-06-08, Image #14)
   • Tel:/E-post + värde på SAMMA rad (footer-brand-info-länkar inline)
   • Alla footer-rubriker (företag + TJÄNSTER/INFORMATION): +4px & ljusare */
.footer-brand-info a {
  display: inline !important;
  padding: 0 !important;
}
.footer-col h4 {
  font-size: calc(0.8rem + 4px) !important;   /* +4px på alla rubriker */
  color: rgba(255,255,255,0.6) !important;     /* ljusare (var 0.3) */
}

/* ════════════════════════════════════════════════════════════════
   §38 — "Fler kontor"-korten: knappen "Se medarbetare & kontakt"
   gick ut i kanten → tillåt radbryt till två rader, snygga marginaler
   (2026-06-09, Image #4) */
.service-card .btn {
  white-space: normal;
  max-width: 100%;
  line-height: 1.3;
}

/* ════════════════════════════════════════════════════════════════
   §39 — "Regional närvaro" TEXT-kort (3 region-kort med h3+p) spänner
   full bredd. Var fast smala/vänstertryckta pga auto-fill@180px (tomma
   spår till höger). Pill-korten (:has(> span)) påverkas INTE.
   (2026-06-09, Image #7) */
.geo-region-grid:has(.geo-region-card > h3) {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 24px !important;
}
@media (max-width: 768px) {
  .geo-region-grid:has(.geo-region-card > h3) { grid-template-columns: 1fr !important; }
}

/* ════════════════════════════════════════════════════════════════
   §40 — bilder i gs-2col "läs mer"-kolumnen (gs-add-col) beskärs till
   4:3 i höjd så höga/porträtt-bilder inte blir för dominanta.
   (2026-06-09, Image #13) */
.gs-add-col .aife-bi-block img {
  aspect-ratio: 3 / 4;
  object-fit: cover;
  width: 100%;
  height: auto;
}

/* ════════════════════════════════════════════════════════════════
   §41 — text-kolumnen (.content-block) i gs-2col ska vara EN kolumn så
   texten fyller hela bredden. Var en nästlad 2-col grid (341px 273px)
   → texten kläms till halva. (2026-06-09, Image #14) */
.gs-2col > .content-block { display: block !important; }

/* ════════════════════════════════════════════════════════════════
   §42 — gs-add-col bild-platshållare (dashed box) ska BARA synas när
   pennan är aktiv (body.ai-fe-editing). För besökare: göm den tomma
   platshållaren och låt texten fylla full bredd. (2026-06-09, Image #21) */
body:not(.ai-fe-editing) .gs-add-col:not(:has(.aife-bi-block)) {
  display: none !important;
}
body:not(.ai-fe-editing) .gs-2col-sec > .gs-2col:has(> .gs-add-col:empty) {
  grid-template-columns: 1fr !important;
}

/* ════════════════════════════════════════════════════════════════
   §43 — Sotning "Tips"-sektion: 2 kolumner (text vänster, bild kolumn 2).
   (2026-06-09, Image #20) */
.tips-2col {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: clamp(2rem, 4vw, 4rem);
  align-items: start;
}
.tips-2col > figure { margin: 0; }

/* ════════════════════════════════════════════════════════════════
   §44 — knappar tillagda i geo-grid via pennan (.aife-bi-block) ska
   renderas som vanliga geo-tag-piller, inte full-bredd. .aife-bi-block
   har width:100% vilket gav "bred knapp på ny rad". (2026-06-09, Image #23) */
.geo-grid .aife-bi-block {
  width: auto !important;
  min-height: 0 !important;
  margin: 0 !important;
  border-left: none !important;
  /* centrerad text + 10px L/R padding inuti pillret (var 0 → texten klistrades vänster). (2026-06-09) */
  padding: 0.7rem 10px !important;
  justify-content: center !important;
  text-align: center !important;
}

/* ════════════════════════════════════════════════════════════════
   §45 — footer: ta bort ett av de två nära strecken (badges-row hade
   border-top OCH border-bottom + footer-bottom border-top → dubbel linje).
   (2026-06-09, Image #28) */
.footer-badges-row { border-bottom: none !important; }
@media (max-width: 768px) {
  .tips-2col { grid-template-columns: 1fr; gap: 1.5rem; }
}

/* ─────────────────────────────────────────────────────────────
   Magi Pennan — edit-läge: kort får INTE klippa pennans
   kant-kontroller (+, X, "Ta bort") som ligger på övre/sido-kanter.
   Endast aktivt när pennan redigerar (body.ai-fe-editing) →
   publika sajten är oförändrad. (2026-06-22)
   ───────────────────────────────────────────────────────────── */
body.ai-fe-editing .staff-photo-card,
body.ai-fe-editing .feature-card,
body.ai-fe-editing .geo-region-card,
body.ai-fe-editing .comparison-card,
body.ai-fe-editing .service-card { overflow: visible !important; }

/* Behåll fotots rundade topphörn när kortets klippning släpps (edit-läge) */
body.ai-fe-editing .staff-photo-card__img {
  border-top-left-radius: var(--radius-md, 12px);
  border-top-right-radius: var(--radius-md, 12px);
}
