/*
  Kundkontakter – komponenter (designskiss v2, 2026-10-05)

  Kräver tokens.css. Varje komponent har prefixet kk- och följer BEM:
    .kk-block            komponenten
    .kk-block__element   en del av komponenten
    .kk-block--variant   en variant eller ett tillstånd

  Filen är ordnad uppifrån och ned som skärmarna: grund, sidhuvud, rubriker, kort och val, fält,
  knappar, Ditt urval, filterrader, karta, steg för steg, mobil. Sist ligger mobilanpassningarna i en
  container query på .kk-app (se tokens.css om brytpunkten). Där står bara det som ändras på mobil.

  Tillstånd som skissen visar har en modifierare (--selected, --current, --done, --focused, --open,
  --pending). Ange samtidigt rätt ARIA-attribut i HTML (aria-checked, aria-current, aria-expanded,
  aria-pressed). Skissen visar inga hover-, fokus- eller felslägen; de är inte ritade.

  screens.html visar alla 17 skärmar byggda med de här klasserna.
*/

/* =====================================================================
   1. Grund
   ===================================================================== */

/* kk-app: roten för hela gränssnittet. Sätter typsnitt, textfärg och bakgrund och är container
   för mobilanpassningarna. Positionerad, eftersom sidfoten, mobillisten och arket placeras mot den.
   I skissen är den exakt 1440 × 900 eller 390 × 844 (sätts i screens.html); i produktionen fyller
   den fönstret. */
.kk-app {
  container: kk-app / inline-size;
  position: relative;
  overflow: hidden;
  background: var(--kk-color-bg);
  color: var(--kk-color-ink);
  font-family: var(--kk-font-sans);
  font-size: var(--kk-font-size-base);
  line-height: var(--kk-line-height-base);
  font-variant-ligatures: var(--kk-font-ligatures);
}
.kk-app,
.kk-app *,
.kk-app *::before,
.kk-app *::after { box-sizing: border-box; }

/* Nollställning av webbläsarens standardstil, så att semantiska element (rubriker, listor, knappar,
   fält, länkar) ser ut exakt som skissen. :where() ger specificitet 0, så alla komponentklasser vinner. */
:where(.kk-app) :where(h1, h2, h3, p, ul, ol, dl, dd, figure) { margin: 0; }
:where(.kk-app) :where(ul, ol) { padding: 0; list-style: none; }
:where(.kk-app) :where(a) { color: inherit; text-decoration: none; }
:where(.kk-app) :where(button, input) {
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
  word-spacing: inherit;
  text-align: inherit;
  text-transform: inherit;
  text-indent: 0;
  text-shadow: inherit;
  -webkit-appearance: none;
  appearance: none;
}
:where(.kk-app) :where(button) { cursor: pointer; }

/* kk-sprite: det dolda SVG-elementet med ikonerna och kartan (<symbol> och <g> i <defs>).
   Ligger först i <body> och tar ingen plats. */
.kk-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }

/* kk-icon: linjeikon från spriten, <svg class="kk-icon"><use href="#kk-icon-…"/></svg>.
   22 px och currentColor som standard; komponenterna sätter storlek där den avviker. */
.kk-icon {
  width: var(--kk-icon-size-22);
  height: var(--kk-icon-size-22);
  fill: none;
  stroke: currentColor;
  stroke-width: var(--kk-icon-stroke);
  stroke-linecap: round;
  stroke-linejoin: round;
  flex: none;
}
/* Ikon i varumärkesgrönt där omgivande text har en annan färg. */
.kk-icon--brand { color: var(--kk-color-brand); }

/* Hjälpklasser för text. */
.kk-muted { color: var(--kk-color-muted); }                 /* Dämpad text i löpande text */
.kk-help { font-size: var(--kk-font-size-sm); color: var(--kk-color-muted); } /* Liten dämpad hjälptext under fält och kort */
.kk-nowrap { white-space: nowrap; }                         /* Håller ihop ord som inte ska brytas */

/* =====================================================================
   2. Sidhuvud (desktop): kk-header, kk-brand, kk-stepper, kk-step, kk-account
   ===================================================================== */

/* kk-header: sidhuvudet på desktop. Tre kolumner: märket, stegraden (tom på kvittot) och Mitt konto. */
.kk-header {
  height: var(--kk-size-header);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 0 var(--kk-space-48);
  border-bottom: var(--kk-border-width) solid var(--kk-color-line);
  background: var(--kk-color-surface-translucent);
}

/* kk-brand: k-märket och namnet Kundkontakter. Länk till startsidan. Desktop och mobil. */
.kk-brand { display: flex; align-items: center; gap: var(--kk-space-11); }
.kk-brand__mark {
  position: relative;
  width: var(--kk-size-mark-w);
  height: var(--kk-size-mark-h);
  border-radius: var(--kk-radius-mark);
  background: var(--kk-color-brand);
  color: var(--kk-color-on-brand);
  font-size: var(--kk-font-size-6xl);
  font-weight: var(--kk-font-weight-semibold);
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: var(--kk-line-height-none);
  padding-bottom: var(--kk-space-3);
  flex: none;
}
/* Limepricken uppe till höger i k-märket. */
.kk-brand__mark::after {
  content: "";
  position: absolute;
  right: var(--kk-space-6);
  top: var(--kk-space-7);
  width: var(--kk-size-mark-dot);
  height: var(--kk-size-mark-dot);
  border-radius: var(--kk-radius-round);
  background: var(--kk-color-lime);
}
.kk-brand__name { font-size: var(--kk-font-size-xl-plus); font-weight: var(--kk-font-weight-bold); letter-spacing: var(--kk-letter-spacing-brand); }

/* kk-stepper: stegraden i sidhuvudet, <nav aria-label="Steg i köpet"><ol class="kk-stepper">.
   Varje <li class="kk-stepper__item"> rymmer ett kk-step. Linjen mellan stegen ritas av ::before
   på varje steg utom det första. Aktuellt steg har aria-current="step". */
.kk-stepper { display: flex; align-items: center; gap: var(--kk-space-6); }
.kk-stepper__item { display: flex; align-items: center; gap: var(--kk-space-6); }
.kk-stepper__item + .kk-stepper__item::before {
  content: "";
  width: var(--kk-size-step-separator);
  height: var(--kk-size-step-separator-h);
  background: var(--kk-color-line-strong);
}

/* kk-step: ett steg i stegraden. Tillstånd: kommande (standard), --done (bock) och --current
   (grön pill med limecirkel). */
.kk-step {
  display: flex;
  align-items: center;
  gap: var(--kk-space-8);
  font-size: var(--kk-font-size-sm);
  font-weight: var(--kk-font-weight-medium);
  color: var(--kk-color-muted);
  padding: var(--kk-space-5) var(--kk-space-13) var(--kk-space-5) var(--kk-space-5);
  border-radius: var(--kk-radius-pill);
  white-space: nowrap;
}
.kk-step__marker {
  width: var(--kk-size-step-marker);
  height: var(--kk-size-step-marker);
  border-radius: var(--kk-radius-round);
  border: var(--kk-border-width-control) solid var(--kk-color-line-strong);
  display: grid;
  place-items: center;
  font-size: var(--kk-font-size-2xs);
  font-weight: var(--kk-font-weight-semibold);
  background: var(--kk-color-surface);
}
.kk-step--done { color: var(--kk-color-ink); }
.kk-step--done .kk-step__marker { background: var(--kk-color-soft); border-color: transparent; color: var(--kk-color-brand); }
.kk-step--done .kk-step__marker .kk-icon { width: var(--kk-icon-size-14); height: var(--kk-icon-size-14); stroke-width: var(--kk-icon-stroke-step); }
.kk-step--current { background: var(--kk-color-brand); color: var(--kk-color-on-brand); font-weight: var(--kk-font-weight-semibold); }
.kk-step--current .kk-step__marker { background: var(--kk-color-lime); border-color: transparent; color: var(--kk-color-brand); }

/* kk-account: länken Mitt konto med rundel. På mobil visas bara rundeln (texten finns som aria-label). */
.kk-account {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: var(--kk-space-9);
  font-weight: var(--kk-font-weight-semibold);
  color: var(--kk-color-brand);
  font-size: var(--kk-font-size-md-plus);
}
.kk-account__avatar {
  width: var(--kk-size-avatar);
  height: var(--kk-size-avatar);
  border-radius: var(--kk-radius-round);
  background: var(--kk-color-surface);
  border: var(--kk-border-width) solid var(--kk-color-line-strong);
  display: grid;
  place-items: center;
}
.kk-account__avatar .kk-icon { width: var(--kk-icon-size-18); height: var(--kk-icon-size-18); }

/* kk-footer: sidfoten med säljaruppgifter och villkorslänk. Ligger mot nederkanten av .kk-app.
   Visas i steg 1 och på kvittot (desktop). */
.kk-footer {
  position: absolute;
  left: var(--kk-space-48);
  right: var(--kk-space-48);
  bottom: var(--kk-space-26);
  display: flex;
  justify-content: space-between;
  font-size: var(--kk-font-size-sm);
  color: var(--kk-color-muted);
  border-top: var(--kk-border-width) solid var(--kk-color-line);
  padding-top: var(--kk-space-16);
}

/* =====================================================================
   3. Sidlayout och rubriker
   ===================================================================== */

/* kk-layout: tvåkolumnslayouten i steg 2–6 på desktop. Frågan till vänster, Ditt urval till höger. */
.kk-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--kk-size-aside);
  gap: var(--kk-space-64);
  max-width: var(--kk-size-content-max);
  margin: 0 auto;
  padding: var(--kk-space-30) var(--kk-space-48) 0;
}

/* kk-start: centrerad layout för steg 1 (Målgrupp) på desktop. */
.kk-start { max-width: var(--kk-size-start-max); margin: 0 auto; padding-top: var(--kk-space-70); text-align: center; }

/* kk-back: bakåtlänken överst i varje steg på desktop ("← Målgrupp"). Står en gång per skärm. */
.kk-back {
  display: inline-flex;
  align-items: center;
  gap: var(--kk-space-7);
  color: var(--kk-color-muted);
  font-size: var(--kk-font-size-md);
  font-weight: var(--kk-font-weight-medium);
  margin-bottom: var(--kk-space-16);
}
.kk-back .kk-icon { width: var(--kk-icon-size-18); height: var(--kk-icon-size-18); }

/* kk-eyebrow: stegrubriken ovanför H1, "Steg 2 av 6". Desktop. */
.kk-eyebrow { font-size: var(--kk-font-size-md); font-weight: var(--kk-font-weight-semibold); color: var(--kk-color-brand-secondary); margin-bottom: var(--kk-space-6); }

/* kk-title: frågan (H1) i Instrument Serif. --hero i steg 1, --receipt på kvittot. */
.kk-title {
  font-family: var(--kk-font-serif);
  font-weight: var(--kk-font-weight-regular);
  letter-spacing: var(--kk-letter-spacing-serif);
  font-size: var(--kk-font-size-display-lg);
  line-height: var(--kk-line-height-title);
  margin: 0 0 var(--kk-space-10);
}
.kk-title--hero { font-size: var(--kk-font-size-display-4xl); margin-bottom: var(--kk-space-14); }
.kk-title--receipt { font-size: var(--kk-font-size-display-2xl); margin-bottom: var(--kk-space-12); }

/* kk-lead: ingressen under H1. --hero i steg 1, --compact när ett kort eller en lista följer tätt,
   --form i steg 6, --receipt på kvittot. */
.kk-lead { font-size: var(--kk-font-size-xl); color: var(--kk-color-muted); margin: 0 0 var(--kk-space-26); max-width: var(--kk-size-lead-max); }
.kk-lead--hero { margin: 0 auto var(--kk-space-44); font-size: var(--kk-font-size-2xl); }
.kk-lead--compact { margin-bottom: var(--kk-space-20); }
.kk-lead--form { margin-bottom: var(--kk-space-22); }
.kk-lead--receipt { margin: 0 auto var(--kk-space-34); }

/* kk-hint: tipsrad med info-ikon. Används under sökfältet (steg 2), i steg 6 och på kvittot. */
.kk-hint { display: flex; gap: var(--kk-space-10); align-items: flex-start; font-size: var(--kk-font-size-md); color: var(--kk-color-ink); line-height: var(--kk-line-height-snug); }
.kk-hint .kk-icon { color: var(--kk-color-brand); width: var(--kk-icon-size-20); height: var(--kk-icon-size-20); margin-top: var(--kk-space-1); }

/* kk-link: understruken textlänk i grönt. Storlekar: --sm 14 px, standard 15 px, --md 14,5 px
   (mobil), --lg 16 px. Används som <a> för navigering och som <button> för handlingar. */
.kk-link {
  color: var(--kk-color-brand);
  font-weight: var(--kk-font-weight-semibold);
  text-decoration: underline;
  text-underline-offset: var(--kk-underline-offset);
  font-size: var(--kk-font-size-md);
}
.kk-link--sm { font-size: var(--kk-font-size-sm); }
.kk-link--md { font-size: var(--kk-font-size-sm-plus); }
.kk-link--lg { font-size: var(--kk-font-size-base); }

/* =====================================================================
   4. Kort, svarskort och ikonplattor
   ===================================================================== */

/* kk-card: vitt kort med tunn kant och mjuk skugga. Innehållet sätter sin egen utfyllnad
   (kk-search-card, kk-setting, kk-review, kk-delivery, kk-checkout__card, kk-receipt__card). */
.kk-card {
  background: var(--kk-color-surface);
  border: var(--kk-border-width) solid var(--kk-color-line);
  border-radius: var(--kk-radius-2xl);
  box-shadow: var(--kk-shadow-card);
}

/* kk-icon-well: ljusgrön platta med en ikon. Storleken styrs av sammanhanget (svarskort,
   filterrad, betalningsruta …). */
.kk-icon-well {
  width: var(--kk-size-icon-well);
  height: var(--kk-size-icon-well);
  border-radius: var(--kk-radius-lg);
  background: var(--kk-color-soft);
  color: var(--kk-color-brand);
  display: grid;
  place-items: center;
  flex: none;
}

/* kk-options: en grupp svarskort, role="radiogroup". Varianten bestämmer rutnätet:
   --audience (steg 1: två stora kort), --area (steg 2: tre kompakta kort),
   --contact (steg 3: två kort med antal). --above-map när kartan följer direkt. */
.kk-options { display: grid; }
.kk-options--audience { grid-template-columns: 1fr 1fr; gap: var(--kk-space-24); text-align: left; }
.kk-options--area { grid-template-columns: repeat(3, 1fr); gap: var(--kk-space-14); margin-bottom: var(--kk-space-22); }
.kk-options--above-map { margin-bottom: var(--kk-space-16); }
.kk-options--contact { grid-template-columns: 1fr 1fr; gap: var(--kk-space-18); margin-bottom: var(--kk-space-20); }

/* kk-option: ett svarskort, role="radio" med aria-checked. Ikonplatta, rubrik och text.
   Tillstånd: ej valt (tunn kant) och --selected (grön 2 px-kant, ljus botten och ring).
   Utfyllnaden minskar med 1 px i valt läge så att innehållet står still när kanten blir tjockare.
   Varianter: --audience (steg 1), --compact (steg 2), --stacked (steg 3). */
.kk-option {
  position: relative;
  display: flex;
  gap: var(--kk-space-16);
  align-items: flex-start;
  padding: var(--kk-space-20) var(--kk-space-22);
  background: var(--kk-color-surface);
  border: var(--kk-border-width) solid var(--kk-color-line-strong);
  border-radius: var(--kk-radius-2xl);
  box-shadow: var(--kk-shadow-option);
}
.kk-option--selected {
  border: var(--kk-border-width-selected) solid var(--kk-color-brand);
  padding: calc(var(--kk-space-20) - var(--kk-space-1)) calc(var(--kk-space-22) - var(--kk-space-1));
  background: var(--kk-color-surface-selected);
  box-shadow: var(--kk-shadow-selected);
}
.kk-option__title { font-size: var(--kk-font-size-xl); font-weight: var(--kk-font-weight-semibold); margin: 0; letter-spacing: var(--kk-letter-spacing-card-title); }
.kk-option__text { font-size: var(--kk-font-size-md); color: var(--kk-color-muted); margin: var(--kk-space-3) 0 0; line-height: var(--kk-line-height-snug); }
.kk-option__text--sm { font-size: var(--kk-font-size-sm); }
/* Textkolumnen i ett liggande kort (mobil). */
.kk-option__body { flex: 1; }
/* Ikon och rubrik på samma rad (steg 1 och 3). */
.kk-option__head { display: flex; align-items: center; gap: var(--kk-space-16); }
/* Antalet i kortet, Instrument Serif (steg 3). */
.kk-option__count {
  font-family: var(--kk-font-serif);
  font-weight: var(--kk-font-weight-regular);
  letter-spacing: var(--kk-letter-spacing-serif);
  font-size: var(--kk-font-size-display-md);
  line-height: var(--kk-line-height-title-mobile);
  color: var(--kk-color-brand);
  margin-top: var(--kk-space-16);
}
/* Antal i löptext, "6 975 262 kontakter" (steg 1). */
.kk-option__meta { font-weight: var(--kk-font-weight-semibold); color: var(--kk-color-brand); }
/* Pilen till höger i ett liggande kort (mobil). */
.kk-option__chevron { margin-top: var(--kk-space-10); }
/* Radioringen uppe till höger i ett kort som inte är valt (steg 3). */
.kk-option__radio {
  position: absolute;
  top: var(--kk-space-18);
  right: var(--kk-space-18);
  width: var(--kk-size-radio);
  height: var(--kk-size-radio);
  border-radius: var(--kk-radius-round);
  border: var(--kk-border-width-control) solid var(--kk-color-line-strong);
  background: var(--kk-color-surface);
}
/* Bocken uppe till höger i valt kort (steg 3). */
.kk-option__check {
  position: absolute;
  top: var(--kk-space-16);
  right: var(--kk-space-16);
  width: var(--kk-size-check-badge);
  height: var(--kk-size-check-badge);
  border-radius: var(--kk-radius-round);
  background: var(--kk-color-brand);
  color: var(--kk-color-lime);
  display: grid;
  place-items: center;
}
.kk-option__check .kk-icon { width: var(--kk-icon-size-15); height: var(--kk-icon-size-15); stroke-width: var(--kk-icon-stroke-badge); }

/* Variant --audience: stort stående kort i steg 1 med antal och rund pil längst ned. */
.kk-option--audience { padding: var(--kk-space-28) var(--kk-space-28) var(--kk-space-24); flex-direction: column; gap: 0; min-height: var(--kk-size-option-audience); }
.kk-option--audience .kk-icon-well { width: var(--kk-size-icon-well-xl); height: var(--kk-size-icon-well-xl); border-radius: var(--kk-radius-xl); }
.kk-option--audience .kk-icon-well .kk-icon { width: var(--kk-icon-size-27); height: var(--kk-icon-size-27); }
.kk-option--audience .kk-option__title { font-size: var(--kk-font-size-5xl); }
.kk-option--audience .kk-option__text { font-size: var(--kk-font-size-base-plus); margin-top: var(--kk-space-16); }
.kk-option__footer { margin-top: auto; padding-top: var(--kk-space-22); display: flex; justify-content: space-between; align-items: center; width: 100%; }
.kk-option__go {
  width: var(--kk-size-round-button);
  height: var(--kk-size-round-button);
  border-radius: var(--kk-radius-round);
  background: var(--kk-color-brand);
  color: var(--kk-color-lime);
  display: grid;
  place-items: center;
}

/* Variant --compact: kort i tre kolumner, steg 2. */
.kk-option--compact { padding: var(--kk-space-16) var(--kk-space-18); gap: var(--kk-space-13); }
.kk-option--compact.kk-option--selected { padding: calc(var(--kk-space-16) - var(--kk-space-1)) calc(var(--kk-space-18) - var(--kk-space-1)); }
.kk-option--compact .kk-icon-well { width: var(--kk-size-icon-well-sm); height: var(--kk-size-icon-well-sm); }
.kk-option--compact .kk-option__title { font-size: var(--kk-font-size-base-plus); }
.kk-option--compact .kk-option__text { font-size: var(--kk-font-size-sm); }

/* Variant --stacked: stående kort med stort antal, steg 3. */
.kk-option--stacked { flex-direction: column; gap: 0; padding: var(--kk-space-24); }
.kk-option--stacked.kk-option--selected { padding: calc(var(--kk-space-24) - var(--kk-space-1)); }
.kk-option--stacked .kk-option__head { gap: var(--kk-space-13); padding-right: var(--kk-space-28); }
.kk-option--stacked .kk-option__title { font-size: var(--kk-font-size-lg); }
.kk-option--stacked .kk-option__text { margin-top: var(--kk-space-2); }

/* kk-perks: raden med fördelar under korten i steg 1 (pris, förhandsvisning, filformat). */
.kk-perks { display: flex; justify-content: center; gap: var(--kk-space-40); margin-top: var(--kk-space-38); color: var(--kk-color-muted); font-size: var(--kk-font-size-md-plus); }
.kk-perk { display: flex; gap: var(--kk-space-9); align-items: center; }
.kk-perk .kk-icon { color: var(--kk-color-brand); }

/* =====================================================================
   5. Fält, chips, snabbval och strömbrytare
   ===================================================================== */

/* kk-label: etikett ovanför ett fält. kk-label__optional för "(valfritt)". */
.kk-label { display: block; font-size: var(--kk-font-size-sm-plus); font-weight: var(--kk-font-weight-semibold); margin: 0 0 var(--kk-space-7); }
.kk-label__optional { color: var(--kk-color-muted); font-weight: var(--kk-font-weight-medium); }

/* kk-input: fältets ram, en <div>. Själva fältet är ett <input class="kk-input__control"> inuti,
   ensamt eller med enhet (kk-input__unit). Sökfält har i stället ikon, chips och skriven text
   (role="combobox"). Ramen och inte <input> bär höjd, kant och utfyllnad, så att texten hamnar
   på exakt samma plats som i skissen.
   Tillstånd: standard och --focused (grön kant och ring). Den ritade textmarkören
   (kk-input__caret) visar bara att man skriver i skissen; i produktionen är det webbläsarens markör.
   Varianter: --filter (sökfält i filterrad), --range (reglagets Från/Till), --quantity (antal). */
.kk-input {
  height: var(--kk-size-input);
  border: var(--kk-border-width-control) solid var(--kk-color-line-strong);
  border-radius: var(--kk-radius-lg);
  padding: 0 var(--kk-space-16);
  display: flex;
  align-items: center;
  gap: var(--kk-space-10);
  background: var(--kk-color-surface);
  font-size: var(--kk-font-size-lg);
}
.kk-input--focused { border-color: var(--kk-color-brand); box-shadow: var(--kk-shadow-focus); }
.kk-input__control::placeholder { color: var(--kk-color-placeholder); opacity: 1; }
.kk-input__control { flex: 1 1 0; width: 0; min-width: 0; outline: none; } /* bredd 0: fältet får sin bredd av flex, inte av <input>s inbyggda storlek */
.kk-input__icon { color: var(--kk-color-brand); }
.kk-input__unit { color: var(--kk-color-muted); margin-left: auto; }
.kk-input__caret { width: var(--kk-size-caret-w); height: var(--kk-size-caret); background: var(--kk-color-brand); margin-left: calc(var(--kk-space-8) * -1); }
.kk-input--filter { height: var(--kk-size-input-filter); }
.kk-input--range { height: var(--kk-size-input-range); }
.kk-input--quantity { width: var(--kk-size-input-quantity-width); height: var(--kk-size-input-quantity); font-size: var(--kk-font-size-5xl); font-weight: var(--kk-font-weight-semibold); }
.kk-input--quantity .kk-input__unit { font-size: var(--kk-font-size-base); font-weight: var(--kk-font-weight-medium); }

/* kk-form-grid: fälten i steg 6, två kolumner på desktop och en på mobil. Varje fält är en <div> med kk-label och kk-input. */
.kk-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--kk-space-16) var(--kk-space-18); }

/* kk-chip: rundad etikett. Standard: ljusgrön (valt område med kryss i sökfältet, ingående fält).
   --outline: vit med kant ("Det här ingår" i steg 3). */
.kk-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--kk-space-8);
  height: var(--kk-size-chip);
  padding: 0 var(--kk-space-10) 0 var(--kk-space-14);
  border-radius: var(--kk-radius-pill);
  background: var(--kk-color-soft);
  color: var(--kk-color-brand);
  font-size: var(--kk-font-size-md);
  font-weight: var(--kk-font-weight-semibold);
}
.kk-chip .kk-icon { width: var(--kk-icon-size-16); height: var(--kk-icon-size-16); }
.kk-chip--outline { background: var(--kk-color-surface); border: var(--kk-border-width) solid var(--kk-color-line); color: var(--kk-color-ink); padding: 0 var(--kk-space-14); }
.kk-chip--outline .kk-icon { color: var(--kk-color-brand); }
/* Krysset som tar bort ett valt område. */
.kk-chip__remove { display: flex; }
/* kk-chip-list: chips som radbryts. */
.kk-chip-list { display: flex; flex-wrap: wrap; gap: var(--kk-space-8); }

/* kk-quick-choice: snabbval av antal (500, 1 000, 5 000, Alla). <button aria-pressed>.
   Tillstånd: standard (vit med kant) och --selected (grön). */
.kk-quick-choice {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: var(--kk-size-quick-choice);
  padding: 0 var(--kk-space-18);
  border-radius: var(--kk-radius-pill);
  border: var(--kk-border-width-control) solid var(--kk-color-line-strong);
  background: var(--kk-color-surface);
  font-weight: var(--kk-font-weight-semibold);
  font-size: var(--kk-font-size-md-plus);
  color: var(--kk-color-ink);
}
.kk-quick-choice--selected { background: var(--kk-color-brand); border-color: var(--kk-color-brand); color: var(--kk-color-on-brand); }

/* kk-switch: strömbrytare, <button role="switch" aria-checked>. Skissen visar bara läget av
   (grå botten, tummen till vänster). Läget på är inte ritat. */
.kk-switch {
  position: relative;
  flex: none;
  width: var(--kk-size-switch-w);
  height: var(--kk-size-switch-h);
  border-radius: var(--kk-radius-pill);
  background: var(--kk-color-line-strong);
}
.kk-switch::after {
  content: "";
  position: absolute;
  left: var(--kk-space-3);
  top: var(--kk-space-3);
  width: var(--kk-size-switch-thumb);
  height: var(--kk-size-switch-thumb);
  border-radius: var(--kk-radius-round);
  background: var(--kk-color-surface);
  box-shadow: var(--kk-shadow-switch-thumb);
}

/* kk-suggest: listan med förslag under ett sökfält, role="listbox".
   --multi: rader med kryssruta (bransch i steg 4, företag). Raden --active är markerad. */
.kk-suggest {
  margin-top: var(--kk-space-10);
  border: var(--kk-border-width) solid var(--kk-color-line);
  border-radius: var(--kk-radius-lg);
  overflow: hidden;
}
.kk-suggest__item { display: flex; justify-content: space-between; align-items: center; padding: var(--kk-space-12) var(--kk-space-16); }
.kk-suggest__item + .kk-suggest__item { border-top: var(--kk-border-width) solid var(--kk-color-line); }
.kk-suggest__item--active { background: var(--kk-color-surface-subtle); }
.kk-suggest__name { font-weight: var(--kk-font-weight-semibold); }
.kk-suggest--multi .kk-suggest__item { justify-content: flex-start; gap: var(--kk-space-14); }
.kk-suggest__label { flex: 1; }
.kk-suggest__checkbox {
  width: var(--kk-size-checkbox);
  height: var(--kk-size-checkbox);
  border-radius: var(--kk-radius-xs);
  border: var(--kk-border-width-control) solid var(--kk-color-line-strong);
  background: var(--kk-color-surface);
}

/* =====================================================================
   6. Knappar
   ===================================================================== */

/* kk-button: knapp eller knapplänk med text och ikon.
   --primary: grön (Använd kartområdet, Ladda ner Excel).
   --secondary: vit med kant (Förhandsvisa filen, Ladda ner CSV).
   --block: full bredd, centrerad och hög (nedladdningarna på kvittot). */
.kk-button { display: inline-flex; align-items: center; font-weight: var(--kk-font-weight-semibold); }
.kk-button--primary { gap: var(--kk-space-10); height: var(--kk-size-button); padding: 0 var(--kk-space-24); border-radius: var(--kk-radius-lg); background: var(--kk-color-brand); color: var(--kk-color-on-brand); }
.kk-button--secondary {
  gap: var(--kk-space-9);
  height: var(--kk-size-button-secondary);
  padding: 0 var(--kk-space-18);
  border-radius: var(--kk-radius-md);
  border: var(--kk-border-width-control) solid var(--kk-color-line-strong);
  background: var(--kk-color-surface);
  color: var(--kk-color-brand);
  font-size: var(--kk-font-size-md-plus);
}
.kk-button--secondary .kk-icon { width: var(--kk-icon-size-19); height: var(--kk-icon-size-19); }
.kk-button--block { justify-content: center; width: 100%; height: var(--kk-size-cta); }

/* kk-cta: limeknappen som leder till nästa steg. Texten säger vart man är på väg, pilen står
   längst till höger. kk-cta__label grupperar en ikon före texten (Betala). */
.kk-cta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  height: var(--kk-size-cta);
  padding: 0 var(--kk-space-22);
  border-radius: var(--kk-radius-xl);
  background: var(--kk-color-lime);
  color: var(--kk-color-on-lime);
  font-weight: var(--kk-font-weight-cta);
  font-size: var(--kk-font-size-base-plus);
}
.kk-cta .kk-icon { width: var(--kk-icon-size-22); height: var(--kk-icon-size-22); stroke-width: var(--kk-icon-stroke-cta); }
.kk-cta__label { display: flex; gap: var(--kk-space-10); align-items: center; }
.kk-cta__label .kk-icon { width: var(--kk-icon-size-19); height: var(--kk-icon-size-19); }

/* =====================================================================
   7. Ditt urval (kundvagnen, desktop): kk-summary
   ===================================================================== */

/* kk-summary: panelen "Ditt urval"/"Ditt köp" till höger i steg 2–6. Visar antal, pris, valen och
   knappen framåt. Raderna är en <dl>. Radtillstånd: klart (med Ändra), --current (aktuellt steg,
   limefärgat värde) och --disabled (kommande steg, nedtonat). Antalet kan vara --pending
   (nedtonat medan kartområdet inte är använt, med kk-summary__status och laddningsindikator). */
.kk-summary {
  position: relative;
  border-radius: var(--kk-radius-summary);
  padding: var(--kk-space-26) var(--kk-space-28) var(--kk-space-22);
  color: var(--kk-color-on-dark);
  background: var(--kk-gradient-summary);
  box-shadow: var(--kk-shadow-summary);
}
.kk-summary__header {
  font-size: var(--kk-font-size-sm-plus);
  font-weight: var(--kk-font-weight-medium);
  color: var(--kk-color-on-dark-label);
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.kk-summary__status { display: flex; gap: var(--kk-space-8); align-items: center; font-size: var(--kk-font-size-xs); }
.kk-summary__order { font-size: var(--kk-font-size-xs); }
.kk-summary__count {
  font-family: var(--kk-font-serif);
  font-weight: var(--kk-font-weight-regular);
  letter-spacing: var(--kk-letter-spacing-serif);
  font-size: var(--kk-font-size-display-3xl);
  line-height: var(--kk-line-height-none);
  color: var(--kk-color-lime);
  margin: var(--kk-space-8) 0 var(--kk-space-4);
}
.kk-summary__count--pending { opacity: var(--kk-opacity-pending); }
.kk-summary__caption { font-size: var(--kk-font-size-md-plus); color: var(--kk-color-on-dark-strong); }
.kk-summary__price { font-size: var(--kk-font-size-sm); color: var(--kk-color-on-dark-muted); margin-top: var(--kk-space-3); }
/* Valen, en rad per steg: namn, värde, Ändra. */
.kk-summary__rows { margin: var(--kk-space-20) 0 var(--kk-space-20); border-top: var(--kk-border-width) solid var(--kk-color-on-dark-divider-strong); }
.kk-summary__row {
  display: grid;
  grid-template-columns: var(--kk-size-summary-key) 1fr auto;
  gap: var(--kk-space-10);
  padding: var(--kk-space-10) 0;
  border-bottom: var(--kk-border-width) solid var(--kk-color-on-dark-divider);
  align-items: baseline;
}
.kk-summary__key { font-size: var(--kk-font-size-sm); color: var(--kk-color-on-dark-key); }
.kk-summary__value { font-size: var(--kk-font-size-md); font-weight: var(--kk-font-weight-medium); }
.kk-summary__action { font-size: var(--kk-font-size-sm); }
.kk-summary__change { color: var(--kk-color-on-dark-link); text-decoration: underline; text-underline-offset: var(--kk-underline-offset); }
.kk-summary__row--disabled .kk-summary__key,
.kk-summary__row--disabled .kk-summary__value { color: var(--kk-color-on-dark-disabled); }
.kk-summary__row--current .kk-summary__value { color: var(--kk-color-lime); }
/* Prisraderna i steg 5–6 (Ditt köp). --totals tätar avståndet till knappen. */
.kk-summary__rows--totals { margin-bottom: var(--kk-space-12); }
.kk-summary__line {
  display: grid;
  grid-template-columns: 1fr auto;
  padding: var(--kk-space-9) 0;
  border-bottom: var(--kk-border-width) solid var(--kk-color-on-dark-divider);
  font-size: var(--kk-font-size-md);
  color: var(--kk-color-on-dark-link);
}
.kk-summary__line--total { border: 0; padding-top: var(--kk-space-14); align-items: baseline; color: var(--kk-color-on-dark); font-weight: var(--kk-font-weight-semibold); }
.kk-summary__total {
  font-family: var(--kk-font-serif);
  font-weight: var(--kk-font-weight-regular);
  font-size: var(--kk-font-size-display-xs);
  color: var(--kk-color-lime);
  letter-spacing: var(--kk-letter-spacing-total);
}
/* Finstilt under knappen. --note: med ikon till vänster. --spaced: en andra rad. */
.kk-summary__fine { display: flex; justify-content: space-between; margin-top: var(--kk-space-13); font-size: var(--kk-font-size-sm); color: var(--kk-color-on-dark-fine); }
.kk-summary__fine--note { justify-content: flex-start; gap: var(--kk-space-8); }
.kk-summary__fine--note .kk-icon { width: var(--kk-icon-size-17); height: var(--kk-icon-size-17); }
.kk-summary__fine--spaced { margin-top: var(--kk-space-8); }
.kk-summary__fine-link { color: var(--kk-color-on-dark-link); text-decoration: underline; text-underline-offset: var(--kk-underline-offset); }

/* kk-spinner: liten laddningsindikator på grön botten (väntar på kartområdet). Ritas still i skissen. */
.kk-spinner {
  width: var(--kk-size-spinner);
  height: var(--kk-size-spinner);
  border-radius: var(--kk-radius-round);
  border: var(--kk-border-width-selected) solid var(--kk-color-on-dark-spinner-track);
  border-top-color: var(--kk-color-lime);
  display: inline-block;
}

/* =====================================================================
   8. Filterrader och reglage (steg 4): kk-filter-row, kk-range
   ===================================================================== */

/* kk-filter-row: ett filter i "Anpassa målgruppen". Stängd: ikon, namn, värde, ev. sammanfattning
   och pil. Öppen (--open): grön kant och ring, innehållet i kk-filter-row__body.
   kk-filter-row__toggle är knappen med aria-expanded; hela raden ska vara klickbar. */
.kk-filter-row {
  padding: var(--kk-space-11) var(--kk-space-18) var(--kk-space-11) var(--kk-space-12);
  background: var(--kk-color-surface);
  border: var(--kk-border-width) solid var(--kk-color-line);
  border-radius: var(--kk-radius-xl);
  margin-bottom: var(--kk-space-9);
}
.kk-filter-row--open {
  padding: var(--kk-space-14) var(--kk-space-20) var(--kk-space-18) var(--kk-space-12);
  border: var(--kk-border-width-selected) solid var(--kk-color-brand);
  box-shadow: var(--kk-shadow-selected);
}
.kk-filter-row__header { display: flex; align-items: center; gap: var(--kk-space-14); }
.kk-filter-row .kk-icon-well { width: var(--kk-size-icon-well-row); height: var(--kk-size-icon-well-row); border-radius: var(--kk-radius-icon-row); }
.kk-filter-row .kk-icon-well .kk-icon { width: var(--kk-icon-size-19); height: var(--kk-icon-size-19); }
.kk-filter-row__name { font-weight: var(--kk-font-weight-semibold); }
.kk-filter-row__value { color: var(--kk-color-muted); }
.kk-filter-row__value--set { color: var(--kk-color-brand); font-weight: var(--kk-font-weight-semibold); }
/* Kort sammanfattning eller Återställ längst till höger. */
.kk-filter-row__summary { margin-left: auto; font-size: var(--kk-font-size-sm); color: var(--kk-color-muted); white-space: nowrap; }
.kk-filter-row__summary--action { color: var(--kk-color-brand); }
.kk-filter-row__toggle { display: flex; color: var(--kk-color-brand); }
.kk-filter-row__toggle .kk-icon { width: var(--kk-icon-size-18); height: var(--kk-icon-size-18); }
.kk-filter-row__body { padding-left: var(--kk-space-52); }
.kk-filter-row__body--search { margin-top: var(--kk-space-14); }
.kk-filter-row__note { margin-top: var(--kk-space-10); }
/* Återställ under fälten (mobil). */
.kk-filter-row__reset { font-size: var(--kk-font-size-sm); margin-top: var(--kk-space-8); }

/* kk-range: reglage med två handtag (ålder 18–100 år). role="group" med två role="slider".
   Positionerna är data: style="--kk-range-from: 14.6%; --kk-range-to: 45.1%" (procent av spåret). */
.kk-range {
  position: relative;
  height: var(--kk-size-range-track);
  border-radius: var(--kk-radius-xs);
  background: var(--kk-color-track);
  margin: var(--kk-space-26) var(--kk-space-12) var(--kk-space-10);
}
.kk-range__fill { position: absolute; top: 0; bottom: 0; left: var(--kk-range-from); right: calc(100% - var(--kk-range-to)); background: var(--kk-color-brand); border-radius: var(--kk-radius-xs); }
.kk-range__handle {
  position: absolute;
  top: 50%;
  width: var(--kk-size-range-handle);
  height: var(--kk-size-range-handle);
  margin: calc(var(--kk-space-14) * -1) 0 0 calc(var(--kk-space-14) * -1);
  border-radius: var(--kk-radius-round);
  background: var(--kk-color-surface);
  border: var(--kk-border-width-selected) solid var(--kk-color-brand);
  box-shadow: var(--kk-shadow-range-handle);
}
.kk-range__handle--from { left: var(--kk-range-from); }
.kk-range__handle--to { left: var(--kk-range-to); }
.kk-range__ticks { display: flex; justify-content: space-between; font-size: var(--kk-font-size-sm); color: var(--kk-color-muted); margin: 0 0 var(--kk-space-14); }
/* Från/Till-fälten under reglaget (desktop): fält med etikett och en hjälptext. */
.kk-range-fields { display: flex; gap: var(--kk-space-12); align-items: flex-end; }
.kk-range-fields__field { width: var(--kk-size-range-field); }
.kk-range-fields__note { flex: 1; padding-bottom: var(--kk-space-4); }
/* Från/Till-fälten under reglaget (mobil): två fält bredvid varandra utan etikett. */
.kk-range-inputs { display: grid; grid-template-columns: 1fr 1fr; gap: var(--kk-space-10); }

/* =====================================================================
   9. Kartan (steg 2): kk-map, kk-segmented
   ===================================================================== */

/* kk-segmented: knappar i en rad där en är vald (role="radiogroup", knapparna role="radio").
   På kartan: Rita område / Cirkel med radie. --block: områdesvalet på mobil, knapparna delar bredden. */
.kk-segmented { display: flex; padding: var(--kk-space-4); gap: var(--kk-space-4); }
.kk-segmented__item {
  display: inline-flex;
  align-items: center;
  gap: var(--kk-space-7);
  height: var(--kk-size-chip);
  padding: 0 var(--kk-space-12);
  border-radius: var(--kk-radius-sm);
  font-weight: var(--kk-font-weight-semibold);
  font-size: var(--kk-font-size-sm-plus);
  color: var(--kk-color-muted);
}
.kk-segmented__item--active { background: var(--kk-color-brand); color: var(--kk-color-on-brand); }
.kk-segmented__item .kk-icon { width: var(--kk-icon-size-17); height: var(--kk-icon-size-17); }
.kk-segmented--block { background: var(--kk-color-surface); border: var(--kk-border-width) solid var(--kk-color-line); border-radius: var(--kk-radius-md); margin: var(--kk-space-12) 0 var(--kk-space-10); }
.kk-segmented--block .kk-segmented__item { flex: 1; justify-content: center; }

/* kk-map: kartan för att rita ett eget område eller välja en cirkel med radie. Den riktiga kartan
   är Google Maps; kk-map__canvas är en förenklad bild (map-placeholder.svg) med markeringen ovanpå.
   Kontrollerna (kk-map__control) ligger ovanpå kartan: sök, ritläge, zoom, instruktion, knappar,
   Google-logotyp och attribution. Inget ändras förrän man trycker "Använd kartområdet". */
.kk-map {
  position: relative;
  height: var(--kk-size-map);
  border-radius: var(--kk-radius-2xl);
  overflow: hidden;
  border: var(--kk-border-width) solid var(--kk-color-line-strong);
}
.kk-map__canvas { display: block; width: 100%; height: 100%; }
.kk-map__control {
  position: absolute;
  display: flex;
  align-items: center;
  gap: var(--kk-space-8);
  background: var(--kk-color-surface);
  border-radius: var(--kk-radius-md);
  box-shadow: var(--kk-shadow-map-control);
  font-size: var(--kk-font-size-md);
}
.kk-map__search { left: var(--kk-space-14); top: var(--kk-space-14); height: var(--kk-size-button-secondary); padding: 0 var(--kk-space-14); width: var(--kk-size-map-search); }
.kk-map__search .kk-icon { color: var(--kk-color-brand); width: var(--kk-icon-size-19); height: var(--kk-icon-size-19); }
.kk-map__modes { right: var(--kk-space-14); top: var(--kk-space-14); gap: var(--kk-space-4); }
.kk-map__zoom { right: var(--kk-space-14); top: var(--kk-space-76); flex-direction: column; gap: 0; padding: var(--kk-space-2) 0; }
.kk-map__zoom-button { width: var(--kk-size-map-zoom-w); height: var(--kk-size-map-zoom-h); display: grid; place-items: center; color: var(--kk-color-ink); }
.kk-map__zoom-button .kk-icon { width: var(--kk-icon-size-18); height: var(--kk-icon-size-18); }
.kk-map__zoom-divider { width: var(--kk-size-map-zoom-divider); height: var(--kk-border-width); background: var(--kk-color-line); }
.kk-map__hint { left: var(--kk-space-14); bottom: var(--kk-space-34); padding: var(--kk-space-9) var(--kk-space-14); font-size: var(--kk-font-size-sm-plus); color: var(--kk-color-map-ui-ink); }
.kk-map__hint .kk-icon { color: var(--kk-color-brand); width: var(--kk-icon-size-18); height: var(--kk-icon-size-18); }
.kk-map__actions { position: absolute; right: var(--kk-space-14); bottom: var(--kk-space-26); display: flex; gap: var(--kk-space-10); align-items: center; }
.kk-map__cancel { position: static; height: var(--kk-size-button-secondary); padding: 0 var(--kk-space-16); font-weight: var(--kk-font-weight-semibold); color: var(--kk-color-ink); }
.kk-map__apply { height: var(--kk-size-button-secondary); box-shadow: var(--kk-shadow-map-primary); }
.kk-map__apply .kk-icon { width: var(--kk-icon-size-19); height: var(--kk-icon-size-19); }
.kk-map__logo {
  position: absolute;
  left: var(--kk-space-12);
  bottom: var(--kk-space-6);
  font-size: var(--kk-font-size-base);
  font-weight: var(--kk-font-weight-semibold);
  color: var(--kk-color-map-ui-text);
  letter-spacing: var(--kk-letter-spacing-map-logo);
  text-shadow: var(--kk-text-shadow-map-logo);
}
.kk-map__attribution {
  position: absolute;
  right: var(--kk-space-8);
  bottom: var(--kk-space-5);
  font-size: var(--kk-font-size-3xs);
  color: var(--kk-color-map-ui-text);
  background: var(--kk-color-map-ui-backdrop);
  padding: var(--kk-space-1) var(--kk-space-6);
  border-radius: var(--kk-radius-2xs);
}
.kk-map__note { margin-top: var(--kk-space-8); }

/* =====================================================================
   10. Steg för steg: kort och block som hör till ett visst steg
   ===================================================================== */

/* Steg 2, sök: kortet med sökfältet, förslagen och tipsraden. */
.kk-search-card { padding: var(--kk-space-22); }
.kk-search-card__hint { margin-top: var(--kk-space-14); }

/* Steg 3: kk-setting, kortet med ett val som slås på och av (NIX-tvätt). */
.kk-setting { padding: var(--kk-space-18) var(--kk-space-22); display: flex; gap: var(--kk-space-16); align-items: center; margin-bottom: var(--kk-space-16); }
.kk-setting .kk-icon-well { width: var(--kk-size-icon-well-sm); height: var(--kk-size-icon-well-sm); }
.kk-setting__body { flex: 1; }
.kk-setting__title { font-weight: var(--kk-font-weight-semibold); }
.kk-setting__link { white-space: nowrap; }

/* Steg 3: kk-included, vad leveransen innehåller (chips). */
.kk-included { padding: var(--kk-space-4) var(--kk-space-2); }
.kk-included__title { font-weight: var(--kk-font-weight-semibold); margin-bottom: var(--kk-space-10); }
.kk-included__note { margin-top: var(--kk-space-10); }

/* Steg 5: kk-quantity, antalsfältet och snabbvalen på en rad (desktop). */
.kk-quantity { display: flex; gap: var(--kk-space-12); align-items: center; flex-wrap: wrap; }
.kk-quantity__limit { margin: var(--kk-space-8) 0 var(--kk-space-18); }
/* Snabbvalen på egen rad under fältet (mobil). */
.kk-quick-choices { display: flex; gap: var(--kk-space-8); margin: var(--kk-space-10) 0 var(--kk-space-6); flex-wrap: wrap; }

/* Steg 5: kk-review, sammanställningen av valen med Ändra (en <dl> i ett kort). */
.kk-review { padding: var(--kk-space-6) var(--kk-space-22); margin-bottom: var(--kk-space-16); }
.kk-review__row { display: grid; grid-template-columns: var(--kk-size-review-key) 1fr auto; padding: var(--kk-space-12) 0; border-bottom: var(--kk-border-width) solid var(--kk-color-line); }
.kk-review__row:last-child { border-bottom: 0; }
.kk-review__key { font-size: var(--kk-font-size-sm); color: var(--kk-color-muted); font-weight: var(--kk-font-weight-semibold); }
.kk-review__action { font-size: var(--kk-font-size-sm); }

/* Steg 5: kk-delivery, leveransen (Excel och CSV) med förhandsvisning av filen. */
.kk-delivery { padding: var(--kk-space-18) var(--kk-space-22); }
.kk-delivery__head { display: flex; gap: var(--kk-space-14); align-items: center; }
.kk-delivery .kk-icon-well { width: var(--kk-size-icon-well-sm); height: var(--kk-size-icon-well-sm); }
.kk-delivery__body { flex: 1; }
.kk-delivery__title { font-weight: var(--kk-font-weight-semibold); }
.kk-delivery__table { margin-top: var(--kk-space-12); }

/* kk-table: liten tabell (förhandsvisningen av filen). kk-table__more är den dämpade sista kolumnen. */
.kk-table { border-collapse: collapse; width: 100%; font-size: var(--kk-font-size-sm); }
.kk-table th { text-align: left; font-weight: var(--kk-font-weight-semibold); color: var(--kk-color-muted); padding: var(--kk-space-8) var(--kk-space-10); border-bottom: var(--kk-border-width) solid var(--kk-color-line); white-space: nowrap; }
.kk-table td { padding: var(--kk-space-8) var(--kk-space-10); border-bottom: var(--kk-border-width) solid var(--kk-color-line); color: var(--kk-color-ink); white-space: nowrap; }
.kk-table .kk-table__more { color: var(--kk-color-placeholder); }

/* Steg 6: kk-checkout, kortet med företagsuppgifterna och betalningssättet. */
.kk-checkout__card { padding: var(--kk-space-24); }
.kk-checkout__hint { margin-top: var(--kk-space-16); }
/* kk-payment-method: rutan som visar betalningssättet (kort via Stripe). */
.kk-payment-method {
  display: flex;
  gap: var(--kk-space-14);
  align-items: center;
  margin-top: var(--kk-space-20);
  padding: var(--kk-space-16) var(--kk-space-18);
  border-radius: var(--kk-radius-lg);
  background: var(--kk-color-surface-subtle);
  border: var(--kk-border-width) solid var(--kk-color-line);
}
.kk-payment-method .kk-icon-well { width: var(--kk-size-icon-well-xs); height: var(--kk-size-icon-well-xs); background: var(--kk-color-surface); }
.kk-payment-method__body { flex: 1; }
.kk-payment-method__title { font-weight: var(--kk-font-weight-semibold); }

/* Kvittot: kk-receipt (centrerad layout), kk-success-mark (bocken), nedladdningar och länkar. */
.kk-receipt { max-width: var(--kk-size-receipt-max); margin: 0 auto; padding-top: var(--kk-space-64); text-align: center; }
.kk-success-mark {
  width: var(--kk-size-success);
  height: var(--kk-size-success);
  border-radius: var(--kk-radius-round);
  background: var(--kk-color-brand);
  color: var(--kk-color-lime);
  display: grid;
  place-items: center;
  margin: 0 auto var(--kk-space-26);
  box-shadow: var(--kk-shadow-success);
}
.kk-success-mark .kk-icon { width: var(--kk-icon-size-40); height: var(--kk-icon-size-40); stroke-width: var(--kk-icon-stroke-success); }
.kk-receipt__card { padding: var(--kk-space-26); text-align: left; }
.kk-receipt__card-title { font-weight: var(--kk-font-weight-semibold); font-size: var(--kk-font-size-xl); margin-bottom: var(--kk-space-4); }
.kk-receipt__card-text { margin-bottom: var(--kk-space-18); }
.kk-receipt__downloads { display: grid; grid-template-columns: 1fr 1fr; gap: var(--kk-space-14); }
.kk-receipt__hint { margin-top: var(--kk-space-18); }
.kk-receipt__links { display: flex; justify-content: center; gap: var(--kk-space-28); margin-top: var(--kk-space-28); }
.kk-receipt__note { font-size: var(--kk-font-size-sm-plus); margin-top: var(--kk-space-16); }
.kk-receipt__new { display: block; margin-top: var(--kk-space-22); }

/* =====================================================================
   11. Mobilens egna komponenter
   ===================================================================== */

/* kk-mobile-header: sidhuvudet på mobil, märket och Mitt konto. */
.kk-mobile-header { height: var(--kk-size-header-mobile); display: flex; align-items: center; justify-content: space-between; padding: 0 var(--kk-space-16); }

/* kk-mobile-progress: steget i text ("Steg 2 av 6 · Område") med bakåtknapp och staplar. */
.kk-mobile-progress { padding: var(--kk-space-4) var(--kk-space-16) 0; }
.kk-mobile-progress__row { display: flex; align-items: center; gap: var(--kk-space-10); font-size: var(--kk-font-size-sm); color: var(--kk-color-muted); font-weight: var(--kk-font-weight-medium); }
.kk-mobile-progress__step { color: var(--kk-color-ink); font-weight: var(--kk-font-weight-semibold); }
.kk-mobile-progress__back {
  width: var(--kk-size-chip);
  height: var(--kk-size-chip);
  border-radius: var(--kk-radius-round);
  border: var(--kk-border-width) solid var(--kk-color-line-strong);
  background: var(--kk-color-surface);
  display: grid;
  place-items: center;
  color: var(--kk-color-ink);
  flex: none;
}
.kk-mobile-progress__back .kk-icon { width: var(--kk-icon-size-17); height: var(--kk-icon-size-17); }

/* kk-progress-bars: sex staplar, en per steg. --done för nådda steg. */
.kk-progress-bars { display: flex; gap: var(--kk-space-5); margin-top: var(--kk-space-10); }
.kk-progress-bars__bar { flex: 1; height: var(--kk-size-progress-bar); border-radius: var(--kk-radius-2xs); background: var(--kk-color-progress-track); }
.kk-progress-bars__bar--done { background: var(--kk-color-brand); }

/* kk-mobile-body: innehållet under stegraden. --compact i steg 2–6, --receipt (centrerat) på kvittot. */
.kk-mobile-body { padding: var(--kk-space-18) var(--kk-space-16) 0; }
.kk-mobile-body--compact { padding-top: var(--kk-space-14); }
.kk-mobile-body--receipt { padding-top: var(--kk-space-56); text-align: center; }

/* kk-mobile-bar: listen längst ned på mobil. Ersätter Ditt urval: antal eller pris till vänster
   (knapp som öppnar arket, aria-haspopup="dialog") och knappen framåt till höger.
   Antalet kan vara --pending (nedtonat medan kartområdet inte är använt). */
.kk-mobile-bar {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: var(--kk-size-mobile-bar);
  padding: var(--kk-space-12) var(--kk-space-14) var(--kk-space-22);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--kk-space-12);
  background: var(--kk-gradient-mobile-bar);
  border-radius: var(--kk-radius-mobile-bar) var(--kk-radius-mobile-bar) 0 0;
  color: var(--kk-color-on-dark);
  z-index: var(--kk-z-mobile-bar);
}
.kk-mobile-bar__summary { display: flex; align-items: center; gap: var(--kk-space-10); }
.kk-mobile-bar__count {
  display: block;
  font-size: var(--kk-font-size-3xl);
  font-weight: var(--kk-font-weight-semibold);
  color: var(--kk-color-lime);
  line-height: var(--kk-line-height-mobile-bar);
  letter-spacing: var(--kk-letter-spacing-mobile-count);
}
.kk-mobile-bar__count--pending { opacity: var(--kk-opacity-pending-mobile); }
.kk-mobile-bar__caption { display: block; font-size: var(--kk-font-size-xs); color: var(--kk-color-on-dark-label); }
.kk-mobile-bar__summary .kk-icon { width: var(--kk-icon-size-18); height: var(--kk-icon-size-18); color: var(--kk-color-on-dark-icon); }
.kk-mobile-bar__next {
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: var(--kk-space-8);
  height: var(--kk-size-button);
  padding: 0 var(--kk-space-20);
  border-radius: var(--kk-radius-lg);
  background: var(--kk-color-lime);
  color: var(--kk-color-on-lime);
  font-weight: var(--kk-font-weight-cta);
}
.kk-mobile-bar__next .kk-icon { width: var(--kk-icon-size-19); height: var(--kk-icon-size-19); stroke-width: var(--kk-icon-stroke-cta); }

/* kk-scrim och kk-sheet: arket "Ditt urval" på mobil, role="dialog" aria-modal="true". Öppnas från
   mobillisten och visar samma innehåll som kk-summary. Raderna är en <dl>. Radtillstånd som i
   kk-summary: --current och --disabled. */
.kk-scrim { position: absolute; inset: 0; background: var(--kk-color-scrim); z-index: var(--kk-z-scrim); }
.kk-sheet {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: var(--kk-space-110);
  z-index: var(--kk-z-sheet);
  border-radius: var(--kk-radius-sheet) var(--kk-radius-sheet) 0 0;
  padding: var(--kk-space-22) var(--kk-space-20);
  color: var(--kk-color-on-dark);
  background: var(--kk-gradient-summary);
}
.kk-sheet__handle {
  width: var(--kk-size-sheet-handle);
  height: var(--kk-size-progress-bar);
  border-radius: var(--kk-radius-2xs);
  background: var(--kk-color-on-dark-handle);
  margin: calc(var(--kk-space-8) * -1) auto var(--kk-space-14);
}
.kk-sheet__header { display: flex; justify-content: space-between; align-items: center; font-size: var(--kk-font-size-md); color: var(--kk-color-on-dark-heading); }
.kk-sheet__close {
  width: var(--kk-size-chip);
  height: var(--kk-size-chip);
  border-radius: var(--kk-radius-round);
  background: var(--kk-color-on-dark-fill);
  display: grid;
  place-items: center;
}
.kk-sheet__close .kk-icon { width: var(--kk-icon-size-18); height: var(--kk-icon-size-18); }
.kk-sheet__count {
  font-family: var(--kk-font-serif);
  font-weight: var(--kk-font-weight-regular);
  letter-spacing: var(--kk-letter-spacing-serif);
  font-size: var(--kk-font-size-display-xl);
  color: var(--kk-color-lime);
  line-height: var(--kk-line-height-none);
  margin-top: var(--kk-space-6);
}
.kk-sheet__caption { font-size: var(--kk-font-size-md); }
.kk-sheet__price { font-size: var(--kk-font-size-sm); color: var(--kk-color-on-dark-muted); }
.kk-sheet__rows { margin-top: var(--kk-space-16); border-top: var(--kk-border-width) solid var(--kk-color-on-dark-divider-strong); }
.kk-sheet__row {
  display: grid;
  grid-template-columns: var(--kk-size-sheet-key) 1fr auto;
  gap: var(--kk-space-8);
  padding: var(--kk-space-11) 0;
  border-bottom: var(--kk-border-width) solid var(--kk-color-on-dark-divider);
}
.kk-sheet__key { font-size: var(--kk-font-size-sm); color: var(--kk-color-on-dark-key); }
.kk-sheet__value { font-size: var(--kk-font-size-md); }
.kk-sheet__action { font-size: var(--kk-font-size-sm); }
.kk-sheet__change { color: var(--kk-color-on-dark-link); text-decoration: underline; }
.kk-sheet__row--current .kk-sheet__value { color: var(--kk-color-lime); }
.kk-sheet__row--disabled .kk-sheet__key,
.kk-sheet__row--disabled .kk-sheet__value { color: var(--kk-color-on-dark-disabled); }
.kk-sheet__fine { display: flex; justify-content: space-between; margin-top: var(--kk-space-16); font-size: var(--kk-font-size-sm); color: var(--kk-color-on-dark-fine); }
.kk-sheet__fine-link { color: var(--kk-color-on-dark-link); text-decoration: underline; }

/* =====================================================================
   12. Mobilanpassningar
   Gäller när .kk-app är högst 767 px bred. Bara det som skiljer sig från desktop står här.
   ===================================================================== */
@container kk-app (max-width: 767px) {
  /* Märket är mindre. */
  .kk-brand__mark { width: var(--kk-size-mark-w-mobile); height: var(--kk-size-mark-h-mobile); font-size: var(--kk-font-size-5xl); border-radius: var(--kk-radius-sm); }
  .kk-brand__mark::after { right: var(--kk-space-5); top: var(--kk-space-6); width: var(--kk-size-mark-dot-mobile); height: var(--kk-size-mark-dot-mobile); }
  .kk-brand__name { font-size: var(--kk-font-size-lg); }

  /* Rubriker och ingress. */
  .kk-title { font-size: var(--kk-font-size-display-xs); line-height: var(--kk-line-height-title-mobile); margin-bottom: var(--kk-space-8); }
  .kk-title--hero { font-size: var(--kk-font-size-display-md); margin-bottom: var(--kk-space-8); }
  .kk-title--receipt { font-size: var(--kk-font-size-display-sm); margin-bottom: var(--kk-space-8); }
  .kk-lead { font-size: var(--kk-font-size-base); margin-bottom: var(--kk-space-18); }
  .kk-lead--compact { margin-bottom: var(--kk-space-14); }

  /* Svarskorten ligger under varandra och är liggande: ikon, text, och pil eller val till höger. */
  .kk-options--audience { grid-template-columns: 1fr; gap: var(--kk-space-12); }
  .kk-options--contact { grid-template-columns: 1fr; gap: var(--kk-space-10); margin-bottom: var(--kk-space-12); }
  .kk-option { padding: var(--kk-space-16); gap: var(--kk-space-14); }
  .kk-option--selected { padding: calc(var(--kk-space-16) - var(--kk-space-1)); }
  .kk-icon-well { width: var(--kk-size-icon-well-sm); height: var(--kk-size-icon-well-sm); border-radius: var(--kk-radius-md); }
  .kk-option__title { font-size: var(--kk-font-size-lg); }
  .kk-option__count { font-size: var(--kk-font-size-display-2xs); line-height: var(--kk-line-height-count-mobile); margin-top: 0; }
  .kk-option__meta { font-size: var(--kk-font-size-md); margin-top: var(--kk-space-6); }
  .kk-option__radio,
  .kk-option__check { position: static; flex: none; }
  .kk-perks { display: grid; justify-content: normal; gap: var(--kk-space-10); margin-top: var(--kk-space-20); font-size: var(--kk-font-size-md); }
  .kk-perk .kk-icon { width: var(--kk-icon-size-19); height: var(--kk-icon-size-19); }

  /* Kartan: lägre, sökfältet över hela bredden, ritläget nere till vänster, knappen nere till höger. */
  .kk-map { height: var(--kk-size-map-mobile); }
  .kk-map__search { left: var(--kk-space-10); right: var(--kk-space-10); top: var(--kk-space-10); width: auto; height: var(--kk-size-button-map-mobile); padding: 0 var(--kk-space-12); }
  .kk-map__search .kk-icon { width: var(--kk-icon-size-18); height: var(--kk-icon-size-18); }
  .kk-map__modes { left: var(--kk-space-10); right: auto; top: auto; bottom: var(--kk-space-30); }
  .kk-map__apply { position: absolute; right: var(--kk-space-10); bottom: var(--kk-space-30); height: var(--kk-size-button-map-mobile); padding: 0 var(--kk-space-14); font-size: var(--kk-font-size-md); box-shadow: none; }
  .kk-map__logo { font-size: var(--kk-font-size-sm); }

  /* NIX-kortet: tätare, ikonen utan platta. */
  .kk-setting { padding: var(--kk-space-12) var(--kk-space-14); gap: var(--kk-space-12); margin-bottom: 0; }
  .kk-setting__body { font-size: var(--kk-font-size-md); }

  /* Filterrader: tätare, mindre ikonplatta, innehållet utan indrag och pilen längst till höger. */
  .kk-filter-row { padding: var(--kk-space-9) var(--kk-space-14) var(--kk-space-9) var(--kk-space-10); }
  .kk-filter-row--open { padding: var(--kk-space-12) var(--kk-space-14) var(--kk-space-16) var(--kk-space-10); }
  .kk-filter-row__header { gap: var(--kk-space-12); }
  .kk-filter-row--open .kk-filter-row__header { gap: var(--kk-space-14); }
  .kk-filter-row .kk-icon-well { width: var(--kk-size-icon-well-row-mobile); height: var(--kk-size-icon-well-row-mobile); border-radius: var(--kk-radius-md); }
  .kk-filter-row__toggle { margin-left: auto; }
  .kk-filter-row__body { padding-left: 0; }
  .kk-range { margin: var(--kk-space-24) var(--kk-space-10) var(--kk-space-18); }

  /* Fält. */
  .kk-input { height: var(--kk-size-input-range); }
  .kk-input--range { height: var(--kk-size-input-range-mobile); }
  .kk-input--quantity { width: auto; height: var(--kk-size-input-quantity-mobile); font-size: var(--kk-font-size-4xl); }
  .kk-input--quantity .kk-input__unit { font-size: var(--kk-font-size-md); }
  .kk-form-grid { grid-template-columns: 1fr; gap: var(--kk-space-12); margin-top: var(--kk-space-14); }

  /* Antal. */
  .kk-quick-choice { height: var(--kk-size-quick-choice-mobile); padding: 0 var(--kk-space-14); }
  .kk-quantity__limit { font-size: var(--kk-font-size-sm); margin: 0 0 var(--kk-space-14); }
  .kk-delivery { padding: var(--kk-space-14) var(--kk-space-16); }
  .kk-delivery__head { gap: var(--kk-space-12); }
  .kk-delivery .kk-icon-well { width: var(--kk-size-icon-well-row); height: var(--kk-size-icon-well-row); }
  .kk-delivery .kk-icon-well .kk-icon { width: var(--kk-icon-size-19); height: var(--kk-icon-size-19); }
  .kk-delivery__body { font-size: var(--kk-font-size-md); }

  /* Uppgifter och betalning. */
  .kk-checkout__hint { font-size: var(--kk-font-size-sm); margin-top: var(--kk-space-14); }
  .kk-checkout__hint .kk-icon { width: var(--kk-icon-size-18); height: var(--kk-icon-size-18); }

  /* Kvittot. */
  .kk-success-mark { width: var(--kk-size-success-mobile); height: var(--kk-size-success-mobile); margin-bottom: var(--kk-space-22); box-shadow: var(--kk-shadow-success-mobile); }
  .kk-success-mark .kk-icon { width: var(--kk-icon-size-34); height: var(--kk-icon-size-34); }
  .kk-receipt__downloads { grid-template-columns: 1fr; gap: var(--kk-space-10); margin-top: var(--kk-space-6); }
  .kk-button--block { height: var(--kk-size-download-mobile); }
}
