/* Mallen hantverk (gnosjö rörDesign.pdf). Designen är ritad för 1440 px.
   Sajtens färger kommer från site.tema och sätts på <html> (--farg, --farg2,
   --accent); värdena här är vad en sajt utan färger får. Ändra tokens här,
   inte längre ned. */
@font-face {
  font-family: "Libre Franklin";
  src: url("/_mall/libre-franklin-latin.woff2") format("woff2");
  font-weight: 100 900;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --farg: #0f2735;
  --farg2: #00739c;
  --accent: #e3a03a;

  --text: #212121;
  --text-2: #4a4a4e;
  --text-3: #6b6f73;
  --ljus: #ffffff;
  --ljus-2: rgb(255 255 255 / 0.78);
  --grund: #ffffff;
  --gra: #f3f4f6;
  --platshallare: #e7e7e7;
  --linje: #e2e4e8;
  --falt-kant: #b9bec4;

  --rand-1: rgb(255 255 255 / 0.05);

  --r-s: 4px;
  --r-m: 8px;
  --r-l: 12px;

  --bredd: 1296px;
  --kant: 72px;
  --sans: "Libre Franklin", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--sans);
  color: var(--text);
  background: var(--grund);
  font-size: 16px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, p, ul, ol { margin: 0; }
ul, ol { padding: 0; list-style: none; }
a { color: inherit; }
img { max-width: 100%; display: block; }

.dold {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap;
}
/* Kontaktformulärens fält för robotar (Formularfalt.svelte). */
.honung { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }

.inre { max-width: calc(var(--bredd) + 2 * var(--kant)); margin: 0 auto; padding: 0 var(--kant); }

/* ------------------------------------------------------------- delar */

.etikett {
  display: flex; align-items: center; gap: 14px;
  font-size: 12px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--farg2);
}
.etikett::before { content: ""; width: 28px; height: 3px; background: var(--accent); }
.etikett-accent { color: var(--accent); }

h1 {
  font-size: 72px; line-height: 0.95; font-weight: 800; letter-spacing: -0.04em;
  margin-top: 28px; max-width: 9.5ch;
}
h2 { font-size: 40px; line-height: 1.08; font-weight: 800; letter-spacing: -0.03em; }
h3 { font-size: 21px; line-height: 1.25; font-weight: 600; letter-spacing: -0.01em; }

.knappar { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin-top: 36px; }
.knapp {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 48px; padding: 0 24px; border-radius: var(--r-s);
  font: inherit; font-size: 16px; font-weight: 600; letter-spacing: -0.01em;
  text-decoration: none; cursor: pointer; border: 2px solid transparent;
}
.knapp-fylld { background: var(--farg2); color: var(--ljus); }
.knapp-kant { border-color: var(--text); color: var(--text); background: var(--grund); }
.knapp-vit { background: var(--ljus); color: var(--farg); }

.lank { color: var(--farg2); text-underline-offset: 3px; }
.lank-ljus { color: var(--ljus); font-weight: 600; text-underline-offset: 4px; min-height: 44px; display: inline-flex; align-items: center; }

/* En bild (U11c): fyller sin ruta och beskärs; fokuspunkten är object-position. */
.bild { display: block; width: 100%; height: auto; object-fit: cover; background: var(--platshallare); }
.platshallare-rand {
  background: var(--farg)
    repeating-linear-gradient(-45deg, var(--rand-1) 0 28px, transparent 28px 56px);
}

.del { padding: 96px 0; }
.del-gra { background: var(--gra); }
.del-kort { padding-top: 0; }

/* ---------------------------------------------------------- sidhuvud */

.sidhuvud { background: var(--farg); color: var(--ljus); }
.sidhuvud-inre {
  max-width: calc(var(--bredd) + 2 * var(--kant)); margin: 0 auto; padding: 0 var(--kant);
  min-height: 88px; display: flex; align-items: center; gap: 32px;
}
.logotyp {
  font-weight: 800; font-size: 18px; letter-spacing: -0.02em; line-height: 1.1;
  text-decoration: none; max-width: 180px; min-height: 44px; display: flex; align-items: center;
}
.meny { display: flex; gap: 32px; margin-left: auto; }
.meny a {
  font-size: 13px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
  text-decoration: none; min-height: 44px; display: flex; align-items: center;
  border-bottom: 2px solid transparent;
}
.meny a[aria-current="page"] { border-bottom-color: var(--accent); }
.sidhuvud-tel {
  font-size: 20px; font-weight: 700; text-decoration: none; white-space: nowrap; margin-left: 8px;
  min-height: 44px; display: flex; align-items: center;
}
.sidhuvud-boka { min-height: 48px; white-space: nowrap; }
.smal { display: none; }

.ikonknapp {
  width: 48px; height: 48px; border-radius: var(--r-s);
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--ljus-2); color: var(--ljus); cursor: pointer; list-style: none;
}
.ikonknapp::-webkit-details-marker { display: none; }
.ikonknapp-fylld { background: var(--farg2); border-color: var(--farg2); }
.ikonknapp svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

.smalmeny nav {
  position: absolute; left: 0; right: 0; top: 72px; z-index: 10;
  background: var(--farg); padding: 8px 20px 20px; display: flex; flex-direction: column;
}
.smalmeny nav a {
  min-height: 48px; display: flex; align-items: center; text-decoration: none;
  font-weight: 600; font-size: 17px; border-bottom: 1px solid rgb(255 255 255 / 0.12);
}

/* -------------------------------------------------------------- topp */

.topp { display: grid; grid-template-columns: 46fr 54fr; min-height: 660px; }
.topp-text {
  padding: 72px 48px 72px max(var(--kant), calc((100vw - var(--bredd)) / 2));
  display: flex; flex-direction: column; justify-content: center;
}
.ingress { font-size: 19px; line-height: 1.6; color: var(--text-2); margin-top: 32px; max-width: 30em; }
.topp-bild { position: relative; }
.topp-bild .bild { position: absolute; inset: 0; height: 100%; }
/* Utan bild: bara texten, och jourrutan under den som ett band. */
.topp-utan-bild { grid-template-columns: 1fr; min-height: 0; }
.topp-utan-bild .topp-bild { padding: 0 var(--kant) 56px max(var(--kant), calc((100vw - var(--bredd)) / 2)); }
.topp-utan-bild .jourruta { position: static; border-radius: var(--r-m); border-top: 3px solid var(--accent); background: var(--gra); }

.jourruta {
  position: absolute; left: -44px; bottom: 56px; width: 280px;
  background: var(--grund); border-radius: 0 var(--r-m) var(--r-m) 0; padding: 26px 24px 24px;
}
.jourruta-etikett {
  display: flex; align-items: center; gap: 10px;
  font-size: 12px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
}
.jourruta-etikett::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--accent); }
.jourruta-nummer {
  display: flex; align-items: center; min-height: 44px; margin: 4px 0 6px; font-size: 32px; font-weight: 700; letter-spacing: -0.02em;
  color: var(--farg2); text-decoration: none; white-space: nowrap;
}
.jourruta p:last-child { font-size: 14px; color: var(--text-2); }

/* ------------------------------------------------------------- fakta */

.fakta { display: grid; grid-template-columns: repeat(4, 1fr); border-bottom: 1px solid var(--linje); }
.fakta li { padding: 26px 32px 32px; border-left: 1px solid var(--linje); display: flex; flex-direction: column; gap: 4px; }
.fakta li:first-child { border-left: 0; padding-left: max(var(--kant), calc((100vw - var(--bredd)) / 2)); }
.fakta strong { font-size: 30px; font-weight: 700; letter-spacing: -0.03em; line-height: 1.1; }
.fakta span { font-size: 14px; color: var(--text-2); }

/* ---------------------------------------------------------- tjänster */

.delhuvud { display: flex; justify-content: space-between; align-items: flex-start; gap: 48px; }
.delhuvud h2 { margin-top: 18px; }
.delhuvud-ingress { max-width: 400px; font-size: 18px; color: var(--text-2); }

.tjanstekort { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; margin-top: 48px; }
.kortbild { aspect-ratio: 3 / 2; border-radius: var(--r-m); margin-bottom: 22px; }
.tjanstekort p { font-size: 15px; color: var(--text-2); margin-top: 8px; }
.lasmer {
  display: inline-flex; align-items: center; min-height: 44px;
  color: var(--farg2); font-weight: 600; font-size: 15px; text-decoration: none;
  background: linear-gradient(var(--linje), var(--linje)) no-repeat 0 calc(100% - 10px) / 100% 2px;
}

/* -------------------------------------------------------------- steg */

.steg { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; margin-top: 48px; }
.steg li { border-top: 2px solid var(--farg); padding-top: 24px; }
.steg-nr { display: block; color: var(--farg2); font-weight: 700; font-size: 14px; margin-bottom: 10px; }
.steg h3 { font-size: 24px; }
.steg p { margin-top: 12px; color: var(--text-2); }

/* -------------------------------------------------------------- lyft */

.lyft { display: grid; grid-template-columns: 44fr 56fr; background: var(--farg); color: var(--ljus); min-height: 600px; }
.lyft-bild { position: relative; }
.lyft-bild .bild { position: absolute; inset: 0; height: 100%; }
.lyft-utan-bild { grid-template-columns: 1fr; min-height: 0; }
.lyft-utan-bild .lyft-text { padding-left: max(var(--kant), calc((100vw - var(--bredd)) / 2)); max-width: none; }
.lyft-bildtext {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 20px 24px;
  background: rgb(0 0 0 / 0.55); font-size: 15px; font-weight: 500;
}
.lyft-text { padding: 96px var(--kant) 96px 64px; display: flex; flex-direction: column; justify-content: center; max-width: 760px; }
.lyft-text h2 { font-size: 44px; margin-top: 18px; max-width: 11em; }
.lyft-brod { margin-top: 24px; font-size: 18px; line-height: 1.65; color: var(--ljus-2); max-width: 34em; }

/* ------------------------------------------------------------ om oss */

.om-oss-inre { display: grid; grid-template-columns: 1fr 480px; gap: 64px; align-items: center; }
.om-oss h2 { margin-top: 18px; }
.om-oss-text { margin-top: 24px; font-size: 18px; line-height: 1.65; color: var(--text-2); max-width: 36em; }
.om-oss-bild { aspect-ratio: 16 / 10; border-radius: var(--r-l); }
.om-oss-inre.om-oss-utan-bild { grid-template-columns: 1fr; }

/* ---------------------------------------------------------- infokort */

.infokort { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; }
.infokort li {
  background: var(--gra); border-radius: var(--r-l); border-top: 3px solid var(--farg2);
  padding: 28px 24px 40px; min-height: 240px;
}
.infokort li.infokort-jour { border-top-color: var(--accent); }
.infokort h2 { font-size: 14px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 14px; }
.infokort p { color: var(--text-2); font-size: 17px; line-height: 1.5; margin-top: 10px; }
.infokort p a { color: inherit; text-decoration: none; display: inline-flex; min-height: 44px; align-items: center; }
.infokort p a.lank { color: var(--farg2); text-decoration: underline; }

/* ----------------------------------------------------------- kontakt */

.kontakt { background: var(--farg2); color: var(--ljus); padding: 56px 0; }
.kontakt-inre { display: grid; grid-template-columns: 1fr 1.2fr; gap: 80px; align-items: center; }
.kontakt h2 { font-size: 44px; max-width: 9em; }
.kontakt-text > p { margin-top: 22px; font-size: 18px; max-width: 30em; }
.kontakt-tel { display: inline-block; margin-top: 28px; font-size: 44px; font-weight: 800; letter-spacing: -0.03em; text-decoration: none; }
.kontakt-adress { margin-top: 24px; font-size: 17px; }
.kontakt-adress a { text-decoration: none; display: inline-flex; min-height: 44px; align-items: center; }

.formular {
  background: var(--grund); color: var(--text); border-radius: var(--r-l); padding: 40px;
  display: grid; grid-template-columns: 1fr 1fr; gap: 22px 20px;
}
.falt { display: flex; flex-direction: column; gap: 8px; }
.falt-hel { grid-column: 1 / -1; }
.falt label { font-size: 15px; font-weight: 600; }
.falt input, .falt select {
  font: inherit; font-size: 17px; min-height: 56px; padding: 0 16px;
  border: 1px solid var(--falt-kant); border-radius: var(--r-s); background: var(--grund); color: var(--text);
}
.falt input::placeholder { color: var(--text-3); }
.formular .knapp { min-height: 56px; font-size: 17px; }

/* ------------------------------------------------------------ sidfot */

.sidfot { background: var(--farg); color: var(--ljus-2); padding-top: 64px; font-size: 16px; }
.sidfot-inre {
  max-width: calc(var(--bredd) + 2 * var(--kant)); margin: 0 auto; padding: 0 var(--kant) 56px;
  display: grid; grid-template-columns: 1fr auto auto; gap: 80px;
}
.sidfot .logotyp { color: var(--ljus); margin-bottom: 20px; }
.sidfot a { text-decoration: none; }
.sidfot-foretag p { line-height: 1.6; }
.sidfot-jour { margin-top: 12px; }
.sidfot-lankar { display: flex; flex-direction: column; }
.sidfot-lankar h2 {
  font-size: 14px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--ljus); margin-bottom: 6px;
}
.sidfot-lankar a { min-height: 44px; display: flex; align-items: center; }
.sidfot-foretag a { display: inline-flex; align-items: center; min-height: 44px; }
.sidfot-botten {
  max-width: calc(var(--bredd) + 2 * var(--kant)); margin: 0 auto; padding: 28px var(--kant);
  border-top: 1px solid rgb(255 255 255 / 0.14); display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  font-size: 15px;
}

/* ------------------------------------------------ tjänstesidor (3–6) */

.topp-delad { grid-template-columns: 1fr 1fr; min-height: 420px; }
.topp-delad.topp-utan-bild { grid-template-columns: 1fr; min-height: 0; }
.topp-delad .topp-text { padding-top: 56px; padding-bottom: 72px; justify-content: flex-start; }
.topp-delad h1, .topp-kort h1 { font-size: 56px; line-height: 0.98; max-width: 12em; text-wrap: balance; }
.topp-delad .ingress { font-size: 19px; margin-top: 28px; max-width: 26em; }
.smulor { font-size: 14px; color: var(--text-2); margin-bottom: 18px; }
.smulor a { color: var(--farg2); text-decoration: none; display: inline-flex; align-items: center; min-height: 44px; }
.topp-delad .smulor + .etikett { margin-top: 0; }
.topp-delad .etikett + h1 { margin-top: 28px; }
.smulor + h1 { margin-top: 8px; }

/* Badrum: texten i ett vitt kort på bilden. */
.topp-kort { display: block; position: relative; padding: 128px 0 56px; }
.topp-kort .topp-bild { position: absolute; inset: 0; }
.topp-kort .topp-text {
  position: relative; z-index: 1; background: var(--grund); border-radius: var(--r-m);
  width: min(620px, 100% - 2 * var(--kant)); margin: 0 0 0 max(var(--kant), calc((100vw - var(--bredd)) / 2));
  padding: 36px 40px 44px;
}
.topp-kort h1 { font-size: 48px; max-width: none; }
.topp-kort .ingress { font-size: 18px; margin-top: 24px; }

.tjanst { padding: 72px 0 120px; }
.tjanst-inre { display: grid; grid-template-columns: minmax(0, 700px) 400px; gap: 72px; align-items: start; }

.brod { font-size: 18px; line-height: 1.6; color: var(--text-2); }
.brod > * + * { margin-top: 16px; }
.brod p { white-space: pre-line; }
.brod .brod-forsta { font-size: 20px; line-height: 1.55; color: var(--text); }
.brod h2 { font-size: 29px; line-height: 1.2; font-weight: 700; letter-spacing: -0.02em; color: var(--text); margin-top: 44px; }
.brod h2 + * { margin-top: 14px; }
.brod a { color: var(--farg2); text-underline-offset: 3px; }
.punktlista { list-style: disc; padding-left: 20px; color: var(--text); }
.punktlista li + li { margin-top: 12px; }
.punktlista li::marker { color: var(--text-2); }
.brod-bild { aspect-ratio: 16 / 9; border-radius: var(--r-m); }

/* VVS: varje rubrik en numrerad rad. */
.avsnitt-nr { border-top: 1px solid var(--linje); margin-top: 16px; }
.avsnitt-nr li { display: grid; grid-template-columns: 48px 1fr; padding: 24px 0 28px; border-bottom: 1px solid var(--linje); }
.avsnitt-nr .steg-nr { margin: 5px 0 0; font-size: 14px; }
.brod .avsnitt-nr h2 { font-size: 21px; font-weight: 600; margin: 0; }
.avsnitt-nr p { font-size: 17px; margin-top: 8px; }

.sidospalt { display: flex; flex-direction: column; gap: 24px; }
.ruta { border-radius: var(--r-m); padding: 32px; }
.ruta p { margin-top: 10px; font-size: 16px; line-height: 1.5; }
.ruta-etikett { font-size: 12px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; }
.ruta-mork { background: var(--farg); color: var(--ljus); }
.ruta-mork .ruta-etikett { color: var(--accent); }
.ruta-mork h2 { font-size: 25px; letter-spacing: -0.02em; margin-top: 10px; }
.ruta-mork p { color: var(--ljus-2); }
.ruta-mork .knapp { width: 100%; margin-top: 24px; }
.ruta-gra { background: var(--gra); border-top: 3px solid var(--farg2); padding: 28px 24px; }
.ruta-gra.ruta-jour { border-top-color: var(--accent); }
.ruta-gra h2 { font-size: 14px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text); }
.ruta-gra p { color: var(--text-2); }
.ruta-gra p a { color: inherit; text-decoration: none; display: inline-flex; min-height: 44px; align-items: center; }
.ruta-gra p a.lank { color: var(--farg2); text-decoration: underline; display: inline-flex; min-height: 44px; align-items: center; }
.ruta-bla { background: var(--farg2); color: var(--ljus); padding: 32px 28px; }
.ruta-bla p { color: var(--ljus); }
.ruta-tel {
  display: flex; align-items: center; min-height: 44px; margin-top: 6px;
  font-size: 36px; font-weight: 700; letter-spacing: -0.02em; text-decoration: none; white-space: nowrap;
}
.ruta-bla p + .ruta-tel { margin-top: 10px; }
.ruta-lista h2 { font-size: 12px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text); }
.ruta-lista ul { display: flex; flex-direction: column; gap: 24px; margin-top: 18px; }
.ruta-lista li { border-top: 3px solid var(--farg2); border-radius: var(--r-m); padding: 22px 24px 8px; }
.ruta-lista h3 { font-size: 18px; }
.ruta-lista p { font-size: 15px; color: var(--text-2); margin-top: 6px; }
.ruta-bild { aspect-ratio: 2 / 1; border-radius: var(--r-m); }

.steg-4 { grid-template-columns: repeat(4, 1fr); gap: 32px; }
.steg-4 h3 { font-size: 22px; }
.steg-4 p { font-size: 16px; }

.delhuvud-rad { align-items: baseline; }
.galleri { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 32px; }
.galleri .bild { aspect-ratio: 16 / 10; border-radius: var(--r-m); }

.uppmaning { background: var(--farg); color: var(--ljus); padding: 88px 0; }
.uppmaning-inre { display: flex; justify-content: space-between; align-items: center; gap: 48px; }
.uppmaning h2 { font-size: 36px; }
.uppmaning p { margin-top: 16px; font-size: 19px; max-width: 32em; color: var(--ljus-2); }
.uppmaning + .sidfot { border-top: 1px solid rgb(255 255 255 / 0.1); }

.tjanstekort-andra { grid-template-columns: repeat(3, 1fr); margin-top: 36px; }
.del-gra > .inre > h2 { font-size: 36px; }

/* -------------------------------------------------- kampanjsidan (7) */

.kampanjtopp { background: var(--farg); color: var(--ljus); padding: 64px 0 72px; }
.kampanjtopp-inre { display: grid; grid-template-columns: 1fr 420px; gap: 72px; align-items: center; }
.kampanjtopp-inre.kampanjtopp-utan-bild { grid-template-columns: 1fr; }
.kampanjtopp .smulor { color: var(--ljus-2); margin-bottom: 8px; }
.kampanjtopp .smulor a { color: var(--ljus); }
.kampanjtopp h1 { font-size: 56px; line-height: 0.98; max-width: 14em; margin-top: 24px; text-wrap: balance; }
.kampanjtopp .ingress { color: var(--ljus-2); margin-top: 24px; max-width: 28em; }
.kampanjtopp-bild {
  aspect-ratio: 420 / 260; border-radius: var(--r-l);
  background-color: color-mix(in srgb, var(--farg) 82%, var(--farg2));
}

.kampanjer { padding: 72px 0 96px; }
.kampanjer .delhuvud h2 { margin-top: 0; }
.kampanjer-giltighet { font-size: 16px; color: var(--text-2); }
.kampanjkort { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; margin-top: 36px; }
.kampanjkort li { border: 1px solid var(--linje); border-radius: var(--r-m); overflow: hidden; display: flex; flex-direction: column; }
.kampanjkort-bild { aspect-ratio: 410 / 200; }
.kampanjkort-text { padding: 24px 24px 20px; display: flex; flex-direction: column; flex: 1; }
.bricka {
  align-self: flex-start; background: var(--farg); color: var(--ljus); border-radius: 999px; padding: 3px 12px;
  font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
}
.kampanjkort h3 { font-size: 24px; margin-top: 12px; }
.kampanjkort-text > p:not(.bricka) { font-size: 16px; color: var(--text-2); margin-top: 10px; }
.kampanjkort-text > p.kampanjkort-pris { font-size: 28px; font-weight: 700; letter-spacing: -0.02em; color: var(--farg2); margin-top: 14px; }
.kampanjkort-text > p.kampanjkort-villkor { font-size: 14px; color: var(--text-3); margin-top: 6px; }
.kampanjkort-fraga, .kortlank {
  margin-top: auto; padding-top: 8px; min-height: 44px; display: flex; align-items: center; justify-content: center;
  color: var(--farg2); font-weight: 600; text-decoration: none;
  background: linear-gradient(var(--linje), var(--linje)) no-repeat 0 calc(100% - 8px) / 100% 1px;
}

.kampanjrutor { display: flex; gap: 32px; margin-top: 44px; }
.kampanjrutor li {
  flex: 1 1 auto; min-width: 0;
  background: var(--gra); border-radius: var(--r-m); border-top: 3px solid var(--farg2); padding: 28px 24px 32px;
}
.kampanjrutor li.kampanjruta-accent { border-top-color: var(--accent); }
.kampanjrutor h2 { font-size: 14px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.kampanjrutor p { margin-top: 14px; font-size: 16px; color: var(--text-2); }

.uppmaning-bla { background: var(--farg2); }
.uppmaning-bla p { color: var(--ljus); }

/* ------------------------------------------ kontakt och kontaktpersoner (8–9) */

.kontakttopp { padding: 56px 0 0; }
.kontakttopp .smulor { margin-bottom: 0; }
.kontakttopp h1 { font-size: 56px; line-height: 1; max-width: none; margin-top: 8px; text-wrap: balance; }
.kontakttopp .etikett + h1 { margin-top: 20px; }
.kontakttopp .ingress { margin-top: 20px; }
.saknas { padding-bottom: 96px; }
.saknas .ingress a { color: inherit; }
.smulor + .etikett { margin-top: 4px; }

.kontaktdel { padding: 64px 0 72px; }
.kontaktdel-inre { display: grid; grid-template-columns: minmax(0, 1fr) 440px; gap: 72px; align-items: stretch; }
.formular-kort { background: var(--gra); padding: 40px 40px 56px; align-content: start; }
.formular-kort h2 { font-size: 28px; letter-spacing: -0.02em; margin-bottom: 2px; }
.falt textarea {
  font: inherit; font-size: 17px; min-height: 120px; padding: 14px 16px; resize: vertical;
  border: 1px solid var(--falt-kant); border-radius: var(--r-s); background: var(--grund); color: var(--text);
}
.falt textarea::placeholder { color: var(--text-3); }
.formular-fot { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.formular-fot p { font-size: 14px; color: var(--text-2); flex: 1 1 16em; }

.kontaktspalt { display: flex; flex-direction: column; gap: 28px; }
.spalt-etikett { font-size: 12px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--farg2); }
.spalt-tel {
  display: flex; align-items: center; min-height: 44px; font-size: 36px; font-weight: 800; letter-spacing: -0.03em;
  text-decoration: none; white-space: nowrap;
}
.spalt-epost { display: flex; align-items: center; min-height: 44px; font-size: 22px; font-weight: 700; text-decoration: none; }
.spalt-liten { font-size: 14px; color: var(--text-2); margin-top: 4px; }
.spalt-adress { font-size: 19px; line-height: 1.45; margin-top: 8px; }
.ruta-vit { border-radius: var(--r-l); }
.ruta-vit .kortlank { margin-top: 8px; }
.kontaktspalt .ruta-jour { border-radius: var(--r-l); }

.karta { min-height: 320px; padding: 48px 0; color: var(--text); }
.karta-ruta { background: var(--grund); border-radius: var(--r-l); padding: 26px 24px 16px; width: min(360px, 100%); }
.karta-ruta h2 { font-size: 14px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.karta-ruta p { margin-top: 10px; font-size: 17px; white-space: pre-line; }
.karta-ruta .kortlank { margin-top: 4px; }

.kontaktkort { padding: 48px 0 56px; }
.kontaktkort .infokort li { min-height: 0; padding-bottom: 28px; }

.vaxelband {
  display: flex; align-items: center; gap: 48px 56px; flex-wrap: wrap; margin-top: 36px;
  background: var(--farg); color: var(--ljus); border-radius: var(--r-l); padding: 32px 36px;
}
.vaxelband .spalt-etikett { color: var(--accent); }
.vaxelband-tel {
  display: flex; align-items: center; min-height: 44px; font-size: 32px; font-weight: 700; letter-spacing: -0.02em;
  text-decoration: none; white-space: nowrap;
}
.vaxelband p { font-size: 15px; color: var(--ljus-2); }
.vaxelband-adress { margin-left: auto; text-align: right; }
.vaxelband-adress a { display: inline-flex; align-items: center; min-height: 44px; font-size: 19px; font-weight: 700; text-decoration: none; }

.avdelning { padding: 56px 0 8px; }
.avdelning.del-gra { padding: 56px 0 96px; margin-top: 32px; }
.avdelning + .avdelning:not(.del-gra) { padding-top: 40px; }
.avdelning-huvud { display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; padding-bottom: 16px; border-bottom: 2px solid var(--farg); }
.avdelning-huvud h2 { font-size: 29px; letter-spacing: -0.02em; }
.avdelning-huvud p { font-size: 15px; color: var(--text-2); }

.personer { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 24px; }
.person {
  display: flex; gap: 18px; align-items: flex-start; background: var(--grund);
  border: 1px solid var(--linje); border-radius: var(--r-m); padding: 20px;
}
.person > div { min-width: 0; }
.person-bild { flex: none; width: 58px; height: 58px; border-radius: 50%; }
.person h3 { font-size: 19px; }
.person-roll { font-size: 14px; color: var(--text-2); margin-top: 2px; }
.person-tel, .person-epost {
  display: flex; align-items: center; min-height: 44px;
  color: var(--farg2); text-decoration: none; overflow-wrap: anywhere;
}
.person-tel { font-size: 15px; }
.person-tel-forst { font-size: 18px; font-weight: 700; }
.person-epost { font-size: 15px; }
.person-osaker { background: var(--gra); border-radius: var(--r-m); padding: 20px 20px 12px; display: flex; flex-direction: column; }
.person-osaker h2 { font-size: 13px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.person-osaker p { font-size: 16px; color: var(--text-2); margin-top: 10px; }

.personer-kompakt { grid-template-columns: repeat(4, 1fr); gap: 20px; }
.personer-kompakt .person { padding: 14px 16px; }
.personer-kompakt h3 { font-size: 17px; }
.personer-kompakt .person-tel-forst { font-size: 15px; }

.soker { display: flex; align-items: center; gap: 28px; margin-top: 36px; }
.soker-bild { flex: none; width: 270px; aspect-ratio: 270 / 125; border-radius: var(--r-m); }
.soker h2 { font-size: 13px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.soker p { margin-top: 10px; font-size: 18px; color: var(--text-2); max-width: 32em; white-space: pre-line; }
.soker a { color: var(--farg2); text-underline-offset: 3px; }

/* ------------------------------------------------------ mellanbredd */

@media (max-width: 1200px) {
  :root { --kant: 40px; }
  .meny { gap: 20px; }
  .sidhuvud-tel { display: none; }
  h1 { font-size: 60px; }
  .tjanstekort { grid-template-columns: repeat(2, 1fr); }
  .om-oss-inre { grid-template-columns: 1fr 380px; }
  .tjanst-inre { grid-template-columns: minmax(0, 1fr) 340px; gap: 48px; }
  .steg-4 { grid-template-columns: repeat(2, 1fr); }
  .tjanstekort-andra { grid-template-columns: repeat(3, 1fr); }
  .kampanjtopp-inre { grid-template-columns: 1fr 340px; gap: 48px; }
  .kampanjkort { grid-template-columns: repeat(2, 1fr); }
  .kontaktdel-inre { grid-template-columns: minmax(0, 1fr) 360px; gap: 48px; }
  .personer { grid-template-columns: repeat(2, 1fr); }
  .personer-kompakt { grid-template-columns: repeat(3, 1fr); }
}

/* ------------------------------------------------ smal bredd (sida 2) */

@media (max-width: 900px) {
  :root { --kant: 20px; }
  .sidhuvud-inre { min-height: 72px; gap: 12px; position: relative; }
  .meny, .sidhuvud-tel, .sidhuvud-boka { display: none; }
  .smal { display: flex; gap: 12px; margin-left: auto; }

  /* Bilden först, sedan texten, sedan jourrutan som ett band. */
  .topp { display: flex; flex-direction: column; min-height: 0; }
  .topp-bild { display: contents; }
  .topp-bild .bild { position: relative; inset: auto; order: -1; height: 240px; }
  .topp-text { padding: 36px var(--kant) 24px; }
  .jourruta {
    position: static; width: auto; margin: 0 var(--kant) 32px;
    border-radius: var(--r-m); border-top: 3px solid var(--accent); background: var(--gra); padding: 18px 22px;
  }
  .jourruta-nummer { font-size: 26px; margin: 4px 0 2px; }
  h1 { font-size: 44px; line-height: 1; max-width: none; margin-top: 20px; }
  h2 { font-size: 32px; }
  .ingress { font-size: 18px; margin-top: 20px; }
  .knappar { flex-direction: column; align-items: stretch; margin-top: 28px; gap: 12px; }
  .knapp { min-height: 52px; }

  .fakta { grid-template-columns: 1fr 1fr; }
  .fakta li, .fakta li:first-child { padding: 20px var(--kant); border-left: 0; border-top: 1px solid var(--linje); }
  .fakta li:nth-child(even) { border-left: 1px solid var(--linje); }
  .fakta strong { font-size: 26px; }

  .del { padding: 56px 0; }
  .delhuvud { flex-direction: column; gap: 16px; }
  .tjanstekort, .steg, .infokort { grid-template-columns: 1fr; gap: 32px; }
  .steg { gap: 28px; margin-top: 28px; }

  .lyft { grid-template-columns: 1fr; }
  .lyft-bild { min-height: 200px; }
  .lyft-bildtext { display: none; }
  .lyft-text { padding: 36px var(--kant) 56px; }
  .lyft-text h2 { font-size: 32px; }
  .lyft-text .knappar { flex-direction: column; }
  .lyft-text .knappar .lank-ljus { display: none; }

  /* Mobilen i designen hoppar över "Om oss" och jourkortet. */
  .om-oss, .infokort-jour { display: none; }
  .del-kort { padding-top: 56px; }
  .infokort { gap: 20px; }
  .infokort li { min-height: 0; padding-bottom: 28px; }

  .kontakt-inre { grid-template-columns: 1fr; gap: 28px; }
  .kontakt h2 { font-size: 32px; }
  .kontakt-text > p, .kontakt-adress { display: none; }
  .kontakt-tel { font-size: 36px; margin-top: 16px; }
  .formular { grid-template-columns: 1fr; padding: 24px; }

  .sidfot-inre { grid-template-columns: 1fr 1fr; gap: 32px; }
  .sidfot-foretag { grid-column: 1 / -1; }

  /* Tjänstesidorna har ingen mobil i designen; samma ordning som startsidan. */
  .topp-delad .topp-text { padding-top: 20px; padding-bottom: 8px; }
  .topp-delad h1, .topp-kort h1 { font-size: 40px; line-height: 1.02; }
  .topp-delad .etikett + h1 { margin-top: 18px; }
  .topp-kort { display: flex; flex-direction: column; min-height: 0; padding: 0 0 8px; }
  .topp-kort .topp-bild { display: block; position: relative; inset: auto; height: 200px; order: -1; }
  .topp-kort .topp-bild .bild { position: absolute; inset: 0; height: 100%; }
  .topp-kort .topp-text { width: auto; margin: -40px var(--kant) 0; padding: 24px 22px 28px; }
  .tjanst { padding: 40px 0 64px; }
  .tjanst-inre { grid-template-columns: 1fr; gap: 40px; }
  .brod { font-size: 17px; }
  .brod .brod-forsta { font-size: 18px; }
  .brod h2 { font-size: 24px; margin-top: 36px; }
  .avsnitt-nr li { grid-template-columns: 36px 1fr; }
  .ruta { padding: 24px 22px; }
  .ruta-tel { font-size: 30px; }
  .steg-4, .galleri, .tjanstekort-andra { grid-template-columns: 1fr; gap: 24px; }
  .delhuvud-rad { flex-direction: column; gap: 8px; }
  .uppmaning { padding: 56px 0; }
  .uppmaning-inre { flex-direction: column; align-items: stretch; gap: 28px; }
  .uppmaning h2, .del-gra > .inre > h2 { font-size: 30px; }

  /* Kampanjsidan har ingen mobil i designen: bilden under texten, allt i en spalt. */
  .kampanjtopp { padding: 20px 0 40px; }
  .kampanjtopp-inre { grid-template-columns: 1fr; gap: 28px; }
  .kampanjtopp h1 { font-size: 40px; line-height: 1.02; margin-top: 18px; }
  .kampanjer { padding: 48px 0 64px; }
  .kampanjkort { grid-template-columns: 1fr; gap: 24px; margin-top: 24px; }
  .kampanjrutor { flex-direction: column; gap: 20px; margin-top: 32px; }

  /* Kontaktsidorna har ingen mobil i designen: allt i en spalt, formuläret först. */
  .kontakttopp { padding-top: 20px; }
  .kontakttopp h1 { font-size: 40px; line-height: 1.02; }
  .kontaktdel { padding: 32px 0 48px; }
  .kontaktdel-inre { grid-template-columns: 1fr; gap: 36px; }
  .formular-kort { padding: 24px 20px 28px; }
  .formular-kort h2 { font-size: 24px; }
  .spalt-tel { font-size: 32px; }
  .karta { min-height: 0; padding: 32px 0; }
  .kontaktkort { padding: 8px 0 48px; }
  .vaxelband { flex-direction: column; align-items: flex-start; gap: 20px; padding: 24px 22px; }
  .vaxelband-adress { margin-left: 0; text-align: left; }
  .avdelning { padding-top: 40px; }
  .avdelning.del-gra { padding: 40px 0 56px; }
  .avdelning-huvud h2 { font-size: 25px; }
  .personer, .personer-kompakt { grid-template-columns: 1fr; gap: 16px; }
  .soker { flex-direction: column; align-items: stretch; gap: 20px; }
  .soker-bild { width: 100%; }
}
