/* Merkesider — laget som åpner seg fra karusellen på forsiden.
   Typografi og tall gjenbruker forsidens klasser (.keyNumHeading, .keyNumbers,
   .keyNumHeadingUn, .aboutUnder). Her ligger bare det som er nytt: selve laget,
   heltbildene, telleren og seksjonsrytmen. Venstrekanten er forsidens:
   4vw på mobil, 2.08333vw på desktop (.keyNumTop / .merkerTitle). */

/* Laget ligger over sideinnholdet og under topplinjen (10000), sløret (9998)
   og menypanelet (9999) — logo og hamburger forblir synlige, og logofargen
   måles mot merkesidens egne seksjoner. */
.merke {
  position: fixed;
  inset: 0;
  z-index: 9000;
  background: #000;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  /* `contain` stopper bare kjeding til siden bak — laget spratt fortsatt selv
     når man dro nedover på toppen. `none` fjerner sprettet inne i laget òg. */
  overscroll-behavior: none;
  opacity: 0;
  visibility: hidden;
}
.merke.is-open {
  opacity: 1;
  visibility: visible;
}
/* Lagets egen scrollbar skjules — forsidens står der allerede (låst), og to
   scrollbarer ved siden av hverandre leste som en feil. */
.merke {
  scrollbar-width: none;
}
.merke::-webkit-scrollbar {
  display: none;
}

/* Bildet som vokser fra karusellen til hele skjermen. Starter med samme
   avkuttede hjørner som karusellbildet har i hover, og lander uten. */
.merkeZoom {
  position: fixed;
  z-index: 9001;
  object-fit: cover;
  object-position: 50% 50%;
  pointer-events: none;
  will-change: top, left, width, height;
}

.merkePage {
  display: block;
  color: #fff;
}
.merkePage[hidden] {
  display: none;
}

/* Seksjonene avdekker hverandre: hver seksjon står stille (sticky) mens den
   neste sklir opp over den — som panelene i bunnen av forsiden. Seksjoner
   høyere enn skjermen får negativ top fra merke.js, så bunnen kan leses før
   neste seksjon dekker. Senere søsken tegnes over tidligere, av seg selv. */
.merkeSection {
  position: sticky;
  top: 0;
  width: 100%;
}
.merkeSection.dark {
  background: #000;
  color: #fff;
}
.merkeSection.light {
  background: #fff;
  color: #000;
}

/* Heltbilde. 100svh, ikke 100vh: på iOS er 100vh høyere enn det synlige, og da
   ville zoomen og heroen ikke landet på samme mål. Zoomen måler uansett heroen
   selv, ikke vinduet. */
.merkeHero,
.merkeBildeFull {
  height: 100vh;
  height: 100svh;
}
.merkeHero .merkeBilde,
.merkeBildeFull .merkeBilde {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 50%;
}

/* Videoen ligger over hero-bildet og fades inn når zoomen har landet;
   bildet under er samme bilde som karusellen, så byttet er usynlig. */
.merkeHeroVideo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 50%;
  opacity: 0;
}

/* Ett ord per linje i hero-overskriften. SplitText legger ordene i div-er med
   inline-block som inline-stil — derfor !important. */
.merkeHeroTittel div {
  display: block !important;
}

/* Heltbildene kommer inn mørke og litt forstørret, og lysner/krymper til
   normal i takt med scrollen (merke.js). Sløret er et eget lag over bildet. */
.merkeBildeFull {
  overflow: hidden;
}
.merkeBildeFull .merkeBilde {
  transform-origin: 50% 50%;
  will-change: transform;
}
.merkeSlør {
  position: absolute;
  inset: 0;
  background: #000;
  opacity: 0;
  pointer-events: none;
}

/* Stor overskrift — .aboutTitle sine verdier (forsidens
   «Optimal ytelse og uvurderlig beskyttelse»). Klassen selv kan ikke brukes:
   forsidens SplitText-reveal ville tatt ordene og ventet på en scroll som ikke
   kommer her — merke.js kjører samme reveal selv. */
.merkeHeroTekst {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 0 4vw 4vw 4vw;
}
.merkeTittelStor {
  font-size: 50px;
  font-family: 'FKDisplay-Reg', Helvetica, Arial, sans-serif;
  font-weight: 400;
  line-height: 1em;
  letter-spacing: -.02em;
  color: #fff;
  margin: 0;
  max-width: 88%;
}
@media only screen and (min-width: 768px) {
  .merkeHeroTekst {
    padding: 0 2.08333vw 2.08333vw 2.08333vw;
  }
  .merkeTittelStor {
    font-size: 75px;
    max-width: 55vw;
  }
}
@media only screen and (min-width: 1024px) {
  .merkeTittelStor {
    font-size: 7.29167vw;
    max-width: 65vw;
  }
}
@media only screen and (min-width: 1024px) and (max-width: 1080px) {
  .merkeTittelStor {
    font-size: 78.75px;
  }
}
@media only screen and (min-width: 1714.28571px) {
  .merkeTittelStor {
    font-size: 125px;
  }
}

/* To bilder side om side, samme luft som mellom karusellbildene (10px). */
.merkeBilder {
  display: grid;
  grid-template-columns: 1fr;
  gap: 5px;
}
.merkeBilder .merkeBilde {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}
@media only screen and (min-width: 768px) {
  .merkeBilder {
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
}

/* Samme innrykk som .keyNumTop på forsiden. */
.merkeTop {
  padding: 22vw 4vw 14vw 4vw;
}
.merkeBottom {
  padding: 0 4vw 14vw 4vw;
}
@media only screen and (min-width: 768px) {
  /* Bredden styres av .keyNumHeading (max-width 52 %), ikke av padding —
     begge deler samtidig ga én ord per linje. */
  .merkeTop {
    padding: 8.33333vw 2.08333vw 8.33333vw 2.08333vw;
  }
  .merkeBottom {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: end;
    padding: 0 2.08333vw 8.33333vw 2.08333vw;
  }
}

/* Tekstseksjonene fyller skjermen, som heltbildene — telleren teller skjermer. */
.merkeTall,
.merkeKategorier,
.merkeStor,
.merkeKontakt {
  min-height: 100vh;
  min-height: 100svh;
  box-sizing: border-box;
}

/* Riot-skjermen: svak røyk bak teksten. Tegnes i merke.js som noen få store,
   myke skyer som driver sakte; canvaset er lavoppløst og blurres av CSS, så
   det koster nesten ingenting. Opacity lav nok til at teksten står klart.
   Tegnes bare mens skjermen er synlig. */
.merkeRiot {
  overflow: hidden;
}
.merkeRoyk {
  position: absolute;
  inset: -10%;
  width: 120%;
  height: 120%;
  filter: blur(10px);
  opacity: 0.5;
  pointer-events: none;
}
.merkeRiot .merkeTop,
.merkeRiot .merkeKolonner {
  position: relative;
}

/* Tallverdien i egen node (ScrambleText skriver til den) — samme regel som
   .keyNumbers div gir den allerede. */
.merkeVerdi {
  display: block;
}

/* Forsidens .keyNumHeading er svart; på mørke seksjoner arver den hvit. */
.merkeSection.dark .keyNumHeading {
  color: #fff;
}
.merkeSection.light .keyNumHeading {
  color: #000;
}

/* Tre kolonner — .aboutUnder sine verdier (grid, gap, h3/p-størrelser) kopiert.
   Klassen selv kan ikke gjenbrukes: forsidens scroll-animasjon setter
   .aboutUnder h3/p til opacity 0 og venter på en scroll som aldri kommer her. */
.merkeKolonner {
  display: block;
  padding: 0 4vw 14vw 4vw;
}
.merkeKolonner div {
  max-width: 540px;
  margin-bottom: 12vw;
}
.merkeKolonner h3 {
  font-weight: 400;
  font-size: 30px;
  font-family: 'FKDisplay-Reg', Helvetica, Arial, sans-serif;
  letter-spacing: -.02em;
  margin: 0;
}
.merkeKolonner p {
  font-weight: 400;
  font-size: 16px;
  line-height: 1.4em;
  font-family: 'FKDisplay-Reg', Helvetica, Arial, sans-serif;
  letter-spacing: -.02em;
  margin: 2.97917vw 0 0 0;
}
@media only screen and (min-width: 768px) {
  .merkeKolonner div {
    margin-bottom: 0;
  }
  .merkeKolonner h3 {
    font-size: 38px;
  }
  .merkeKolonner p {
    font-size: 18px;
  }
}
@media only screen and (min-width: 1024px) {
  .merkeKolonner {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0 4.16667vw;
    padding: 0 6.25vw 8.33333vw 2.08333vw;
  }
  .merkeKolonner h3 {
    font-size: 2.63889vw;
  }
  .merkeKolonner p {
    font-size: 1.25vw;
  }
}
@media only screen and (min-width: 1714.28571px) {
  .merkeKolonner h3 {
    font-size: 45px;
  }
  .merkeKolonner p {
    font-size: 22px;
  }
}

/* Tallene står i høyre halvdel som på forsiden, men i én kolonne — «−40 / +55»
   i 90px får ikke plass i en kvart skjerm. */
@media only screen and (min-width: 768px) {
  .merkeBottom .keyNumbers {
    grid-template-columns: 1fr;
  }
}

/* «Stor»-layouten (Stellar): kjempeoverskrift øverst til venstre, tekst-
   kolonnene nederst til høyre. Kolonnene starter på 35 vw på desktop. */
.merkeStor {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.merkeStor .merkeTop {
  padding-bottom: 0;
}
.merkeStor .merkeTittelStor {
  color: inherit;
}
.merkeStor .merkeKolonner {
  padding-top: 14vw;
}
@media only screen and (min-width: 768px) {
  .merkeStor .merkeKolonner {
    padding-top: 8.33333vw;
  }
}
@media only screen and (min-width: 1024px) {
  .merkeStor .merkeKolonner {
    padding: 8.33333vw 2.08333vw 8.33333vw 35vw;
  }
}

/* Kontakt: siste skjerm, svart, teksten i høyre halvdel og midtstilt i
   høyden (Stellar-tittelskjermen). Overskriften får kolonnens bredde. */
.merkeKontakt {
  display: flex;
  align-items: center;
}
.merkeKontakt .merkeTop {
  width: 100%;
  padding-top: 0;
  padding-bottom: 0;
}
@media only screen and (min-width: 768px) {
  .merkeKontakt .merkeTop {
    padding-left: 50%;
  }
  .merkeKontakt .keyNumHeading {
    max-width: 100%;
  }
}
@media only screen and (min-width: 1024px) {
  .merkeKontakt .merkeTop {
    padding-left: 58vw;
  }
}
.merkeKontakt .keyNumHeading {
  max-width: 76%;
}
.merkeKontakt .keyNumHeadingUn a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 0.18em;
  text-decoration-thickness: 1px;
}

.merkeKontakt .keyNumHeadingUn {
  grid-template-columns: 1fr;
}

/* «Scroll» nede til høyre når siden åpnes, fades vekk ved første scroll.
   Samme størrelse som .keyNumbers span; høyrekanten er .Menubar_container
   sin (4vw / 2vw). */
.merkeScroll {
  position: fixed;
  right: 4vw;
  bottom: 4vw;
  z-index: 9002;
  font-family: 'FKDisplay-Reg', Helvetica, Arial, sans-serif;
  font-weight: 400;
  font-size: 16px;
  line-height: 125.5%;
  letter-spacing: -0.03em;
  color: #fff;
  mix-blend-mode: difference;
  pointer-events: none;
}
@media only screen and (min-width: 1024px) {
  .merkeScroll {
    right: 2vw;
    bottom: 2vw;
    font-size: 22px;
  }
}

/* Mens et merke er åpent skjules «Kontakt oss»-lenken nederst på forsiden —
   merkesiden har sin egen. */
body.merke-open .secondaryNav {
  visibility: hidden;
}
