/* =========================================================
   Hylja Vertikal 600 — stilark
   Fonter er selvhostet (Oswald, Inter, Caveat — SIL OFL).
   ========================================================= */

@font-face {
  font-family: 'Oswald';
  src: url('../fonter/oswald-var.woff2') format('woff2-variations');
  font-weight: 200 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Inter';
  src: url('../fonter/inter-var.woff2') format('woff2-variations');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Caveat';
  src: url('../fonter/caveat-var.woff2') format('woff2-variations');
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}

/* ---------- Tokens ---------- */
:root {
  --stein: #17140f;
  /* varm nærsvart */
  --granitt: #251f18;
  --skifer: #3a322a;
  --kritt: #f4efe5;
  /* lys bakgrunn */
  --kritt-dyp: #e8e0d1;
  --blek: #8b8070;
  --orange: #d9541e;
  --orange-lys: #ec6b35;
  --gull: #e3a231;
  --gull-lys: #f6c14e;
  --skumring: #1d2b38;

  --display: 'Oswald', 'Arial Narrow', 'Helvetica Neue', sans-serif;
  --brodfont: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --skrift: 'Caveat', 'Segoe Script', cursive;

  --sp: clamp(3.5rem, 8vw, 7rem);
  /* seksjonsluft */
  --rad: 3px;
}

/* ---------- Grunnlag ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: .001ms !important;
    transition-duration: .001ms !important;
  }
}

body {
  margin: 0;
  background: var(--kritt);
  color: var(--stein);
  font-family: var(--brodfont);
  font-size: 1rem;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img,
picture,
svg {
  display: block;
  max-width: 100%;
}

img {
  height: auto;
}

a {
  color: inherit;
}

:where(a, button, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--orange);
  outline-offset: 3px;
  border-radius: 2px;
}

.hopp-lenke {
  position: absolute;
  left: 1rem;
  top: -5rem;
  z-index: 999;
  background: var(--stein);
  color: var(--kritt);
  padding: .75rem 1.25rem;
  font-family: var(--display);
  text-decoration: none;
  transition: top .15s ease;
}

.hopp-lenke:focus {
  top: 1rem;
}

.wrap {
  width: min(100% - 2.5rem, 1180px);
  margin-inline: auto;
}

/* Menylenkene: innholdet i seksjonen skal lande under den faste
   menylinja (ca. 5 rem), ikke bak den. Seksjonens egen luft i toppen
   trekkes fra, så på brede skjermer der luften er stor nok, blir det 0. */
main section[id] {
  scroll-margin-top: max(0px, calc(6rem - var(--sp)));
}

/* Lenker rett til et kort har ingen seksjonsluft å trekke fra.
   På brede skjermer står kortene side om side, så da tas overskriften
   over dem med også. */
.kort[id] {
  scroll-margin-top: 6rem;
}

@media (min-width: 901px) {
  .kort[id] {
    scroll-margin-top: 11.5rem;
  }
}

/* ---------- Typografi ---------- */
.tittel {
  font-family: var(--display);
  font-weight: 600;
  font-size: clamp(1.9rem, 4.4vw, 3rem);
  line-height: 1.02;
  letter-spacing: -.005em;
  text-transform: uppercase;
  margin: 0 0 1rem;
}

.tittel--stor {
  font-size: clamp(2.3rem, 6vw, 4.1rem);
}

.stikk {
  font-family: var(--display);
  font-weight: 500;
  font-size: .82rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--orange);
  margin: 0 0 .9rem;
}

.stikk--gull {
  color: #b07a16;
}

.stikk--liten {
  font-size: .72rem;
  margin-bottom: .4rem;
}

.brod {
  margin: 0 0 1.1rem;
  max-width: 62ch;
}

.brod--dempet {
  color: #5d5348;
}

.lenke {
  font-family: var(--display);
  font-weight: 500;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-size: .85rem;
  text-decoration: none;
  border-bottom: 2px solid var(--orange);
  padding-bottom: 2px;
  display: inline-block;
}

.lenke:hover {
  color: var(--orange);
}

/* ---------- Knapper ---------- */
.knapp {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6rem;
  font-family: var(--display);
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: .09em;
  text-transform: uppercase;
  text-decoration: none;
  padding: .95rem 1.9rem;
  border: 2px solid transparent;
  border-radius: var(--rad);
  cursor: pointer;
  transition: background-color .18s ease, color .18s ease, border-color .18s ease;
}

.knapp--primar {
  background: var(--orange);
  color: #fff;
}

.knapp--primar:hover {
  background: var(--orange-lys);
}

.knapp--kant {
  border-color: var(--gull);
  color: var(--gull-lys);
  background: transparent;
}

.knapp--kant:hover {
  background: var(--gull);
  color: var(--stein);
}

.knapp--liten {
  padding: .6rem 1.2rem;
  font-size: .85rem;
}

.knapp--full {
  width: 100%;
}

/* =========================================================
   Topplinje
   ========================================================= */
.topp {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  background: linear-gradient(rgba(14, 18, 25, .78), rgba(14, 18, 25, 0));
  transition: background-color .25s ease, box-shadow .25s ease;
}

.topp--festet {
  background: rgba(23, 20, 15, .95);
  box-shadow: 0 1px 0 rgba(244, 239, 229, .12);
}

.topp__inner {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  padding: .9rem 0;
}

.merke {
  display: flex;
  align-items: center;
  gap: .7rem;
  text-decoration: none;
  color: var(--kritt);
  margin-right: auto;
}

.merke__ikon {
  width: 40px;
  height: auto;
  flex: none;
}

.merke__tekst {
  display: block;
  line-height: 1;
}

.merke__navn {
  display: block;
  font-family: var(--display);
  font-weight: 600;
  font-size: 1.4rem;
  letter-spacing: .17em;
  text-transform: uppercase;
}

.merke__under {
  display: block;
  font-family: var(--display);
  font-weight: 400;
  font-size: .66rem;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: var(--gull);
  margin-top: .22rem;
}

.meny {
  display: flex;
  align-items: center;
  gap: 1.6rem;
}

.meny__liste {
  display: flex;
  gap: 1.4rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.meny__liste a {
  font-family: var(--display);
  font-weight: 400;
  font-size: .84rem;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--kritt);
  text-decoration: none;
  padding: .4rem 0;
  border-bottom: 2px solid transparent;
}

.meny__liste a:hover {
  border-bottom-color: var(--gull);
}

.meny-knapp {
  display: none;
  align-items: center;
  gap: .6rem;
  background: none;
  border: 0;
  color: var(--kritt);
  font-family: var(--display);
  font-size: .85rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  padding: .5rem .2rem;
  cursor: pointer;
}

.meny-knapp__strek {
  position: relative;
  width: 24px;
  height: 2px;
  background: currentColor;
  transition: background-color .15s ease;
}

.meny-knapp__strek::before,
.meny-knapp__strek::after {
  content: '';
  position: absolute;
  left: 0;
  width: 24px;
  height: 2px;
  background: currentColor;
  transition: transform .2s ease;
}

.meny-knapp__strek::before {
  top: -7px;
}

.meny-knapp__strek::after {
  top: 7px;
}

.meny-knapp[aria-expanded='true'] .meny-knapp__strek {
  background: transparent;
}

.meny-knapp[aria-expanded='true'] .meny-knapp__strek::before {
  transform: translateY(7px) rotate(45deg);
}

.meny-knapp[aria-expanded='true'] .meny-knapp__strek::after {
  transform: translateY(-7px) rotate(-45deg);
}

@media (max-width: 900px) {
  .meny-knapp {
    display: inline-flex;
  }

  .meny {
    position: absolute;
    inset: 100% 0 auto 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    background: var(--stein);
    border-top: 1px solid rgba(244, 239, 229, .14);
    padding: .5rem 1.25rem 1.5rem;
    display: none;
  }

  .meny--apen {
    display: flex;
  }

  .meny__liste {
    flex-direction: column;
    gap: 0;
  }

  .meny__liste a {
    display: block;
    padding: .9rem 0;
    font-size: 1rem;
    border-bottom: 1px solid rgba(244, 239, 229, .1);
  }

  .meny__pamelding {
    margin-top: 1.1rem;
  }
}

/* =========================================================
   Helt / hero
   ========================================================= */
.helt {
  position: relative;
  background: var(--skumring);
  color: var(--kritt);
  padding: clamp(8rem, 16vw, 11rem) 0 clamp(6rem, 11vw, 9rem);
  overflow: hidden;
  isolation: isolate;
}

.helt__himmel {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--skumring);
  /* vises til fotoet er lastet */
}

.helt__himmel picture,
.helt__himmel img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 85%;
  /* holder løperen i bildet når hero-en blir lav og bred */
}

/* To sjikt: ett vannrett som gir plass til teksten, ett loddrett
   som demper himmelen bak menyen og bunnen bak infoboksen. */
.helt__himmel::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(10, 15, 21, .55) 0%, rgba(10, 15, 21, 0) 22%, rgba(10, 15, 21, 0) 70%, rgba(10, 15, 21, .5) 100%),
    linear-gradient(100deg, rgba(10, 15, 21, .9) 0%, rgba(10, 15, 21, .72) 38%, rgba(10, 15, 21, .4) 66%, rgba(10, 15, 21, .25) 100%);
}

@media (max-width: 820px) {
  .helt__himmel img {
    object-position: 50% 35%;
  }

  .helt__himmel::after {
    background:
      linear-gradient(180deg,
        rgba(10, 15, 21, .62) 0%,
        rgba(10, 15, 21, .22) 20%,
        /* lysest bak medaljene */
        rgba(10, 15, 21, .70) 40%,
        /* herfra og ned ligger teksten */
        rgba(10, 15, 21, .82) 75%,
        rgba(10, 15, 21, .9) 100%);
  }
}

.helt__inner {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
  grid-template-areas: 'tekst medaljer' 'skrift medaljer';
  gap: 0 clamp(1.5rem, 4vw, 3rem);
  align-items: center;

  /* Overstyrer .wrap: høyre kolonne skal nå helt ut til vinduskanten, mens
     teksten beholder samme venstremarg som resten av siden. Uttrykket under
     er nøyaktig det .wrap ville gitt. */
  width: 100%;
  max-width: none;
  margin-inline: 0;
  padding-left: max(1.25rem, calc((100% - 1180px) / 2));
  padding-right: 0;
}

.helt__tekst {
  grid-area: tekst;
}

.helt__tittel {
  margin: 0 0 1.5rem;
  font-family: var(--display);
  text-transform: uppercase;
  line-height: .86;
  letter-spacing: -.01em;
}

.helt__tittel-1 {
  display: block;
  font-weight: 700;
  font-size: clamp(3.6rem, 11vw, 7.4rem);
  color: #fff;
  text-shadow: 0 6px 30px rgba(0, 0, 0, .45);
}

.helt__tittel-2 {
  display: block;
  font-weight: 600;
  font-size: clamp(2.1rem, 6.4vw, 4.4rem);
  color: var(--gull);
  margin-top: .12em;
}

.helt__ingress {
  font-size: clamp(1.02rem, 1.6vw, 1.18rem);
  color: #e6ded0;
  margin: 0 0 2rem;
  max-width: 34ch;
}

.helt__knapper {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

.helt__medaljer {
  grid-area: medaljer;
  display: block;
  align-self: start;
  width: min(34vw, 470px);
  justify-self: end;
  margin-top: calc(-1 * clamp(8rem, 16vw, 11rem) - 1.5rem);
}

.helt__medaljer img {
  width: 100%;
  height: auto;
  filter: drop-shadow(0 26px 40px rgba(0, 0, 0, .6));
}

.haandskrift {
  grid-area: skrift;
  font-family: var(--skrift);
  font-weight: 700;
  font-size: clamp(1.5rem, 2.9vw, 2.15rem);
  line-height: 1.05;
  color: var(--gull-lys);
  transform: rotate(-5deg);
  transform-origin: left center;
  margin: clamp(2.5rem, 6vw, 4.5rem) 0 0;
  align-self: end;
  text-shadow: 0 4px 18px rgba(0, 0, 0, .6);
}

@media (max-width: 820px) {
  .helt {
    padding-top: clamp(6rem, 22vw, 8rem);
  }

  .helt__inner {
    grid-template-columns: 1fr;
    grid-template-areas: 'medaljer' 'tekst' 'skrift';
    padding-right: 1.25rem;
  }

  .helt__medaljer {
    width: min(38vw, 165px);
    justify-self: end;
    /* Mobilutsnittet har kortere bånd, så toppen trenger mindre opptrekk */
    margin: calc(-1 * clamp(6rem, 22vw, 8rem) - 0.5rem) -1.25rem 1.25rem 0;
  }

  .haandskrift {
    margin-top: 1.8rem;
    transform: rotate(-3deg);
  }
}

/* Smale skjermer: løperens ansikt står rett bak teksten, så teksten skyves
   ned til det er luft mellom ansiktet og «Motbakkeløp»-linja. Fra 640 px står
   løperen til høyre for teksten, og da trengs det ikke. */
@media (max-width: 639px) {
  .helt__medaljer {
    margin-bottom: calc(1.25rem + 270px - 10vw);
  }
}

/* =========================================================
   Faktastripe
   ========================================================= */
.fakta {
  /* Flytende boks som legger seg over nedre kant av toppbildet */
  position: relative;
  z-index: 5;
  margin-top: calc(-1 * clamp(2.5rem, 6vw, 5rem));
  color: var(--kritt);
}

.fakta__liste {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  list-style: none;
  margin-block: 0;
  /* ikke 'margin: 0' — det ville drept .wrap sin margin-inline: auto */
  padding: clamp(1.6rem, 3vw, 2.2rem) clamp(1.2rem, 2.5vw, 2rem);
  background: rgba(23, 20, 15, .78);
  -webkit-backdrop-filter: blur(14px) saturate(1.1);
  backdrop-filter: blur(14px) saturate(1.1);
  border: 1px solid rgba(244, 239, 229, .14);
  border-radius: 6px;
  box-shadow: 0 26px 60px rgba(0, 0, 0, .45);
}

/* Nettlesere uten backdrop-filter får en tettere flate i stedet */
@supports not (backdrop-filter: blur(1px)) {
  .fakta__liste {
    background: rgba(23, 20, 15, .93);
  }
}

.fakta__punkt {
  display: flex;
  gap: .9rem;
  padding: 0 1.6rem;
  border-left: 1px solid rgba(244, 239, 229, .16);
}

.fakta__punkt:first-child {
  border-left: 0;
  padding-left: 0;
}

.fakta__ikon {
  width: 26px;
  height: 26px;
  flex: none;
  margin-top: .2rem;
  fill: none;
  stroke: var(--gull);
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.fakta__punkt h2 {
  font-family: var(--display);
  font-weight: 500;
  font-size: .85rem;
  letter-spacing: .15em;
  text-transform: uppercase;
  margin: 0 0 .35rem;
}

.fakta__punkt p {
  margin: 0;
  font-size: .88rem;
  line-height: 1.5;
  color: #b9b0a1;
}

@media (max-width: 900px) {

  /* Boksen er høy her og ligger mest over den lyse flaten, så den trenger
     mer dekkevne for å holde seg mørk */
  .fakta {
    margin-top: calc(-1 * clamp(1.5rem, 4vw, 3rem));
  }

  .fakta__liste {
    grid-template-columns: repeat(2, 1fr);
    gap: 1.8rem 0;
    background: rgba(23, 20, 15, .94);
  }

  .fakta__punkt {
    padding: 0 1.1rem;
  }

  .fakta__punkt:nth-child(odd) {
    border-left: 0;
    padding-left: 0;
  }
}

@media (max-width: 520px) {
  .fakta__liste {
    grid-template-columns: 1fr;
    gap: 1.5rem 0;
  }

  .fakta__punkt {
    border-left: 0;
    padding: 0;
  }
}

/* =========================================================
   Løypa
   ========================================================= */
.loypa {
  padding: var(--sp) 0;
  background: var(--kritt);
}

.loypa__inner {
  display: grid;
  grid-template-columns: minmax(0, .78fr) minmax(0, 1.22fr);
  gap: clamp(2rem, 5vw, 4rem);
  align-items: start;
}

.loypa__tekst .tittel--stor {
  margin-bottom: 1.6rem;
}

.loypa__tekst .tittel--stor::after {
  content: '';
  display: block;
  width: 64px;
  height: 4px;
  background: var(--orange);
  margin-top: 1.4rem;
}

.loypa__kart {
  position: relative;
}

.kart__ramme {
  position: relative;
  border-radius: 4px;
  overflow: hidden;
  box-shadow: 0 18px 45px rgba(23, 20, 15, .22);
  /* vises hvis kartbildet ennå ikke er generert */
  background: linear-gradient(150deg, #3f5b3c, #6d7448 55%, #9a9077);
}

.kart__bilde {
  width: 100%;
}

/* Sporet ligger som et lag oppå kartbildet, i samme koordinatsystem */
.kart {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.kart__spor {
  stroke-dasharray: 920;
  stroke-dashoffset: 920;
  transition: stroke-dashoffset 2.4s cubic-bezier(.4, 0, .2, 1);
}

.kart--tegnet .kart__spor {
  stroke-dashoffset: 0;
}

.kart__punkt {
  opacity: 0;
  transition: opacity .5s ease 1.1s;
}

.kart--tegnet .kart__punkt {
  opacity: 1;
}

.kart__kilde {
  position: absolute;
  left: .5rem;
  bottom: .4rem;
  margin: 0;
  font-size: .68rem;
  line-height: 1.3;
  color: #2f2a22;
  background: rgba(244, 239, 229, .82);
  padding: .15rem .45rem;
  border-radius: 2px;
}

.kart__flagg {
  position: absolute;
  font-family: var(--display);
  font-weight: 500;
  font-size: .7rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: .3rem .6rem;
  border-radius: 2px;
  white-space: nowrap;
  box-shadow: 0 2px 8px rgba(23, 20, 15, .3);
}

.kart__flagg--start {
  background: var(--stein);
  color: var(--kritt);
  left: 72.7%;
  top: 21.8%;
  transform: translate(-50%, 85%);
  /* under markøren, inne i det tomme partiet */
}

.kart__flagg--maal {
  background: var(--gull-lys);
  color: var(--stein);
  left: 53.7%;
  top: 86.4%;
  transform: translate(-25%, 65%);
  /* under målpunktet */
}

.nokkeltall {
  list-style: none;
  margin: 2rem 0 0;
  padding: 1.4rem 1.6rem;
  background: #fff;
  border-radius: 4px;
  box-shadow: 0 10px 28px rgba(23, 20, 15, .12);
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.2rem 1rem;
  max-width: 24rem;
}

.nokkeltall li {
  display: grid;
}

.nokkeltall strong {
  font-family: var(--display);
  font-weight: 600;
  font-size: 1.45rem;
  line-height: 1.1;
}

.nokkeltall span {
  font-family: var(--display);
  font-weight: 400;
  font-size: .68rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--blek);
}

@media (max-width: 900px) {
  .loypa__inner {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  .nokkeltall {
    grid-template-columns: repeat(2, 1fr);
    gap: .9rem 1rem;
  }

  /* Etikettene skalerer ikke med panelet, så de tar større plass på liten skjerm */
  .kart__flagg {
    font-size: .62rem;
    padding: .25rem .5rem;
  }

  .kart__flagg--maal {
    transform: translate(-25%, 25%);
  }

  .kart__kilde {
    font-size: .58rem;
    padding: .1rem .35rem;
  }
}

/* =========================================================
   Høydeprofil
   ========================================================= */
.profil__figur {
  margin: 1.4rem 0 0;
}

.hoydegraf {
  width: 100%;
  height: auto;
  overflow: visible;
  /* markøren skal kunne stå helt ytterst */
  border-bottom: 2px solid var(--kritt-dyp);
}

.profil__linje {
  stroke-dasharray: 1060;
  stroke-dashoffset: 1060;
  transition: stroke-dashoffset 2s ease-out;
}

.hoydegraf--tegnet .profil__linje {
  stroke-dashoffset: 0;
}

.hoydegraf__akse {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-top: .8rem;
  font-family: var(--display);
  font-weight: 400;
  font-size: .72rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--blek);
}

/* =========================================================
   Medaljer
   ========================================================= */
.medaljer {
  padding: var(--sp) 0;
  background: var(--stein);
  color: var(--kritt);
}

.medaljer__inner {
  display: grid;
  grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
}

.medaljer__bilde img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  object-position: 50% 78%;
  border-radius: 4px;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .5);
}

.medaljer__tekst .stikk--gull {
  color: var(--gull);
}

.medalje-liste {
  margin: 2rem 0 1.6rem;
  display: grid;
  gap: 1.4rem;
}

.medalje-liste dt {
  display: flex;
  align-items: center;
  gap: .6rem;
  font-family: var(--display);
  font-weight: 600;
  font-size: 1.1rem;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.medalje-liste dd {
  margin: .35rem 0 0 1.5rem;
  color: #c2b9ab;
  max-width: 52ch;
}

.prikk {
  width: .9rem;
  height: .9rem;
  border-radius: 50%;
  flex: none;
}

.prikk--gull {
  background: linear-gradient(140deg, #f6d179, #b57f1c);
}

.prikk--solv {
  background: linear-gradient(140deg, #e3e6e8, #8d949a);
}

@media (max-width: 820px) {
  .medaljer__inner {
    grid-template-columns: 1fr;
  }

  /* Teksten først på mobil, så menylenka lander på overskriften
     og ikke på bildet */
  .medaljer__bilde {
    order: 2;
    max-width: 340px;
    margin-inline: auto;
  }
}

/* =========================================================
   Klasser
   ========================================================= */
.klasser {
  padding: var(--sp) 0;
  background: var(--kritt-dyp);
}

.klasser__topp {
  max-width: 58ch;
  margin-bottom: 2.6rem;
}

.kortrad {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(255px, 1fr));
  gap: 1.5rem;
}

.kort {
  background: #fff;
  border-radius: 4px;
  padding: 1.9rem 1.7rem;
  border-top: 5px solid var(--stein);
}

.kort h3 {
  font-family: var(--display);
  font-weight: 600;
  font-size: 1.35rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  margin: 0 0 .3rem;
}

.kort p {
  margin: 0 0 .9rem;
  font-size: .95rem;
}

/* Merk: .kort p er mer spesifikk enn .kort__pris alene, så prisen må
   skrives som .kort .kort__pris for at størrelsen skal slå gjennom. */
.kort .kort__pris {
  font-family: var(--display);
  font-weight: 500;
  font-size: 1.7rem;
  color: var(--orange);
  margin-bottom: .8rem !important;
}

.kort--fremhevet {
  border-top-color: var(--orange);
}

/* ---------- Early bird-kampanje ----------
   Diagonal sløyfe i hjørnet, overstrøket ordinærpris og tilbudspris under.
   Fjernes ved å ta bort kort--tilbud, sløyfa, kort__kampanje og
   <s>-linja i index.html — da står den vanlige prisen igjen. */
.kort--tilbud {
  position: relative;
  overflow: hidden;
}

.sloyfe {
  display: inline-block;
  /* Negativ venstremarg = like stor som kortets padding, slik at båndet
     går helt ut til kanten. Endres paddingen på .kort, endres denne med. */
  margin: 0 0 .7rem -1.7rem !important;
  padding: .36rem 1.4rem .36rem 1.7rem;
  background: linear-gradient(100deg, var(--orange) 0%, var(--gull) 115%);
  color: #fff;
  font-family: var(--display);
  font-weight: 600;
  font-size: .74rem !important;
  letter-spacing: .14em;
  text-transform: uppercase;
  /* Brett i høyre ende */
  clip-path: polygon(0 0, 100% 0, calc(100% - 11px) 50%, 100% 100%, 0 100%);
}

/* Prisen: ordinær over, tilbud under */
.kort--tilbud .kort__pris {
  display: grid;
  justify-items: start;
  gap: .05rem;
  margin-bottom: .6rem !important;
}

.kort__pris-for {
  font-size: 1.05rem;
  color: var(--blek);
  text-decoration-line: line-through;
  text-decoration-color: var(--orange);
  text-decoration-thickness: 2px;
}

.kort__pris-na {
  font-size: 2rem;
  line-height: 1.05;
  color: var(--orange);
}

.kort__kampanje {
  margin: 0 0 1.1rem !important;
  font-family: var(--display);
  font-weight: 600;
  font-size: .74rem !important;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: #9c4f16;
}


.hake {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: .5rem;
}

.hake li {
  position: relative;
  padding-left: 1.5rem;
  font-size: .9rem;
  color: #574e44;
}

.hake li::before {
  content: '';
  position: absolute;
  left: 0;
  top: .48em;
  width: .55rem;
  height: .3rem;
  border-left: 2px solid var(--gull);
  border-bottom: 2px solid var(--gull);
  transform: rotate(-45deg);
}

/* =========================================================
   Praktisk
   ========================================================= */
.praktisk {
  padding: var(--sp) 0;
  background: var(--kritt);
}

.praktisk__inner {
  display: grid;
  grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
  gap: clamp(2rem, 5vw, 4rem);
  align-items: start;
}

.trekkspill {
  border-top: 1px solid var(--kritt-dyp);
}

.trekkspill__post {
  border-bottom: 1px solid var(--kritt-dyp);
}

.trekkspill__post summary {
  display: flex;
  align-items: center;
  gap: 1rem;
  cursor: pointer;
  list-style: none;
  padding: 1.15rem 0;
  font-family: var(--display);
  font-weight: 500;
  font-size: 1.08rem;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.trekkspill__post summary::-webkit-details-marker {
  display: none;
}

.trekkspill__post summary::after {
  content: '';
  margin-left: auto;
  width: .7rem;
  height: .7rem;
  border-right: 2px solid var(--orange);
  border-bottom: 2px solid var(--orange);
  transform: rotate(45deg) translate(-2px, -2px);
  transition: transform .2s ease;
  flex: none;
}

.trekkspill__post[open] summary::after {
  transform: rotate(-135deg) translate(-2px, -2px);
}

.trekkspill__innhold {
  padding: 0 0 1.4rem;
}

.trekkspill__innhold p {
  margin: 0;
  max-width: 64ch;
  color: #574e44;
}

@media (max-width: 900px) {
  .praktisk__inner {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   Nyheter
   ========================================================= */
.nyheter {
  padding: var(--sp) 0;
  background: var(--kritt-dyp);
}

.nyheter__topp {
  margin-bottom: 2.4rem;
}

.nyheter__grid {
  display: grid;
  grid-template-columns: minmax(0, .75fr) minmax(0, 2.25fr);
  gap: clamp(2rem, 4vw, 3.5rem);
  align-items: start;
}

.hovedsak {
  border-top: 4px solid var(--stein);
  padding-top: 1.2rem;
}

.hovedsak h3 {
  font-family: var(--display);
  font-weight: 600;
  font-size: 1.45rem;
  line-height: 1.1;
  text-transform: uppercase;
  margin: 0 0 .8rem;
}

.dato {
  font-family: var(--display);
  font-size: .74rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--blek);
  margin: 0 0 .5rem;
}

.kortrad--nyhet {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.kort--nyhet {
  border-top: 0;
  padding: 0 0 1.4rem;
  background: transparent;
}

.kort--nyhet h3 {
  font-size: 1.1rem;
  margin-bottom: .45rem;
}

.kort--nyhet p {
  font-size: .92rem;
  color: #574e44;
}

.kort__bilde {
  height: 170px;
  border-radius: 4px;
  margin-bottom: 1rem;
  overflow: hidden;
  background-color: var(--skifer);
}

/* Foto: fyller flaten og beskjæres ved behov */
.kort__bilde img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Logo: hvit flate, hele logoen synlig, ingen beskjæring */
.kort__bilde--logo {
  display: grid;
  place-items: center;
  height: 170px;
  padding: 1.5rem 1.8rem;
  background: #fff;
}

.kort__bilde--logo img {
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 72px;
  object-fit: contain;
}

@media (max-width: 900px) {
  .nyheter__grid {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   Påmelding
   ========================================================= */
.pamelding {
  padding: var(--sp) 0;
  background:
    linear-gradient(105deg, rgba(23, 20, 15, .96) 30%, rgba(23, 20, 15, .8) 100%),
    linear-gradient(160deg, #3b2a18, #17140f);
  color: var(--kritt);
}

.pamelding__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, .85fr);
  gap: clamp(2rem, 5vw, 4rem);
  align-items: start;
}

.pamelding .brod {
  color: #c2b9ab;
}

.nedtelling {
  font-family: var(--display);
  font-weight: 500;
  font-size: 1.05rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--gull);
  margin: 2rem 0 0;
  border-left: 4px solid var(--orange);
  padding-left: 1rem;
}

.pamelding__boks {
  background: rgba(244, 239, 229, .06);
  border: 1px solid rgba(244, 239, 229, .16);
  border-radius: 4px;
  padding: clamp(1.5rem, 3vw, 2.2rem);
}

.pamelding__ingress {
  margin: 0 0 1.3rem;
  color: #ded5c6;
}

.pamelding__boks .hake {
  margin-bottom: 1.8rem;
}

.hake--lys li {
  color: #b4aa9c;
}

.hake--lys li::before {
  border-color: var(--gull);
}

.pamelding__fotnote {
  margin: 1.1rem 0 0;
  font-size: .82rem;
  line-height: 1.55;
  color: #8d8376;
}

@media (max-width: 820px) {
  .pamelding__inner {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   Sponsorer
   ========================================================= */
.sponsorer {
  padding: var(--sp) 0;
  background: var(--stein);
  color: var(--kritt);
}

/* Logoen til venstre, medarrangørene ved siden av den. Begge kolonnene
   er så brede som innholdet, og gruppen midtstilles som én enhet. */
.sponsorer__topp {
  display: grid;
  grid-template-columns: auto auto;
  justify-content: center;
  align-items: end;
  gap: clamp(2.2rem, 10vw, 10.5rem);
  text-align: left;
  padding-bottom: clamp(2.5rem, 5vw, 3.5rem);
  border-bottom: 1px solid rgba(244, 239, 229, .12);
}

.sponsorer__merke {
  width: clamp(190px, 20vw, 260px);
  height: auto;
  margin: 0;
}

.sponsorer__topp .logorad.logorad--arrangor {
  justify-content: start;
}

/* Medarrangørene står rett på bakgrunnen, uten hvit flate, så de leses
   som en del av samme lockup som hovedlogoen. Logoene bunnjusteres mot
   hverandre og mot hovedlogoen til venstre. */
.logorad.logorad--arrangor {
  align-items: end;
  gap: clamp(1.8rem, 6.5vw, 6.5rem);
}

.logorad.logorad--arrangor li {
  width: auto;
  flex: 0 0 auto;
  display: block;
  max-width: 100%;
}

.arrangorlogo {
  display: block;
  width: auto;
  max-width: 100%;
  /* Omtrent høyden på hovedlogoen minus ingressen over. Høyden settes
     eksplisitt, ikke som max-height: da regnes bredden ut fra høyden, og
     logoene får plass ved siden av hverandre også på mobil. */
  height: clamp(140px, 18vw, 256px);
  /* Skjoldet ender i en spiss. Står spissen på samme linje som den brede
     streken under hovedlogoen, ser den ut til å henge under. Et lite løft
     retter opp synsvirkningen. */
  margin-bottom: clamp(6px, 0.9vw, 13px);
}

@media (max-width: 760px) {

  /* justify-items: center ville krympet feltet til innholdets bredde, og da
     fikk ikke logoene plass ved siden av hverandre. Her er feltet i full
     bredde, og innholdet midtstilles hver for seg. */
  .sponsorer__topp {
    grid-template-columns: 1fr;
    text-align: center;
    gap: 1.6rem;
  }

  .sponsorer__merke {
    margin-inline: auto;
  }

  .sponsorer__topp .logorad.logorad--arrangor {
    justify-content: center;
  }
}

.sponsorer__ingress {
  font-family: var(--display);
  font-weight: 400;
  font-size: .82rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--gull);
  margin: 0 0 1.3rem;
}

.sponsorblokk {
  padding-top: clamp(2.5rem, 5vw, 3.5rem);
}

.sponsorblokk__tittel {
  font-family: var(--display);
  font-weight: 500;
  font-size: .82rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--gull);
  text-align: center;
  margin: 0 0 1.8rem;
}

/* Hvit flate bak hver logo: sponsorlogoer er stort sett mørke og ville
   forsvunnet rett på den mørke bakgrunnen. */
.logoflate {
  display: grid;
  place-items: center;
  background: #fff;
  border-radius: 5px;
  padding: 1rem 1.3rem;
  box-shadow: 0 8px 22px rgba(0, 0, 0, .3);
}

.logoflate img {
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: var(--logo-h, 40px);
  object-fit: contain;
}

.logorad {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(1.2rem, 3vw, 2.5rem);
}

.logorad li {
  display: grid;
  gap: .7rem;
  justify-items: center;
  width: clamp(170px, 21vw, 250px);
}

.logorad .logoflate {
  width: 100%;
}

/* Hovedsponsorene: kortet har fast form (5:2), og logoen fyller en fast
   andel av det. Padding i prosent regnes av bredden, så forholdet mellom
   kort og logo er det samme på alle skjermbredder. Liggende logoer stopper
   mot bredden, stablede mot høyden. */
.logorad--hoved .logoflate {
  display: flex;
  align-self: start;
  /* uten denne strekkes kortet i høyden når naboen har navn på to linjer,
     og aspect-ratio gjør det da bredere også */
  aspect-ratio: 5 / 2;
  min-height: 0;
  padding: 7% 8%;
}

.logorad--hoved .logoflate img {
  flex: 1;
  width: 0;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: contain;
}

/* Stablet logo: mindre luft over og under, så den får samme tyngde
   som de liggende */
.logorad--hoved .logoflate:has(img[src$="coop-ottadalen.svg"]) {
  padding-block: 7%;
}

.logonavn {
  font-family: var(--display);
  font-weight: 500;
  font-size: .82rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  text-align: center;
  color: #c2b9ab;
}

.sponsorliste {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 1.5rem;
}

.sponsorkort {
  display: grid;
  gap: .65rem;
  justify-items: start;
}

.logoflate--liten {
  --logo-h: 40px;
  min-height: 72px;
  width: 100%;
  padding: .8rem 1rem;
}

.sponsorkort h3 {
  font-family: var(--display);
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: .07em;
  text-transform: uppercase;
  margin: 0;
}

.sponsorkort p {
  margin: 0;
  font-size: .88rem;
  line-height: 1.55;
  color: #9a9083;
}

@media (max-width: 560px) {
  .logorad li {
    width: min(100%, 260px);
  }

  .sponsorliste {
    grid-template-columns: 1fr;
    gap: 1.3rem;
  }
}

/* =========================================================
   Bunn
   ========================================================= */
.bunn {
  background: #100d0a;
  color: #9a9083;
  padding: 1.6rem 0 1.2rem;
}

.bunn__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .8rem 2rem;
  padding-bottom: 1.1rem;
  border-bottom: 1px solid rgba(244, 239, 229, .1);
}

.bunn__tekst {
  margin: 0;
  font-size: .9rem;
}

.bunn__lenker {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: .4rem 1.6rem;
  font-size: .9rem;
}

.bunn__lenker a {
  text-decoration: none;
}

.bunn__lenker a:hover {
  color: var(--gull);
}

@media (max-width: 700px) {
  .bunn__inner {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* =========================================================
   Synkronisert markør på kart og høydeprofil
   ========================================================= */
.profil__figur,
.kart__ramme {
  touch-action: pan-y;
  /* loddrett sidescroll skal fortsatt virke */
  cursor: crosshair;
}

.loype-markor {
  opacity: 0;
  pointer-events: none;
}

.kart--aktiv .loype-markor,
.hoydegraf--aktiv .loype-markor {
  opacity: 1;
}

.loype-markor__kjerne {
  filter: drop-shadow(0 2px 4px rgba(23, 20, 15, .45));
}

.avlesning[hidden] {
  display: none;
}

.avlesning {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .25rem .9rem;
  margin: .7rem 0 0;
  min-height: 1.9rem;
}

.avlesning__verdi {
  font-family: var(--display);
  font-weight: 600;
  font-size: 1.25rem;
  letter-spacing: .04em;
  color: var(--orange);
}

.avlesning__hint {
  font-family: var(--display);
  font-weight: 400;
  font-size: .72rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--blek);
}

/* Tastaturhåndtaket vises bare for skjermlesere og ved tabbing */
.skyver {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.skyver:focus-visible {
  position: static;
  width: auto;
  height: auto;
  overflow: visible;
  clip-path: none;
  display: inline-block;
  margin-top: .7rem;
  padding: .5rem .9rem;
  background: var(--stein);
  color: var(--kritt);
  font-family: var(--display);
  font-size: .78rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  border-radius: 2px;
}

@media (hover: none) {
  .avlesning__hint::before {
    content: 'Trykk og ';
  }
}

/* ---- Poster langs løypa ---- */
.kart__post circle,
.profil__post circle {
  filter: drop-shadow(0 1px 3px rgba(23, 20, 15, .4));
}

.profil__post circle {
  fill: var(--kritt);
  stroke: #17140f;
  stroke-width: 3;
}

.profil__post text {
  font-family: var(--display);
  font-weight: 500;
  font-size: 22px;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  fill: #6b6153;
}

@media (max-width: 560px) {
  /* SVG-teksten skalerer med viewBox, så den må opp når panelet er smalt */
  .profil__post text {
    font-size: 30px;
  }
}

/* =========================================================
   Stigningsmåler langs høyre kant
   ========================================================= */
.stigning {
  display: none;
}

@media (min-width: 1360px) and (min-height: 680px) {
  .stigning {
    display: grid;
    justify-items: center;
    gap: .7rem;
    position: fixed;
    right: clamp(.6rem, 1.4vw, 1.4rem);
    top: 50%;
    transform: translateY(-50%);
    z-index: 40;
    pointer-events: none;
    opacity: 0;
    transition: opacity .35s ease;
  }

  /* Toner inn når du har passert toppbildet */
  .stigning--synlig {
    opacity: 1;
  }

  .stigning__merke {
    font-family: var(--display);
    font-weight: 500;
    font-size: .62rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    text-align: center;
    line-height: 1.4;
    color: var(--blek);
  }

  .stigning__spor {
    position: relative;
    width: 2px;
    height: clamp(300px, 46vh, 420px);
    border-radius: 2px;
    background: rgba(139, 128, 112, .35);
  }

  /* Delen du har tilbakelagt, fra bunnen og opp */
  .stigning__fylt {
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 0;
    border-radius: 2px;
    background: var(--orange);
  }

  .stigning__punkt {
    position: absolute;
    left: 50%;
    bottom: 0;
    width: 11px;
    height: 11px;
    margin: 0 0 -5.5px -5.5px;
    border-radius: 50%;
    background: #fff;
    border: 3px solid var(--orange);
    box-shadow: 0 1px 4px rgba(23, 20, 15, .4);
  }

  /* Avlesningen krever litt plass til venstre for linja, så den
     dukker først opp når vinduet er bredt nok til at den ikke
     legger seg over innholdet. */
  .stigning__avlesning {
    display: none;
  }
}

@media (min-width: 1500px) and (min-height: 680px) {
  .stigning__avlesning {
    position: absolute;
    right: calc(100% + .5rem);
    top: 50%;
    transform: translateY(-50%);
    display: grid;
    justify-items: end;
    gap: .1rem;
    line-height: 1.1;
    white-space: nowrap;
    font-family: var(--display);
    font-weight: 500;
    font-size: .64rem;
    letter-spacing: .07em;
    text-transform: uppercase;
  }

  .stigning__km {
    color: var(--orange);
  }

  .stigning__moh {
    color: var(--blek);
  }
}