/* =========================================================
   RINGENS BILSKOLA — Design System & Site Styles
   Concept & production: IPTEK SVERIGE x Aurora Link
   ========================================================= */

:root{
  /* Brand colors */
  --navy-950:#060f1f;
  --navy-900:#0b1f3a;
  --navy-850:#0f2646;
  --navy-800:#12294d;
  --navy-700:#1c3c6b;
  --navy-600:#2a4f86;
  --blue-500:#2f6fed;
  --blue-400:#4c8dff;
  --blue-100:#e7effe;
  --gold-500:#f5b400;
  --gold-400:#ffcb3d;
  --gold-100:#fff3d6;
  --success-500:#1fae6a;
  --success-100:#e3f7ec;

  --ink-900:#0f1720;
  --ink-700:#2b3648;
  --ink-600:#45506b;
  --ink-500:#5c6784;
  --ink-400:#8590a8;
  --ink-300:#b7bfd1;

  --surface:#ffffff;
  --bg:#f6f8fc;
  --bg-alt:#eef2fa;
  --border:#e3e8f4;
  --border-strong:#cdd6ea;

  --radius-sm:8px;
  --radius-md:14px;
  --radius-lg:22px;
  --radius-xl:32px;
  --radius-full:999px;

  --shadow-sm:0 1px 2px rgba(11,31,58,.06), 0 1px 1px rgba(11,31,58,.04);
  --shadow-md:0 8px 24px -8px rgba(11,31,58,.18);
  --shadow-lg:0 24px 60px -20px rgba(11,31,58,.35);
  --shadow-gold:0 10px 28px -10px rgba(245,180,0,.55);
  --shadow-glow:0 18px 44px -14px rgba(47,111,237,.45);
  --grad-navy:linear-gradient(135deg,var(--navy-900),var(--navy-700));
  --grad-gold:linear-gradient(135deg,var(--gold-400),var(--gold-500));
  --grad-accent:linear-gradient(90deg,var(--blue-500),var(--gold-500));

  --font-display:'Poppins','Liberation Sans',Arial,sans-serif;
  --font-body:'Liberation Sans','Poppins',Arial,sans-serif;

  --container:1240px;
  --container-narrow:820px;
}

*,*::before,*::after{ box-sizing:border-box; }
/* Safety net: CSS Grid items default to min-width:auto (their content's
   max-content size), which can silently force a grid — and the whole
   page — wider than the viewport on narrow phones. Every grid layout in
   this site is meant to wrap/stack its content, never to overflow it. */
.hero-grid, .offer-grid, .pkg-feature, .contact-grid, .grid-2, .grid-3, .grid-4, .footer-grid, .steps, .stats-grid{ min-width:0; }
.hero-grid > *, .offer-grid > *, .pkg-feature > *, .contact-grid > *, .grid-2 > *, .grid-3 > *, .grid-4 > *, .footer-grid > *, .steps > *, .stats-grid > *{ min-width:0; }
/* scroll-behavior:smooth removed sitewide (was here previously). Per spec it
 * only affects PROGRAMMATIC scrolls (anchor-link jumps, scrollIntoView),
 * never a person's own mouse-wheel/trackpad input — but it's a well-known
 * real-world compatibility trap: on several Windows mouse-driver + Chrome
 * combinations, the browser's smooth-scroll animation queue can fight with
 * rapid wheel-tick input and make scrolling feel stuck/unresponsive. Since
 * the reported issue is "mouse scroll doesn't work" sitewide, this is the
 * one blanket CSS knob that plausibly explains it across every page, so it
 * is removed as a precaution rather than left in on the assumption the spec
 * makes it safe. The one place it was doing real work — the in-page anchor
 * links (skip-link, the Kurser page's step nav) — now gets its smooth
 * animation from JS instead (see main.js), which is not affected by this
 * removal and does not carry the same wheel-input risk. */
html{ overflow-x:hidden; }
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--ink-700);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  line-height:1.6;
  font-size:16px;
  overflow-x:hidden; /* Sitewide safety net: a handful of full-bleed elements
    (e.g. .offers-track's edge-to-edge mobile slider, which intentionally
    uses a negative margin to reach past .container's padding) push the
    page a few px wider than the viewport by design. This clips that
    instead of ever showing a page-level horizontal scrollbar. It only
    affects the X axis, so it does not interfere with the site's sticky
    header or the Priser page's sticky sidebar (both use position:sticky
    on the Y axis only). Confirmed via an automated overflow scan across
    every page template at mobile/tablet/desktop widths. */
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ margin:0; padding:0; list-style:none; }
h1,h2,h3,h4{
  font-family:var(--font-display);
  color:var(--navy-900);
  line-height:1.18;
  margin:0 0 .5em;
  font-weight:700;
  letter-spacing:-0.01em;
}
p{ margin:0 0 1em; }
button{ font-family:inherit; cursor:pointer; }
.icon{ width:1em; height:1em; display:inline-block; vertical-align:-0.14em; }

::selection{ background:var(--gold-400); color:var(--navy-950); }
a:focus-visible, button:focus-visible, .btn:focus-visible, .faq-q:focus-visible{ outline:2.5px solid var(--blue-500); outline-offset:3px; border-radius:6px; }
::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-track{ background:var(--bg-alt); }
::-webkit-scrollbar-thumb{ background:var(--navy-600); border-radius:var(--radius-full); border:2px solid var(--bg-alt); }

.container{
  width:100%;
  max-width:var(--container);
  margin:0 auto;
  padding:0 24px;
}
.container--narrow{ max-width:var(--container-narrow); }

.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-family:var(--font-display);
  font-weight:600;
  font-size:13px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--blue-500);
  background:var(--blue-100);
  padding:7px 16px 7px 12px;
  border-radius:var(--radius-full);
  margin-bottom:18px;
}
.eyebrow .icon{ color:var(--gold-500); width:16px; height:16px; }
.eyebrow--light{ background:rgba(255,255,255,.12); color:#fff; }
.eyebrow--light .icon{ color:var(--gold-400); }

.section{ padding:96px 0; }
.section--tight{ padding:64px 0; }
.section--alt{ background:var(--bg-alt); }
.section--navy{ background:linear-gradient(160deg,var(--navy-950),var(--navy-800) 60%,var(--navy-700)); color:#fff; }
.section--navy h2, .section--navy h3{ color:#fff; }
.section-head{ max-width:680px; margin:0 auto 56px; text-align:center; }
.section-head.left{ margin:0 0 48px; text-align:left; }
.section-head h2{ font-size:clamp(28px,3.4vw,40px); }
.section-head p{ color:var(--ink-500); font-size:17px; }
.section--navy .section-head p{ color:#c3cfe8; }

.h-kicker{ color:var(--gold-500); font-weight:700; font-size:13px; letter-spacing:.12em; text-transform:uppercase; display:block; margin-bottom:10px; }

/* Buttons */
.btn{
  position:relative;
  overflow:hidden;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  font-family:var(--font-display);
  font-weight:600;
  font-size:15px;
  padding:14px 26px;
  border-radius:var(--radius-full);
  border:1.5px solid transparent;
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
  white-space:nowrap;
}
.btn::before{
  content:"";
  position:absolute; top:0; left:-60%; width:40%; height:100%;
  background:linear-gradient(120deg, transparent, rgba(255,255,255,.5), transparent);
  transform:skewX(-18deg);
  transition:left .55s ease;
  pointer-events:none;
}
.btn:hover::before{ left:130%; }
.btn .icon{ width:17px; height:17px; }
.btn:hover{ transform:translateY(-2px); }
.btn:active{ transform:translateY(0) scale(.98); }
.btn-gold{
  background:linear-gradient(135deg,var(--gold-400),var(--gold-500));
  color:var(--navy-950);
  box-shadow:var(--shadow-gold);
}
.btn-gold:hover{ box-shadow:0 16px 34px -10px rgba(245,180,0,.65); }
.btn-navy{
  background:var(--grad-navy);
  color:#fff;
  box-shadow:var(--shadow-md);
}
.btn-navy:hover{ background:linear-gradient(135deg,var(--navy-800),var(--navy-600)); box-shadow:var(--shadow-glow); }
.btn-outline{
  background:transparent;
  border-color:var(--border-strong);
  color:var(--navy-900);
}
.btn-outline:hover{ border-color:var(--navy-900); }
.btn-outline--light{ border-color:rgba(255,255,255,.35); color:#fff; }
.btn-outline--light:hover{ border-color:#fff; background:rgba(255,255,255,.08); }
.btn-block{ width:100%; }
.btn-sm{ padding:10px 18px; font-size:14px; }

/* =================== CARD ACCENT SYSTEM =================== */
/* Shared hover treatment across every card-like component site-wide
   (usp/course/testi/person/link/booking-link/contact cards + FAQ items):
   a soft gradient top-edge that appears on hover, applied with zero
   markup changes since it only targets classes already used everywhere. */
.usp-card, .course-card, .testi-card, .person-card, .link-card,
.booking-link-card, .contact-card, .faq-item{ position:relative; }
.usp-card::before, .course-card::before, .testi-card::before, .person-card::before,
.link-card::before, .booking-link-card::before, .contact-card::before, .faq-item::before{
  content:""; position:absolute; inset:0 0 auto 0; height:3px;
  background:var(--grad-accent);
  border-radius:inherit;
  opacity:0; transform:scaleX(.6); transform-origin:left;
  transition:opacity .25s ease, transform .35s cubic-bezier(.16,1,.3,1);
  pointer-events:none;
}
.usp-card:hover::before, .course-card:hover::before, .testi-card:hover::before, .person-card:hover::before,
.link-card:hover::before, .booking-link-card:hover::before, .contact-card:hover::before{
  opacity:1; transform:scaleX(1);
}

/* =================== TOPBAR =================== */
.topbar{
  background:var(--navy-950);
  color:#c3cfe8;
  font-size:13.5px;
}
.topbar .container{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding-top:9px;
  padding-bottom:9px;
}
.topbar-left{ display:flex; gap:22px; align-items:center; }
.topbar-left a{ display:flex; align-items:center; gap:6px; color:#dfe7f7; }
.topbar-left a:hover{ color:var(--gold-400); }
.topbar-right{ display:flex; gap:16px; align-items:center; }
.topbar-badge{ display:flex; align-items:center; gap:5px; color:var(--gold-400); font-weight:600; }
.topbar .icon{ width:14px; height:14px; }
.topbar-social{ display:flex; gap:10px; }
.topbar-social a{ width:26px; height:26px; border-radius:50%; background:rgba(255,255,255,.08); display:flex; align-items:center; justify-content:center; }
.topbar-social .icon{ width:13px; height:13px; }
.topbar-social a:hover{ background:var(--gold-500); color:var(--navy-950); }

/* =================== HEADER =================== */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border);
}
.site-header .container{
  display:flex;
  align-items:center;
  justify-content:space-between;
  height:84px;
}
.brand{ display:flex; align-items:center; height:56px; overflow:hidden; }
/* height stays a plain (non-!important) declaration here so the more
   specific header/footer/mobile-nav rules below can each set their own
   box size normally; only the safety caps (max-height/max-width/object-fit)
   are !important, as a ceiling no uploaded image can ever exceed. */
.brand-logo{ display:block; height:56px; width:auto !important; max-width:100% !important; max-height:56px !important; object-fit:contain !important; }
/* WP-only: native "Utseende → Anpassa → Webbplatsidentitet" logo. The box
   is tall enough for a two-line/stacked wordmark (not just a wide landscape
   mark) and uses object-fit:contain, so any real-world logo shape scales
   down cleanly without cropping or distortion — see add_theme_support in
   functions.php for why flex-height/flex-width stay flexible.
   height/max-height are !important + the box clips overflow on purpose:
   the uploaded logo file carries its own width/height HTML attributes
   (WordPress writes the real uploaded pixel size onto the <img> tag), and
   those attributes can win a browser's native rendering in edge cases
   (e.g. before this stylesheet finishes loading) — !important plus a hard
   overflow clip on the box is a belt-and-suspenders guarantee the logo can
   never blow past its box and overlap the topbar above it, no matter what
   size file gets uploaded. */
.brand .custom-logo-link{ display:flex !important; align-items:center; height:56px !important; max-height:56px !important; max-width:210px; overflow:hidden; }
.brand .custom-logo-link img.custom-logo{ display:block !important; height:100% !important; width:auto !important; max-width:100% !important; max-height:56px !important; object-fit:contain !important; }

.main-nav{ display:flex; align-items:center; gap:2px; }
.main-nav a{
  font-family:var(--font-display);
  font-weight:500;
  font-size:14.5px;
  color:var(--ink-700);
  padding:9px 11px;
  border-radius:var(--radius-full);
  transition:background .15s ease,color .15s ease;
  white-space:nowrap;
}
.main-nav a:hover{ background:var(--bg-alt); color:var(--navy-900); }
.main-nav a.active{ color:var(--navy-900); background:var(--blue-100); box-shadow:inset 0 0 0 1px rgba(47,111,237,.25); }

/* Desktop "Kurser" dropdown — hover/focus reveals a panel listing every
   course sub-page, so the 12+ real pages don't have to be crammed into
   one flat menu bar. */
.nav-item{ position:relative; }
.nav-item > .nav-trigger{ display:inline-flex; align-items:center; gap:5px; cursor:pointer; background:none; border:0; font:inherit; }
.nav-item > .nav-trigger .icon{ width:13px; height:13px; transition:transform .15s ease; }
.nav-item:hover > .nav-trigger .icon, .nav-item:focus-within > .nav-trigger .icon{ transform:rotate(180deg); }
.nav-dropdown{
  position:absolute; top:calc(100% + 8px); left:50%; transform:translateX(-50%) translateY(6px);
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg); padding:10px; min-width:248px;
  display:grid; gap:2px;
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .15s ease, transform .15s ease, visibility .15s;
  z-index:60;
}
.nav-item:hover > .nav-dropdown, .nav-item:focus-within > .nav-dropdown{
  opacity:1; visibility:visible; pointer-events:auto; transform:translateX(-50%) translateY(0);
}
.nav-dropdown a{
  display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:var(--radius-md);
  font-size:14px; font-weight:500; color:var(--ink-700); white-space:nowrap;
}
.nav-dropdown a:hover{ background:var(--bg-alt); color:var(--navy-900); }
.nav-dropdown a .icon{ width:16px; height:16px; color:var(--blue-500); flex-shrink:0; }

/* Mobile "Kurser" accordion inside the slide-out drawer — restyled to
   match the app-list-row look used across the rest of the drawer (see
   "Mobile nav drawer" below): a rounded icon badge on the left, the
   label, and a chevron on the right that rotates when opened. */
.mobile-nav-group{ border-bottom:1px solid rgba(255,255,255,.08); }
.mobile-nav-group summary{
  display:flex; align-items:center; justify-content:space-between; gap:10px; cursor:pointer; list-style:none;
  font-family:var(--font-display); font-weight:600; font-size:17px; color:#fff; padding:13px 10px;
  border-radius:var(--radius-md); transition:background .15s ease;
}
.mobile-nav-group summary:hover, .mobile-nav-group summary:focus-visible{ background:rgba(255,255,255,.06); }
.mobile-nav-group summary::-webkit-details-marker{ display:none; }
.mobile-nav-group summary .mnav-row{ display:flex; align-items:center; gap:12px; min-width:0; }
.mobile-nav-group summary .mnav-chevron{ width:16px; height:16px; transition:transform .2s ease; flex-shrink:0; color:#9fadd0; }
.mobile-nav-group[open] summary .mnav-chevron,
.mobile-nav-group.is-open summary .mnav-chevron{ transform:rotate(180deg); color:var(--gold-400); }
.mobile-nav-group .mobile-nav-sub{ display:flex; flex-direction:column; padding:2px 0 10px 4px; gap:2px; }
.mobile-nav-group .mobile-nav-sub a{
  display:flex; align-items:center; gap:12px; padding:10px 10px; font-size:15px; font-weight:500;
  color:#c3cfe8; border-bottom:0; border-radius:var(--radius-md); transition:background .15s ease,color .15s ease;
}
.mobile-nav-group .mobile-nav-sub a:hover{ color:#fff; background:rgba(255,255,255,.06); }
.mnav-ico{
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
  width:38px; height:38px; border-radius:var(--radius-full);
  background:rgba(255,255,255,.08);
}
.mnav-ico .icon{ width:18px; height:18px; color:var(--gold-400); }
.mnav-ico-sm{ width:32px; height:32px; background:rgba(255,255,255,.06); }
.mnav-ico-sm .icon{ width:15px; height:15px; }

.header-actions{ display:flex; align-items:center; gap:12px; }
.header-phone{ display:flex; align-items:center; gap:9px; font-family:var(--font-display); font-weight:600; color:var(--navy-900); font-size:15px; }
.header-phone .icon-badge{ width:38px; height:38px; border-radius:50%; background:var(--gold-100); color:var(--gold-500); display:flex; align-items:center; justify-content:center; }
.header-phone .icon-badge .icon{ width:17px; height:17px; }
.header-phone small{ display:block; font-weight:400; font-size:11.5px; color:var(--ink-400); }
.header-cart{ position:relative; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.header-cart .icon-badge{ width:40px; height:40px; border-radius:50%; background:var(--bg-alt); color:var(--navy-900); display:flex; align-items:center; justify-content:center; transition:background .2s ease, color .2s ease; }
.header-cart .icon-badge .icon{ width:19px; height:19px; }
.header-cart:hover .icon-badge{ background:var(--navy-900); color:#fff; }
.al-cart-count{
  position:absolute; top:-4px; right:-4px;
  min-width:18px; height:18px; padding:0 4px;
  border-radius:var(--radius-full); background:var(--gold-500); color:var(--navy-950);
  font-family:var(--font-display); font-weight:700; font-size:11px; line-height:18px; text-align:center;
  box-shadow:0 0 0 2px var(--surface);
}
.al-cart-count.is-empty{ display:none; }

.nav-toggle{ display:none; width:44px; height:44px; align-items:center; justify-content:center; border-radius:var(--radius-sm); border:1px solid var(--border); background:#fff; }
.nav-toggle .icon{ width:20px; height:20px; color:var(--navy-900); }

/* =================== OFFER HERO (campaign banner) =================== */
:root{
  --offer-blue-deep:#075e8c;
  --offer-blue:#0f8fd6;
  --offer-blue-light:#3ab0ef;
  --offer-navy-text:#04314a;
}
.offer-hero{
  position:relative;
  overflow:hidden;
  background:linear-gradient(135deg,var(--offer-blue-deep) 0%,var(--offer-blue) 58%,var(--offer-blue-light) 100%);
  color:#fff;
  padding:56px 0 0;
}
.offer-hero .dotgrid{ position:absolute; top:6%; right:6%; width:190px; height:140px; opacity:.9; pointer-events:none; z-index:1; }
.offer-hero .curve-shape{ position:absolute; inset:0; width:100%; height:100%; z-index:0; pointer-events:none; }
.offer-grid{
  position:relative; z-index:2;
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:36px;
  align-items:center;
  padding-bottom:0;
}
.offer-eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  background:rgba(255,255,255,.16);
  border:1px solid rgba(255,255,255,.3);
  font-family:var(--font-display); font-weight:700; font-size:12.5px; letter-spacing:.1em; text-transform:uppercase;
  padding:7px 16px; border-radius:var(--radius-full); margin-bottom:18px;
  backdrop-filter:blur(4px);
}
.offer-eyebrow .icon{ width:15px; height:15px; color:var(--gold-400); }
.offer-title{
  font-family:var(--font-display); font-weight:800; color:#fff;
  font-size:clamp(30px,3.6vw,46px); line-height:1.08; letter-spacing:-.01em; margin-bottom:6px;
  text-shadow:0 2px 18px rgba(4,49,74,.35);
}
.offer-title .accent{ color:var(--gold-400); }
.offer-sub{ color:rgba(255,255,255,.85); font-size:15.5px; max-width:440px; margin-bottom:22px; }
.offer-list{ display:grid; grid-template-columns:1fr 1fr; gap:10px 18px; margin-bottom:28px; max-width:460px; }
.offer-list li{ display:flex; align-items:center; gap:9px; font-family:var(--font-display); font-weight:600; font-size:14.5px; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.18); border-radius:10px; padding:9px 12px; }
.offer-list .icon{ width:16px; height:16px; color:var(--gold-400); flex-shrink:0; }
.offer-price-row{ display:flex; align-items:flex-end; gap:22px; flex-wrap:wrap; margin-bottom:26px; }
.offer-price{ font-family:var(--font-display); font-weight:800; font-size:clamp(46px,5.2vw,64px); line-height:1; color:#fff; }
.offer-price .kr{ font-size:.55em; font-weight:700; }
.offer-price-meta{ padding-bottom:8px; }
.offer-price-old{ display:block; color:rgba(255,255,255,.75); font-size:14px; text-decoration:line-through; }
.offer-price-badge{ display:inline-block; margin-top:4px; background:var(--gold-500); color:var(--navy-950); font-family:var(--font-display); font-weight:700; font-size:11.5px; padding:4px 10px; border-radius:var(--radius-full); }
.offer-cta-row{ display:flex; gap:14px; flex-wrap:wrap; margin-bottom:34px; }

.offer-visual{ position:relative; z-index:2; }
.offer-visual-card{
  position:relative; border-radius:28px;
  background:linear-gradient(155deg,rgba(255,255,255,.14),rgba(255,255,255,.03));
  border:1px solid rgba(255,255,255,.25);
  padding:20px; backdrop-filter:blur(6px);
  box-shadow:0 30px 70px -24px rgba(4,49,74,.55);
}
.offer-visual-card svg, .offer-visual-card img{ width:100%; height:auto; display:block; border-radius:20px; object-fit:cover; aspect-ratio:1080/718; }
.offer-badge-float{
  position:absolute; background:#fff; color:var(--navy-900);
  border-radius:var(--radius-md); box-shadow:var(--shadow-lg);
  padding:12px 16px; display:flex; align-items:center; gap:10px; min-width:168px;
}
.offer-badge-float .icon-badge{ width:36px; height:36px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.offer-badge-float strong{ display:block; font-family:var(--font-display); font-size:16px; line-height:1.1; }
.offer-badge-float span{ font-size:11px; color:var(--ink-500); }
.ob-1{ top:-4%; left:-9%; }
.ob-1 .icon-badge{ background:var(--gold-100); color:var(--gold-500); }
.ob-2{ bottom:-5%; right:-7%; }
.ob-2 .icon-badge{ background:var(--success-100); color:var(--success-500); }

.offer-wave{ display:block; width:100%; height:auto; margin-top:34px; position:relative; z-index:2; }

@media (max-width: 1080px){
  .offer-grid{ grid-template-columns:1fr; }
  .offer-visual{ order:-1; max-width:480px; margin:0 auto; }
  .offer-hero .dotgrid{ width:120px; height:90px; }
}
@media (max-width: 620px){
  .offer-hero{ padding:40px 0 0; }
  .offer-list{ grid-template-columns:1fr; }
  .offer-price-row{ gap:14px; }
}

/* =================== OFFERS (3-card "bästa erbjudanden") ===================
 * A 3-column grid at tablet/desktop widths; at phone widths the SAME
 * markup becomes a native horizontal snap-scroll slider (scroll-snap-type)
 * — no JS is required for the slider to work (it swipes natively), the
 * dot indicators in assets/js/main.js are a progressive enhancement only.
 * ========================================================================= */
.offers-section{ padding-top:64px; }
.offers-track{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:26px;
}
.offer-card{
  position:relative;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:30px 26px 26px;
  box-shadow:var(--shadow-sm);
  overflow:hidden;
  transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s cubic-bezier(.16,1,.3,1), border-color .3s ease;
}
.offer-card::before{
  content:"";
  position:absolute; top:0; left:0; right:0; height:4px;
  background:var(--grad-gold);
}
.offer-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow-lg); border-color:var(--gold-400); }
.offer-card-num{
  position:absolute; top:22px; right:24px;
  font-family:var(--font-display); font-size:13px; font-weight:700;
  color:var(--ink-300);
}
.offer-card-icon{
  width:52px; height:52px; border-radius:14px;
  background:var(--grad-navy); color:var(--gold-400);
  display:flex; align-items:center; justify-content:center;
  margin-bottom:18px; box-shadow:0 10px 22px -10px rgba(11,31,58,.55);
}
.offer-card-icon .icon{ width:24px; height:24px; }
.offer-card h3{ font-size:19px; margin-bottom:6px; }
.offer-card-price{
  font-family:var(--font-display); font-weight:800;
  font-size:clamp(26px,3vw,32px); color:var(--navy-900);
  margin-bottom:10px;
}
.offer-card p{ color:var(--ink-500); font-size:14.5px; margin-bottom:22px; min-height:44px; }
.offers-dots{ display:none; justify-content:center; gap:9px; margin-top:22px; }
.offers-dot{
  width:8px; height:8px; padding:0; border:none; border-radius:50%;
  background:var(--border); cursor:pointer; transition:background .2s ease, transform .2s ease;
}
.offers-dot.is-active{ background:var(--gold-500); transform:scale(1.25); }

@media (max-width: 900px){
  .offers-track{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width: 620px){
  .offers-section{ padding-top:48px; }
  .offers-track{
    display:flex;
    grid-template-columns:none;
    gap:16px;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    scroll-padding:0 8vw;
    padding-bottom:6px;
    margin:0 -20px;
    padding-left:20px; padding-right:20px;
    -webkit-overflow-scrolling:touch;
  }
  .offers-track::-webkit-scrollbar{ display:none; }
  .offer-card{
    flex:0 0 84%;
    scroll-snap-align:center;
  }
  .offers-dots{ display:flex; }
}

/* =================== HERO =================== */
.hero{
  position:relative;
  overflow:hidden;
  background:linear-gradient(150deg,var(--navy-950) 0%,var(--navy-850) 46%,var(--navy-700) 100%);
  color:#fff;
  padding:84px 0 0;
}
.hero::before{
  content:"";
  position:absolute; inset:0;
  background-image:
    radial-gradient(circle at 15% 20%, rgba(76,141,255,.28), transparent 45%),
    radial-gradient(circle at 92% 8%, rgba(245,180,0,.22), transparent 40%),
    radial-gradient(circle at 50% 100%, rgba(47,111,237,.16), transparent 55%);
  background-size:180% 180%;
  animation:mesh-drift 22s ease-in-out infinite;
  pointer-events:none;
}
@keyframes mesh-drift{
  0%,100%{ background-position:0% 0%, 100% 0%, 50% 100%; }
  50%{ background-position:10% 10%, 90% 15%, 45% 90%; }
}
@media (prefers-reduced-motion: reduce){
  .hero::before, .page-hero::before{ animation:none; }
}
.hero-grid{
  position:relative;
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:40px;
  align-items:center;
  padding-bottom:64px;
}
.hero h1{
  color:#fff;
  font-size:clamp(34px,4.6vw,56px);
  letter-spacing:-0.02em;
}
.hero h1 em{ font-style:normal; color:var(--gold-400); }
.hero-lead{ color:#c9d4ea; font-size:18px; max-width:520px; }
.hero-cta{ display:flex; gap:14px; flex-wrap:wrap; margin:30px 0 34px; }
.hero-trust{ display:flex; gap:28px; flex-wrap:wrap; }
.hero-trust-item{ display:flex; align-items:center; gap:10px; }
.hero-trust-item strong{ display:block; font-family:var(--font-display); font-size:17px; color:#fff; }
.hero-trust-item span{ font-size:12.5px; color:#a9b7d6; }
.stars{ display:flex; gap:2px; color:var(--gold-400); }
.stars .icon{ width:15px; height:15px; }

.hero-art{ position:relative; }
.hero-art-card{
  position:relative;
  border-radius:var(--radius-xl);
  background:linear-gradient(155deg,rgba(255,255,255,.09),rgba(255,255,255,.02));
  border:1px solid rgba(255,255,255,.12);
  padding:22px;
  backdrop-filter:blur(6px);
}
.hero-art-card svg{ width:100%; height:auto; display:block; border-radius:18px; }
.floating-card{
  position:absolute;
  background:#fff;
  color:var(--navy-900);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-lg);
  padding:14px 16px;
  display:flex;
  align-items:center;
  gap:12px;
  min-width:198px;
}
.floating-card .icon-badge{ width:40px; height:40px; border-radius:11px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.floating-card strong{ display:block; font-family:var(--font-display); font-size:19px; line-height:1.1; }
.floating-card span{ font-size:12px; color:var(--ink-500); }
.fc-1{ top:-6%; left:-8%; }
.fc-1 .icon-badge{ background:var(--success-100); color:var(--success-500); }
.fc-2{ bottom:-6%; right:-6%; }
.fc-2 .icon-badge{ background:var(--gold-100); color:var(--gold-500); }

.hero-wave{ display:block; width:100%; height:auto; margin-top:20px; }

/* logo/trust strip */
.strip{ background:var(--surface); border-bottom:1px solid var(--border); padding:26px 0; }
.strip .container{ display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap; }
.strip .container.no-label{ justify-content:center; }
.strip-label{ font-size:12.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-400); font-weight:600; font-family:var(--font-display); }
.strip-badges{ display:flex; gap:14px; flex-wrap:wrap; }
.strip-badge{ display:flex; align-items:center; gap:9px; padding:9px 16px; border:1px solid var(--border); border-radius:var(--radius-full); font-family:var(--font-display); font-weight:600; font-size:13.5px; color:var(--ink-700); }
.strip-badge .icon{ width:16px; height:16px; color:var(--blue-500); }

/* =================== USP CARDS =================== */
.grid-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; }

/*
 * .cards-flow — used by the Courses and Team sections, both of which are
 * now driven by a custom post type (see inc/cpt-courses.php / cpt-team.php)
 * so the client can add/remove entries freely from wp-admin. A FIXED
 * repeat(4,1fr)/repeat(3,1fr) grid (like .grid-4/.grid-3 above, meant for
 * an always-exactly-N set of cards) would leave an awkward empty gap
 * when the count doesn't divide evenly, or cram too many into one row
 * when it grows. auto-fit + minmax reflows to however many columns
 * actually fit at the current width for however many cards exist, so
 * adding/editing/deleting a course or team member never "breaks" the
 * layout regardless of the final count.
 */
.cards-flow{ display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:24px; justify-content:center; }
.cards-flow--narrow{ grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); }
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.grid-2{ display:grid; grid-template-columns:repeat(2,1fr); gap:24px; }

.usp-card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:30px 26px;
  transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.usp-card:hover{ transform:translateY(-5px); box-shadow:var(--shadow-md); border-color:transparent; }
.usp-icon{ width:54px; height:54px; border-radius:15px; background:var(--grad-navy); color:var(--gold-400); box-shadow:0 10px 22px -10px rgba(11,31,58,.55); display:flex; align-items:center; justify-content:center; margin-bottom:18px; transition:transform .3s cubic-bezier(.16,1,.3,1); }
.usp-card:hover .usp-icon{ transform:scale(1.08) rotate(-4deg); }
.usp-icon .icon{ width:25px; height:25px; }
.usp-card h3{ font-size:18px; margin-bottom:8px; }
.usp-card p{ color:var(--ink-500); font-size:14.5px; margin-bottom:0; }

/* =================== SWISH QR CARD =================== */
.swish-qr-card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg);
  padding:26px; display:flex; flex-direction:column; align-items:center; text-align:center; gap:6px;
  transition:transform .2s ease, box-shadow .2s ease;
}
.swish-qr-card:hover{ transform:translateY(-5px); box-shadow:var(--shadow-md); }
.swish-qr-card img{
  width:120px; height:120px; object-fit:contain; background:#fff; border:1px solid var(--border);
  border-radius:var(--radius-md); padding:10px; margin-bottom:8px;
}
.swish-qr-card h3{ font-size:17px; margin:0 0 2px; }
.swish-qr-card p{ color:var(--ink-500); font-size:13.5px; margin:0; }
.swish-qr-card .swish-num{ font-family:var(--font-display); font-weight:700; color:var(--navy-900); font-size:15px; margin-top:4px; }

/* =================== SERVICE / COURSE CARDS =================== */
.course-card{
  background:var(--surface);
  border-radius:var(--radius-lg);
  border:1px solid var(--border);
  overflow:hidden;
  display:flex;
  flex-direction:column;
  transition:transform .2s ease, box-shadow .2s ease;
}
.course-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow-lg); }
.course-card-top{ padding:26px 26px 0; }
.course-tag{ display:inline-block; font-family:var(--font-display); font-weight:600; font-size:12px; letter-spacing:.05em; text-transform:uppercase; color:var(--blue-500); background:var(--blue-100); padding:5px 12px; border-radius:var(--radius-full); margin-bottom:14px; }
.course-icon{ width:52px; height:52px; border-radius:14px; background:linear-gradient(135deg,var(--blue-100),#dce7fc); color:var(--navy-800); display:flex; align-items:center; justify-content:center; margin-bottom:16px; transition:transform .3s cubic-bezier(.16,1,.3,1); }
.course-card:hover .course-icon{ transform:scale(1.08) rotate(4deg); }
.course-icon .icon{ width:24px; height:24px; }
.course-card h3{ font-size:20px; margin-bottom:8px; }
.course-card h3 a{ color:inherit; text-decoration:none; }
.course-card h3 a:hover{ text-decoration:underline; }
.course-card-media{ display:block; aspect-ratio:16/10; overflow:hidden; background:var(--bg-alt); }
.course-card-media img{ width:100%; height:100%; object-fit:cover; display:block; }
.course-card-media + .course-card-top{ padding-top:22px; }
/* Shop-sourced cards (front-page.php, real WooCommerce products) show a
   full price string like "12 900,00 kr" instead of a short manual price —
   too wide for the card's normal 22px bold price style to sit next to the
   button on one line, so it's slightly smaller and never wraps mid-number;
   if the row still runs out of room the button drops to its own line
   (same flex-wrap fallback used by .price-row elsewhere) instead of the
   number itself breaking across lines. */
.course-card--shop .course-card-foot{ flex-wrap:wrap; row-gap:10px; }
.course-card--shop .price{ font-size:18px; white-space:nowrap; }
.course-card p{ color:var(--ink-500); font-size:14.5px; }
.course-card-list{ padding:0 26px; margin:14px 0 20px; }
.course-card-list li{ display:flex; gap:9px; align-items:flex-start; font-size:14px; color:var(--ink-600); margin-bottom:9px; }
.course-card-list .icon{ width:16px; height:16px; color:var(--success-500); margin-top:3px; flex-shrink:0; }
.course-card-foot{ margin-top:auto; padding:20px 26px; border-top:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; background:var(--bg-alt); }
.price{ font-family:var(--font-display); font-weight:700; font-size:22px; color:var(--navy-900); }
.price small{ font-family:var(--font-body); font-weight:400; font-size:12.5px; color:var(--ink-400); }
.price-old{ font-size:13px; color:var(--ink-400); text-decoration:line-through; margin-right:6px; }

/* =================== SERVICES PAGE (kurser.php) — quick-nav + step cards ================= */
.course-quicknav{ display:flex; flex-wrap:wrap; gap:10px; margin:22px 0 6px; }
.course-quicknav a{
  display:inline-flex; align-items:center; gap:8px; font-family:var(--font-display); font-weight:600; font-size:13.5px;
  color:var(--navy-900); background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-full);
  padding:9px 16px; transition:background .15s ease, border-color .15s ease, transform .15s ease;
}
.course-quicknav a .num{
  display:flex; align-items:center; justify-content:center; width:19px; height:19px; border-radius:50%;
  background:var(--grad-navy); color:#fff; font-size:11px; font-weight:700; flex-shrink:0;
}
.course-quicknav a:hover{ background:var(--blue-100); border-color:var(--blue-200,var(--border)); transform:translateY(-1px); }

.course-detail-card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl);
  box-shadow:var(--shadow-md); padding:40px; position:relative; overflow:hidden;
}
.course-detail-card::before{
  content:""; position:absolute; inset:0 0 auto 0; height:4px; background:var(--grad-accent);
}
.course-visual{
  width:100%; min-height:280px; border-radius:var(--radius-xl); position:relative; overflow:hidden;
  background:linear-gradient(150deg,var(--navy-950),var(--navy-800));
  display:flex; align-items:center; justify-content:center;
}
.course-visual::before{
  content:""; position:absolute; inset:0; opacity:.6; pointer-events:none;
  background:radial-gradient(circle at 85% 12%, rgba(47,111,237,.4), transparent 55%),
             radial-gradient(circle at 12% 90%, rgba(245,180,0,.22), transparent 50%);
}
.course-visual .icon{ width:74px; height:74px; color:#fff; position:relative; z-index:1; opacity:.92; }
.course-visual .step-num-badge{
  position:absolute; top:18px; left:18px; z-index:2;
  display:flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%;
  background:var(--grad-gold); color:var(--navy-950); font-family:var(--font-display); font-weight:800; font-size:16px;
  box-shadow:0 8px 18px -8px rgba(245,180,0,.7);
}
@media (max-width:700px){
  .course-detail-card{ padding:26px 22px; }
  .course-visual{ min-height:200px; }
}

/* =================== FEATURED PACKAGE =================== */
.pkg-feature{
  position:relative;
  display:grid;
  grid-template-columns:1.1fr .9fr;
  background:linear-gradient(150deg,var(--navy-950),var(--navy-800));
  border-radius:var(--radius-xl);
  color:#fff;
  overflow:hidden;
  box-shadow:0 30px 70px -24px rgba(11,31,58,.6);
}
.pkg-feature::before{
  content:""; position:absolute; inset:0;
  background-image:radial-gradient(circle at 12% 15%, rgba(76,141,255,.28), transparent 45%), radial-gradient(circle at 92% 85%, rgba(245,180,0,.18), transparent 42%);
  pointer-events:none;
}
.pkg-feature-content, .pkg-feature-price{ position:relative; }
.pkg-feature-content{ padding:56px; }
.pkg-badge{ display:inline-flex; align-items:center; gap:8px; background:var(--gold-500); color:var(--navy-950); font-family:var(--font-display); font-weight:700; font-size:12.5px; letter-spacing:.06em; text-transform:uppercase; padding:7px 14px; border-radius:var(--radius-full); margin-bottom:20px; }
.pkg-feature h2{ color:#fff; font-size:clamp(24px,3vw,34px); margin-bottom:14px; }
.pkg-feature p.lead{ color:#c3cfe8; font-size:16px; max-width:440px; }
.pkg-list{ display:grid; grid-template-columns:1fr 1fr; gap:12px 22px; margin:26px 0 32px; }
.pkg-list li{ display:flex; gap:10px; align-items:flex-start; font-size:14.5px; color:#e3e9f7; }
.pkg-list .icon{ width:17px; height:17px; color:var(--gold-400); margin-top:2px; flex-shrink:0; }
.pkg-feature-price{ background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.14); border-radius:var(--radius-lg); padding:44px 40px; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:6px; }
.pkg-feature-price .old{ color:#93a2c4; text-decoration:line-through; font-size:16px; }
.pkg-feature-price .big{ font-family:var(--font-display); font-weight:700; font-size:52px; color:#fff; line-height:1; }
.pkg-feature-price .save{ background:var(--success-500); color:#fff; font-family:var(--font-display); font-weight:600; font-size:13px; padding:5px 12px; border-radius:var(--radius-full); margin:10px 0 22px; display:inline-block; }

/* =================== PROCESS STEPS =================== */
.steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; counter-reset:step; position:relative; }
.steps::before{ content:""; position:absolute; top:27px; left:12%; right:12%; height:2px; background:repeating-linear-gradient(90deg,var(--border-strong) 0 10px, transparent 10px 18px); z-index:0; }
.step{ position:relative; z-index:1; text-align:center; padding:0 16px; }
.step-num{ width:56px; height:56px; margin:0 auto 18px; border-radius:50%; background:var(--surface); border:2px solid var(--navy-900); color:var(--navy-900); font-family:var(--font-display); font-weight:700; font-size:20px; display:flex; align-items:center; justify-content:center; }
.step h3{ font-size:16.5px; margin-bottom:8px; }
.step p{ font-size:13.5px; color:var(--ink-500); }

/* =================== INSTRUCTORS =================== */
.person-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; text-align:center; padding-bottom:24px; }
.person-avatar{ width:100%; aspect-ratio:1/.82; display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:700; font-size:44px; color:#fff; overflow:hidden; }
.person-avatar--photo{ background:var(--bg-alt); }
.person-avatar--photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.person-card h3{ font-size:18px; margin:20px 0 2px; }
.person-role{ color:var(--blue-500); font-weight:600; font-size:13.5px; margin-bottom:10px; display:block; }
.person-meta{ display:flex; gap:16px; justify-content:center; font-size:12.5px; color:var(--ink-500); }
.person-meta span{ display:flex; align-items:center; gap:5px; }
.person-meta .icon{ width:14px; height:14px; color:var(--gold-500); }

/* =================== TESTIMONIALS =================== */
.testi-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:30px; position:relative; }
.testi-card .i-quote{ width:34px; height:34px; color:var(--blue-100); position:absolute; top:22px; right:24px; }
.testi-card .stars{ margin-bottom:14px; }
.testi-card p{ color:var(--ink-600); font-size:15px; }
.testi-person{ display:flex; align-items:center; gap:12px; margin-top:18px; }
.testi-avatar{ width:44px; height:44px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; font-family:var(--font-display); font-weight:700; font-size:15px; flex-shrink:0; }
.testi-person strong{ display:block; font-size:14.5px; color:var(--navy-900); }
.testi-person span{ font-size:12.5px; color:var(--ink-400); }
/* Real Google Reviews widget (see al_home_google_reviews_shortcode in
   front-page.php) — the plugin brings its own internal styling, so this
   wrapper only needs to center it and keep it from ever running wider
   than the rest of the section's content. */
.al-google-reviews{ max-width:100%; overflow:hidden; margin:0 auto; }

/* =================== STATS BAND =================== */
.stats-band{ background:var(--navy-950); color:#fff; padding:56px 0; }
.stats-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; text-align:center; }
.stat-num{ font-family:var(--font-display); font-weight:700; font-size:clamp(30px,3.6vw,44px); color:var(--gold-400); }
.stat-label{ font-size:13.5px; color:#aeb9d6; margin-top:6px; }

/* =================== FAQ =================== */
.faq{ max-width:820px; margin:0 auto; }
.faq-item{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md); margin-bottom:14px; overflow:hidden; }
.faq-q{ width:100%; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:20px 24px; background:none; border:none; text-align:left; font-family:var(--font-display); font-weight:600; font-size:15.5px; color:var(--navy-900); transition:color .2s ease; }
.faq-item[open] .faq-q{ color:var(--blue-500); }
.faq-q .icon{ width:19px; height:19px; color:var(--ink-400); transition:transform .3s cubic-bezier(.16,1,.3,1), color .2s ease; flex-shrink:0; }
.faq-item[open] .faq-q .icon{ transform:rotate(180deg); color:var(--blue-500); }
.faq-item{ transition:box-shadow .2s ease, border-color .2s ease; }
.faq-item[open]{ box-shadow:var(--shadow-md); border-color:var(--border-strong); }
.faq-a{ padding:0 24px 20px; color:var(--ink-500); font-size:14.5px; }
.faq-item summary{ cursor:pointer; list-style:none; }
.faq-item summary::-webkit-details-marker{ display:none; }

/* =================== CTA BANNER =================== */
.cta-banner{ position:relative; overflow:hidden; background:linear-gradient(120deg,var(--gold-400),var(--gold-500)); border-radius:var(--radius-xl); padding:56px; display:flex; align-items:center; justify-content:space-between; gap:32px; flex-wrap:wrap; box-shadow:0 26px 60px -22px rgba(245,180,0,.5); }
.cta-banner::before{ content:""; position:absolute; inset:0; background-image:radial-gradient(circle at 85% 20%, rgba(255,255,255,.35), transparent 45%); pointer-events:none; }
.cta-banner > *{ position:relative; }
.cta-banner h2{ color:var(--navy-950); font-size:clamp(24px,3vw,32px); margin-bottom:8px; }
.cta-banner p{ color:var(--navy-800); margin-bottom:0; font-size:15.5px; }
.cta-banner-actions{ display:flex; gap:14px; flex-wrap:wrap; }

/* =================== CONTACT / MAP =================== */
.contact-grid{ display:grid; grid-template-columns:.9fr 1.1fr; gap:40px; align-items:stretch; }
.contact-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:36px; }
.contact-row{ display:flex; gap:16px; align-items:flex-start; margin-bottom:22px; }
.contact-row:last-child{ margin-bottom:0; }
.contact-row .icon-badge{ width:44px; height:44px; border-radius:12px; background:var(--bg-alt); color:var(--navy-900); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.contact-row .icon-badge .icon{ width:19px; height:19px; }
.contact-row strong{ display:block; font-family:var(--font-display); font-size:15px; color:var(--navy-900); margin-bottom:2px; }
.contact-row span, .contact-row a{ font-size:14px; color:var(--ink-500); }
.map-card{ border-radius:var(--radius-lg); overflow:hidden; border:1px solid var(--border); min-height:340px; position:relative; }
.map-card svg{ width:100%; height:100%; display:block; }

/* =================== FORMS =================== */
.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; min-width:0; }
.form-grid > *{ min-width:0; }
.field{ display:flex; flex-direction:column; gap:7px; margin-bottom:16px; min-width:0; }
.field.full{ grid-column:1/-1; }
.field label{ font-family:var(--font-display); font-weight:600; font-size:13.5px; color:var(--navy-900); }
.field input, .field select, .field textarea{
  width:100%;
  font-family:var(--font-body);
  font-size:14.5px;
  padding:13px 16px;
  border-radius:var(--radius-sm);
  border:1.5px solid var(--border-strong);
  background:#fff;
  color:var(--ink-700);
  outline:none;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.field input:focus, .field select:focus, .field textarea:focus{ border-color:var(--blue-500); box-shadow:0 0 0 4px var(--blue-100); }
.field textarea{ resize:vertical; min-height:110px; }
.form-note{ font-size:12.5px; color:var(--ink-400); margin-top:10px; }

/* =================== TIMELINE (booking page) =================== */
.booking-steps{ display:flex; flex-direction:column; gap:0; min-width:0; }
.b-step{ display:flex; gap:20px; min-width:0; }
.b-step-line{ display:flex; flex-direction:column; align-items:center; flex-shrink:0; }
.b-step-dot{ width:38px; height:38px; border-radius:50%; background:var(--navy-900); color:var(--gold-400); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:700; flex-shrink:0; }
.b-step-line .line{ flex:1; width:2px; background:var(--border-strong); margin:6px 0; min-height:34px; }
.b-step:last-child .line{ display:none; }
.b-step-body{ padding-bottom:32px; flex:1 1 auto; min-width:0; }
.b-step-body h3{ font-size:17px; margin-bottom:6px; }
.b-step-body p{ color:var(--ink-500); font-size:14.5px; margin-bottom:0; }

/* =================== BOOKING EMBED (external booking system) =================== */
.booking-embed{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-md); }
.booking-tabs{ display:flex; flex-wrap:wrap; gap:8px; padding:18px 20px; border-bottom:1px solid var(--border); background:var(--bg-alt); }
.booking-tab{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--font-display); font-weight:600; font-size:14px;
  padding:10px 18px; border-radius:var(--radius-full);
  border:1.5px solid var(--border-strong); background:#fff; color:var(--ink-600);
  cursor:pointer; transition:background .15s ease, color .15s ease, border-color .15s ease;
}
.booking-tab .icon{ width:16px; height:16px; }
.booking-tab:hover{ border-color:var(--navy-700); color:var(--navy-900); }
.booking-tab.is-active{ background:var(--navy-900); border-color:var(--navy-900); color:#fff; }
.booking-panels{ position:relative; }
.booking-panel{ display:none; }
.booking-panel.is-active{ display:block; }
.booking-iframe-wrap{ position:relative; height:min(82vh,980px); min-height:560px; background:var(--bg-alt); }
.booking-iframe-wrap iframe{ width:100%; height:100%; border:0; display:block; }
.booking-loading{
  position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px;
  color:var(--ink-500); font-family:var(--font-display); font-weight:600; font-size:14px;
  background:var(--bg-alt); transition:opacity .25s ease;
}
.booking-loading .spinner{
  width:34px; height:34px; border-radius:50%;
  border:3px solid var(--border-strong); border-top-color:var(--blue-500);
  animation:booking-spin .8s linear infinite;
}
@keyframes booking-spin{ to{ transform:rotate(360deg); } }
.booking-panel.is-loaded .booking-loading{ opacity:0; pointer-events:none; }
.booking-fallback{ display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; padding:14px 20px; background:var(--bg-alt); border-top:1px solid var(--border); font-size:13px; color:var(--ink-500); }
.booking-fallback a{ font-weight:600; color:var(--blue-500); display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
.booking-fallback a:hover{ text-decoration:underline; }
.booking-login-card{
  display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  background:linear-gradient(150deg,var(--navy-950),var(--navy-800));
  color:#fff; border-radius:var(--radius-lg); padding:28px 32px; margin-top:28px;
}
.booking-login-card h3{ color:#fff; margin-bottom:4px; }
.booking-login-card p{ color:#c3cfe8; margin-bottom:0; font-size:14.5px; }
.booking-powered{ text-align:center; font-size:12px; color:var(--ink-400); margin-top:14px; }
.booking-powered a{ color:var(--ink-500); text-decoration:underline; }

/* Alternate "external link only" display mode (no iframe) — used when
   booking_display_mode is set to "link" in the WordPress Customizer, e.g.
   as a fallback if the external booking system ever blocks being framed. */
.booking-link-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.booking-link-card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg);
  padding:26px 24px; box-shadow:var(--shadow-md); display:flex; flex-direction:column; gap:6px; min-width:0;
}
.booking-link-card .icon-badge{ width:46px; height:46px; border-radius:12px; background:var(--bg-alt); color:var(--navy-900); display:flex; align-items:center; justify-content:center; margin-bottom:6px; }
.booking-link-card .icon-badge .icon{ width:22px; height:22px; }
.booking-link-card h3{ font-size:16.5px; margin-bottom:2px; }
.booking-link-card p{ font-size:13.5px; color:var(--ink-500); margin-bottom:14px; flex-grow:1; }
.booking-link-card .btn{ align-self:flex-start; }

@media (max-width: 620px){
  .booking-tabs{ padding:14px; gap:6px; }
  .booking-tab{ font-size:13px; padding:9px 14px; }
  .booking-iframe-wrap{ height:min(78vh,760px); }
  .booking-fallback{ flex-direction:column; align-items:flex-start; }
  .booking-login-card{ padding:24px 22px; }
  .booking-link-grid{ grid-template-columns:1fr; }
}

/* =================== PAGE HERO (inner pages) =================== */
.page-hero{ background:linear-gradient(150deg,var(--navy-950),var(--navy-800)); color:#fff; padding:64px 0 84px; position:relative; overflow:hidden; }
.page-hero::before{
  content:""; position:absolute; inset:0;
  background-image:
    radial-gradient(circle at 88% 10%, rgba(245,180,0,.2), transparent 40%),
    radial-gradient(circle at 8% 90%, rgba(76,141,255,.22), transparent 45%);
  background-size:160% 160%;
  animation:mesh-drift 26s ease-in-out infinite;
}
.page-hero::after{
  content:""; position:absolute; left:50%; bottom:0; width:140%; height:44px;
  background:var(--bg); transform:translateX(-50%);
  border-radius:50% 50% 0 0/100% 100% 0 0;
  pointer-events:none;
}
.page-hero .container{ position:relative; }
.breadcrumb{ display:flex; gap:8px; align-items:center; font-size:13.5px; color:#9fadd0; margin-bottom:18px; }
.breadcrumb a:hover{ color:#fff; }
.page-hero h1{ color:#fff; font-size:clamp(30px,4vw,46px); max-width:680px; }
.page-hero p{ color:#c3cfe8; font-size:16.5px; max-width:600px; margin-bottom:0; }

/* =================== TABLE (prices) =================== */
.price-table{ width:100%; border-collapse:separate; border-spacing:0; background:var(--surface); border-radius:var(--radius-lg); overflow:hidden; border:1px solid var(--border); box-shadow:var(--shadow-md); }
.price-table th{ background:var(--grad-navy); color:#fff; text-align:left; font-family:var(--font-display); font-weight:600; font-size:13.5px; letter-spacing:.03em; padding:18px 22px; }
.price-table td{ padding:19px 22px; border-top:1px solid var(--border); font-size:14.5px; color:var(--ink-600); transition:background .15s ease; }
.price-table tbody tr:nth-child(even) td{ background:var(--bg-alt); }
.price-table tr:hover td{ background:var(--blue-100); }
.price-table td.pt-price{ font-family:var(--font-display); font-weight:700; color:var(--navy-900); font-size:16px; white-space:nowrap; }
.price-table td.pt-name{ font-family:var(--font-display); font-weight:600; color:var(--navy-900); }
.price-table td.pt-name a:hover{ text-decoration:underline; }

/* =================== PRICE LIST (premium, card-grouped — replaces the plain
   .price-table on smaller screens where a table forces horizontal scroll) ================= */
.price-list{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); box-shadow:var(--shadow-md); overflow:hidden; }
.price-group + .price-group{ border-top:1px solid var(--border); }
.price-group-title{
  display:flex; align-items:center; gap:10px; font-family:var(--font-display); font-weight:700; font-size:13px;
  letter-spacing:.05em; text-transform:uppercase; color:#fff; background:var(--grad-navy); padding:15px 22px; margin:0;
}
.price-group-title .icon{ width:16px; height:16px; color:var(--gold-400); }
.price-row{ display:flex; align-items:center; gap:16px; padding:18px 22px; border-top:1px solid var(--border); transition:background .15s ease; }
.price-group-title + .price-row{ border-top:none; }
.price-row:nth-of-type(even){ background:var(--bg-alt); }
.price-row:hover{ background:var(--blue-100); }
.price-row-main{ flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:3px; }
.price-row-name{ font-family:var(--font-display); font-weight:600; color:var(--navy-900); font-size:15px; }
.price-row-name a{ color:inherit; }
.price-row-name a:hover{ text-decoration:underline; }
.price-row-tag{ font-size:12.5px; color:var(--ink-400); }
.price-row-price{ font-family:var(--font-display); font-weight:700; color:var(--navy-900); font-size:17px; white-space:nowrap; flex-shrink:0; }
@media (max-width:600px){
  .price-row{ flex-wrap:wrap; row-gap:10px; }
  .price-row-main{ order:1; width:100%; }
  .price-row-price{ order:2; }
  .price-row .btn{ order:3; margin-left:auto; }
}

/* =================== ABOUT PAGE =================== */
.value-card{ display:flex; gap:16px; align-items:flex-start; }
.value-card .usp-icon{ margin-bottom:0; flex-shrink:0; width:48px; height:48px; }
.value-card .usp-icon .icon{ width:22px; height:22px; }
.value-card h3{ font-size:16.5px; margin-bottom:6px; }
.value-card p{ font-size:14px; color:var(--ink-500); margin-bottom:0; }

.about-media{ position:relative; border-radius:var(--radius-xl); overflow:hidden; }
.about-media svg{ width:100%; height:100%; display:block; }

/* =================== GENERIC CONTENT PAGE (Testlektion, Körlektioner,
   Handledarkurs, Riskettan, Uppdateringskurs, Om körkort, Betalning) ===
   One shared, elegant shell so every "informational" page feels part of
   the same design system: page-hero + two-column body (prose + a sticky
   fact-box with the key numbers and a booking CTA) + related-pages strip. */
.detail-layout{ display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:48px; align-items:start; min-width:0; }
.detail-main{ min-width:0; }
.detail-main h2{ font-size:clamp(22px,2.6vw,28px); margin:40px 0 14px; }
.detail-main h2:first-child{ margin-top:0; }
.detail-main p{ color:var(--ink-600); font-size:16px; line-height:1.7; }
.detail-main .info-list{ display:flex; flex-direction:column; gap:12px; padding:0; margin:18px 0 28px; }
.detail-main .info-list li{ display:flex; gap:12px; align-items:flex-start; font-size:15px; color:var(--ink-600); }
.detail-main .info-list li .icon{ width:19px; height:19px; color:var(--success-500); flex-shrink:0; margin-top:2px; }
.detail-note{ display:flex; gap:12px; align-items:flex-start; background:var(--blue-100); border-radius:var(--radius-md); padding:18px 20px; font-size:14.5px; color:var(--navy-800); margin:28px 0; }
.detail-note .icon{ width:20px; height:20px; color:var(--blue-500); flex-shrink:0; margin-top:1px; }

.detail-aside{ position:sticky; top:100px; display:flex; flex-direction:column; gap:20px; }
.fact-box{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); box-shadow:var(--shadow-md); padding:26px 24px; }
.fact-box h3{ font-size:15px; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-400); font-family:var(--font-display); margin-bottom:16px; }
.fact-row{ display:flex; align-items:flex-start; gap:12px; padding:11px 0; border-top:1px solid var(--border); }
.fact-row:first-of-type{ border-top:0; padding-top:0; }
.fact-row .icon-badge{ width:36px; height:36px; border-radius:10px; background:var(--bg-alt); color:var(--navy-900); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.fact-row .icon-badge .icon{ width:16px; height:16px; }
.fact-row-label{ font-size:12.5px; color:var(--ink-400); display:block; }
.fact-row-value{ font-family:var(--font-display); font-weight:600; font-size:15px; color:var(--navy-900); }
.fact-box .btn{ width:100%; justify-content:center; margin-top:18px; }
.fact-box-price{ display:flex; align-items:baseline; gap:8px; padding:6px 0 18px; }
.fact-box-price .big{ font-family:var(--font-display); font-weight:700; font-size:30px; color:var(--navy-900); }
.fact-box-price .unit{ font-size:13.5px; color:var(--ink-400); }

@media (max-width: 980px){
  .detail-layout{ grid-template-columns:minmax(0,1fr); }
  .detail-aside{ position:static; }
}

/* =================== RELATED-PAGES LINK CARD =================== */
.link-card{
  display:flex; align-items:center; gap:14px; background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius-lg); padding:18px 20px; transition:transform .15s ease, box-shadow .15s ease; min-width:0;
}
.link-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-md); }
.link-card .icon-badge{ width:44px; height:44px; border-radius:12px; background:var(--grad-navy); color:var(--gold-400); display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:transform .3s cubic-bezier(.16,1,.3,1); box-shadow:0 8px 16px -9px rgba(11,31,58,.5); }
.link-card .icon-badge .icon{ width:19px; height:19px; }
.link-card:hover .icon-badge{ transform:scale(1.06) rotate(-3deg); }
.link-card-body{ min-width:0; }
.link-card-body strong{ display:block; font-family:var(--font-display); font-size:15.5px; color:var(--navy-900); }
.link-card-body span{ font-size:13px; color:var(--ink-500); }
.link-card .i-arrow{ margin-left:auto; width:16px; height:16px; color:var(--ink-400); flex-shrink:0; }

/* =================== GALLERY (BILDER) =================== */
.gallery-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.gallery-item{
  position:relative; border-radius:var(--radius-lg); overflow:hidden; aspect-ratio:4/3;
  background:linear-gradient(150deg,var(--navy-900),var(--navy-700)); min-width:0;
}
.gallery-item img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s cubic-bezier(.16,1,.3,1); }
.gallery-item:hover img{ transform:scale(1.07); }
.gallery-item.is-placeholder{ display:flex; align-items:center; justify-content:center; }
.gallery-item.is-placeholder .icon{ width:38px; height:38px; color:rgba(255,255,255,.5); }
.gallery-item-tag{
  position:absolute; left:14px; bottom:14px; background:rgba(4,20,42,.72); backdrop-filter:blur(3px);
  color:#fff; font-size:12.5px; font-weight:600; padding:6px 12px; border-radius:var(--radius-full);
}
.gallery-item.gallery-span-2{ grid-column:span 2; }
@media (max-width: 860px){
  .gallery-grid{ grid-template-columns:repeat(2,1fr); }
  .gallery-item.gallery-span-2{ grid-column:span 2; }
}
@media (max-width: 560px){
  .gallery-grid{ grid-template-columns:1fr; }
  .gallery-item.gallery-span-2{ grid-column:span 1; }
}

/* =================== FOOTER =================== */
.site-footer{ background:var(--navy-950); color:#aeb9d6; padding-top:72px; position:relative; overflow:hidden; }
.site-footer::before{
  content:""; position:absolute; inset:0; opacity:.5; pointer-events:none;
  background:radial-gradient(circle at 90% 0%, rgba(47,111,237,.3), transparent 55%),
             radial-gradient(circle at 4% 100%, rgba(245,180,0,.14), transparent 50%);
}
.footer-grid, .footer-bottom{ position:relative; z-index:1; }
.footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1.2fr; gap:40px; padding-bottom:52px; border-bottom:1px solid rgba(255,255,255,.08); }
.footer-brand .brand{ margin-bottom:16px; height:48px; overflow:hidden; }
.footer-brand .brand-logo{ height:48px !important; max-height:48px !important; width:auto; max-width:220px; object-fit:contain; }
.footer-brand .custom-logo-link{ height:48px; max-width:220px; overflow:hidden; }
.footer-brand p{ font-size:14px; color:#93a1c4; max-width:280px; }
.footer-social{ display:flex; gap:10px; margin-top:18px; }
.footer-social a{ width:36px; height:36px; border-radius:50%; background:rgba(255,255,255,.07); display:flex; align-items:center; justify-content:center; }
.footer-social .icon{ width:16px; height:16px; }
.footer-social a:hover{ background:var(--gold-500); color:var(--navy-950); }
.footer-col h4{ color:#fff; font-family:var(--font-display); font-size:14.5px; letter-spacing:.04em; text-transform:uppercase; margin-bottom:18px; }
.footer-col li{ margin-bottom:11px; }
.footer-col a{ font-size:14.5px; color:#aeb9d6; }
.footer-col a:hover{ color:var(--gold-400); }
.footer-contact li{ display:flex; gap:10px; align-items:flex-start; font-size:14px; }
.footer-contact .icon{ width:16px; height:16px; color:var(--gold-400); margin-top:3px; flex-shrink:0; }
.footer-payments{ display:flex; gap:10px; margin-top:6px; flex-wrap:wrap; }
.pay-badge{
  display:inline-flex; align-items:center; gap:7px; padding:8px 14px; border:1px solid rgba(255,255,255,.16);
  border-radius:var(--radius-full); font-family:var(--font-display); font-weight:600; font-size:12.5px; color:#dfe7f7;
  background:rgba(255,255,255,.03); transition:background .15s ease, border-color .15s ease, transform .15s ease;
}
.pay-badge .icon{ width:14px; height:14px; color:var(--gold-400); flex-shrink:0; }
.pay-badge:hover{ background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.32); transform:translateY(-1px); }
/* Klarna gets its own recognizable pink pill (brand-recognizable mark, not a
   traced logo file) so the footer matches the same badge used at checkout. */
.pay-badge--klarna{ background:#ffb3c7; color:#0b051a; border-color:transparent; box-shadow:0 8px 18px -10px rgba(255,179,199,.7); }
.pay-badge--klarna:hover{ background:#ffb3c7; border-color:transparent; filter:brightness(1.04); }
.pay-badge--klarna .pay-badge-mark{
  display:flex; align-items:center; justify-content:center; width:18px; height:18px; border-radius:50%;
  background:#0b051a; color:#ffb3c7; font-size:10.5px; font-weight:800; flex-shrink:0;
}
.footer-bottom{ display:flex; justify-content:space-between; align-items:center; padding:26px 0; font-size:13px; color:#7b88ab; flex-wrap:wrap; gap:10px; }
.footer-bottom a{ color:#c3cfe8; }
.footer-bottom a:hover{ color:var(--gold-400); }
.credit{ display:flex; align-items:center; gap:6px; }
.credit strong{ color:#e9edf9; font-weight:600; }

/* =================== UTILS =================== */
.mt-0{margin-top:0}
.text-center{text-align:center}
.badge-row{ display:flex; gap:10px; flex-wrap:wrap; }
.pill{ display:inline-flex; align-items:center; gap:6px; background:var(--bg-alt); border-radius:var(--radius-full); padding:6px 14px; font-size:12.5px; font-weight:600; color:var(--ink-600); font-family:var(--font-display); }

/* =================== SKIP LINK / A11Y =================== */
.skip-link{ position:absolute; left:-999px; top:auto; background:#fff; color:var(--navy-900); padding:12px 18px; z-index:999; border-radius:0 0 8px 0; }
.skip-link:focus{ left:0; top:0; }

/* WordPress core's own standard "visually hidden, but readable by
 * screen readers" utility class. Countless places rely on the theme
 * defining this — WordPress core (comment forms, search widget labels),
 * WooCommerce (checkout step <legend> labels, quantity-input labels,
 * pagination text, and many more) all output class="screen-reader-text"
 * and simply assume it will be hidden. This theme never defined it, so
 * every one of those labels was rendering fully visible instead of
 * hidden — confirmed live on the Kassa (checkout) page, where a
 * <legend class="screen-reader-text">Kontaktinformation</legend>
 * (WooCommerce Blocks' accessible label for the "Kontaktinformation"
 * step) rendered as a real, visible, browser-default <legend> box
 * overlapping the real "Kontaktinformation" heading beneath it. This is
 * the standard implementation used by WordPress's own default themes;
 * adding it fixes that overlap and every other silently-broken
 * screen-reader-only label sitewide in one place. */
.screen-reader-text{
  border:0; clip:rect(1px,1px,1px,1px); clip-path:inset(50%); height:1px;
  margin:-1px; overflow:hidden; padding:0; position:absolute !important;
  width:1px; word-wrap:normal !important;
}
.screen-reader-text:focus{
  background-color:var(--surface,#fff); border-radius:6px; box-shadow:0 0 4px rgba(0,0,0,.3);
  clip:auto !important; clip-path:none; color:var(--navy-900,#0b1f3a); display:block;
  font-size:14px; font-weight:600; height:auto; left:6px; line-height:normal;
  padding:12px 18px; text-decoration:none; top:6px; width:auto; z-index:100000;
}

/* =================== RESPONSIVE =================== */
@media (max-width: 1080px){
  .hero-grid{ grid-template-columns:1fr; }
  .hero-art{ order:-1; max-width:520px; margin:0 auto; }
  .grid-4{ grid-template-columns:repeat(2,1fr); }
  .pkg-feature{ grid-template-columns:1fr; }
  .pkg-feature-price{ align-items:flex-start; }
  .footer-grid{ grid-template-columns:1fr 1fr; }
  .contact-grid{ grid-template-columns:1fr; }
  .steps{ grid-template-columns:1fr 1fr; row-gap:36px; }
  .steps::before{ display:none; }
}
/* Tablet-landscape / small-laptop tier (861–1180px): the topbar phone
   number (still visible here — it only hides together with the rest at
   860px below) makes the header-phone block in the main header redundant,
   and its two-line text was the thing actually wrapping/colliding with the
   Boka button at these widths. Dropping it here — instead of letting it
   shrink-wrap — is what actually reclaims the room the nav needs. */
@media (max-width: 1180px){
  .header-phone{ display:none; }
  .btn-label-ext{ display:none; }
}
@media (max-width: 860px){
  .main-nav, .topbar, .header-phone{ display:none; }
  .nav-toggle{ display:flex; }
  .grid-3{ grid-template-columns:1fr 1fr; }
  .form-grid{ grid-template-columns:1fr; }
  .pkg-list{ grid-template-columns:1fr; }
}
@media (max-width: 620px){
  .section{ padding:64px 0; }
  .grid-4, .grid-3, .grid-2{ grid-template-columns:1fr; }
  .stats-grid{ grid-template-columns:1fr 1fr; row-gap:28px; }
  .steps{ grid-template-columns:1fr; }
  .footer-grid{ grid-template-columns:1fr; }
  .cta-banner{ padding:36px 26px; }
  .pkg-feature-content{ padding:32px 24px; }
  .hero-grid{ padding-bottom:40px; }
  .hero-trust{ gap:18px; }
  .contact-card{ padding:24px 20px; }
}

/* Mobile nav drawer — restyled from a flat navy panel with plain-text
   rows into a more distinctive "premium app list" look: a diagonal navy
   gradient with a soft gold glow in the corner, and every link rendered
   as a rounded row with a leading icon badge and a trailing arrow,
   instead of a bare line of text with a hairline underneath. */
.mobile-nav{
  position:fixed; inset:0; z-index:200;
  background:var(--grad-navy);
  display:flex; flex-direction:column;
  padding:26px 22px 40px;
  transform:translateX(100%);
  transition:transform .28s ease;
  overflow-y:auto;
}
.mobile-nav::before{
  content:"";
  position:absolute; top:-10%; right:-20%; width:60vw; height:60vw; max-width:420px; max-height:420px;
  background:radial-gradient(circle, rgba(255,203,61,.16), transparent 70%);
  pointer-events:none; z-index:-1;
}
.mobile-nav.open{ transform:translateX(0); }
.mobile-nav-top{
  display:flex; justify-content:space-between; align-items:center;
  margin-bottom:28px; padding-bottom:22px; height:44px; overflow:hidden;
  border-bottom:1px solid rgba(255,255,255,.1);
}
.mobile-nav-top .brand-logo{ height:44px !important; max-height:44px !important; width:auto; max-width:200px; object-fit:contain; }
.mobile-nav-close{ width:42px; height:42px; border-radius:50%; background:rgba(255,255,255,.08); display:flex; align-items:center; justify-content:center; color:#fff; flex-shrink:0; }
.mobile-nav a{
  display:flex; align-items:center; gap:12px; font-family:var(--font-display); font-weight:600;
  font-size:17px; color:#fff; padding:13px 10px; margin-bottom:2px; border-bottom:0; border-radius:var(--radius-md);
  transition:background .15s ease, color .15s ease;
}
.mobile-nav a:hover, .mobile-nav a:focus-visible{ background:rgba(255,255,255,.06); }
.mobile-nav a .mnav-label{ flex:1; min-width:0; }
.mobile-nav a .mnav-arrow{ width:15px; height:15px; flex-shrink:0; color:#9fadd0; transition:transform .15s ease, color .15s ease; }
.mobile-nav a:hover .mnav-arrow{ transform:translateX(3px); }
.mobile-nav a.active{ background:rgba(255,203,61,.12); color:var(--gold-400); box-shadow:inset 3px 0 0 var(--gold-400); }
.mobile-nav a.active .mnav-arrow{ color:var(--gold-400); }
.mobile-nav .btn{ margin-top:24px; }

/* Real WordPress menu, assigned by the client under Utseende → Menyer
   (e.g. their current "Kurser"/"Om oss" parent items) — a completely
   different markup shape than this theme's own fallback accordion
   above (<li class="menu-item">, <ul class="sub-menu">), so it needs
   its own rules. Without these, the browser's default bullet marker
   shows in front of every mobile menu row. */
.mobile-nav li{ list-style:none; margin:0; }
.mobile-nav .sub-menu{
  list-style:none; margin:0; padding:0 0 6px 16px;
  display:flex; flex-direction:column; gap:2px;
}
.mobile-nav .sub-menu a{ font-size:15px; font-weight:500; color:#c3cfe8; padding:10px; }
.mobile-nav .sub-menu a:hover{ color:#fff; }
/* Chevron injected by JS (see main.js) onto real-menu parent rows —
   gives the same rotating-arrow affordance as the fallback accordion,
   without needing to touch the client's own menu content. */
.mobile-nav .mnav-parent-chevron{
  width:16px; height:16px; margin-left:auto; flex-shrink:0;
  transition:transform .2s ease; color:#9fadd0;
}
.mobile-nav li.mnav-open > a .mnav-parent-chevron{ transform:rotate(180deg); color:var(--gold-400); }

/* =================== APP-LIKE MOBILE EXPERIENCE (PWA) =================== */
html{ -webkit-text-size-adjust:100%; }
body{
  overflow-x:hidden;
  -webkit-tap-highlight-color:transparent;
  /* overscroll-behavior-y:contain removed — it only ever existed to stop
   * pull-to-refresh/scroll-chaining as a PWA nicety, but after ruling out
   * every single script on the site (this theme's own JS, the bundled
   * motion library, Elementor, WooCommerce, Complianz — none of them
   * register so much as one "wheel" event listener, confirmed by fetching
   * and searching each script's source directly) as the cause of a
   * persistent "mouse wheel does nothing sitewide" report on Chrome/
   * Windows, this is the last remaining sitewide CSS property that touches
   * scroll behaviour at all. There are known real-world Chromium bugs where
   * overscroll-behavior containment on the root scroller interacts badly
   * with wheel-event routing on some Windows/GPU driver combinations. It's
   * a pure nicety with no functional purpose otherwise, so removing it is
   * a safe, reversible precaution now that every code-level suspect has
   * been checked and cleared. */
}
a, button, .btn, .nav-toggle, .faq-q{ -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
input, select, textarea{ font-size:16px; } /* prevents iOS Safari auto-zoom on focus */

/* Fixed bottom app-bar — shown only on phones, gives the site a native
   app "tab bar" feel for the actions people need most on the go. */
.app-bar{
  display:none;
  position:fixed; left:0; right:0; bottom:0; z-index:150;
  background:#ffffff;
  border-top:1px solid var(--border);
  box-shadow:0 -8px 24px -12px rgba(11,31,58,.18);
  padding:8px 10px calc(8px + env(safe-area-inset-bottom)) 10px;
  justify-content:space-around;
  align-items:stretch;
  gap:6px;
}
.app-bar-item{
  flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:3px; padding:6px 4px; border-radius:var(--radius-sm);
  font-family:var(--font-display); font-size:11px; font-weight:600; color:var(--ink-500);
  min-height:48px;
}
.app-bar-item .icon{ width:21px; height:21px; }
.app-bar-item--primary{ background:var(--grad-gold); color:var(--navy-950); box-shadow:0 -4px 14px -6px rgba(245,180,0,.6); }
.app-bar-item:active{ background:var(--bg-alt); }
.app-bar-item--primary:active{ background:var(--gold-500); opacity:.9; }
.app-bar-item.is-active:not(.app-bar-item--primary){ color:var(--blue-600,var(--blue-500)); background:var(--bg-alt); }

@media (max-width: 860px){
  .app-bar{ display:flex; }
  body{ padding-bottom:calc(64px + env(safe-area-inset-bottom)); }
}

/* Extra-narrow phones (iPhone SE / small Android, ~320-400px) — keep the
   header's logo, hamburger and "Boka" button from ever competing for
   space or causing horizontal scroll. */
@media (max-width: 400px){
  .container{ padding:0 16px; }
  .site-header .container{ height:72px; }
  .header-actions{ gap:8px; }
  .brand-logo{ height:32px; }
  .brand .custom-logo-link{ height:32px; max-width:160px; }
  .header-actions .btn-sm{ padding:9px 12px; font-size:13px; }
  .btn-label-ext{ display:none; }
  .nav-toggle{ width:40px; height:40px; }
  .app-bar-item{ font-size:10.5px; }
}

/* =================== WP CONTACT/BOOKING FORM NOTICE (admin-post redirect banner) =================== */
.form-notice{ display:flex; align-items:center; gap:10px; padding:14px 18px; border-radius:var(--radius-md); font-size:14.5px; font-weight:600; margin-bottom:22px; }
.form-notice svg{ width:20px; height:20px; flex-shrink:0; }
.form-notice--ok{ background:#e8f7ef; color:#166a3f; border:1px solid #bfe8d2; }
.form-notice--error{ background:#fdecec; color:#9a2c2c; border:1px solid #f5c6c6; }

/* =================== WP NATIVE MENU DROPDOWN (Utseende → Menyer) ===
   If the client builds their own menu under Utseende → Menyer and drags
   pages under a parent item (e.g. under "Kurser"), WordPress renders that
   with its own .menu-item-has-children / .sub-menu markup instead of our
   .nav-item/.nav-dropdown fallback structure. These rules give that a
   matching look for free, with no theme edits needed.

   IMPORTANT: wp_nav_menu() is called with items_wrap stripped down to
   just the raw <li> items (no surrounding <ul>), so the global
   `ul{ list-style:none }` reset never touches them — every plain menu
   <li> would otherwise show the browser's own default bullet in front
   of its label (visible as a stray dot before every word in the menu).
   This resets ALL menu <li>s, not only the dropdown-parent ones. */
.main-nav li,
.mobile-nav-links li{ list-style:none; }
.main-nav li.menu-item-has-children{ position:relative; }
.main-nav .sub-menu{
  position:absolute; top:calc(100% + 8px); left:50%; transform:translateX(-50%) translateY(6px);
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg); padding:10px; min-width:220px; margin:0; list-style:none;
  display:grid; gap:2px; opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .15s ease, transform .15s ease, visibility .15s; z-index:60;
}
.main-nav li.menu-item-has-children:hover > .sub-menu,
.main-nav li.menu-item-has-children:focus-within > .sub-menu{
  opacity:1; visibility:visible; pointer-events:auto; transform:translateX(-50%) translateY(0);
}
.main-nav .sub-menu a{ display:block; padding:10px 12px; border-radius:var(--radius-md); font-size:14px; font-weight:500; white-space:nowrap; }
.main-nav .sub-menu a:hover{ background:var(--bg-alt); color:var(--navy-900); }
.mobile-nav-links .sub-menu{ list-style:none; margin:0; padding:0 0 10px 14px; display:flex; flex-direction:column; }
.mobile-nav-links .sub-menu a{ padding:10px 0; font-size:16.5px; font-weight:500; color:#c3cfe8; border-bottom:0; }
