/* :has()-FALLBACK (02.09.2026): på skjermer uten :has()-støtte (eldre Firefox/Chrome) forsvant
   Hver :has(X) står nå som :is(:has(X), .h-<klasse>) — :is() er tilgivende, og vit-shell.js
   setter .h-klassene når nettleseren mangler :has(). Målt av Kenneth 02.09 («fargebuggen»). */
/* FOUC-fix: skjul body inntil vit-shell.js har bygget skallet og lagt
   .vsh-ready på <html>. Hindrer at innholdet rendres usentrert/bredt
   først, og så hopper når sidemenyen settes inn ved DOMContentLoaded.
   visibility (ikke display) bevarer layout-beregningen — bare malingen
   utsettes med noen ms. */
/* .vsh-venter staar i SELVE <html>-TAGGEN paa hver side som laster skallet
   (blink-vakt.mjs), ikke bare oeverst i vit-shell.js: et utsatt skript kjoerer
   etter at nettleseren kan ha malt sida, og da blinket flata fram FOER
   lastevisningen (maalt 02.09.2026: 4 av 5 sider). Sider som bare laster
   stilarket har ikke klassen og skjules ikke. Sikringen: kommer skallet aldri
   (skriptet feiler), slipper animasjonen body fram etter 8 s — ren CSS, ingen
   side kan staa usynlig for alltid. */
/* INFORMASJONSBOKSEN (Kenneth 02.09.2026): forklaringer TIL en graf eller ei liste
   («september er ikke ferdig bokført», «dette er fakturaer du har sendt …») står i
   denne — aldri som fritekst midt i visningen. Én klasse, samme flate som
   Sammenhengen, brukes over hele appen. */
.infoboks{background:var(--infoboks-flate);border:1px solid var(--infoboks-ramme);border-radius:var(--boks-radius);padding:12px 16px;font-size:var(--fs-sm);color:var(--ink-2);line-height:1.55;margin:12px 0} /* grå familie (NYE VITIN 03.09) */
.infoboks b{color:var(--ink)}
.infoboks .i-eye{display:block;font:600 var(--fs-2xs) var(--font-display);letter-spacing:.08em;color:var(--brand-2);margin-bottom:4px}

html.vsh-venter:not(.vsh-ready) body { visibility: hidden; animation: vsh-slipp 0s 8s forwards; }
@keyframes vsh-slipp { to { visibility: visible; } }
button,a,[role="button"]{-webkit-tap-highlight-color:transparent} /* flyttet fra saker.html (04.09) */

/* ============ SKRIFTEN ARVES (29.08.2026) ============
   MAALT innlogget: 25 av 201 synlige kontroller i appen tegnet i Arial —
   .vsh-search paa hver eneste side, .bu-met og .rad-x i budsjettet,
   .kortmeny-btn, og de fem fanene paa min side. Grunnen er at nettleseren
   IKKE lar button/input/select/textarea arve font-family fra body; de faar
   sin egen systemskrift med mindre noen sier noe annet. Hver av dem som var
   riktig, var riktig fordi noen tilfeldigvis skrev font-family i sin egen
   regel — altsaa 176 tilfeldige treff og 25 bom.

   Fonten er Poppins (Kenneth). Regelen hoerer i arket, ikke i den enkelte
   knappen: da kan ingen ny knapp havne i Arial ved aa la vaere aa nevne
   skrift. Bare familien arves — stoerrelse og vekt bestemmes fortsatt der
   komponenten bor. */
button,
input,
select,
textarea{ font-family: inherit; }

/* Brand-tokenene (--brand-2, --brand-line, --brand-warm) eies av vit-tokens.css — den gamle «garantien» med !important her er borte (04.09). */

/* ============ AKTIV TAB/PILL — ÉN VALGT-MARKØR ============
   Denne blokka tvang ALT med .on og «-btn»/«-pill»/«-tab» i klassenavnet
   til hvit flate + skygge, med !important. Den var skrevet før M3-
   vedtaket og slo derfor alt som er bestemt siden: menyvelgeren,
   periodevelgeren, spørsmålsfanene. Det var den som gjorde «valgt» til
   solid farge noen steder og bare ramme andre steder (Kenneth 07.08) —
   selektoren treffer bredt, så resultatet avhang av hvilket klassenavn
   den enkelte komponenten tilfeldigvis hadde.

   Nå peker den på de samme tokenene som resten av kategorien: FYLT
   flate i valg-fargen, ingen skygge (dybde av tone, ikke skygge).
   Målt 04.09.2026 på alle sidene: ingen lokal regel slår denne lenger,
   så !important er tatt bort.
   ============================================================ */
[class*="-pill"].on,
[class*="-pill"].is-active,
[class*="-tab"].on,
[class*="-tab"].is-active,
[class*="-btn"].on,
.brief-pill.on,
.hr-btn.on,
.fane-btn.on,
.fane-pill.on,
.cat-tab.on,
.tnav.on,
.tnav.is-active {
  background: var(--valg-valgt-flate);
  color: var(--valg-valgt-farge);
  box-shadow: none;
  border-color: var(--valg-valgt-ramme);
}
/* ============ INNHOLDS-KORT — demp surface-2/brand-soft ============
   Ekte content-cards (slutter pa "-card", "-tile" eller "-row") med
   brand-tinted bakgrunn dempes til hvit surface for kontrast mot
   warm cream canvas. KPI-tiles og kvittering-piller unntatt.
   .chart-card UNNTATT (Kenneth 04.08, «alle tokens feil på oversikt»):
   den er SEKSJONSBOKSEN i flate-hierarkiet (lerret → boks → hvitt innhold,
   M3-V2-vedtaket 03.08) — denne cream-æra-sweepen tvang den hvit med
   !important og nullet boks-tintingen på hele appen i det stille. */
/* SLETTET 07.08 (Kenneth: «alt betyr alt»): cream-æra-sweepen som tvang
   alle *-card/-tile hvite med !important. Den overkjørte nivåsystemet i
   det stille (id-card, rg-card m.fl. — funnet av lag-vakta). Nivåene
   eies nå av flate-tokenene og komponentkartet lenger ned. */

/* ============ RAPPORT-SIDE-AVDIMP ============
   Rapport-sidene (rapport-bank-2026, rapport-eier-2026, rapport-regnskap-2026,
   rapport-styrerapport-2025) har egne trafikklys-paletter med hardkodete
   RGB-verdier (gronn #2d8c5c, gul #b45309, rod #c53030, bla #1e40af) som
   ikke fanges av --pos/--warn-overriden. Force alle til brand-only-tokens. */

/* Skjul gamle navigasjons-knapper — vit-shell-menyen gir navigasjon */
.back-link,
a.back-link {
  display: none !important;
}

/* Skriv ut / PDF-knappen (brukeravtale). Hele knappen eies her — sida hadde sin egen
   regel med plassering, skallet sin med farger og !important; ÉN regel siden 04.09.2026. */
.print-btn {
  position: fixed; top: 20px; right: 20px;
  padding: 8px 14px;
  background: var(--surface);
  color: var(--brand-2);
  border: 1px solid var(--line);
  border-radius: var(--knapp-radius);
  box-shadow: var(--sh-2);
  font: 600 var(--fs-13) var(--font-body);
  cursor: pointer;
}
.print-btn:hover {
  border-color: var(--brand-line);
}

/* Type-tagger (DATA / BENCHMARK / TOLKNING / HYPOTESE) — brand-only */
.type-tag.data,
.type-tag.tolkning,
.tag.data,
.tag.tolkning {
  background: none;
  border: 1px solid var(--line-mid);
  color: var(--brand-2);
}
.type-tag.benchmark,
.tag.benchmark,
.tag.kilde {
  background: var(--surface-2);
  color: var(--ink-3);
}

/* Pill-varianter med trafikklys */
.pill.neg { background: var(--neg-soft); color: var(--neg); }
.pill.info { background: var(--surface-2); color: var(--ink-3); }

/* Covenant-cards — fjern good/warn/neg-borderfarger */
.covenant-card.good,
.covenant-card.warn,
.covenant-card.neg {
  border-color: var(--line);
}

/* Stress-table row tints — neutraliser */
.stress-table tr.danger td { background: var(--surface-2); }
.stress-table tr.warn td { background: var(--surface-2); }
.stress-table tr.safe td { background: var(--surface); }

/* Syntese-box — dempes fra heavy brand-pink til surface med brand-stripe */
.synth {
  background: color-mix(in srgb, var(--brand) 5%, transparent);
  border: 1px solid var(--brand-line);
}

/* Explainer-info-variant (blue) — dempes */
.explainer.info {
  background: var(--surface-2);
  border-left-color: var(--ink-4);
}

/* Placeholder-tagger med yellow */
.placeholder {
  background: none;
  border: 1px solid var(--line-mid);
  color: var(--brand-2);
}

/* Verdict-tekst (under KPI-kort) skal være dempet status, ikke aksent.
   Forrige globale --warn-override gjorde dem brand-orange. */
.verdict.good,
.verdict.warn,
.verdict.neg,
.kpi-card .verdict {
  color: var(--ink-3);
}

/* ============ FAGORD-MARKERING (.ord) — globalt O2-mønster ============
   Per Kenneth (forslag-laer-mer.html O2): brand-2 tekst + 2px brand-line
   dotted underline. Hover gjør underline solid brand. Hopper ut av
   ink-2-brødtekst uten å bli en "pille i tekst". Skal brukes KUN på
   fagord og uttrykk (Driftsmargin, bransjesnitt, lønnskostnad osv) —
   ALDRI på tall eller prosentverdier. */
button.ord,
.ord {
  color: var(--brand-2);
  background: transparent;
  border: 0;
  /* 1.5px — NØYAKTIG samme strek som [data-term]-regelen (Kenneth 04.08:
     én enkel, lik understrek på alle fagord — aldri to varianter). */
  border-bottom: 1.5px dotted var(--brand-line);
  padding: 0 1px 1px !important;
  font: inherit;
  font-weight: 600;
  /* «help», ikke «pointer». Ordet er et OPPSLAG: hold musa over det og
     forklaringen kommer, klikk og den åpner i margen. Bare padding-linja
     over trenger !important (målt 04.09: én side slår den ellers). */
  cursor: help;
  transition: border-color 140ms, border-bottom-style 140ms;
}
button.ord:hover,
.ord:hover {
  color: var(--brand-2);
  border-bottom-color: var(--brand);
  border-bottom-style: solid;
}
/* Tastaturring. Lå bare på intervju, lovgrunnlag og sykefravær — de fire
   andre sidene med fagord ga ingen synlig markering ved tabbing. .ord ER
   klikkbar, så den skal kunne brukes uten mus overalt. */
button.ord:focus-visible,
.ord:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 1px;
  border-radius: var(--felt-radius);
}

/* Trafikklys-tokenene (--pos, --warn, --neg …) eies av vit-tokens.css.
   Skallet hadde en :root-blokk som overstyrte dem i det stille (målt 04.09.2026:
   --warn var i praksis brand-lilla, mens tokenfila sa oransjebrun). Verdiene som
   faktisk ble tegnet står nå i tokenfila; aliasene ingen brukte er borte. */

/* ============ RAPPORT-SIDE: hardkodede rgba(...) trafikklys =============
   Lokale <style>-blokker bruker rgba(45,140,92,.10) etc. som literal-verdier,
   ikke som variabler — variabel-overriden over treffer dem ikke. Force pa
   selector-niva. */

/* .tag.* deler regel med .type-tag.* over (slått sammen 04.09) */
.tag.hypotese {
  background: transparent;
  color: var(--ink-3);
  border: 1px dashed var(--line);
}

/* Numeric deltas (▲ +1,2 pp) — verdier konkurrerer ikke med brand */
.delta.up,
.delta.dn,
.delta.flat {
  color: var(--ink-3);
}

/* Tabellrader — ingen rad-fargemarkering, verdier star alene */
tr.positive td:not(:first-child),
tr.negative td:not(:first-child) {
  color: var(--ink-2);
}

/* Trafikklys-prikker (.traffic.green/amber/red) — enhetlig brand-dot */
.traffic.amber,
.traffic.red{
  background: var(--brand);
}

/* (18.08: .risk-card-kantstripa er slettet — aksentstripe, og dessuten
   doed kode: ingen .risk-card deklarerer border-left i skallet.) */

/* NODATA-pille + note — varm mute, ikke gul */
.pill.nod {
  background: var(--surface-2);
  color: var(--ink-3);
}

/* Data-note (rapport-styrerapport) — brand-stripe i stedet for warn-bg */

/* Hindrer alle gjenstående hopp mellom sider:
   - background på <html> matcher canvas-fargen så det ikke flasher hvitt
     i overgangen mellom sider (CSS-variabel kan ikke leses før sidens
     egen <style> er parset, så vi setter literal-fallback).
   - overflow:hidden på <html> hindrer at en kortvarig dokument-scrollbar
     dukker opp før shell setter scrollen til .vsh-scene istedenfor body.
   - scrollbar-gutter:stable på .vsh-scene reserverer scrollbar-plass så
     innholdet ikke flytter seg sidelengs når sidens lengde varierer.
*/
/* LERRETET STÅR PÅ BEGGE, ELLERS FADER DET (Kenneth 26.08: «Den gråfargen
   som låg bak fader ut igjen på windows med chrome»). MÅLT på Oversikt:
   <html> sto hvit mens <body> sto #EDEBEF, og etter 2,5 s — i det body får
   klassen graf-klar — slår den hvite igjennom der body ikke dekker (overscroll,
   rubber-banding, kort innhold). En hardkodet #ffffff her er dessuten nøyaktig
   den typen verdi tokensystemet skal eie: lerretet har ÉN kilde. */
html { background: var(--flate-0); }
/* overflow:hidden hører til SKALLET, ikke til arket (21.09.2026). Next-rutene laster
   samme ark uten skall, og DPA-en ble klippet til én skjerm — en avtale man ikke kan lese.
   vsh-app settes av vit-shell.js før første maling. */
html.vsh-app:not(.vsh-light) { overflow: hidden; }
/* PORTALSIDENE LASTER IKKE SKALLET (byraaportal-revisjonen 19.09): mine-kunder, byraa, sak-status m.fl. har .app.portal
   rett i body og ingen .vsh-scene aa rulle i — med overflow:hidden paa html kunne Mine kunder ikke rulles i det hele tatt
   (nav-vakt: «KAN IKKE RULLE NED», 8 av 13 trykk). Dokumentet ruller der. Bygger skallet scenen, matcher ikke body > lenger. */
html:has(body > .app.portal) { overflow: auto; }
.vsh-scene { scrollbar-gutter: stable;
  min-width: 0;
  min-height: 0;
  overflow-y: auto; /* slått sammen 04.09 */
}

/* SKRIFTA PÅ BUNNEN (Kenneth 13.08: «feil font og styr»).
   Målt i nettleser: 30 av 41 app-sider sier INGENTING om skrift på body. De
   ser likevel riktige ut, fordi nesten all tekst treffer en klasse som setter
   font selv — men alt som IKKE gjør det, faller til nettleserens standard.
   På en ny flate ble det 58 elementer i Times New Roman.

   Bare FAMILIEN settes her, ikke størrelse eller linjehøyde. De 11 sidene som
   erklærer body selv sier to forskjellige størrelser, og å tvinge én av dem
   inn ville endret tekststørrelsen på 30 sider som ingen har bedt om. Dette
   retter feilen og rører ingenting annet. */
body { font-family: var(--font-body);
  margin:0; /* slått sammen 04.09 */
}

/* =====================================================================
   Vitin v2 · NAVIGASJONSSKALL — delt komponent
   ---------------------------------------------------------------------
   Dette er det nye skallet for app.vitin.no. Det erstatter de gamle
   sidemeny-skallene (.sb- og .vsb-) på alle app-sider.

   Bruk fra en hvilken som helst side:
     1. <link rel="stylesheet" href="vit-shell.css" />
     2. <script defer src="vit-shell.js"></script>
     3. <body data-vit-modul="okonomi" data-vit-modus="oversikt"> ...

   ARKITEKTUR
   - Skallet har ÉN meny: den venstre sidemenyen. Det finnes ingen
     topplinje og ingen høyre-rail. Alt — logo, kategorivelger,
     modus, grupper, søkefelt og natt-knapp — ligger i sidemenyen,
     ovenfra og ned.
   - Sidemenyen er LÅST (fast). Kun scenen (sideinnholdet) ruller.
   - Scenen fyller hele bredden til høyre for sidemenyen.

   Alt skall-CSS er navnsatt under prefiks .vsh- slik at det ikke
   kolliderer med sideinnholdets egne klasser. Skallet leser fargetokens
   (--brand, --surface, --ink, …) fra siden selv — det definerer ingen.
   ===================================================================== */

/* ---- skall-rot: erstatter sidens layout-grid ----
   Hele skallet fyller nøyaktig viewport-høyden og ruller IKKE selv.
   Venstre sidemeny er dermed alltid synlig; kun scenen
   (sideinnholdet) får egen rulling.

   Kollaps-modell: standard 64px (kun ikoner), ekspanderer til 232px
   ved mouseover. Sidebaren overlayer scene-kanten i ekspandert state
   (grid-tracken forblir 64px sa scene-innholdet ikke hopper). */
.vsh {
  display: grid;
  /* MENYSKINNA LIGGER INNTIL SKJERMKANTEN. Proevd og forkastet 26.08: aa
     sentrere hele skallet fikk skinna til aa flyte midt paa skjermen med et
     hull til venstre. En navigasjonsskinne er festet til kanten i hver
     eneste app som har en. */
  grid-template-columns: 56px 1fr; /* skinna 56 (Kenneth 06.09) */
  height: 100vh;
  height: 100dvh;
  overflow: hidden;
}

/* =====================================================================
   VENSTRE SIDEMENY — den ENESTE menyen.
   Ovenfra og ned: logo → kategorivelger → modus (O/F/H) →
   grupper (Verktøy/Rapporter/Personal) → søkelinje (åpner ⌘K) →
   natt-knapp + «Om Vitin» nederst.
   Låst (fast) — ruller internt bare hvis innholdet blir for høyt.
   ===================================================================== */
.vsh-side {
  box-sizing: border-box; /* 06.09: content-box ga 56+12+1 = 69 px skinne i en 64 px kolonne — den lå oppå innholdet */
  position: relative;
  z-index: 60;
  border-right: 1px solid var(--line);
  background: var(--menu-bg);
  padding: 18px 12px 14px;
  display: flex;
  flex-direction: column;
  min-height: 0;
  width: 232px;
  overflow-x: hidden;
  overflow-y: auto;
  box-shadow:var(--sh-2);
  transition: width 200ms cubic-bezier(.2,.8,.2,1), box-shadow 200ms;
}
/* JS-styrt kollaps-klasse — settes etter 300ms+ delay sa det ikke hopper
   nar musen flyttes til fly-out (FLYOUT_OPEN_DELAY=90ms). */
.vsh-side.is-collapsed {
  width: 56px;            /* 64 → 56 (Kenneth 06.09: «gjør menyen mindre, men det må være luft») */
  padding: 18px 6px 14px;
  /* Tillat scroll i kollaps så 3. kategori (Personal) + verktøy/rapporter aldri
     klippes vekk når ikonene stables vertikalt (Kenneth 21.06: «Personal forsvinner»). */
  overflow-y: auto;
  scrollbar-width: none;
  box-shadow: none;
}
.vsh-side.is-collapsed::-webkit-scrollbar { display: none; }

/* AKSENTLINJA ER SLETTET (26.08.2026). Her sto en 2 px loddrett gradient i
   --brand langs hele hoeyrekanten av skinna, synlig i kollaps-modus.

   Kenneth 01.06.2026, staaende regel: «INGEN DEKORATIVE AKSENTLINJER — FJERN
   DEM, ALDRI OMFARG. De skal VEKK.» Riktig behandling er aa slette linja, ikke
   aa gi den en annen farge. Han gjentok det 28.08 om nettopp denne: «Vekk med
   aksentlinja.»

   Skinna skiller seg fra lerretet paa TONE — hvit mot #EDEBEF, 1,184:1 — og
   paa den noeytrale 1 px border-right. Den trenger ingen farget strek for aa
   vise hvor den slutter. */

/* ============ KOLLAPSET MODUS — skjul tekst, vis kun ikoner ============ */
.vsh-side.is-collapsed .vsh-brand-word,
.vsh-side.is-collapsed .vsh-side-eye,
.vsh-side.is-collapsed .vsh-num,
.vsh-side.is-collapsed .vsh-soon,
.vsh-side.is-collapsed .vsh-acc-btn > span:not(.vsh-ico),
.vsh-side.is-collapsed .vsh-acc-liste,
.vsh-side.is-collapsed .vsh-group-caret,
.vsh-side.is-collapsed .vsh-search-label,
.vsh-side.is-collapsed .vsh-search-kbd,
.vsh-side.is-collapsed .vsh-theme,
.vsh-side.is-collapsed .vsh-about,
.vsh-side.is-collapsed .vsh-radgiver-hjem > span:not(.vsh-ico),
.vsh-side.is-collapsed .vsh-radgiver-pil,
.vsh-side.is-collapsed .vsh-foot-eye {
  display: none;
}
/* Rådgiver-hjem i kollaps: kun ikonet, sentrert som resten */
/* Sammenslått: samme høyde som menyknappene ved siden av (32 px), ikke 52 —
   polstringa her la seg TIL min-height i grunnregelen (21.09.2026). */
.vsh-side.is-collapsed .vsh-radgiver-hjem { justify-content: center; padding: 0; gap: 0; }
/* vsh-cat-btn har label som DIRECT TEXT-node — font-size:0 skjuler den,
   ikon-span far font-size restored. */


/* Kollapset: kompakter padding og sentrer ikoner */
.vsh-side.is-collapsed .vsh-brand { justify-content: center; padding: 0 0 14px; }


.vsh-side.is-collapsed .vsh-search{ justify-content: center; padding: 10px 0; }
.vsh-side.is-collapsed .vsh-side-foot { align-items: center; }

/* ---- logo ---- */
.vsh-brand {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 0 8px 14px;
  flex: none;
}
.vsh-brand-mark {
  width: 26px;
  height: 26px;
  flex: none;
}
.vsh-brand-mark svg {
  width: 100%;
  height: 100%;
  display: block;
}
.vsh-brand-word {
  font: 600 var(--fs-17) var(--font-display);
  letter-spacing: -.02em;
  color: var(--ink);
}

/* ---- kategorivelger — segmentert bryter, over modus ---- */






/* ---- liten øyebryn over modus-lenkene ---- */
.vsh-side-eye {
  padding: 0 8px 9px;
  font: 600 var(--fs-2xs) var(--font-mono);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-4);
  flex: none;
}

/* ---- modus-lenker: Oversikt / Forstå / Handle ---- */










/* ---- de tre gruppene: Verktøy / Rapporter / Personal ----
   Tynt skille over gruppene. Hver gruppe-knapp åpner sin egen
   utfellende meny (fly-out) på hover/fokus — se .vsh-flyout. */




/* Aktiv side i gruppen (Kenneth 21.06): markér gruppen man er inne i —
   brand-2 tekst + tonet flate, holder selv når flyouten lukkes. */



/* liten, diskret chevron — peker mot fly-out-en. Eksplisitt størrelse
   så den aldri faller tilbake til SVG-ens replaced-standardmål. */




/* ---- søkelinje — ÉN inngang til søk, åpner ⌘K-overlayet ----
   Vitin har ett søk: ⌘K-søket. Denne linja er inngangspunktet —
   klikk eller tastaturfokus + Enter åpner ⌘K-søkeoverlayet over hele
   Vitin. Linja bygges på Vitins kort-stil: surface-flate, 1px
   --line-ramme, søkeikon og en invitasjon til å søke, med en diskret
   ⌘K-merkelapp. Ingen aksent-stripe. */
.vsh-search {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  margin-top: 12px;
  flex: none;
  padding: 10px 11px;
  border: 1px solid var(--ramme-1);
  border-radius: var(--boks-radius);
  background: var(--menu-kontroll);
  cursor: pointer;
  text-align: left;
  transition: border-color 150ms, background 150ms;
  min-height:var(--knapp-h,44px); /* slått sammen 04.09 */
}
.vsh-search:hover,
.vsh-search:focus-visible {
  border-color: var(--brand-line);
  background: var(--surface-2);
}
.vsh-search > svg {
  width: 15px;
  height: 15px;
  flex: none;
  color: var(--ink-4);
}
.vsh-search:hover > svg,
.vsh-search:focus-visible > svg {
  color: var(--brand-2);
}
.vsh-search-label {
  flex: 1;
  min-width: 0;
  font: 500 var(--fs-12-5) var(--font-body);
  color: var(--ink-4);
}
.vsh-search:hover .vsh-search-label,
.vsh-search:focus-visible .vsh-search-label {
  color: var(--ink-3);
}
/* diskret ⌘K-merkelapp på søkelinja */
.vsh-search-kbd {
  flex: none;
}

/* ---- elastisk mellomrom skyver foten ned ---- */
.vsh-side-spacer {
  flex: 1;
  min-height: 14px;
}

/* ---- fot: natt-knapp, «Om Vitin» ---- */
.vsh-side-foot {
  flex: none;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--line-soft);
  display: flex;
  flex-direction: column;
  gap: 7px;
}

/* foot-rad: natt-knapp */

/* Natt-knapp */

/* ⌘K-merkelapp — brukes på søkelinja og i ⌘K-overlayet */
.vsh-kbd {
  font: 600 var(--fs-2xs) var(--font-mono);
  border: 1px solid var(--line);
  border-radius: var(--felt-radius);
  padding: 1px 5px;
  color: var(--ink-3);
  /* tving tekst-presentasjon — ⌘ skal ikke rendres som farget emoji */
  font-variant-emoji: text;
}

/* diskret «Om Vitin»-lenke */

/* =====================================================================
   SCENE — holder sidens eksisterende innhold.
   Scenen fyller HELE bredden til høyre for sidemenyen — ingen topplinje
   over, ingen rail til høyre. Scenen er den ENESTE flaten som ruller;
   sidemenyen står fast.
   ===================================================================== */


/* =====================================================================
   GRUPPE-FLY-OUT — utfellende meny ved siden av sidemeny-ikonet.
   Åpnes på hover/fokus av en gruppe-knapp (Verktøy/Rapporter/Personal).
   Viser KUN den gruppens punkter. En usynlig «bro» dekker gapet mellom
   ikonet og menyen så musa ikke mister hover (hover-intent).
   ===================================================================== */


/* usynlig bro fra sidemenyen til menykortet — hindrer hover-flimmer */








/* ANDRE NIVÅ I MENYEN (flyout: Verktøy, Rapporter, Personal) hadde sitt
   eget hover-språk: --surface-2 med ramme på raden, og ikonet flippet til
   HELDEKKENDE brand med hvit strek. Menyen fikk dermed én farge på første
   trykk og en annen på steget etter (Kenneth 07.08). Samme hover som
   resten av navigasjonen nå — nivå 3 i flatehierarkiet — og ikonet
   beholder sin egen tone i stedet for å bytte språk. */








/* =====================================================================
   ⌘K KOMMANDOFLATE — søk over hele Vitin
   ===================================================================== */
.vsh-scrim {
  position: fixed;
  inset: 0;
  background: rgba(8, 6, 5, .5);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 180ms;
  /* Over Vitin-boblen/-vinduet (9400/9401) — søket er et modal-lag og skal
     aldri ligge bak chatten. Under side-vakten (9500). */
  z-index: 9420;
}
.vsh-scrim.on {
  opacity: 1;
  pointer-events: auto;
}
.vsh-cmd {
  position: fixed;
  z-index: 9421;
  top: 12vh;
  left: 50%;
  width: min(560px, 92vw);
  transform: translateX(-50%) scale(.97);
  opacity: 0;
  pointer-events: none;
  transition: opacity 180ms, transform 220ms cubic-bezier(.16, 1, .3, 1);
}
.vsh-cmd.on {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(-50%) scale(1);
}
.vsh-cmd-field {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 15px 18px;
  background: var(--surface);
  border: 1px solid var(--brand-line);
  border-radius: var(--boks-radius);
  box-shadow:var(--sh-2);
}
.vsh-cmd-field > svg {
  width: 19px;
  height: 19px;
  color: var(--ink-4);
  flex: none;
}
.vsh-cmd-field input {
  flex: 1;
  border: none;
  background: transparent;
  outline: none;
  min-height: 24px; /* WCAG 2.2 SC 2.5.8 målstørrelse — målt 22px 24.08 */
  font: 500 var(--fs-15-5) var(--font-body);
  color: var(--ink);
  letter-spacing: -.01em;
}
.vsh-cmd-field input::placeholder {
  color: var(--ink-4);
}
.vsh-cmd-list {
  margin-top: 8px;
  max-height: 56vh;
  overflow-y: auto;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--boks-radius);
  box-shadow:var(--sh-2);
}
.vsh-cmd-group {
  padding: 11px 16px 5px;
  font: 600 var(--fs-2xs) var(--font-mono);
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--ink-4);
}
.vsh-cmd-item {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 9px 16px;
  border: none;
  background: transparent;
  cursor: pointer;
  text-decoration: none;
  text-align: left;
}
.vsh-cmd-item:hover,
.vsh-cmd-item.cursor {
  background: var(--surface-2);
}
/* Markoert rad i kommandopaletten: FLATE, aldri en brand-kantstripe
   (18.08). Flata staar alt i regelen over — her holder vekta. */
.vsh-cmd-item.cursor {
  font-weight: 600;
}
.vsh-cmd-ico {
  width: 30px;
  height: 30px;
  flex: none;
  display: grid;
  place-items: center;
  border-radius: var(--knapp-radius);
  background: var(--surface-2);
  color: var(--ink-3);
}
.vsh-cmd-item:hover .vsh-cmd-ico,
.vsh-cmd-item.cursor .vsh-cmd-ico {
  background: var(--brand);
  color: var(--on-brand);
}
.vsh-cmd-ico svg {
  width: 15px;
  height: 15px;
}
.vsh-cmd-txt {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
  flex: 1;
}
.vsh-cmd-name {
  font: 600 var(--fs-sm) var(--font-display);
  color: var(--ink);
}
.vsh-cmd-name b {
  color: var(--brand-2);
  font-weight: 700;
}
.vsh-cmd-path {
  font: 500 var(--fs-11) var(--font-mono);
  color: var(--ink-4);
  letter-spacing: .02em;
}
.vsh-cmd-kind {
  font: 600 var(--fs-2xs) var(--font-mono);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-4);
  border: 1px solid var(--line);
  border-radius: var(--felt-radius);
  padding: 2px 5px;
  flex: none;
}
.vsh-cmd-empty {
  padding: 20px 16px;
  font-size: var(--fs-13);
  color: var(--ink-4);
}
/* snarvei-linja nederst i ⌘K — viser tastene tydelig. Eget kort, samme
   komposisjon som felt + liste (surface + line + radius). */
.vsh-cmd-foot {
  display: flex; align-items: center; gap: 16px;
  margin-top: 8px;
  padding: 9px 16px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--boks-radius);
  box-shadow: var(--sh-2);
  font: 500 var(--fs-11-5) var(--font-body);
  color: var(--ink-3);
}
.vsh-cmd-foot > span { display: inline-flex; align-items: center; gap: 5px; }
.vsh-cmd-foot-h { margin-left: auto; }
@media (max-width: 640px) { .vsh-cmd-foot-h { display: none; } }

/* =====================================================================
   RESPONSIVT — sidemeny legges over scenen på smale skjermer
   ===================================================================== */
/* ===== MOBIL: hamburger åpner sidemenyen som drawer ===== */
.vsh-burger {
  display: none; position: fixed; top: 11px; left: 11px; z-index: 210;
  width: 42px; height: 42px; padding: 0; border-radius: var(--boks-radius);
  background: var(--menu-kontroll); border: 1px solid var(--ramme-1); color: var(--ink);
  align-items: center; justify-content: center; cursor: pointer;
  box-shadow:var(--sh-1);
}
.vsh-burger svg { width: 20px; height: 20px; }
.vsh-backdrop {
  position: fixed; inset: 0; background: rgba(0,0,0,.40);
  opacity: 0; visibility: hidden; transition: opacity .22s, visibility .22s; z-index: 190;
}
/* Lukk-knapp (nivå 0) + Tilbake-knapp (nivå 1) — kun mobil, skjult på desktop */
.vsh-side-close {
  display: none; position: absolute; top: 12px; right: 12px; z-index: 5;
  width: 40px; height: 40px; padding: 0; border-radius: var(--boks-radius);
  background: var(--menu-kontroll); border: 1px solid var(--ramme-1); color: var(--ink);
  align-items: center; justify-content: center; cursor: pointer;
}
.vsh-side-close svg { width: 20px; height: 20px; }



@media (max-width: 920px) {
  /* La HELE dokumentet rulle som én flate. Det gir to ting:
     1) nettleserens native pull-to-refresh virker (krever at roten ruller,
        ikke en indre container), 2) ingenting kan rulle sidelengs. */
  html { overflow: visible; overflow-x: hidden; }
  body { overflow-x: hidden; max-width: 100vw; }
  .vsh {
    grid-template-columns: 1fr;
    height: auto;
    min-height: 100dvh;
    overflow: visible;
  }
  .vsh-scene {
    overflow-x: hidden;
    overflow-y: visible;
    min-height: 0;
  }
  /* lås bakgrunnsrulling mens menyen er åpen */
  body.vsh-nav-open { overflow: hidden; }

  /* ===== NIVÅ 0: sidemeny som fullskjerm-drawer ===== */
  .vsh-side {
    position: fixed; top: 0; left: 0; bottom: 0;
    width: 100%; max-width: 100%;
    flex-direction: column;
    transform: translateX(-100%);
    transition: transform .24s cubic-bezier(.2,.8,.2,1);
    z-index: 200; overflow-y: auto;
    border-right: 0;
    padding: 18px 16px 24px;
    box-shadow: none;
  }
  body.vsh-nav-open .vsh-side { transform: translateX(0); }
  .vsh-burger { display: flex; }
  /* Lukk-knappen erstatter hamburgeren mens menyen er åpen */
  body.vsh-nav-open .vsh-burger { display: none; }
  /* «?» ligger fast øverst til høyre (z 900) og dekket lukkekrysset i den
     åpne skuffen (Kenneth 22.08: «alltid i veien for x»). Menyen åpen =
     hjelpen viker; den er tilbake i det skuffen lukkes. */
  body.vsh-nav-open .vsh-hjelp { display: none; }
  .vsh-side-close { display: flex; }
  /* Kategori-velger (Økonomi/Lager/Personal) → vertikal liste i draweren (>2 valg = liste, ikke kolonne-rad) */
  
  
  /* JS holder draweren ekspandert på mobil; skjul kollaps-indikatoren */
  .vsh-side::after { display: none; }
  /* gi brand-raden plass til lukk-knappen */
  .vsh-brand { padding-right: 48px; }

  /* ===== NIVÅ 1: gruppe-meny som fullskjerm-panel som glir inn fra høyre =====
     Ekte mobil-drilldown — ikke web-fly-out. «Tilbake» i headeren går til nivå 0. */
  
  
  
  
  
  /* tittel/merke vises fortsatt, men tilbake-knappen leder an */
  
  
}

@media (max-width: 920px) and (orientation: portrait) {
  /* gi modul-innholdet litt luft i toppen så hamburgeren ikke dekker noe */
  .vsh-scene, main { scroll-padding-top: 56px; }
}

@media (max-width: 560px) {
}

/* respekterer redusert bevegelse */
@media (prefers-reduced-motion: reduce) {
  .vsh-cmd,
.vsh-scrim,
.vsh-search{
    transition-duration: 1ms;
  }
}

/* =====================================================================
   SKJUL SIDENS EGEN FLYTENDE LAUNCHER-PILLE
   ---------------------------------------------------------------------
   Enkelte app-sider har en innebygd flytende launcher (.svb-launcher)
   nederst til høyre. Den er overflødig — søk og Vitin-boten ligger
   begge i sidemenyen. Skallet skjuler den uten å røre sideinnholdet.
   ===================================================================== */
.vsh-scene .svb-launcher {
  display: none;
}

/* =====================================================================
   DEMO-KONTROLL — rolle + bedrift KOMBINERT i menyens fot (Kenneth 07.07:
   «lag en knapp sammen med 'Du ser Vitin som' og kombiner de en annen
   plass — de ligger i veien»). Ingen linje over innholdet, ingen reservert
   høyde. Kun synlig for testbruker. Injiseres av vit-shell.js.
   ===================================================================== */
/* BARE MERKET (Kenneth 21.09.2026: «Det holder med «Demo» og det brandfarga ikonet.
   Den store pillen rundt kan du fjerne»). Boksen rammet inn et panel som ikke
   finnes lenger — da er den en ramme rundt ingenting. */
.vsh-demo-kontroll{margin:8px 10px;padding:0;border:0;background:none;display:flex;flex-direction:column;gap:8px;font-family:var(--font-body);min-width:0}
.vsh-side.is-collapsed .vsh-demo-kontroll{margin:8px 0;padding:4px 0;border:0;background:none;align-items:center} /* 56 px skinne (06.09): rammen fikk ikke plass */
.vsh-side.is-collapsed .vsh-demo-tag{padding:3px 5px;letter-spacing:.06em}
.vsh-side.is-collapsed .vsh-demo-kontroll > :not(.vsh-demo-hode){display:none}
.vsh-side.is-collapsed .vsh-demo-skjul{display:none}
.vsh-demo-hode{display:flex;align-items:center;justify-content:space-between;gap:8px}
.vsh-demo-tag{font:700 var(--fs-2xs) var(--font-mono);letter-spacing:.12em;color:var(--on-brand);background:var(--brand);padding:3px 8px;border-radius:var(--felt-radius);align-self:flex-start}
.vsh-demo-skjul{font:600 var(--fs-2xs) var(--font-mono);letter-spacing:.06em;color:var(--stone);background:none;border:0;padding:2px 4px;cursor:pointer;border-radius:var(--felt-radius)}
.vsh-demo-skjul:hover{color:var(--ink);background:var(--surface)}
.vsh-demo-hvorfor{font:400 var(--fs-11)/1.5 var(--font-body);color:var(--ink-3);margin:0}
.vsh-demo-felt{display:flex;flex-direction:column;gap:3px;font:600 var(--fs-2xs) var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--stone)}
.vsh-demo-select{font:600 var(--fs-12-5) var(--font-body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--knapp-radius);padding:6px 9px;cursor:pointer;width:100%;min-width:0}
.vsh-demo-forklaring{font:400 var(--fs-11)/1.5 var(--font-body);color:var(--olive)}
/* Skjult tilstand: bare gjenopprettings-chippen står igjen, uten boks. */
.vsh-demo-vis{display:none;font:700 var(--fs-2xs) var(--font-mono);letter-spacing:.08em;color:var(--on-brand);background:var(--brand);border:0;border-radius:var(--knapp-radius);padding:6px 10px;cursor:pointer;align-self:flex-start}
.vsh-demo-kontroll.er-skjult{border:0;background:none;padding:0}
.vsh-demo-kontroll.er-skjult > :not(.vsh-demo-vis){display:none}
.vsh-demo-kontroll.er-skjult .vsh-demo-vis{display:inline-flex}

/* Side-vakt: rollen har ikke tilgang til denne flaten */
.vsh-demo-sperre {
  position: fixed;
  inset: 0;
  z-index: 9500;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  /* HELT dekkende + token-canvas (Kenneth 24.07): den gamle 94 %-gjennomskinnelige
     DØDE cream-fargen (#fef9f7) lot halvrendret innhold skimte gjennom — «hvit
     linje»-artefakten på sykefravær for gated rolle. */
  background: var(--canvas);
}
.vsh-demo-sperre-kort {
  max-width: 440px;
  text-align: center;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--boks-radius);
  padding: 34px 38px;
  box-shadow:var(--sh-2);
}
.vsh-demo-sperre-tag {
  font-family: var(--font-mono);
  font-size: var(--fs-2xs);
  font-weight: 700;
  letter-spacing: 0.14em;
  color: var(--brand);
  margin-bottom: 12px;
}
.vsh-demo-sperre-kort h2 {
  font-family: var(--font-display);
  font-size: var(--fs-22);
  font-weight: 600;
  letter-spacing: -0.02em;
  margin: 0 0 12px;
  color: var(--ink);
}
.vsh-demo-sperre-kort p {
  font-size: var(--fs-14-5);
  line-height: 1.6;
  color: var(--ink-3);
  margin: 0 0 12px;
}
.vsh-demo-sperre-hva {
  background: var(--surface-2);
  border-radius: var(--knapp-radius);
  padding: 12px 14px;
  font-size: var(--fs-sm);
  color: var(--ink-2);
  margin: 4px 0 18px;
  text-align: left;
}
.vsh-demo-sperre-cta {
  display: inline-block;
  background: var(--brand);
  color: var(--on-brand);
  text-decoration: none;
  font-family: var(--font-body);
  font-size: var(--fs-14);
  font-weight: 600;
  padding: 11px 20px;
  border-radius: var(--boks-radius);
  margin-bottom: 14px;
}
.vsh-demo-sperre-cta:hover { background: var(--brand-hover); }
.vsh-demo-sperre-hint {
  font-size: var(--fs-12-5);
  color: var(--ink-4);
  margin-bottom: 0;
}

/* Forhåndsvisning-banner — ekte kunde på en modul uten live-data ennå.
   Sikrer at demodata aldri forveksles med kundens egne tall. */
.vsh-preview-banner {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 9400;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 18px;
  background: var(--surface-2);
  border-bottom: 1px solid var(--line);
  font-family: var(--font-body);
  font-size: var(--fs-12-5);
  color: var(--ink-2);
}
.vsh-preview-dot {
  flex: none;
  width: 8px;
  height: 8px;
  border-radius: var(--r-sirkel);
  background: var(--brand);
}
body.vsh-has-preview-banner {
  padding-top: 38px;
}

/* ===================================================================
   TRAFIKKLYS KUN PÅ TALL (Kenneth 2026-05-30)
   Faktiske opp/ned-TALL og deltaer: grønn=positiv, rød=negativ, grå=uendret.
   Resten av appen beholder én-oransje-aksent (brandguide §02 for kort/tagger/pills).
   Kommer ETTER brand-override-blokka så disse vinner for tall-elementene.
   =================================================================== */
/* DELT ventetilstand: sider som venter på regnskapet viser denne — ALDRI
   illustrasjons-/demotall som første bilde (Kenneth 07.07: dobbelt-tegning). */
/* «Hva pengene gikk til» — delt konto-nedbrytning (VIT_UTLEGG). Minus = − + dus søyle. */
.ul{display:flex;flex-direction:column;gap:7px;margin:2px 0 8px}
.ulrow{display:grid;grid-template-columns:1fr 78px auto;align-items:center;gap:10px}
.uln{font-size:var(--fs-12-5);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ulrow.rest .uln{color:var(--olive);font-style:italic}
.ulbar{height:7px;border-radius:var(--felt-radius);background:var(--surface-2);overflow:hidden}
.ulbar i{display:block;height:100%;border-radius:var(--felt-radius);background:var(--chart-start);transition:width .55s cubic-bezier(.16,1,.3,1)}
.ulrow.rest .ulbar i{background:var(--stone)}
.ulrow.neg .ulbar i{background:var(--line);border:1px solid var(--stone)}
.ulv{font-size:var(--fs-12-5);color:var(--ink);text-align:right;font-variant-numeric:tabular-nums}
.ulsrc{font-size:var(--fs-11);color:var(--stone)}.ulsrc b{color:var(--olive);font-weight:600}
.vit-aar-velger{display:inline-flex;align-items:center;gap:8px;font:600 var(--fs-2xs) var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--stone)}
.vit-aar-velger select{font:600 var(--fs-12-5) var(--font-body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--knapp-radius);padding:5px 9px;cursor:pointer}
.vit-aar-velger b{font:700 var(--fs-13) var(--font-display);color:var(--ink);letter-spacing:0}
.vit-aar-velger .vaa-etter{font:400 var(--fs-11) var(--font-body);letter-spacing:0;text-transform:none;color:var(--olive)}

/* graf-tooltip: overskriften i KRAKEN-lilla — ÉN regel for ALLE grafer (Kenneth 07.07) */
.vt-h{display:block;font-weight:700;color:var(--brand-2);margin-bottom:2px}
/* fallback for sider som ennå ikke bruker .vt-h: første <b> i en graf-tooltip
   ER overskriften — samme KRAKEN-regel, håndhevet via className fra skallet */
.vit-tip > b:first-child{display:block;color:var(--brand-2);margin-bottom:2px}
/* Tooltipen ligger OPPÅ alt, også læremargen (Kenneth 03.09). position:fixed gjelder BARE den faste boksen på body
   (.vit-tip-fast): nivos egen boks måles av nivo i flyten, og en fixed boks måler 0 bredde — da holdt nivo den på opacity 0,
   og ingen graf hadde infoboks fra 04.09 til 06.09 (Kenneth: «Ingen tooltip»). */
.vit-tip{z-index:2147483000}
.vit-tip-fast{position:fixed}

/* Mønster-basert: enhver delta-/endrings-beholder (delta, dlt, change, endring,
   trend, drill-kpi-val) som også har .up/.pos får grønn, .dn/.down/.neg får rød,
   .flat får grå. Nye delta-klasser arver automatisk — ingen manuell liste. */
[class*="delta"].up,  [class*="delta"].pos,
[class*="dlt"].up,    [class*="dlt"].pos,
[class*="change"].up, [class*="endring"].up,
[class*="trend"].up,  .drill-kpi-val.up { color: var(--up) !important; }

[class*="delta"].dn,  [class*="delta"].down, [class*="delta"].neg,
[class*="dlt"].dn,    [class*="dlt"].down,
[class*="change"].dn, [class*="change"].down, [class*="endring"].dn,
[class*="trend"].dn,  .drill-kpi-val.dn { color: var(--dn) !important; }

[class*="delta"].flat, [class*="dlt"].flat, [class*="change"].flat,
[class*="trend"].flat { color: var(--ink-3) !important; }

/* ===== NY STANDARD (10.06): meny-flate + kategori-velger — gjelder ALLE sider ===== */


/* Rådgiver-hjem: «← Mine kunder» øverst i menyen, kun i rådgiver-modus (07.07).
   Utheving = bg-tint + hel hårlinje-ramme (aldri aksentstripe). */
/* «MINE KUNDER» HADDE SIN EGEN FORM (Kenneth 21.09.2026: «ser ut som en stor
   såpeboble nå»). Målt mot naboen «Oversikt» i samme skinne:

     høyde × bredde   50×207   mot   32×178
     radius           16px     mot   9999px
     skrift           600 Poppins mot 500 Roboto

   Fire mål ut av takt på én knapp — og med markoeren over den fylte
   :hover den med --brand-tint (brand på 30 %), så den ble en solid lilla
   lozenge blant gjennomsiktige piller. Den arver nå naboens mål, radius,
   skrift og hover-flate; brandfargen og hairline-ramma står igjen, for det
   ER en annen slags handling — ut av kundens Vitin og hjem til porteføljen.
   Utheving i huset er bakgrunns-tint + hel hårlinje, aldri en egen størrelse. */
.vsh-radgiver-hjem{display:flex;align-items:center;gap:9px;margin:0 0 12px;padding:0 12px;
  min-height:var(--valg-h-2);border-radius:var(--knapp-radius);background:none;color:var(--brand);
  font:500 var(--fs-12-5) var(--font-body);text-decoration:none;transition:background .14s}
/* Hover = skinnas egen flate, ikke lilla fyll (flat-vakta 21.09: lilla fyll er
   forbeholdt fagord og primærknapper). Samme verdi som .vsh-acc-item:hover. */
.vsh-radgiver-hjem:hover{background:var(--flate-3)}
.vsh-radgiver-hjem .vsh-ico{display:inline-flex;width:16px;height:16px}
.vsh-radgiver-hjem .vsh-ico svg{width:16px;height:16px}
.vsh-radgiver-hjem .vsh-radgiver-pil{margin-left:auto;font:700 var(--fs-14) var(--font-mono);color:var(--brand-2)}

/* ===== ARV-STANDARD (10.06): meny-regler eies HER — aldri i sidene ===== */
/* REVERSERT 6. juli 2026 (Kenneth): «Verktøylinjen må inn igjen på venstre.»
   Verktøy-gruppa vises i venstremenyen på ALLE sider; margen er ren læremarg.
   Sider skal IKKE lenger skjule gruppa lokalt. */


/* =====================================================================
   MODUL-LAYOUT — DELT STRUKTURTOKEN (Kenneth 17.06: «alt standard = token,
   også UX/marg/struktur»). Avledet fra forsta.html (fasit). Modul-sider
   (Oversikt/Forstå/Handle + verktøy som Del Vitin) bruker dette i stedet for
   å re-definere lokalt. Markup:
     <div class="app"><main>…</main><aside class="learn">…læremarg…</aside></div>
   Sider som fortsatt har egne .app/.learn lokalt overstyrer dette (kaskade),
   så å legge det her bryter ingenting — de migreres inkrementelt.
   ===================================================================== */
/* Læremargen er FAST bredde (Kenneth 07.07: «FAST, ikke justerbar, i ALLE flater»).
   Hovedscenen tar resten (minmax(0,1fr)); margen er alltid samme px uansett vindus-
   bredde — teksten henger sammen likt overalt. Settes KUN her; sider arver, ingen
   lokal .app-overstyring. Mobil stacker (media-query under). */
/* LAYOUT-KONTRAKTEN EIES HER (12.08.2026).
   Målt samme dag: 39 av 39 sider overstyrte skallets egne selektorer, og
   `.app` var definert 13 steder. Da finnes det ikke et globalt UI — hver
   «global» endring blir 39 endringer, og den man glemmer oppfører seg
   annerledes. Det var nettopp `.app{height:100dvh}` kopiert rundt som klippet
   bort innhold på ni sider.
   Høyde, overflow og posisjon på html/body/.app/.atmos står ÉN gang: her.
   scripts/skall-vakt.mjs holder det slik. */
/* position/z-index hører til kontrakten: .atmos ligger på z-index 0, og
   innholdet skal alltid ligge over. Budsjett hadde det lokalt; da det ble
   flyttet ut, måtte skallet overta det — ellers arver en side stablingen
   fra tilfeldig DOM-rekkefølge. */
.app{display:grid;min-height:100dvh;min-width:0;position:relative;z-index:1;
  font-feature-settings:"zero" 0;font-variant-numeric:lining-nums; /* slått sammen 04.09 */;
  grid-template-columns:minmax(0,1fr) var(--learn-w,500px)!important; /* slått sammen 04.09 */
}
/* Bakgrunnslaget — plassering OG gradient (13.08). Kommentaren under sa at
   «gradienten er sidas egen», men målt var den identisk i alle fem sidene som
   hadde den: budsjett, index, lager, resultat, verdivurdering. Fem kopier av
   samme verdi er ikke sidas eget uttrykk, det er en kopi ingen kan endre ett
   sted. Nå står den her; sidene arver. Vil en side ha noe annet, overstyrer
   den bevisst — og komponent-vakta melder fra om det. */
.atmos{
  position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(42vw 34vh at 100% -10%,color-mix(in srgb,var(--brand) 6%,transparent),transparent 60%);
}
/* 🔒 GLOBAL LOV (Kenneth 07.07): margen er ALLTID var(--learn-w) — FAST.
   !important slår både sidenes egne .app-klasser (lab-wide/tool-open/pnl-wide
   o.l.) OG inline gridTemplateColumns fra JS. Eneste unntak er mobil-
   stablingen i @media-regelen under (også !important, vinner på kildeorden).
   ALDRI lag en ny bredde-mekanisme — endre bredden KUN via --learn-w. */
/* INGEN LAEREMARG -> INGEN RESERVERT PLASS (30.08.2026). Kenneth tok margen
   av kontakt; da sto det igjen 500 px tomt graatt felt til hoegre, samme feil
   som «1 meter med luft på hver side» 26.08. Skallet skal ikke holde av plass
   til noe som ikke finnes. Regelen hoerer her, ikke per side: enhver flate
   uten .learn er én kolonne. */
/* NETTLESERENS EGEN 8-PIKSELS BODY-MARG (30.08.2026). Maalt: pengestrom
   startet paa x=96 mens de 28 andre sto paa 88, og hele forskjellen var at
   sida aldri nullstilte `body{margin:8px}`. De andre gjoer det i sine egne
   stilark — altsaa 38 kopier av samme nullstilling, og den ene som manglet
   flyttet flata. Den hoerer her, én gang. */


.app:not(:is(:has(.learn),.h-learn)){grid-template-columns:minmax(0,1fr)!important}


/* Responsiv margbredde (Kenneth 23.07: ved ~75 %/smalt, ikke-maksimert vindu klemte
   den faste 500px-margen main for hardt → innhold søler ut av boksene). LOV-LYDIG:
   endrer bredden KUN via --learn-w (scopet til .app), ingen ny bredde-mekanisme. Under
   920px stacker margen uansett (media-regel lenger ned). */
@media (max-width:1400px){ .app{--learn-w:420px} }
/* 340 PX ER FOR TRANGT (Kenneth 10.09.2026: «Laeremargen er fremdeles alt
   for kompakt … saa ser jeg 3 linjer av innholdet»).
   MAALT: margen kroep til 340 px mellom 1024 og 1150, og der brytes hver
   setning saa ofte at teksten blir en soeyle av ord. M3s adaptive layouts
   sier at en stoettespalte som ikke lenger kan lese sitt innhold, skal
   STABLES — ikke klemmes videre. 380 px er der linjene fortsatt baerer;
   under det stabler margen seg under innholdet (regelen finnes alt lenger
   nede), og da faar teksten hele bredden i stedet for en tredel. */
@media (max-width:1150px){ .app{--learn-w:380px} }
/* Under 1080 er hovedspalta selv blitt for smal til aa dele plassen: da
   stables margen HER i stedet for foerst paa 920, saa vi aldri har to
   spalter som begge er for trange. Ett bruddpunkt, ikke to halve. */
@media (max-width:1080px){
  .app{display:block!important}
  .app > aside.learn{width:auto!important;max-width:none!important;
    padding-left:0!important;margin-top:24px}
}
/* Sidemarg på ALLE kanter via token (Kenneth 22.07: luft rundt innholdet,
   aldri klint i hjørnet). VANNRETT er --vit-ramme og et vedtak — alle
   modulflater starter samme sted. LODDRETT var derimot avledet av samme tall
   (44 topp, 44+22=66 bunn) og ble overstyrt lokalt på ti flater med ni ulike
   verdier. Nå er de to retningene skilt: topp/bunn har egne tokens, sida har
   ingen. Ingen `main`-padding skal skrives i en side igjen (26.08). */
/* ÉN SAMMENHENGENDE FLATE DER DET ER DATA (29.08.2026).
   Kenneth: «det maa vaere canvas, uten mellomrom, alle plasser det er data.
   Det ser heilt idiot ut med det lilla midt mellom velgeren og overskriften.»

   MAALT i fire ekte dashbord (samme metode som graf-researchen 28.08 — lastet
   i nettleser, lest ut av DOM-en):
     Ant Design Pro   hvitt dekker 94 % av skjermen · kort radius 8 · luft 24
     shadcn           hvitt innhold paa 98 %-hvit side · radius 14 · luft 24
     MUI dashboard    #FCFCFC side, hvite kort · radius 8-12 · luft 16-18
     Carbon (lys)     #F4F4F4 side, hvitt innhold
   INGEN av dem maler sidefargen i striper mellom overskrift, velger og
   innhold. Innholdet er én flate; tonen ligger UTENFOR den.

   Hos oss malte main ingenting, saa lerretet lyste gjennom i hver glipe
   mellom blokkene. Tonen blir staaende der den hoerer hjemme — rundt
   kolonnen — mens alt som baerer data staar paa samme hvite flate. */
/* REGELEN HENGER I SKALLET, IKKE I ÉN FORELDERKLASSE (29.08.2026).
   MAALT: min-side har MAIN.ms-outer < DIV < .vsh-scene — altsaa IKKE inne i
   .app — og fikk derfor verken lerretet eller kolonnebredden. Sida sto med
   lilla mellom alle kortene og en kolonne paa 1366 px, mens Forstaa hadde
   hvitt og 866. Kenneth: «du maa gaa gjennom min side og, mye feil der».
   .vsh main naar hver side som bor i skallet, uansett hvordan den er
   pakket inn. */
/* OGSAA .page (30.08.2026). MAALT over 39 sider: 30 hadde hvit innholdsflate
   og 7 hadde gjennomsiktig — der slo lerretets lilla gjennom hele flata, og
   sida saa ut som en annen app. Aarsaken er at regelen bare traff <main>, og
   de sju bruker <div class="page">. Samme flate, ulikt element. */
/* INNHOLDSFLATA — ALLE VARIANTENE (30.08.2026). MAALT over 39 sider: 30 hadde
   hvit flate og 7 gjennomsiktig; der slo lerretets lilla gjennom hele sida, og
   flata saa ut som en annen app. Aarsaken er at regelen bare traff <main>,
   mens sidene i praksis bruker fire beholdere:
     .vsh > .vsh-scene > .page     brukeravtale, cookie-policy
     .dok-app > .dok-main > .page  dokumenter
     body > .page                  mine-kunder, kundeservice
     .skall > main.midten          saker
   Regelen er derfor STRUKTURELL: uansett hvilken av skallets beholdere som
   holder sida, er innholdsflata den samme. */
.app>main, .app>.page,
.vsh main, .vsh-scene>.page, .vsh-scene>.wrap,
.dok-app>.dok-main, .skall>main,
body>.page{min-width:0;overflow-y:auto;background:transparent; /* lerretet (--flate-0 på html) skal synes; boksene er hvite (03.09) */
  /* VENSTREJUSTERT, ALDRI SENTRERT (30.08.2026). Maalt paa alle 39 sidene:
     28 startet paa x=88 (skinne 64 + --vit-ramme 24), men sju dokumentsider
     hadde `max-width` + `margin:auto` paa selve flata og startet paa 221–400.
     Lesebredda er riktig — en avtaletekst skal ikke gaa over 1300 px — men
     den skal begrense HOEYRE kant, ikke flytte venstre. Vedtaket 11.08 er at
     alle modulflater starter samme sted. */
  /* `margin-inline:0 auto` slaar AV grid-strekket (auto-marg gjoer et
     grid-element shrink-to-fit): resultat krympet fra 866 til 684 px og
     etterlot et graatt hull mot laeremargen. Bare venstre kant skal laases. */
  margin-inline:0;
  padding:var(--luft-topp,32px) var(--vit-ramme,44px) var(--luft-bunn,56px)}

/* GLOBAL sidehode-mal (Kenneth 22.07: «stjel P&L, én global mal alle sider
   henter»). Stor, luftig, svart tittel som ALDRI ser trykkbar ut — ingen
   lenke-farge/understrek. Vinner over sidenes lokale .doc-head (høyere
   spesifisitet), så alle modulsider deler formatet. Selskapsnavn hører IKKE
   hjemme her — doc-right skal kun bære periode/kontekst. */
/* Streken under overskriften er FJERNET GLOBALT (Kenneth 03.08). */
.doc-head{padding-bottom:2px;margin-bottom:var(--luft-blokk);display:grid;grid-template-columns:1fr max-content;gap:20px;align-items:end}
/* Versalene settes av øyebryn-familien lenger nede (.doc-meta står i den),
   så en egen deklarasjon her var den samme verdien to ganger. */
.doc-head .doc-meta{font:600 var(--fs-2xs) var(--font-mono);letter-spacing:.14em;color:var(--stone);margin:0 0 var(--luft-blokk)}
/* SEKSJONS-ØYEBRYNET INN I MALEN (26.08.2026). .s-eye var lokal i BEGGE sidene
   som bruker den — forsta.html:42 og lager-forsta.html:39 — tegn for tegn
   identisk, eneste forskjell var spesifisiteten (.s-eye mot .story .s-eye).
   Fargen sto på --brand, ikke på --kort-overskrift som 22.08-vedtaket sier
   («ALLE overskrifter. Svart.»), og sperringen var 1,1px — en av bare tre
   px-baserte sperringer i hele public/, som ikke skalerer med skriften.
   Nå: samme sperring som doc-meta, og samme overskriftsfarge som resten. */
.s-eye{font:600 var(--fs-11) var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--brand-2);margin-bottom:6px} /* Sammenhengens øye: lilla (Kenneth 03.09) */
.doc-head h1{font:700 var(--fs-30)/1.12 var(--font-display);color:var(--ink);letter-spacing:-.03em;margin:0;cursor:default}
.doc-head .doc-right{text-align:right;font:500 var(--fs-11-5) var(--font-mono);color:var(--stone);line-height:1.7;align-self:end}
@media(max-width:560px){.doc-head{grid-template-columns:1fr}.doc-head .doc-right{text-align:left}}
/* Ren null — slå av slashed/dotted-zero-varianten globalt (Kenneth 22.07:
   «0 med strek» = ulovlig AI-slop). Arves til all tekst. */

/* LÆREMARGEN FØLGER MED (Kenneth 18.08: «læremargen slutter — den er ikke
   laget for lange tekster»).
   Feilen: .learn var height:100dvh med position:relative i et .app-rutenett
   som er min-height:100dvh inne i .vsh-scene (som scroller). Margen var altså
   nøyaktig ÉN skjerm høy og fulgte IKKE med når man rullet — den «sluttet»
   etter første skjerm, og en lang forklaring nedenfor kunne aldri leses.
   Kuren: sticky mot toppen av det rullende skallet + egen indre rulling.
   overscroll-behavior:contain stopper at rulling i margen river med seg sida
   når man når bunnen. Mobil-regelen lenger ned (position:fixed-skuff under
   700px, static under 920px) overstyrer dette bevisst. */
.learn{box-sizing:border-box; /* 06.09: content-box ga 100dvh + 40 px padding — KI-linja nederst ble klippet */
  border-left:1px solid var(--line);height:100dvh;max-height:100dvh;background:var(--surface);display:flex;flex-direction:column;min-width:0;position:sticky;top:0;align-self:start;overflow-y:auto;overscroll-behavior:contain;padding:20px 22px 20px 24px} /* lik luft mot boksene (03.09) */

/* ── DELT VITIN-BOT I MARGEN (Kenneth 23.07: «ÉN enhet i forskjellige fysiske
   former») — samme inline-bot på Forstå (økonomi) OG lager-Forstå. Motor deles
   via VitData.buildBotRegnskap/-Lager + /api/boten. ── */
.bm-hode{padding-bottom:12px;padding-right:44px;border-bottom:1px solid var(--line-soft);flex-shrink:0} /* 44 px til høyre: det faste «?»-merket sto oppå første linje (målt 05.09) */
.bm-hode-topp{display:flex;align-items:center;justify-content:space-between;gap:10px}
/* «Tøm chat» — NEDE ved chattefeltet og SYNLIG (Kenneth 23.07 #14: aldri svak
   grå/skjult — folk må se hvordan man tømmer). */
.bm-tom{flex:none;align-self:center;font:600 var(--fs-12-5) var(--font-body);color:var(--brand-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--knapp-radius);padding:9px 14px;cursor:pointer;transition:background .14s,border-color .14s}
.bm-tom:hover{background:var(--surface-2);border-color:var(--brand-line,var(--line-mid))}
.bm-eye{display:flex;align-items:center;gap:7px;font:600 var(--fs-2xs,10.5px) var(--font-mono);letter-spacing:1px;text-transform:uppercase;color:var(--brand)}
.bm-eye .pip{width:6px;height:6px;border-radius:var(--r-sirkel);background:var(--brand)}
.bm-hode .u{font-size:var(--fs-base,15px);color:var(--ink-2);margin-top:7px;line-height:1.55}
/* Stegene i Tilstandsrapporten, i laeremargen (15.09.2026, Kenneth: «Fjern venstre meny og legg inn i
   læremargen istedenfor med forklaringer»). Trykk ruller sida til steget. */
.learn .lsteg{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}
.learn .lsteg li{margin:0}
.learn .lsteg button{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:start;width:100%;text-align:left;border:0;background:none;cursor:pointer;font-family:inherit;padding:9px 10px;border-radius:var(--md-sys-shape-corner-large);color:inherit}
.learn .lsteg button:hover{background:var(--md-sys-color-surface-container)}
.learn .lsteg button[aria-current="true"]{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
.learn .lsteg .nr{width:24px;height:24px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);display:inline-grid;place-items:center;font:500 .75rem/1 var(--md-ref-typeface-plain)}
.learn .lsteg button[aria-current="true"] .nr{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}
.learn .lsteg b{display:block;font:500 .875rem/1.25rem var(--md-ref-typeface-plain)}
.learn .lsteg span.f{display:block;margin-top:2px;font:400 .75rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
.learn .lsteg button[aria-current="true"] span.f{color:inherit;opacity:.85}
.learn .lsteg li.tema{padding:14px 10px 4px;font:500 .6875rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant)}

/* RAD MED BOKS UNDER (15.09.2026) — husets form for «trykk, og les mer under»: raden beholder fargen
   sin, boksen folder seg ut i samme flate, og hjemmelen staar med lenke til Lovdata og lovgrunnlaget.
   Samme vedtak som paa budsjettboksene: fire runde hjoerner naar lukket, to naar aapen. */
/* KILDE: M3 ListTokens (androidx, lest 15.09.2026).
     ItemContainerColor         = Surface            — raden normalt
     ItemSelectedContainerColor = SecondaryContainer — den VALGTE RADEN, ikke hele blokka
     ItemLeadingSpace / ItemTrailingSpace = 16 dp
   Foerste forsoek farget HELE boksen inkludert broedteksten naar den ble aapnet. Det staar ingen
   steder; det var min egen overfoering av budsjettkortene (som ER kort) til en listerad. Rettet:
   tonen ligger paa raden, innholdet under staar paa flata. Og raden hadde null vannrett luft
   (maalt: padding «12px 0», ikon paa x=113 = boksens egen kant) — 16 px inn, som tokenet sier. */
main.x .radboks{border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-surface-container);overflow:hidden;transition:border-radius .4s cubic-bezier(.2,0,0,1)}
main.x .radboks + .radboks{margin-top:8px}
/* Inviter-raden i «Legg til ansatt» (19.09): haken og hinten inne i raden. */
main.x .ans-inviter{margin:12px 0 4px}
main.x .ans-inviter .radinni{padding:0 16px 12px}
main.x .ans-inviter-valg{display:flex;gap:9px;align-items:flex-start;font:400 .875rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
main.x .ans-inviter-valg input{width:18px;height:18px;margin-top:3px;accent-color:var(--md-sys-color-primary);flex:0 0 auto}
main.x .ans-inviter-hint{margin:8px 0 0}
/* Maalt hvilken regel som faktisk vant: «body[data-vit-modus="rekruttering"] main.x .liste .rad»
   med padding 12px 0. Den har attributtet foran, saa den slaar baade «main.x .radboks > .rad» og
   «main.x .liste .radboks > .rad». Derfor samme form her — ett attributt, fire klasser. */
body[data-vit-modus] main.x .liste .radboks > .rad{background:transparent;width:100%;padding:12px 16px}
main.x .radboks[data-aapen="true"]{border-radius:var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small)}
body[data-vit-modus] main.x .liste .radboks[data-aapen="true"] > .rad{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
main.x .radboks .h .ms{transition:transform .4s cubic-bezier(.2,0,0,1)}
main.x .radboks[data-aapen="true"] .h .ms{transform:rotate(180deg)}
main.x .radfold{display:grid;grid-template-rows:0fr;visibility:hidden;transition:grid-template-rows var(--md-sys-motion-spatial-default-duration,.49s) var(--md-sys-motion-spatial-default-easing,cubic-bezier(.2,0,0,1)),visibility 0s var(--md-sys-motion-spatial-default-duration,.49s)} /* SAMMENFOLDET = USYNLIG (nav-vakt 19.09): innholdet i en lukket rad beholdt posisjonen sin bak det som laa over, og lenken «Min side → Inviter bruker» kunne naas med tastatur og trykk uten aa synes */
main.x .radboks[data-aapen="true"] .radfold{grid-template-rows:1fr;visibility:visible;transition-delay:0s,0s}
main.x .radinni{overflow:hidden;min-height:0}
/* INNHOLDET I DEN ÅPNE RADEN (målt 15.09.2026, ikke gjettet).
   Klassen het .lovsvar i stilarket og .lovinni i markupen etter en omskriving — derfor sto ALT
   innholdet ustylet, klistret til boksekanten. Målt på siden: boksen starter på x=113, radens
   tittel på x=167. Innholdet skal stå under TEKSTEN, ikke under ikonet: 167 − 113 = 54 px inn.
   Tabellen ligger her oppå en farget flate, ikke på lerretet, så .tabellboks sitt eget kort
   slås av — ellers svever den som en hvit boks i en rosa boks. */
main.x .lovinni{padding:12px 16px 16px 70px;display:flex;flex-direction:column;gap:12px}
main.x .lovinni > p{margin:0}
main.x .lovinni .tabellboks{border-radius:0!important;background:transparent;margin:0}
main.x .lovinni .linjer th,main.x .lovinni .linjer td{padding-left:0}
main.x .lovinni .del{margin:2px 0 0;padding:0;border:0}
main.x .lovinni .fot{margin:0}

.bm-lopet{flex:1;min-height:0;overflow-y:auto;padding:14px 0;display:flex;flex-direction:column;gap:10px}
/* Meldinger fader inn med global marg-fade (--fade-marg) — ord skal aldri HOPPE
   frem; brukeren må få tid til å registrere (Kenneth 24.07). Deles av begge
   Forstå-sidene (økonomi + lager) og alle inline-boter. */
.bm-msg{display:flex;gap:9px;align-items:flex-start;animation:vlmInn var(--fade-marg,.5s) cubic-bezier(.2,.7,.2,1) both}
@media (prefers-reduced-motion:reduce){.bm-msg{animation:none}}
.bm-msg .bot-ikon{flex-shrink:0;width:26px;height:26px;border-radius:var(--r-sirkel);background:var(--brand);color:var(--on-brand);display:flex;align-items:center;justify-content:center;font:700 var(--fs-xs,12px) var(--font-display)}
/* BOBLA LESER BOBLE-TOKENENE (26.08) — se blokka i vit-tokens.css.
   Sto på --surface-2 → --flate-1 → hvit, altså bæreflatas egen farge.
   Selektoren dekker BEGGE chattene: marg-boten (.bm-msg .boble, brukt av
   Forstå, lager-Forstå, sykefravær og Spør-margen) og vitin-boten
   (.msg-bubble). Før dette hadde de to hver sin oppskrift for samme ting. */
.bm-msg .boble,
body .msg .msg-bubble,
body .msg.is-bot .msg-bubble{
  background:var(--boble-flate);border:1px solid var(--boble-ramme);
  border-radius:var(--boble-radius);padding:11px 14px;
  font-size:var(--fs-base,15px);line-height:1.55;color:var(--boble-farge);min-width:0;
}
.bm-msg .boble b,.msg-bubble b{color:var(--ink)}
.bm-msg .boble .kilde{display:block;margin-top:7px;font:500 var(--fs-xs,12px) var(--font-mono);color:var(--ink-2)}
.bm-msg.deg{justify-content:flex-end}
/* Din egen boble — samme kilde, motsatt kanal. body-prefikset løfter
   spesifisiteten over sidas egen .msg.is-user-regel, som lastes etter dette
   arket; uten det ville vitin-boten fortsatt hatt sin egen oppskrift. */
.bm-msg.deg .boble,
body .msg.is-user .msg-bubble{
  background:var(--boble-deg-flate);color:var(--boble-deg-farge);border-color:transparent;
}
.bm-chips{display:flex;flex-wrap:wrap;gap:6px;padding:2px 0 10px;flex-shrink:0} /* rad med piller, ikke kolonne med blokker (07.09) */
.bm-chips button{animation:vlmInn var(--fade-marg,.5s) cubic-bezier(.2,.7,.2,1) both}
@media (prefers-reduced-motion:reduce){.bm-chips button{animation:none}}
.bm-chip{text-align:left;font:500 var(--fs-13) var(--font-body);line-height:1.25;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--md-sys-shape-corner-full);padding:6px 12px;max-width:100%;cursor:pointer;transition:border-color .14s}
.bm-chip:hover{border-color:var(--brand-tint)}
.bm-felt{display:flex;gap:8px;padding:12px 0;border-top:1px solid var(--line-soft);flex-shrink:0}
/* SPOER-FELTET ER BEVISST EN PILLE (17.09.2026) — som M3s search bar, og som send-knappen
   ved siden av. Det sto --knapp-radius her, altsaa knappenes token. Da v2 satte
   --knapp-radius fra 9px til corner-full, ble feltet en pille uten at noen bestemte det.
   Formen er den samme som i dag; forskjellen er at den nå staar skrevet. Feltet er ett av
   fire som husregelen gjoer unntak for, saa denne verdien er levende. */
.bm-felt input{flex:1;min-width:0;font:500 var(--fs-base,15px) var(--font-body);color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--md-sys-shape-corner-full);padding:10px 13px;outline:none}
.bm-felt input:focus{border-color:var(--brand-tint)}
.bm-ki{padding-top:11px;font-size:var(--fs-2xs,10.5px);line-height:1.5;color:var(--ink-2);flex-shrink:0}
/* ---- q-faner: DELT fanevelger (Forstå, lager-Forstå, pengestrøm) ----
   ÉN kilde (Kenneth 23.07: «gjør alt globalt»). Hele spørsmålet er ALLTID
   synlig — ingen ellipsis, ingen sidelengs scroll (begge avvist av Kenneth
   27.07). Løsning: chip-group som BRYTER til flere jevne rader når bredden
   ikke strekker til («flex-wrap»), samme mønster som Google/GitHub-brikker.
   Hver rad er sentrert (justify-content:center) — det gjør en ufullstendig
   siste rad til et BEVISST utsnitt i stedet for en tilfeldig dinglende fane
   til venstre. Under 700px går baren over i vertikal liste (lesbar/tappbar
   på telefon) — det mønsteret besto fra tidligere. */
/* box-sizing eksplisitt: komponenten er width:100% + padding + border, og noen
   sider (f.eks. pengestrom.html) har ikke global border-box-reset — uten dette
   ble baren ~10px for bred = horisontal scroll (Kenneth 23.07). */
/* ==== GLOBAL PILLEMENY-STANDARD (Kenneth 03.08) — ETT modulsystem for alle
   valgrader i appen. Fasiten er «Usikker?»-pillen: frittstående piller på
   lerretet (ALDRI en felles boks rundt), radius 10, line-ramme, surface,
   brand-tekst. Hierarki (UI/UX-standard: 2–5 likestilte hovedvalg = synlig
   segment-rad, sekundære valg mindre — uxcel/Mobbin):
     nivå 1 (.q-faner / .vmeny)     = hovedvalg, øverste rad, STØRST
     nivå 2 (.vmeny.vmeny-2)        = underkategorier, mindre
     hjelpemiddel (.vpille-hjelp)   = spørsmål/hjelp — KUN den bærer pip-prikk
     ikon-knapp (.vpille-ikon)      = enkelthandlinger (f.eks. lås)
   Aktiv = 2px brand-ramme. Pip hører ALDRI hjemme på valg-piller. */
/* MERK (14.08): vannrett rulling ble prøvd her og REVERSERT samme dag.
   NN/g «Tabs, Used Right» sier korte etiketter skal brukes nettopp for å
   UNNGÅ vannrett rulling — rulling er problemet, ikke løsningen. NN/g
   «Left-Side Vertical Navigation» navngir dessuten begge utveiene jeg forsøkte
   som anti-mønstre: «excessively small font sizes, crowd items close to one
   another, or come up with unnaturally short category labels».

   Seks faner er forbi det en vannrett rad bærer. Riktig svar er vertikal
   navigasjon, som ifølge samme artikkel «removes the visual design constraints
   that limit the number of categories» — eksempelet deres holder 13. Det er
   en egen jobb, og den gjelder Forstå og Pengestrøm like mye som lager. */
/* EN side (16.08, etter markedsresearchen — NN/g/Baymard: faner som
   gjemmer soesken blir ikke sett; Plausible/Fathom/Fiken viser tall foer
   meny). Alle svarene ligger etter hverandre; .q-faner er en HURTIGLINJE
   som ruller dit, aldri en meny som gjemmer. Stilen staar lenger ned. */
/* main har overflow:auto i skallet — det gjoer MAIN til festepunkt for
   sticky, og linja blir med innholdet ut av skjermen. Rulleren er
   .vsh-scene; slipp overflow her saa linja fester seg mot den. */
/* Descendant, ikke direkte barn: Personal-flatene har menylinja inne i
   <div class="page">, og da maa main SLIPPE rullingen der ogsaa — ellers
   fester linja seg mot main og forsvinner ut av skjermen med innholdet. */
main:is(:has(.q-faner),.h-faner){overflow:visible}
/* ---- GODKJENTE BOKS-KOMPONENTER (Kenneth 16.08: mock-designet TAR OVER
   det globale systemet INNI innholdsboksene; alt utenfor foelger reglene).
   Geometrien er kopiert fra mock-forsta-avansert.html — kopier = maal.
   Deles av oekonomi- og lager-Forstaa (og alle flater som porter mockene). */
/* ══ SEKSJONSSKILLE — ÉN REGEL FOR HELE APPEN ═══════════════════════════
   Kenneth 18.08: «Hierarkiet er en skam. Du MÅ skille seksjonene. Det går
   ikke an å lese det.»

   MÅLINGEN som avgjorde formen (getComputedStyle på live Forstå, 1600 px):
     kortets spørsmål  .kort-sp     19 px / 600
     seksjonsoverskrift .av-eye   13,5 px / 600   ← MINDRE enn brødteksten
     brødtekst        .kort-fakta   16 px / 400
   Overskrifta var altså mindre enn teksten den ledet. Da finnes det ikke
   noe hierarki å lese — og seksjonene gled i hverandre fordi eneste skille
   var 14 px marg.

   PRINSIPPET, brukt overalt (ett prinsipp, ikke to): HVER SEKSJON ER SIN
   EGEN FLATE. Kortet er lilla (--boks); seksjonene ligger som hvite kort
   oppå, med hårlinje og radius — nøyaktig samme grep som grafflatene alt
   bruker inne i de samme kortene. Grensen mellom to seksjoner blir da en
   fysisk kant, ikke en tolkning: man SER at noe nytt begynner uten å lese.

   TRE NIVÅER, målbart forskjellige i BÅDE størrelse, vekt og farge:
     1  kortets spørsmål    .kort-sp     26 px / 700 / brand
     2  seksjonsoverskrift  .av-eye      19 px / 700 / brand
     3  brødtekst           .kort-fakta  16 px / 400 / --ink-2

   Luft: 18 px mellom seksjonsflatene + 20 px innvendig topp-padding = 38 px
   faktisk luft OVER overskrifta, mot 12 px UNDER — overskrifta hører til
   innholdet sitt, ikke til seksjonen som kom før.

   Bor i SKALLET fordi den deles av Forstå, lager-Forstå og enhver flate som
   porter mock-seksjonene. Sidene hadde hver sin lokale .av-del-regel; de er
   fjernet så det finnes én kilde. */
.av-eye{
  font:700 var(--fs-xl) var(--font-display);
  color:var(--kort-overskrift,var(--brand));
  letter-spacing:-.01em;
  margin:32px 0 12px;
}
.av-eye:first-child{margin-top:0}
/* Seksjonsflata. Regelen er STRUKTURELL, ikke navnebasert: det som gjør noe
   til en seksjon er at det LEDER MED EN OVERSKRIFT (> .av-eye) — ikke hvilken
   dybde-klasse det tilfeldigvis har.

   Hvorfor det måtte bli slik: .av-del gjorde dobbel jobb — den betydde både
   «seksjon» og «vises kun i Detaljene». Seksjon 5 på Endring (#edOverTid)
   vises i BEGGE dybder og heter derfor .ed-del. Bandt vi flata til .av-del,
   fikk seksjon 2 og 3 kort mens 5 lå naken rett på kortflata — målt på
   skjermen 18.08, og nøyaktig den glidningen Kenneth klager på.

   Motsatt vei: en .av-del UTEN egen overskrift (et løst avsnitt som bare
   skal skjules i Innsikt, eller «Velg linje»-blokka inne i seksjon 5) er
   ikke en seksjon og skal ikke bli en boks. Derfor > .av-eye som betingelse. */
:is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye){
  background:var(--flate-1);
  border:1px solid var(--ramme-1);
  border-radius:var(--boks-radius);
  padding:16px;
  margin:0 0 var(--luft-blokk);
}
/* Seksjonen ER boksen (NYE VITIN 03.09): det som lå som egen hvit boks inni mister ramma si. */
.av-seksjon > :is(.kpirad,.chart-card,.card,.k,.kpis,.fo-opp,.tabellboks){border-left:0;border-right:0;border-bottom:0;background:transparent;padding-left:0;padding-right:0;border-radius:0}
/* Inne i seksjonsflata er KANTEN skillet — da ville 32 px marg bare bli
   dødluft under kanten. */
:is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye) > .av-eye:first-child{margin-top:0}
:is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye) > :last-child{margin-bottom:0}
/* PÅ LERRETET er en hvit seksjon usynlig (Kenneth 24.08: «FREMDELES ingen
   annen farge enn hvit på boksene» — målt på budsjett: hvite seksjoner rett
   på hvit canvas). Lag-regelen sier boksen LEGGES til: en seksjon som IKKE
   ligger i en tonet flate ER nivå 1 og får flate-1-tonen. Seksjoner inne i
   .kort/.kort-flate beholder hvitt — der er tonen alt brukt av forelderen. */
:is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye):not(:is(.kort,.kort-flate) *){
  background:var(--boks);
  border-color:var(--ramme-1);
}
/* En seksjonsflate inne i en seksjonsflate ville lagt hvitt på hvitt. Den
   indre slipper ramma og beholder bare luften. */
:is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye)
  :is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye){
  background:none;border:0;padding:0;margin-top:26px;
}
/* ══ OVERSKRIFTSBÅNDET PÅ ALLE KORTGRAMMATIKKER (Kenneth 02.09.2026: «den rosa
   boksen bak overskriften er fraværende på heile likviditet … hvor er den rosa
   linjen på "vare for vare", som forøvrig fremdeles har dobbel boks»).
   Båndet fantes bare for .kort > .kort-hode. Seksjonene (.av-eye i en
   seksjonsflate), regnekortene (.rg-card > .kb-hode) og metodestegene
   (.bp-steg > .bp-head) tegnet overskriften naken — målt 02.09: 89 hoder uten
   bånd på 19 sider. Én regel per familie, HER, så ingen side kan drifte igjen.
   Måles av scripts/overskrift-vakt.mjs (bakgrunnsfargen på det som tegnes). */
body[data-vit-signatur] :is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye) > .av-eye{
  /* NYE VITIN 03.09: ingen tonet stripe — overskrifta står svart i boksen */
  background:transparent;
  margin:0 0 12px;
  padding:0;
  border-bottom:0;
  border-radius:0;
  color:var(--ink);
}
body[data-vit-signatur] :is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye) > .av-eye:not(:first-child){
  margin-top:26px;border-top:0;border-radius:0;
}
/* Indre seksjonsflate har ingen ramme — da har båndet ingenting å fylle. */
body[data-vit-signatur] :is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye)
  :is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye) > .av-eye{
  margin:0 0 12px;padding:0;background:none;border:0;border-radius:0;
}
/* Dobbel boks: en grafboks — og grafens egen nivå 2-ramme (.kort .graf) — inne i
   en seksjonsflate har alt seksjonens ramme rundt seg. Målt 02.09 på «Per vare»:
   seksjon med ramme → grafboks med ramme → .graf med ramme = tre streker. */
body[data-vit-signatur] :is(.av-del,.ed-del,.en-del,.opps,.av-seksjon):is(:has(> .av-eye),.h-eye) :is(.grafboks,.graf){
  background:none;border:0;border-radius:0;padding:0;
}
/* Regnekortene (likviditet): flate på modulsidene — båndet står alene over regnestykket. */
body[data-vit-signatur] .rg-card > .kb-hode{
  background:transparent;margin:0 0 12px;padding:0;border-radius:0;color:var(--ink); /* NYE VITIN 03.09 */
}
body[data-vit-signatur] .rg-card > .kb-hode h3{font:600 var(--fs-lg) var(--font-display);color:var(--ink);letter-spacing:-.015em;margin:0}
/* Overskrift i en flat beholder (sykefravær: section.card er gjennomsiktig på
   modulsida) — båndet står alene, som på regnekortene. */
body[data-vit-signatur] .card > .av-eye{background:transparent;margin:26px 0 12px;padding:0;border-radius:0;color:var(--ink)}
body[data-vit-signatur] .card > .av-eye:first-child{margin-top:0}
/* Metodestegene (verdivurdering). */
body[data-vit-signatur] .bp-steg > .bp-head,body[data-vit-signatur] .bento-panel > .bp-head{background:transparent;border-bottom:0;border-radius:0;margin:0 0 12px;padding:0;color:var(--ink)}

/* ══ LASTEVISNINGEN — ÉN ENESTE I HELE APPEN (Kenneth 18.08) ════════════
   «Jeg liker laste-menyen. Sett den MIDT PÅ SKJERMEN og ikke vis noe før den
    er ferdig. Finn ÉN type "laster tall" og bruk den overalt — rapporter,
    oversikter, presentasjoner, Forstå, PL. Det kan gjerne være den som går
    rundt og rundt på rapporten, men den må også vise HVA som laster i en
    liste, og SKYGGE BAK som er så vanlig.»

   Før fantes seks svar på det samme spørsmålet: pulserende prikker i skallet,
   en boks nede i høyre hjørne på Forstå, skjelett-striper inne i blokkene, en
   snurr på rapport-flata, «Henter …»-tekst på Likviditet/Arkiv/Mine kunder,
   og tre prikker i fakturalista. Ingen av dem sa HVA som ble hentet, og flere
   av dem lot flata blafre fram bit for bit mens de sto på.

   Nå: ÉN modal midt på skjermen — skygge bak (--scrim), brand-snurr, tittel,
   og ÉN LINJE PER KILDE med status (venter → henter → ferdig/kom ikke inn).
   Flata bak vises IKKE før alt er inne: .vit-laster på <html> holder body
   skjult, nøyaktig samme mekanikk som FOUC-fixen øverst i denne fila.
   Modalen forsvinner av seg selv når siste linje er inne. */
/* Flata holdes skjult — og lerretet males eksplisitt, så det som ligger bak
   skyggen er appens egen bakgrunn og ikke nettleserens hvite standard (body
   er skjult, og da kan ikke dens bakgrunn regnes med). */
html.vit-laster{background:var(--canvas)}
html.vit-laster body{visibility:hidden}
.vit-last{
  /* Over laste-splashen (9500) og ⌘K-overlayet (9400): mens noe hentes er
     dette det øverste laget. Ligger på <html>, ikke <body> — body er
     visibility:hidden, og en lastevisning man ikke ser er hele problemet. */
  position:fixed;inset:0;z-index:9700;
  display:flex;align-items:center;justify-content:center;
  padding:24px;
  background:var(--scrim);
  transition:opacity .3s ease;
  /* Modalen henger på <html>, ikke på <body> — den arver derfor INGENTING av
     sidas typografi. Uten denne linja tegnes hele lastevisningen i nettleserens
     Times (samme klasse feil som skrift-vakta ble laget for). */
  font-family:var(--font-body);
  color:var(--ink);
}
/* ══ `hidden` BETYR SKJULT — ÉN REGEL (30.08.2026) ══════════════════════
   Maalt paa serviceportalen: lukkekrysset i sakspanelet sto synlig ved siden
   av teksten «Velg en sak i listen for aa se detaljer her.» Panelet HAR
   `hidden` i markupen, men sidas egen `.dl-wrap{display:flex}` slaar
   nettleserens `[hidden]{display:none}` — en klasseregel vinner alltid over
   den.

   Det er ikke foerste gang: arket har tre lokale lappar for nettopp dette
   (.vit-last, .vit-last-under og hele .gran/.lens/.seg-lista under). Tre
   kopier av samme fiks er et tegn paa at regelen manglet ett sted. Naa staar
   den her, og de tre trengs ikke lenger.

   !important er riktig her: `hidden` er ikke pynt, det er en paastand om at
   elementet ikke finnes for brukeren — ogsaa for skjermlesere. Skal noe vises,
   skal attributtet av, ikke overstyres i CSS. */
[hidden]{display:none!important}

.vit-last[hidden]{display:none}
/* Ferdig = usynlig OG gjennomsiktig for fingeren (maalt 12.09, nav-vakt: sloeret laa over Intervju og dokument-modus i Light og tok baade trykk og rulling). */
.vit-last.ferdig{opacity:0;pointer-events:none}
/* Over tid: sida er sluppet fram, men noe henter fortsatt. Boksen blir
   stående — mindre påtrengende, uten skygge over flata bak, så du kan lese
   det som alt er kommet inn mens resten fylles. (Kenneth 19.08) */
.vit-last.over-tid{background:transparent;pointer-events:none;align-items:flex-end;justify-content:flex-end;padding:18px}
.vit-last.over-tid .vit-last-kort{pointer-events:none;box-shadow:none} /* ingen kontroller i kortet — det skal aldri fange trykk eller hjul (maalt 12.09: «Laer mer» og pageren laa bak det) */
html.vsh-light .vit-last.over-tid{padding-bottom:80px} /* over navigasjonslinja paa telefonen */
.vit-last-under{
  margin:10px 0 0;
  font:400 var(--fs-11-5) var(--font-body);
  line-height:1.5;
  color:var(--ink-3);
}
.vit-last-under[hidden]{display:none}
.vit-last-kort{
  /* box-sizing settes HER, ikke arves: sidene setter *{box-sizing:border-box}
     hver for seg, og på Pengestrøm (som ikke gjør det) ble kortet 408 px bredt
     mot 360 px overalt ellers — altså to lastevisninger igjen. Målt av
     _tmp-last-probe.mjs, som sammenligner geometrien på tvers av flatene. */
  box-sizing:border-box;
  width:min(360px,100%);
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--boks-radius);
  box-shadow:none);
  padding:21px 23px 19px;
  transition:transform .3s ease;
}
.vit-last.ferdig .vit-last-kort{transform:translateY(6px)}
.vit-last-hd{display:flex;align-items:center;gap:11px;margin-bottom:15px}
/* Snurren fra rapport-flata (Kenneth: «gjerne den som går rundt og rundt») —
   nå den eneste i appen, i brandfarge og på tokens. */
.vit-last-snurr{
  width:22px;height:22px;flex:none;box-sizing:border-box;
  border-radius:var(--r-sirkel);
  border:3px solid var(--brand-line,var(--line));
  border-top-color:var(--brand);
  animation:vitLastSnu 700ms linear infinite;
}
.vit-last-t{flex:1;min-width:0;font:600 var(--fs-2xs) var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--kort-overskrift,var(--brand))}
.vit-last-tall{font:600 var(--fs-xs) var(--font-mono);color:var(--stone);font-variant-numeric:tabular-nums}
.vit-last-rad{display:flex;align-items:center;gap:9px;padding:4px 0;font-size:var(--fs-sm);color:var(--ink-3)}
.vit-last-rad .vl-ikon{width:14px;flex:none;text-align:center;font-size:var(--fs-xs)}
.vit-last-rad .vl-navn{flex:1;min-width:0}
.vit-last-rad .vl-st{font:500 var(--fs-2xs) var(--font-mono);color:var(--stone);white-space:nowrap}
/* henter = brand og i bevegelse · ferdig = grønn hake · feilet = rød */
.vit-last-rad.gaar{color:var(--ink)}
.vit-last-rad.gaar .vl-ikon{color:var(--brand);animation:vitLastSnu 1.1s linear infinite}
.vit-last-rad.ferdig .vl-ikon{color:var(--pos)}
.vit-last-rad.ferdig .vl-st{color:var(--pos)}
/* Baerer linja et TALL og ikke ordet «ferdig», er den et svar — da skal den
   leses som et tall: blekk, tabularsifre, litt tyngre (Kenneth 10.09.2026).
   Groent er for kvitteringen «dette gikk bra», ikke for et beloep. */
.vit-last-rad.har-svar .vl-st{
  color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600;
}
.vit-last-rad.feil .vl-ikon,.vit-last-rad.feil .vl-st{color:var(--neg)}
@keyframes vitLastSnu{to{transform:rotate(360deg)}}
/* Slått av bevegelse: ingenting roterer, men statuslista står — den er
   informasjonen, snurren er bare bekreftelsen på at noe skjer. */
@media(prefers-reduced-motion:reduce){
  .vit-last-snurr,.vit-last-rad.gaar .vl-ikon{animation:none}
  .vit-last-snurr{border-color:var(--brand)}
}
/* LASTELISTA BRUKT PÅ EN FLATE (23.09.2026) — avstemmingen på Min side: «en lastevisning med check for hver
   som er rett. X for den som ikke stemmer» (Kenneth). Samme rader, samme snurr, samme hake som modalen; det
   eneste nye er linja under et kryss (.vl-hvorfor): hva hver side sier, og kontoene som skiller. Innrykket er
   ikonets bredde + mellomrommet i M3-laget (18 + 10), så teksten står under navnet og ikke under krysset. */
.avst-del + .avst-del{margin-top:22px}
.avst-del .vit-last-hd{margin-bottom:6px}
main.x .blokk .del .avst-del .avst-dom{margin:12px 0 0} /* «main.x .blokk .del .lede{margin:0}» (knapperaden) står lenger ned med lik vekt — én klasse til, så dommen får luft fra lista */
/* Sammendraget (23.09): to linjer i husets radform, tidspunktet under, detaljene bak «Vis detaljene». */
main.x .blokk .del .avst-naar{margin:6px 0 2px}
.avst-detaljer{margin-top:10px}
.vl-hvorfor{display:flex;flex-direction:column;gap:2px;margin:0 0 6px 28px;font:400 var(--fs-xs) var(--font-body);line-height:1.45;color:var(--ink-3);font-variant-numeric:tabular-nums}

/* ══ TOM TILSTAND — DELT KOMPONENT (Kenneth 18.08) ══════════════════════
   «Er det en kunde som ikke har utestående (eller noe av det andre), så må
   det være en FIN MELDING, ikke bare tom tilstand. Noe a la 'Her var det
   tomt, gitt!'»

   Før: blokka fikk hidden og forsvant. Da kunne bare den som visste at den
   fantes savne den — og ingen fikk vite HVORFOR den var borte.

   SKILLET som må være synlig for brukeren (to helt ulike beskjeder):
     .vit-tom            «du har ingen» — GODT nytt, alt er som det skal
     .vit-tom.mangler    «vi har ikke data» — noe er ikke koblet

   Regelen som følger med: TOM = vis meldinga. IKKE TILKOBLET = skjul fanen.
   En rolig flate, én linje i normal størrelse + eventuelt en dempet
   underlinje som sier hvorfor. Aldri illustrasjoner. */
.vit-tom{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--boks-radius);
  padding:14px 16px;
  color:var(--ink-2);
  font-size:var(--fs-md);
  line-height:1.5;
}
.vit-tom .vt-under{
  display:block;margin-top:5px;
  font-size:var(--fs-sm);color:var(--stone);
}
/* Manglende kobling er ikke gode nyheter — den skal se litt annerledes ut
   enn «du har ingen», så de to aldri leses som det samme. */
.vit-tom.mangler{border-style:dashed;background:var(--surface-3)}

/* ── «VIS ALLE …» — DELT KNAPP FOR LANGE LISTER (Kenneth 18.08) ─────────
   Kontolinjene ble lastet og tegnet alle sammen med én gang; en lang liste
   møtte deg før du hadde bedt om den. Nå står de største fem, og resten
   hentes på trykk — med synlig lasting, så du ser at noe faktisk skjer.
   Knappen SIER hva den gjør, i regnskapsspråk, og teller radene den henter.
   Fantes tidligere som .ed-vis i forsta.html og .rtb-alle-btn i
   lager-forsta.html — to kopier av samme knapp. Her er den ÉN gang. */
.vis-alle-btn{display:inline-flex;align-items:center;gap:8px;font:600 var(--fs-sm) var(--font-display);color:var(--brand-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--knapp-radius);padding:7px 14px;margin-top:12px;cursor:pointer;transition:border-color .14s,background .14s}
.vis-alle-btn:hover{border-color:var(--brand-2);background:var(--surface-2)}
.vis-alle-btn[disabled]{cursor:default;color:var(--ink-3)}
.vis-alle-btn .tall{font:600 var(--fs-2xs) var(--font-mono);color:var(--ink-3)}
/* Lasteprikkene: tre punkt som pulser i tur — synlig bevis på at radene
   hentes, aldri en knapp som bare står stille og later som. */
.vis-alle-btn .prikker{display:none;gap:4px}
.vis-alle-btn.laster .prikker{display:inline-flex}
.vis-alle-btn.laster .tall{display:none}
.vis-alle-btn .prikker i{width:5px;height:5px;border-radius:var(--r-sirkel);background:var(--brand-2);animation:visAllePuls 1s ease-in-out infinite}
.vis-alle-btn .prikker i:nth-child(2){animation-delay:.16s}
.vis-alle-btn .prikker i:nth-child(3){animation-delay:.32s}
@keyframes visAllePuls{0%,100%{opacity:.28}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.vis-alle-btn .prikker i{animation:none;opacity:.6}}
.kontorad{display:grid;grid-template-columns:64px 1fr 90px 84px;gap:10px;padding:7px 0;border-bottom:1px solid var(--ramme-2);font-size:var(--fs-13);align-items:baseline}
.kontorad:last-child{border-bottom:0}
/* ── SVARET TONES INN NÅR DET BYTTER (Kenneth 22.09.2026: «Ingen av
   kategoriene jeg er inne på glir. Alt hopper.»)
   MÅLT med bilder 80/300/900 ms etter et radtrykk i Detaljene: tegningen
   animerer, men de to kakene er nesten like store (37,5 % → 38,2 %), så buen
   flytter seg under én prosent. Samtidig sto navnet, prosenten og pp-tallet
   ferdig byttet allerede etter 80 ms — tekst animerer ikke. Det er teksten
   øyet leser som et kutt, uansett hvor pent buen beveger seg.
   Tonefallet gjør byttet til én bevegelse, og virker likt for alle
   kategoriene og alle grafslagene — også der to bilder er helt ulike.
   Varigheten og kurven er Material 3s egne «effects fast», ikke egne tall. */
.ov-toner {
  animation: ov-ton var(--md-sys-motion-effects-fast-duration, .2s)
             var(--md-sys-motion-expressive-effects-fast-easing, ease-out) both;
}
@keyframes ov-ton { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .ov-toner { animation: none; } }
/* GRAFEN HOPPER ALDRI FRA EN VISNING TIL EN ANNEN (Kenneth 23.09.2026: «Animasjonen mellom grafene finnes
   heller ikke når man går fra f.eks regnestykket til nøkkeltall … Grafen skal aldri hoppe»). Når graftypen
   skifter (vannfall → ring, linje → ring), finnes det ingenting å gli mellom. Da legges et stillbilde av den
   gamle tegningen oppå, og det toner UT mens den nye toner inn — én bevegelse, aldri et tomt bilde imellom.
   Samme tid og kurve som tonefallet over. */
.ov-ut {
  position: absolute; pointer-events: none; margin: 0;
  animation: ov-ut var(--md-sys-motion-effects-fast-duration, .2s)
             var(--md-sys-motion-expressive-effects-fast-easing, ease-out) both;
}
@keyframes ov-ut { from { opacity: 1; } to { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .ov-ut { display: none; } }

/* ── ZEBRA — GLOBAL (Kenneth 18.08: «zebra mangler på Detaljer-oppstillingene
     i Utgifter og Resultat … zebra skal gjelde alle lister/oppstillinger»).
   Regelen sto tidligere lokalt i forsta.html for tre beholdere; alt annet gikk
   uten. Her gjelder den ALLE gjentatte rader i appen, uansett flate.
   --flate-2 mot kortets --flate-1 er ett hakk, aldri en stripe.
   Bare descendant-selektorer — en naken .klasse{} her ville gjort sidenes
   egne .fo-linj/.kontorad-regler til «avvik fra delt komponent» hos
   komponent-vakta. */
.fo-opp .fo-linj:nth-child(even),
.konto-liste .kontorad:nth-child(even),
.opps-h .kontorad:nth-child(even),
.opps-v .opps-kn:nth-child(even),
.grafboks .kontorad:nth-child(even),
.rrad-liste .rrad:nth-child(even),
.tl-tab .tl-rad:nth-child(even),
.avv-liste .avv-row:nth-child(even),
.pl-tabell tbody tr:nth-child(even),
/* Lager har sitt eget radmønster (.rtb-row) og sto derfor uten zebra på ALLE
   listene sine — topplister, dødlager, liggetid (Kenneth 19.08). Regelen er
   global; da må lagers rader også stå her. */
[class*="rtb-liste"] .rtb-row:nth-child(even),
.rtb-body .rtb-row:nth-child(even),
.prog-tbl tbody tr:nth-child(even),
/* VitViz-tabellen (20.08): lister tegnes av biblioteket, som grafene. */
.vv-tab .vv-tr:nth-child(even),
/* HENTET HJEM 25.08 (Kenneth: «ingen endring som ikke er global»). Disse fem
   listene hadde SIN EGEN sebra-regel i sidefila, og alle satte en FLATE i
   stedet for vasken: --flate-2 ER hvit, så sebraen var usynlig på et hvitt
   kort og ble OMVENDT inni en tonet boks. Reglene lå dessuten på <td>, som
   slår rad-regelen her på spesifisitet — derfor virket ikke den globale.
   Nå står de her, og sidefilenes overstyringer er slettet. */
.rg-table tbody tr:nth-child(even),
.bu-tab tbody tr:nth-child(even),
.bkv-tab tbody tr:nth-child(even),
.snur-rad:nth-child(even),
/* Fordringslista paa Forstaa/Utestaaende (Kenneth 25.08: «ingen sebra … paa
   utestaaende fordelt paa alder»). MAALT paa skjermen: alle radene sto med
   rgba(0,0,0,0). Aarsaken var ikke elementet, men veien: .ford-rad var aldri
   meldt inn i denne lista, og sida hadde ingen egen regel — og skal ikke ha en.
   Hodet (.ford-hd) er barn nummer 1 og treffes derfor ikke. */
.ford-liste .ford-rad:nth-child(even),
/* «Faktura for faktura» (Kenneth 16.09: sebra mangler i lista) tegnes i dag av
   forsta-motor.js som <table class="linjer"> — de gamle .ford-liste/.ford-rad-
   klassene over hørte til vitinv1-arkivet og traff aldri den live tabellen.
   .linjer er delt med flere andre lister (Topp kunder, sykefravær, lager,
   mine kunder), så meldes inn her i stedet for en side-lokal regel. */
.linjer tbody tr:nth-child(even),
/* «Måneden du trykker på» (Kenneth 23.09.2026). Panelet er én mal for Inntekter, Utgifter og Oversikt
   (MNDPANEL i forsta-lim.js). Overskrifta og undertittelen er barn av samme boks, så radene telles for seg. */
.mnd > .rad:nth-child(even of .rad),
.rtb-row:nth-child(even){background:var(--zebra)}
/* Overskriftsrader og svar-/sumrader er egne lag og skal aldri zebras. */
.konto-liste .kontorad.hd,
.opps-h .kontorad.hd,
.grafboks .kontorad.hd,
.pl-tabell tbody tr.sum,
.prog-tbl tbody tr.sum{background:none}
/* Rutenett-celler har min-width:auto som standard — et langt kontonavn
   («Hvem fører hva», Kenneth 18.08) presset da hele raden ut av kortet i
   stedet for å kortes av. min-width:0 gjør navnet krympbart; navnekolonna
   klippes med ellipse så tallkolonnene alltid står der de skal. */
.kontorad > span{min-width:0}
.kontorad > span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kontorad .nr{font:500 var(--fs-11-5) var(--font-mono);color:var(--ink-4)}
.kontorad .kr2{font:600 var(--fs-12-5) var(--font-mono);text-align:right;font-variant-numeric:tabular-nums}
.kontorad .dd{font:600 var(--fs-11) var(--font-mono);text-align:right}
.kontorad .dd.opp{color:var(--pos)}
.kontorad .dd.ned{color:var(--dn)}
.kontorad .dd.flat{color:var(--ink-4)}

/* ── LANGE MASKINNAVN MÅ KUNNE BRYTES (Kenneth 21.09.2026, revisjonen).
   MÅLT på 393 px: `<code>vitin-zettle-state</code>` i cookie-policy startet på
   x=299 og sluttet på x=433 — 40 px utenfor skjermen. Ett ord uten mellomrom
   kan ikke brytes, og da vokser hele oppsettsvinduet: nettleseren zoomer ut,
   og ALL tekst på sida blir mindre. Ett kodenavn koster altså lesbarheten på
   hele siden. */
code,kbd,samp{overflow-wrap:anywhere}

/* ══ DOKUMENTTABELLEN `.data` — ÉN KOMPONENT, ETT STED ══
   Cookie-erklæringen, personvernerklæringen og kvalitetsdokumentet hadde hver
   sin ordrette kopi av disse fire reglene. Personvernerklæringen fikk i
   tillegg en mobil-reflow 01.09.2026; de to andre fikk den ikke, og det var
   nøyaktig DE to som var ødelagt da revisjonen målte 21.09.2026:

     cookie-policy.html            oppsettsvindu 636 px på en 393 px skjerm
     kvalitet-og-kontroll.html     oppsettsvindu 598 px

   Et oppsettsvindu bredere enn skjermen betyr at nettleseren zoomer ut. Da er
   det ikke tabellen som blir feil — det er hele sida: overskrift, meny og all
   brødtekst krymper. Årsaken var `white-space: nowrap` på første kolonne, som
   holdt «sb-…-auth-token» på én linje.

   Nå bor både utseendet og telefon-oppførselen her. En fjerde dokumentside
   arver dem uten å måtte huske noe. */
table.data{width:100%;border-collapse:collapse;margin:12px 0 16px;font-size:var(--fs-sm)}
table.data th{text-align:left;font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.06em;color:var(--ink-4);border-bottom:1px solid var(--line);padding:8px 10px 8px 0}
table.data td{border-bottom:1px solid var(--line-soft);padding:10px 10px 10px 0;color:var(--ink-2);vertical-align:top}
table.data td:first-child{font-weight:600;color:var(--ink);white-space:nowrap;padding-right:18px}

/* ══ DOKUMENTHODET `.dok-topp` — SAMME KOMPONENT, TRE SIDER ══
   Cookie-erklæringen, personvernerklæringen og kvalitetsdokumentet bar hver
   sin ordrette kopi. Bare brukeravtalen hadde fått telefonbehandlingen, og
   revisjonen 21.09.2026 fant de to andre med et oppsettsvindu på 598 px på en
   393 px skjerm: andre kolonne er `max-content`, og versjonslinja ba om 441 px
   i en 325 px bred forelder. Brukeravtalen har sin egen variant med logo og
   høyrespalte; den arver grunnen herfra og overstyrer det den trenger. */
.dok-topp{display:grid;grid-template-columns:1fr max-content;gap:20px;align-items:end;padding-bottom:22px;margin-bottom:var(--luft-blokk)}
.dok-topp .name{font-family:var(--font-display);font-size:var(--fs-18);font-weight:600;letter-spacing:-.02em}
.dok-topp .meta{font-family:var(--font-mono);font-size:var(--fs-11);letter-spacing:.08em;color:var(--ink-3);margin:14px 0 var(--luft-blokk)}
.dok-topp h1{font-family:var(--font-display);font-size:clamp(var(--fs-28),3vw + 12px,var(--fs-38));font-weight:700;letter-spacing:-.025em;margin:0;line-height:1.15}
.dok-topp .updated{font-family:var(--font-mono);font-size:var(--fs-11-5);color:var(--ink-4);margin-top:12px}

/* ETIKETTENE I DOKUMENTFLATENE STÅR MED VERSALER — ÉN gang, ikke tre.
   Token-vakta teller versal-deklarasjoner per fil, og taket kan bare
   gå ned. Da de tre lokale kopiene ble samlet her, ville tre nye
   deklarasjoner ha løftet arkets tall. Rollen er den samme alle tre steder
   — en liten etikett over eller foran en verdi — så den hører hjemme i én
   regel. Endrer vi mening om versaler i dokumentene, er det ett sted. */
.dok-topp .meta,
table.data th,
table.data td[data-felt]::before{text-transform:uppercase}

/* Hodet stables før tabellene: andre kolonne er `max-content`, og på
   brukeravtalen er den en hel høyrespalte. MÅLT 21.09.2026 ba versjonslinja på
   kvalitetsdokumentet om 441 px i en 325 px bred forelder — og sida ble 598 px
   bred på en 393 px skjerm. Grensa er 720 px fordi det er der brukeravtalens
   høyrespalte begynner å skvise tittelen; den hadde regelen lokalt, og den
   gjelder like mye for de tre andre dokumentsidene. */
@media(max-width:720px){
  .dok-topp{grid-template-columns:1fr;gap:10px;align-items:start}
  .dok-topp .updated,.dok-topp .meta{margin-top:6px}
  .dok-topp .right{text-align:left}
}

@media(max-width:640px){
  /* Hver rad blir en blokk med feltnavnet over verdien. Overskriftsraden er
     <tr><th>…, ikke <thead> — derfor skjules th. */
  table.data th{display:none}
  table.data tr:has(th){display:none}
  table.data,table.data tbody,table.data tr,table.data td{display:block;width:100%}
  table.data tr{border-bottom:1px solid var(--line);padding:10px 0}
  table.data tr:last-child{border-bottom:0}
  table.data td{border:0;padding:3px 0;white-space:normal}
  table.data td:first-child{white-space:normal;padding-right:0}
  table.data td[data-felt]::before{
    content:attr(data-felt);display:block;
    font:600 var(--fs-2xs) var(--font-mono);letter-spacing:.06em;
    color:var(--ink-4);margin-bottom:2px;
  }
}

/* ── TELEFON: FIRE FASTE KOLONNER FINNES IKKE PÅ 393 PX (Kenneth 21.09.2026:
     «selve presentasjonen er jo heilt ødelagt mange steder»).
   MÅLT på 393 px: raden regnet seg til «90px 92px 92px 96px» = 370 px pluss
   tre mellomrom = 400 px. Sju piksler utenfor skjermen, og tallkolonnen ble
   kuttet på høyre side. Ingen kolonnebredde løser det; raden må bli en blokk.
   Posten får hele bredden øverst, tallene kommer under som merkede par —
   etiketten hentes fra data-kol, som byggeren setter.
   GLOBAL med vilje: dette gjelder hver .konto-liste i appen, ikke bare den
   som ble målt. Første forsøk lå lokalt i presentasjon.html og ble meldt av
   komponent-vakta — med rette: .kontorad er en delt komponent. */
@media(max-width:560px){
  .konto-liste .kontorad{grid-template-columns:1fr auto;gap:2px 10px;padding:10px 0}
  .konto-liste .kontorad > :first-child{grid-column:1 / -1;font-weight:600}
  .konto-liste .kontorad.hd{display:none}
  .konto-liste .kontorad > :not(:first-child){
    grid-column:1 / -1;display:flex;justify-content:space-between;align-items:baseline;
  }
  .konto-liste .kontorad > :not(:first-child)::before{
    content:attr(data-kol);font:400 var(--fs-11-5) var(--font-body);color:var(--ink-4);margin-right:8px;
  }
  /* Regnestykket: etiketten får HELE bredden, tallet sin egen linje under.
     Med tre kolonner brøt etiketten til tre linjer i en 194 px spalte mens
     forklaringen under den brøt til seks — en stripe med ett ord per linje. */
  .fo-opp .fo-linj{grid-template-columns:26px 1fr;gap:2px 10px}
  .fo-opp .fo-linj .kr{grid-column:2 / -1;justify-self:start;white-space:nowrap;margin-top:4px}
}
.spor100{display:flex;height:24px;border-radius:var(--knapp-radius);overflow:hidden;border:1px solid var(--ramme-2)}
.spor100 i{display:block}
.spor100.stor{height:38px}
.ruter{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:3px;max-width:250px;background:var(--surface);border:1px solid var(--ramme-2);border-radius:var(--boks-radius);padding:12px}
.ruter i{aspect-ratio:1;border-radius:var(--felt-radius);display:block}
.formel{font:500 var(--fs-12-5) var(--font-mono);background:var(--flate-2);border:1px solid var(--ramme-2);border-radius:var(--boks-radius);padding:11px 13px;margin-top:14px}
.kildeped{font:500 var(--fs-11) var(--font-mono);color:var(--ink-4);margin-top:12px}

/* M3-V2 (03.08): chips — uvalgt = kontur på lerretet; valgt = FYLT
   secondary-container UTEN hake (Kenneth-korreks); radius 8. */
/* ============================================================
   VALGKONTROLLENE — ÉN REGEL FOR HELE KATEGORIEN
   ------------------------------------------------------------
   Alt som betyr «velg én av flere» ser likt ut og har samme
   størrelse, uansett hvilken side eller modul det står på. Formen
   styres i sin helhet av --valg-*-tokenene i vit-tokens.css.

   To former, samme kategori:
     SPOR      (.gran/.lens/.seg/.tg/.ford-chips/.snaps/.regntog)
               — knappene ligger i et spor, valgt flate fylles.
     FRI CHIP  (.qf) — ligger fritt på flata, uvalgt har kontur.

   NÅR HVILKEN FORM (så det er et valg, ikke tilfeldigheter):
     spor      — få, gjensidig utelukkende valg på ÉN akse som får plass
                 på én linje (periode, visning, lag). Sporet viser hele
                 settet, og at bare ett kan være på.
     fri chip  — når settet er for stort til én linje og må brytes
                 (Forstå har sju spørsmål). Et spor som brekker over to
                 linjer leser ikke lenger som ÉN kontroll.
   Formene er ellers IDENTISKE: samme høyde (--valg-h), samme skrift,
   samme radius, samme valgt-farge. Målt 06.08 sto de på 45, 37 og 36 px
   på samme side — nå lander alt på --valg-h.

   Bakgrunn (Kenneth 06.08): kategorien fantes i ti utgaver og tre
   tekststørrelser, med «valgt» som snart hvit flate med ramme,
   snart heldekkende svart, snart heldekkende lilla, snart skygge.
   Lokale kopier er slettet — legg ALDRI inn en ny her eller i en
   sidefil. Trenger en flate noe eget, er det plassering (margin,
   flex), aldri utseende.
   ============================================================ */
.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner{
  display:flex;width:max-content;max-width:100%;gap:var(--valg-gap);padding:4px; /* blokknivå, så 18-margene kollapser mot naboene (03.09) */
  background:var(--valg-spor);border:1px solid var(--valg-spor-ramme);
  border-radius:var(--valg-spor-radius);box-sizing:border-box;
  flex-wrap:wrap;row-gap:var(--kontroll-gap,8px);min-width:0; /* bryting, aldri vannrett skrolling (mobil) */
}
.gran button,
.lens button,
.seg button,
.seg a, /* undermenyen paa Light (19.09): lenker i velgerens form */
.tg button,
.regntog button,
.kpkt-toggle button,
.chips .chip,
.wf-snaps button,
.ford-chip,
.snap,
.qf,
.hurtigsvar button{
  box-sizing:border-box;white-space:nowrap;cursor:pointer;text-decoration:none;
  font:var(--valg-font-vekt) var(--valg-font-str) var(--font-display);
  color:var(--valg-farge);background:var(--valg-flate);
  border:1px solid var(--valg-ramme);
  padding:0 var(--valg-pad-x);height:var(--valg-h);line-height:1;
  border-radius:var(--valg-radius);
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  transition:color .14s,background-color .14s,border-color .14s;
}
/* ══ LODDRETT VALGRAD — MAALT FRA SKINNA (30.08.2026) ═══════════════════
   Kenneth: «portalen er langt unna samme tokens og css ... det skal se ut som
   appen», og etterpaa «hva med resten av margen? BOKSENE?»

   Familien over er VANNRETTE spor. Et valg i en venstrekolonne staar under
   hverandre og hoerer i en BOKS — appens egen skinne gjoer nettopp det, men
   moensteret laa laast inne i `nav.vsh-side`-regler og var derfor utilgjengelig
   for andre flater. Serviceportalen fant derfor opp sitt eget.

   FASITEN, maalt paa skinna i appen (index.html, 1440):
     gruppeboks     hvit, radius 8, luft 4, mellomrom 1
     nivaa 1        gjennomsiktig, radius 9, hoegde 44, 13px/600, --ink-2
     nivaa 2        gjennomsiktig, radius 8, 12,5px/500, --ink-3
     valgt          #F0DFF7 (--valg-valgt-flate), --ink, vekt 700

   Merk at radene er GJENNOMSIKTIGE, ikke hvite kort med ramme: boksen rundt
   baerer flata, radene baerer bare valget. Foerste forsoek her ga dem hvit
   flate og haarlinje — da ble menyen en stabel med chips, ikke en meny. */
.valg-boks{
  display:flex;flex-direction:column;gap:1px;padding:4px;
  background:var(--flate-1);border-radius:var(--knapp-radius);
}
.nav-item{
  box-sizing:border-box;display:flex;align-items:center;gap:10px;width:100%;
  background:transparent;border:0;box-shadow:none;color:var(--ink-2);
  border-radius:var(--valg-radius);padding:0 12px;min-height:var(--valg-h);
  font:600 var(--fs-13) var(--font-body);text-align:left;text-decoration:none;
  cursor:pointer;transition:color .14s,background-color .14s;
}
.valg-rad,
.kat-item,
.stat-item{
  box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:10px;
  width:100%;background:transparent;border:0;box-shadow:none;color:var(--ink-3);
  border-radius:var(--knapp-radius);padding:0 12px;min-height:var(--valg-h);
  font:500 var(--fs-12-5) var(--font-body);text-align:left;text-decoration:none;
  cursor:pointer;transition:color .14s,background-color .14s;
}
.valg-rad-1:not(.on):hover,.nav-item:not(.on):hover,
.valg-rad:not(.on):hover,.kat-item:not(.on):hover,.stat-item:not(.on):hover,.f-valg:not(.on):hover{
  background:var(--flate-3);color:var(--ink);
}
.valg-rad-1.on,.nav-item.on,
.valg-rad.on,.kat-item.on,.stat-item.on,.f-valg.on{
  background:var(--valg-valgt-flate);color:var(--valg-valgt-farge);
  font-weight:var(--valg-valgt-vekt);box-shadow:none;
}
.nav-item svg,
.valg-rad svg,
.kat-item svg,
.stat-item svg{
  width:var(--ikon-sm);height:var(--ikon-sm);stroke-width:var(--ikon-strek);flex:none;
}
/* Tallet til hoegre er en opplysning, ikke en etikett: tabellsiffer saa
   kolonnen ikke danser naar tallene endrer bredde. */
.valg-rad .tall,.kat-item .kat-n,.gran button b,.lens button b{
  font:600 var(--fs-11-5) var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-4);
}
.valg-rad.on .tall,.kat-item.on .kat-n,.gran button.on b,.lens button.on b{color:var(--valg-valgt-farge)}

/* `hidden` MÅ vinne over display:inline-flex over. Uten denne sto en fane
   UTEN datagrunnlag synlig likevel — attributtet ble satt, men regelen over
   overstyrte nettleserens `[hidden]{display:none}`. Det bryter tomt = skjul,
   og det gjaldt hele spor-familien, ikke bare .qf (målt 18.08 da Personal
   ble portet: «Saken»-fanen rapporterte hidden og sto der like fullt). */
.gran button[hidden],.lens button[hidden],.seg button[hidden],.tg button[hidden],
.regntog button[hidden],.wf-snaps button[hidden],.ford-chip[hidden],.snap[hidden],
.qf[hidden],.kpkt-toggle button[hidden],.chips .chip[hidden]{display:none}
/* Hover KUN på uvalgte (Carbon-prinsippet, research 07.08): valget står
   fast — den valgte flata reagerer ikke på pekeren. */
.gran button:not(.on):hover,.lens button:not(.on):hover,.seg button:not(.on):hover,.tg button:not(.on):hover,
.regntog button:not(.on):hover,.wf-snaps button:not(.on):hover,.ford-chip:not(.on):hover,.snap:not(.on):hover,
.filter-knapp:not(.aktiv):hover,.hurtigsvar button:hover,
.kpkt-toggle button:not(.on):not(:disabled):hover,.chips .chip:not(.on):hover{
  color:var(--valg-farge-hover);
}
.gran button.on,.lens button.on,.seg button.on,.tg button.on,
.regntog button.on,.wf-snaps button.on,.ford-chip.on,.snap.on,.qf.on,.kpkt-toggle button.on,
.chips .chip.on,.filter-knapp.aktiv{
  background:var(--valg-valgt-flate);color:var(--valg-valgt-farge);
  border-color:var(--valg-valgt-ramme);font-weight:var(--valg-valgt-vekt);
  box-shadow:none;
}
/* Ikoner inne i en valgflate følger ikon-tokenet, aldri egne px. */
.gran button svg,
.lens button svg,
.seg button svg,
.tg button svg,
.regntog button svg,
.wf-snaps button svg,
.ford-chip svg,
.snap svg,
.qf svg,
.hurtigsvar button svg{
  width:var(--ikon-sm);height:var(--ikon-sm);stroke-width:var(--ikon-strek);flex:none;
}
/* FRI CHIP: samme mål, men kontur når den er uvalgt — den har ikke et
   spor rundt seg til å vise hvor den slutter. */
/* ÉN FORM (Kenneth 07.08): den frie chip-formen er UTGÅTT. Alle flervalg
   ligger i SPORET — som graf/periodevelgeren på Oversikt. Rutenett i
   sporet: flatene deler bredden LIKT, så settet fyller én linje når
   plassen finnes (fullskjerm) og bryter i hele, jevne rader ellers —
   aldri én dinglende flate alene under raden (Kenneth 07.08). */
/* Hurtiglinja: festet oeverst mens man ruller, korte ord.
   Dybdevalget (.seg) bor i samme linje, helt til hoeyre.
   KATEGORIEN, IKKE EN VARIANT (Kenneth 18.08): baren hadde egen bakgrunn,
   egen bunnlinje, egen skriftstoerrelse og egen padding — altsaa en
   fjerde utgave av «velg én av flere». Naa er den SPORET, som .gran/.lens/
   .seg: --valg-spor-flate, --valg-spor-ramme, --valg-spor-radius og
   knapper paa --valg-h. Det eneste egne er PLASSERING: full bredde og
   sticky, saa hurtiglinja fortsatt foelger med naar man ruller. */
.q-faner{position:sticky;top:0;z-index:40;display:flex;flex-wrap:wrap;align-items:center;
  width:100%;margin:0 0 12px;
  width:max-content;max-width:100%; /* slått sammen 04.09 */
}
/* .qf sto paa flex:0 0 auto — det var regelen som skapte det tomme feltet.
   Bredda bestemmes naa av familielista lenger nede (segmentene deler sporet). */
.q-faner .qf{width:auto}
/* DYBDEVALGET — ETT globalt system (Kenneth 23.08, etter tre forkastede
   plasseringer): bryteren står rett UNDER overskrifta den styrer, egen
   rad, VENSTRESTILT («vi leser fra venstre til høgre»), over boksen.
   Motoren (vit-forsta-faner.js) flytter den inn i aktivt kort ETTER
   .kort-hode. Før flyttingen (søsken av menylinja) er den usynlig —
   ellers blinker den innom menyraden ved lasting. */
:is(:has(> .q-faner),.h-fanerfar) > .seg{display:none}
:is(:has(> .q-faner),.h-fanerfar) .kort-hode{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
body[data-vit-modul] .kort > .seg{margin:0 0 12px}
.qf{color:var(--valg-farge);min-width:0}
/* MENYLINJA I MOCK 19-STOERRELSE (Kenneth 02.09: «Menyen oeverst er PERFEKT stoerrelse»):
   sporet omslutter knappene, knappene er saa brede som ordet sitt. To faner paa
   sykefravaer fylte halve skjermen hver — det var sporet som delte bredden likt. */

.q-faner > .qf.qf{flex:0 0 auto}

/* NIVÅ 2 — finjusteringen inne i hovedvalget (oppløsning, lag, visnings-
   bryter). Samme kategori og samme kilde, men mindre: 32 mot 44 px og ett
   skrifttrinn ned. Uten dette leste sida som «én stor meny uten sammenheng»
   (Kenneth 06.08) — alt like tungt, ingenting overordnet.
   Radene deler bredde (--valg-spenn), så fire små flukter nøyaktig med to
   store og det oppstår et rutenett i stedet for to flytende rader. */
.lens,.seg,.tg,.kpkt-toggle,.chips{min-height:calc(var(--valg-h-2) + 10px);align-items:center}
/* Periodevelgeren står ØVERST og er hovedvalget → nivå 1. */
.gran{min-height:calc(var(--valg-h) + 10px);align-items:center;
  display:flex; /* slått sammen 04.09 */
}
/* PERSONAL-FLATENE hadde egne knapper og eget design (Kenneth 07.08):
   sykefravaer.html og intervju.html bar til sammen 127 lokale flate- og
   rammeregler. Valgkontrollene deres kobles på kategorien her, så de
   arver samme mål, farge og valgt-markør som resten av appen. */
.lens button,
.seg button,
.seg a,
.tg button,
.kpkt-toggle button,
.chips .chip{
  height:var(--valg-h-2);font-size:var(--valg-font-str-2);
  padding:0 calc(var(--valg-pad-x) * .78);
}
/* Deaktivert valgflate (bokstav i uten tariff): dempet, aldri en egen form. */
.kpkt-toggle button:disabled{opacity:.38;cursor:not-allowed}
/* Samme spenn på begge radene — hovedvalget og finjusteringen under. */
.cc-head .periodctl,.cc-head .gran{max-width:var(--valg-spenn);width:100%}

.gran button{flex:1 1 0;
  font-size:var(--valg-font-str); /* slått sammen 04.09 */
}
.qf:not(.on):hover{color:var(--valg-farge-hover)}
/* Mouseover på alle velgerknapper = tonet flate, ingen ramme (Kenneth 03.09). Valgt via aria-pressed teller som .on. */
.gran button:hover,.lens button:hover,.seg button:hover,.tg button:hover,.regntog button:hover,.ped-toggle button:hover,.sf-lens button:hover,.iv-faner button:hover,.kpkt-toggle button:hover,.chips .chip:hover,.wf-snaps button:hover,.ford-chip:hover,.snap:hover,.qf:hover,.filter-knapp:hover,.hurtigsvar button:hover,.ms-nav-item:hover,.trappen-trinn:hover{background:var(--valg-svev);box-shadow:none;cursor:pointer}
.seg button[aria-pressed="true"],.seg a[aria-current="page"],.q-faner button[aria-pressed="true"]{background:var(--valg-valgt-flate);color:var(--valg-valgt-farge);border-color:var(--valg-valgt-ramme)}
/* SAMMENLIKNINGSVALGET (.smlmodus) — «Samme periode året før» / «År mot år».
   Var et KRYSSVALG med avkryssingsrute, altså en ANNEN måte å si «valgt» på
   enn resten av appen. Kenneth 06.08: «Ingen hierarki og forskjell «valgt»
   med check merke.» Vedtaket fra 03.08 sier dessuten valgt chip = fylt
   secondary container UTEN hake. Haken er borte fra markup; dette er nå
   samme komponent som periodevelgeren, med samme valgt-markør.

   NIVÅ: raden ØVERST er hovedvalget (nivå 1), raden UNDER er finjusteringen
   (nivå 2). Underordnet skal ikke veie tyngre enn det den er underordnet —
   det var nettopp feilen: de to boksene var større enn den lange over. */
.smlm-box:not(.on):hover .smlm-tit{color:var(--valg-farge-hover)}
.smlm-box.on{background:var(--valg-valgt-flate)}
.smlm-box.on .smlm-tit{color:var(--valg-valgt-farge)}
.smlm-info{margin:0 0 12px;font:500 var(--fs-xs) var(--font-body);color:var(--ink-3);line-height:1.4;min-height:16px}
.vmeny{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px}
/* .vmeny/.vmeny-2 satte egen skriftstørrelse og padding på .qf — en fjerde
   størrelse i samme kategori. Målt 06.08: 36 px og 29 px der standarden
   er 45. Fjernet; formen kommer fra --valg-*. */

.vpille-hjelp:hover{border-color:var(--brand-2)}
.vpille-hjelp .pip{width:7px;height:7px;border-radius:var(--r-sirkel);background:var(--brand)}
/* M3 «standard icon button»: rammeløs, tone ved hover, fylt ved på-tilstand */
.vpille-ikon{width:40px;height:40px;border:0;border-radius:var(--boks-radius);background:transparent;color:var(--ink-2);cursor:pointer;display:grid;place-items:center;transition:background-color .14s,color .14s}
.vpille-ikon:hover{background:var(--boks-hoy);color:var(--ink)}
.vpille-ikon.on{color:var(--valg-valgt-farge);background:var(--valg-valgt-flate)}
.vpille-ikon svg{width:17px;height:17px}

/* ==== VISNINGSBOKS — globalt modul-preset (Kenneth 03.08): «Visningsboks 1 —
   hovedvisning». Boksen, overskriften, fonten og fargene definert ÉN gang;
   innholdet per side legges oppå med VitViz/globale tekststiler. Dybden:
   boksen har SYNLIG svak brand-flate mot lerretet, indre innhold (graf/rader)
   ligger på HVIT flate oppå boksen. */
/* GLOBAL TOPPMENY-REGEL (UI/UX-spesifikasjon 03.08): toppraden på en modulside
   inneholder ALDRI mer enn (a) det primære, gjensidig utelukkende visnings-
   valget (maks 2–3 piller, venstrejustert) og (b) høyst ÉN side-omfattende
   tilstandshandling som ikon-knapp ytterst til høyre. Sekundærverktøy som
   styrer ett innholdsområde bor ALLTID i headeren til visningsboksen de
   påvirker (.visboks-hode/.visboks-verktoy). Hjelpemidler er ALLTID lav-vekt
   tekstlenke m/pip VED valget de forklarer (.hjelp-lenke) — aldri pille på
   side-nivå. Trenger toppraden en rad 2, skal noe flyttes ned i innholdet. */
/* VEDTAK 03.08 («B. Global»): lerretet er HVITT (--canvas i vit-tokens.css)
   og visningsboksen bærer fargen — svak brand-tint (8 % på surface) med
   HVIT innholdsflate oppå. Boksen skal aldri ha samme farge som bakgrunnen. */
/* ==== DET GLOBALE FLATE-HIERARKIET (Kenneth-vedtak 03.08, endelig) ====
   1) LERRETET er hvitt (--canvas).
   2) SEKSJONSBOKSEN bærer fargen (--boks, svak brand-tint) — den ytre boksen
      som grupperer et tema, med tittel.
   3) INNHOLDET ligger ALLTID på HVIT flate oppå boksen: grafer, tabeller,
      KPI-kort. Grafflaten gjøres hvit av SKALLET (echarts-regelen under),
      så hierarkiet holder på alle sider uten side-endringer.
   Margen, boten og kontrollene er hvite — de er ikke innholdsbokser. */
/* ============================================================
   BOKS- OG SEKSJONSOVERSKRIFTER — ÉN REGEL FOR HELE APPEN
   ------------------------------------------------------------
   Alt som titulerer en boks eller en seksjon står i
   --kort-overskrift (brand). ALDRI svart, aldri svak grå.

   Sveip 06.08 målte FAKTISK farge på hver live-flate: femten sider
   hadde svarte boksoverskrifter — intervju, lager, lovgrunnlag,
   min side, min-ansatt, mine-kunder, om, personvern, brukeravtale,
   rapport-generator, rekruttering, sykefravær, verdivurdering,
   verdivurdering-hvordan, kvalitet-og-kontroll. Hver av dem hadde
   sin egen lokale regel med color:var(--ink).

   SIDETITTELEN (h1 i .doc-head) er IKKE med — den er sidas navn,
   ikke en boksoverskrift, og står fortsatt i --ink.
   ============================================================ */
/* SPESIFISITET, ikke tilfeldighet: sidenes egne <style>-blokker lastes
   ETTER dette arket, så en lokal `h2{color:var(--ink)}` ville vunnet på lik
   spesifisitet. body[data-vit-modul] løfter den delte regelen ett hakk, slik
   at ÉN kilde faktisk styrer alle 34 flatene. Målt før og etter. */
body[data-vit-modul] h2,
body[data-vit-modul] h3,
body[data-vit-modul] .h-main,
body[data-vit-modul] .cc-title,
body[data-vit-modul] .card-title,
body[data-vit-modul] .card-h,
body[data-vit-modul] .sek-tittel,
body[data-vit-modul] .sec-h,
body[data-vit-modul] .sec-title,
body[data-vit-modul] .iv-card-h,
body[data-vit-modul] .utl-card-h,
body[data-vit-modul] .iv-h,
body[data-vit-modul] .inngang-h,
body[data-vit-modul] .info-panel-title,
body[data-vit-modul] .trappen-detalj-h,
body[data-vit-modul] .visboks-tit{
  color:var(--kort-overskrift);
}
/* Unntak: overskrift PÅ en fylt brand-flate må være lesbar mot den. */
.app .vit-uthev h2,.app .vit-uthev h3,
.app [data-paa-brand] h2,.app [data-paa-brand] h3{color:var(--on-brand)}
.visboks{background:var(--boks);border-radius:var(--boks-radius);padding:14px 18px 12px;margin:0 0 14px}

/* ============================================================
   FLATEHIERARKIET PÅ KOMPONENTENE — GLOBALT
   ------------------------------------------------------------
   Hver flate i appen tilhører ETT av de fire nivåene i
   vit-tokens.css. Ingen komponent velger bakgrunn, ramme eller
   radius selv. Kartet under er hele koblingen:

     NIVÅ 1  seksjonsboks   .visboks .kort .story .chart-card .aars-del
                            .kpis .kpirad .kpi-grid .kpi-group .hero
                            .inngang .card .trappen-detalj
     NIVÅ 2  innholdskort   kortene inne i KPI-radene, grafflata,
                            .smlm-info-flater, tabellflater
     NIVÅ 3  fremhevet      hover og callout

   Skrevet med body[data-vit-modul] fordi sidenes egne <style> lastes
   etter dette arket og ellers vinner på lik spesifisitet.
   ============================================================ */
body[data-vit-modul] .visboks,
body[data-vit-modul] .kort,
body[data-vit-modul] .story,
body[data-vit-modul] .aars-del,
body[data-vit-modul] .chart-card,
body[data-vit-modul] .kpis,
body[data-vit-modul] .kpirad,
body[data-vit-modul] .kpi-grid,
body[data-vit-modul] .hero,
body[data-vit-modul] .inngang,
body[data-vit-modul] .iv-card,
body[data-vit-modul] .vei-kort,
body[data-vit-modul] .iv-guide,
body[data-vit-modul] .bank-q,
body[data-vit-modul] .doc-q,
body[data-vit-modul] .sf-kort,
body[data-vit-modul] .trappen-detalj{
  background:var(--flate-1);border:1px solid var(--ramme-1);
  border-radius:var(--boks-radius);box-sizing:border-box;
}
/* ── EN FLATE MALER ALDRI TONEN DEN ALT LIGGER PÅ ──────────────────────────
   Lista over deler ut nivå-1-tonen på navn. Ligger en av klassene RETT PÅ
   .kort-flate — som selv er nivå 1 — males den samme tonen to ganger, og
   boksen forsvinner i seg selv. Igjen står bare hårlinja: en tom, tegnet
   ramme rundt innhold som ikke trengte den.

   MÅLT 25.08 over alle 37 app-sider, hver node i lista som ligger inne i et
   .kort/.kort-flate (18 stk): 12 av dem hadde NØYAKTIG samme bakgrunn som
   flata under — rgb(240,234,247) på rgb(240,234,247). Alle tolv er .kpirad:
   forsta #kpiAarsres/#kpiFordringer/#kpiKrone, endring de samme tre, og
   lager-Forstå #kpiBeholdning/#kpiRotasjon/#kpiDekning/#kpiDodlager/
   #kpiTomt/#kpiPerVare. Samme feilen .aars-del hadde før klassen ble tatt
   ut av oppmerkingen — men den kan ikke løses side for side, for da står
   hullet åpent for neste klasse i lista.

   HVORFOR IKKE «alt inne i et .kort» — altså vakta seksjonsregelen på ~1634
   bruker: de seks andre av de atten er .kpirad inne i en HVIT .av-seksjon
   (forsta/endring #kpiSalg, #kpiEndret, #kpiFlytter). Der er tonen ikke
   dobbel — den er nettopp det som skiller de hvite KPI-kortene fra det hvite
   arket. Målt: rgb(240,234,247) på rgb(255,255,255). En blank
   :not(:is(.kort,.kort-flate) *) ville strøket dem også og lagt hvitt på
   hvitt — samme feil, andre vei. Derfor står unntaket på seksjonsflatene.

   Ingen erstatningsboks: nivå 2 er allerede der. KPI-cellene ER de hvite
   kortene (.kpirad > * lenger nede), og fire hvite kort rett på tonen er
   hierarkiet slik det står — lerret → boks → hvitt innhold. Prøvd på skjermen
   først: en hvit beholder rundt hvite celler gjorde cellene borte.

   Nummer tretten sto på sykefravær: #trappenDetalj (.trappen-detalj) ligger i
   en .card uten egen flate, altså rett på kort-flata. Sida har en lokal regel
   som vil ha den hvit, men den taper på spesifisitet mot lista over og har
   aldri virket — målt lilla på lilla der òg. */
body[data-vit-modul] :is(.kort,.kort-flate)
  :is(.visboks,.story,.aars-del,.chart-card,.kpis,.kpirad,.kpi-grid,.kpi-group,.hero,
      .inngang,.iv-card,.vei-kort,.iv-guide,.ord-section,.bank-q,.doc-q,
      .sf-kort,.ped-pane,.trappen-detalj):not(:is(.av-del,.ed-del,.en-del,.opps,.av-seksjon) *){
  background:none;border:0;
}

/* ══ SIGNATURKORTET — min side og kontakt (Kenneth 30.08.2026) ═══════════
   «Paa min side og kontakt kan det vaere egne format, det er to sider som
   skiller seg ut.»

   Et bevisst unntak fra kort-flate-vedtaket (23.08), der overskrifta er svart
   og staar UT av boksen. Disse to flatene er ikke tallflater — de er et
   skjema og en konto, uten grafer og uten laeremarg-dialog. De hadde blitt én
   lang hvit flate uten rytme; Kenneth 29.08: «alt kan ikke vaere heilt hvitt
   der ... et format som gir det litt kontraster».

   Moensteret: lerret hvitt -> hode tonet (laereboks-flata, samme tone som
   menyen) -> kropp hvit. Samme hierarki som resten av appen, i mindre skala.

   REGELEN STAAR HER, IKKE PAA SIDENE. Den var en lokal kopi paa min side; da
   kontakt skulle ha samme format ville det blitt to kopier som driver fra
   hverandre. Flatene skrur den paa med `data-vit-signatur` paa <body> — og
   INGEN andre flater skal ha det flagget uten at Kenneth har sagt det.
   Maalt foer flyttingen (min side 1440): kort hvitt, radius 16, ramme 1px
   #E3DFEB · hode #F8EFFB, radius 16/16/0/0, luft 20/24/16 (16/18/13 mobil). */
body[data-vit-signatur] :is(.kort-sig, .ms-panel .card){
  background:var(--flate-1);border:1px solid var(--ramme-1);
  border-radius:var(--boks-radius);overflow:visible /* 02.09: infoboksen skal kunne stikke ut av kortet */;margin-bottom:var(--luft-blokk);
  transition:box-shadow 200ms ease;
}
body[data-vit-signatur] :is(.kort-sig, .ms-panel .card):last-child{margin-bottom:0}
body[data-vit-signatur] :is(.kort-sig, .ms-panel .card):hover{box-shadow:var(--sh-2)}
body[data-vit-signatur] :is(.kort-sig, .ms-panel .card) > :is(.sig-hode, .card-head){
  display:flex;align-items:center;gap:14px;padding:20px 24px 16px;
  background:transparent; /* NYE VITIN 03.09 */
  border-radius:var(--boks-radius) var(--boks-radius) 0 0;
  border-bottom:1px solid var(--line-soft);
}
body[data-vit-signatur] :is(.kort-sig, .ms-panel .card) > :is(.sig-kropp, .card-body){
  padding:6px 24px 22px;
}
@media (max-width:760px){
  body[data-vit-signatur] :is(.kort-sig, .ms-panel .card) > :is(.sig-hode, .card-head){padding:16px 18px 13px}
  body[data-vit-signatur] :is(.kort-sig, .ms-panel .card) > :is(.sig-kropp, .card-body){padding:6px 18px 18px}
}

/* ══ SIGNATURFORMATET DEKKER ALLE TRE KORTFORMENE (Kenneth 30.08.2026) ══
   «personal kan ha samme format som min side og kontakt, ellers blir alt helt
   hvitt. Samme med om Vitin.»

   Formen er min sides: kort med ramme, TONET hode (laereboks-flata) inne i
   kortet, hvit kropp. Alt gated paa body[data-vit-signatur] — vedtaket 23.08
   (svart overskrift UT av boksen) gjelder fortsatt alle andre flater.

   Tre kortformer finnes i appen; alle tre faar samme drakt under flagget:
     1. .kort-sig / .ms-panel .card   (kontakt, min side — reglene over)
     2. .kort > .kort-hode + .kort-flate  (sykefravaer, intervju, om)
     3. .card > h2:foerst             (min-ansatt)
   Selektorene er MER spesifikke enn sidenes egne klasseregler, saa de vinner
   uansett lasterekkefoelge. Overskriftene beholder --ink (vedtak 23.08 pkt 1). */
body[data-vit-signatur] .kort:is(:has(> .kort-flate),.h-flate){
  background:var(--flate-1);border:1px solid var(--ramme-1);
  border-radius:var(--boks-radius);overflow:visible /* 02.09: infoboksen skal kunne stikke ut av kortet */;padding:0;
  margin:var(--luft-blokk) 0;
}
body[data-vit-signatur] .kort > .kort-hode{
  display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin:0;padding:0 0 8px;
  background:transparent;border-bottom:0; /* NYE VITIN 03.09: hodet er ikke tonet — det er overskrift, ikke boks */
}
body[data-vit-signatur] .kort > .kort-hode .kort-sp{
  font:600 var(--fs-lg) var(--font-display);letter-spacing:-.015em;color:var(--ink);margin:0;
}
body[data-vit-signatur] .kort > .kort-flate{
  /* Horisontal padding FJERNET 31.08 (samme klasse funn som dybdevelgeren,
     Kenneth: «innsikt/detaljene er lengre innrykket enn resten»): kortet
     tegnes aldri som boks (maalt paa sykefravaer/intervju/forsta/lager-
     forsta/budsjett — modulregelen vinner paint-en), saa flatas innhold
     staar paa LERRETET og skal starte paa den globale margen. Maalt paa
     budsjett: intro og metodekort laa paa x=110 mot alt annet paa 88. */
  background:none;border:0;border-radius:0;padding:18px 0 20px;
}
/* Dybdevalget (.seg) etter hodet (vedtak 9, 23.08). 22px-innrykket er
   FJERNET 31.08 (Kenneth: «innsikt/detaljene er lengre innrykket enn
   resten») — MAALT paa sykefravaer/intervju/forsta/lager-forsta: ALLE
   tegner kortet transparent (modul-regelen vinner paint-en), saa seg-en
   staar paa LERRETET og skal starte paa den globale margen som alt annet.
   Faar kortet en ekte tegnet boks en dag, maales innrykket paa nytt da. */
body[data-vit-signatur] .kort > .seg{margin:14px 0 0}
/* Form 3: en .card der foerste barn er overskriften (min-ansatt). Hodet lages
   av h2-en selv med negative marger — ingen markupendring. */
body[data-vit-signatur] .card{
  background:var(--flate-1);border:1px solid var(--ramme-1);
  border-radius:var(--boks-radius);overflow:visible /* 02.09: infoboksen skal kunne stikke ut av kortet */;
}
/* Form 3b: .card med et eget .card-head/.card-body-par (om.html, min side). */
body[data-vit-signatur] .card > .card-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin:0;padding:16px 22px 13px;
  background:transparent;border-bottom:1px solid var(--line-soft); /* NYE VITIN 03.09: ikke tonet */
}
body[data-vit-signatur] .card > .card-head h2{
  font:600 var(--fs-base) var(--font-display);color:var(--ink);margin:0;
}
body[data-vit-signatur] .card:is(:has(> .card-head),.h-head){padding:0}
body[data-vit-signatur] .card > .card-body{padding:18px 22px 20px;background:none;border:0}
/* Negative marger GJETTET kortets padding (-18px mot kort som hadde 0 eller
   22px) og skjøv båndet ut av overflow:hidden — «Registeret» sto halvkuttet
   (Kenneth 31.08). Nå eier malen hele geometrien: kortet 0, båndet sin egen
   padding, innholdet innrykket fra --card-pad. Ingen antagelser. */
body[data-vit-signatur] .card:is(:has(> h2:first-child),.h-h2){padding:0}
body[data-vit-signatur] .card > h2:first-child{
  margin:0 0 12px;padding:0 18px;
  background:transparent;border-bottom:0; /* NYE VITIN 03.09 */
  font:600 var(--fs-base) var(--font-display);color:var(--ink);
}
body[data-vit-signatur] .card > h2:first-child ~ *{margin-inline:18px}
body[data-vit-signatur] .card > h2:first-child ~ :last-child{margin-bottom:18px}
/* Inngangsfliser (rekruttering) som er skrevet om til kort-sig faar samme
   hode/kropp som kontaktkortet — reglene 1 over dekker dem. */
/* Hodets innmat — delt av kontakt, rekruttering og alle kort-sig-flater.
   Laa foerst lokalt paa kundeservice; da rekruttering tok formen i bruk ville
   det blitt kopi nummer to (komponent-vaktas domene). */
body[data-vit-signatur] .sig-ikon{flex:none;width:36px;height:36px;display:grid;place-items:center;color:var(--brand)}
body[data-vit-signatur] .sig-ikon svg{width:19px;height:19px}
body[data-vit-signatur] .sig-tit{margin:0;font:600 var(--fs-15-5) var(--font-body);letter-spacing:-.01em;line-height:1.2;color:var(--ink)}
body[data-vit-signatur] .sig-sub{margin:3px 0 0;font-size:var(--fs-xs);color:var(--ink-3);line-height:1.4}

body[data-vit-signatur] a.kort-sig{
  display:block;text-decoration:none;color:inherit;border-bottom-width:1px;
}
body[data-vit-signatur] a.kort-sig .sig-hode{display:flex;align-items:center;gap:12px}
body[data-vit-signatur] a.kort-sig .inngang-ikon{flex:none;display:grid;place-items:center;
  width:36px;height:36px;color:var(--brand)}
body[data-vit-signatur] a.kort-sig .inngang-ikon svg{width:20px;height:20px}
body[data-vit-signatur] a.kort-sig .sig-kropp{display:block}
body[data-vit-signatur] a.kort-sig .inngang-pil{display:inline-block;margin-top:10px;
  font:600 var(--fs-13) var(--font-body);color:var(--brand-2)}


/* ══ DOBBEL BOKS — ÉN REGEL, IKKE 41 RETTELSER (26.08.2026) ══════════════
   Kenneth: «Dobbel bokser flere plasser.»

   MÅLT på 11 flater, definisjonen «element med bakgrunn OG ramme, der
   nærmeste forelder med bakgrunn har SAMME bakgrunn og også har ramme»:
   41 tilfeller, fordelt på 26 klassepar. ALLE 41 var rgb(255,255,255) på
   rgb(255,255,255), og hver eneste ramme kom fra --ramme-1 eller --ramme-2.

   ÅRSAKEN ER ÉN VERDI, ikke 41 steder. Fram til 26.08 bar nivå 1 tinten
   (#F0EAF7) og nivå 2 var hvitt: et innholdskort skilte seg fra seksjons-
   boksen på TONE, og ringen var en bonus. Da tinten flyttet til lerretet
   ble --flate-1 og --flate-2 begge #ffffff. Tonen gir nå null skille, og
   ringen står igjen alene — tegnet to ganger, konsentrisk, i samme fyll.
   Hierarkiets egen lov i vit-tokens.css («tonen blir MØRKERE for hvert
   nivå ned i dybden») er dermed brutt av verdiene, ikke av flatene.

   KUREN: en flate som selv INNEHOLDER en flate, slutter å tegne seg.
   Beholderen er gruppering; kortet inni er innholdet brukeren leser.
   Samme retning som regelen rett over — den gjaldt bare når forelderen
   het .kort/.kort-flate, så alt som lå i en .av-seksjon, .kpi-grid,
   .visboks-flate, .graf-boks eller .sf-lag-row slapp unna. Nå er det
   FORHOLDET som styrer, ikke navnet på forelderen.

   border-color:transparent i stedet for border:0 — ringen forsvinner uten
   at layouten flytter seg en piksel.

   Lista under er appens FLATE-ORDBOK og brukes på BEGGE sider av
   forholdet. Skal en ny flate telle som boks, skrives den inn HER — ikke
   i sida. En flate som ikke står her, kan ikke melde seg ut heller: den
   fanges av dobbeltboks-vakta og må inn.

   DE TO LISTENE ER IKKE HELT LIKE, OG SKAL IKKE VÆRE DET. Den ytre sier
   «dette kan gi fra seg boksen»; den indre sier «dette teller som en flate
   inni». .chat står bare i den indre: chat-VINDUET skal beholde ramma si,
   ellers havner boblene på samme tone som grunnen under (målt: bobla og
   forelderen begge rgb(237,235,239) da .chat ga fra seg flata). Innmaten
   i vinduet — .chat-foot, .compose — gir fortsatt fra seg.

   .rg-doc og .rg-doc-boks staar ogsaa BARE i den indre lista, av samme
   grunn (rettet 26.08 etter at Kenneth fotograferte rapport-generatoren:
   «HVOR MANGE GANGER MAA JEG SI AT BAKGRUNNEN IKKE KAN VAERE SAANN?»).
   Rapporten er et DOKUMENT, og ARKET (.rg-doc) er ikke en gruppering rundt
   innhold — det ER papiret. Brettet bak arket (.rg-doc-boks) er derimot en
   gruppering, og staar fortsatt i den ytre lista: ellers ligger hvitt ark
   paa hvitt brett med to ringer, som er nettopp den doble boksen regelen
   finnes for. Maalt foer rettelsen: baade .rg-doc-boks og .rg-doc sto
   paa rgba(0,0,0,0) med gjennomsiktig ramme, saa hele rapporten laa rett
   paa det graa lerretet. Sebraen i tabellene kunne dermed heller ikke
   leses: en stripe over lerret mot lerret er to toner av lerret. */
body[data-vit-modul] :is(.kort,.kort-flate,.visboks,.visboks-flate,.aars-del,
  .chart-card,.kpis,.kpirad,.kpi-grid,.kpi-group,.kpi,.kpi-card,.vv-kpi,.hero,
  .inngang,.iv-card,.utl-card,.vei-kort,.iv-guide,.ord-section,.bank-q,.doc-q,
  .sf-kort,.sf-lag,.sf-lag-row,.ped-pane,.trappen-detalj,.tabellboks, /* .av-seksjon, .fo-opp, .vv-bransje ER bokser (NYE VITIN 03.09) */
  .tabell-ramme,.graf-boks,.grafboks,.graf,.card,.fk,.pf-panel,.iver-brief,
  .viktigst,.s-txt,.vvb-flagg,.chat-foot,.compose,
  /* .page ER IKKE ET KORT (29.08.2026). Den sto i lista over bokser som gir
     fra seg boksen sin naar de inneholder en boks — og mistet dermed
     padding-inline. Men .page er SIDEBEHOLDEREN: det er den som baerer den
     globale margen. MAALT paa byraa: h1 sto paa x=0 mot 88 paa resultat,
     fordi .page inneholder en .boks. En sidebeholder kan ikke vaere sitt eget
     innhold. Den staar fortsatt i den INDRE lista under — et kort som
     inneholder en .page skal fortsatt gi fra seg boksen. */
  .pr,.pl-v4-graf,.content-card,.ps-sec,.rapport-forside,.forside-boks,
  .regne,.rg-card,.rg-doc-boks,.kpi-gruppe,.step-flate,.indre,.boks,
  .b-step,.builder,.fakta,.tema,.formel,
  [_echarts_instance_]):has(:is(.kort,.kort-flate,.visboks,
  .visboks-flate,.aars-del,.chart-card,.kpis,.kpirad,.kpi-grid,.kpi-group,
  /* NYE VITIN 03.09: KPI-cellene og Sammenhengens indre (.viktigst/.s-txt) er IKKE bokser —
     rekka er ÉN boks med skiller, Sammenhengen ÉN boks med lys lilla. */
  .hero,.inngang,.iv-card,.utl-card,.vei-kort,.iv-guide,
  .ord-section,.bank-q,.doc-q,.sf-kort,.sf-lag,.sf-lag-row,.ped-pane,
  .trappen-detalj,.av-seksjon,.tabellboks,.tabell-ramme,.graf-boks,.grafboks,
  .graf,.card,.fk,.pf-panel,.iver-brief,.fo-opp,.vv-bransje,
  .vvb-flagg,.chat,.chat-foot,.compose,.pr,.pl-v4-graf,.page,.content-card,.ps-sec,
  .rapport-forside,.forside-boks,.regne,.rg-card,.kpi-gruppe,.step-flate,.rg-doc,
  .rg-doc-boks,.indre,.boks,.b-step,.builder,.fakta,.tema,.formel,.iv-lop,
  /* SERVICEPORTALENS KORT (30.08.2026). Kenneth: «du ser like godt som meg at
     boksene under Saker ikke stemmer.» MAALT: paa forsta og lovgrunnlag er
     .kort-flate gjennomsiktig uten ramme — boksen er kortet INNI. I portalen
     sto flata hvit med ramme og radius 16, og kortene inni med ramme og radius
     12: boks i boks, akkurat det denne regelen finnes for.
     Aarsaken var at portalens kort ikke sto i flate-ordboka, saa flata visste
     ikke at den inneholdt bokser. De hoerer i den INDRE lista: de ER innholdet
     man leser, ikke en gruppering rundt noe annet. */
  .sak-rad,.haster-kort,.enkel-rad,.kb-kort,.puls-linje,
  [_echarts_instance_])){
  /* border:0, ikke bare gjennomsiktig farge: en 1 px ramme tar plass selv
     naar den ikke synes, og skjoev innholdet 1 px inn paa hver side —
     maalt 89→905 mot overskriftenes 88→906. */
  background:none;border:0;border-radius:0;
  /* OG PUSTEROMMET FOELGER BOKSEN — GLOBALT (29.08.2026).
     Regelen fantes fra 26.08, men bare for fire KPI-beholdere: «uten boks er
     det bare et innrykk som skyver kortene ut av linje med resten». Den
     gjelder like mye for alle boksene i lista over.
     MAALT paa Forstaa: overskriftene og velgerne sto 88 → 906, mens
     infoboksen, grafen og svarraden sto 109 → 885 — 21 px innrykk fra en
     .kort-flate som ikke maler noe i det hele tatt. Kenneth: «ser du
     virkelig ikke at bokser og overskrifter har forskjellig innrykk?» og
     «valgmenyen er lengre til hoegre enn infoboksen og grafen».
     Bare VANNRETT padding nulles: den loddrette rytmen er avstand mellom
     ting, ikke innrykk, og den skal staa. */
  padding-inline:0;
}

/* Pusterommet fulgte boksen. KPI-beholdernes padding deles ut av DETTE arket
   («Rader og lister med luft mellom: gi dem samme puste-rom som boksen»,
   lenger nede) — uten boks er det bare et innrykk som skyver kortene ut av
   linje med resten av innholdet i kortet. Målt: cellene sto 12 px inn, teksten
   over dem 0. Gjelder kun de fire beholderne arket selv tetter; en komponent
   som eier sin egen padding (.trappen-detalj: 26/28 fra sida) beholder den. */
body[data-vit-modul] :is(.kort,.kort-flate)
  :is(.kpis,.kpirad,.kpi-grid,.kpi-group):not(:is(.av-del,.ed-del,.en-del,.opps,.av-seksjon) *){
  padding:0;
}
/* SAMME BEGRUNNELSE, NÅ PÅ FORHOLDET (26.08): en KPI-beholder som ga fra seg
   boksen over, holder heller ikke på boks-paddingen. Målt på Oversikt etter
   dobbeltboks-regelen: overskrifta lå på 95 px, KPI-kortene på 101 px og
   grafen på 112 px — tre venstrekanter på samme flate. Begrenset til de fire
   beholderne arket selv tetter, av samme grunn som regelen over: en komponent
   som eier sin egen padding beholder den. */
body[data-vit-modul] :is(.kpis,.kpirad,.kpi-grid,.kpi-group):has(:is(.kpi,.kpi-card,
  .vv-kpi,.kort,.kort-flate,.utl-card,.card,.graf,[_echarts_instance_])){
  padding:0;
}
/* LUFT-VEDTAKET (Kenneth 23.08, globalt): avstanden mellom hovedblokkene på
   en modulflate eies HER, av ett token — aldri av hver side. Direktebarn av
   main er flatens blokker; alt inni dem beholder sin egen tetting. Overlegg
   (fixed/absolute) ligger utenfor flyten og påvirkes ikke av margin-top. */
/* LUFTA MELLOM HOVEDBLOKKENE — OGSAA I .page (30.08.2026). Luft-vedtaket
   23.08 traff bare `main`. Halvparten av flatene har innholdet i en
   `.page` i stedet, og der klistret blokkene seg sammen — Kenneth:
   «luft mellom Skriv til oss her og boksen». Samme regel, begge formene. */
body[data-vit-modul] :is(main, .page) > * + * { margin-top: var(--luft-blokk); }
/* Menyrader (valg-/fane-rader: lens, gran, seg) skal ALDRI ligge klistret på
   blokkene rundt seg — målt 0px på likviditet 23.08. Én global regel, ikke
   én per side. q-faner har sin egen (større) rytme fra kort-flate-vedtaket. */
/* MENYRADENES LUFT PAA SKALAEN (26.08.2026). Sto 18/14 px fra 23.08 — to
   verdier som ikke finnes hos Fiken, Tripletex, Visma eller Atlassian.
   MAALT paa Oversikt: fanerada ble 78 px hoy selv om selve sporet er 42,
   fordi 32 av dem var denne margen. Naa paa --luft-blokk begge veier. */
/* DYBDEVALGET (Innsikt/Detaljene) har ÉN global plassering (Kenneth 23.08:
   «finn en global plassering — ikke oppe i høyden med overskriften»): egen
   rad rett under sidehodet/menyen, venstrestilt, med menyrad-rytmen over.
   Aldri inne i .doc-head. Fasiten er forsta.html (16.08-vedtaket). */

/* Overskrifta UT av boksen (Kenneth 23.08: «overskriftene skal på den hvite
   bakgrunnen» + «ikke dobbelt lag med rosa»): en .kort som har .kort-flate-
   wrapper er bare en usynlig gruppering — hodet står på lerretet, flata bærer
   den ENE boksen. Sider uten wrapper beholder seksjonsboksen som før. */
/* ALLE overskrifter svarte (Kenneth 22.08: «ALLE overskrifter. Svart.») —
   globalt her, så ingen side kan overstyre tilbake til brand med sin lokale
   .kort-sp. Pila (.spm) beholder brand som pek-affordans. */
body[data-vit-modul] .kort-sp{color:var(--ink)}
body[data-vit-modul] .kort-sp:hover{color:var(--ink-2)}

/* Rytmen kommer fra --luft-blokk, ikke fra 34 (26.08). Den hardkodede 34-eren
   her VANT over luft-vedtaket rett over — målt 34 px der regelen sa 28 på både
   Forstå og Resultat. Samme tall sto lokalt i fire sider. Én kilde nå. */
body[data-vit-modul] .kort:is(:has(> .kort-flate),.h-flate){background:none;border:0;padding:0;margin:var(--luft-blokk) 0}
body[data-vit-modul] .kort:is(:has(> .kort-flate),.h-flate) > .kort-hode{margin:0 0 10px}
body[data-vit-modul] .kort-flate{background:var(--flate-1);border:1px solid var(--ramme-1);border-radius:var(--boks-radius);box-sizing:border-box;padding:17px 20px 15px}
/* OVERSKRIFTEN STÅR INNE I BOKSEN (Kenneth 03.09: «alle overskriftene er utenfor boksen — hva var det mocken
   hadde?»). Mock 21: <section class="k"><h2>…</h2>graf</section>. Appen har overskrifta som eget element FORAN
   boksen på seks familier (målt 03.09). Overskriftstripa blir boksens topp (hvit, ramme uten bunn), og boksen
   rett under mister topp-ramma og margen — sammen er de ÉN boks. Står etter kort-hode-reglene over og veier
   det samme, så rekkefølgen avgjør. */
body[data-vit-signatur] .kort > .kort-hode:has(+ .kort-flate):not(:has(+ .kort-flate > .story)),
body[data-vit-modul] .kort:is(:has(> .kort-flate),.h-flate) > .kort-hode:has(+ .kort-flate):not(:has(+ .kort-flate > .story)),
body .cc-headline,
body .sek-head,
body main h2:has(+ .kpi-grid),
body .iv-h:has(+ .iver-brief){background:var(--flate-1);border:1px solid var(--ramme-1);border-bottom:0;border-radius:var(--boks-radius) var(--boks-radius) 0 0;padding:14px 16px 4px;margin:var(--luft-blokk) 0 0}
body[data-vit-modul] .kort-hode + .kort-flate,body[data-vit-signatur] .kort > .kort-hode + .kort-flate{padding-top:0;margin-top:0}
/* Forstå: overskrifta står over Sammenhengen (lilla boks) — ingen stripe der, bare 18 luft. */
body[data-vit-modul] .kort > .kort-hode:has(+ .kort-flate > .story){padding-bottom:0;margin-bottom:var(--luft-blokk)}
body[data-vit-modul] .kort-hode + .kort-flate > .story{margin-top:0}
/* Flata er en flex-kolonne: marger kollapser ikke, så dybdevalget etter Sammenhengen eier ingen toppmarg (målt 03.09: 36). */
body[data-vit-modul] .kort-flate > .story + :is(.seg,.gran,.lens){margin-top:0}
body .kort-hode:not(:has(+ .kort-flate > .story)) + .kort-flate > :first-child,
body .cc-headline + .chart-card,
body .sek-head + *,
body main h2 + .kpi-grid,
body .iv-h + .iver-brief{border-top:0;margin-top:0;border-top-left-radius:0;border-top-right-radius:0} /* body-prefikset gir vekt over sidenes egne .chart-card/.card-marger (forsida har ikke data-vit-signatur) */

/* NIVÅ 2 — hvitt innhold oppå seksjonsboksen. */
body[data-vit-modul] .kpi-grid > *,
body[data-vit-modul] .kpirad > *,
body[data-vit-modul] .hero .graf,
body[data-vit-modul] .kort .graf,
body[data-vit-modul] .utl-card,
body[data-vit-modul] [_echarts_instance_]{
  background:var(--flate-2);border:1px solid var(--ramme-2);
  border-radius:var(--boks-radius);box-sizing:border-box;
}
/* KPI-CELLENE ER KORT (Kenneth 13.08: «KPI-boksene har ikke noe hvitt lag
   mellom boksen og tallet»).
   Her sto det tidligere at «.kpis er ÉN sammenhengende stripe, ikke kort i en
   rad», og cellene fikk `background:transparent;border:0`. Den regelen slo
   alt annet — også .kpi-regelen lenger nede — og var altså ROTÅRSAKEN til at
   tallet la seg rett på den tonede flata. Målt før endringen: beholderen
   #FCF8FF, cellen rgba(0,0,0,0).
   Cellene er nå nivå 2, som alt annet innhold oppå en seksjonsboks. */
body[data-vit-modul] .kpis{padding:0;gap:0}
/* Cellene er ikke bokser: skille til venstre, ellers flate (NYE VITIN 03.09). */
.kpi,body[data-vit-modul] .kpis > *{
  background:transparent;border:0;border-left:1px solid var(--ramme-2);
  border-radius:0;box-sizing:border-box;padding:12px 16px;
}
.kpis > :first-child,body[data-vit-modul] .kpis > :first-child{border-left:0}
/* Rader og lister med luft mellom: gi dem samme puste-rom som boksen. */
body[data-vit-modul] .kpi-grid,
body[data-vit-modul] .kpirad{padding:12px}
/* NIVÅ 3 — hover/fremhevet, ett hakk dypere enn seksjonsboksen. */
body[data-vit-modul] .kpi-grid > *:hover,
body[data-vit-modul] .kpirad > *:hover{background:var(--flate-3);border-color:var(--ramme-3)}
/* Grafen er ALLTID hvit flate — uansett hvilken boks den bor i */
[_echarts_instance_]{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--boks-radius)}
.visboks-flate [_echarts_instance_]{border:0;border-radius:0;background:transparent}
.visboks-verktoy{display:flex;align-items:center;gap:4px;flex:none}
/* boksens egne verktøy = M3-TEKSTKNAPPER (rammeløse, brand, tone ved hover) */
.visboks-verktoy .qf{color:var(--brand-2);background:transparent;border-color:transparent}
.visboks-verktoy .qf:hover{background:var(--boks-hoy);color:var(--brand-2);border:0}
.visboks-verktoy .qf.on{background:var(--valg-valgt-flate);color:var(--valg-valgt-farge);border:0;padding:8px 12px}
.hjelp-lenke{display:inline-flex;align-items:center;gap:7px;background:none;border:none;padding:0;margin:2px 0 10px;cursor:pointer;font:600 var(--fs-sm) var(--font-display);color:var(--brand-2)}
.hjelp-lenke .pip{width:7px;height:7px;border-radius:var(--r-sirkel);background:var(--brand)}
.hjelp-lenke:hover{text-decoration:underline}
.visboks-tittel{font:600 var(--fs-base) var(--font-display);color:var(--kort-overskrift,var(--brand));letter-spacing:-.01em;margin-bottom:3px}
.visboks-hint{font-size:var(--fs-11-5);color:var(--ink-3);line-height:1.5;margin-bottom:9px}
.visboks-flate{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--boks-radius);padding:10px 12px}
/* (18.08: den lokale 1180px-regelen som ga .qf egen padding og egen
   skriftstoerrelse er slettet — den var nettopp «en egen variant». Maalene
   kommer fra --valg-*-tokenene, som for alle andre valgkontroller.) */
/* 980px og ned: IKKE krymp skriften videre — full fs-base + litt luftigere
   padding gjør at raden bryter til to JEVNE rader (4+3) i stedet for en
   skjev 6+1-rad med én dinglende fane alene på rad to (målt empirisk med
   Playwright ved 900/860/800/760px — 4+3 holder seg stabilt gjennom hele
   sonen mellom 980px og 700px-vertikalgrensen). */
/* Smalt: linja bryter selv (flex-wrap) — ingen egne regler noedvendig. */
.pan-eye{font:600 var(--fs-2xs) var(--font-mono);letter-spacing:1px;text-transform:uppercase;color:var(--brand-2);display:flex;align-items:center;gap:7px;margin-bottom:12px}
.pan-eye .pip{width:6px;height:6px;border-radius:var(--r-sirkel);background:var(--brand)}
/* Lyspære i marg-headeren (Kenneth 21.06: «lyspære i margen», UNIFORMT) — erstatter pip-prikken i alle læremarger. */
.pan-bulb{display:inline-flex;width:15px;height:15px;color:var(--brand);flex:none}
.pan-bulb svg{width:100%;height:100%}
.sok{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--boks-radius);padding:8px 12px;margin-bottom:14px}
.sok svg{width:14px;height:14px;color:var(--stone);flex:none}
.sok input{flex:1;border:0;background:transparent;font:500 var(--fs-12-5) var(--font-body);color:var(--ink);outline:none}
.sok input::placeholder{color:var(--stone)}
.sok-treff{margin:-6px 0 14px;display:flex;flex-wrap:wrap;gap:6px}
.sok-treff button{font:600 var(--fs-11) var(--font-body);color:var(--brand-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--knapp-radius);padding:4px 10px;cursor:pointer}
.pan-tom{color:var(--ink-2);font-size:var(--fs-13)}
.pan-tom p{margin-bottom:10px}
/* FAGORD-understrek — GLOBAL (Kenneth 24.07: «strek under ALLE fagord og forklar
   i margen»). Én kilde for alle sider; VIT_FAGORD.wrap merker <span class="term"
   data-term>. Prikket brand-strek = «dette ordet kan forklares». */
/* ÉN enkel prikket strek på ALLE fagord (Kenneth 04.08): selektoren dekker nå
   alle [data-term] (før krevdes BÅDE .term-klasse OG attributt — ord med bare
   data-term manglet strek). Sidene hadde i tillegg lokale
   text-decoration:underline-regler oppå denne border-bottom → DOBBELSTREK;
   de lokale reglene er fjernet. Streken bor KUN her. */
span[data-term],span[data-pl-term],button[data-term],.term[data-term]:not(div){border-bottom:1.5px dotted var(--brand-line);text-decoration:none;cursor:pointer}
/* Kort/rader som bærer data-term (vlk-/vpl-flater) er klikkbare, men skal
   IKKE ha ord-strek rundt hele kortet — kun peker. */

.term[data-term]:hover{border-bottom-color:var(--brand)}
/* OVERSKRIFTER har ALDRI fagord-strek (Kenneth 24.07) — ordet er fortsatt
   klikkbart, men streken hører til løpetekst, ikke titler/etiketter. */
:is(h1,h2,h3,h4,.doc-head,.doc-meta,.kort-sp,.kort-t,.kort-h,.card-h,.opp-hd,.opp-tit,.sek-tittel,.vlm-navn,.vlm-eye,.graf-tit,.trappen-h,.trappen-detalj-h,.kpi-lbl,.vv-kpi-lbl,.lbl) .term[data-term]{border-bottom:0}
.term-vis .tv-cat{font:600 var(--fs-2xs) var(--font-mono);letter-spacing:.8px;text-transform:uppercase;color:var(--stone)}
.term-vis .tv-name{font:600 var(--fs-22) var(--font-display);color:var(--ink);letter-spacing:-.2px;margin:4px 0 6px}
.term-vis .tv-tag{font-size:var(--fs-13);color:var(--ink-2);margin-bottom:14px}

.tv-x{float:right;font:600 var(--fs-11) var(--font-body);color:var(--olive);background:var(--surface);border:1px solid var(--line);border-radius:var(--knapp-radius);padding:4px 10px;cursor:pointer}

/* ===================================================================
   KANONISK LÆREMARG-KORT (.vlm) — ÉN visuell for ALLE marger.
   Lyspære-ikon + overskrift + pedagogiske blokker. Brukt likt av
   VIT_FAGORD.html (fagord) OG VIT_LABMARG (verktøy-forklaring), på
   oversikt, forstå, verktøy, rapport og personal. Endre HER → treffer alt.
   (Kenneth 21.06: «UNIFORMT». Lyspære + dette overskriftsformatet er fasit.)
   =================================================================== */
.vlm{font:400 var(--fs-sm)/1.65 var(--font-body,sans-serif);animation:vlmInn var(--fade-marg,.5s) cubic-bezier(.2,.7,.2,1)}
/* Fra vit-labmarg.js (04.09.2026): skriptet eide disse alene; nå står de her med resten av margen. */
.vlm-instruks-rad{display:flex;gap:10px;align-items:flex-start} /* boksen (flate, ramme, marg) står lenger nede sammen med .marg-laere */
@keyframes vlmInn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* GLOBAL REVEAL-keyframe (Kenneth 23.07): rolig fade brukt på GRAFENE (Forstå
   .graf). Læremargen (.vlm) har sin egen vlmInn. KPI-boksene skal IKKE ha fade. */
@keyframes vitReveal{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.vlm-top{display:flex;align-items:flex-start;gap:12px;padding-bottom:16px;margin-bottom:18px;border-bottom:1px solid var(--line)}
.vlm-ik{flex:none;width:38px;height:38px;border-radius:var(--boks-radius);display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);color:var(--brand-2)}
.vlm-ik svg{width:19px;height:19px}
.vlm-eye{font:600 var(--fs-2xs)/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--brand-2);margin-bottom:5px}
.vlm-navn{font:600 var(--fs-xl)/1.2 var(--font-display);color:var(--ink);letter-spacing:-.01em}
.vlm-lead{font-size:var(--fs-13);color:var(--ink);margin:-8px 0 16px;line-height:1.55}
.vlm-blk{margin-bottom:15px}
.vlm-blk-l{font:600 var(--fs-2xs)/1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--brand-2);margin-bottom:5px} /* KRAKEN-lilla overskrifter (Kenneth 07.07) */
.vlm-blk-t{margin:0;color:var(--ink);font-size:var(--fs-12-5);line-height:1.55} /* blekk, aldri svak grå (Kenneth 07.07) */
.vlm-blk-t b{color:var(--ink)}
.vlm-formel{font:500 var(--fs-xs) var(--font-mono);color:var(--brand-2);background:var(--surface-2);border:1px solid var(--line-soft);border-radius:var(--knapp-radius);padding:6px 10px;width:max-content;max-width:100%}
/* LAEREBOKSEN ER BLOKKA, IKKE EN MERKELAPP PAA DEN (29.08.2026).
   Vedtaket var «laeremargen sine tekstbokser maa ha samme farge som
   infoboksen». Fargen laa paa .vlm-blk.boks — altsaa bare paa de blokkene
   noen HUSKET aa merke. MAALT innlogget over 21 sider: 15 marger tegnet
   null blokker med laereboksfargen; likviditet hadde 4 av 10. En regel som
   avhenger av at kalleren husker en klasse, er ikke en regel.
   Naa er blokka boksen. .bra og .pass beholder sine egne toner — de sier
   noe annet (det gikk bra / se opp), og det er ikke en tekstboks.
   .boks staar igjen som et navn som ikke lenger gjoer noe, saa markup
   som alt bruker den fortsatt virker. */
.vlm-blk:not(.bra):not(.pass){background:var(--laereboks-flate);border:1px solid var(--laereboks-ramme);border-radius:var(--boks-radius);padding:13px 15px}
/* SAMME VEDTAK, DE TO ANDRE BLOKKTYPENE I MARGEN (29.08.2026).
   MAALT: margen bygges tre maater. .vlm-blk er én. .marg-laere er hvite
   kort (arkiv, pengestroem, verdivurdering) og .vlm-instruks-rad er
   «92»-radene (budsjett, arkiv, dokumenter). De to siste sto
   gjennomsiktige eller hvite, saa marger bygget slik hadde ikke ett
   eneste element i laereboksfargen — budsjett var helt hvit.
   Alle tre er tekstbokser i laeremargen, og vedtaket gjelder dem alle. */
.marg-laere,
.vlm-instruks-rad{background:var(--laereboks-flate);border:1px solid var(--laereboks-ramme);border-radius:var(--boks-radius);padding:13px 15px;margin-bottom:12px}
/* HELE .marg-laere BOR HER (29.08.2026). Komponent-vakta stoppet pushen:
   fire sider — arkiv, arkiv-vis, likviditet og rapport-baerekraft — hadde
   hver sin kopi av flate, ramme og radius (--surface-2 / --line / --r).
   Da lander ikke en global endring: den lokale regelen lastes etterpaa og
   vinner. Typografien foelger med hit, ellers blir halve komponenten
   liggende igjen ute i sidene. Likviditet bruker h4 der de andre bruker h2;
   begge staar her, saa ingen av dem trenger sin egen. */
.marg-laere{margin-top:16px}
.marg-laere :is(h2,h3,h4){font:600 var(--fs-base) var(--font-display);color:var(--ink);margin:0 0 7px;letter-spacing:-.01em}
.marg-laere p{margin:0;font:400 var(--fs-sm)/1.65 var(--font-body);color:var(--ink)}
.marg-laere p b{color:var(--ink);font-weight:600}
.vlm-blk.bra{background:color-mix(in srgb,var(--pos) 7%,transparent);border:1px solid color-mix(in srgb,var(--pos) 22%,transparent);border-radius:var(--knapp-radius);padding:8px 11px}
.vlm-blk.pass{background:color-mix(in srgb,var(--neg) 6%,transparent);border:1px solid color-mix(in srgb,var(--neg) 22%,transparent);border-radius:var(--knapp-radius);padding:8px 11px}
.vlm-kilder{font:500 var(--fs-2xs) var(--font-mono);color:var(--stone)}
.vlm-lukk{margin-top:18px;font:600 var(--fs-11-5) var(--font-body);color:var(--olive);background:var(--surface);border:1px solid var(--line);border-radius:var(--knapp-radius);padding:7px 13px;cursor:pointer;transition:border-color .15s,color .15s}
.vlm-lukk:hover{border-color:var(--brand-tint);color:var(--brand-2)}
.vlm-tom{font:400 var(--fs-13)/1.6 var(--font-body);color:var(--stone);padding:4px 2px}
.vlm-tom b{color:var(--ink-2)}
.vlm-hint{margin-top:6px;padding:11px 13px;border-radius:var(--boks-radius);background:var(--surface-2);border:1px solid var(--line);font:500 var(--fs-xs)/1.5 var(--font-body);color:var(--olive)}

/* ===== DELT DASHBOARD-TONE — én kilde for ALLE oversikter (Økonomi + Lager + framtidige) =====
   Komposisjonsstandard «stripe + scene» (Kenneth 13.07): nøkkeltallene er en LAV STRIPE
   (tall + retning, aldri mer enn tre linjer lavt), grafen er SCENEN og får høyden.
   Endre HER → treffer alle oversiktene likt.
   Token-basert; font-tokens har nested fallback så det funker uansett alias (--display/--font-display). */
/* Stripen er ÉN forankret boks (Kenneth 14.07: kortene skal ikke «flyte» —
   og tall kan ALDRI falle ut: min-width:max-content gjør at hvert segment
   alltid rommer sitt eget tall; blir det trangt, ruller boksen sidelengs). */
/* RADEN BREKKER, DEN RULLER IKKE (26.08.2026).
   Funnet kom først da HELE flata ble tegnet: fire KPI-er ved siden av
   læremargen får ikke plass i NOEN størrelse. «2 460 473 kr» krever 205 px
   ved 36 px (137 px ved 24 px); fire kolonner krever da et vindu på 1 648 px.
   Dagens layout gir 177 px per kolonne på 1440 og 113 px på 1024.
   Dette er ikke et størrelsesproblem — det er et breddeproblem som har ligget
   der siden læremargen ble 500 px. Med overflow-x:auto rullet raden sidelengs
   i stedet, så den fjerde KPI-en var usynlig uten at noe sa fra.
   Container-query, ikke mediaspørring: det er KORTETS bredde som avgjør, og
   kortet er smalere når margen står åpen. 996 = 4×205 + 3×32 + 80. */
/* Lufta inni kortet bodde i tre sider med tegn-for-tegn identisk verdi
   (intervju, sykefravaer, lager-forsta). Den hører i malen — 26.08. */
.kort,.kort-flate{container-type:inline-size}
/* container-type paa .app > main er FJERNET 26.08. `contain: inline-size`
   gjoer elementets bredde uavhengig av innholdet — der forelderen ikke gir
   en bestemt bredde, faller kolonnen sammen. Maalt paa rapport-generator og
   presentasjon: teksten brakk til ett tegn per linje. Den ble lagt inn for
   KPI-terskler som siden er rullet tilbake, saa den trengs ikke. */
body[data-vit-modul] .kort{padding:17px 20px 15px;margin-bottom:14px}
/* KPI-RADEN TAR BREDDEN DEN FAKTISK FÅR (Kenneth 26.08: «KPI kortene tar så
   stor plass at grafen er 2 cm høg. Er det fuckings mulig?»).

   MÅLT på Oversikt i 1440×900-vindu: beholderen er 866 px bred, ikke 996.
   Firekolonne-grensa slo derfor ALDRI inn — læremargen tar 500 px — og de
   seks kortene la seg i to kolonner over TRE rader: 279 px, 31 % av
   vindushøyden. Grafen fikk 240 px, 27 %. Nøkkeltallene spiste grafen.

   Faste terskler er gjetting om en bredde ingen har målt, og de gjettes feil
   hver gang marginen, menyen eller kortantallet endrer seg. auto-fit spør i
   stedet beholderen hva den har: 866 px gir fire spor (4×190 + 3×2 = 766),
   seks kort i to rader = 185 px målt etterpå. 94 px tilbake til grafen, uten
   en eneste terskel å bomme på.

   MOBILEN TRENGER SAMME SPØRSMÅL, IKKE SIN EGEN TERSKEL (Kenneth 26.08:
   «Lufta er fin på chrome, windows. Dårlig på iphone»). MÅLT på iPhone 14:
   390 px skjerm gir 320 px innhold, to spor à 190 krever 382 — den bommet med
   62 px og la seks kort i ÉN kolonne: 562 px, 85 % av skjermen. Du måtte rulle
   forbi hele nøkkeltallet før grafen begynte.
   `min(240px, 47%)` lar sporet krympe når beholderen er for smal til to, og
   ellers ikke: 320 px gir 150 px → to kolonner, 918 px gir 240 px → tre.
   240 og ikke 190: med seks nøkkeltall ga 190 fire kolonner, altså 4+2 med
   tomrom ved siden av de to siste. Tre gir 3+3 (Kenneth 26.08). Én regel, null terskler, og telefonen bæres av samme spørsmål som
   skjermen — «hvor bred er beholderen», ikke «hvilken enhet er dette». */
.kpis{display:grid;grid-template-columns:1fr;margin:2px 0 12px;background:var(--flate-1);border:1px solid var(--ramme-1);border-radius:var(--boks-radius);padding:0;gap:0;overflow:hidden;
  grid-template-columns:repeat(auto-fit,minmax(min(240px,47%),1fr)); /* slått sammen 04.09 */
} /* ÉN boks med skiller (NYE VITIN 03.09) */
/* ANTALL KOLONNER MAA PASSE ANTALL KORT (26.08.2026, rettet samme dag).
   Foerste utgave tvang 1/2/3/6 fordi Oversikt har seks noekkeltall. Den
   regelen fulgte med til mine-kunder, som har FIRE — og fire kort i tre
   kolonner ble 3+1 med et hull ved siden av. Det er samme feil jeg har
   jaget hele dagen: en verdi fra én flate lagt inn som om den var felles.
   auto-fit lar sporene strekke seg, saa raden fylles uansett antall.
   :has() legger paa seks-regelen KUN naar det faktisk er seks kort. */

@container (min-width:1500px){.kpis:has(.kpi:nth-child(6):last-child){grid-template-columns:repeat(6,1fr)}}
@container (min-width:700px){.kpis:has(.kpi:nth-child(6):last-child){grid-template-columns:repeat(3,1fr)}}
@container (min-width:1500px){.kpis:has(.kpi:nth-child(6):last-child){grid-template-columns:repeat(6,1fr)}}
/* KPI-segment (Kenneth 16.07): tallet skal være LESBART og heller bryte
   over to linjer enn å krympes eller renne ut — like kolonner, tekst bryter. */
/* KPI-BOKSEN SKAL VÆRE ET KORT (Kenneth 13.08: «KPI-boksene har ikke noe hvitt
   lag mellom boksen og tallet»).
   Målt før endringen: beholderen .kpis sto på #FCF8FF (flate-1, tonet) og
   selve .kpi på transparent — altså gikk tallet rett på den tonede flata.
   M3-hierarkiet er tonet seksjon → HVITT kort → innhold, og det midterste
   laget manglet. Hårlinja er --ramme-2, samme som andre kort inni en seksjon. */
.kpi{flex:1 1 0;min-width:0;position:relative;text-align:left;font-family:var(--body,var(--font-body,system-ui,sans-serif));background:var(--flate-2);border:1px solid var(--ramme-2);border-radius:var(--knapp-radius);padding:8px 12px}
/* Skillestreken mellom cellene er fjernet 13.08: hver celle har nå egen
   hårlinje, og streken ble en dobbel kant. */
/* RETTET 22.08: etiketten hadde white-space:nowrap;overflow:hidden — med 10
   KPI-kort som klemmes til flex:1 1 0 ble lange etiketter (DRIFTSRESULTAT,
   RESULTATMARGIN, KOSTNADSANDEL) klippet MIDT I ORDET. Nå brytes de til to
   linjer i stedet. Trykke-roboten så det aldri (den måler JS-feil, ikke at
   tekst klippes — «grønne vakter måler ikke design»). */
/* ETIKETTEN UT AV MERKEFARGEN, TALLET OPP (26.08.2026).
   MÅLT: KPI-tallet var 14,5 px — mindre enn brødteksten (15 px), og minst av
   alle KPI-verdier i appen (grafene 24, bærekraft 22, rapport 21–27,
   presentasjon 30–44). Forholdet tall ÷ kortoverskrift var 0,76×, altså
   overskrifta veide tyngre enn tallet den navngir. Alle andre ligger over:
   Advise 1,75× · Tripletex 1,58× · Fiken 1,20× · Conta 1,11× · PowerOffice 1,00×.
   36 px gir 1,50×, nær Tripletex, og koster 9 px korthøyde.
   Etiketten sto hardt på --brand-2 og leste ikke --kort-overskrift, som ble
   satt til svart 22.08 med kommentaren «ALLE overskrifter». Grafenes egen
   etikett (vit-viz.js) gjorde det riktig hele tiden. Dette fullfører altså et
   vedtak som var halvveis rullet ut — det er ikke et nytt designvalg. */
.kpi .kl{font:600 var(--fs-2xs)/1.2 var(--mono,var(--font-mono,monospace));letter-spacing:.04em;text-transform:uppercase;color:var(--kort-overskrift,var(--ink));display:flex;align-items:flex-start;flex-wrap:wrap;gap:2px 6px;min-width:0;white-space:normal;overflow-wrap:break-word}
.kpi .kv{font:700 var(--fs-36)/1.1 var(--display,var(--font-display,sans-serif));color:var(--ink);margin-top:2px;letter-spacing:-.02em;white-space:normal;overflow-wrap:break-word}
.kpi .kv.dn{color:var(--neg)}
/* Underteksten kuttes ALDRI (Kenneth 23.08: etiketter aldri avkuttet — seks
   «…»-tekster målt på lager). Den bryter til ny linje i stedet. */
.kpi .kd{font:600 var(--fs-2xs)/1.35 var(--mono,var(--font-mono,monospace));color:var(--olive);margin-top:2px;white-space:normal;overflow-wrap:break-word}
/* KLIKKBARE KPI-kort (Kenneth 21.07, funn E): interaksjonen (hover/valgt) bor HER
   — ÉN delt kilde, Oversikt (index.html) er referansen. Scopet til [data-kpi] så
   kun kort som faktisk åpner margen ser klikkbare ut (mine-kunder sine statiske
   fliser berøres ikke). Endre HER → Økonomi og Lager følger hverandre alltid. */
.kpis .kpi[data-kpi]{cursor:pointer;transition:background .15s,box-shadow .15s}
.kpis .kpi[data-kpi]:hover{background:var(--surface-2)}
.kpis .kpi[data-kpi].sel{background:color-mix(in srgb,var(--brand) 2.5%,var(--surface));box-shadow:inset 0 0 0 1.5px var(--brand-2)}
/* Seksjonsboksen i flate-hierarkiet (M3-V2, 03.08): lerret tone 98 → boks
   tone 94 UTEN skygge (dybde = tone) → innhold (graf/tabell) på hvit flate
   oppå ([_echarts_instance_]-regelen gjør grafflaten hvit). Var --surface +
   skygge — Oversikt m.fl. lå da som hvite flak rett på lerretet (Kenneth
   04.08: «alle tokens feil på oversikt»). */
.chart-card{background:var(--boks);border:1px solid var(--line);border-radius:var(--boks-radius);padding:14px 18px 12px;margin-bottom:14px}
.cc-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:0}
/* Boks-/kortoverskrift = --kort-overskrift (brand), ALDRI svak grå og aldri
   svart. «Omsetning» på Oversikt sto i svart mens Forstå hadde lilla på samme
   nivå — Kenneth 06.08. Tokenet fantes fra før; kortet leste det bare ikke. */
.cc-title{font:600 var(--fs-md) var(--font-display,sans-serif);color:var(--kort-overskrift)}
.cc-chart{height:430px;width:100%;margin-top:8px}
.cc-sub{font-size:var(--fs-xs);color:var(--olive);margin-top:8px}
/* SAMMENLIGNINGS-LINJE (Kenneth 18.07): ÉN tydelig, delt linje over grafer som
   sier nøyaktig hva som sammenlignes — erstatter små svake grå årstall-tekster.
   Rendres av VitViz.sammenlikning(el,{naa,mot,modus}). Endres HER → alle flater. */
/* Oppgradert 18.07 (Kenneth: «tydeligere/større … brandfarge — du har et
   stort område»): sammenlignings-linja skal EIE plassen sin, ikke hviske. */
.vv-sml{font:500 var(--fs-sm)/1.5 var(--body,var(--font-body,system-ui,sans-serif));color:var(--ink-2);margin:4px 2px 10px;display:inline-flex;align-items:center;gap:8px}
.vv-sml b,.vv-sml .vv-sml-per{white-space:nowrap} /* periodenavnet brekker aldri midt i («September (til / 16.)» i svarkolonna, 18.09) */
.vv-sml::before{content:'';width:6px;height:6px;border-radius:var(--r-sirkel);background:var(--brand);flex:none}
.vv-sml b{font-weight:600;color:var(--brand-2)}
/* Mobil: stripen forblir én lav boks som ruller sidelengs — samme identitet på alle bredder. */
@media(max-width:760px){.kpi{flex:0 0 auto}.cc-chart{height:320px}}
/* Mobil: nullstill sider som har egen `.app{min-height:100dvh}` + `main{overflow:auto}`
   (to scrollende paneler ment for desktop). Scopet til `.vsh` for å vinne over
   sidenes egen `.app`-CSS (høyere spesifisitet, ingen !important) — så hele scenen
   ruller som én flate og innholdet aldri klemmes bort. Fikser alle slike sider på én gang. */
@media(max-width:920px){
  .vsh .app{grid-template-columns:1fr!important;height:auto;min-height:0} /* !important: slår desktop-regelen med læremargbredden (også !important). Målt 05.09 på 390 px: uten den ble main 50 px bred. */
  .vsh .app>main,.vsh main{height:auto;overflow:visible;padding:18px 16px}
  /* position:static nullstiller sticky fra desktop-regelen — på mobil stables
     margen under innholdet og skal rulle med sida, ikke klistre seg. */
  .vsh .learn{height:auto;max-height:none;overflow:visible;position:static;border-left:0;border-top:1px solid var(--line)}
}

/* «Vitin forklarer»-margen (.learn) som bunn-ark POP-UP på telefon — globalt for alle
   flater. Sparer plass; forklaringen spretter opp når man trykker et fagord. Skallet
   injiserer backdrop + dra-håndtak + «Ferdig» (vit-shell.js). Må stå ETTER ≤920-regelen
   over så den fixed-posisjonen vinner ved ≤700. */
.vsh-marg-backdrop,.vsh-marg-handle,.vsh-marg-close{display:none}
@media(max-width:700px){
  .vsh-marg-backdrop{display:block;position:fixed;inset:0;background:rgba(16,17,20,.42);opacity:0;pointer-events:none;transition:opacity .2s;z-index:199}
  body.vsh-marg-open .vsh-marg-backdrop{opacity:1;pointer-events:auto}
  .vsh .learn{position:fixed;left:0;right:0;bottom:0;top:auto;width:auto;max-width:100%;border:0;border-radius:var(--boks-radius) var(--boks-radius) 0 0;max-height:84dvh;overflow-y:auto;padding:26px 18px 40px;transform:translateY(101%);transition:transform .26s cubic-bezier(.2,.7,.2,1);z-index:200;box-shadow:var(--sh-2)}
  body.vsh-marg-open .vsh .learn{transform:translateY(0)}
  .vsh-marg-handle{display:block;position:absolute;top:9px;left:50%;transform:translateX(-50%);width:40px;height:4px;border-radius:var(--r-pill);background:var(--line)}
  .vsh-marg-close{display:block;position:absolute;top:12px;right:14px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-pill);padding:7px 15px;font:600 var(--fs-12-5) var(--font-body,system-ui,sans-serif);color:var(--ink-2);cursor:pointer;min-height:var(--kontroll-h,44px);z-index:2}
}

/* =====================================================================
   PRINT — DELT GRUNNLAG FOR HELE APPEN (Kenneth 18.08:
   «generelt utskriftsversjonen må ordnes»).

   Et ark fra Vitin skal se ut som et DOKUMENT, ikke som en skjermdump av
   appen: ingen meny, ingen knapper, ingen faner, riktig skrift, farger som
   faktisk kommer med, og tabeller som brytes MELLOM rader — aldri midt i.

   Alt som gjelder ALLE flater bor her, i én kilde. Sidenes egne
   @media print-blokker skal kun ta det som er unikt for den flata.
   Før dette lå grunnreglene spredt: `.no-print` var kopiert lokalt i fem
   filer (og virket derfor ikke på nye flater), tabellbrytning fantes kun i
   rapport-generatoren, og ingen flate uten om forsida ba om fargetro.
   ===================================================================== */
@media print {
  /* Bunnmargen er større enn de andre med vilje: sidefoten under er
     position:fixed og legger seg i den reserverte stripa. Uten den plassen
     ville foten lagt seg OPPÅ siste tekstlinje på hver eneste side. */
  @page { size: A4; margin: 16mm 14mm 22mm; }

  html:not(.vsh-ready) body { visibility: visible !important; }
  /* Lastevisningen holder skjermen, aldri papiret. */
  html.vit-laster body { visibility: visible !important; }
  .vit-last { display: none !important; }

  /* Skriften følger tokenet. Uten denne arver utskriften nettleserens
     standard (Times/Arial) på flater som ikke selv laster Poppins. */
  body {
    font-family: var(--font-body, 'Poppins', sans-serif) !important;
    background: var(--flate-1) !important;
  }

  /* Fargene skal med på papiret. Uten dette faller grafflater, sebrarader,
     KPI-toninger og VitViz-stolpene ut til hvitt fra side 1. */
  *, *::before, *::after {
    print-color-adjust: exact !important;
    -webkit-print-color-adjust: exact !important;
  }

  .vsh { display: block !important; height: auto !important; overflow: visible !important; }
  .vsh-scene { overflow: visible !important; height: auto !important; min-height: 0 !important; }

  /* PAPIRETS EGEN RAMME (26.08). @page over eier margen; hovedkolonnen skal
     ikke legge enda et lag padding oppå den. Sto lokalt i resultat.html,
     verdivurdering.html, rapport-baerekraft.html og rapport-bygg.html — fire
     kopier av samme tanke med ulike tall (24px / 24px / auto / visible). */
  .app { display: block !important; }
  .app > main, .app > main.stage {
    padding: 0 !important; overflow: visible !important; height: auto !important;
  }

  /* --- APP-KROM: alt som er styring, ikke innhold ---
     `.no-print` er DELT herfra (var før en lokal kopi i fem filer, så
     klassen gjorde ingenting på flatene som ikke hadde kopien). */
  .no-print,
.vsh-side,
.vsh-burger,
.vsh-backdrop,
.vsh-scrim,
.vsh-cmd,
.vsh-marg-backdrop,
.vsh .learn,
.vsh-hjelp,
.q-faner,
.gran,
.lens,
.seg,
.tg,
.ford-chips,
.snaps,
.regntog,
.kpkt-toggle{
    display: none !important;
  }
  /* NB: .term-popup, .ord-drawer og .ord-backdrop står bevisst IKKE her.
     De er pedagogikk-overlegg som eies av den enkelte flata (egen skjermstil
     OG egen print-regel). Løftes de hit, sier to kilder noe om samme klasse,
     og komponent-vakta melder konflikt med rette. */

  /* --- SIDEBRYTNING ---
     Reglene fantes bare i rapport-generatoren; her gjelder de alle
     tabeller i appen, uansett hvilken klasse flata har gitt dem. */
  table { break-inside: auto; }
  thead { display: table-header-group; }
  tfoot { display: table-footer-group; }
  tr, img, figure { break-inside: avoid; }
  /* En overskrift skal aldri bli stående alene nederst på en side. */
  h1, h2, h3, h4 { break-after: avoid; }
  /* Aldri én enslig linje av et avsnitt igjen på neste side. */
  p, li, td { orphans: 3; widows: 3; }

  /* --- SIDEFOT ---
     Bedriftsnavn og dato på HVER side (Kenneth 18.08). position:fixed
     gjentas per side i utskrift — det er den eneste måten Chrome gir oss,
     siden @page-marginbokser ikke tar innhold. Hjemmelen står i selve
     dokumentteksten, der den hører hjemme og kan navngis presist. */
  .vsh-print-fot {
    display: block !important;
    position: fixed;
    /* MAALT I EKTE PDF 07.09.2026: bottom:-13mm plasserte ikke foten i
       bunnmargen — den havnet paa TOPPEN av side 2, tvers over det foerste
       nokkeltallet. Chrome legger et fast element under sidas innholdsboks,
       ikke i papirets marg. Naa staar foten paa nederste linje av
       innholdsboksen, og @page reserverer 18 mm under den (forside-modulen). */
    /* MÅLT I EKTE PDF 21.09.2026: med `bottom: 0` alene tegnes foten PÅ
       nederste linje av innholdsboksen — side 3 i styrerapporten hadde
       resultattabellen ned til y=794,6 og fotstreken på y=780,0, altså 14,6 pt
       tekst tvers over hverandre. Innholdet kan ikke vite om et fixed element;
       den eneste plassen foten ikke er i veien, er MARGEN. translateY flytter
       den dit uten å endre hvilken boks `bottom` regnes fra — det var det
       `bottom: -13mm` gjorde galt i 07.09-forsøket, da den havnet på toppen
       av neste side. @page reserverer 22 mm under innholdet; foten er 6 mm. */
    bottom: 0; left: 0; right: 0;
    padding-top: 4px;
    border-top: 1px solid var(--line);
    font: 400 9pt/1.4 var(--font-body, 'Poppins', sans-serif);
    color: var(--ink-3);
  }
  .vsh-print-fot-rad { display: flex; justify-content: space-between; gap: 16px; }
}

/* Sidefoten finnes bare på papir. */
.vsh-print-fot { display: none; }

/* Global veilednings-knapp (Kenneth 25.07): «?» øverst til høyre på alle sider. */
/* Var en sirkel paa 44 px med '?' i. Med ordene «Vis meg rundt» maa den vaere
   en pille: hoeyden staar, bredden foelger teksten (08.09.2026).

   PAA MOBIL LIGGER DEN IKKE OPPAA NOE (09.09.2026). Som fast pille oeverst til
   hoegre dekket den overskrifta paa hver eneste side — maalt: «Se · Forstaa /
   Hva kommer inn?» og «Verktoey · Resultat». Paa en 390 px skjerm finnes det
   ingen ledig plass i toppen aa flyte over.
   Under 680 px staar den derfor i FLYTEN, som en rad oeverst i innholdet:
   full bredde, ingenting under seg. Paa pc staar den som foer. */
/* ══ PULSERENDE LYSPAERE I SIDEHODET (Kenneth 10.09.2026) ═══════════════
   «Vis meg rundt maa vaere et pulserende lyspaere globalt oppe til hoegre
    paa hovedvisningen. Ikke skjult i margen.»

   Foer: position:fixed mot VINDUETS hoeyre kant. Paa pc ligger laeremargen
   der, saa knappen landet oppaa boten og leste som en del av den. Naa er
   den et vanlig element i .topp — sidehodets egen rad — og foelger derfor
   hovedkolonnen paa alle bredder. Ingen fixed, ingen egen mobilregel:
   sidehodet er allerede flex med space-between, saa den staar til hoeyre
   av seg selv, og brekker ned under overskrifta naar det blir for smalt.

   Pulsen er to lag: en myk ring som vokser og forsvinner, og en svak
   lysning i selve paera. Den staar stille for den som har bedt om det
   (prefers-reduced-motion) — da lyser ringen bare rolig. */
.vsh-hjelp{position:relative;align-self:flex-start;flex:none;
  width:var(--knapp-h,44px);height:var(--knapp-h,44px);padding:0;
  border-radius:var(--md-sys-shape-corner-full);   /* var --r-pill,999px — samme mening, men 999 er ikke et tall i ShapeTokens */
  display:inline-flex;align-items:center;justify-content:center;border:0;
  background:var(--surface);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm);
  color:var(--brand);cursor:pointer;transition:background .15s}
.vsh-hjelp .material-symbols-outlined{font-size:calc(var(--knapp-h,44px) * .52);line-height:1}
/* 8% er hover-laget (StateTokens.kt), ikke 10% — det tallet er trykt/fokus, ikke hover (16.09.2026). */
.vsh-hjelp:hover{background:color-mix(in srgb,var(--brand) calc(var(--md-sys-state-hover-opacity) * 100%),var(--surface))}
.vsh-hjelp:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
/* Pulsen er en box-shadow-ring som vokser ut av knappen og toner bort.
   VALGT FRAMFOR ET ::before MED z-index:-1: et negativt lag paa en
   position:relative-forelder uten egen stablingskontekst havner bak
   forelderens bakgrunn OGSAA — ringen ville forsvunnet paa flater som har
   en malt bakgrunn bak seg. box-shadow tegnes alltid rundt elementet selv,
   stjeler ingen klikk og flytter ingenting i flyten. */
.vsh-hjelp{animation:vshPaerePuls 2.4s cubic-bezier(.4,0,.2,1) infinite}
@keyframes vshPaerePuls{
  0%{box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm),0 0 0 0 var(--brand-line)}
  70%{box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm),0 0 0 11px var(--brand-klar)}
  100%{box-shadow:inset 0 0 0 1px var(--line),var(--shadow-sm),0 0 0 0 var(--brand-klar)}
}
/* Den gamle klassen brukes fortsatt av fallbacken naar guide-skriptet ikke
   laster — da pulser laeremargen i stedet. */
.vsh-hjelp-puls{animation:vshHjelpPuls 1.2s ease 2}
@keyframes vshHjelpPuls{0%,100%{box-shadow:none}50%{box-shadow:0 0 0 3px var(--brand-line)}}
@media (prefers-reduced-motion: reduce){
  .vsh-hjelp{animation:none;box-shadow:inset 0 0 0 1px var(--brand-line),var(--shadow-sm)}
  .vsh-hjelp-puls{animation:none}
}
/* Sider uten sidehode: knappen legges foerst i hovedkolonnen, og skal da
   staa til hoeyre for seg selv. */
main.x > .vsh-hjelp{align-self:flex-end;margin-bottom:-8px}
@media print{.vsh-hjelp{display:none}} /* taper mot «body .vsh-hjelp{display:inline-flex!important}» lenger ned — print-regelen som virker står SIST i fila (07.09) */

/* =====================================================================
   LUKKET MÅNED-MERKET (fase 1, 26.07) — DELT markup fra
   VitData.regnskapMerkeHtml, brukt på Oversikt og Forstå.
   HVA: en stille statuslinje under periodeteksten — «Lukket av
   regnskapsfører» (dempet hake) for avstemte måneder, «Kan fortsatt
   endres» for inneværende. HVORFOR delt her: ett globalt mønster, ikke
   per-side-CSS (Kenneth 23.07: «gjør alt globalt»). Kun tokens.
   ===================================================================== */
.rs-merke{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;font:500 var(--fs-11) var(--font-mono);color:var(--ink-3);margin:6px 0 0}
.rs-merke:empty{display:none}
.rs-merke .rs-del{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.rs-merke .rs-del svg{width:12px;height:12px;flex:none;color:var(--brand-2)}
.rs-merke .rs-skil{color:var(--ink-4,var(--ink-3))}

/* ============ «SPØR VITIN OM <SIDEN>» — GLOBAL MARG-PRESET ============
   Budsjett-mønsteret (Kenneth-godkjent 02.08, global utrulling 03.08 via
   vit-spor-marg.js): maskot i sirkulær maske + tittel + spørsmålsfelt
   NEDERST i læremargen. Sidenes pedagogiske intro står alltid FØRST.
   KUN tokens — aldri hardkodede farger. */
.spor-hode{display:flex;align-items:center;gap:9px;margin-top:16px}
.spor-fig{flex:none;position:relative;width:36px;height:36px;border-radius:var(--r-sirkel);overflow:hidden;border:1px solid var(--line);background:var(--surface)}
.spor-fig>div{position:absolute;left:50%;top:58%;transform:translate(-50%,-50%);width:50px;height:50px}
.spor-tit{font:600 var(--fs-12-5) var(--font-display);color:var(--ink);letter-spacing:-.01em}
.spor{display:flex;gap:7px;margin-top:8px}
.spor input{flex:1;min-width:0;border:1px solid var(--line);border-radius:var(--knapp-radius);padding:8px 11px;font:500 var(--fs-12-5) var(--font-body);background:var(--surface);color:var(--ink);outline:none}
.spor input:focus{border-color:var(--brand-2)}
/* Token-høyde, ikke padding-høyde: padding-basert mål ga 32px på sider med
   annen linjehøyde (målt rapport-bygg 08.08) og 36 på resten. */
.spor button{display:inline-flex;align-items:center;height:var(--knapp-h);font:600 var(--knapp-fs) var(--font-display);color:var(--on-brand);background:var(--brand);border:0;border-radius:var(--knapp-radius);padding:0 var(--knapp-pad-x);cursor:pointer}
.spor button:disabled{opacity:.38;cursor:wait}
/* Spør-margens chat-logg — gjenbruker Forstå-chattens .bm-msg-bobler.
   Kenneth 04.08: svaret skal åpne en chat-boks, aldri et forklarer-kort. */
.spor-chat{display:flex;flex-direction:column;gap:10px;margin-top:14px;max-height:360px;overflow:auto;scrollbar-width:thin}
.spor-chat[hidden]{display:none}
.spor-tom{margin-top:8px;background:none;border:0;padding:0;font:600 var(--fs-xs) var(--font-display);color:var(--ink-2);cursor:pointer}
.spor-tom[hidden]{display:none}
.spor-tom:hover{color:var(--ink)}

/* ============ SØK+BOT — spørsmål og svar i ⌘K-flata (03.08) ============ */
.vsh-cmd-intro{padding:12px 16px 10px;font:500 var(--fs-12-5)/1.55 var(--font-body);color:var(--ink-3);border-bottom:1px solid var(--line-soft)}
.vsh-cmd-intro b{color:var(--ink-2)}
.vsh-cmd-bot .vsh-cmd-ico{color:var(--brand-2)}
.vsh-cmd-bot .vsh-cmd-kind{color:var(--brand-2);border-color:var(--brand-line)}
.vsh-cmd-svar{padding:14px 16px 16px}
.vsh-cmd-tilbake{display:inline-flex;border:0;background:none;padding:0;margin:0 0 12px;cursor:pointer;font:600 var(--fs-sm) var(--font-display);color:var(--brand-2)}
.vsh-cmd-svartekst{font:500 var(--fs-13)/1.6 var(--font-body);color:var(--ink-2)}
.vsh-cmd-svartekst b{color:var(--ink)}
.vsh-cmd-svartekst p{margin:8px 0 0}
.vsh-cmd-aapne{display:inline-flex;margin-top:12px;font:600 var(--fs-sm) var(--font-display);color:var(--brand-2);text-decoration:none}
.vsh-cmd-kilde{display:block;margin-top:12px;font:500 var(--fs-2xs) var(--font-mono);color:var(--ink-4)}

/* ===================================================================
   FOKUS-LOVEN — ÉN regel for hele appen (MIDDELS #66, 05.08.2026).

   Mønsteret var riktig, men bodde lokalt: framover og likviditet hadde
   :focus{outline:none} + :focus-visible{outline:2px solid var(--brand)},
   mens index.html fjernet outline på slideren og i wf-feltet UTEN noen
   :focus-visible-regel i det hele tatt — altså tastaturbrukere uten
   synlig fokus. En lov som må kopieres til hver nye side, blir før eller
   siden glemt. Nå arves den av alt som laster skallet.

   Regelen: musen ser ingen ring (:focus), tastaturet ser den alltid
   (:focus-visible). Lokale sider skal ikke lenger skru av outline.
   =================================================================== */
:focus { outline: none; }
/* HVIT SPALTE + RING, IKKE outline-offset (26.08.2026). To målte problemer med
   den forrige: (1) outline-offset viser det som ligger UNDER elementet — det
   var hvitt lerret ved et lykketreff, men lerretet er tonet nå, så kjeden
   svekkes; (2) én enkelt ring ryker mot en fylt knapp. Målt: 1,62:1 mot
   merkeknappen, 1,65:1 mot minusknappen, 1,82:1 mot plussknappen — alle under
   3:1-gulvet i WCAG 2.2 SC 1.4.11. Med hvit spalte: 6,04 · 5,96 · 5,38 · 8,00. */
:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--flate-1), 0 0 0 4px var(--lenke);
  border-radius: var(--knapp-radius);
}
/* Den valgte KPI-en mistet fokusmarkøren HELT: .kpis .kpi[data-kpi].sel er
   (0,3,0) og slår :focus-visible på (0,1,1). Fanget av proben, ikke av øyet. */
.kpis .kpi[data-kpi].sel:focus-visible {
  box-shadow: inset 0 0 0 2px var(--lenke), 0 0 0 2px var(--flate-1), 0 0 0 4px var(--lenke);
}
/* A-REGELEN SOM IKKE FANTES (26.08.2026). vit-shell.css hadde ingen i det hele
   tatt: av 47 sider som laster skallet hadde 30 verken arvet eller lokal regel
   og viste nettleserens standard blå understrek. De 14 som hadde en, hadde den
   i fire ulike varianter. Understrek ved hover og fokus, så fargen aldri er
   eneste signal — nødvendig fordi blå og lilla ikke lar seg skille under
   deuteranopi. */
a { color: var(--lenke); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
a:active { color: var(--lenke-dyp); }

/* ============================================================
   MENYVELGEREN ER EN VALGKONTROLL — samme kategori som resten
   ------------------------------------------------------------
   Den hadde TRE ulike «valgt»: hvit flate, brand-tint med ramme (to
   ganger, den ene med !important) og en 1,5 px innvendig ring på
   modus- og gruppelenkene. Derfor så den «solid» ut noen steder og
   «bare ramme» andre steder (Kenneth 07.08).

   ÉN valgt-markør i hele appen: FYLT flate i valg-fargen. Ingen ring,
   ingen ramme, ingen skygge.

   DOBBELTLINJA over bedriftsnavnet var beholderen .vsh-cat sin ramme
   PLUSS knappenes egne rammer, 5 px fra hverandre — målt 07.08. En
   navigasjonsliste har ikke beholder-ramme; markeringen sitter på
   elementet. Beholderrammene er borte, knappene er rene flater.
   ============================================================ */



/* Valgt/hover for menyknappene er flyttet lenger ned — se etter
   .vsh-acc-btn-grunnregelen (18.08). */


/* ============================================================
   HANDLINGSKNAPPENE — ÉN KATEGORI (Kenneth 07.08: «alt betyr alt»)
   ------------------------------------------------------------
   Inventaret 07.08 målte 73 unike knappesignaturer (høyder 17–51,
   radier 6–999, skrift 10–16). Alle handlingsknapper bindes HER til
   --knapp-*-tokenene — samme grep som valgkontroll-konsolideringen.
   Velgere (per-btn, feed-kat, chips) hører til valg-kategorien og
   bindes IKKE her. body-prefikset vinner over sidenes egne enkelt-
   klasseregler uansett lasterekkefølge.
   ============================================================ */
body .btn, body .iv-btn, body .sf-hend-btn, body .av-knapp, body .ak-last,
body .ak-eksport, body .topknapp, body .save-btn, body .send,
body .btn-primary, body .btn-make, body .bm-tom, body .mal-bytt, body .iv-add-hend,
body .ny-btn, body .su-start, body .chat-clear, body .h-knapp, body .ms-team-toggle,
body .btn-sekundaer{
  box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:7px;
  height:var(--knapp-h);min-height:0;padding:0 var(--knapp-pad-x);
  font:600 var(--knapp-fs) var(--font-body);border-radius:var(--knapp-radius);
  background:var(--flate-2);border:1px solid var(--ramme-1);color:var(--ink-2);
  cursor:pointer;white-space:nowrap;box-shadow:none;text-decoration:none;
  transition:background .14s,color .14s,border-color .14s;
}
body .btn:hover, body .iv-btn:hover, body .sf-hend-btn:hover, body .av-knapp:hover,
body .ak-last:hover, body .ak-eksport:hover, body .topknapp:hover, body .save-btn:hover,
body .bm-tom:hover, body .mal-bytt:hover, body .iv-add-hend:hover,
body .ny-btn:hover, body .chat-clear:hover, body .h-knapp.sekundaer:hover,
body .ms-team-toggle:hover, body .btn-sekundaer:hover{
  background:var(--boks-hoy);color:var(--ink);border-color:var(--ramme-1);
}
/* PRIMÆR — fylt brand, én per flate */
body .send, body .btn-primary, body .btn-make,
body .iv-btn.primary, body .sf-hend-btn.primary, body .sf-dok-print-btn,
body .su-start, body .h-knapp.primaer{
  background:var(--brand);border-color:var(--brand);color:var(--on-brand);
}
body .send:hover, body .btn-primary:hover, body .btn-make:hover,
body .iv-btn.primary:hover, body .sf-hend-btn.primary:hover, body .sf-dok-print-btn:hover,
body .su-start:hover:not(:disabled), body .h-knapp.primaer:hover{
  background:var(--brand-hover);border-color:var(--brand-hover);color:var(--on-brand);
}
/* SIDE-CTA (.ph-cta) — fasiten er «+ Opprett sak» på sykefravær: fylt
   brand-PILLE i sidehodet (doc-head høyre). Én per side, alltid i hodet.
   Formen kommer i sin HELHET fra --cta-*-tokenene i vit-tokens.css. */
body .ph-cta {
  display: inline-flex; align-items: center; gap: 6px;
  height: var(--cta-h); padding: 0 var(--cta-pad-x);
  border-radius: var(--cta-radius);
  background: var(--brand); color: var(--on-brand);
  font: 600 var(--cta-fs) var(--font-body);
  text-decoration: none; cursor: pointer; border: none;
  transition: background 140ms;
}
body .ph-cta:hover { background: var(--brand-hover); }

/* SKJEMAFELTENE — ÉN KATEGORI (Kenneth 08.08, «Ny utlysning»-dialogen):
   standarden er sf-hend-skjemaet (c323bd57). Alle skjemafelt-klassene bindes
   HER; sidefiler har kun plassering.

   KOMMENTAREN HER LØY (rettet 16.09.2026). Den sa «1,5px hårlinje, radius 8».
   Målt på skjermen: radius 4, kant 1px, høyde 45. Ingen av de tre stemte.
   Grunnen er at M3-feltregelen lenger ned (linje ~4198) setter
   corner-extra-small og 1px outline med !important, og vinner over alt her.
   Radius-erklæringen under er derfor DØD — den er tatt ut, så det ikke står to
   svar på samme spørsmål i samme fil. Kanten og høyden står igjen som de er,
   fordi de faktisk brukes til fokus-tilstanden.

   TO AVVIK MOT M3 SOM IKKE ER RETTET HER, fordi de er designvalg og ikke feil:
   høyden er 45 der OutlinedTextField sier 56, og skriften er 15 px der
   TypeScale har 14 og 16. Begge står i revisjonsrapporten som målte tall. */
body .iv-input, body .sf-hend-field input, body .sf-hend-field select,
body .sf-hend-field textarea{
  width:100%;font:400 var(--fs-sm) var(--font-body);color:var(--ink);
  background:var(--flate-2);border:1.5px solid var(--ramme-2);
  padding:9px 12px;outline:none;box-shadow:none;
  transition:border-color .14s;
}
body .iv-input:focus, body .sf-hend-field input:focus,
body .sf-hend-field select:focus, body .sf-hend-field textarea:focus{
  border-color:var(--brand);box-shadow:none;background:var(--flate-2);
}

/* LAG-STRIPA (Personal-pedagogikken, godkjent mockup 07.08): tre lag —
   kostnad / plikter / guide — ÉN kilde, delt av sykefravær og rekruttering.
   Nivå 2-flater på tokens (aldri surface/line/egne px). */
.sf-lag-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--luft-blokk); margin: 0 0 var(--luft-blokk); } /* tre bokser på lerretet, ingen boks rundt (NYE VITIN 03.09) */
.sf-lag { background: var(--flate-2); border: 1px solid var(--ramme-2); border-radius: var(--boks-radius); padding: 16px 18px; }
.sf-lag-n { font: 600 var(--fs-2xs) var(--font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--brand-2); }
/* h2, ikke h3: trioen står rett under h1, og h1→h3 var et overskriftshopp
   (WCAG 1.3.1, målt 24.08). Samme drakt, riktig nivå. */
.sf-lag h2, .sf-lag h3 { font: 600 var(--fs-base) var(--font-display); color: var(--ink); margin: 8px 0 6px; letter-spacing: -.01em; }
.sf-lag p { font-size: var(--fs-12-5); line-height: 1.55; color: var(--ink-2); margin: 0; }
@media (max-width: 760px) { .sf-lag-row { grid-template-columns: 1fr; } }

/* IKON- OG X-FORM — kvadrat i samme mål og samme flate */
body .kortmeny-btn, body .rad-x, body .utl-card-x, body .cc-ord-btn{
  box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;
  width:calc(var(--knapp-h) - 4px);height:calc(var(--knapp-h) - 4px);padding:0;
  background:var(--flate-2);border:1px solid var(--ramme-1);border-radius:var(--knapp-radius);
  color:var(--ink-3);cursor:pointer;transition:background .14s,color .14s;
}
body .kortmeny-btn:hover, body .rad-x:hover, body .utl-card-x:hover, body .cc-ord-btn:hover{
  background:var(--boks-hoy);color:var(--ink);
}

/* DEMO-BÅNDET (Kenneth 10.08) — kun for Aspia- og bank-demokontoene.
   Sier hva de ser nå, og hva rollen faktisk får se i virkeligheten. Uten det
   lyver demoen om produktet. Chip-flata, ingen aksentstripe. */
/* Baandet ligger SIST i innholdskolonna (se vit-shell.js, 30.08). Da arver det
   kolonnas egen marg og bredde, og trenger ingen egen plassering — bare luft
   over seg saa det ikke klistrer seg til siste kort. Ligger det unntaksvis rett
   i .app (en flate uten main/.page), faar det margen derfra. */
.app > main > .vsh-demo-baand,
.app > .page > .vsh-demo-baand{margin:var(--luft-blokk,28px) 0 0;max-width:none}
.app > .vsh-demo-baand{margin:var(--luft-blokk,28px) var(--vit-ramme) var(--luft-bunn,56px);max-width:none}
.vsh-demo-baand{
  margin:0 0 18px; padding:13px 16px; max-width:1026px;
  background:var(--chip-valgt); border-radius:var(--boks-radius);
  font-size:var(--fs-xs); line-height:1.5; color:var(--ink-2);
}
.vsh-demo-baand b{ display:block; margin-bottom:3px; color:var(--ink); font-weight:600; }

/* ==== TREKKSPILL-MENYEN (15.08) — Kenneth: «Trykk på kategorier skal åpne
   valgene under [...] det er så styr med den der som går ut midt på siden.»
   Skuffa åpner UNDER knappen, undervalg innrykket med en tynn linje langs
   venstre kant (referansebildets mønster), pil roterer. Flyout-CSS-en står
   til den er bevist unødvendig. ==== */
nav.vsh-side .vsh-acc{width:100%}
/* ══ MENYRADEN — ETT MAAL, IKKE TRE (26.08.2026) ══════════════════════════
   Kenneth: «Menyboksen maa du redesigne. Lag den etter standard den og.
   Gjoer research.»

   RESEARCH, fra kilden og ikke fra doksider (de trunkerer): Carbons egen
   scss/components/ui-shell/side-nav/_side-nav.scss, der mini-units(n) = n×8:
     skinne sammenslaatt  mini-units(6)  = 48 px
     skinne utvidet       mini-units(32) = 256 px
     radhoyde             mini-units(4)  = 32 px (stor: 48)
     ikon                 mini-units(2)  = 16 px
     lenkens padding      0 mini-units(2) = 0 16 px
     skillelinje          1 px, $border-subtle
     valgt                3 px venstre indikator, $border-interactive

   MAALT paa vaar egen meny foer endring:
     skinne 64 sammenslaatt / 232 aapen · ikon 15–16 px (treffer Carbon) ·
     radhoyde 34 sammenslaatt, men 32 OG 38 naar den er aapen ·
     padding 9px 10px · radius 9px

   Tre hoeyder for samme slags rad er funnet. Padding 9/10 og radius 9 ligger
   utenfor enhver skala — ogsaa vaar egen (--luft-* er 4/8/12/16/20/24,
   radiusene 8/10/12/16). Skinnebredden roeres IKKE: 64 er et vedtak, og den
   ligger paa 8-rutenettet.

   Naa: én radhoyde fra --valg-h (36 px, samme som en funksjonsknapp — husets
   eget vedtak fra 14.08), padding 8/12 paa rutenettet, og radius fra
   --valg-radius i stedet for et loest tall. */
nav.vsh-side .vsh-acc-btn{
  display:flex;align-items:center;gap:10px;width:100%;
  background:transparent;border:0;box-shadow:none;color:var(--ink-2);
  border-radius:var(--valg-radius);padding:0 12px;min-height:var(--valg-h);cursor:pointer;
  font:600 var(--fs-13) var(--font-body);text-align:left;text-decoration:none;
}
/* VALGT OG HOVER — MAA staa ETTER grunnregelen over (18.08). Grunnregelen
   setter background:transparent med SAMME spesifisitet; laa disse foer,
   vant transparent og «valgt» ble usynlig. Tre fikser i to dager traff
   aldri fordi rekkefoelgen var feil, ikke verdiene. */
nav.vsh-side .vsh-acc-btn.on,
nav.vsh-side .vsh-acc-btn.is-current{
  background:var(--valg-valgt-flate);color:var(--valg-valgt-farge);
  border:0;box-shadow:none;font-weight:var(--valg-valgt-vekt);
}
nav.vsh-side .vsh-acc-btn.on .vsh-ico,
nav.vsh-side .vsh-acc-btn.is-current .vsh-ico{color:var(--valg-valgt-farge)}
nav.vsh-side .vsh-acc-btn:hover{background:var(--valg-svev);color:var(--ink)}
/* SYNLIG FOKUS (WCAG 2.2 SC 2.4.7 — UI/UX-proben 24.08: åtte av skallets
   knapper endret INGENTING ved fokus; tastaturbrukeren var blind i menyen). */
nav.vsh-side .vsh-acc-btn:focus-visible,
.vsh-topp button:focus-visible,
button.vsh-search:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
/* Skyveknapper (WCAG 2.5.8): sporet kan være tynt, men TREFF-flata skal
   være minst 24px — målt 16px på Pengestrøm-driveren 24.08. */
body[data-vit-modul] input[type=range]{min-height:24px}
nav.vsh-side .vsh-acc-btn:hover .vsh-ico{color:var(--brand)}
/* Valgt/hover for trekkspillknappene staar SAMLET lenger opp (l.~2160):
   valgt = chip-valgt-flata + brand-tekst, hover = flate-3 + brand-ikon.
   Disse to linjene overstyrte den fiksen fordi de kommer senere i fila —
   det var derfor «valgt» bare hadde ramme. Fjernet 17.08. */
nav.vsh-side .vsh-acc-btn .vsh-ico{flex:none;display:inline-flex}
nav.vsh-side .vsh-acc-btn .vsh-group-caret{margin-left:auto;transition:transform .15s ease;
  width:10px;height:10px;flex:none; /* slått sammen 04.09 */
}
nav.vsh-side .vsh-acc.open .vsh-group-caret{transform:rotate(90deg)}
/* SKUFFEANIMASJON (15.08, Kenneth: «litt smooth bevegelse på åpning/lukking»).
   display:none kan ikke animeres. Grid-raden 0fr→1fr kan — høyden glir uten
   at JS måler noe, og innholdet klippes pent av overflow:hidden underveis.
   Respekterer prefers-reduced-motion nederst i blokka. */
nav.vsh-side .vsh-acc-liste{
  display:grid;grid-template-rows:0fr;
  transition:grid-template-rows .22s ease,opacity .18s ease;
  opacity:0;
}
nav.vsh-side .vsh-acc-liste > *{min-height:0}
nav.vsh-side .vsh-acc.open .vsh-acc-liste{grid-template-rows:1fr;opacity:1}
/* selve innholdet ligger i en indre kolonne som klippes under gliet */
/* ══ VALGT UNDERPUNKT — SAMME TOKENS SOM ALLE ANDRE VALG (26.08.2026) ══════
   Kenneth: «valget under hovedkategori i menyen.»

   MÅLT før: hovedkategorien (.vsh-acc-btn.is-current) leste de delte
   tokenene — bg #E8DEF8, tekst --ink, vekt 700. Underpunktet (.vsh-acc-item
   .on), altså sida du FAKTISK står på, hadde sin egen oppskrift:
     background: color-mix(brand 2,5%, --surface)  → ~#FDFCFF, altså hvit
     box-shadow: inset 0 0 0 1.5px var(--brand)    → lilla ring
     color: var(--brand-2)                          → merkefarge som tekst
   Tre avvik i én linje: den var utenfor valg-systemet, den brukte merkefargen
   som tekstfarge (det token-vakta nå måler), og den ga underpunktet en SVAKERE
   flate enn kategorien over. Mappa så altså mer valgt ut enn sida du var på.

   GRUNNEN VAR IKKE VERDIEN, MEN GRUNNEN DEN STO PÅ. --valg-valgt-flate er
   kalibrert av Kenneth mot HVIT bæreflate: #E8DEF8 på hvitt = 1,293:1. Da
   --menu-bg ble koblet til lerretet 26.08, ble menyflata #EDEBEF, og samme
   token gir der 1,092:1 — praktisk talt usynlig. Å gi menyen sin egen, dypere
   lilla ville vært et ANNET valg-system; i stedet får skuffa hvit bunn, så
   den kalibrerte verdien virker som kalibrert. Skuffa viser samtidig hvilke
   valg som hører til kategorien — som er hierarkiet Kenneth savnet. */
/* ══ SKALLET ARVER IKKE SIDAS LENKESTIL (30.08.2026) ═══════════════════
   Kenneth, med bilde av mobilmenyen: «se paa understrekene som dukker opp
   paa menypunktene av og til».

   MAALT: tre sider (brukeravtale, kundeservice, partnerservice) har en bar
   `a { border-bottom: 1px dotted var(--brand) }` i sitt eget stilark. Menyen
   injiseres i det SAMME dokumentet, saa hvert menypunkt fikk den streken —
   og den ser ut som fagord-markeringa, som betyr «hold musa over for et
   oppslag». Menyen er ikke et oppslagsverk.

   «Av og til» er nettopp fordi det bare skjer paa de sidene som har regelen.
   Derfor hoerer fiksen HER, ikke paa de tre: skallet skal ikke kunne farges
   av flata det staar i. Legger en fjerde side inn en `a`-regel i morgen,
   er menyen fortsatt ren. */
:is(nav.vsh-side, .vsh-cmd, .vsh-marg, .vsh-topp) :is(a, button){
  border-bottom:0;border-top:0;text-decoration:none;
}

nav.vsh-side .vsh-acc-indre{
  overflow:hidden;display:flex;flex-direction:column;gap:1px;
  margin:2px 0 4px 21px;padding:4px;
  background:var(--flate-1);border-radius:var(--md-sys-shape-corner-medium); /* IKKE pille (Kenneth 06.09/07.09, tre ganger): med overflow:hidden og full radius klippet hjørnebuen første bokstav i første og siste underpunkt («nsatte», «ovgrunnlag») */
}
nav.vsh-side .vsh-acc-item{
  /* Underpunktet fulgte samme moenster som raden over: 7/9 px, utenfor
     skalaen. Samme hoeyde-token, litt mindre sidepadding fordi det er
     innrykket ett nivaa. */
  display:flex;align-items:center;min-height:var(--valg-h-2);padding:0 12px;border-radius:var(--knapp-radius);
  font:500 var(--fs-12-5) var(--font-body);color:var(--ink-3);text-decoration:none;
}
nav.vsh-side .vsh-acc-item:hover{background:var(--flate-3);color:var(--ink)}
nav.vsh-side .vsh-acc-item.on{
  background:var(--valg-valgt-flate);color:var(--valg-valgt-farge);
  box-shadow:none;font-weight:var(--valg-valgt-vekt);
}
/* ÉN FYLT FLATE OM GANGEN. Står skuffa åpen og viser sida du er på, er det
   underpunktet som er valgt — kategorien bare INNEHOLDER det. Uten dette
   bærer begge samme fylte flate, og de to nivåene sier det samme.
   Lukkes skuffa, er kategorien igjen eneste spor av hvor du er, og da
   beholder den flata (regelen krever .open). */
nav.vsh-side .vsh-acc.open:is(:has(.vsh-acc-item.on),.h-on) > .vsh-acc-btn.is-current{
  background:none;color:var(--ink);
}
nav.vsh-side .vsh-acc.open:is(:has(.vsh-acc-item.on),.h-on) > .vsh-acc-btn.is-current .vsh-ico{color:var(--ink)}
/* Bunngruppa (Min side, Kontakt, Logg ut) — samme drakt som knappene, uten
   pil: de HAR ingen skuff. Skilt fra seksjonene med en hårlinje over. */
nav.vsh-side .vsh-bunnlenker{border-top:1px solid var(--line-soft);padding-top:6px;margin-top:6px}
nav.vsh-side .vsh-acc-lenke{margin-top:0}
/* Pil og ikon må ha EKSPLISITT størrelse her: GROUP_CARET-svg-en og ICO-ene
   ble størrelsessatt via flyout-konteksten, og uten den blåste pila opp til
   hele menybredden (målt 15.08 — første skjermbilde). */

nav.vsh-side .vsh-acc-btn .vsh-ico svg{width:16px;height:16px;display:block}
/* ETT IKONMAAL I SKINNA (26.08.2026). MAALT paa aapen meny: ikonene laa paa
   BAADE 15 og 16 px — .vsh-ico traff 16, resten falt til sin egen stoerrelse.
   Carbons ui-shell side-nav bruker mini-units(2) = 16 px, og det er ogsaa
   vaart eget maal der det er satt. Ett tall, ikke to. */
nav.vsh-side svg{width:16px;height:16px}
nav.vsh-side .vsh-side-close svg{width:20px;height:20px}
nav.vsh-side .vsh-search svg{width:16px;height:16px}
/* Ikonene svarer på mus — liten løft-og-vekst, bare på selve ikonet så
   teksten står i ro. Compositor-vennlig (transform), aldri layout. */
nav.vsh-side .vsh-acc-btn .vsh-ico{transition:transform .16s ease}
nav.vsh-side .vsh-acc-btn:hover .vsh-ico{transform:translateY(-1px) scale(1.12)}
/* pila myknes også ved hover, ikke bare ved åpning */
nav.vsh-side .vsh-acc-btn:hover .vsh-group-caret{transform:translateX(1px)}
nav.vsh-side .vsh-acc.open .vsh-acc-btn:hover .vsh-group-caret{transform:rotate(90deg) translateX(1px)}
@media (prefers-reduced-motion: reduce){
  nav.vsh-side .vsh-acc-liste,
nav.vsh-side .vsh-acc-btn .vsh-ico,
nav.vsh-side .vsh-acc-btn .vsh-group-caret{transition:none}
}

/* ═══════════════ PERSONAL — SYKEFRAVÆR (18.08) ═══════════════
   Formen på hendelsesloggen, tom-tilstandene og «Fraværet så langt».
   Alt bygger på komponentene som allerede finnes over (.av-eye, .kontorad,
   .formel, .kildeped, .spor100, .grafboks, .vis-alle-btn) — dette er bare
   tilleggene de nye tekstene trenger. */

/* Hjemmelen under et skjemafelt: hvilken regel føringen hviler på. Den er
   informasjon, ikke en oppfordring — derfor rolig, ikke uthevet. */
.sf-hend-hjemmel{font:400 var(--fs-11-5)/1.55 var(--font-body);color:var(--ink-3);margin:0 0 11px}
/* Statuslinja skriver bare når noe har skjedd; tom = usynlig, ingen tomrom. */
.sf-hend-status{font:500 var(--fs-11-5)/1.5 var(--font-body);color:var(--ink-2);margin:8px 0 0}
.sf-hend-status:empty{display:none}

/* Tom-tilstand i sakslista — varm, ikke blank. Overskrift + hva lista vil
   inneholde, med regelen som styrer den. */
.sf-tom-h{font:600 var(--fs-sm) var(--font-display);color:var(--ink-2);margin:6px 0 4px}
.sf-tom-p{font:400 var(--fs-12-5)/1.6 var(--font-body);color:var(--ink-3);margin:0 0 10px;max-width:62ch}

/* Avsluttede saker (Kenneth 24.08): tidslinja er dokumentasjonen (aml. § 4-6)
   og skal kunne SES — read-only, utfoldbar per sak. */
.sak-avsluttede{margin-top:16px;border-top:1px solid var(--line-soft);padding-top:12px}
.sak-avsl-h{font:600 var(--fs-2xs) var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--stone);margin:0 0 8px}
.sak-avsl{margin:0 0 6px}
.sak-avsl summary{cursor:pointer;font:500 var(--fs-13) var(--font-body);color:var(--ink);padding:7px 2px;border-radius:var(--knapp-radius)}
.sak-avsl summary:hover{background:var(--surface-2)}
.sak-avsl-logg{margin:4px 0 10px;padding-left:20px;font:500 var(--fs-12-5)/1.7 var(--font-body);color:var(--ink-2)}

/* Tegnforklaring for arbeidsgiverperiode-sporet. Samme kuler som .spor-merk
   bruker ellers — her med faste roller, så fargene ikke settes i markupen. */
.sf-merk{display:inline-block;width:9px;height:9px;border-radius:var(--felt-radius);margin-right:5px;vertical-align:-1px}
.sf-merk-brukt{background:var(--brand);opacity:.85}
.sf-merk-igjen{background:var(--brand);opacity:.2}
/* Selve sporet: brukte dager mot gjenstående, av de 16 (ftrl. § 8-19). */
#sfAgpBrukt{background:var(--brand);opacity:.85}
#sfAgpIgjen{background:var(--brand);opacity:.2}

/* ═══════════════ PERSONAL — LOVGRUNNLAG (18.08) ═══════════════
   Oppslagsverket trenger ÉN ny radtype: en LOVPOST. Den er en gjentatt
   listerad akkurat som .kontorad — nummer til venstre, navn i midten, meta
   til høyre — og arver derfor .kontorad framfor å få sin egen radmotor.
   Det eneste som virkelig skiller dem er kolonnebreddene: en hjemmel
   («arbeidsmiljøloven § 14-6 andre ledd») og en frist («innen 6 måneder
   etter at plikten inntrer») får ikke plass i konto-radens 90/84 px.

   Skrevet som descendant-selektorer (.lov-liste .kontorad), aldri som en
   naken .kontorad{} — en naken regel her ville gjort den DELTE komponenten
   til et avvik. Nøyaktig samme mønster som .konto-liste bruker over.

   Regelteksten er IKKE en kolonne. Den er et avsnitt UNDER raden, og den
   hører til dybden: Innsikt sier hvilken regel som gjelder og hvor den
   står, Detaljene sier hva den betyr. Rad og tekst bor derfor sammen i en
   .lovpost — det er posten zebraen teller, ikke raden alene. */
/* Zebraen er --flate-1 her, ikke --flate-2 som på Forstå. Grunnen er hva
   radene LIGGER PÅ: der ligger de i et .kort (--flate-1), her i en
   .av-seksjon som allerede er hvit (--flate-2). Hadde vi kopiert verdien i
   stedet for prinsippet, hadde annenhver rad vært hvit på hvit. */
.lov-liste .lovpost{border-bottom:1px solid var(--ramme-2)}
.lov-liste .lovpost:last-child{border-bottom:0}
.lov-liste .lovpost:nth-child(even){background:var(--flate-1)}
.lov-liste .kontorad{
  grid-template-columns:26px minmax(0,1fr) minmax(0,200px) minmax(0,112px);
  border-bottom:0;padding:9px 10px;
}
/* Konto-radens andre kolonne klipper navnet med ellipse — riktig for et
   kontonavn, feil for en regeloverskrift som «Søn- og helgedagsarbeid er
   ikke tillatt — med mindre arbeidet krever det». Her skal hele setningen
   stå; raden får heller bli to linjer. */
.lov-liste .kontorad > .lov-tit{
  overflow:visible;white-space:normal;text-overflow:clip;
  font:600 var(--fs-sm) var(--font-display);color:var(--ink);line-height:1.4;
}
/* Hjemmelen er ALLTID synlig og ALLTID en lenke til kilden — også i Innsikt.
   Det er hele poenget med et lovgrunnlag: påstanden skal kunne etterprøves. */
.lov-liste .lov-hjem{
  font:500 var(--fs-11-5) var(--font-mono);color:var(--brand-2);
  text-decoration:none;border-bottom:1px dotted var(--brand-line);
  line-height:1.45;justify-self:start;
}
.lov-liste .lov-hjem:hover{color:var(--brand);border-bottom-color:var(--brand)}
.lov-liste .lov-hjem.uten{color:var(--ink-4);border-bottom:0}
.lov-liste .lov-frist{
  font:600 var(--fs-11) var(--font-mono);color:var(--ink-2);
  text-align:right;line-height:1.45;
}
.lov-liste .lov-frist.tom{color:var(--ink-5);font-weight:500}
/* Overskriftsraden: samme kolonner, men dempede etiketter. Den zebras aldri
   (skallets .hd-regel over) og gjør en tom frist-celle entydig. */
.lov-liste .kontorad.hd{padding-bottom:5px;border-bottom:1px solid var(--ramme-2)}
.lov-liste .kontorad.hd > .lov-tit,.lov-liste .lov-hd{
  font:600 var(--fs-2xs) var(--font-mono);letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-4);
}
.lov-liste .lov-hd-h{text-align:right}
.lov-liste .lov-tekst{
  font-size:var(--fs-13);line-height:1.6;color:var(--ink-2);
  margin:0;padding:0 10px 12px 36px;
}
.lov-liste .lov-tekst b,.lov-liste .lov-tekst strong{color:var(--ink)}
/* Smalt: kolonnene stables. Hjemmel og frist står da under tittelen — å
   høyrestille dem uten en kolonne å stå i blir bare rotete.
   Grensa er 900 px, ikke 760: målt på nettbrett (768 px) fikk regeltittelen
   bare 250 px i firekolonners-oppsettet, og en setning som «Søn- og
   helgedagsarbeid er ikke tillatt …» brøt over fire linjer ved siden av to
   nesten tomme kolonner. */
@media(max-width:900px){
  .lov-liste .kontorad{grid-template-columns:26px minmax(0,1fr);row-gap:3px}
  .lov-liste .lov-hjem,.lov-liste .lov-frist{grid-column:2;text-align:left}
  /* Overskriftsraden faller bort når kolonnene stables: fire etiketter
     presset ned i to spor la «REGEL» og «HJEMMEL» oppå hverandre. Stablet
     trenger den heller ikke — tittelen er fet, hjemmelen er en lenke og
     fristen står under, hver for seg. */
  .lov-liste .kontorad.hd{display:none}
}
/* Situasjonens ingress — står mellom .av-eye og lovpostene. */
.lov-ingress{font-size:var(--fs-sm);line-height:1.6;color:var(--ink-2);margin:0 0 10px;max-width:78ch}
.lov-ingress b,.lov-ingress strong{color:var(--ink)}
/* Et søketreff sier hvilken meny-fane det bor under, så man vet hvor man er. */
.lov-treff-sted{font:600 var(--fs-2xs) var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);margin:-6px 0 10px}
/* Endringsloggens rader: dato til venstre, hva som skjedde til høyre. */
.lov-endring{display:grid;grid-template-columns:104px minmax(0,1fr);gap:14px;padding:9px 10px;border-bottom:1px solid var(--ramme-2)}
.lov-endring:last-child{border-bottom:0}
.lov-endring:nth-child(even){background:var(--flate-1)}
.lov-endring .lov-e-dato{font:500 var(--fs-11) var(--font-mono);color:var(--ink-4);line-height:1.5}
.lov-endring .lov-e-tit{font:600 var(--fs-sm) var(--font-display);color:var(--ink);margin:0 0 2px;line-height:1.4}
.lov-endring .lov-e-sum{font-size:var(--fs-12-5);line-height:1.55;color:var(--ink-2);margin:0}
@media(max-width:760px){.lov-endring{grid-template-columns:minmax(0,1fr);gap:2px}}

/* EN TABELL MALER IKKE SITT EGET KORT (26.08.2026, proevd og fjernet).
   Kenneth saa at sebraen forsvant i rapport-generatoren. Jeg ga da alle
   tabeller et hvitt kort i skallet. Hierarki-vakta — som maaler FORHOLDET
   mellom flatene og ikke en liste med navn — svarte med fire nye doble
   bokser: tabellen malte hvitt oppaa kort som alt var hvite.
   Rotaarsaken var en annen: rapportens ARK (.rg-doc) hadde gitt fra seg
   flata si til dobbelboks-regelen, saa tabellen laa rett paa lerretet.
   Det er rettet i flate-ordboka. Da leser sebraen igjen, og tabellen
   trenger ikke noe eget kort. */

/* Ingen sebra herfra: flatene som har tabeller har allerede sin egen
   nth-child-regel paa <tr>. La skallet ogsaa male cellene, ble stripa lagt
   paa TO ganger — 6,7 % oppaa 6,7 % — og den ble en moerk skuff i stedet for
   en stripe (Kenneth 26.08: «sebraen er bare et stort skuff»). Skallet eier
   UNDERLAGET; sida eier stripa. */


/* ══ KONTROLLSKALAEN — ETTER STANDARD, IKKE ETTER SMAK (29.08.2026) ══════
   Kenneth: «menyen inntektene osv maa tilpasses rett stoerrelse GLOBALT.»

   MAALT FOER: fanene sto 36 px hoege med 15 px tekst, mens husets
   --knapp-fs er 12 px. Appen hadde altsaa to kontrollskalaer, og INGEN av
   dem foelger standarden.

   KILDENE (Apple Human Interface Guidelines, Material Design, WCAG):
     · touch target minst 44x44 pt (HIG) / 48x48 dp (Material). 36 px er
       under kravet — en fane er en kontroll, ikke en lenke.
     · type-skala 12 / 14 / 16 / 18 / 24 / 32. 15 px finnes ikke i skalaen;
       14 er trinnet for kontrolltekst.
     · minst 8 px mellom to touch-maal (HIG/Material).

   Gjelder ALLE segmenterte velgere: sidefanene, dybdevelgeren
   (Innsikt/Detaljene), sammenlikningsvelgeren og perioden i grafene.

   NB til Kenneth: --knapp-h staar paa 36 px for vanlige knapper. Det er
   samme avvik fra 44-kravet, men aa flytte hver knapp i appen er en egen
   avgjoerelse — den staar til deg. */
/* LISTA ER HUSETS EGEN, IKKE MIN (29.08). Foerste forsoek skrev en kortere
   liste — .q-faner/.dybde/.gran/.tg — og traff derfor ikke Innsikt/Detaljene,
   som er .seg. MAALT: den sto igjen paa 32 px mens fanene gikk til 44.
   En «global» regel med sin egen liste er ikke global. Arket har allerede
   familien samlet ett sted (linje ~1953); den brukes her. */
.gran button,
.lens button,
.seg button,
.tg button,
.ford-chips button,
.snaps button,
.regntog button,
.wf-snaps button,
.kpkt-toggle button,
.chips button,
.q-faner button{
  min-height:var(--kontroll-h,44px);
  font-size:var(--kontroll-fs,14px);
  font-weight:600;
  letter-spacing:.01em;
  padding-inline:16px;
}
/* SPORET SKAL VAERE FULLT (29.08.2026 — Kenneth: «Menyen kan ikke ha et langt
   tomt omraade fordi knappene er for smaa»).
   MAALT innlogget paa 1440: forsta 86 px tomt av 818, pengestroem 272 av 802,
   min side 320 av 1318. Sporet strekker seg til hoegre marg — det er vedtatt —
   men knappene sto paa innholdsbredda si og lot resten staa aapen.

   Loesninga er den samme som Apple HIG gir segmented control og Material gir
   faste faner: segmentene DELER bredda i sporet. flex:1 1 auto, ikke 1 1 0,
   saa lange etiketter fortsatt faar mer plass enn korte — likt delt hadde
   presset «Dokumenter & avtaler» og «Varsler» inn i samme mal.
   Der sporet allerede hugger innholdet sitt (.lens paa Oversikt, 2 px til
   overs) finnes det ingen rest aa dele, og ingenting flytter seg. */
.gran > button, .gran > .qf,
.lens > button, .lens > .qf,
.seg > button, .seg > .qf,
.tg > button, .tg > .qf,
.ford-chips > button, .ford-chips > .qf,
.snaps > button, .snaps > .qf,
.regntog > button, .regntog > .qf,
.wf-snaps > button, .wf-snaps > .qf,
.kpkt-toggle > button, .kpkt-toggle > .qf,
.chips > button, .chips > .qf,
.q-faner > button, .q-faner > .qf{
  flex:1 1 auto;
  justify-content:center;
  /* MAALT paa 390: med min-width:0 krympet de fem fanene paa min side inn paa
     samme rad og teksten la seg oppaa hverandre. Et flex-element med
     white-space:nowrap krymper under innholdet sitt hvis det faar lov — da
     bryter raden aldri. Gulvet er derfor innholdsbredda, men aldri bredere
     enn sporet: da bryter den til ny rad paa smal skjerm, og deler resten
     paa bred. Skjult sideskrolling er forbudt i vaare egne regler. */
  min-width:min(100%, max-content);
}

/* ── NEDTREKKET SOM ERSTATTER FANERADA PAA SMAL SKJERM ──────────────────
   Skallet (vit-shell.js) bytter et spor som BRYTER ut med denne <select>-en.
   Den skal se ut som en velger i huset, ikke som nettleserens eget felt:
   samme hoeyde som en kontroll, samme radius, samme ramme og samme skrift.
   Pila tegnes som bakgrunnsbilde fordi appearance:none fjerner den innebygde
   — uten den ser feltet ut som en tekstboks, og ingen skjoenner at det kan
   aapnes. Fargen i pila er --stone skrevet som %23 (URL-koda #), fordi et
   data:-bilde ikke kan lese en CSS-variabel. */
/* ALLE NEDTREKK, IKKE BARE FANENEDTREKKET (29.08.2026).
   MAALT innlogget: 9 av 10 <select> i appen sto i nettleserens egen drakt, i
   SJU forskjellige hoegder — 21, 31, 33, 35, 37, 44 og 45 px paa arkiv, index,
   min side, mine kunder, rapport-baerekraft, resultat og verdivurdering. Et
   nedtrekk er en kontroll som alle andre; da skal det se ut som en.
   Regelen ligger derfor paa elementet, ikke paa en klasse noen maa huske —
   samme grep som skriftarven oeverst i fila. En flate som VIL ha noe annet
   setter sin egen regel etterpaa. */
select,
.vsh-ned{
  box-sizing:border-box;
  min-height:var(--kontroll-h,44px);
  padding:0 38px 0 14px;
  font:600 var(--kontroll-fs,14px)/1.2 var(--font-display,Poppins),system-ui,sans-serif;
  color:var(--ink);
  background:var(--valg-flate) no-repeat right 12px center/16px 16px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235A5866' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  border:1px solid var(--valg-ramme);
  border-radius:var(--valg-radius);
  -webkit-appearance:none;appearance:none;cursor:pointer;
}
select:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

/* ══ FRITTLIGGENDE VALG — NIVAA 2 UTEN SPOR (30.08.2026) ═══════════════
   Kraken har hatt `--valg-gap-fri` («mellom frittliggende chips/faner») siden
   valgkonsolideringa, men ingen KLASSE for formen — saa alt havnet i et spor.
   To spor rett over hverandre leser som to menyer uansett skriftstoerrelse:
   samme form, samme ramme, samme flate.

   Med denne staar hovedvalget i et spor (én gruppert kontroll) og
   finjusteringa som loese chips under. Da er det to FORMER, ikke to menyer.
   Knappene beholder all draktene sin fra familien — bare sporet gaar bort. */
:is(.lens,.seg,.chips,.tg,.ford-chips).uten-spor{
  background:none;border:0;padding:0;gap:var(--valg-gap-fri);flex-wrap:wrap;
  min-height:0;
}

/* ══ NIVAA 1 MOT NIVAA 2 — SKRIFTA BAERER DET (30.08.2026) ══════════════
   Kenneth: «bedre hierarki. Ikke to menyer rett over hverandre.»

   Vedtaket fra 06.08 var at hovedvalget staar over finjusteringa: .gran er
   nivaa 1 (44 px, --valg-font-str) og .lens/.seg/.chips er nivaa 2 (32 px,
   --valg-font-str-2, ett skrifttrinn ned). Kommentaren ved den regelen sier
   hva som skjer uten: flata leser som «én stor meny uten sammenheng».

   MAALT 30.08 paa lager.html: .gran og .lens er BEGGE 44 px og BEGGE 14 px.
   Nivaadelinga er altsaa doed i hele appen, ikke bare i portalen. Aarsaken er
   beroeringsgulvet rett over: det setter baade min-height OG font-size, og
   `min-height:44` slaar `height:32`, mens den flate 14-pikselen slaar begge
   --valg-font-str-tokenene.

   Hoegda BEHOLDER gulvet — 44 px er et treffmaal, ikke pynt, og skal ikke
   senkes for aa lage hierarki. Skrifta baerer det i stedet: nivaa 1 paa 15 px,
   nivaa 2 paa 13,5. Da er hovedvalget fortsatt tyngst, og ingen mister et
   treffmaal. */

.lens button,.seg button,.tg button,.chips button,.chips .chip,
.kpkt-toggle button,.ford-chips button,.snaps button,.wf-snaps button{
  font-size:var(--valg-font-str-2);
}


/* FELTENE HAR SAMME DRAKT SOM NEDTREKKENE (30.08.2026).
   Nedtrekkene ble samlet 29.08; input-feltene ble ikke maalt da. MAALT over
   39 sider: 20 ulike avvik — hoegder paa 18, 20, 23, 24, 25, 26, 34, 35, 37,
   40 og 42 px, radius paa 0, 7, 8 og 10. Elleve hoegder og fire hjoerner for
   det samme elementet.

   Et felt er en kontroll som alle andre. Regelen ligger paa ELEMENTET, ikke
   paa en klasse noen maa huske — samme grep som skriftarven og nedtrekkene.
   Sokefeltet i skallet og feltene i grafverktoeyene har egne maal og staar
   utenfor; de er navngitt, ikke glemt. */
input:not([type=hidden]):not([type=range]):not([type=checkbox]):not([type=radio]):not(.vsh-search-inn),
textarea{
  box-sizing:border-box;
  min-height:var(--kontroll-h,44px);
  padding:0 14px;
  font:500 var(--kontroll-fs,14px)/1.2 var(--font-body,Poppins),system-ui,sans-serif;
  color:var(--ink);
  background:var(--surface);
  border:1px solid var(--valg-ramme);
  border-radius:var(--valg-radius);
}
textarea{padding:10px 14px;line-height:1.5}
/* FELT MED IKON FORAN (03.09.2026). Soekefeltet paa Min side («Soek etter
   kassesystem») hadde forstoerrelsesglasset oppaa teksten: regelen over
   (0,5,1) slo sidens .kasse-sok (0,1,0), saa padding-left ble 14 px mens
   ikonet laa 11–27 px. Ett grep for alle felt med ikon: omslaget faar
   .felt-ikon, og feltet faar plass til ikonet — samme spesifisitet + én klasse. */
.felt-ikon > input:not([type=hidden]):not([type=range]):not([type=checkbox]):not([type=radio]):not(.vsh-search-inn){padding-left:38px}
input:focus-visible, textarea:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

/* TREFFMAAL PAA TELEFON (29.08.2026). Maalt paa 39 sider ved 390 px: fire
   DELTE kontroller sto under gulvet — a.back (18 px), a.tilbake (19),
   button.hjelp-lenke (20) og button.ord (23). Apple HIG sier 44, Material 48,
   og WCAG 2.5.8 setter 24 som absolutt minstemaal.

   Lenker som ligger INNE i en setning er unntatt i standarden, og med god
   grunn: et fagord med prikket strek kan ikke vaere 44 px hoegt uten aa
   sprenge linja det staar i. Disse fire er ikke det — de staar for seg selv,
   og da gjelder gulvet. Regelen ligger her fordi klassene er delte; hver av
   dem fantes paa flere flater. */
/* GULVET GJELDER ALLE FRITTSTAAENDE KONTROLLER, ikke en liste med navn
   (29.08). Foerste utgave listet fire klasser; sveipen fant sju til med
   andre navn paa andre sider — a.lov-hjem, button.invit, button.dl-lukk og
   navnloese knapper. En regel som maa utvides hver gang noen doeper en ny
   knapp, er ikke en regel.

   :where() gir null spesifisitet, saa enhver flate som VIL ha noe annet
   fortsatt vinner uten !important. Unntaket er det samme som i standarden:
   ligger kontrollen inne i loepende tekst, er den unntatt — ellers maatte et
   fagord vaert 44 px hoegt og sprengt linja si. */
:where(button, a, [role="button"]):not(:where(p, li, td, th, span, b, strong, em, .term, .kd, .ord-tekst) *){
  min-height:var(--kontroll-h,44px);
}
/* min-height biter ikke paa et rent inline-element. Disse er lenker og
   knapper som staar for seg selv, men arver inline fra teksten rundt —
   derfor maa de ogsaa faa en boks. */
a.back, a.tilbake, a.lov-hjem, button.hjelp-lenke, .ordrad button.ord{
  display:inline-flex;align-items:center;min-height:var(--kontroll-h,44px);
}
/* .kd og .term er fagord MIDT I EN SETNING (prikket understrek). De er
   unntatt i WCAG 2.5.8, og et 44 px hoegt ord ville sprengt linja si. */
button.kd, .term{min-height:0}

/* TITLER ER SVARTE (30.08.2026). Husets regel: lilla baerer lenker,
   merkevare og eyebrow-etiketter — den lille versalteksten OVER en tittel.
   Selve tittelen, teksten som navngir et kort eller en seksjon, er blekk.

   MAALT paa 39 sider: sju titler sto i merkefargen. Alle er 14 px,
   setningsform, ikke lenker — altsaa titler, ikke etiketter:
     .fk-tittel   «Til naa» · «Neste ukene» · «Fremover»   pengestrom
     .d-tit       «Prisene»                                pengestrom
     .fakta-tittel «Innhentingsforbudet gjelder …»         intervju-laer-mer
   Klassene bor paa hver sin side, men REGELEN er felles og hoerer derfor
   her. Dukker det opp en ny, finner sveipen den.

   .sec-tag stod ogsaa paa lista i foerste utgave — feil. Den er versal, mono
   og sperret, altsaa et EYEBROW, og eyebrows SKAL vaere lilla. Det var
   proben min som ikke skilte de to, ikke sida som brøt regelen. */
/* HELE .fk-tittel OG .d-tit BOR HER (30.08.2026). Komponent-vakta stoppet
   pushen: klassene var definert baade i arket (farge) og i pengestrom.html
   (skrift og luft). En delt klasse med to kilder driver fra hverandre —
   det er nettopp det vakta finnes for. Formen foelger med hit. */
.fk-tittel, .fakta-tittel{color:var(--ink)}
.fk-tittel{display:flex;align-items:center;gap:7px;font:600 var(--fs-sm) var(--font-display)}
/* .d-tit staar IKKE her. Navnet baeres av to ulike komponenter: en
   seksjonsoverskrift paa Forstaa (19 px/700) og en liten drivertittel paa
   pengestroem (13,5 px/600). De er ikke samme ting, og en delt regel ville
   tvunget dem sammen. Komponent-vakta sier det selv: «gi klassen et eget
   navn hvis den virkelig skal vaere annerledes.» Farge settes derfor lokalt
   der den lille varianten bor. */
.ordrad button.ord{padding-block:0}

.vsh-ned{
  display:block;width:100%;box-sizing:border-box;margin:0 0 12px;
  min-height:var(--kontroll-h,44px);
  padding:0 38px 0 14px;
  font:600 var(--kontroll-fs,14px)/1.2 var(--font-display,Poppins),system-ui,sans-serif;
  color:var(--ink);
  background:var(--valg-flate) no-repeat right 12px center/16px 16px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235A5866' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  border:1px solid var(--valg-ramme);
  border-radius:var(--valg-radius);
  -webkit-appearance:none;appearance:none;cursor:pointer;
}
.vsh-ned:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.vsh-ned[hidden]{display:none}
/* Sporet som er byttet ut staar igjen i DOM-en, klippet bort. Se grunnen i
   vit-shell.js: fanebytterne paa sidene leser geometri paa knappen de skal
   skru paa, og display:none tar den fra dem. */
.vsh-erstattet{position:absolute;width:1px;height:1px;
  overflow:hidden;clip-path:inset(50%);white-space:nowrap;
  pointer-events:none;margin:0;padding:0;border:0}

/* UVALGT DRAKT HOERER I FAMILIEN (29.08.2026).
   MAALT over ni sider: .gran, .lens, .seg og .q-faner tegnet alle uvalgt som
   hvit flate / 1px #EBE7F0 / 9px / #676A7D — men bare fordi hver av dem hadde
   sin egen regel som traff paa klassen .qf. Min sides faner er ekte <button>
   uten den klassen, og falt derfor til nettleserens buttonface: rgb(240,240,240),
   radius 0, ingen ramme. Graa er ikke i familien.

   Naar drakta staar paa familien i stedet for paa den enkelte klassen, kan
   ingen ny velger havne der igjen ved aa la vaere aa naevne farge. Valgt-
   tilstanden roeres ikke her — den kommer fra .on/[aria-pressed=true]
   lenger nede, og vinner paa spesifisitet. */
.gran > button:not(.on):not([aria-pressed="true"]),
.lens > button:not(.on):not([aria-pressed="true"]),
.seg > button:not(.on):not([aria-pressed="true"]),
.tg > button:not(.on):not([aria-pressed="true"]),
.ford-chips > button:not(.on):not([aria-pressed="true"]),
.snaps > button:not(.on):not([aria-pressed="true"]),
.regntog > button:not(.on):not([aria-pressed="true"]),
.wf-snaps > button:not(.on):not([aria-pressed="true"]),
.kpkt-toggle > button:not(.on):not([aria-pressed="true"]),
.chips > button:not(.on):not([aria-pressed="true"]),
.q-faner > button:not(.on):not([aria-pressed="true"]){
  background:var(--valg-flate);
  border:1px solid var(--valg-ramme);
  border-radius:var(--valg-radius);
  color:var(--valg-farge);
}
.gran > button.on, .gran > button[aria-pressed="true"],
.lens > button.on, .lens > button[aria-pressed="true"],
.seg > button.on, .seg > button[aria-pressed="true"],
.tg > button.on, .tg > button[aria-pressed="true"],
.ford-chips > button.on, .ford-chips > button[aria-pressed="true"],
.snaps > button.on, .snaps > button[aria-pressed="true"],
.regntog > button.on, .regntog > button[aria-pressed="true"],
.wf-snaps > button.on, .wf-snaps > button[aria-pressed="true"],
.kpkt-toggle > button.on, .kpkt-toggle > button[aria-pressed="true"],
.chips > button.on, .chips > button[aria-pressed="true"],
.q-faner > button.on, .q-faner > button[aria-pressed="true"]{
  background:var(--valg-valgt-flate);
  border:1px solid transparent;
  border-radius:var(--valg-radius);
  color:var(--valg-valgt-farge);
}
.gran button.on,
.lens button.on,
.seg button.on,
.tg button.on,
.ford-chips button.on,
.snaps button.on,
.regntog button.on,
.wf-snaps button.on,
.kpkt-toggle button.on,
.chips button.on,
.q-faner button.on,
.gran button[aria-pressed="true"],
.lens button[aria-pressed="true"],
.seg button[aria-pressed="true"],
.tg button[aria-pressed="true"],
.ford-chips button[aria-pressed="true"],
.snaps button[aria-pressed="true"],
.regntog button[aria-pressed="true"],
.wf-snaps button[aria-pressed="true"],
.kpkt-toggle button[aria-pressed="true"],
.chips button[aria-pressed="true"],
.q-faner button[aria-pressed="true"]{font-weight:700}

/* ══ INFOBOKSEN ══════════════════════════════════════════════════════════
   Sidas «her er kjernen»-boks. Egen flate i familien, ingen skygge, ingen
   farget stripe — den skiller seg ved TONE, som resten av hierarkiet.
   Spesifisiteten matcher lista lenger oppe som deler ut nivaa-1-tonen
   (body[data-vit-modul] :is(.visboks,.story,…)); uten det taper regelen og
   boksen staar hvit som alle andre kort — maalt etter foerste forsoek. */
/* Naar «Sammenhengen» er flyttet inn i «Det viktigste», er de ÉN boks:
   den indre skal ikke lenger tegne sin egen ramme og sitt eget hjoerne. */
/* Den indre boksen tegner ikke lenger sin egen ramme — de er ÉN boks. */
.story.har-story > .viktigst{
  background:none;border:0;border-radius:0;
  padding:14px 0 0;margin:12px 0 0;
  border-top:1px solid var(--infoboks-ramme);
}

/* INFOBOKSEN BEHOLDER FLATA SI OGSAA INNE I ET KORT (29.08).
   Regelen «en flate maler aldri tonen den alt ligger paa» nuller bakgrunn
   og ramme for .story naar den staar inne i .kort/.kort-flate — og etter
   sammenslaainga staar den nettopp der. Maalt: boksen rendret uten flate.
   Unntaket gjelder BARE den sammenslaatte infoboksen, saa den generelle
   regelen staar urort for alt annet. */
/* OGSAA NAAR BOKSEN IKKE LIGGER I ET KORT (29.08). Maalt fane for fane:
   inne i .kort-flate fikk den flata (#F5F0FC), men paa «Resultat» — der
   «Det viktigste» bor rett under main — sto den gjennomsiktig. Aarsaken er
   en generell regel body[data-vit-modul] :is(.kort,…,.story,…){background:
   initial} som har HOEYERE spesifisitet enn en bar .story.har-story.
   Derfor maa unntaket ha body-leddet med seg ogsaa utenfor kort. */
body[data-vit-modul] :is(.kort,.kort-flate) .story.har-story,
body[data-vit-modul] .story.har-story,
.story,.story.har-story{ /* alle Sammenhengen-bokser (lager-forstå har .story uten har-story) */
  background:var(--sammenheng-flate);
  border:1px solid var(--sammenheng-ramme);
  border-radius:var(--boks-radius);
  margin:0 0 var(--luft-blokk);
  /* 20/26: teksten sto «SÅ VIDT innenfor» (Kenneth 02.09) — linjene brøt mot ramma. */
  padding:20px 26px 20px 22px;
}
/* Valgraden (Forrige måned / Samme måned i fjor / Hittil i år) lå limt inntil
   Sammenhengen-boksen (Kenneth 02.09). Luft mellom to blokker er blokkluft. */
body[data-vit-modul] .story.har-story + .gran,
.story.har-story + .gran{margin-top:var(--luft-blokk)}
/* Kakene i en grafboks/seksjon var 280 px som alle grafer — for små til å lese
   etikettene (Kenneth 02.09: Beholdning · Detaljene og Per vare). */
.grafboks > .graf-kake, .av-del > .graf-kake, .av-seksjon > .graf-kake{height:400px}


/* HJELPEKNAPPEN OG SOEKET PAA KONTROLLMAALET (29.08.2026).
   De to siste kontrollene under 44 px etter at --knapp-h ble hevet: «?»
   sto 34x34 med egne piksler, soekefeltet 37. Begge henger naa i tokenet,
   saa neste justering treffer dem ogsaa. */



/* ══ SEGMENTGRUPPER BRYTER PAA SMAL SKJERM (29.08.2026) ══════════════════
   MAALT paa 390 px etter at kontrollmaalet ble hevet til 44/14/16:
     likviditet  .lens   16 → 612   (222 px utenfor skjermen)
     min-side    .ms-nav 16 → 629
     index       en knapp 338 → 407
   Kontrollene ble stoerre — riktig etter HIG og Material — men radene laa
     paa én linje, og da skyver de innholdet ut av skjermen. Vannrett
   skrolling paa mobil er forbudt i vaare egne regler.
   Bryting, ikke skjult skrolling: en fane som ligger utenfor kanten finnes
   ikke for den som ikke vet at den er der. */
@media (max-width:560px){
  .gran button,
  .lens button,
  .seg button,
  .tg button,
  .ford-chips button,
  .snaps button,
  .regntog button,
  .wf-snaps button,
  .kpkt-toggle button,
  .chips button,
  .q-faner button{
    padding-inline:12px;
  }
}





/* ══ HJOERNET SKALLET EIER (29.08.2026) ══════════════════════════════════
   .vsh-hjelp ligger fast oeverst til hoegre i SKJERMEN. Da den vokste fra
   34 til 44 px etter touch-kravet, la den seg oppaa avataren paa min-side —
   maalt 44x44 px overlapp mot .ms-avatar-h i .doc-right.

   Kollisjonen kan bare skje paa sider der innholdet naar helt ut til
   skjermkanten, altsaa der det IKKE er en laeremarg til hoegre. Paa Forstaa
   stopper kolonnen paa 906 og knappen staar paa 1378 — der er det ingen
   konflikt, og da skal det heller ikke reserveres plass.
   Regelen bor i skallet: en side kan ikke gjette hvor mye plass skallet
   trenger, og neste side med hoegrestilt innhold skal ikke maatte oppdage
   dette paa nytt. */
.vsh:not(:is(:has(.learn),.h-learn)):not(:has(.bm-bot)):not(:has([data-vit-marg])) .doc-head{
  padding-right:var(--hjelp-plass,80px);
}

/* =====================================================================================
   NYE VITIN — grammatikken fra mock 21, rullet ut globalt (Kenneth 03.09.2026:
   «Ellers er det nye designet, 100 %. Implementer globalt.»)
   Lerret synlig (--flate-0), hvite bokser med hårlinje og --boks-radius, rytme
   --luft-blokk, infobokser grå, Sammenhengen lys lilla, velgere i hvitt spor med
   valgt-fargen, KPI-rekka som ÉN boks med skiller, overskrifter svarte uten tonet hode.
   Ligger sist i arket og vinner på rekkefølge. Bytt verdier i vit-tokens.css, ikke her.
   ===================================================================================== */
/* Periodelinja hører til i Sammenhengen (Kenneth 03.09) — motoren flytter den inn; her får den formen. */
.story.har-story > .periodelinje{margin:0 0 8px;font-size:var(--fs-sm);color:var(--ink-3);max-width:none}
/* Et spor INNI en hvit boks (grafkortets hode på forsida) tegner ikke egen boks — da blir det boks i boks.
   Der er det bare den valgte flata som synes. Målt 03.09: .gran i .periodctl og .lens i .cc-head. */
:is(.chart-card,.card,.cc,.visboks,.visboks-flate,.tabellboks,.kpis,.utl-card,.iv-card,.bento-panel) :is(.gran,.lens,.seg,.tg,.snaps,.wf-snaps,.kpkt-toggle){border-color:transparent;background:transparent;padding:0}
/* INGEN TEKST RETT PÅ LERRETET (Kenneth 03.09, «hva har jeg sagt om tekst rett på canvas?»). Målt over 23 sider:
   sidas lede (Likviditet), seksjonsundertekst (Min side), kildelinjer og bransjenotat (Verdivurdering), bunnlinja
   (Resultat) og seksjonsledene i Forstå lå rett på lerretet. Samme grå infoboks som all annen løs tekst. */
.sek-sub{margin-top:var(--luft-blokk)}
/* Alt annet på lerretet er en hvit boks: fossefallet på Resultat, bransjereferansen på Verdivurdering og
   Detaljene-lista på Forstå lå rett på lerretet (målt 03.09). */
.pl-v4-wrap,.vv-bransje,.fo-opp{background:var(--flate-1);border:1px solid var(--ramme-1);border-radius:var(--boks-radius);padding:16px;margin:0 0 var(--luft-blokk)}
/* Sidenes egne regler for disse klassene er flyttet hit (komponent-vakta: én kilde). */
.pl-v4-wrap{position:relative}
.pl-v4-skattnote{display:flex;margin:0 0 var(--luft-blokk)}
.pl-hint{margin-top:var(--luft-blokk);font:400 var(--fs-xs)/1.5 var(--font-body);color:var(--stone)} /* sidas regel flyttet hit; paddingen eies av infoboks-regelen */
.duo{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--luft-blokk);margin:0 0 var(--luft-blokk)}
.sek-head{display:flex;align-items:flex-start;justify-content:space-between} /* sidas regel flyttet hit; margen eies av stripe-regelen over */
.sek-head *{background:transparent;border:0;padding:0;margin:0} /* underteksten er vanlig tekst inne i hodet, ikke infoboks */
.sek-head .sek-tittel{margin-bottom:2px}
.ph > .lede{max-width:none!important}
/* En tom fotnote tegner ingen boks (Kenneth 03.09: «pålimte setninger midt i canvasen» skal BORT, ikke i boks). */
.kort-fakta:empty,.kildelinje:empty,.fotnote:empty{display:none}
/* Fotnoter rett på lerretet i Forstå («Trykk på en stolpe …», «…») er pålimte setninger — bort. Forklaringene bor i Sammenhengen og margen. */
.kort-flate > .kort-fakta{display:none}
/* Overskrift rett over et spor (Forstå: «Hvor mye kommer inn?» → Innsikt/Detaljene): 18 mellom, ikke 8+10+18. */
body[data-vit-modul] .kort > .kort-hode:has(+ :is(.seg,.gran,.lens)){padding-bottom:0;margin-bottom:var(--luft-blokk)}
body[data-vit-modul] .kort > .kort-hode + :is(.seg,.gran,.lens){margin-top:0}
/* Kontrollrada rett under sidetittelen (forsida: Regnskapsår + tannhjul) står PÅ tittellinja, som på Resultat. Skallet flytter den inn i .doc-head. */
/* Rytmen mellom bokser er 18 også der sida selv sa 14 (Verdivurdering: KPI-rekka og bransjeboksen, målt 03.09). */
body .kpi-grid{margin-bottom:var(--luft-blokk)}
/* Forsida (main.stage er flex-kolonne, marger kollapser ikke): KPI-rekka eier ingen bunnmarg — naboen under har 18 på toppen. */
body .kpis{margin-bottom:0}
/* Siste barn i en kort-flate eller i en duo-celle eier ingen bunnmarg — kortet/gapet gir rytmen (Resultat målt 74, Forstå 36). */
body :is(main,.page) .kort-flate > :last-child,body :is(main,.page) .duo > * > :last-child{margin-bottom:0}
body :is(main,.page) .kort + .kort{margin-top:0} /* to kort etter hverandre: det første eier lufta (container-type hindrer kollaps, målt 36 på Resultat) */ /* veier mer enn infoboks-regelen (0,3,0) */
body[data-vit-modul] .kort-flate,body[data-vit-signatur] .kort > .kort-flate{padding-bottom:0}
/* .kort har container-type og danner egen formateringskontekst: barnets toppmarg kollapser ikke med kortets.
   Stripa først i kortet eier derfor ingen toppmarg — kortets 18 er rytmen. Står etter stripe-regelen med samme vekt. */
body[data-vit-modul] .kort:is(:has(> .kort-flate),.h-flate) > .kort-hode:has(+ .kort-flate):not(:has(+ .kort-flate > .story)),body[data-vit-signatur] .kort > .kort-hode:has(+ .kort-flate):not(:has(+ .kort-flate > .story)){margin-top:0} /* samme vekt som stripe-regelen (:not-leddet teller), og senere */
body .vv-bransje{margin:0 0 var(--luft-blokk)}
.doc-head > .cmprow{margin:0;justify-content:flex-end}
body[data-vit-modul] .doc-head + *,.doc-head + *{margin-top:0} /* hodet eier lufta (18); i flex-kolonner kollapser ikke marger */
/* Velgerne står i rytmen: --luft-blokk over og under. Målt 03.09: null-regelen her gjorde at sporet på
   Likviditet lå klint mot KPI-rekka og boksen under (foreldren har ingen gap). Blokkmarger kollapser mot naboene,
   så et spor mellom to bokser gir nøyaktig én luftblokk. */
body[data-vit-modul] :is(.lens, .gran, .seg){margin-top:var(--luft-blokk);margin-bottom:var(--luft-blokk)}
/* …men et spor som står i en hode-rad (flex-rad) eier ikke rytmen, rada gjør det. Målt 03.09 på forsida:
   .gran i .periodctl og .lens i .cc-head fikk 18 px oppå rada. */
body[data-vit-modul] :is(.periodctl,.cc-head,.kort-hode,.chart-head,.ch-head,.card-head,header) > :is(.lens, .gran, .seg){margin-top:0;margin-bottom:0} /* samme vekt som regelen over + én klasse */
/* Hovedkolonnen eier margen (24 px). En .page INNI main skal ikke legge sin egen ramme oppå den —
   Sykefravær målt 03.09: boksene startet 112 px, alle andre 88. Sju sider har mønsteret. */
main > .page,.page-wrap > .page{padding-top:0;padding-left:0;padding-right:0}
/* Læremargen: 24 px luft inn til teksten, som meny→main. */
/* Boks-i-boks-rettelser etter maaling paa 1360 (03.09): */
/* 1) «Det viktigste» inni Sammenhengen er en del av boksen, ikke en egen boks. */
.story .viktigst,body[data-vit-modul] .story .viktigst,.story .s-txt,body[data-vit-modul] .story .s-txt{background:transparent;border:0;box-shadow:none;padding-left:0;padding-right:0}
/* 3) Alle KPI-rekker er ÉN boks med skiller — ogsaa .kpi-grid/.kpirad/.kpi-group med .vv-kpi/.kpi-card. */
/* Rekka kjennes paa CELLENE (:has), ikke paa sidas klassenavn — .kpi-grid eies av sidene (kolonner/gap)
   og komponent-vakta skal ikke se to eiere. */
body[data-vit-modul] :is(.kpirad,.kpi-group,.kpi-gruppe),body[data-vit-modul] :has(> .vv-kpi),body[data-vit-modul] :has(> .kpi-card){background:var(--flate-1);border:1px solid var(--ramme-1);border-radius:var(--boks-radius);padding:0;gap:0;overflow:hidden}
body[data-vit-modul] :is(.kpirad,.kpi-group,.kpi-gruppe) > :is(.vv-kpi,.kpi-card,.kpi),body[data-vit-modul] :is(.vv-kpi,.kpi-card){background:transparent;border:0;border-left:1px solid var(--ramme-2);border-radius:0;padding:12px 16px;box-shadow:none}
body[data-vit-modul] :is(.kpirad,.kpi-group,.kpi-gruppe) > :first-child,body[data-vit-modul] :is(.vv-kpi,.kpi-card):first-child{border-left:0}

/* A) RADIUS-LOVEN: alle bokser er skarpe — ogsaa sidenes egne boksfamilier. !important fordi
   sidene laster sine stilark ETTER skallet. Piller, sirkler og knapper er ikke bokser. */
body[data-vit-modul] :is(.kort,.kort-flate,.card,.chart-card,.visboks,.visboks-flate,.av-seksjon,.av-del,.ed-del,.en-del,.opps,.kontorad,.bento-panel,.bento-del-velger,.info-panel,.rg-table-wrap,.utl-card,.utl-list,.iv-card,.iv-guide,.vei-kort,.sf-kort,.sf-lag,.ped-pane,.tabellboks,.tabell-ramme,.graf-boks,.grafboks,.pf-panel,.fo-opp,.rg-card,.kpis,.kpi-grid,.kpirad,.kpi-group,.kpi,.vv-kpi,.kpi-card,.story,.infoboks,.dek-boks,.trappen-detalj,.forfall-blk,textarea,.q-faner,.seg,.gran,.lens,.tg,.chips){border-radius:var(--boks-radius)}
/* C) ALDRI LOES TEKST PAA LERRETET (Kenneth 03.09: «*sep er til 2. i begge aar» laa rett paa skjermen):
   forklaringer, fotnoter og kildelinjer som IKKE staar inni en boks, faar infoboks-formen. */
:is(main,.page) :is(.kort-fakta,.kildeped,.smlm-info,.kildelinje,.kort-lede,.fotnote,.pl-hint,.visboks-hint,.mm-note,.ph-sub,.iv-peda-p,.kilde-fot,.kb-fot,.en-fot,.chart-hjelp,.sek-sub,.kilde-linje,.vvb-linje,.vvb-note):not(:is(.card,.visboks,.visboks-flate,.chart-card,.kpis,.story,.infoboks,.k,.bento-panel,.rg-doc,.fo-opp,.tabellboks,.utl-card,.iv-card,.hero,.vbm,.sek-head) *),
.ph > .lede,main > .footer /* egne selektorer, IKKE inne i :is() — :is() teller den tyngste og ville gitt (0,4,0) som slo rytme-reglene (målt 04.09) */{background:var(--infoboks-flate);border:1px solid var(--infoboks-ramme);border-radius:var(--boks-radius);padding:10px 14px;margin:0 0 var(--luft-blokk);font-size:var(--fs-sm);line-height:1.5;color:var(--ink-2)} /* smaatekst (Kenneth 03.09: «ALT for stort») */
/* D) Nøstede bokser maalt 03.09: rader og delfelter er ikke bokser. */
body[data-vit-modul] :is(.avv-row,.vv-box,.utl-card-stat){background:transparent;border-left:0;border-right:0;border-radius:0;box-shadow:none} /* .kontorad/.fo-linj er sebra-rader — de skal beholde stripene (Kenneth 03.09) */
body[data-vit-modul] .utl-list{background:transparent;border:0;padding:0}


/* ============================================================================================
   M3-LAGET OVER SKALLET — VEDTATT 06.09.2026. Flyttet inn fra mock-lager/m3-lag.css: typografi, tonale flater,
   valgsporet med glideindikator (.m3-ind, vit-shell.js), menyikoner, lasteboksen. Går ut etter hvert som sidene
   erstattes av v2-grammatikken under — da er de gamle klassene borte.
   ============================================================================================ */
html{background:var(--md-sys-color-surface)!important}
body>.page{background:var(--md-sys-color-surface)!important}

/* ── Typografi: M3-skalaen. h1 = headline-medium («litt større», Kenneth 04.09) ── */
main h1,.doc-head h1{font:400 1.75rem/2.25rem var(--md-ref-typeface-brand)!important;letter-spacing:0;color:var(--md-sys-color-on-surface)}
.doc-meta,.eyebrow,.pl-eyebrow,.s-eye,.i-eye,.kicker{font:500 .75rem/1rem var(--md-ref-typeface-plain)!important;letter-spacing:.5px;text-transform:uppercase}
.kort-hode .kort-sp,.kort-hode h2,.k h2,.chart-card h2,.card-head h2,.sek-tittel,.pl-headline,.av-eye{font:500 1rem/1.5rem var(--md-ref-typeface-plain)!important;letter-spacing:0;color:var(--md-sys-color-on-surface)!importanttext-transform:none!important} /* title-medium (også .av-eye: budsjett bruker den som seksjonsoverskrift) */
.story p,.story li{font:400 1rem/1.5rem var(--md-ref-typeface-plain)} /* body-large */
.infoboks,.kort-fakta,.kildelinje,.pl-hint{font-size:.875rem!important;line-height:1.25rem!important} /* body-medium */
.kpis .num,.kpi .num,.kpi-val,.k-tall,.kpiboks .num{font:400 1.375rem/1.75rem var(--md-ref-typeface-brand)!important;letter-spacing:0} /* title-large */

/* ── Flater: M3 skiller med tone, ikke strek. Sammenhengen og infoboksene har ingen ramme. ── */
.story,.story.har-story{border:0!important;color:var(--md-sys-color-on-primary-container)!important}
.story .s-eye,.story.har-story .s-eye{color:var(--md-sys-color-on-primary-container)!important;opacity:.85}
.story b{color:var(--md-sys-color-on-primary-container)}
.infoboks,:is(main,.page) :is(.kort-fakta,.kildeped,.smlm-info,.kildelinje,.kort-lede,.fotnote,.pl-hint,.visboks-hint,.mm-note,.ph-sub,.iv-peda-p,.kilde-fot,.kb-fot,.en-fot,.chart-hjelp,.sek-sub,.kilde-linje,.vvb-linje,.vvb-note),.ph > .lede,main > .footer{border:0!important;color:var(--md-sys-color-on-surface-variant)!important;padding:12px 16px!important}
.infoboks .i-eye{color:var(--md-sys-color-primary)!important}
/* kort = outlined card (hårlinje i outline-variant, hjørne 12) — allerede via tokenene */
/* graf i kort: grafflata er IKKE en egen boks (Kenneth 04.09: «graf i graf»). Skallets nivå-2-boks rundt .graf/ECharts går ut. */
body[data-vit-modul] .k .graf,body[data-vit-modul] .kort .graf,body[data-vit-modul] .hero .graf,body[data-vit-modul] [_echarts_instance_],.k .graf,.graf [_echarts_instance_]{background:transparent!important;border:0!important;border-radius:0!important;padding:0!important}

/* ── Valgsporet: VÅRT (hvitt spor, valgt flate) + M3s glideindikator (m3-lag.js legger inn .m3-ind) ── */
.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner{position:relative;isolation:isolate}
.m3-ind{position:absolute;top:4px;left:0;height:calc(100% - 8px);width:0;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);z-index:0;
  transition:transform .3s cubic-bezier(.2,0,0,1),width .3s cubic-bezier(.2,0,0,1);pointer-events:none}
.m3-ind.stille{transition:none}
:is(.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner) > :is(button,a,label,.qf){position:relative;z-index:1;background:transparent!important;border-color:transparent!important}
:is(.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner) > :is(button,a,label,.qf):is(.on,[aria-pressed="true"]){background:transparent!important;color:var(--md-sys-color-on-secondary-container)!important}

/* ── Menyen som i dag, ikonene = Material Symbols (m3-lag.js) ── */
nav.vsh-side .material-symbols-outlined{font-size:var(--ikon-lg);line-height:1;font-variation-settings:'FILL' 0,'wght' 400,'opsz' 20;color:currentColor;display:block}
nav.vsh-side .vsh-acc-btn.is-current .material-symbols-outlined,nav.vsh-side .vsh-acc-btn.on .material-symbols-outlined{font-variation-settings:'FILL' 1,'wght' 400,'opsz' 20}
nav.vsh-side .vsh-ico svg,nav.vsh-side button.vsh-search > svg{display:none!important}
nav.vsh-side .vsh-ico{display:inline-flex!important;align-items:center;justify-content:center;width:18px;height:18px;flex:none}

/* ── Lasteboksen = M3 basic dialog: surface-container-high, hjørne 28, 24 px luft, headline-small ── */
.vit-last{background:color-mix(in srgb,var(--md-sys-color-scrim) 32%,transparent)!important}
.vit-last-kort{background:var(--md-sys-color-surface-container-high)!important;color:var(--md-sys-color-on-surface)!important;border:0!important;border-radius:var(--md-sys-shape-corner-large-increased)!important;padding:18px 20px!important;min-width:280px;max-width:400px} /* ingen skygge: flat-vedtaket gjelder — M3s elevasjon uttrykkes med tonen (surface-container-high) */
.vit-last-hd{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.vit-last-t{font:500 1rem/1.5rem var(--md-ref-typeface-plain)!important;letter-spacing:0!important;text-transform:none!important;color:var(--md-sys-color-on-surface)!important}
.vit-last-tall{margin-left:auto;font:500 .875rem/1.25rem var(--md-ref-typeface-plain)!important;color:var(--md-sys-color-on-surface-variant)!important}
.vit-last-snurr{width:18px;height:18px;border:2.5px solid var(--md-sys-color-secondary-container);border-top-color:var(--md-sys-color-primary);border-radius:var(--md-sys-shape-corner-full);animation:m3snurr 1s linear infinite}
@keyframes m3snurr{to{transform:rotate(360deg)}}
.vit-last-rad{display:flex;align-items:center;gap:10px;padding:4px 0;font:400 .875rem/1.25rem var(--md-ref-typeface-plain)!important;color:var(--md-sys-color-on-surface)!important;border:0!important}
.vit-last-rad .vl-ikon,.vl-merke{flex:none;width:18px;height:18px;border-radius:var(--md-sys-shape-corner-full);display:inline-flex;align-items:center;justify-content:center;font-size:var(--ikon-xs);background:var(--md-sys-color-surface-container-highest);color:var(--md-sys-color-on-surface-variant)}
.vit-last-rad.ferdig .vl-ikon,.vl-merke.ja{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}
.vit-last-rad.feil .vl-ikon,.vl-merke.nei{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}
.vit-last-rad .vl-st{margin-left:auto;font:500 .75rem/1rem var(--md-ref-typeface-plain)!important;color:var(--md-sys-color-on-surface-variant)!important}
.vit-last-rad.ferdig .vl-st{color:var(--md-sys-color-primary)!important}
.vit-last-under{font:400 .875rem/1.25rem var(--md-ref-typeface-plain)!important;color:var(--md-sys-color-on-surface-variant)!important;margin-top:12px}

/* knapper: M3 filled tonal / outlined */
body .btn,body .btn-sekundaer,body .h-knapp,body .bm-tom,body .qf.vpille,body .kortmeny-btn{border-radius:var(--md-sys-shape-corner-full)!important;border:1px solid var(--md-sys-color-outline)!important;background:transparent!important;color:var(--md-sys-color-primary)!important;font:500 .875rem/1.25rem var(--md-ref-typeface-plain)!important;padding:8px 20px!important}
body .btn-primary,body .send,body .su-start,body .h-knapp.primaer,body .ph-cta{border-radius:var(--md-sys-shape-corner-full)!important;border:0!important;background:var(--md-sys-color-primary)!important;color:var(--md-sys-color-on-primary)!important;font:500 .875rem/1.25rem var(--md-ref-typeface-plain)!important;padding:8px 20px!important}
/* TILSTANDENE (17.09.2026). De to reglene over satte hele knappespesifikasjonen med
   !important og definerte ingen tilstander. Da vant hvileflata over enhver :hover-regel,
   og hover var DØD på hver knapp i appen — målt med ekte mus: hvile rgb(113,50,245),
   hover rgb(113,50,245). To uavhengige årsaker lå oppå hverandre: dette !important-laget,
   og at --brand-2 (som hover pekte på) var satt lik --brand i v2-utrullingen.
   M3 bytter ikke farge på hover — beholderen står, og on-fargen legges oppå: 8 % hover,
   10 % trykk. Tokenene er avledet av --brand i vit-tokens.css, så de følger temaet.
   Fylt MÅ stå etter omriss: .btn-primary bærer som regel .btn også, og de to har lik
   spesifisitet. Fokusringen ligger globalt på :focus-visible (linje ~3072). */
body .btn:hover:not(:disabled),body .btn-sekundaer:hover:not(:disabled),body .h-knapp:hover:not(:disabled),body .bm-tom:hover:not(:disabled),body .qf.vpille:hover:not(:disabled),body .kortmeny-btn:hover:not(:disabled){background:var(--omriss-hover)!important}
body .btn:active:not(:disabled),body .btn-sekundaer:active:not(:disabled),body .h-knapp:active:not(:disabled),body .bm-tom:active:not(:disabled),body .qf.vpille:active:not(:disabled),body .kortmeny-btn:active:not(:disabled){background:var(--omriss-trykk)!important}
body .btn-primary:hover:not(:disabled),body .send:hover:not(:disabled),body .su-start:hover:not(:disabled),body .h-knapp.primaer:hover:not(:disabled),body .ph-cta:hover:not(:disabled){background:var(--brand-hover)!important}
body .btn-primary:active:not(:disabled),body .send:active:not(:disabled),body .su-start:active:not(:disabled),body .h-knapp.primaer:active:not(:disabled),body .ph-cta:active:not(:disabled){background:var(--brand-trykk)!important}
/* mockbar */
.mockbar{background:var(--md-sys-color-secondary-container)!important;color:var(--md-sys-color-on-secondary-container)!important;border:0!important;border-radius:var(--md-sys-shape-corner-medium)!important;padding:12px 16px!important;font:400 .875rem/1.25rem var(--md-ref-typeface-plain)!important}
.mockbar b{font-weight:500}
.story .s-eye,.story.har-story .s-eye{color:var(--sammen-eye,var(--brand-2))!important;opacity:1} /* mørk palett setter --sammen-eye (Kenneth 05.09: ikke mørk lilla der) */
.infoboks .i-eye{color:var(--brand-2)!important;opacity:1} /* lilla overskrift i Sammenhengen (mock 21) */

/* ============================================================================================
   M3 EXPRESSIVE-LAGET — VEDTATT 06.09.2026. Flyttet inn fra mock-lager/m3x-lag.css: form, Emphasized-typografi,
   ConnectedButtonGroup, knapper, tekstfelt, kortgrammatikken (boks-i-boks-loven).
   ============================================================================================ */
/* ── Kortene: corner-large, romsligere (Expressive er luftigere: 20 px inn i kortet) ── */
.k{border-radius:var(--md-sys-shape-corner-large)!important;padding:20px!important}
/* ekte kort i appen: bare hjørnet — padding og overskriftsstripa eies av skallet (05.09: padding her rev stripa løs) */
.kort,.chart-card,.card,.visboks,.tabellboks{border-radius:var(--md-sys-shape-corner-large)!important}
/* inni et kort er det kortet som er rundt, ikke delene (05.09: hakk mellom overskriftsstripa og flata) */
/* INNI EN BOKS ER BARE BOKSEN RUND (05.09, Kenneth: «overlapping flere plasser»). --boks-radius gikk fra 0 til 16,
   og skallet gir tokenet også til celler, hoder og flater INNI boksene — da fikk hver celle egne runde hjørner og
   hakk mot naboen. Her: alt inni er firkantet; første/siste barn arver boksens hjørner. Rutenett klipper selv. */
.kpis > .kpi,.kpi-grid > *,.kort :is(.card,.card-head,.card-body,.kort-hode,.kort-flate,.ov-graf,.wfbox,.visboks,.tabellboks,.chart-card,.sek-head),.card :is(.card-head,.card-body,.sek-head),.chart-card :is(.wfbox,.ov-graf){border-radius:0!important}
.kpis,.kpi-grid{overflow:hidden!important}
.kort > :first-child,.card > :first-child,.kort > .kort-flate > :first-child{border-top-left-radius:var(--md-sys-shape-corner-large)!important;border-top-right-radius:var(--md-sys-shape-corner-large)!important}
.kort > :last-child,.card > :last-child,.kort > .kort-flate > :last-child{border-bottom-left-radius:var(--md-sys-shape-corner-large)!important;border-bottom-right-radius:var(--md-sys-shape-corner-large)!important}
.kort > .kort-hode + .kort-flate > :first-child,.card > .card-head + .card-body{border-top-left-radius:0!important;border-top-right-radius:0!important}
/* stripe + flate er ÉN boks (skallets regel; !important over rev den): stripa tar toppen, flata bunnen */
body .cc-headline,body .sek-head,body main h2:has(+ .kpi-grid),body .iv-h:has(+ .iver-brief){border-radius:var(--md-sys-shape-corner-large) var(--md-sys-shape-corner-large) 0 0!important}
body .cc-headline + .chart-card,body .sek-head + *,body main h2 + .kpi-grid,body .iv-h + .iver-brief{border-top-left-radius:0!important;border-top-right-radius:0!important}
.k h2{font:var(--md-sys-typescale-title-medium-emphasized)!important;letter-spacing:0!important;margin-bottom:12px!important}
.kort-hode .kort-sp,.kort-hode h2,.chart-card h2,.card-head h2,.sek-tittel,.pl-headline,.av-eye{font:var(--md-sys-typescale-title-medium-emphasized)!important;letter-spacing:0!important}
main h1,.doc-head h1{font:var(--md-sys-typescale-headline-medium-emphasized)!important;letter-spacing:-.01em!important}
.kpis .num,.kpi .num,.kpi-val,.k-tall,.kpiboks .num{font:var(--md-sys-typescale-title-large-emphasized)!important}
.kpiboks .lbl,.doc-meta,.eyebrow,.pl-eyebrow,.s-eye,.i-eye,.kicker{font:var(--md-sys-typescale-label-medium-emphasized)!important;letter-spacing:.5px!important}
.kpiboks>div{padding:16px 20px!important}
/* Sammenhengen bærer mest — large-increased (20) og body-large med tyngre første setning */
body[data-vit-modul] main .story,body[data-vit-modul] .story.har-story{border-radius:var(--md-sys-shape-corner-large-increased)!important;padding:20px 24px!important}
.story p:first-of-type{font:var(--md-sys-typescale-body-large-emphasized)}
.story .viktigst-h{font:var(--md-sys-typescale-title-medium-emphasized)!important}
/* Infoboksene: medium (12) — underordnet, mindre hjørne enn kortet den forklarer */
.infoboks,:is(main,.page) :is(.kort-fakta,.kildeped,.smlm-info,.kildelinje,.kort-lede,.fotnote,.pl-hint,.visboks-hint,.mm-note,.ph-sub,.iv-peda-p,.kilde-fot,.kb-fot,.en-fot,.chart-hjelp,.sek-sub,.kilde-linje,.vvb-linje,.vvb-note),.ph > .lede,main > .footer{border-radius:var(--md-sys-shape-corner-medium)!important;padding:14px 18px!important}
.tl-lbl .kildelinje,.tl-rad .kildelinje{border-radius:0!important;padding:0!important;background:transparent!important} /* etiketter i tidslinja er tekst, ikke bokser (05.09) */
.mockbar{border-radius:var(--md-sys-shape-corner-large)!important}

/* ── Valggruppa = ConnectedButtonGroup: 40 høy, 2 px mellom, indre hjørner 8, ytre helt runde.
      Valgt = helt rund (50 %) — indikatoren vår (.m3-ind) er den valgte formen og glir med
      Expressive-fjæra (d=0.8 k=380). Trykket = 4 px hjørner (formmorf mens fingeren er nede). ── */
/* Kenneth 06.09: «menyen kan ikke ha en rund maske som gjør at deler av ordene forsvinner» — gruppa bryter til flere rader, klipper aldri, 22 px = pille på én rad */
:is(.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner):not(.vsh-erstattet){gap:2px!important;padding:2px!important;border-radius:var(--md-sys-shape-corner-gruppe)!important;height:auto!important;flex-wrap:wrap!important;overflow:visible!important;position:relative;width:fit-content!important;max-width:100%!important;box-sizing:border-box}
:is(.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner) > :is(button,a,label,.qf){
  /* 40, ikke 36: segmented button er utgått i Expressive, og arvtakeren — connected
     button group — er 40 høy (ConnectedButtonGroupSmallTokens.ContainerHeight). 36 finnes
     ikke i M3s høydesett i det hele tatt. */
  height:var(--kontroll-s)!important;min-height:var(--kontroll-s);padding:0 16px!important;font:var(--md-sys-typescale-label-large)!important;
  border-radius:var(--md-sys-shape-corner-small)!important;
  transition:border-radius var(--md-sys-motion-spatial-fast-duration) var(--md-sys-motion-spatial-fast-easing),color var(--md-sys-motion-effects-default-duration) var(--md-sys-motion-effects-default-easing),background-color var(--md-sys-motion-effects-default-duration) var(--md-sys-motion-effects-default-easing)}
:is(.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner) > :is(button,a,label,.qf):first-of-type{border-top-left-radius:var(--md-sys-shape-corner-full)!important;border-bottom-left-radius:var(--md-sys-shape-corner-full)!important}
:is(.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner) > :is(button,a,label,.qf):last-of-type{border-top-right-radius:var(--md-sys-shape-corner-full)!important;border-bottom-right-radius:var(--md-sys-shape-corner-full)!important}
:is(.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner) > :is(button,a,label,.qf):is(.on,[aria-pressed="true"]){border-radius:var(--md-sys-shape-corner-full)!important;font-weight:700!important}

/* ── PRIMARY TAB (PrimaryNavigationTabTokens.kt, 21.09.2026) ──────────────────
   «Primary tabs are placed at the top of the content pane under a top app bar»
   — TabRow.kt. Hos Google er de 48 dp høye, med TitleSmall i vekt 500. Våre sto
   på 36 og gikk til 700 når de var valgt.

   INGEN INDIKATORLINJE. M3 har en 3 dp aksentstrek under den aktive fanen;
   Kenneth 21.09: «utenom en ting: den lilla underlinjen». Den valgte fanen
   skilles av flata si, slik den alltid har gjort her. */
main.x .q-faner > :is(button,a,label,.qf){height:var(--kontroll-m)!important;min-height:var(--kontroll-m)}
main.x .q-faner > :is(button,a,label,.qf):is(.on,[aria-pressed="true"]){font-weight:500!important}
main.x .q-faner .m3-ind{height:var(--kontroll-m)}
:is(.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner) > :is(button,a,label,.qf):active{border-radius:var(--md-sys-shape-corner-extra-small)!important;background:color-mix(in srgb,var(--md-sys-color-on-surface) 10%,transparent)!important}
.m3-ind{top:2px;height:var(--kontroll-s);border-radius:var(--md-sys-shape-corner-full);
  transition:transform var(--md-sys-motion-spatial-default-duration) var(--md-sys-motion-spatial-default-easing),width var(--md-sys-motion-spatial-default-duration) var(--md-sys-motion-spatial-default-easing)}

/* ── ETT TEKSTFELT I HELE APPEN (21.09.2026) ───────────────────────────────────
   Maalt samme dag: tre ulike felt. Soekefeltet 32 px og helt rundt, botens felt 32 px
   og helt rundt, skjemafeltet 41 px med 4 px hjoerne. M3 har ETT tekstfelt:
   TextFieldDefaults.MinHeight = 56 dp, CornerExtraSmall (4), BodyLarge.
   Regelen ligger paa elementet, ikke paa en klasse noen maa huske — samme grep som
   nedtrekkene fikk 29.08. Light er Compact og har sine egne, bevisste maal. */
html:not(.vsh-light) :is(main.x,aside.learn) :is(input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea){
  min-height:var(--kontroll-l);
  border-radius:var(--felt-radius);
  font:var(--md-sys-typescale-body-large);
}
html:not(.vsh-light) :is(main.x,aside.learn) textarea{min-height:calc(var(--kontroll-l) * 2)}

/* ── BERØRINGSMÅLET (InteractiveComponentSize.kt, 21.09.2026) ──────────────────
   Ordrett fra Googles KDoc: «If a component has a visual size that is lower than the
   minimum touch target size, extra space outside the component will be included.»
   LocalMinimumInteractiveComponentSize = 48.dp.

   Det er DERFOR en 32 dp-knapp er lovlig hos Google: den tegnes lav, men treffes 48.
   Vi tegnet 36–40 og traff like lite. Her utvides treffet uten at noe flytter seg:
   et usynlig felt midt på kontrollen, 48 høyt, som ikke tar plass i oppsettet.

   ::before, ikke ::after — målt 21.09: null regler i dette arket bruker ::before på
   en knapp, mens ::after bærer indikatorer og merker flere steder. */
main.x :is(.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner) > :is(button,a,label,.qf),
main.x :is(.btn-fyll,.btn-ut,.btn-tekst,.knappegruppe > button){position:relative}
main.x :is(.gran,.lens,.seg,.tg,.ford-chips,.snaps,.regntog,.wf-snaps,.kpkt-toggle,.chips,.q-faner) > :is(button,a,label,.qf)::before,
main.x :is(.btn-fyll,.btn-ut,.btn-tekst,.knappegruppe > button)::before{
  content:"";position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);
  height:var(--kontroll-m);min-height:var(--kontroll-m);pointer-events:auto;
}

/* ── Knapper (ButtonSmallTokens): 40 høy, runde; trykket = corner-small (formmorf med fjær) ── */
body .btn-make,body .btn,body .btn-sekundaer,body .h-knapp,body .bm-tom,body .qf.vpille,body .kortmeny-btn,body .btn-primary,body .send,body .su-start,body .h-knapp.primaer,body .ph-cta{
  height:40px;padding:0 16px!important;font:var(--md-sys-typescale-label-large-emphasized)!important;font-weight:500!important;
  transition:border-radius var(--md-sys-motion-spatial-fast-duration) var(--md-sys-motion-spatial-fast-easing),background-color var(--md-sys-motion-effects-default-duration) var(--md-sys-motion-effects-default-easing)}
body :is(.btn,.btn-sekundaer,.h-knapp,.bm-tom,.qf.vpille,.kortmeny-btn,.btn-primary,.send,.su-start,.ph-cta,.btn-make):active{border-radius:var(--md-sys-shape-corner-small)!important}

/* ── Lasteboksen: extra-large (28), 24 px luft. Formmorf-indikatoren er tatt ut (Kenneth 05.09: «ta den vekk fra lasteren»); snurren fra m3-lag.css står. ── */
.vit-last-kort{border-radius:var(--md-sys-shape-corner-extra-large)!important;padding:24px!important}
.vit-last-hd{gap:14px;margin-bottom:12px}

/* ── Læremargen: samme skala ── */
.vlm-blk:not(.bra):not(.pass),.vlm-instruks-rad,.marg-laere{border-radius:var(--md-sys-shape-corner-medium)!important}
.vlm-navn{font:var(--md-sys-typescale-title-medium-emphasized)!important}

/* IKONKNAPPER I VITIN-PALETTEN (05.09): primær C084FC (primær) som tynn strek på hvitt er 2,0:1 — tannhjulet og «?» ble en prikk.
   Ikoner i M3 står i on-surface-variant; bilde 2 bruker lilla som FLATE, aldri som strek. Bare vitin — de andre palettene rører vi ikke. */
/* BOT-LOGGEN (05.09): når loggen er rullet til siste svar, stikker bunnen av forrige spørsmålsboble fram under
   overskrifta som en løs lilla stripe. Toppen tones ut i stedet. */
.bm-lopet{-webkit-mask-image:linear-gradient(to bottom,transparent 0 11px,var(--md-sys-color-scrim) 24px);mask-image:linear-gradient(to bottom,transparent 0 11px,var(--md-sys-color-scrim) 24px)} /* loggen har 14 px topp-luft; de første 11 px er helt usynlige, så en 9 px flik av forrige boble aldri vises */

/* IKONKNAPPER (05.09): pille-regelen ga .kortmeny-btn padding 0 16 i en 40 px boks — tannhjulet ble 6 px bredt, en prikk */
/* .vsh-hjelp er TATT UT av denne gruppa (08.09.2026). Regelen finnes fordi
   pille-regelen klemte IKONknapper — tannhjulet ble 6 px bredt. Hjelpeknappen
   var en slik ikonknapp da den bare hadde «?» i seg. Naa sier den «Vis meg
   rundt», og da er padding:0 nettopp det som klemmer DEN: teksten laa helt
   inntil kanten paa begge sider. Den staar med sin egen regel lenger oppe. */
body .kortmeny-btn{padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}
body .kortmeny-btn svg{width:18px!important;height:18px!important}

/* TEKSTFELT (05.09, Kenneth: «ikke implementert over alt»): Kundeservice-skjemaet sto uten ramme. M3 outlined text field —
   ramme i outline, 4 px hjørne (corner-extra-small), flate i surface-container-lowest, fokus i primary.
   type="time" lagt til 24.09.2026: klokkeslett-feltet (innkallingen, intervjuet, stegarket i Light) manglet i lista,
   og velger-regelen input:not(…) (0,5,1) tegnet det som en pille uten synlig ramme. */
body :is(input:not([type]),input[type="text"],input[type="email"],input[type="search"],input[type="number"],input[type="password"],input[type="tel"],input[type="url"],input[type="date"],input[type="time"],textarea,select):not(.sok input):not(.bm-felt input):not(.vsh-ned):not(.vl-chip){background:var(--md-sys-color-surface-container-lowest)!important;color:var(--md-sys-color-on-surface)!important;border:1px solid var(--md-sys-color-outline)!important;border-radius:var(--felt-radius)!important;padding:10px 14px!important;font:500 var(--fs-base,var(--ikon-sm)) var(--font-body)!important;font-size:max(1rem,16px)!important/* 16 PX ER GULVET I SKJEMAFELT (16.09.2026): font-shorthanden over setter 15 px, og iOS zoomer inn paa felt under 16 px uten aa zoome ut igjen. Gulvet staar HER, inne i regelen det gjelder — et forsoek paa aa legge det i src/app/globals.css tapte paa spesifisitet (0,4,2 mot 0,5,4), maalt: feltet falt fra 16 til 15 saa snart denne fila ble lastet. max(1rem,16px) og ikke bare 16px, saa feltet foelger med hvis brukeren skrur opp skriften. */}
body :is(input,textarea,select):focus-visible{outline:2px solid var(--md-sys-color-primary)!important;outline-offset:0!important;border-color:var(--md-sys-color-primary)!important}
body input[type="range"]{background:transparent!important;border:0!important;padding:0!important} /* nettleserens hvite flate på skyveren (målt på Pengestrøm i mørkt) */

/* ===================================================================================================
   KORTGRAMMATIKKEN FRA MOCK 26–28 (05.09.2026, Kenneth: «du har jo glemt igjen alt fra expressive»).
   Mockene ble bygget med egen grammatikk (.k, .khode, .kpiboks, .story, .infoboks, lettere titler og tall);
   laget ga de ekte sidene bare radius og piller, og stripe-over-lerret-mønsteret fra august sto igjen —
   «boksene knekker rett under header». Her: ett kort = én hvit boks med overskrifta INNI, ikke en stripe.
   =================================================================================================== */
/* Kort: boksen eier bakgrunn, ramme, radius og luft. Hodet og flata er nakne inni. */
body .kort{background:var(--md-sys-color-surface-container-lowest)!important;border:1px solid var(--md-sys-color-outline-variant)!important;border-radius:var(--md-sys-shape-corner-large)!important;padding:16px!important;box-shadow:none!important}
body .kort > .kort-hode{background:transparent!important;border:0!important;border-radius:0!important;padding:0!important;margin:0 0 12px!important;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;box-shadow:none!important}
body .kort > .kort-flate{background:transparent!important;border:0!important;border-radius:0!important;padding:0!important;margin:0!important;box-shadow:none!important}
body .kort > .kort-flate > :first-child{margin-top:0!important}
/* .card (Min side, Sykefravær, Dokumenter): samme regel */
body .card{background:var(--md-sys-color-surface-container-lowest)!important;border:1px solid var(--md-sys-color-outline-variant)!important;border-radius:var(--md-sys-shape-corner-large)!important;padding:16px!important;box-shadow:none!important}
/* En .blokk som ogsaa heter .card (Sykefravaer: sakene, trappen) er en .blokk — samme radius og luft som naboene (maalt 18.09: 16 mot 28). */
body main.x .blokk.card{border-radius:var(--boks-radius)!important;padding:16px 20px!important}
body .card > .card-head{background:transparent!important;border:0!important;border-radius:0!important;padding:0 0 12px!important;margin:0!important}
body .card > .card-body{background:transparent!important;border:0!important;padding:0!important}
/* Grafkort: overskriftsstripa er kortets topp, uten synlig skjøt */
body .cc-headline{background:var(--md-sys-color-surface-container-lowest)!important;border:1px solid var(--md-sys-color-outline-variant)!important;border-bottom:0!important;border-radius:var(--md-sys-shape-corner-large) var(--md-sys-shape-corner-large) 0 0!important;padding:16px 16px 0!important;margin:0!important}
body .cc-headline + .chart-card{border:1px solid var(--md-sys-color-outline-variant)!important;border-top:0!important;border-radius:0 0 var(--md-sys-shape-corner-large) var(--md-sys-shape-corner-large)!important;padding:8px 16px 16px!important;margin-top:0!important}
body .sek-head{background:var(--md-sys-color-surface-container-lowest)!important;border:1px solid var(--md-sys-color-outline-variant)!important;border-bottom:0!important;border-radius:var(--md-sys-shape-corner-large) var(--md-sys-shape-corner-large) 0 0!important;padding:16px 16px 0!important}
body .sek-head + *{border-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}
/* Titler og tall som i mockene: lettere, større tittel; KPI-tall 1.375rem/400, etiketter uten versaler */
body .doc-head h1,body main h1,body .page h1{font:400 1.75rem/2.25rem var(--md-ref-typeface-brand,var(--font-display))!important;letter-spacing:0!important;color:var(--md-sys-color-on-surface)!important}
body .doc-meta{color:var(--md-sys-color-on-surface-variant)!important}
body .kpis > .kpi{padding:12px 16px!important}
body .kpi .kl{font:500 .75rem/1rem var(--md-ref-typeface-plain,var(--font-body))!important;letter-spacing:.5px!important;text-transform:none!important;color:var(--md-sys-color-on-surface-variant)!important}
body .kpi .kv{font:400 1.375rem/1.75rem var(--md-ref-typeface-brand,var(--font-display))!important;letter-spacing:0!important;color:var(--md-sys-color-on-surface)!important;font-variant-numeric:tabular-nums}
body .kpi .kd{font:400 .75rem/1rem var(--md-ref-typeface-plain,var(--font-body))!important;letter-spacing:0!important}
/* Sammenhengen og infoboksene med mockens mål */
body main .story,body[data-vit-modul] main .story,body[data-vit-modul] .story.har-story{background:var(--md-sys-color-primary-container)!important;border:0!important;border-radius:var(--md-sys-shape-corner-large)!important;padding:16px 20px!important}
body .infoboks{border-radius:var(--md-sys-shape-corner-large)!important;padding:12px 16px!important;font:400 .875rem/1.25rem var(--md-ref-typeface-plain,var(--font-body))!important;color:var(--md-sys-color-on-surface-variant)!important}

/* ---------------------------------------------------------------------------------------------------
   KORTGRAMMATIKKEN 2 — BOKS I BOKS (05.09.2026, Kenneth: «Resultatrapportene har en boks i boks»).
   Målt med scripts/maal/boks-i-boks.mjs på 16 sider: Resultat (.pl-v4-wrap med ramme på tre sider inni kortet),
   Budsjett (.visboks-hint som grå boks og .visboks-flate inni kortet), Sykefravær (.card med kvadratisk ramme inni
   kortet), Pengestrøm (.pf-panel), Lager-Forstå (.grafboks, .fo-opp), Verdivurdering (infoboks-avsnitt inni
   .vv-bransje). Mock 26–28: inni et kort er alt flatt; bare KPI-rutenett, story og infoboks har egen flate.
   Delene skilles med en hårlinje (.k .del i mockene), ikke med en ny ramme.
   --------------------------------------------------------------------------------------------------- */
/* BOKSLISTA: skallets radius-lov (vit-shell.css «A) RADIUS-LOVEN») sier hva som er en boks. Samme liste her, to ganger:
   ytterst er den en boks (skallet maler den), inni en annen fra lista er den flat. Ikke i lista: KPI-rutenett, story,
   infoboks (egen flate inni kortet, som i mockene), rader og velgere. */
body :is(.kort,.card,.chart-card,.visboks,.visboks-flate,.av-seksjon,.av-del,.ed-del,.en-del,.opps,.bento-panel,.info-panel,.rg-table-wrap,.utl-card,.iv-card,.iv-guide,.vei-kort,.sf-kort,.ped-pane,.tabellboks,.tabell-ramme,.graf-boks,.grafboks,.pf-panel,.fo-opp,.rg-card,.pl-v4-wrap,.vv-bransje,.dek-boks,.trappen-detalj,.forfall-blk,.graf-seg) :is(.kort,.card,.chart-card,.visboks,.visboks-flate,.av-seksjon,.av-del,.ed-del,.en-del,.opps,.bento-panel,.info-panel,.rg-table-wrap,.utl-card,.iv-card,.iv-guide,.vei-kort,.sf-kort,.ped-pane,.tabellboks,.tabell-ramme,.graf-boks,.grafboks,.pf-panel,.fo-opp,.rg-card,.pl-v4-wrap,.vv-bransje,.dek-boks,.trappen-detalj,.forfall-blk,.graf-seg){background:transparent!important;border:0!important;border-radius:0!important;padding:0!important;margin:0 0 16px!important;box-shadow:none!important}
body :is(.kort,.card,.chart-card,.visboks,.visboks-flate,.av-seksjon,.av-del,.ed-del,.en-del,.opps,.bento-panel,.info-panel,.rg-table-wrap,.utl-card,.iv-card,.iv-guide,.vei-kort,.sf-kort,.ped-pane,.tabellboks,.tabell-ramme,.graf-boks,.grafboks,.pf-panel,.fo-opp,.rg-card,.pl-v4-wrap,.vv-bransje,.dek-boks,.trappen-detalj,.forfall-blk,.graf-seg) :is(.kort,.card,.chart-card,.visboks,.visboks-flate,.av-seksjon,.av-del,.ed-del,.en-del,.opps,.bento-panel,.info-panel,.rg-table-wrap,.utl-card,.iv-card,.iv-guide,.vei-kort,.sf-kort,.ped-pane,.tabellboks,.tabell-ramme,.graf-boks,.grafboks,.pf-panel,.fo-opp,.rg-card,.pl-v4-wrap,.vv-bransje,.dek-boks,.trappen-detalj,.forfall-blk,.graf-seg) + :is(.kort,.card,.chart-card,.visboks,.visboks-flate,.av-seksjon,.av-del,.ed-del,.en-del,.opps,.bento-panel,.info-panel,.rg-table-wrap,.utl-card,.iv-card,.iv-guide,.vei-kort,.sf-kort,.ped-pane,.tabellboks,.tabell-ramme,.graf-boks,.grafboks,.pf-panel,.fo-opp,.rg-card,.pl-v4-wrap,.vv-bransje,.dek-boks,.trappen-detalj,.forfall-blk,.graf-seg){border-top:1px solid var(--md-sys-color-outline-variant)!important;padding-top:16px!important}
body .kort > .kort-flate > :last-child,body .kort > :last-child{margin-bottom:0!important}
/* Forklaring, hint og kildelinje INNI en boks er tekst, ikke en ny boks (skallets regel C gjelder løs tekst på lerretet).
   Mock 28: «.k p.l» — .875rem, on-surface-variant, uten flate. Eksplisitt .infoboks beholder flata (mock: .infoboks). */
body :is(.kort,.card,.chart-card,.visboks,.visboks-flate,.av-seksjon,.av-del,.ed-del,.en-del,.opps,.bento-panel,.info-panel,.rg-table-wrap,.utl-card,.iv-card,.iv-guide,.vei-kort,.sf-kort,.ped-pane,.tabellboks,.tabell-ramme,.graf-boks,.grafboks,.pf-panel,.fo-opp,.rg-card,.pl-v4-wrap,.vv-bransje,.dek-boks,.trappen-detalj,.forfall-blk,.graf-seg,.cc-headline) :is(.kort-fakta,.kildeped,.kildelinje,.kort-lede,.fotnote,.pl-hint,.visboks-hint,.mm-note,.ph-sub,.iv-peda-p,.kilde-fot,.kb-fot,.en-fot,.chart-hjelp,.sek-sub,.kilde-linje,.vvb-linje,.vvb-note):not(.infoboks):not(.tl-lbl *){background:transparent!important;border:0!important;border-radius:0!important;padding:0!important;margin:0 0 12px!important;font:400 .875rem/1.25rem var(--md-ref-typeface-plain,var(--font-body))!important;color:var(--md-sys-color-on-surface-variant)!important}
/* Kort-titler som i mockene (.k h2 / .khode h2): 500 1rem/1.5rem, ikke 1.5rem fet */
body :is(.kort > .kort-hode,.card > .card-head,.cc-headline,.sek-head) :is(h1,h2,h3,.kort-sp,.h-main,.card-h,.card-title,.sek-title){font:500 1rem/1.5rem var(--md-ref-typeface-plain,var(--font-body))!important;letter-spacing:0!important;color:var(--md-sys-color-on-surface)!important;margin:0!important}
/* KPI-rutenettet og boksen under skal ikke sitte inntil hverandre (målt 0–3 px på Oversikt og Lager; mock 26: 16 px) */
body :is(.kpis,.kpi-grid) + :is(.cc-headline,.kort,.card,.sek-head,.chart-card,.story,.infoboks){margin-top:16px!important}
/* Verdivurderingens hode (.iv-h har teksten rett i seg) — samme tittelmål */
body .iv-h{font:500 1rem/1.5rem var(--md-ref-typeface-plain,var(--font-body))!important;letter-spacing:0!important}
/* Pengestrøm: de tre øyeblikkene (.fk) var hoder uten bunn som rant inn i graframmen — «knekker på en av sidene».
   Nå: lukkede KPI-fliser som i mockens kpiboks, grafen flat under (graf-seg står i bokslista). */
body :is(.kort,.card,.chart-card,.visboks,.visboks-flate,.av-seksjon,.av-del,.ed-del,.en-del,.opps,.bento-panel,.info-panel,.rg-table-wrap,.utl-card,.iv-card,.iv-guide,.vei-kort,.sf-kort,.ped-pane,.tabellboks,.tabell-ramme,.graf-boks,.grafboks,.pf-panel,.fo-opp,.rg-card,.pl-v4-wrap,.vv-bransje,.dek-boks,.trappen-detalj,.forfall-blk,.graf-seg) .fk{background:var(--md-sys-color-surface-container-lowest)!important;border:1px solid var(--md-sys-color-outline-variant)!important;border-radius:var(--md-sys-shape-corner-medium)!important;padding:12px 16px!important}
body :is(.kort,.card,.chart-card,.visboks,.visboks-flate,.av-seksjon,.av-del,.ed-del,.en-del,.opps,.bento-panel,.info-panel,.rg-table-wrap,.utl-card,.iv-card,.iv-guide,.vei-kort,.sf-kort,.ped-pane,.tabellboks,.tabell-ramme,.graf-boks,.grafboks,.pf-panel,.fo-opp,.rg-card,.pl-v4-wrap,.vv-bransje,.dek-boks,.trappen-detalj,.forfall-blk,.graf-seg) .fk-hero span{font:400 1.375rem/1.75rem var(--md-ref-typeface-brand,var(--font-display))!important;letter-spacing:0!important}
/* Forklaringspaneler inni et kort som IKKE heter .infoboks (Del Vitin .hvorfor, Resultat .pr): samme flate som infoboksen */
body :is(.hvorfor,.pr){background:var(--md-sys-color-surface-container)!important;border:0!important;border-radius:var(--md-sys-shape-corner-large)!important;padding:12px 16px!important}

/* ============================================================================================
   V2-GRAMMATIKKEN («gullstandarden», Oversikt v2 06.09.2026). Flyttet inn fra mock-lager/m3x-v2.css og skopet til
   main.x / aside.learn — 40 av klassenavnene finnes fra før i appen. topp · helt · rute av fliser · blokk med
   overskriften inni · fot · to · regnestykke ovenfra og ned · tabeller med stolper · trapp og steg-bokser ·
   avtalen som dokument med hull · valg-panelet i margen.
   ============================================================================================ */
/* m3x-v2.css — Oversikt v2-grammatikken (mock 55/57, «gullstandarden» 06.09.2026), delt av mock 58 og oppover.
   topp (eyebrow + h1) · helt (primary-container, stort tall + chip + Sammenhengen) · rute av fliser · blokk (overskrift INNI) ·
   graf med diskret fot · to bokser · regnestykke ovenfra og ned · tabeller med stolper inni · margen = valg-panel (Oversikt) eller bot (Forstå). */
main.x{background:transparent!important;display:flex;flex-direction:column;gap:20px; /* 28 → 20 (Kenneth 18.09: «alt er for stort, for mye scrolling»; 07.09 ba om luft — 20 er M3-luft, ikke deigen fra 12) */padding:20px 24px 32px 32px!important; /* 32 fra skinna (56) = boksene starter på 88 som før, med 8 px mer lerret mellom */min-width:0;color:var(--md-sys-color-on-surface);font-family:var(--md-ref-typeface-plain)}main.x > *{margin:0!important}main.x .app{--learn-w:420px!important}main.x .app > aside.learn{padding-left:24px!important}main.x .eye{font:var(--md-sys-typescale-label-medium);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant)}main.x h1.disp{font:var(--md-sys-typescale-display-small);letter-spacing:0}main.x .topp{display:flex;align-items:flex-end;justify-content:flex-start;gap:16px;flex-wrap:wrap}/* STI-LENKA OG ØYEBRYNET UNDER DEN ER HUSETS (19.09): lå som to like kopier under rekruttering og sykefravaer — Mine kunder
   fikk en rå nettleserknapp. Standard hører i malen, ikke i kalleren. */main.x .sti{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;padding:0;margin-bottom:6px;font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);cursor:pointer;font-family:inherit}main.x .sti .ms{font-size:var(--ikon-lg)}main.x .topp .eye.under{display:block}main.x .topp .lede{margin:6px 0 0;font:400 .9375rem/1.4rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)} /* linja under sidetittelen — hvem kunden er (org.nr · bransje · sted), 20.09 *//* Tittelen tar plassen, alt etter den samles til hoeyre (18.09.2026): skallet setter hjelpeknappen (.vsh-hjelp) inn som tredje barn, og med space-between havnet den ene handlingsknappen midt paa raden — maalt paa Ansatte («Legg til ansatt» x=497 av 986) og Rekruttering. M3 top app bar: trailing actions staar samlet i enden. */main.x .topp > :first-child{margin-right:auto}main.x .topp .hoyre{display:flex;gap:10px;align-items:center;flex-wrap:wrap}/* IKONKLASSEN ER GLOBAL (11.09.2026): regelen laa under main.x, saa et ikon utenfor hovedkolonnen — skallets «Snu mobilen»-hint paa telefon — sto som ordet «screen_rotation». Samme felle som «CHAT» som ord (08.09). Fonten lenkes av skallet paa alle sider; klassen skal virke overalt. */
.ms{font-family:'Material Symbols Outlined';font-size:var(--ikon-xl);line-height:1;vertical-align:-4px}
/* Helten */
main.x .helt{background:var(--boks-helt);border-radius:var(--md-sys-shape-corner-extra-large);padding:20px 24px;display:grid;grid-template-columns:auto 1fr;gap:32px;align-items:center;color:var(--md-sys-color-on-primary-container)}main.x .helt.prosa{grid-template-columns:1fr}/* TONEVARIANTER (19.09, byråportalen): samme form, annen tone fra paletten — hierarki uten nye former. */main.x .helt.sek{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}main.x .helt.sek .eye{color:var(--md-sys-color-on-secondary-container)}main.x .blokk.sek{background:var(--md-sys-color-secondary-container);border-color:transparent;color:var(--md-sys-color-on-secondary-container)}main.x .blokk.sek .bt,main.x .blokk.sek .lede,main.x .blokk.sek .fot{color:inherit}main.x .blokk.sek .eye{color:var(--md-sys-color-on-secondary-container)}main.x .blokk.sek .btn-ut{background:var(--md-sys-color-surface-container-lowest)}main.x .flis.ter{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container,var(--md-sys-color-on-surface))}main.x .helt .tall b{display:block;font:400 3rem/3.25rem var(--md-ref-typeface-brand);letter-spacing:-.5px;font-variant-numeric:tabular-nums;white-space:nowrap}main.x .helt .tall > span{display:var(--helt-under-disp,block);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);margin-top:4px}main.x .helt .tall > span > span{display:inline}main.x .helt .tall > span .del{display:inline-block} /* delene i kjeden («per 16.09.2026») holdes samlet — vit-shell.js holdDeleneSamlet (20.09) */ /* fagord-merkingen legger et span rundt ordet — det arvet blokk og brakk «i driftsinntekter hittil i 2026» i tre linjer (maalt 20.09) */main.x .helt .tall .d{display:var(--helt-chip-disp,inline-flex);margin-top:var(--helt-chip-topp,10px);border-radius:var(--helt-chip-radius,var(--md-sys-shape-corner-full));padding:var(--helt-chip-pad,3px 12px);background:var(--helt-chip-bg,var(--md-sys-color-surface-container-lowest));font:var(--helt-chip-font,500 .8125rem/1.25rem var(--md-ref-typeface-plain));color:var(--md-sys-color-on-surface-variant)} /* formen (pille/linje) styres av --helt-chip-* satt på helten — se «DEN STABLEDE HELTBOKSEN» (20.09) */main.x .helt .tall .d.opp{color:var(--up)}main.x .helt .tall .d.ned{color:var(--neg)}main.x .helt .eye{color:var(--md-sys-color-primary)}main.x .helt p{font:var(--md-sys-typescale-body-large);margin-top:4px}main.x .helt p + p{margin-top:10px}main.x .helt p b{font-weight:600}main.x .helt .vh{font:500 .9375rem/1.5rem var(--md-ref-typeface-plain);margin:10px 0 2px}main.x .helt ul{margin:0;padding-left:18px;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain)}main.x .helt li b{font-weight:600}main.x .sp{width:100%}
/* Flisene */
main.x .rute{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}main.x .rute.seks{grid-template-columns:repeat(3,minmax(0,1fr))}main.x .flis{background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-large);padding:var(--flis-pad-y,12px) var(--flis-pad-x,14px);min-width:0;transition:border-radius .4s cubic-bezier(.2,0,0,1),background .2s;border:0;text-align:left;font-family:inherit;color:inherit;cursor:pointer;display:block}main.x .flis:hover{background:var(--md-sys-color-surface-container-high)}main.x .flis.valgt,main.x .flis:focus-within{background:var(--md-sys-color-secondary-container);border-radius:var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small)}main.x .flis .l{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}main.x .flis .n{display:block;font:400 var(--flis-tall,1.25rem)/1.35 var(--md-ref-typeface-brand);font-variant-numeric:tabular-nums;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}main.x .flis .d{display:inline-flex;margin-top:calc(var(--flis-pad-y,12px) / 2);border-radius:var(--md-sys-shape-corner-full);padding:1px 8px;font:500 .6875rem/1rem var(--md-ref-typeface-plain);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface-variant);max-width:100%;white-space:normal;text-align:left} /* brekker, klippes aldri (07.09): ellipsen virker ikke i inline-flex, og fire fliser i bredden klipte «midt-varen ruller så mange ganger i året» midt i ordet */main.x .flis .d.opp{color:var(--up)}main.x .flis .d.ned{color:var(--neg)}main.x .flis .felt{display:flex;align-items:baseline;gap:4px;border-bottom:2px solid var(--md-sys-color-primary);margin-top:2px}main.x .flis .felt input{border:0;background:transparent;font:400 1.25rem/1.5rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface);font-variant-numeric:tabular-nums;width:100%;min-width:0;outline:0}main.x .flis .felt span{font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
/* Blokkene — overskriften inni */
main.x /* FilledCardTokens.ContainerShape = CornerMedium (12). Sto på extra-large (28), som er
   DialogTokens.ContainerShape — kortet bar dialogens form. */
.blokk{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--boks-radius);padding:16px 20px} /* 20/24 → 16/20 (18.09: «alt er for stort»; M3 card content padding 16) *//* Blokk-tittelen er ogsaa en kortoverskrift og foelger tetthetstokenet.
   MAALT i prod: main.x h2 traff ikke her — .blokk .bt er 0,2,1 og slaar
   0,1,1. Den som VINNER maa lese tokenet, ellers flytter ikke flata seg. */
main.x .blokk .bt{font:500 var(--kort-h2,18px)/1.5 var(--md-ref-typeface-plain)}   /* TitleMediumLineHeight 24 på 16 — var 1.4 (22,4) */main.x .blokk .bh{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}main.x .blokk .bh .hoyre{display:flex;gap:10px;align-items:center;flex-wrap:wrap}main.x .blokk h3{font:500 1rem/1.5rem var(--md-ref-typeface-plain);margin:0 0 6px}main.x .blokk .lede{font:400 .9375rem/1.4rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-bottom:12px}main.x .blokk .del{padding-top:16px;margin-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}main.x .fot{display:flex;gap:18px;flex-wrap:wrap;margin-top:8px;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}main.x .fot span .ms{font-size:var(--ikon-md);margin-right:4px;color:var(--md-sys-color-primary)}main.x .to{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:stretch}main.x .to .blokk{display:flex;flex-direction:column;min-width:0}main.x .blokk .tabellboks{overflow-x:auto}main.x .to.kake-hoyre{grid-template-columns:1fr 1.3fr}main.x .to.en{grid-template-columns:1fr}main.x .tom{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;flex:1;min-height:240px;padding:12px}main.x .tom.lav{min-height:120px} /* tomtilstand i en liten boks (lagrede oppsett) */
main.x .tom .form{width:56px;height:56px;border-radius:var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small);background:var(--md-sys-color-secondary-container)}main.x .tom p{font:400 .9375rem/1.4rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);max-width:300px}main.x .mnd h3{font:400 1.375rem/1.75rem var(--md-ref-typeface-brand);margin-bottom:6px}main.x .mnd > .rad{padding-left:var(--tabell-pad-x,8px);padding-right:var(--tabell-pad-x,8px)} /* sebraen trenger luft på sidene, som tabellcellene */
main.x .mnd .u{font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-bottom:8px}
/* Radene */
main.x .rad{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}main.x .rad:last-child{border-bottom:0}main.x .rad b{font:400 1.125rem/1.5rem var(--md-ref-typeface-brand);font-variant-numeric:tabular-nums;white-space:nowrap}main.x .rad b.opp{color:var(--up)}main.x .rad b.ned{color:var(--neg)}main.x .rad .st{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
/* Regnestykket ovenfra og ned, som i matteboka */
:is(main.x,aside.learn) .regn .r{display:grid;grid-template-columns:22px 1fr auto;gap:8px;align-items:baseline;padding:6px 0}:is(main.x,aside.learn) .regn .r .op{font:400 1.125rem/1 var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface-variant);text-align:center}:is(main.x,aside.learn) .regn .r .l{font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}:is(main.x,aside.learn) .regn .r .l small{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}:is(main.x,aside.learn) .regn .r .n{font:400 1rem/1.5rem var(--md-ref-typeface-brand);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}:is(main.x,aside.learn) .regn .r.svar{border-top:2px solid var(--md-sys-color-on-surface);margin-top:4px;padding-top:8px}:is(main.x,aside.learn) .regn .r.svar .l{font-weight:500}:is(main.x,aside.learn) .regn .r.svar .n{font-size:1.25rem;line-height:1.5rem;color:var(--md-sys-color-primary)}:is(main.x,aside.learn) .regn .r.mellom{border-top:1px solid var(--md-sys-color-outline);margin-top:2px;padding-top:8px}:is(main.x,aside.learn) .regn .r.mellom .l{font-weight:500}:is(main.x,aside.learn) .regn .r.valgt{background:var(--md-sys-color-secondary-container);border-radius:var(--md-sys-shape-corner-medium);padding-left:6px;padding-right:6px;margin-left:-6px;margin-right:-6px}
/* Tabellene i Detaljene, med stolper inni */
main.x .linjer{width:100%;border-collapse:collapse;font:400 var(--tabell-fs,14px)/1.25rem var(--md-ref-typeface-plain);font-variant-numeric:tabular-nums}main.x .linjer th{font:500 var(--tabell-hode-fs,12px)/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);text-align:left;padding:var(--tabell-pad-y,7px) var(--tabell-pad-x,8px);border-bottom:1px solid var(--md-sys-color-outline-variant)}main.x .linjer td{padding:var(--tabell-pad-y,7px) var(--tabell-pad-x,8px);border-bottom:1px solid var(--md-sys-color-outline-variant);vertical-align:middle}main.x .linjer td.tall,main.x .linjer th.tall{text-align:right;white-space:nowrap}main.x .linjer td.opp{color:var(--up)}main.x .linjer td.ned{color:var(--neg)}main.x .linjer td.stolpe{width:26%;min-width:120px}main.x .linjer .st{display:block;height:8px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container-high);overflow:hidden;position:relative}main.x .linjer .st i{position:absolute;left:0;top:0;bottom:0;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary)}main.x .linjer .st i.fjor{background:var(--md-sys-color-outline-variant);top:auto;height:8px}main.x .linjer .st.par{height:18px;background:transparent}main.x .linjer .st.par i{height:8px;top:0}main.x .linjer .st.par i.fjor{top:10px}main.x .linjer .st i.ned{background:var(--neg)}main.x .linjer .st i.opp{background:var(--up)}main.x .linjer .st.null{background:transparent}main.x .linjer .st.null::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--md-sys-color-outline)}
main.x .linjer .st.delta{height:24px;width:14px;margin:0 auto;background:transparent;display:flex;align-items:flex-end}main.x .linjer .st.delta i{display:block;width:100%;min-height:2px;background:var(--md-sys-color-outline)}main.x .linjer .st.delta i.opp{background:var(--up)}main.x .linjer .st.delta i.ned{background:var(--neg)}main.x .linjer tr.sum td{font-weight:500;border-top:2px solid var(--md-sys-color-on-surface);border-bottom:0}main.x .linjer tr.mellom td{font-weight:500;border-top:1px solid var(--md-sys-color-outline)}main.x .tabellTegn{display:flex;gap:14px;flex-wrap:wrap;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:10px}main.x .tabellTegn i{display:inline-block;width:14px;height:6px;border-radius:var(--md-sys-shape-corner-full);margin-right:5px;vertical-align:1px;background:var(--md-sys-color-primary)}main.x .tabellTegn i.fjor{background:var(--md-sys-color-outline-variant)}
/* Knappene (Expressive: fylt = funksjon, kantet = sekundær) */
main.x .btn-fyll,main.x .btn-ut,aside.learn .btn-fyll,aside.learn .btn-ut{display:inline-flex;align-items:center;gap:6px;border-radius:var(--md-sys-shape-corner-full);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);padding:9px 18px;cursor:pointer;text-decoration:none;font-family:inherit;box-sizing:border-box}/* box-sizing 18.09.2026: en <a class=btn-fyll> er content-box, og skallets min-height (--kontroll-h) paa alle a/button la seg TIL polstringen — maalt 50 px paa Lovgrunnlag mot 38/40 for naboene */main.x .btn-fyll,aside.learn .btn-fyll{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border:0;padding:10px 18px}/* 40 px = M3 ButtonSmall ContainerHeight, likt den kantede (9+9+20+2 ramme) — foer sto fylt 38 ved siden av kantet 40 (maalt Sykefravaer 18.09) */main.x .btn-fyll:hover,aside.learn .btn-fyll:hover{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}main.x .btn-ut,aside.learn .btn-ut{background:transparent;color:var(--md-sys-color-primary);border:1px solid var(--md-sys-color-outline)}main.x .btn-ut:hover,aside.learn .btn-ut:hover{background:var(--md-sys-color-surface-container)}main.x .btn-fyll .ms,main.x .btn-ut .ms,aside.learn .btn-fyll .ms,aside.learn .btn-ut .ms{font-size:var(--ikon-lg)}
/* Spaken (hva om) */
main.x .spak{display:flex;flex-direction:column;gap:12px;margin-top:12px}main.x .spak .linje{display:flex;align-items:center;gap:12px;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}main.x .spak input[type=range]{flex:1;accent-color:var(--md-sys-color-primary)}main.x .spak .pct{font:500 .9375rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);min-width:56px;text-align:right}main.x .spak .ut{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}main.x .spak .ut div{background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-large);padding:10px 12px;font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}main.x .spak .ut b{display:block;font:400 1.125rem/1.5rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface);font-variant-numeric:tabular-nums;margin-top:2px}main.x .spak .ut b .d{font:400 .75rem/1rem var(--md-ref-typeface-plain);margin-left:6px}main.x .spak .ut b .d.opp{color:var(--up)}main.x .spak .ut b .d.ned{color:var(--neg)}
/* Banene (budsjett: levert mot målet, strek = der du skulle vært) */
main.x .bane{display:grid;grid-template-columns:190px 1fr 160px;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}main.x .bane:last-child{border-bottom:0}main.x .bane .navn b{display:block;font-weight:500}main.x .bane .navn span{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}main.x .bane .spor{position:relative;height:22px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container-high);overflow:hidden}main.x .bane .spor i{position:absolute;left:0;top:0;bottom:0;background:var(--md-sys-color-primary);border-radius:var(--md-sys-shape-corner-full)}main.x .bane .spor s{position:absolute;top:0;bottom:0;width:2px;background:var(--md-sys-color-on-surface);opacity:.5}main.x .bane .tall{text-align:right;font-variant-numeric:tabular-nums}main.x .bane .tall b{display:block;font:400 1.125rem/1.5rem var(--md-ref-typeface-brand)}main.x .bane .tall span{font:400 .75rem/1rem var(--md-ref-typeface-plain)}main.x .bane .tall .opp{color:var(--up)}main.x .bane .tall .ned{color:var(--neg)}
/* Margen som valg-panel (Oversikt-typen) */
aside.learn .vf{padding:4px 0 14px}aside.learn .vf .eye{color:var(--md-sys-color-primary)}aside.learn .vf h2{font:500 var(--kort-h2,18px)/1.4 var(--md-ref-typeface-plain);margin:2px 0 10px}aside.learn .valg{display:flex;flex-direction:column;gap:8px}aside.learn .tip{display:grid;grid-template-columns:40px 1fr auto;gap:12px;align-items:center;padding:10px 12px;border-radius:var(--md-sys-shape-corner-large-increased);background:var(--md-sys-color-surface-container-low);border:0;text-align:left;font-family:inherit;color:inherit;cursor:pointer;transition:background .2s}aside.learn .tip:hover{background:var(--md-sys-color-surface-container)}aside.learn .tip .lede{width:40px;height:40px;border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);display:inline-flex;align-items:center;justify-content:center;font-family:'Material Symbols Outlined';font-size:var(--ikon-xl);margin:0}aside.learn .tip b{display:block;font:500 .9375rem/1.25rem var(--md-ref-typeface-plain)}aside.learn .tip i{display:block;font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);font-style:normal;color:var(--md-sys-color-on-surface-variant);margin-top:2px}aside.learn .tip .pil{font-family:'Material Symbols Outlined';font-size:var(--ikon-xl);color:var(--md-sys-color-on-surface-variant)}aside.learn .tip.skriv .lede{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}aside.learn .tip .mer{grid-column:2 / -1;font:400 .875rem/1.3rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding-top:6px}.mockbar label{display:inline-flex;align-items:center;gap:6px;margin-left:12px;font-weight:500;cursor:pointer}
@media(max-width:1200px){main.x .helt{grid-template-columns:1fr}main.x .to,main.x .to.kake-hoyre{grid-template-columns:1fr}main.x .rute,main.x .rute.seks{grid-template-columns:repeat(2,1fr)}main.x .bane{grid-template-columns:150px 1fr 130px}}[hidden]{display:none!important}
/* Steg-bokser (Rekruttering/Sykefravær 06.09): trappen, skjemafeltene, sjekklista */
main.x .trapp{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}main.x .trinn{background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-large);padding:12px 14px;min-width:0;border:0;text-align:left;font-family:inherit;color:inherit;cursor:pointer;transition:border-radius .4s cubic-bezier(.2,0,0,1),background .2s}main.x .trinn:hover{background:var(--md-sys-color-surface-container-high)}main.x .trinn .form{display:inline-flex;width:32px;height:32px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);align-items:center;justify-content:center;font:500 .875rem/1 var(--md-ref-typeface-plain);transition:border-radius .4s cubic-bezier(.2,0,0,1),background .2s}main.x .trinn h3{font:500 .9375rem/1.25rem var(--md-ref-typeface-plain);overflow-wrap:anywhere;hyphens:auto;margin:8px 0 2px}main.x .trinn .frist{display:block;font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}main.x .trinn .lov{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);margin-top:4px}main.x .trinn.valgt{background:var(--md-sys-color-secondary-container);border-radius:var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small)}main.x .trinn.valgt .form{border-radius:var(--md-sys-shape-corner-small);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}main.x .trinn.ferdig .form{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}main.x .felter{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}main.x .felter label{min-width:0;display:flex;flex-direction:column;gap:6px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant)}main.x .felter label.bred{grid-column:1 / -1}main.x .felter input,main.x .felter textarea,main.x .felter select{width:100%;min-width:0;box-sizing:border-box;font:var(--md-sys-typescale-body-large);color:var(--md-sys-color-on-surface);min-height:var(--kontroll-l);padding:0 16px;border:0;border-radius:var(--felt-radius);letter-spacing:0;background:var(--md-sys-color-surface-container);outline:0;font-family:inherit}main.x .felter input:focus,main.x .felter textarea:focus,main.x .felter select:focus{background:var(--md-sys-color-secondary-container)}main.x .felter textarea{min-height:150px;resize:vertical}main.x .felter .hint{font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);letter-spacing:0}main.x .felter .merk{font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-error);letter-spacing:0}/* .lys (husets avkryssingsliste) inne i .felter (19.09): feltreglene over gjør label til kolonne og input til tekstfelt — sjekkpunktet får .lys-formen tilbake */main.x .felter .lys label{flex-direction:row;align-items:flex-start;gap:12px;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);letter-spacing:0;color:var(--md-sys-color-on-surface)}main.x .felter .lys input[type=checkbox]{width:18px;height:18px;padding:0;border-radius:0;background:none;margin-top:4px}main.x .knapper{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:14px}main.x .sjekk{display:grid;grid-template-columns:28px 1fr;gap:8px 10px;align-items:start;padding:12px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}main.x .sjekk:last-child{border-bottom:0}main.x .sjekk .ms{color:var(--md-sys-color-outline)}main.x .sjekk.fylt .ms{color:var(--md-sys-color-primary)}main.x .sjekk i{display:block;font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);font-style:normal;color:var(--md-sys-color-on-surface-variant)}main.x .sjekk > span:last-child{grid-column:2;display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:100%}main.x .sjekk > span:last-child:empty{display:none}main.x .sjekk input{width:100%;min-width:0;box-sizing:border-box;font:var(--md-sys-typescale-body-large);color:var(--md-sys-color-on-surface);padding:14px 18px;border:0;border-radius:var(--md-sys-shape-corner-large-increased);background:var(--md-sys-color-surface-container);outline:0;font-family:inherit}main.x .sjekk input:focus{background:var(--md-sys-color-secondary-container)}main.x .sjekk .fra{display:inline-flex;border-radius:var(--md-sys-shape-corner-full);padding:2px 10px;background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface-variant);font:500 .75rem/1rem var(--md-ref-typeface-plain);white-space:nowrap}main.x .flagg{display:flex;gap:8px;align-items:flex-start;margin-top:8px;padding:10px 12px;border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);font:400 .875rem/1.25rem var(--md-ref-typeface-plain)}main.x .flagg .ms{color:inherit;flex-shrink:0}main.x .flagg.ok{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
@media(max-width:1200px){main.x .trapp{grid-template-columns:repeat(3,1fr)}main.x .felter{grid-template-columns:1fr}}
/* Punkt for punkt (arbeidsavtalen): prikkerad som viser hvor du er */
main.x .punkter{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 4px}main.x .pkt{width:30px;height:30px;border-radius:var(--md-sys-shape-corner-full);border:0;background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface-variant);font:500 .75rem/1 var(--md-ref-typeface-plain);cursor:pointer;transition:border-radius .3s cubic-bezier(.2,0,0,1),background .2s}main.x .pkt:hover{background:var(--md-sys-color-surface-container-high)}main.x .pkt.fylt{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}main.x .pkt.naa{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:var(--md-sys-shape-corner-small)}main.x .felter .fra{display:inline-flex;border-radius:var(--md-sys-shape-corner-full);padding:1px 8px;background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface-variant);font:500 .6875rem/1rem var(--md-ref-typeface-plain);margin-left:6px;letter-spacing:0}
/* Avtalen ER skjemaet: dokumentet med hullene inni */
main.x .ark2{background:var(--md-sys-color-surface-container-lowest);border-radius:var(--md-sys-shape-corner-large-increased);padding:28px 32px 24px;font:400 .9375rem/1.7rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);margin-top:12px}main.x .ark2 h4{font:400 1.5rem/1.9rem var(--md-ref-typeface-brand);margin:0 0 2px}main.x .ark2 .meta{font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-bottom:18px}main.x .ark2 p{margin:0 0 8px;padding:6px 10px 6px 2.4rem;position:relative;border-radius:var(--md-sys-shape-corner-medium);transition:background .2s}main.x .ark2 p .nr{position:absolute;left:10px;top:6px;font:500 .8125rem/1.7rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}main.x .ark2 p .pt{font-weight:500}main.x .ark2 p.fokus{background:var(--md-sys-color-surface-container-low)}main.x .ark2 p.fokus .pt{color:var(--md-sys-color-primary)}main.x .ark2 .sign{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:28px;padding-top:12px}main.x .ark2 .sign span{border-top:1px solid var(--md-sys-color-outline);padding-top:6px;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}main.x .hull{display:inline-block;min-width:150px;max-width:100%;padding:1px 10px;margin:1px 0;border-radius:var(--md-sys-shape-corner-small);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-bottom:2px solid var(--md-sys-color-primary);outline:0;line-height:1.5rem;vertical-align:baseline;font:inherit;white-space:normal;overflow-wrap:anywhere;cursor:text}main.x .hull:empty::before{content:attr(data-ph);color:var(--md-sys-color-on-surface-variant)}main.x .hull.valg{background:var(--md-sys-color-surface-container);border-bottom-color:var(--md-sys-color-outline-variant);min-width:0}main.x .hull.fylt{background:transparent;border-bottom:1px dotted var(--md-sys-color-outline);color:inherit;font-weight:500;min-width:0;padding:0 2px}main.x .hull:focus{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);border-bottom-color:var(--md-sys-color-primary)}main.x .hull.chip{border:0;background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-radius:var(--md-sys-shape-corner-full);padding:1px 10px;cursor:pointer;font-family:inherit;font-weight:500;min-width:0;display:inline-flex;align-items:center;gap:4px}
@media(max-width:760px){main.x .ark2{padding:20px 16px}main.x .ark2 .sign{grid-template-columns:1fr}}
/* Rader som kan trykkes (utlysning, kandidat) */
main.x button.rad{width:100%;border:0;background:transparent;font-family:inherit;color:inherit;text-align:left;cursor:pointer;border-radius:var(--md-sys-shape-corner-medium);padding-left:8px;padding-right:8px;transition:background .2s}main.x button.rad:hover{background:var(--md-sys-color-surface-container)}main.x button.rad .st{white-space:normal}
/* To kolonner inni én boks (tabell + kake, regnestykke + rader) */
main.x .duo{display:grid;grid-template-columns:1fr 1.6fr;gap:20px;align-items:center}main.x .duo.lik{grid-template-columns:1fr 1fr;align-items:start}main.x .duo h3{font:500 1rem/1.5rem var(--md-ref-typeface-plain);margin-bottom:6px}
@media(max-width:1200px){main.x .duo,main.x .duo.lik{grid-template-columns:1fr}}
/* ── Oversikt v2 (mock 55, 06.09.2026): nøkkeltall-rutenettet, velg-modus, grafholderen, årsstripa ── */
main.x .rute.nokkel{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
main.x .flis.velg{background:transparent;border:1px solid var(--md-sys-color-outline-variant);display:flex;align-items:center;justify-content:center;gap:6px;color:var(--md-sys-color-primary);font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);text-align:center}main.x .flis.velg:hover{background:var(--md-sys-color-surface-container-low)}main.x .flis.velg .ms{font-size:var(--ikon-lg)}
main.x .flis.pa{background:var(--md-sys-color-secondary-container)}main.x .flis .l .ms{font-size:var(--ikon-md);vertical-align:-3px;margin-right:4px;color:var(--md-sys-color-primary)}
main.x .helt a{color:inherit;text-decoration:underline;text-underline-offset:3px}
/* ── ÉN STANDARD FOR GRAFSTØRRELSE (18.09.2026, Kenneth: «noen er kjempesmå og noen er giga») ──
   Målt før: hovedgrafene fulgte bredden (2,5:1) og ble 1336×534 på en 1920-skjerm, mens kakeparets ringer sto fast på
   260 og halvbreddegrafene på 260 — samme side, tre størrelser. Nå: hver graf i hovedkolonnen er 360 px høy og høyst
   900 px bred (2,5:1, midtstilt når kolonnen er bredere), halvbreddegrafene 300 px, og kakeparets ringer 300 px.
   Høyden følger ikke lenger skjermbredden. Light har sine egne regler (html.vsh-light). ── */
main.x .graf{width:100%;height:360px;min-height:360px;max-width:900px;margin-left:auto;margin-right:auto} /* width:100% er IKKE pynt (19.09): i en flex-kolonne (Lights skjermer) gjoer auto-margene uten bredde at boksen krymper til 0 px, og grafen tegnes aldri */
main.x .to .graf,main.x .kake-hoyre .graf{height:300px;min-height:300px}
body[data-vit-modul] main.x .vv-kp-graf[data-kp]{height:300px;min-height:300px} /* over vit-viz sin body[data-vit-modul]-regel */main.x .graf.klikkbar{cursor:pointer}
main.x .felter.egen{grid-template-columns:1fr 1fr;max-width:420px;margin-bottom:12px}
/* Hvor står året: tolv trykkbare slott, høyde etter månedens salg; beste, svakeste og valgt merket; det som kommer, som kontur */
main.x .strip{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;align-items:end;height:96px;margin:6px 0 4px}
main.x .strip button{display:block;border:0;padding:0;border-radius:var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-extra-small) var(--md-sys-shape-corner-extra-small);background:var(--md-sys-color-primary-container);cursor:pointer;transition:transform .2s,background .2s}
main.x .strip button:hover{transform:translateY(-2px)}main.x .strip button.best{background:var(--md-sys-color-primary)}main.x .strip button.svak{background:var(--md-sys-color-surface-container-highest)}
main.x .strip button.paa{background:repeating-linear-gradient(135deg,var(--md-sys-color-primary-container) 0 4px,transparent 4px 8px)}main.x .strip button.valgt{outline:2px solid var(--md-sys-color-on-surface);outline-offset:1px}
main.x .strip button.kommer{background:transparent;border:1px dashed var(--md-sys-color-outline-variant);height:22px!important;cursor:default}
main.x .strip-l{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;font:400 .6875rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);text-align:center;margin-bottom:6px}
main.x .tegn{display:flex;gap:14px;flex-wrap:wrap;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-bottom:8px}
main.x .tegn i{display:inline-block;width:10px;height:10px;border-radius:var(--md-sys-shape-corner-extra-small);margin-right:5px;vertical-align:-1px;background:var(--md-sys-color-primary)}main.x .tegn i.svak{background:var(--md-sys-color-surface-container-highest)}main.x .tegn i.paa{background:repeating-linear-gradient(135deg,var(--md-sys-color-primary-container) 0 3px,transparent 3px 6px)}
/* Botens bobler i margen kan bære et regnestykke (formelen med dine tall) og en note under det */
aside.learn .boble .regn{margin-top:6px}aside.learn .boble .note{margin:8px 0 0;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
/* ── Forstå v2 (mock 57, 06.09.2026): ett spørsmål om gangen, helten deles, Innsikt/Detaljene bytter bokser ── */
main.x .q{display:contents}
body.dybde-innsikt main.x .q .detaljene{display:none}body:not(.dybde-innsikt) main.x .q .innsikt{display:none}
main.x .q .detaljene{display:contents}
/* ÉN TEGNING I DETALJENE (18.09.2026, runde 5): Innsikt-tegningen øverst i fanen (gruppene/trinnene/hundrelappen) skjules når
   Detaljene er valgt — der tegner oppslagsverkets egen boks det samme bildet, og bytter til linja du trykker. To sett tegninger
   på samme skjerm var det Kenneth ikke forsto («et i starten og et i slutten. Hvorfor?»). */
body:not(.dybde-innsikt) main.x .q .innsikt-graf{display:none}
/* HOEYDEN FOELGER BREDDEN (08.09.2026). graf-vakt maalte 848x360 = 2,36:1 paa Forstaa, Lager-forstaa og
   Endring — flatere enn det flateste i referansesettet (2,08:1). En fast pikselhoeyde blir automatisk
   flatere jo bredere skjermen er; et forhold blir det ikke. 2:1 med 360 som gulv: paa 848 gir det 424 px
   (2,0:1), paa smale skjermer holder gulvet. 13 kallsteder arver dette. */
/* width:100% er IKKE pynt (09.09.2026). Uten den regner nettleseren
   BREDDEN ut fra hoeyden naar aspect-ratio staar alene: min-height 400
   ganger 2 ble 800 px bred boks — i en 334 px .blokk paa telefon. Grafen
   ble klippet, og sida saa oedelagt ut. Med width:100% gaar regnestykket
   riktig vei: hoeyden foelger av bredda. */
main.x .graf.hoy{width:100%;height:360px;aspect-ratio:auto;min-height:360px} /* standarden (18.09): fast 360, ikke bredde-avhengig */main.x .graf.lav{height:300px;min-height:300px}
main.x .fot span[data-ms]:empty{display:none}main.x .bh .eye[data-ms]:empty{display:none}main.x :is(.fot span,.bh .eye)[data-ms]::before{content:attr(data-ms);font-family:'Material Symbols Outlined';font-size:var(--ikon-md);line-height:1;vertical-align:-3px;margin-right:4px;color:var(--md-sys-color-primary)}
main.x .helt .tall .d[hidden]{display:none}
main.x .blokk .rute{margin-top:4px}
/* ══ TALLENE SKAL LIGGE VED SIDEN AV NAVNET (Kenneth 10.09.2026) ═════════
   «du klarer faen meg aa hoegrestille alt. HVORFOR det? Leser du fra hoegre
    til venstre til vanlig du da?»
   MAALT: tabellene sto med width:100%, saa etikett-kolonna slukte all slakk
   og talkolonnene ble slengt ut mot hoeyre kant. Oeyet maatte hoppe over et
   tomrom paa 300–400 px for hver rad. Tallene er fortsatt hoeyrestilte INNI
   sin egen kolonne — det er slik sifre skal stille opp — men kolonnene staar
   naa inntil navnet, og slakken samles i en tom kolonne til slutt.
   .regne er skillet mellom det som er FOERT og det som er REGNET. */
main.x .linjer.gruppert td:first-child,main.x .linjer.gruppert th:first-child{width:1%;white-space:nowrap}
main.x .linjer.gruppert td.tall,main.x .linjer.gruppert th.tall{width:1%}
main.x .linjer.gruppert td.slakk,main.x .linjer.gruppert th.slakk{width:auto;padding:0;border-bottom:inherit}
main.x .linjer.gruppert td.regne,main.x .linjer.gruppert th.regne{
  border-left:1px solid var(--md-sys-color-outline-variant);padding-left:14px;
}
main.x .linjer.gruppert tr.sum td.regne{border-left:1px solid var(--md-sys-color-outline-variant)}
/* Navn som ikke faar plass paa smale skjermer skal brytes, ikke skyve tabellen
   ut av vinduet. Under 760 px slippes nowrap paa etiketten. */
@media (max-width:760px){
  main.x .linjer.gruppert td:first-child,main.x .linjer.gruppert th:first-child{white-space:normal;width:auto}
  main.x .linjer.gruppert td.regne,main.x .linjer.gruppert th.regne{padding-left:8px}
}

main.x .linjer td.nr{color:var(--md-sys-color-on-surface-variant);font-variant-numeric:tabular-nums;white-space:nowrap}main.x .linjer td.fjorv{color:var(--md-sys-color-on-surface-variant)}
main.x .linjer .dd.opp,main.x .linjer td.opp{color:var(--up)}main.x .linjer .dd.ned{color:var(--neg)}main.x .linjer .dd.flat{color:var(--md-sys-color-on-surface-variant)}
main.x .linjer tr[data-konto]{cursor:pointer}main.x .linjer tr[data-konto]:hover td{background:var(--md-sys-color-surface-container-low)}
main.x .tabellboks > .btn-ut,main.x .blokk > .btn-ut{margin-top:12px}
/* TABELLEN SOM RULLER I SEG SELV (21.09.2026, sammen med filteret over tabellene paa Lager).
   Et soek som treffer aatti varer skal ikke gjoere sida ti skjermer lang — da ruller tabellen,
   ikke sida. Hodet staar stille mens du ruller, ellers slutter kolonnene aa bety noe halvveis ned. */
main.x .tabellboks.rull{max-height:var(--tabell-rull-tak);overflow:auto}
main.x .tabellboks.rull .linjer thead th{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest)}
/* CONNECTED BUTTON GROUP — husets form for ett valg mellom faa, gjensidig utelukkende
   tilstander (M3 Expressive, 21.09.2026). Erstatter segmented button, som Google har
   utgaatt. Ingen spor rundt: knappene ER gruppa, med 2 px mellom seg, runde ytterkanter
   og 8 px innerkanter. Den valgte gaar helt rund — det er Googles «selected 50 %».
   Bruk den der valget endrer INNHOLDET, aldri der det bytter visning (det er faner). */
main.x .knappegruppe{display:inline-flex;gap:var(--gruppe-gap);flex-wrap:wrap;margin:0 0 var(--luft-blokk)}
main.x .knappegruppe > button{
  min-height:var(--gruppe-h);padding:0 20px;border:0;cursor:pointer;
  font:var(--md-sys-typescale-label-large-emphasized);font-weight:500;
  color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);
  border-radius:var(--gruppe-indre);
  transition:border-radius var(--m3-spatial-fast,.4s) var(--m3-ease,cubic-bezier(.2,0,0,1)),background .2s;
}
main.x .knappegruppe > button:first-child{border-start-start-radius:var(--gruppe-ytre);border-end-start-radius:var(--gruppe-ytre)}
main.x .knappegruppe > button:last-child{border-start-end-radius:var(--gruppe-ytre);border-end-end-radius:var(--gruppe-ytre)}
main.x .knappegruppe > button:not(.on):hover{background:var(--md-sys-color-surface-container-high)}
main.x .knappegruppe > button.on{
  background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);
  border-radius:var(--gruppe-ytre);font-weight:700;
}
main.x .knappegruppe > button:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}
main.x .filter{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}/* ETT TEKSTFELT, IKKE TO (21.09.2026). Målt samme dag: søkefeltet var 32 px og helt
   rundt, skjemafeltet 41 px med 4 px hjørne. Samme komponent, to utseender.
   M3: TextFieldDefaults.MinHeight = 56 dp, OutlinedTextFieldTokens.ContainerShape =
   CornerExtraSmall (4), BodyLarge. */
main.x .filter input[type="search"]{flex:1;min-width:160px;font:var(--md-sys-typescale-body-large);min-height:var(--kontroll-l);padding:0 16px;border:0;border-radius:var(--felt-radius);background:var(--md-sys-color-surface-container)!important;color:var(--md-sys-color-on-surface)}
main.x .rad .hd-ik{color:var(--md-sys-color-primary);font-weight:600;margin-right:4px}main.x .rad .hd-slett{border:0;background:transparent;color:var(--md-sys-color-on-surface-variant);font:400 1.125rem/1 var(--md-ref-typeface-plain);cursor:pointer;padding:4px 8px;border-radius:var(--md-sys-shape-corner-full)}main.x .rad .hd-slett:hover{background:var(--md-sys-color-surface-container);color:var(--md-sys-color-error)}
main.x .felter.hendelse{grid-template-columns:180px 1fr;align-items:end;margin-top:12px}main.x .felter.hendelse .knapper{grid-column:1 / -1;display:flex;gap:10px;margin-top:4px}
/* Regnskapsførers notat (kommentarene) — samme kort i alle spørsmålene */
main.x .komm:empty{display:none}main.x .komm{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-extra-large);padding:20px 24px}
main.x .komm-eye{display:flex;align-items:center;gap:7px;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain);margin-bottom:10px}main.x .komm-eye .pip{width:8px;height:8px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary)}
main.x .komm-liste{display:flex;flex-direction:column;gap:10px}main.x .komm-tom{font:400 .9375rem/1.4rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:0}
main.x .komm-kort{display:flex;gap:11px;align-items:flex-start;background:var(--md-sys-color-surface-container-low);border-radius:var(--md-sys-shape-corner-large);padding:12px 14px}main.x .komm-kort .init{flex-shrink:0;width:32px;height:32px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);display:flex;align-items:center;justify-content:center;font:500 .8125rem/1 var(--md-ref-typeface-plain)}
main.x .komm-kort .kb{min-width:0;flex:1}main.x .komm-kort .kh{display:flex;justify-content:space-between;gap:10px;align-items:baseline;margin-bottom:4px}main.x .komm-kort .navn{font:500 .8125rem/1.125rem var(--md-ref-typeface-plain)}main.x .komm-kort .hoyre{display:flex;align-items:baseline;gap:10px;flex-shrink:0}main.x .komm-kort .dato{font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
main.x .komm-kort .tekst{font:400 .9375rem/1.4rem var(--md-ref-typeface-plain);white-space:pre-wrap;word-break:break-word}main.x .komm-kort .slett{background:none;border:0;color:var(--md-sys-color-on-surface-variant);cursor:pointer;font:500 .75rem/1rem var(--md-ref-typeface-plain)}main.x .komm-kort .slett:hover{color:var(--md-sys-color-error)}
main.x .komm-ny{margin-top:12px}main.x .komm-ny textarea{width:100%;min-height:80px;font:400 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:12px 16px;border:0;border-radius:var(--md-sys-shape-corner-large-increased);background:var(--md-sys-color-surface-container)!important;resize:vertical}main.x .komm-ny textarea:focus{background:var(--md-sys-color-secondary-container)!important;outline:0}
main.x .komm-rad{display:flex;justify-content:flex-end;align-items:center;gap:13px;margin-top:9px}main.x .komm-tel{font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}main.x .komm-feil:not(:empty){font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-error);margin-top:8px}
main.x .komm-send{font:500 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-primary);background:var(--md-sys-color-primary);border:0;border-radius:var(--md-sys-shape-corner-full);padding:9px 18px;cursor:pointer}main.x .komm-send:disabled{opacity:.38;cursor:default}
/* Samme regel som .graf.hoy (08.09.2026): et forhold, ikke et fast tall. 848x380 = 2,23:1 var flatere enn
   referansesettets flateste. Kakeparet er to ringer ved siden av hverandre og taaler mer hoeyde. */
main.x .graf.kakepar{width:100%;height:auto;min-height:0} /* aspect-ratio tatt ut 18.09.2026: kakeparet er to ringer + legende, og en legende med fire rader (Krona) rant ut av 2:1-boksen og oppaa teksten under — hoeyden foelger innholdet */
main.x .bt[data-nr]::before{content:attr(data-nr) ' · ';color:var(--md-sys-color-primary)}
main.x .helt .tall > span:not(.d){overflow-wrap:normal;word-break:normal;max-width:18em}main.x .helt .tall .d{white-space:nowrap} /* :not(.d) + nowrap (20.09): taket traff chipen òg, så «30 794 kr har ikke solgt på over et halvår» brakk til en hvit stripe over to linjer */ /* > : fagord-merkinga legger span inni — de skal ikke bli egne linjer */
/* ── Resultat v2 (mock 58): trykkbare linjer i regnestykket, manuell skatt som felt, lenke-knapper i småtekst ── */
main.x .regn .r[data-post]{cursor:pointer;border-radius:var(--md-sys-shape-corner-small)}main.x .regn .r[data-post]:hover{background:var(--md-sys-color-surface-container-low)}
main.x .regn .felter.manuell{grid-template-columns:1fr;margin:10px 0}main.x .regn .knapper{display:flex;gap:10px;margin:8px 0}
main.x .regn .lenke{border:0;background:none;padding:0;font:inherit;color:var(--md-sys-color-primary);text-decoration:underline;cursor:pointer}
main.x #edKrypListe .lenke{border:0;background:none;padding:0;font:.875rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);text-decoration:underline;cursor:pointer}
main.x #edKrypListe #edKrypAlle{margin-top:2px}
/* Tallet skal møte NAVNET, ikke svefe mellom de to tekstlinjene (17.09.2026).
   .rad er align-items:center, og med en .st-underlinje havner tallet på midten mens
   navnet står øverst — da flukter ingenting vannrett. Samme grep som .kontorad i
   huset bruker. Én egenskap, ingen tall. */
main.x #edKrypBlokk .rad{align-items:baseline}
main.x .spak .ut > div > span{display:block}

/* ── Margen i v2 — Kenneths tilbakemeldinger 06.09 ───────────────────────────
   Boten snakker i Sammenhengen-fargen (samme flate som helten), du i merkefargen.
   Valg-panelet («Hva vil du gjøre?») tar plassen fra start og forsvinner når samtalen
   begynner (vit-bot-marg.js). Vitin-figuren står ved spørrefeltet igjen. */
main.x ~ aside.learn .bm-msg .boble{background:var(--md-sys-color-primary-container);border-color:transparent;color:var(--md-sys-color-on-primary-container)}
main.x ~ aside.learn .bm-msg .boble b{color:inherit}
main.x ~ aside.learn .bm-msg .boble .kilde:not(.kilde-rader){color:inherit;opacity:.72} /* den strukturerte kildeblokka (25.09) har egen farge nederst i fila */
main.x ~ aside.learn .bm-msg.deg .boble{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}
aside.learn .tip{grid-template-columns:48px 1fr auto;gap:14px;padding:14px 16px}
/* DIREKTELENKE UNDER TIPSET (16.09.2026, erstatter FAB-forslaget: samme mål — ett trykk til
   handlingen — uten en flytende knapp som havnet oppå denne samme margen). Egen, mindre klasse
   enn standard .btn-ut, plassert rett under raden den hører til.
   SKJULT TIL TIPSET ER UTVIDET (Kenneth: «skal komme når man trykker på det, ikke være åpent fra
   start»): vit-bot-marg.js legger til et .mer-barn i selve .tip-knappen når den utvides — ingen
   egen klasse å style etter, så :has() leser akkurat det samme uten å røre den delte JS-en. */
aside.learn .tip-gaa{display:none;margin:-8px 0 4px 62px;padding:6px 14px;font-size:var(--fs-xs)}
/* display:none kan ikke transitionere — animation kjører likevel med det samme elementet blir
   display:inline-flex, så haardt kutt (JS) blir mykt kutt (CSS), samme prinsipp som resten av
   Expressive-arbeidet i kveld. */
aside.learn .tip:has(.mer) + .tip-gaa{display:inline-flex;box-shadow:var(--md-sys-elevation-level1);animation:vtTipInn var(--md-sys-motion-effects-fast-duration) var(--md-sys-motion-effects-fast-easing)}
aside.learn .tip:has(.mer){box-shadow:var(--md-sys-elevation-level0)}
@keyframes vtTipInn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){aside.learn .tip:has(.mer) + .tip-gaa{animation:none}}
aside.learn .tip:has(.mer) + .tip-gaa{display:inline-flex}
aside.learn .tip-gaa .ms{font-size:var(--ikon-md)!important}
aside.learn .tip .lede{width:48px;height:48px}
aside.learn .tip b{font:500 1rem/1.5rem var(--md-ref-typeface-plain)}
aside.learn .tip i{font:400 .875rem/1.25rem var(--md-ref-typeface-plain)}
aside.learn .bm-hode{display:flex;align-items:center;gap:10px;padding:12px 0 4px}
aside.learn .bm-fig{flex:none;position:relative;width:44px;height:44px;border-radius:var(--md-sys-shape-corner-full);overflow:hidden;background:var(--md-sys-color-secondary-container)}
aside.learn .bm-fig > div{position:absolute;left:50%;top:58%;transform:translate(-50%,-50%);width:62px;height:62px}
aside.learn .bm-hode .bm-tit{font:500 .9375rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}

/* ── Oppslagsverket (Forstå Detaljene, runde 5 18.09.2026): tegningen i egen boks ØVER, én tabell under med tre lag som ser ut som
   tre lag — gruppa er overskrift med luft og hjelpesetning, leddet er en hvit rad, kontoene bak leddet ligger tonet under det.
   Ingen sebra her: lagene skilles med flate og skrift, ikke striper (Kenneth 18.09: «det trenger ikke å være sebra»). ── */
main.x .opps[hidden],main.x .opps-graf[hidden]{display:none}
main.x .opps .linjer th .under{display:block;font:400 .6875rem/1rem var(--md-ref-typeface-plain);letter-spacing:0;text-transform:none;color:var(--md-sys-color-on-surface-variant)}
main.x .opps .linjer tbody tr:nth-child(even){background:none}
main.x .opps .linjer thead th{white-space:normal;padding-bottom:6px}
/* Gruppa: overskrift */
main.x .opps .linjer tr.gr th{padding:26px 8px 6px;border-bottom:1px solid var(--md-sys-color-outline);white-space:normal} /* gruppeoverskrifta brytes (23.09): første-kolonne-regelen (nowrap) traff den, og en lang hjelpesetning («Kundene» på Inntekter) gjorde tabellen bredere enn boksen og skjøv Endring og Andel ut til høyre */
main.x .opps .linjer tbody tr.gr:first-child th{padding-top:10px}
main.x .opps .linjer .gt{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;padding:2px 0;cursor:pointer;font:600 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);font-family:inherit;text-align:left;border-radius:var(--md-sys-shape-corner-small);letter-spacing:0;text-transform:none}
main.x .opps .linjer .gt:hover{background:var(--md-sys-color-surface-container)}
main.x .opps .linjer .gt small{font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);letter-spacing:0;text-transform:none}
main.x .opps .linjer .gt .ms{font-size:var(--ikon-md);color:var(--md-sys-color-on-surface-variant);margin-left:auto}
main.x .opps .linjer .hjelp{display:block;margin:0 0 4px;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);letter-spacing:0;text-transform:none}
/* Leddet: hvit rad, 44 px, navnet i medium */
main.x .opps .linjer tr.r{cursor:pointer}
main.x .opps .linjer tr.r td{padding:10px 8px;background:var(--md-sys-color-surface)}
main.x .opps .linjer tr.r .post .l{font-weight:500}
main.x .opps .linjer tr.r:hover td{background:var(--md-sys-color-surface-container-low)}
main.x .opps .linjer tr.r[aria-current="true"] td{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
main.x .opps .linjer tr.r:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:-2px}
main.x .opps .linjer tr.sum td{font-weight:500;border-top:2px solid var(--md-sys-color-on-surface)}
main.x .opps .linjer .post{display:flex;align-items:center;gap:8px;min-width:0}
main.x .opps .linjer .post .l{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
main.x .opps .linjer .fag{font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);white-space:nowrap}
main.x .opps .linjer .hint{font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);white-space:nowrap}
main.x .opps .linjer .lukk{width:24px;height:24px;flex:none;display:inline-grid;place-items:center;border:0;background:none;border-radius:var(--md-sys-shape-corner-full);color:var(--md-sys-color-on-surface-variant);cursor:pointer}
main.x .opps .linjer .lukk:hover{background:var(--md-sys-color-surface-container-high)}
main.x .opps .linjer .lukk .ms{font-size:var(--ikon-md)}
/* Kontoene bak leddet: tonet blokk under det, mindre skrift, kontonummeret foran */
main.x .opps .linjer tr.kto td{background:var(--md-sys-color-surface-container-low);padding:6px 8px;font-size:.8125rem;border-bottom:1px solid var(--md-sys-color-surface-container-high)}
main.x .opps .linjer tr.kto .post{padding-left:28px}
main.x .opps .linjer tr.kto .post .l{font-weight:400}
main.x .opps .linjer tr.kto:hover td{background:var(--md-sys-color-surface-container)}
main.x .opps .linjer tr.kto[aria-current="true"] td{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
main.x .opps .linjer .nr{font:500 .6875rem/1.25rem var(--md-ref-typeface-plain);font-variant-numeric:tabular-nums;color:var(--md-sys-color-on-surface-variant);min-width:2.4rem}
main.x .opps .linjer tr.mer td{padding:2px 8px 6px 36px;background:var(--md-sys-color-surface-container-low)}
main.x .opps .linjer tr.mer .btn-tekst{height:28px;font:500 .8125rem/1.25rem var(--md-ref-typeface-plain)}
/* Tallene */
main.x .opps .linjer .dd{white-space:nowrap}
main.x .opps .linjer .dd .opp{color:var(--up)}main.x .opps .linjer .dd .ned{color:var(--neg)}main.x .opps .linjer .dd .flat{color:var(--md-sys-color-on-surface-variant)}
main.x .opps .linjer .fra{display:block;font:400 .6875rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
main.x .opps .linjer .dim{color:var(--md-sys-color-on-surface-variant)}
main.x .opps-graf .detalj .fot span:empty{display:none}
main.x .opps-graf .detalj .fot{margin-top:6px}
/* ── LÆREMARGEN SOM BOKSER (18.09.2026, Kenneth: «de boksene som kommer som var handlinger på Personal») ──
   Samme .tip som handlingsboksene. Det du trykket ligger øverst og åpent, de forrige lukket under. Boksen bærer
   bm-msg/.boble for Light-speilet og vaktene; utseendet fra chat-bobla nulles her. ── */
#bmLopet{gap:8px;padding-top:8px;-webkit-mask-image:none;mask-image:none} /* toningen i toppen var for chat-strømmen; den kuttet hodet på øverste boks */
aside.learn .tip.lm{align-items:start;cursor:pointer;animation:none;flex:none} /* flex:none — #bmLopet er en flex-kolonne og krympet boksen saa teksten rant ut under den (maalt 18.09) */
aside.learn .tip.lm .lede{margin-top:2px}
aside.learn .tip.lm .lm-h{min-width:0}
aside.learn .tip.lm b .fag,main.x .opps .linjer .fag{background:none;border:0;padding:0;font:400 .75rem/1rem var(--md-ref-typeface-plain);font-family:inherit;color:var(--md-sys-color-on-surface-variant);cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px;text-decoration-color:var(--md-sys-color-outline);letter-spacing:0;white-space:nowrap}
aside.learn .tip.lm b .fag{margin-left:6px}
aside.learn .tip.lm b .fag:hover,main.x .opps .linjer .fag:hover{color:var(--md-sys-color-primary);text-decoration-color:var(--md-sys-color-primary)}
aside.learn .tip.lm b .fag:focus-visible,main.x .opps .linjer .fag:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}
aside.learn .tip.lm .pil{transition:transform .2s}
aside.learn .tip.lm.aapen .pil{transform:rotate(180deg)}
aside.learn .tip.lm .mer{display:none}
/* forklaringa starter under ikonet, ikke under skrifta (Kenneth 18.09: «da får du bedre plass») */
aside.learn .tip.lm.aapen .mer{display:block;grid-column:1 / -1;margin-top:4px}
aside.learn .tip.lm .mer.boble{background:none;border:0;border-radius:0;padding:0;font:400 .875rem/1.35rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);min-width:0}
aside.learn .tip.lm .mer .lm-navn{display:none}
aside.learn .tip.lm .mer b,aside.learn .tip.lm .mer i{display:inline;font:inherit;font-weight:600;margin:0;color:inherit} /* .tip b/i er blokk i hodet — i kroppen er de vanlig fet/kursiv */
aside.learn .tip.lm .mer i{font-weight:inherit;font-style:italic}
aside.learn .tip.lm .mer p{margin:0 0 12px} /* luft mellom avsnittene (Kenneth 25.09) */
aside.learn .tip.lm .mer p.kilde-blk{display:block;margin:2px 0 0;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
/* fagordet, forklart inne i boksen: tonet del med regnestykket loddrett under «Slik regner vi …» */
/* Hjemmel-lenker og fagord i margboksene (19.09): lovhenvisningen er en lenke rett til paragrafen på Lovdata. */
aside.learn .tip.lm .mer a.hj,aside.learn .tip.lm .mer .hjemmel a,aside.learn .tip.lm .mer .kilde a{color:var(--md-sys-color-primary);text-decoration:underline dotted;text-underline-offset:3px}
aside.learn .tip.lm b a.fag{text-decoration:underline dotted}
aside.learn .tip.lm .mer .hjemmel{display:block;margin-top:4px;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain)}
aside.learn .tip.lm .mer details.tenk{margin:2px 0 8px}
aside.learn .tip.lm .mer details.tenk summary{cursor:pointer;color:var(--md-sys-color-primary);font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);list-style:none}
aside.learn .tip.lm .mer details.tenk summary::-webkit-details-marker{display:none}
aside.learn .tip.lm .mer details.tenk p{margin:4px 0 0}
aside.learn .tip.lm .mer .ordf{display:block;background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-medium);padding:12px 14px;margin:16px 0 12px} /* luft rundt og inni (Kenneth 25.09) */
aside.learn .tip.lm .mer .ord-l{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-bottom:6px}
aside.learn .tip.lm .mer .regn-t{display:block;margin-top:16px;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary)}
aside.learn .tip.lm .mer .regn-f{display:grid;grid-template-columns:1.4em 1fr;column-gap:6px;row-gap:3px;margin-top:8px;font:400 .8125rem/1.375rem var(--md-ref-typeface-plain);font-variant-numeric:tabular-nums}
aside.learn .tip.lm .mer .regn-f .op{text-align:right;color:var(--md-sys-color-on-surface-variant)}
aside.learn .tip.lm .mer .regn-f .op:nth-last-child(2),aside.learn .tip.lm .mer .regn-f .nv:last-child{border-top:1px solid var(--md-sys-color-on-surface);padding-top:3px;margin-top:2px;font-weight:500;color:var(--md-sys-color-on-surface)}
/* Regnestykket med kundens egne tall (22.09.2026): tegn · post · tall. Samme strek og vekt over svaret som over. */
aside.learn .tip.lm .mer .regn-f.tall{grid-template-columns:1.4em minmax(0,1fr) auto}
aside.learn .tip.lm .mer .regn-f.tall .tv{text-align:right;white-space:nowrap}
aside.learn .tip.lm .mer .regn-f.tall .op:nth-last-child(2){border-top:0;padding-top:0;margin-top:0;font-weight:400;color:var(--md-sys-color-on-surface-variant)}
aside.learn .tip.lm .mer .regn-f.tall .op:nth-last-child(3),aside.learn .tip.lm .mer .regn-f.tall .nv:nth-last-child(2),aside.learn .tip.lm .mer .regn-f.tall .tv:last-child{border-top:1px solid var(--md-sys-color-on-surface);padding-top:3px;margin-top:2px;font-weight:500;color:var(--md-sys-color-on-surface)}

/* ── Budsjett v2 (mock 59, 06.09): målene skrives i flisene; kvitteringen for lagring er sidas (var i budsjett.html) ── */
main.x .rute.maal .flis .felt input[readonly]{color:var(--md-sys-color-on-surface-variant)}
main.x .rute.maal .flis .l .term{border-bottom:1px dotted currentColor}
@media(max-width:760px){main.x .rute.maal{grid-template-columns:1fr 1fr}}
.bud-kvittering{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(12px);padding:11px 20px;border-radius:var(--md-sys-shape-corner-full);font:500 .875rem/1.4 var(--md-ref-typeface-plain);opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;z-index:9600;max-width:min(92vw,520px);text-align:center}
.bud-kvittering.vis{opacity:1;transform:translateX(-50%) translateY(0)}
.bud-kvittering.ok{background:var(--md-sys-color-on-surface);color:var(--md-sys-color-surface)}
.bud-kvittering.feil{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}
@media (prefers-reduced-motion:reduce){.bud-kvittering{transition:none}}

/* ── Likviditet v2 (mock 61, 06.09): to baner med statens del som egen farge, kjeden merket målt/beregnet, terminene som kalender ── */
main.x .bane .spor i.stat{background:var(--md-sys-color-tertiary-container);border-radius:0 var(--md-sys-shape-corner-full) var(--md-sys-shape-corner-full) 0}
main.x .skala{display:grid;grid-template-columns:190px 1fr 160px;gap:12px;margin-top:4px}
main.x .skala div{display:flex;justify-content:space-between;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
main.x .tegn-liste{display:flex;gap:16px;flex-wrap:wrap;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:12px}
main.x .tegn-liste i{display:inline-block;width:12px;height:12px;border-radius:var(--md-sys-shape-corner-extra-small);vertical-align:-2px;margin-right:6px;background:var(--md-sys-color-primary)}
main.x .tegn-liste i.stat{background:var(--md-sys-color-tertiary-container)}
main.x .regn .merk{display:inline-flex;border-radius:var(--md-sys-shape-corner-full);padding:0 7px;margin-left:6px;font:500 .625rem/1rem var(--md-ref-typeface-plain);letter-spacing:.3px;text-transform:uppercase;background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface-variant);vertical-align:2px}
main.x .kal{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
main.x .kal .maaned{border:0;background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-large);padding:10px 10px 8px;text-align:left;cursor:pointer;font-family:inherit;color:inherit;min-width:0;transition:background .2s,border-radius .3s cubic-bezier(.2,0,0,1)}
main.x .kal .maaned:hover{background:var(--md-sys-color-surface-container-high)}
main.x .kal .maaned:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}
main.x .kal .maaned.na{background:var(--md-sys-color-secondary-container);border-radius:var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small)}
main.x .kal .maaned.forbi{opacity:.55}
main.x .kal .maaned .m{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px}
main.x .kal .maaned .dager{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px;min-height:18px}
main.x .kal .maaned .dag{display:inline-flex;align-items:center;gap:3px;border-radius:var(--md-sys-shape-corner-full);padding:1px 6px;font:500 .6875rem/1rem var(--md-ref-typeface-plain);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface);white-space:nowrap}
main.x .kal .maaned .dag i{width:6px;height:6px;border-radius:var(--r-sirkel);background:var(--md-sys-color-primary);display:inline-block}
main.x .kal .maaned .dag.mva i{background:var(--md-sys-color-tertiary-container);outline:1px solid var(--md-sys-color-tertiary)}
main.x .kal .maaned .dag.skatt i{background:var(--md-sys-color-secondary)}
main.x .kal .maaned .dag.meld i{background:transparent;outline:1px solid var(--md-sys-color-outline)}
main.x .kal .maaned .dag.forbi{text-decoration:line-through;opacity:.7}
main.x .kal-tegn{display:flex;gap:16px;flex-wrap:wrap;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:10px 0 0}
main.x .kal-tegn i{display:inline-block;width:8px;height:8px;border-radius:var(--r-sirkel);margin-right:5px;background:var(--md-sys-color-primary)}
main.x .kal-tegn i.mva{background:var(--md-sys-color-tertiary-container);outline:1px solid var(--md-sys-color-tertiary)}
main.x .kal-tegn i.skatt{background:var(--md-sys-color-secondary)}
main.x .kal-tegn i.meld{background:transparent;outline:1px solid var(--md-sys-color-outline)}
main.x .termin{margin-top:14px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline-variant)}
main.x .termin h3{font:500 1rem/1.5rem var(--md-ref-typeface-plain);margin-bottom:4px}
main.x .termin p{font:400 .9375rem/1.4rem var(--md-ref-typeface-plain);margin-top:6px}
main.x .termin p b{font-weight:500}
main.x .termin .kildelinje{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:2px 0 8px}
@media(max-width:1100px){main.x .kal{grid-template-columns:repeat(4,1fr)}main.x .skala{grid-template-columns:150px 1fr 130px}}
@media(max-width:680px){main.x .skala{grid-template-columns:1fr;gap:4px}} /* faste kolonner (150 + 130 px) gjorde Likviditet 433 px bred på telefon i «Hele sida» — bunnmenyen ble klippet (målt 20.09) */
@media(max-width:600px){main.x .topp .seg[aria-label="Gå til"]{display:none}} /* hopp-velgeren på Likviditet: fire ord får ikke plass på telefon, blokkene ligger uansett rett under */

/* ── Pengestrøm v2 (mock 62, 07.09): tre øyeblikk som fliser, spaken med tre utfall ── */
main.x .rute.tre{grid-template-columns:repeat(3,minmax(0,1fr))}
main.x .flis .n.opp{color:var(--up)}main.x .flis .n.ned{color:var(--neg)}
main.x .spak .ut.tre{grid-template-columns:repeat(3,1fr)}
@media(max-width:1200px){main.x .rute.tre{grid-template-columns:1fr 1fr}main.x .spak .ut.tre{grid-template-columns:1fr 1fr}}
@media(max-width:600px){main.x .rute.tre{grid-template-columns:1fr}}
@media(max-width:600px){main.x .seg{flex-wrap:wrap;border-radius:var(--md-sys-shape-corner-large)}main.x .seg button{flex:1 1 auto}} /* fem drivere (Pengestrøm) får plass på telefon ved å brekke, ikke ved å klippes (07.09) */

/* ── Lager v2 (mock 60, 07.09): seks fliser ── */
main.x .rute.seks{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:760px){main.x .rute.seks{grid-template-columns:1fr 1fr}}

/* ── Presentasjon v2 (07.09.2026, mock 70): stegmerke i overskrifta, publikumskort, avkryssingsliste med rekkefølge, lagre-feltet ── */
main.x .steg{display:inline-flex;width:28px;height:28px;border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);align-items:center;justify-content:center;font:500 .875rem/1 var(--md-ref-typeface-plain);margin-right:10px;vertical-align:middle}
main.x .pub{display:grid;grid-template-columns:1fr 1fr;gap:10px}
main.x .pub .flis{padding:14px 16px;font:400 .875rem/1.3rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);text-align:left}
main.x .pub .flis .kick{display:block;font:500 .6875rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;text-transform:uppercase;color:var(--md-sys-color-primary);margin-bottom:4px}
main.x .pub .flis b{display:block;font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);margin-bottom:2px}
main.x .lys label{display:flex;align-items:flex-start;gap:12px;padding:9px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);cursor:pointer}
main.x .lys label:last-child{border-bottom:0}
main.x .lys label > span:not(.ms):not(.ordne){flex:1;min-width:0} /* teksten tar plassen — ikke håndtaket (målt 07.09: håndtaket fikk flex:1 og skjøv avkryssingen til midten) */
main.x .lys .grep{flex:0 0 auto}
main.x input[type=checkbox],main.x input[type=radio]{accent-color:var(--md-sys-color-primary)}
main.x .lys input[type=checkbox]{width:18px;height:18px;margin-top:4px;flex:0 0 auto}
main.x .lys b{display:block;font-weight:500}
main.x .lys span.st{display:block;font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
main.x .lys .grep{color:var(--md-sys-color-outline);cursor:grab;margin-top:4px;touch-action:none;font-size:var(--ikon-md)}
main.x .lys label.dras{opacity:.45}
main.x .lys .ordne{display:flex;flex-direction:column;gap:2px;flex:0 0 auto}
main.x .lys .ordne button{width:28px;height:28px;border-radius:var(--md-sys-shape-corner-full);border:1px solid var(--md-sys-color-outline-variant);background:transparent;color:var(--md-sys-color-on-surface-variant);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
main.x .lys .ordne button:disabled{opacity:.38;cursor:default}
main.x .lys .ordne .ms{font-size:var(--ikon-md)}
main.x .oppsett-lagre{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}
main.x .oppsett-lagre input{flex:1 1 220px;min-height:40px;padding:8px 14px;border-radius:var(--md-sys-shape-corner-full);border:1px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface);font:400 .9375rem/1.25rem var(--md-ref-typeface-plain)}
main.x button.rad{width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:inherit;color:inherit;cursor:pointer;padding:10px 0}
main.x button.rad:last-child{border-bottom:0}
main.x button.rad:hover{background:var(--md-sys-color-surface-container-low)}
main.x .btn-fyll:disabled,main.x .btn-ut:disabled{opacity:.38;cursor:default}
main.x .blokk .del .lede{flex:1;margin:0}
main.x .blokk .del{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
/* .del ER EN KNAPPERAD (knapp + status på én linje). En del som er en BLOKK — tittel, tekst og innhold under
   hverandre — får .stablet (23.09.2026). Uten den la avstemmingen på Min side tittelen, dommen og tabellen
   side om side: «Stemmer tallene med årsregnskapet? beta Tallene stemmer.» på én linje. */
main.x .blokk .del.stablet{display:block}
main.x .blokk .del.stablet > .lede{margin:0 0 12px}
main.x .blokk.puls{animation:blokkPuls 1.2s ease}
@keyframes blokkPuls{0%{box-shadow:0 0 0 0 var(--md-sys-color-primary-container)}45%{box-shadow:0 0 0 6px var(--md-sys-color-primary-container)}100%{box-shadow:none}}
@media(prefers-reduced-motion:reduce){main.x .blokk.puls{animation:none}}
@media(max-width:900px){main.x .pub{grid-template-columns:1fr}}

/* LUFT MELLOM BOKSENE (Kenneth 07.09: «null luft mellom boksene i presentasjon»): v2-sidene gjemmer innholdet i #innhold til tallene er der, og skallets
   luft-regel gjelder bare direkte barn av main — så boksene inni lå kant i kant (målt 0 px på Lager, Likviditet, Pengestrøm og Presentasjon).
   Beholderen er nå gjennomsiktig for rytmen (display:contents) når den vises; [hidden] vinner fortsatt. */
main.x #innhold:not([hidden]){display:contents}

/* ── Min side v2 (07.09.2026, mock 75): profil-toppen, rollepilla, temabryteren (M3-bryter 52×32), radgruppa ── */
main.x .profil{display:flex;align-items:center;gap:16px}
main.x .profil .s{width:56px;height:56px;border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);display:inline-flex;align-items:center;justify-content:center;font:500 1.5rem/1 var(--md-ref-typeface-brand);flex:none}
main.x .pill{border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);padding:2px 10px;font:500 .75rem/1.25rem var(--md-ref-typeface-plain);white-space:nowrap}
main.x .rader .rad:first-child{padding-top:0}
main.x .bryter{position:relative;display:inline-block;width:52px;height:32px;cursor:pointer;flex:none}
main.x .bryter input{position:absolute;opacity:0;width:0;height:0}
main.x .bryter .spor{position:absolute;inset:0;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container-highest);border:2px solid var(--md-sys-color-outline);transition:background .2s,border-color .2s}
main.x .bryter .knott{position:absolute;top:50%;left:6px;width:16px;height:16px;border-radius:var(--r-sirkel);background:var(--md-sys-color-outline);transform:translateY(-50%);transition:left .25s cubic-bezier(.2,0,0,1),width .25s,height .25s,background .2s;display:grid;place-items:center}
main.x .bryter input:checked + .spor{background:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary)}
main.x .bryter input:checked + .spor .knott{left:22px;width:24px;height:24px;background:var(--md-sys-color-on-primary)}
/* IKONET I THUMBEN (SwitchTokens.kt IconHandle, 16.09.2026) — Vitins spor/knott-mål stemte allerede
   eksakt med spec; det eneste som manglet var haken inni knotten når bryteren er PÅ. */
main.x .bryter .knott::after{content:"";font:700 var(--fs-xs)/1 var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);opacity:0;transition:opacity .15s}
main.x .bryter input:checked + .spor .knott::after{content:"✓";opacity:1}
main.x .bryter input:focus-visible + .spor{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}
main.x .bh .hoyre{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* ═══ 07.09 MARGEN OG SKALLET (Kenneth, kveld) ═══════════════════════════════════════════════════════════════
   Valg-panelet: .tip er en <button> og arvet UA-svart tekst — svart på nesten svart i mørkt (målt rgb(0,0,0) på rgb(28,31,37)). */
aside.learn .tip{color:var(--md-sys-color-on-surface)}aside.learn .tip b{color:inherit}
/* Tekstboksen: ramme, markør og plassholder som kan ses (ramme var rgba(0,0,0,0), plassholder rgb(117,117,117) i mørkt). */
main.x ~ aside.learn .bm-felt{align-items:center;gap:10px}
main.x ~ aside.learn .bm-felt input{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline)!important; /* !important: input:not(...)-regelen (valg-ramme, gjennomsiktig) slår på spesifisitet — målt 07.09 */border-radius:var(--md-sys-shape-corner-full);padding:10px 16px;color:var(--md-sys-color-on-surface);caret-color:var(--md-sys-color-primary)}
main.x ~ aside.learn .bm-felt input::placeholder{color:var(--md-sys-color-on-surface-variant)}
main.x ~ aside.learn .bm-felt input:focus{border-color:var(--md-sys-color-primary)!important;box-shadow:inset 0 0 0 1px var(--md-sys-color-primary)}
/* Figuren står i feltet, ikke i en egen rad over. */
main.x ~ aside.learn .bm-felt .bm-fig{width:40px;height:40px}main.x ~ aside.learn .bm-felt .bm-fig > div{width:56px;height:56px}
/* Spørsmålene (chipsene) tok for stor plass — mindre skrift, tettere. */
main.x ~ aside.learn .bm-chip{font:500 .75rem/1rem var(--md-ref-typeface-plain);padding:5px 10px}
/* «Tøm chat» inne i chat-boksen, oppe til høyre, bare når det er noe å tømme; loggen får luft under knappen. */
.bm-logg{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.bm-logg .bm-lopet{flex:1}
/* Knappen står i en egen rad over loggen, ikke oppå den: absolutt plassert lå den over teksten når loggen var rullet (målt 07.09 på Rekruttering). */
/* «Tøm chat» i hodet (.vf), oppe til høyre på tittellinja — aldri en egen rad med luft over (Kenneth 20.09). */
.learn .vf{position:relative}.learn .vf .bm-tom{position:absolute;right:0;top:4px;margin:0;padding:4px 10px!important;font:500 .75rem/1rem var(--md-ref-typeface-plain)!important}
.learn .vf .bm-tom[hidden],.bm-logg .bm-tom[hidden]{display:none}
/* BRYTEREN (Min side → Utseende) — geometrien er Googles egen (08.09.2026).
   Hentet fra androidx SwitchTokens.kt, ikke fra oeyemaal:
     TrackWidth 52 · TrackHeight 32 · TrackOutlineWidth 2
     UnselectedHandle 16 · SelectedHandle 24 · PressedHandle 28 · StateLayer 40
   ÉN AVVIK, OG DET ER KENNETHS: knotten er 24 px i BEGGE stillinger. Han leste
   M3s 16/24 som to ulike design, og det staar. Alt annet er rettet mot kilden.
   RETTELSE PAA MEG SELV: jeg trodde left:2px/22px var feil og satte 4/24. Det
   var motsatt. Knotten ligger INNE i sporets 2 px kant, saa left:2 gir 4 px
   visuelt fra ytterkanten — som er akkurat M3s inset for en 24 px knott i et
   32 px spor. Med 4/24 sto den 6 px fra venstre og 2 fra hoegre, altsaa skjevt.
   Maalt: 2/22 gir 4 px paa begge sider i begge stillinger.
   Det som VAR galt: sporet arvet content-box og ble 24 px hoeyt (kanten kom
   utenpaa), saa knotten stakk utenfor. Og trykket tilstand og state layer
   fantes ikke. */
main.x .bryter .knott{left:2px;width:24px;height:24px}
main.x .bryter input:checked + .spor .knott{left:22px;width:24px;height:24px}
/* Sporets kant: 2 px, som i kilden. Uvalgt spor har synlig kant, valgt har ikke. */
/* Sporet maalte 24 px hoeyt i et 52x32 spor: det arver content-box, saa
   inset:0 ga innholdsboksen hoeyden og kanten kom UTENPAA. Da stakk den 24 px
   store knotten utenfor sporet. border-box gjoer at 32 er 32. */
main.x .bryter .spor{border-width:2px;box-sizing:border-box;height:100%;width:100%;top:0;left:0}
main.x .bryter input:checked + .spor{border-color:transparent}
/* TRYKKET: knotten vokser til 28 og sentreres om samme punkt, saa den ikke
   hopper. 28-24=4, derfor 2 px tilbake paa hver side. */
main.x .bryter:active .knott{width:28px;height:28px;left:0}
main.x .bryter input:checked + .spor .knott,
main.x .bryter:active input:checked + .spor .knott{transition:left var(--md-sys-motion-duration-short4,200ms) var(--md-sys-motion-easing-emphasized,cubic-bezier(.2,0,0,1)),width 120ms linear,height 120ms linear}
main.x .bryter:active input:checked + .spor .knott{width:28px;height:28px;left:20px}
/* STATE LAYER: 40 px rundt knotten ved svev og tastaturfokus — M3s egen maate
   aa vise at flata er levende paa, i stedet for en ny farge. */
main.x .bryter .knott::before{content:"";position:absolute;top:50%;left:50%;width:40px;height:40px;border-radius:var(--r-sirkel);transform:translate(-50%,-50%) scale(.4);background:currentColor;opacity:0;transition:opacity 120ms linear,transform 120ms linear;pointer-events:none}
main.x .bryter:hover .knott::before{opacity:var(--md-sys-state-hover-opacity);transform:translate(-50%,-50%) scale(1)}
main.x .bryter input:focus-visible + .spor .knott::before{opacity:var(--md-sys-state-focus-opacity);transform:translate(-50%,-50%) scale(1)}

/* ═══ KNAPPESTØRRELSER — 5 TRINN (ButtonXSmall…XLargeTokens.kt, 16.09.2026) ═══════════════════
   KUN web (main.x uten vsh-light) — Light har sine egne, tettere mål. Additivt: ingen eksisterende
   knapp er byttet om ennå. Nye web-knapper velger ETT av disse fem, i stedet for en egen ad hoc-høyde
   (målt før dette: 28/32/36/40px spredt tilfeldig på tvers av sider). */
main.x .knapp-xs,main.x .knapp-s,main.x .knapp-m,main.x .knapp-l,main.x .knapp-xl{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;
  background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);
  font-family:var(--md-ref-typeface-plain);font-weight:600;white-space:nowrap;
  position:relative;overflow:hidden;isolation:isolate;
}
main.x .knapp-xs.tonal,main.x .knapp-s.tonal,main.x .knapp-m.tonal,main.x .knapp-l.tonal,main.x .knapp-xl.tonal{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
main.x .knapp-xs::before,main.x .knapp-s::before,main.x .knapp-m::before,main.x .knapp-l::before,main.x .knapp-xl::before{content:"";position:absolute;inset:0;background:currentColor;opacity:0;transition:opacity .1s}
main.x .knapp-xs:hover::before,main.x .knapp-s:hover::before,main.x .knapp-m:hover::before,main.x .knapp-l:hover::before,main.x .knapp-xl:hover::before{opacity:var(--md-sys-state-hover-opacity)}
main.x .knapp-xs:active::before,main.x .knapp-s:active::before,main.x .knapp-m:active::before,main.x .knapp-l:active::before,main.x .knapp-xl:active::before{opacity:var(--md-sys-state-pressed-opacity)}
main.x .knapp-xs:focus-visible::before,main.x .knapp-s:focus-visible::before,main.x .knapp-m:focus-visible::before,main.x .knapp-l:focus-visible::before,main.x .knapp-xl:focus-visible::before{opacity:var(--md-sys-state-focus-opacity)}
main.x .knapp-xs{height:var(--knapp-xs-h);border-radius:var(--knapp-xs-radius);padding:var(--knapp-xs-pad);font-size:var(--knapp-xs-fs)}
main.x .knapp-s{height:var(--knapp-s-h);border-radius:var(--knapp-s-radius);padding:var(--knapp-s-pad);font-size:var(--knapp-s-fs)}
main.x .knapp-m{height:var(--knapp-m-h);border-radius:var(--knapp-m-radius);padding:var(--knapp-m-pad);font-size:var(--knapp-m-fs)}
main.x .knapp-l{height:var(--knapp-l-h);border-radius:var(--knapp-l-radius);padding:var(--knapp-l-pad);font-size:var(--knapp-l-fs)}
main.x .knapp-xl{height:var(--knapp-xl-h);border-radius:var(--knapp-xl-radius);padding:var(--knapp-xl-pad);font-size:var(--knapp-xl-fs)}

/* ═══ ELEVATION — UTILITY-KLASSER (ElevationTokens.kt, 16.09.2026) ═══════════════════════════
   .tip bruker level0/1 direkte (over). De fire andre er klare til bruk der noe web-only faktisk
   flyter over resten — samme additive prinsipp som knappeskalaen: ingen eksisterende flate er
   byttet om ennå. */
main.x .elev-0{box-shadow:var(--md-sys-elevation-level0)}
main.x .elev-1{box-shadow:var(--md-sys-elevation-level1)}
main.x .elev-2{box-shadow:var(--md-sys-elevation-level2)}
main.x .elev-3{box-shadow:var(--md-sys-elevation-level3)}
main.x .elev-4{box-shadow:var(--md-sys-elevation-level4)}
main.x .elev-5{box-shadow:var(--md-sys-elevation-level5)}

/* ═══ FORMSKALAENS TOPP — UTILITY-KLASSER (ShapeKeyTokens.kt, 16.09.2026) ═══════════════════ */
main.x .rad-32{border-radius:var(--md-sys-shape-corner-extra-large-increased)}
main.x .rad-48{border-radius:var(--md-sys-shape-corner-extra-extra-large)}

/* ═══ DE TRE SISTE BEVEGELSES-VARIANTENE — UTILITY-KLASSER (16.09.2026) ═══════════════════════
   Legg på et element som ALT har «transition-property» satt et annet sted — disse to setter bare
   tempo og kurve, samme mønster som --md-sys-motion-spatial/effects-default brukes i dag. */
main.x .mo-spatial-slow{transition-duration:var(--md-sys-motion-spatial-slow-duration);transition-timing-function:var(--md-sys-motion-spatial-slow-easing)}
main.x .mo-effects-slow{transition-duration:var(--md-sys-motion-effects-slow-duration);transition-timing-function:var(--md-sys-motion-effects-slow-easing)}

/* DRATT (SwitchTokens.kt IconHandle-naboen «dragged», 16.09.2026): samme state-layer-ring som
   hover/fokus på knotten (linje ~4678), her på :active — brytere er Vitins eneste drakontroll i
   dag, så dette er den ekte, ikke oppfunnede, bruken av tokenet. */
main.x .bryter:active .knott::before{opacity:var(--md-sys-state-dragged-opacity)}

/* FAB/FAB Menu ble bygget og forsøkt på Personal-forsiden 16.09.2026, men tatt ut igjen samme
   dag: den dupliserte «Vitin forklarer»-panelets egne tips, OG position:fixed regnet mot hele
   vinduet i stedet for hovedspalten, så den landet oppå læremargen (Kenneth: «se hvor den
   knappen ligger da»). Løst i stedet med to direktelenker (.tip-gaa) under de samme tipsene.
   Komponenten legges tilbake den dagen en side faktisk trenger én flytende hovedhandling. */
/* Ingen understrek på ord i Personal (Kenneth 07.09) — fagordene forklares fortsatt ved trykk der sida kobler dem. */
body[data-vit-modul="personal"] :is(span[data-term],span[data-pl-term],button[data-term],.term[data-term]){border-bottom:0}
/* … og ordene lovgrunnlag-ord.js merker (span.ord, dotted i .ord-regelen linje ~188) — målt på sykefravaer.html 07.09. */
body[data-vit-modul="personal"] :is(.ord,button.ord,.ord:hover){border-bottom:0;text-decoration:none}
/* «Månedens tall» toner inn ved månedsbytte i stedet for å hoppe (min-høyden holdes i oversikt-lim.js). */
main.x #mndBoks .mnd{animation:mndInn .34s cubic-bezier(.2,0,0,1) both}
@keyframes mndInn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){main.x #mndBoks .mnd{animation:none}}

/* ═══ 07.09 PERSONAL V2 (mock 65 Ansatte, 68 inngangen) ═══════════════════════════════════════════════════════
   Fire flater som fliser (inngangen): ikon, navn, tekst, «Åpne». */
main.x .rute.flater{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
main.x .flis.flate{padding:18px 20px;display:flex;flex-direction:column;gap:8px;cursor:default}
main.x .flis.flate .n{white-space:normal;font-size:1.25rem;line-height:1.625rem;margin:0}
main.x .flis.flate .t{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);flex:1}
main.x .flis.flate .btn-ut{align-self:flex-start;margin-top:4px}
main.x .flis.flate .ikon{width:40px;height:40px;border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);display:inline-flex;align-items:center;justify-content:center;font-family:'Material Symbols Outlined';font-size:1.375rem}
@media(max-width:900px){main.x .rute.flater{grid-template-columns:1fr}}
/* Søkefeltet i en boks (registeret): pille, som tekstboksen i margen. */
main.x .sok{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:transparent;border:0;padding:0;margin:0}
main.x .sok input{flex:1;min-width:220px;border:1px solid var(--md-sys-color-outline)!important;border-radius:var(--md-sys-shape-corner-full)!important;background:var(--md-sys-color-surface-container-lowest)!important;padding:9px 16px!important;font:400 .9375rem/1.25rem var(--md-ref-typeface-plain)!important;color:var(--md-sys-color-on-surface);outline:0;caret-color:var(--md-sys-color-primary)}
main.x .sok input:focus{border-color:var(--md-sys-color-primary)!important;box-shadow:inset 0 0 0 1px var(--md-sys-color-primary)}
main.x .bh.verktoy{margin-bottom:12px;gap:12px;flex-wrap:wrap}
/* Rader med handlinger (registeret): navn over stilling · e-post, piller og små knapper til høyre. */
main.x .rad .ans-info{display:flex;flex-direction:column;min-width:0}main.x .rad .ans-navn{font-weight:500}
main.x .rad .handling{display:flex;gap:6px;flex-wrap:wrap;align-items:center;justify-content:flex-end}
main.x .btn-ut.liten{padding:6px 12px;font-size:.8125rem;line-height:1.125rem} /* 32 px = M3 ButtonXSmall (18.09.2026, var 30) */
main.x .btn-ut.fare:hover{color:var(--md-sys-color-error);border-color:var(--md-sys-color-error)}
main.x .pill.svak{background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant)}
main.x .rad.er-inaktiv .ans-info{color:var(--md-sys-color-on-surface-variant)}
main.x .rad[hidden]{display:none}
@media(max-width:600px){main.x .rad.ans-rad{flex-wrap:wrap}main.x .rad.ans-rad .handling{width:100%;justify-content:flex-start}}
/* Skjemaet som boks over lista (Kenneth 31.08: inline, ikke pop-up). */
main.x .ans-opp-back{margin:0 0 18px;display:block}
main.x .blokk.skjema .felter{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 16px;margin:0 0 14px}
main.x .blokk.skjema .knapper{display:flex;gap:10px;justify-content:flex-start;margin-top:4px}
main.x .melding{font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-error);margin:0 0 12px}
main.x .melding[hidden]{display:none}
/* 390 px (målt 07.09 på Ansatte og Personal): topp-øyet under hamburgeren — «sonal · Ansatte». Øyet får plass til høyre for knappen. */
@media(max-width:920px){main.x .topp > div > .eye{display:block;padding-left:44px}}

/* ═══ 07.09 LOVGRUNNLAG V2 (mock 67) ═══════════════════════════════════════════════════════════════════════════
   Tre fliser i ruta; regeltabellen med nummer, hjemmel som lenke og frist; regelteksten som rad under (trykk raden). */
main.x .rute.tre{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1200px){main.x .rute.tre{grid-template-columns:1fr}}
main.x .sok .btn-fyll{flex:none}
/* .sok.pille (07.09): ÉN pille med ikonet inni, i stedet for rad med bordet felt. Feltet må nulles med !important —
   den delte input-regelen over er selv !important, og uten dette fikk pilla to rammer (målt i rådgiverportalen). */
main.x .sok.pille{display:inline-flex;align-items:center;gap:8px;flex:1 1 280px;min-width:0;height:40px;padding:0 14px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container-lowest)}
main.x .sok.pille .ms{color:var(--md-sys-color-on-surface-variant)}
main.x .sok.pille input{flex:1;min-width:0!important;border:0!important;border-radius:0!important;background:transparent!important;padding:0!important;outline:none;box-shadow:none!important}
main.x .sok.pille:focus-within{border-color:var(--md-sys-color-primary);box-shadow:inset 0 0 0 1px var(--md-sys-color-primary)}
main.x .linjer.lov td,main.x .linjer.lov th,main.x .linjer.lov td.tall,main.x .linjer.lov th.tall{white-space:normal;vertical-align:top}
main.x .linjer.lov td.nr{width:28px;color:var(--md-sys-color-on-surface-variant)}
main.x .linjer.lov td.hj a{color:var(--md-sys-color-primary);text-decoration:none}main.x .linjer.lov td.hj a:hover{text-decoration:underline}
main.x .linjer.lov .uten{color:var(--md-sys-color-on-surface-variant);font-style:italic}
main.x .linjer.lov tr.regel{cursor:pointer}main.x .linjer.lov tr.regel:hover td{background:var(--md-sys-color-surface-container-low)}
main.x .linjer.lov tr.regel.aapen td{background:var(--md-sys-color-surface-container-low)}
main.x .linjer.lov tr.detalj td{background:var(--md-sys-color-surface-container-low);font:400 .9375rem/1.55rem var(--md-ref-typeface-plain);padding:4px 14px 14px;color:var(--md-sys-color-on-surface)}
main.x .linjer.lov tr.detalj[hidden]{display:none}
main.x .lede.formel{font-family:var(--font-mono);font-size:.875rem}
main.x .lede .ord,main.x .linjer .ord{border:0;background:transparent;padding:0;font:inherit;color:var(--md-sys-color-primary);cursor:pointer;font-family:inherit}
main.x .to.en > .blokk + .blokk{margin-top:0}

/* ═══ 07.09 REKRUTTERING V2 (mock 66) — motorens klasser i M3-form ═══════════════════════════════════════════════
   intervju-motor.js tegner .utl-card, .iv-card, .trappen-trinn, .trappen-detalj-*, .iv-field/.iv-input, .iv-btn, .kost-*, .raad-*,
   .vei-kort, .kpkt-*, .dlg-*, .bank-drawer, .kk-*, .dok-*, .iv-hend-* og .vit-toast. Sida gir id-ene; her får klassene formen. */
/* ══ 11.09 STEGVIS PERSONAL (mock 92/93, Kenneth 10.09: «Det må være litt stegvis — akkurat nå er det for mye støy») ══
   Ett punkt om gangen: .prikker sier hvor du er, .punkt står alene med stort felt. .liste .rad er en trykkbar rad (ikon ·
   tekst + undertekst · høyre). .oppsum er «Om stillingen», .kost er regnestykket ett trykk unna (<details>), .fristliste
   er fristene som vises når første sykedag er satt, .senere er «Så kommer: …» i neste-frist-helten. body.stegvis skjuler
   motorens egne skjema (rekrutteringens dialog, sykefraværets Opprett-kort) mens punktene fyller dem. */
body[data-vit-modus="rekruttering"] main.x .prikker:not(#vlPrikker),body[data-vit-modus="sykefravaer"] main.x .prikker:not(#vlPrikker){display:flex;gap:6px;align-items:center;margin:0 0 14px} /* :not(#vlPrikker) (19.09): trinnprikkene paa pc traff Lights skjermindikator paa Personal-sidene — 24 px brede prikker laa oppaa innholdet (Kenneth: «Den er veldig i veien») */
body[data-vit-modus="rekruttering"] main.x .prikker:not(#vlPrikker) i,body[data-vit-modus="sykefravaer"] main.x .prikker:not(#vlPrikker) i{width:8px;height:8px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-outline-variant);transition:width .3s cubic-bezier(.2,0,0,1),background .2s}
body[data-vit-modus="rekruttering"] main.x .prikker:not(#vlPrikker) i.na,body[data-vit-modus="sykefravaer"] main.x .prikker:not(#vlPrikker) i.na{width:24px;background:var(--md-sys-color-primary)}
body[data-vit-modus="rekruttering"] main.x .prikker:not(#vlPrikker) i.gjort,body[data-vit-modus="sykefravaer"] main.x .prikker:not(#vlPrikker) i.gjort{background:var(--md-sys-color-primary-container)}
body[data-vit-modus="rekruttering"] main.x .punkt h3,body[data-vit-modus="sykefravaer"] main.x .punkt h3{font:400 1.375rem/1.75rem var(--md-ref-typeface-brand);margin:0 0 4px;color:var(--md-sys-color-on-surface)}
body[data-vit-modus="rekruttering"] main.x .punkt .hvorfor,body[data-vit-modus="sykefravaer"] main.x .punkt .hvorfor{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:0 0 16px;max-width:64ch}
body[data-vit-modus="rekruttering"] main.x .punkt .hvorfor .merk,body[data-vit-modus="sykefravaer"] main.x .punkt .hvorfor .merk{color:var(--md-sys-color-error);font-weight:500}
body[data-vit-modus="rekruttering"] main.x .punkt .felter,body[data-vit-modus="sykefravaer"] main.x .punkt .felter{grid-template-columns:1fr;max-width:560px}
body[data-vit-modus="rekruttering"] main.x .punkt .felter textarea,body[data-vit-modus="sykefravaer"] main.x .punkt .felter select{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest);font-family:inherit}
body[data-vit-modus="rekruttering"] main.x .punkt .felter .hint,body[data-vit-modus="sykefravaer"] main.x .punkt .felter .hint{font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);letter-spacing:0}
body[data-vit-modus="rekruttering"] main.x .punkt .seg,body[data-vit-modus="sykefravaer"] main.x .punkt .seg{display:inline-flex}
body[data-vit-modul="personal"] main.x .liste .rad{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;width:100%;text-align:left;padding:12px 0;border:0;border-bottom:1px solid var(--md-sys-color-outline-variant);background:none;font-family:inherit;color:inherit;cursor:pointer;border-radius:0}
body[data-vit-modul="personal"] main.x .liste .rad:last-child{border-bottom:0}
body[data-vit-modul="personal"] main.x .liste .rad:hover{background:var(--md-sys-color-surface-container-low)}
body[data-vit-modul="personal"] main.x .liste .rad .ikon{width:40px;height:40px;border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);display:inline-flex;align-items:center;justify-content:center;font-size:var(--ikon-xl)}
body[data-vit-modul="personal"] main.x .liste .rad .t{display:block;font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modul="personal"] main.x .liste .rad .u{display:block;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modul="personal"] main.x .liste .rad .h{display:inline-flex;align-items:center;gap:6px;font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);white-space:nowrap}
body[data-vit-modus="sykefravaer"] main.x .liste .rad.on{background:var(--md-sys-color-secondary-container)}
body[data-vit-modus="rekruttering"] main.x .oppsum .rad{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .oppsum .rad b{font-weight:500;color:var(--md-sys-color-on-surface);text-align:right}
body[data-vit-modus="rekruttering"] main.x .kost{margin-top:4px}
body[data-vit-modus="rekruttering"] main.x .kost summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);padding:12px 0}
body[data-vit-modus="rekruttering"] main.x .kost summary::-webkit-details-marker{display:none}
body[data-vit-modus="rekruttering"] main.x .kost .del{margin-top:14px}
body[data-vit-modus="rekruttering"] main.x .kost .del > .eye{display:block;margin-bottom:8px}
body[data-vit-modus="rekruttering"] main.x .kost p.fot{margin-top:10px}
body[data-vit-modus="sykefravaer"] main.x .fristliste{margin-top:14px;max-width:560px}
body[data-vit-modus="sykefravaer"] main.x .fristliste .eye{display:block;margin-bottom:4px}
body[data-vit-modus="sykefravaer"] main.x .fristliste .rad{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .fristliste .rad b{font-weight:500;color:var(--md-sys-color-on-surface);white-space:nowrap}
body[data-vit-modus="sykefravaer"] main.x .helt .tall b{font-size:2.25rem;line-height:2.5rem}
body[data-vit-modus="sykefravaer"] main.x .helt .knapper{margin-top:12px}
body[data-vit-modus="sykefravaer"] main.x .helt .senere{margin:6px 0 0;font:400 .875rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-primary-container);opacity:.85}
body[data-vit-modus="sykefravaer"] main.x #sfVarsel{display:none}
body[data-vit-modus="sykefravaer"] main.x #sakList .sak{cursor:pointer}
body[data-vit-modus="sykefravaer"] main.x #sakList .sak:hover{background:var(--md-sys-color-surface-container-low)}

body.stegvis[data-vit-modus="rekruttering"] main.x .dlg-backdrop{display:none!important}
body.stegvis[data-vit-modus="sykefravaer"] main.x .sf-opp-back{display:none!important}


body[data-vit-modus="rekruttering"] main.x .sti:hover{text-decoration:underline}

body[data-vit-modus="rekruttering"] main.x .utl-list{display:flex;flex-direction:column}
body[data-vit-modus="rekruttering"] main.x .utl-card{position:relative;display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:12px 40px 12px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);cursor:pointer;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .utl-card:last-child{border-bottom:0}body[data-vit-modus="rekruttering"] main.x .utl-card:hover{background:var(--md-sys-color-surface-container-low)}
body[data-vit-modus="rekruttering"] main.x .utl-card-top{display:flex;align-items:center;gap:10px;grid-column:1 / -1}body[data-vit-modus="rekruttering"] main.x .utl-card-h{font-weight:500}
body[data-vit-modus="rekruttering"] main.x .utl-card-x{position:absolute;right:0;top:10px;width:32px;height:32px;border:0;border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-on-surface-variant);font:400 1.25rem/1 var(--md-ref-typeface-plain);cursor:pointer}body[data-vit-modus="rekruttering"] main.x .utl-card-x:hover{background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-error)}
body[data-vit-modus="rekruttering"] main.x .utl-card-stat{display:flex;flex-wrap:wrap;gap:6px 18px;grid-column:1 / -1}body[data-vit-modus="rekruttering"] main.x .utl-stat{display:inline-flex;gap:6px;align-items:baseline}body[data-vit-modus="rekruttering"] main.x .utl-stat dt{font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .utl-stat dd{margin:0;font:500 .875rem/1.25rem var(--md-ref-typeface-plain);font-variant-numeric:tabular-nums}body[data-vit-modus="rekruttering"] main.x .utl-stat dd.muted{color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .iv-empty{padding:14px 0;color:var(--md-sys-color-on-surface-variant);font:400 .9375rem/1.4rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .iv-empty p{margin:0}
body[data-vit-modus="rekruttering"] main.x .status-pill{display:inline-flex;align-items:center;border-radius:var(--md-sys-shape-corner-full);padding:2px 10px;font:500 .75rem/1.25rem var(--md-ref-typeface-plain);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
body[data-vit-modus="rekruttering"] main.x .status-pill.fylt,.status-pill.ansatt{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}body[data-vit-modus="rekruttering"] main.x .status-pill.pause,.status-pill.avslatt,.status-pill.kandidat{background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .iv-list{display:flex;flex-direction:column}
body[data-vit-modus="rekruttering"] main.x .iv-card{display:grid;grid-template-columns:1fr auto;gap:4px 12px;align-items:center;padding:12px 0;border:0;border-bottom:1px solid var(--md-sys-color-outline-variant);background:transparent;text-align:left;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:inherit;cursor:pointer;width:100%;font-family:inherit}body[data-vit-modus="rekruttering"] main.x .iv-card:last-child{border-bottom:0}body[data-vit-modus="rekruttering"] main.x .iv-card:hover{background:var(--md-sys-color-surface-container-low)}
body[data-vit-modus="rekruttering"] main.x .iv-card-h{font-weight:500}body[data-vit-modus="rekruttering"] main.x .iv-card-meta{grid-column:1 / -1;font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .iv-card-prog{grid-column:1 / -1;display:flex;gap:4px;margin-top:4px}body[data-vit-modus="rekruttering"] main.x .iv-card-prog i{flex:1;height:4px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-outline-variant)}body[data-vit-modus="rekruttering"] main.x .iv-card-prog i.done{background:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .iv-card-prog i.now{background:var(--md-sys-color-primary)}
body[data-vit-modus="rekruttering"] main.x .kost-grid{display:flex;flex-direction:column}
body[data-vit-modus="rekruttering"] main.x .kost-rad{display:grid;grid-template-columns:1fr auto;gap:2px 16px;padding:10px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .kost-rad-navn{font-weight:500}body[data-vit-modus="rekruttering"] main.x .kost-rad-belop{font-weight:500;font-variant-numeric:tabular-nums;text-align:right}body[data-vit-modus="rekruttering"] main.x .kost-rad-belop.nodata::before{content:'—';color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .kost-rad-formel{grid-column:1 / -1;font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .kost-rad-kilde{grid-column:1 / -1;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .kost-total{display:grid;grid-template-columns:1fr auto;gap:2px 16px;padding:14px 0 0;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .kost-total-navn{font-weight:500}body[data-vit-modus="rekruttering"] main.x .kost-total-belop{font:500 1.375rem/1.75rem var(--md-ref-typeface-plain);font-variant-numeric:tabular-nums;text-align:right}body[data-vit-modus="rekruttering"] main.x .kost-total-sub{grid-column:1 / -1;font:400 .875rem/1.3rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .kost-tom{margin:0;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .aga-deklarer{margin-top:14px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="rekruttering"] main.x .aga-deklarer-rad{display:flex;gap:10px;flex-wrap:wrap;align-items:center}body[data-vit-modus="rekruttering"] main.x .aga-deklarer-rad .iv-input{flex:1;min-width:200px}
body[data-vit-modus="rekruttering"] main.x .iv-peda-lbl{margin:0 0 4px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .iv-peda-p{margin:0 0 10px;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain)}
body[data-vit-modus="rekruttering"] main.x .raad-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 14px}body[data-vit-modus="rekruttering"] main.x .raad-kpi{background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-large);padding:12px 14px;min-width:0}body[data-vit-modus="rekruttering"] main.x .raad-kpi dt{font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .raad-kpi dd{margin:2px 0 0;font:500 1.25rem/1.625rem var(--md-ref-typeface-plain);font-variant-numeric:tabular-nums}body[data-vit-modus="rekruttering"] main.x .raad-kpi dd.nodata::before{content:'—'}body[data-vit-modus="rekruttering"] main.x .raad-kpi small{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:4px}
body[data-vit-modus="rekruttering"] main.x .raad-foer-etter{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--md-sys-color-outline-variant);border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="rekruttering"] main.x .raad-fe-blokk{display:flex;flex-direction:column;flex:1;min-width:120px}body[data-vit-modus="rekruttering"] main.x .raad-fe-lbl{font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .raad-fe-val{font:500 1rem/1.5rem var(--md-ref-typeface-plain);font-variant-numeric:tabular-nums}body[data-vit-modus="rekruttering"] main.x .raad-fe-val.neg{color:var(--md-sys-color-error)}body[data-vit-modus="rekruttering"] main.x .raad-fe-pil{color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .raad-konkl{margin:12px 0 0;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain)}
@media(max-width:700px){body[data-vit-modus="rekruttering"] main.x .raad-grid{grid-template-columns:1fr}}
body[data-vit-modus="rekruttering"] main.x #trappenStair{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
body[data-vit-modus="rekruttering"] main.x .trappen-trinn{position:relative;display:flex;flex-direction:column;gap:6px;background:var(--md-sys-color-surface-container);border:0;border-radius:var(--md-sys-shape-corner-large);padding:12px 14px;min-width:0;text-align:left;font-family:inherit;color:inherit;cursor:pointer;transition:border-radius .4s cubic-bezier(.2,0,0,1),background .2s}body[data-vit-modus="rekruttering"] main.x .trappen-trinn:hover{background:var(--md-sys-color-surface-container-high)}
body[data-vit-modus="rekruttering"] main.x .trappen-trinn.aktiv{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-radius:var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small)}
body[data-vit-modus="rekruttering"] main.x .trappen-ring{width:28px;height:28px;border-radius:var(--md-sys-shape-corner-full);display:inline-flex;align-items:center;justify-content:center;font:500 .8125rem/1 var(--md-ref-typeface-plain);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface-variant);border:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="rekruttering"] main.x .trappen-trinn.done .trappen-ring{background:var(--md-sys-color-on-surface-variant);border-color:var(--md-sys-color-on-surface-variant);color:var(--md-sys-color-surface-container-lowest)}body[data-vit-modus="rekruttering"] main.x .trappen-trinn.now .trappen-ring{border:2px solid var(--md-sys-color-primary);color:var(--md-sys-color-primary)}body[data-vit-modus="rekruttering"] main.x .trappen-trinn.aktiv .trappen-ring{background:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}
body[data-vit-modus="rekruttering"] main.x .trappen-body{display:flex;flex-direction:column;min-width:0}body[data-vit-modus="rekruttering"] main.x .trappen-eye{font:500 .6875rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .trappen-trinn.aktiv .trappen-eye{color:inherit;opacity:.8}body[data-vit-modus="rekruttering"] main.x .trappen-h{margin:0;font:500 .9375rem/1.25rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .trappen-meta{margin:0;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);white-space:normal}body[data-vit-modus="rekruttering"] main.x .trappen-trinn.aktiv .trappen-meta{color:inherit;opacity:.85}
body[data-vit-modus="rekruttering"] main.x .iv-hend-tall{position:absolute;top:8px;right:8px;min-width:20px;height:20px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);font:500 .6875rem/1 var(--md-ref-typeface-plain);display:inline-flex;align-items:center;justify-content:center;padding:0 6px}
@media(max-width:1200px){body[data-vit-modus="rekruttering"] main.x #trappenStair{grid-template-columns:repeat(3,1fr)}}@media(max-width:600px){body[data-vit-modus="rekruttering"] main.x #trappenStair{grid-template-columns:repeat(2,1fr)}}
body[data-vit-modus="rekruttering"] main.x .trappen-detalj-eyebrow{margin:0;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary)}body[data-vit-modus="rekruttering"] main.x .trappen-detalj-h{margin:2px 0 0;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .trappen-detalj-meta{margin:0 0 6px;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .trappen-detalj-section{padding:14px 0;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="rekruttering"] main.x .trappen-detalj-section-lbl{margin:0 0 8px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .trappen-detalj-section p{margin:0 0 8px;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .trappen-detalj-section p:last-child{margin-bottom:0}body[data-vit-modus="rekruttering"] main.x .trappen-detalj-section ul{margin:0;padding-left:20px;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain)}
body[data-vit-modus="rekruttering"] main.x .iv-row{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}@media(max-width:700px){body[data-vit-modus="rekruttering"] main.x .iv-row{grid-template-columns:1fr}}
body[data-vit-modus="rekruttering"] main.x .iv-field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;min-width:0}body[data-vit-modus="rekruttering"] main.x .iv-field label{font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .iv-input{width:100%;box-sizing:border-box;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface-container-lowest)!important;border:1px solid var(--md-sys-color-outline)!important;border-radius:var(--md-sys-shape-corner-medium)!important;padding:9px 12px!important;outline:0}body[data-vit-modus="rekruttering"] main.x .iv-input:focus{border-color:var(--md-sys-color-primary)!important;box-shadow:inset 0 0 0 1px var(--md-sys-color-primary)}body[data-vit-modus="rekruttering"] main.x textarea.iv-input{min-height:88px;resize:vertical}
body[data-vit-modus="rekruttering"] main.x .iv-hint{margin:0;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .iv-error{display:none;margin:0;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-error)}body[data-vit-modus="rekruttering"] main.x .iv-field.invalid .iv-error{display:block}body[data-vit-modus="rekruttering"] main.x .iv-field.invalid .iv-input{border-color:var(--md-sys-color-error)!important}
body[data-vit-modus="rekruttering"] main.x .egen-felt{display:flex;gap:10px;flex-wrap:wrap;align-items:center}body[data-vit-modus="rekruttering"] main.x .egen-felt .iv-input{flex:1;min-width:200px;width:auto}
body[data-vit-modus="rekruttering"] main.x .iv-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
body[data-vit-modus="rekruttering"] main.x .iv-btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--md-sys-shape-corner-full);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);padding:9px 18px;cursor:pointer;border:1px solid var(--md-sys-color-outline);background:transparent;color:var(--md-sys-color-primary);font-family:inherit}body[data-vit-modus="rekruttering"] main.x .iv-btn:hover{background:var(--md-sys-color-surface-container-low)}body[data-vit-modus="rekruttering"] main.x .iv-btn:disabled{opacity:.38;cursor:default}
body[data-vit-modus="rekruttering"] main.x .iv-btn.primary,.iv-btn.brand{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-color:var(--md-sys-color-primary)}body[data-vit-modus="rekruttering"] main.x .iv-btn.brand{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-color:var(--md-sys-color-secondary-container)}body[data-vit-modus="rekruttering"] main.x .iv-btn.fare{color:var(--md-sys-color-error);border-color:var(--md-sys-color-error)}
body[data-vit-modus="rekruttering"] main.x .vei-rad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}@media(max-width:800px){body[data-vit-modus="rekruttering"] main.x .vei-rad{grid-template-columns:1fr}}
body[data-vit-modus="rekruttering"] main.x .vei-kort{display:flex;flex-direction:column;gap:6px;text-align:left;background:var(--md-sys-color-surface-container);border:0;border-radius:var(--md-sys-shape-corner-large);padding:14px;font-family:inherit;color:inherit;cursor:pointer;transition:background .2s}body[data-vit-modus="rekruttering"] main.x .vei-kort:hover{background:var(--md-sys-color-surface-container-high)}body[data-vit-modus="rekruttering"] main.x .vei-ikon{width:32px;height:32px;border-radius:var(--md-sys-shape-corner-full);display:inline-flex;align-items:center;justify-content:center;background:var(--md-sys-color-surface-container-lowest);font:500 1rem/1 var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .vei-h{font:500 .9375rem/1.25rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .vei-d{font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .vei-kort.fare .vei-ikon{color:var(--md-sys-color-error)}
body[data-vit-modus="rekruttering"] main.x .vit-vurd{background:var(--md-sys-color-surface-container-low);border-radius:var(--md-sys-shape-corner-large);padding:12px 14px;margin:8px 0;font:400 .875rem/1.35rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .vit-vurd-head{display:flex;gap:8px;align-items:baseline;margin-bottom:4px}body[data-vit-modus="rekruttering"] main.x .vit-vurd-type{font:500 .6875rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-error)}body[data-vit-modus="rekruttering"] main.x .vit-vurd-lbl{font:500 .8125rem/1.125rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .vit-vurd p{margin:0 0 6px}body[data-vit-modus="rekruttering"] main.x .vit-vurd-grunnlag{color:var(--md-sys-color-primary);font-weight:500}
body[data-vit-modus="rekruttering"] main.x .iv-lesmer{margin:10px 0;border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-large);padding:0 14px}body[data-vit-modus="rekruttering"] main.x .iv-lesmer summary{cursor:pointer;padding:10px 0;font:500 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary)}body[data-vit-modus="rekruttering"] main.x .iv-lesmer-body{padding:0 0 12px;font:400 .875rem/1.4rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .iv-lesmer-body p{margin:0 0 8px}
body[data-vit-modus="rekruttering"] main.x .iv-lesmer-tabell table{width:100%;border-collapse:collapse;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);margin:0 0 10px}body[data-vit-modus="rekruttering"] main.x .iv-lesmer-tabell th,.iv-lesmer-tabell td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--md-sys-color-outline-variant);vertical-align:top}body[data-vit-modus="rekruttering"] main.x .iv-lesmer-tabell th{font-weight:500;color:var(--md-sys-color-on-surface-variant)}
/* AKSENTSTRIPA ER FJERNET (16.09.2026). Sto som border-left:3px solid primary,
   som er STRENGT FORBUDT etter den absolutte regelen i vit-tokens.css linje 5-15.
   Erstattet med det regelen selv sier er riktig: bakgrunns-tint i brand + hel
   haarlinje-ramme. Radiusen var halv fordi den fulgte stripa — naa hel. */
body[data-vit-modus="rekruttering"] main.x .iv-lovsitat{margin:0 0 10px;padding:10px 12px;background:color-mix(in srgb, var(--brand) 8%, var(--md-sys-color-surface-container-low));box-shadow:inset 0 0 0 1px var(--brand-line);border-radius:var(--md-sys-shape-corner-medium)}body[data-vit-modus="rekruttering"] main.x .iv-lovsitat .ref{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);margin-bottom:4px}body[data-vit-modus="rekruttering"] main.x .iv-lovsitat em{font-style:italic}body[data-vit-modus="rekruttering"] main.x .iv-kildelinje{font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .iv-kildelinje span{font-weight:500;margin-right:6px}
body[data-vit-modus="rekruttering"] main.x .doc-tema{margin:0 0 12px}body[data-vit-modus="rekruttering"] main.x .doc-tema-h{font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant);margin:0 0 6px}body[data-vit-modus="rekruttering"] main.x .doc-q{padding:8px 0;border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="rekruttering"] main.x .doc-q-top{display:flex;align-items:flex-start;gap:8px}body[data-vit-modus="rekruttering"] main.x .doc-q-tekst{flex:1;font:500 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .doc-q-egen{display:inline-block;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);padding:0 8px;font:500 .6875rem/1.25rem var(--md-ref-typeface-plain);margin-right:6px;vertical-align:middle}
body[data-vit-modus="rekruttering"] main.x .doc-q-fjern{border:0;background:transparent;color:var(--md-sys-color-on-surface-variant);font:400 1.125rem/1 var(--md-ref-typeface-plain);cursor:pointer;padding:0 4px}body[data-vit-modus="rekruttering"] main.x .doc-q-fjern:hover{color:var(--md-sys-color-error)}body[data-vit-modus="rekruttering"] main.x .doc-q-notat{width:100%;box-sizing:border-box;margin-top:6px;min-height:56px;font:400 .875rem/1.35rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface-container-lowest)!important;border:1px solid var(--md-sys-color-outline-variant)!important;border-radius:var(--md-sys-shape-corner-medium)!important;padding:8px 10px!important;resize:vertical}body[data-vit-modus="rekruttering"] main.x .doc-tom{margin:0;color:var(--md-sys-color-on-surface-variant);font:400 .9375rem/1.4rem var(--md-ref-typeface-plain)}
body[data-vit-modus="rekruttering"] main.x .kpkt-tariff{margin:0 0 12px}body[data-vit-modus="rekruttering"] main.x .kpkt-tariff label{display:block;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-bottom:6px}body[data-vit-modus="rekruttering"] main.x .kpkt-tariff p{margin:6px 0 0;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .kpkt-liste{display:flex;flex-direction:column}body[data-vit-modus="rekruttering"] main.x .kpkt-rad{display:grid;grid-template-columns:32px 1fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="rekruttering"] main.x .kpkt-rad:last-child{border-bottom:0}body[data-vit-modus="rekruttering"] main.x .kpkt-bokstav{width:28px;height:28px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container);display:inline-flex;align-items:center;justify-content:center;font:500 .8125rem/1 var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .kpkt-tittel{font:500 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .kpkt-tittel small{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .kpkt-pille{display:inline-flex;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);padding:2px 10px;font:500 .75rem/1.25rem var(--md-ref-typeface-plain)}
body[data-vit-modus="rekruttering"] main.x .kpkt-toggle{display:inline-flex;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-full);overflow:hidden}body[data-vit-modus="rekruttering"] main.x .kpkt-toggle button{border:0;background:transparent;padding:6px 12px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);cursor:pointer;font-family:inherit}body[data-vit-modus="rekruttering"] main.x .kpkt-toggle button.on{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}body[data-vit-modus="rekruttering"] main.x .kpkt-toggle button:disabled{opacity:.38;cursor:default}
@media(max-width:700px){body[data-vit-modus="rekruttering"] main.x .kpkt-rad{grid-template-columns:32px 1fr}body[data-vit-modus="rekruttering"] main.x .kpkt-toggle,.kpkt-pille{grid-column:2}}
body[data-vit-modus="rekruttering"] main.x .dlg-check{display:flex;gap:10px;align-items:flex-start;padding:10px 0}body[data-vit-modus="rekruttering"] main.x .dlg-check input{margin-top:4px;accent-color:var(--md-sys-color-primary)}body[data-vit-modus="rekruttering"] main.x .dlg-check label{font:400 .9375rem/1.4rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .dlg-check label small{display:block;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rekruttering"] main.x .dlg-backdrop{display:none}body[data-vit-modus="rekruttering"].dlg-open main.x .dlg-backdrop{display:block}body[data-vit-modus="rekruttering"] main.x .dlg{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-extra-large);padding:20px 24px}body[data-vit-modus="rekruttering"] main.x .dlg h2{margin:0 0 4px;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .dlg-lede{margin:0 0 12px;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .dlg-gdpr{margin:8px 0;padding:10px 12px;background:var(--md-sys-color-surface-container-low);border-radius:var(--md-sys-shape-corner-medium);font:400 .875rem/1.35rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .dlg-actions{display:flex;gap:10px;justify-content:flex-start;flex-wrap:wrap;margin-top:12px}
.bank-backdrop{position:fixed;inset:0;background:var(--md-sys-color-scrim);opacity:0;pointer-events:none;transition:opacity .2s;z-index:60}body.bank-open #bankBackdrop,body.kk-open #kkBackdrop{opacity:.32;pointer-events:auto}
.bank-drawer{position:fixed;top:0;right:0;bottom:0;width:480px;max-width:100vw;background:var(--md-sys-color-surface-container-lowest);border-left:1px solid var(--md-sys-color-outline-variant);transform:translateX(100%);transition:transform .25s cubic-bezier(.2,0,0,1);z-index:61;display:flex;flex-direction:column}body.bank-open #bankDrawer,body.kk-open #kkDrawer{transform:translateX(0)}
.bank-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 10px}.bank-head h2{margin:0;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain)}.bank-close{width:36px;height:36px;border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-on-surface-variant);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.bank-close svg{width:14px;height:14px}
.bank-content{flex:1;overflow-y:auto;padding:0 22px 22px;font:400 .9375rem/1.4rem var(--md-ref-typeface-plain)}.bank-tema-h{margin:14px 0 6px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant)}
.bank-q{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;border:0;border-bottom:1px solid var(--md-sys-color-outline-variant);background:transparent;padding:8px 0;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:inherit;cursor:pointer;font-family:inherit}.bank-q:hover{background:var(--md-sys-color-surface-container-low)}.bank-q:disabled{opacity:.38;cursor:default}.bank-q .plus{color:var(--md-sys-color-primary);font-weight:500}
.kk-felt{display:flex;gap:10px;padding:6px 0;border-bottom:1px solid var(--md-sys-color-outline-variant)}.kk-felt dt{width:120px;flex:none;color:var(--md-sys-color-on-surface-variant);font:400 .875rem/1.25rem var(--md-ref-typeface-plain)}.kk-felt dd{margin:0;font:500 .9375rem/1.25rem var(--md-ref-typeface-plain)}.kk-divider{border:0;border-top:1px solid var(--md-sys-color-outline-variant);margin:14px 0}.kk-ep-h{font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant);margin:0 0 6px}
.kk-ep-topp{display:grid;grid-template-columns:1fr;gap:2px;width:100%;text-align:left;border:0;border-bottom:1px solid var(--md-sys-color-outline-variant);background:transparent;padding:8px 0;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:inherit;cursor:pointer;font-family:inherit}.kk-ep-type{font-weight:500}.kk-ep-emne{color:var(--md-sys-color-on-surface-variant)}.kk-ep-dato{font-size:.75rem;color:var(--md-sys-color-on-surface-variant)}.kk-ep-kropp{display:none;padding:8px 0 12px;font:400 .875rem/1.35rem var(--md-ref-typeface-plain)}.kk-ep-rad.open .kk-ep-kropp{display:block}.kk-ep-tekst{white-space:pre-wrap}.kk-ep-meta{margin-top:6px;color:var(--md-sys-color-on-surface-variant);font-size:.8125rem}
.bank-drawer .iv-field{display:flex;flex-direction:column;gap:6px}.bank-drawer .iv-field label{font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}.bank-drawer .iv-input{width:100%;box-sizing:border-box}.bank-drawer .iv-hint{margin:0;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}.bank-drawer .iv-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}.bank-drawer .iv-btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--md-sys-shape-corner-full);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);padding:9px 18px;cursor:pointer;border:1px solid var(--md-sys-color-outline);background:transparent;color:var(--md-sys-color-primary);font-family:inherit}.bank-drawer .iv-btn.primary{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-color:var(--md-sys-color-primary)}.bank-drawer .iv-btn.fare{color:var(--md-sys-color-error);border-color:var(--md-sys-color-error)}
@media(max-width:700px){.bank-drawer{top:auto;left:0;width:100%;height:86vh;border-left:0;border-top:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-extra-large) var(--md-sys-shape-corner-extra-large) 0 0;transform:translateY(100%)}body.bank-open #bankDrawer,body.kk-open #kkDrawer{transform:translateY(0)}}
.ord-drawer,.ord-backdrop{display:none!important}
body[data-vit-modus="rekruttering"] main.x .dok-flate{display:none;margin:0 0 18px}body[data-vit-modus="rekruttering"] main.x .dok-flate.on{display:block}body[data-vit-modus="rekruttering"] main.x .dok-verktoy{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:0 0 8px}body[data-vit-modus="rekruttering"] main.x .dok-skriv-hint{flex:1 1 100%;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .dok-status{margin:0 0 10px;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .dok-ark{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-extra-large);padding:24px;overflow-x:auto}body[data-vit-modus="rekruttering"] main.x .dok-ren{position:absolute;left:-10000px;top:0;width:800px;pointer-events:none}
body[data-vit-modus="rekruttering"] main.x .iv-hend-blokk{margin-top:14px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="rekruttering"] main.x .iv-hend-form{display:none;background:var(--md-sys-color-surface-container-low);border-radius:var(--md-sys-shape-corner-large);padding:14px;margin-bottom:12px}body[data-vit-modus="rekruttering"] main.x .iv-hend-form.on{display:block}body[data-vit-modus="rekruttering"] main.x .iv-hend-frow{display:grid;grid-template-columns:1fr 1fr;gap:10px}body[data-vit-modus="rekruttering"] main.x .iv-hend-field{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}body[data-vit-modus="rekruttering"] main.x .iv-hend-field label{font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .iv-hend-field input,.iv-hend-field select,.iv-hend-field textarea{width:100%;box-sizing:border-box}
body[data-vit-modus="rekruttering"] main.x .iv-hend-dz{display:flex;align-items:center;gap:10px;padding:12px;border:1px dashed var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);cursor:pointer;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .iv-hend-dz svg{width:20px;height:20px}body[data-vit-modus="rekruttering"] main.x .iv-hend-actions{display:flex;gap:10px;justify-content:flex-start;margin-top:10px}body[data-vit-modus="rekruttering"] main.x .iv-hend-btn{border-radius:var(--md-sys-shape-corner-full);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);padding:8px 16px;cursor:pointer;border:1px solid var(--md-sys-color-outline);background:transparent;color:var(--md-sys-color-primary);font-family:inherit}body[data-vit-modus="rekruttering"] main.x .iv-hend-btn.primary{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-color:var(--md-sys-color-primary)}
body[data-vit-modus="rekruttering"] main.x .iv-hend-lbl{margin:0 0 6px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .iv-hend-tom{margin:0;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rekruttering"] main.x .iv-hend-item{display:grid;grid-template-columns:14px 1fr;gap:8px;padding:8px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .875rem/1.3rem var(--md-ref-typeface-plain)}body[data-vit-modus="rekruttering"] main.x .iv-hend-dot{display:inline-block;width:8px;height:8px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);margin-top:6px}body[data-vit-modus="rekruttering"] main.x .iv-hend-top{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline}body[data-vit-modus="rekruttering"] main.x .iv-hend-type{font-weight:500}body[data-vit-modus="rekruttering"] main.x .iv-hend-dato,.iv-hend-av{color:var(--md-sys-color-on-surface-variant);font-size:.8125rem}body[data-vit-modus="rekruttering"] main.x .iv-hend-notat{margin:2px 0 0}body[data-vit-modus="rekruttering"] main.x .iv-hend-dok{border:0;background:transparent;padding:0;color:var(--md-sys-color-primary);font:500 .8125rem/1.2rem var(--md-ref-typeface-plain);cursor:pointer;font-family:inherit;text-decoration:underline}
.vit-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--md-sys-color-on-surface);color:var(--md-sys-color-surface-container-lowest);border-radius:var(--md-sys-shape-corner-full);padding:10px 18px;font:500 .875rem/1.25rem var(--md-ref-typeface-plain);transition:opacity .2s,transform .2s;z-index:70;max-width:calc(100vw - 32px)}.vit-toast.vis{opacity:1;transform:translate(-50%,0)}.vit-toast.feil{background:var(--md-sys-color-error);color:var(--md-sys-color-surface-container-lowest)}
body[data-vit-modus="rekruttering"] main.x .ord{color:var(--md-sys-color-primary);cursor:pointer}
body[data-vit-modus="rekruttering"] main.x #guideTekst{margin-top:12px;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain)}
body[data-vit-modus="rekruttering"] main.x .term-popup{display:none}
/* 390 px: sti-lenka (ett nivå opp) får plass til høyre for hamburgeren, som topp-øyet. */
@media(max-width:920px){main.x .topp .sti{margin-left:44px}}

/* ═══ 07.09 SYKEFRAVÆR V2 (mock 64) — motorenes klasser i M3-form ═══════════════════════════════════════════════
   vit-sykefravaer-live.js tegner .sak/.sak-*, .sak-avsluttede, .sf-tom-*, .sak-retting, .trappen-trinn-tilstander, .trappen-notat/-planlagt,
   sykefravaer-motor.js tegner .trappen-detalj-*, .sf-hend-*, .sf-steg-handling, .sf-lesmer, .sf-lovsitat, .sf-formel, .hend-tall, ordboka i boten,
   sykefravaer-motor-dok.js tegner .sf-opp-* (Opprett sak) og skjemaene i dokumentflata (.sf-hend-* i #sfDokFlate). */
body[data-vit-modus="sykefravaer"] main.x .trappen-stair{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-bottom:14px}@media(max-width:1200px){body[data-vit-modus="sykefravaer"] main.x .trappen-stair{grid-template-columns:repeat(4,1fr)}}@media(max-width:600px){body[data-vit-modus="sykefravaer"] main.x .trappen-stair{grid-template-columns:repeat(2,1fr)}}
body[data-vit-modus="sykefravaer"] main.x .trappen-trinn{position:relative;display:flex;flex-direction:column;gap:6px;background:var(--md-sys-color-surface-container);border:0;border-radius:var(--md-sys-shape-corner-large);padding:12px 12px;min-width:0;text-align:left;font-family:inherit;color:inherit;cursor:pointer;transition:border-radius .4s cubic-bezier(.2,0,0,1),background .2s}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn:hover{background:var(--md-sys-color-surface-container-high)}
body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.aktiv{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-radius:var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small)}
body[data-vit-modus="sykefravaer"] main.x .trappen-ring{width:14px;height:14px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container-lowest);border:1.5px solid var(--md-sys-color-outline);position:relative;flex:none}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.done .trappen-ring{background:var(--md-sys-color-on-surface-variant);border-color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.now .trappen-ring{border:2px solid var(--md-sys-color-primary);width:16px;height:16px}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.now .trappen-ring::before{content:'';position:absolute;inset:3px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary)}
body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.warn .trappen-ring{border-color:var(--md-sys-color-primary)}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.warn .trappen-ring::before{content:'';position:absolute;inset:3px;border-radius:var(--md-sys-shape-corner-full);border:1.5px solid var(--md-sys-color-primary)}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.oversittet .trappen-ring{border-color:var(--md-sys-color-error);background:var(--md-sys-color-error)}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.utsatt .trappen-ring,.trappen-trinn.planlagt .trappen-ring{border-color:var(--md-sys-color-primary);border-style:dashed}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.bortfalt{opacity:.55}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.passert .trappen-ring{border-color:var(--md-sys-color-on-surface-variant);border-style:dotted}
body[data-vit-modus="sykefravaer"] main.x .trappen-dato{display:flex;flex-direction:column;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .trappen-dato strong{font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.aktiv .trappen-dato,.trappen-trinn.aktiv .trappen-dato strong{color:inherit}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.warn .trappen-dato{color:var(--md-sys-color-primary)}body[data-vit-modus="sykefravaer"] main.x .trappen-planlagt{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);margin-top:2px}
body[data-vit-modus="sykefravaer"] main.x .trappen-body{min-width:0}body[data-vit-modus="sykefravaer"] main.x .trappen-h{margin:0;font:500 .9375rem/1.25rem var(--md-ref-typeface-plain);overflow-wrap:anywhere}body[data-vit-modus="sykefravaer"] main.x .trappen-meta{margin:2px 0 0;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);white-space:normal}body[data-vit-modus="sykefravaer"] main.x .trappen-trinn.aktiv .trappen-meta{color:inherit;opacity:.85}body[data-vit-modus="sykefravaer"] main.x .trappen-notat{margin:4px 0 0;font:400 .75rem/1.1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .hend-tall{position:absolute;top:8px;right:8px;min-width:20px;height:20px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);font:500 .6875rem/1 var(--md-ref-typeface-plain);display:inline-flex;align-items:center;justify-content:center;padding:0 6px}
body[data-vit-modus="sykefravaer"] main.x .trinnboks{background:var(--md-sys-color-surface-container-low);border-radius:var(--md-sys-shape-corner-large);padding:14px 18px;margin-bottom:12px}
body[data-vit-modus="sykefravaer"] main.x .trappen-detalj-eyebrow{margin:0;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary)}body[data-vit-modus="sykefravaer"] main.x .trappen-detalj-h{margin:2px 0 0;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .trappen-detalj-meta{margin:0 0 6px;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .trappen-detalj-section{padding:12px 0;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="sykefravaer"] main.x .trappen-detalj-section-lbl{margin:0 0 6px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .trappen-detalj-section p{margin:0 0 8px;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .trappen-detalj-section p:last-child{margin-bottom:0}body[data-vit-modus="sykefravaer"] main.x .trappen-detalj-section ul{margin:0;padding-left:20px;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain)}
body[data-vit-modus="sykefravaer"] main.x .sf-steg-handling{display:inline-flex;align-items:center;gap:6px;border-radius:var(--md-sys-shape-corner-full);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);padding:9px 18px;cursor:pointer;border:1px solid var(--md-sys-color-outline);background:transparent;color:var(--md-sys-color-primary);font-family:inherit;background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-color:var(--md-sys-color-primary)}
body[data-vit-modus="sykefravaer"] main.x .lede.vurd{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:12px}body[data-vit-modus="sykefravaer"] main.x .lede.vurd[hidden]{display:none}
body[data-vit-modus="sykefravaer"] main.x .sak-list{display:flex;flex-direction:column}
body[data-vit-modus="sykefravaer"] main.x .sak{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sak-init{width:32px;height:32px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);display:inline-flex;align-items:center;justify-content:center;font:500 .875rem/1 var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sak-body{display:flex;flex-direction:column;min-width:0}body[data-vit-modus="sykefravaer"] main.x .sak-h{margin:0;font-weight:500}body[data-vit-modus="sykefravaer"] main.x .sak-p{margin:0;font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .sak-status{font:500 .75rem/1.25rem var(--md-ref-typeface-plain);border-radius:var(--md-sys-shape-corner-full);padding:2px 10px;background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}body[data-vit-modus="sykefravaer"] main.x .sak-status.frist{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}
body[data-vit-modus="sykefravaer"] main.x .sf-tom-h{margin:8px 0 4px;font:500 1rem/1.5rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sf-tom-p{margin:0 0 8px;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .sak-avsluttede{margin-top:14px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="sykefravaer"] main.x .sak-avsl-h{margin:0 0 6px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .sak-avsl{padding:8px 0;border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="sykefravaer"] main.x .sak-avsl summary{cursor:pointer;font:500 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sak-avsl-logg{margin:8px 0 0;padding-left:20px;font:400 .875rem/1.35rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sak-avsl-slett{margin:8px 0 0;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .sak-retting{border:1px solid var(--md-sys-color-primary);border-radius:var(--md-sys-shape-corner-large);padding:12px 14px;margin:0 0 10px;background:var(--md-sys-color-surface-container-low)}body[data-vit-modus="sykefravaer"] main.x .sak-retting .sr-h{margin:0 0 4px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary)}body[data-vit-modus="sykefravaer"] main.x .sak-retting .sr-p{margin:0 0 10px;font:400 .9375rem/1.4rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sak-retting .sr-btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--md-sys-shape-corner-full);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);padding:9px 18px;cursor:pointer;border:1px solid var(--md-sys-color-outline);background:transparent;color:var(--md-sys-color-primary);font-family:inherit}body[data-vit-modus="sykefravaer"] main.x .sak-retting .sr-btn:disabled{opacity:.38;cursor:default}
body[data-vit-modus="sykefravaer"] main.x .sf-opp-back{margin:0 0 18px;display:block}body[data-vit-modus="sykefravaer"] main.x .sf-opp-card{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-extra-large);padding:20px 24px}body[data-vit-modus="sykefravaer"] main.x .sf-opp-h{margin:0 0 6px;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sf-opp-p{margin:0 0 12px;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .sf-opp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 16px;margin:0 0 14px}body[data-vit-modus="sykefravaer"] main.x .sf-opp-f{display:flex;flex-direction:column;gap:6px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant);min-width:0}body[data-vit-modus="sykefravaer"] main.x .sf-opp-f.full{grid-column:1 / -1}body[data-vit-modus="sykefravaer"] main.x .sf-opp-f input,.sf-opp-f select{width:100%;box-sizing:border-box;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface-container-lowest)!important;border:1px solid var(--md-sys-color-outline)!important;border-radius:var(--md-sys-shape-corner-medium)!important;padding:9px 12px!important;outline:0}body[data-vit-modus="sykefravaer"] main.x .sf-opp-f span{font:400 .75rem/1.1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);letter-spacing:0}
body[data-vit-modus="sykefravaer"] main.x .sf-opp-act{display:flex;gap:10px;justify-content:flex-start;flex-wrap:wrap}body[data-vit-modus="sykefravaer"] main.x .sf-opp-btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--md-sys-shape-corner-full);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);padding:9px 18px;cursor:pointer;border:1px solid var(--md-sys-color-outline);background:transparent;color:var(--md-sys-color-primary);font-family:inherit}body[data-vit-modus="sykefravaer"] main.x .sf-opp-btn.primary{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-color:var(--md-sys-color-primary)}
body[data-vit-modus="sykefravaer"] main.x .sf-hend-blokk{margin-top:12px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="sykefravaer"] main.x .sf-hend-form{display:none;background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-large);padding:14px;margin-bottom:12px}body[data-vit-modus="sykefravaer"] main.x .sf-hend-form.on{display:block}body[data-vit-modus="sykefravaer"] main.x .sf-hend-frow{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:600px){body[data-vit-modus="sykefravaer"] main.x .sf-hend-frow{grid-template-columns:1fr}}
body[data-vit-modus="sykefravaer"] main.x .sf-hend-field{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;min-width:0}body[data-vit-modus="sykefravaer"] main.x .sf-hend-field label{font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .sf-hend-field input,.sf-hend-field select,.sf-hend-field textarea{width:100%;box-sizing:border-box;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface-container-lowest)!important;border:1px solid var(--md-sys-color-outline)!important;border-radius:var(--md-sys-shape-corner-medium)!important;padding:9px 12px!important;outline:0}body[data-vit-modus="sykefravaer"] main.x .sf-hend-field textarea{min-height:72px;resize:vertical}body[data-vit-modus="sykefravaer"] main.x .sf-hend-field[hidden]{display:none}
body[data-vit-modus="sykefravaer"] main.x .sf-hend-hjemmel{margin:0 0 10px;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .sf-hend-actions{display:flex;gap:10px;justify-content:flex-start;flex-wrap:wrap}body[data-vit-modus="sykefravaer"] main.x .sf-hend-btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--md-sys-shape-corner-full);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);padding:9px 18px;cursor:pointer;border:1px solid var(--md-sys-color-outline);background:transparent;color:var(--md-sys-color-primary);font-family:inherit;padding:8px 16px}body[data-vit-modus="sykefravaer"] main.x .sf-hend-btn.primary{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-color:var(--md-sys-color-primary)}body[data-vit-modus="sykefravaer"] main.x .sf-hend-btn:disabled{opacity:.38;cursor:default}body[data-vit-modus="sykefravaer"] main.x .sf-hend-status{margin:8px 0 0;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .sf-hend-status:empty{display:none}
body[data-vit-modus="sykefravaer"] main.x .sf-hend-lbl{margin:0 0 6px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .sf-hend-tom{margin:0;font:400 .875rem/1.3rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .sf-hend-item{display:grid;grid-template-columns:14px 1fr;gap:8px;padding:8px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .875rem/1.3rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sf-hend-dot{display:inline-block;width:8px;height:8px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);margin-top:6px}body[data-vit-modus="sykefravaer"] main.x .sf-hend-top{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline}body[data-vit-modus="sykefravaer"] main.x .sf-hend-type{font-weight:500}body[data-vit-modus="sykefravaer"] main.x .sf-hend-dato,.sf-hend-av{color:var(--md-sys-color-on-surface-variant);font-size:.8125rem}body[data-vit-modus="sykefravaer"] main.x .sf-hend-notat{margin:2px 0 0}body[data-vit-modus="sykefravaer"] main.x .sf-hend-dok{display:inline-block;margin-top:2px;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .sf-dok-tiltak-rad{flex-direction:row;align-items:center}body[data-vit-modus="sykefravaer"] main.x .sf-dok-tiltak-rad input{flex:1}body[data-vit-modus="sykefravaer"] main.x .sf-dok-skjema-intro,.sf-dok-skjema-status{margin:0 0 10px;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .sf-lesmer{margin:12px 0 0;border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-large);padding:0 14px}body[data-vit-modus="sykefravaer"] main.x .sf-lesmer summary{cursor:pointer;padding:10px 0;font:500 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);list-style:none}body[data-vit-modus="sykefravaer"] main.x .sf-lesmer summary::-webkit-details-marker{display:none}body[data-vit-modus="sykefravaer"] main.x .sf-lesmer-body{padding:0 0 12px;font:400 .875rem/1.4rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sf-lesmer-body p,.sf-lesmer-body li{margin:0 0 8px}body[data-vit-modus="sykefravaer"] main.x .sf-lesmer-body ul{margin:8px 0;padding-left:16px}
body[data-vit-modus="sykefravaer"] main.x .sf-formel{font-family:var(--font-mono);font-size:.8125rem;line-height:1.6;background:var(--md-sys-color-surface-container-low);border-radius:var(--md-sys-shape-corner-medium);padding:10px 12px;margin:0 0 10px}/* Samme forbud, samme fiks som .iv-lovsitat over. */
body[data-vit-modus="sykefravaer"] main.x .sf-lovsitat{margin:0 0 10px;padding:10px 12px;background:color-mix(in srgb, var(--brand) 8%, var(--md-sys-color-surface-container-low));box-shadow:inset 0 0 0 1px var(--brand-line);border-radius:var(--md-sys-shape-corner-medium)}body[data-vit-modus="sykefravaer"] main.x .sf-lovsitat .ref{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);margin-bottom:4px}body[data-vit-modus="sykefravaer"] main.x .sf-kildelinje{font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .sf-kildelinje span{font-weight:500;margin-right:6px}
body[data-vit-modus="sykefravaer"] main.x .grafboks{margin:0 0 12px}body[data-vit-modus="sykefravaer"] main.x .spor100{display:flex;height:12px;border-radius:var(--md-sys-shape-corner-full);overflow:hidden;background:var(--md-sys-color-surface-container)}body[data-vit-modus="sykefravaer"] main.x .spor100 i{display:block;height:100%}body[data-vit-modus="sykefravaer"] main.x .spor100 i:first-child{background:var(--md-sys-color-primary)}body[data-vit-modus="sykefravaer"] main.x .spor100 i:last-child{background:var(--md-sys-color-outline-variant)}
body[data-vit-modus="sykefravaer"] main.x .spor-merk{display:flex;gap:16px;flex-wrap:wrap;margin-top:8px;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .sf-merk{display:inline-block;width:10px;height:10px;border-radius:var(--md-sys-shape-corner-full);margin-right:6px;vertical-align:middle}body[data-vit-modus="sykefravaer"] main.x .sf-merk-brukt{background:var(--md-sys-color-primary)}body[data-vit-modus="sykefravaer"] main.x .sf-merk-igjen{background:var(--md-sys-color-outline-variant)}
body[data-vit-modus="sykefravaer"] main.x .formel{font:400 .9375rem/1.4rem var(--md-ref-typeface-plain);margin:0 0 12px}body[data-vit-modus="sykefravaer"] main.x .formel small{display:block;margin-top:4px;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .sfd-kolhode,.sfd-trinn{display:grid;grid-template-columns:150px 1fr 1fr;gap:0 14px}body[data-vit-modus="sykefravaer"] main.x .sfd-kolhode{font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant);padding:6px 0;border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="sykefravaer"] main.x .sfd-lop{list-style:none;margin:0;padding:0}body[data-vit-modus="sykefravaer"] main.x .sfd-trinn{border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="sykefravaer"] main.x .sfd-trinn:last-child{border-bottom:0}
body[data-vit-modus="sykefravaer"] main.x .sfd-nar{position:relative;padding:16px 0 16px 22px}body[data-vit-modus="sykefravaer"] main.x .sfd-dot{position:absolute;left:0;top:22px;width:10px;height:10px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary)}body[data-vit-modus="sykefravaer"] main.x .sfd-nar b{display:block;font:500 .9375rem/1.25rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sfd-nar i{display:block;font:400 .8125rem/1.2rem var(--md-ref-typeface-plain);font-style:normal;color:var(--md-sys-color-on-surface-variant);margin-top:2px}
body[data-vit-modus="sykefravaer"] main.x .sfd-lane{padding:16px 0}body[data-vit-modus="sykefravaer"] main.x .sfd-lane p{margin:0 0 8px;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] main.x .sfd-lane p:last-child{margin-bottom:0}body[data-vit-modus="sykefravaer"] main.x .sfd-lane-lbl{display:none;font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-bottom:6px}body[data-vit-modus="sykefravaer"] main.x .sfd-frist{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-radius:var(--md-sys-shape-corner-full);font:500 .8125rem/1.125rem var(--md-ref-typeface-plain)!important}body[data-vit-modus="sykefravaer"] main.x .sfd-kilde{font:400 .8125rem/1.2rem var(--md-ref-typeface-plain)!important;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] main.x .sfd-kilde a{color:var(--md-sys-color-primary);text-decoration:none}body[data-vit-modus="sykefravaer"] main.x .sfd-kilde a:hover{text-decoration:underline}
@media(max-width:900px){body[data-vit-modus="sykefravaer"] main.x .sfd-kolhode{display:none}body[data-vit-modus="sykefravaer"] main.x .sfd-trinn{grid-template-columns:1fr;padding-bottom:12px}body[data-vit-modus="sykefravaer"] main.x .sfd-nar{padding:14px 0 6px 22px}body[data-vit-modus="sykefravaer"] main.x .sfd-lane{padding:10px 0;background:transparent}body[data-vit-modus="sykefravaer"] main.x .sfd-lane-lbl{display:block}}
body[data-vit-modus="sykefravaer"] main.x .flis.kpi[hidden]{display:none}body[data-vit-modus="sykefravaer"] main.x .flis .d[data-sf]{white-space:normal}
body[data-vit-modus="sykefravaer"] aside.learn .sf-laer-h{display:block;margin:6px 0 4px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] aside.learn .sf-ord-kort{margin:0 0 8px}body[data-vit-modus="sykefravaer"] aside.learn .sf-ord-eye{font:500 .6875rem/1rem var(--md-ref-typeface-plain);letter-spacing:.3px;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] aside.learn .sf-ord-term{font-weight:500}body[data-vit-modus="sykefravaer"] aside.learn .sf-ord-p{font:400 .875rem/1.3rem var(--md-ref-typeface-plain)}
body[data-vit-modus="sykefravaer"] aside.learn .sf-steg{margin:8px 0}body[data-vit-modus="sykefravaer"] aside.learn .sf-steg-h{font-weight:500;margin:0 0 4px}body[data-vit-modus="sykefravaer"] aside.learn .sf-fb{margin:6px 0}body[data-vit-modus="sykefravaer"] aside.learn .sf-fb .fl{font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="sykefravaer"] aside.learn .sf-fb .ft{font:400 .875rem/1.3rem var(--md-ref-typeface-plain)}body[data-vit-modus="sykefravaer"] aside.learn .sf-lab-dok-btn{display:inline-flex;align-items:center;gap:6px;margin-top:6px;padding:6px 12px;border-radius:var(--md-sys-shape-corner-full);border:1px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-primary);font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);cursor:pointer;font-family:inherit}
body[data-vit-modus="sykefravaer"] main.x .ord{color:var(--md-sys-color-primary);cursor:pointer}
/* Nøkkeltallraden på Sykefravær: tomt = skjul — uten synlige fliser tar ikke raden plass. */
body[data-vit-modus="sykefravaer"] main.x #kpiRute:not(:has(.flis:not([hidden]))){display:none}

/* ═══ 07.09 ARKIV V2 (mock 72) — motorens rader i M3-form ═══════════════════════════════════════════════════════
   arkiv-motor.js tegner .ak-hode/.ak-rad (rutenettrader), .ak-merke, .ak-last (Åpne), .laasemerke og tom-tilstanden i #akTom. */
body[data-vit-modus="arkiv"] main.x .ak-tabell{border-top:1px solid var(--md-sys-color-outline-variant)} /* ingen boks i boksen (boks-i-boks 07.09): radene skilles av hårlinjer */body[data-vit-modus="arkiv"] main.x .ak-tabell[hidden]{display:none}
body[data-vit-modus="arkiv"] main.x .ak-hode,.ak-rad{display:grid;grid-template-columns:minmax(0,2.3fr) 1.1fr .9fr 1.1fr auto auto;gap:14px;align-items:center;padding:12px 16px}
body[data-vit-modus="arkiv"] main.x .ak-hode{border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="arkiv"] main.x .ak-hode span{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="arkiv"] main.x .ak-rad{border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="arkiv"] main.x .ak-rad:last-child{border-bottom:0}body[data-vit-modus="arkiv"] main.x .ak-rad:hover{background:var(--md-sys-color-surface-container-low)}
body[data-vit-modus="arkiv"] main.x .cl{display:none;font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-bottom:2px}
body[data-vit-modus="arkiv"] main.x .c-tittel b{font-weight:500}body[data-vit-modus="arkiv"] main.x .c-tittel .c-sub{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:2px}body[data-vit-modus="arkiv"] main.x .laasemerke{display:inline-flex;align-items:center;gap:4px;margin-left:8px;font:500 .6875rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);vertical-align:middle}body[data-vit-modus="arkiv"] main.x .laasemerke svg{width:11px;height:11px;stroke:currentColor;fill:none;stroke-width:1.8}
body[data-vit-modus="arkiv"] main.x .c-type,.c-aar,.c-til{font-variant-numeric:tabular-nums;color:var(--md-sys-color-on-surface)}body[data-vit-modus="arkiv"] main.x .c-til{white-space:nowrap}
body[data-vit-modus="arkiv"] main.x .ak-merke{display:inline-flex;border-radius:var(--md-sys-shape-corner-full);padding:2px 10px;font:500 .75rem/1.25rem var(--md-ref-typeface-plain);white-space:nowrap;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="arkiv"] main.x .ak-merke.aar10{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
body[data-vit-modus="arkiv"] main.x .ak-last:hover{background:var(--md-sys-color-surface-container-low)}body[data-vit-modus="arkiv"] main.x .ak-last svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}body[data-vit-modus="arkiv"] main.x .ak-last .demo{font:500 .6875rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
@media(max-width:820px){body[data-vit-modus="arkiv"] main.x .ak-hode{display:none}body[data-vit-modus="arkiv"] main.x .ak-rad{grid-template-columns:1fr 1fr;gap:10px 14px;padding:14px 16px}body[data-vit-modus="arkiv"] main.x .cl{display:block}body[data-vit-modus="arkiv"] main.x .c-tittel{grid-column:1 / -1}body[data-vit-modus="arkiv"] main.x .c-last{grid-column:1 / -1}body[data-vit-modus="arkiv"] main.x .ak-last{width:100%;justify-content:center}}
body[data-vit-modus="arkiv"] main.x #akTom.tom{display:block;text-align:left}body[data-vit-modus="arkiv"] main.x #akTom .ak-tom-ring{display:none}body[data-vit-modus="arkiv"] main.x #akTom h3{margin:0 0 4px;font:500 1rem/1.5rem var(--md-ref-typeface-plain)}body[data-vit-modus="arkiv"] main.x #akTom p{margin:0;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="arkiv"] main.x .melding[hidden]{display:none}body[data-vit-modus="arkiv"] main.x .melding a{color:var(--md-sys-color-primary)}

/* ═══ 07.09 LUFT MELLOM DELENE (Kenneth: «Null luft, alt går inn i en stor mølje») ═══════════════════════════════
   Innpakninger som bare slår av/på en visning (.visning, Rekrutterings data-vis) er gjennomsiktige for kolonnens rytme —
   ellers står boksene inni uten lufta rundt. [hidden] vinner fortsatt (display:none!important i skallet). */
main.x .visning:not([hidden]){display:contents}
main.x section[data-vis]:not([hidden]){display:contents}
/* Sykefravær: trinn-boksen er en egen boks (#trinnBoks) — innholdet får ingen egen bakgrunn oppå, og navnet står i boksens overskrift. */
body[data-vit-modus="sykefravaer"] main.x .trinnboks{background:transparent;border-radius:0;padding:0;margin:0}
body[data-vit-modus="sykefravaer"] main.x #trinnBoks .trappen-detalj-h{display:none}

/* ═══ 07.09 RAPPORT-GENERATOR V2 (mock 69) — verktøylinja, og motorens rapport i v2-form ═══════════════════════════
   rapport-motor.js tegner rapporten (.rg-del kapitler, .rg-sec seksjoner med .sec-head/.kpi-grid/.rg-table/.chart-card),
   periodevelgeren (.rgp-*), innholdslista (.rgi-rad) og Arkivér-panelet. Sidas egen <style> er v1s dokument-CSS (print);
   reglene her vinner på skjerm ved spesifisitet. */
body[data-vit-modus="rapport-generator"] main.x .verktoy{display:flex;align-items:center;gap:4px;padding:6px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container);width:fit-content;max-width:100%;flex-wrap:wrap}
body[data-vit-modus="rapport-generator"] main.x .verktoy button,body[data-vit-modus="rapport-generator"] main.x .verktoy a{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 16px 0 12px;border:0;border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-on-surface);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);cursor:pointer;text-decoration:none;transition:background .2s,border-radius .3s cubic-bezier(.2,0,0,1)}
body[data-vit-modus="rapport-generator"] main.x .verktoy button:hover,body[data-vit-modus="rapport-generator"] main.x .verktoy a:hover{background:var(--md-sys-color-surface-container-high)}body[data-vit-modus="rapport-generator"] main.x .verktoy button:active{border-radius:var(--md-sys-shape-corner-small)}body[data-vit-modus="rapport-generator"] main.x .verktoy button.on{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
body[data-vit-modus="rapport-generator"] main.x .verktoy .ms{color:var(--md-sys-color-primary)}body[data-vit-modus="rapport-generator"] main.x .verktoy button.fyll{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}body[data-vit-modus="rapport-generator"] main.x .verktoy button.fyll .ms{color:inherit}
body[data-vit-modus="rapport-generator"] main.x .verktoy .skille{width:1px;height:24px;background:var(--md-sys-color-outline-variant);margin:0 4px}
body[data-vit-modus="rapport-generator"] main.x .verktoy .chip{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);font:500 .8125rem/1rem var(--md-ref-typeface-plain);margin-left:4px}body[data-vit-modus="rapport-generator"] main.x .verktoy .chip .ms{color:inherit}
body[data-vit-modus="rapport-generator"] main.x .felter{display:flex;flex-direction:column;gap:12px}body[data-vit-modus="rapport-generator"] main.x .felter label{display:flex;flex-direction:column;gap:4px;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rapport-generator"] main.x .felter input{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest);max-width:100%}body[data-vit-modus="rapport-generator"] main.x .felter input:focus{outline:2px solid var(--md-sys-color-primary);outline-offset:0;border-color:transparent}
body[data-vit-modus="rapport-generator"] main.x .handling{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}body[data-vit-modus="rapport-generator"] main.x .del{margin-top:16px;padding-top:14px;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="rapport-generator"] main.x .del h3{margin:0 0 4px;font:500 .875rem/1.25rem var(--md-ref-typeface-plain)}
body[data-vit-modus="rapport-generator"] main.x #rgDoc{display:contents}body[data-vit-modus="rapport-generator"] main.x .rg-doc,.rg-doc-boks{background:transparent;border:0;border-radius:0;padding:0;overflow:visible}
body[data-vit-modus="rapport-generator"] main.x #mg-panel{display:flex;flex-direction:column;gap:28px}
body[data-vit-modus="rapport-generator"] main.x .rg-del{margin:8px 0 -12px;padding:0;border:0}body[data-vit-modus="rapport-generator"] main.x .rg-del-eye{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary);text-transform:none}body[data-vit-modus="rapport-generator"] main.x .rg-del-tittel{margin:2px 0 0;font:400 1.75rem/2.25rem var(--md-ref-typeface-brand);letter-spacing:0;color:var(--md-sys-color-on-surface)}
body[data-vit-modus="rapport-generator"] main.x .rg-sec{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-extra-large);padding:20px 24px;margin:0;box-shadow:none}
body[data-vit-modus="rapport-generator"] main.x .rg-sec > .sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 16px;padding:0;border:0}
body[data-vit-modus="rapport-generator"] main.x .sec-num{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rapport-generator"] main.x .sec-title{flex:1;min-width:0;margin:0;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain);letter-spacing:0;color:var(--md-sys-color-on-surface)}
body[data-vit-modus="rapport-generator"] main.x .sec-tag{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--md-sys-shape-corner-full);font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:0;text-transform:none;border:0}body[data-vit-modus="rapport-generator"] main.x .sec-tag.data{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}body[data-vit-modus="rapport-generator"] main.x .sec-tag.nodata{background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rapport-generator"] main.x .sec-tag.anslag{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);border:0}
body[data-vit-modus="rapport-generator"] main.x .kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0}body[data-vit-modus="rapport-generator"] main.x .kpi-card{background:var(--md-sys-color-surface-container-low);border:0;border-radius:var(--md-sys-shape-corner-large);padding:14px 16px;box-shadow:none}
body[data-vit-modus="rapport-generator"] main.x .kpi-lbl{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);text-transform:none;margin:0 0 6px}body[data-vit-modus="rapport-generator"] main.x .kpi-val{font:400 1.625rem/2rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface);letter-spacing:0;font-variant-numeric:tabular-nums}body[data-vit-modus="rapport-generator"] main.x .kpi-val.is-nodata{color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rapport-generator"] main.x .kpi-delta{display:inline-flex;margin-top:6px;padding:2px 8px;border-radius:var(--md-sys-shape-corner-full);font:500 .75rem/1rem var(--md-ref-typeface-plain)}
body[data-vit-modus="rapport-generator"] main.x .chart-card{background:transparent;border:0;border-radius:0;padding:0;box-shadow:none}body[data-vit-modus="rapport-generator"] main.x .cc-title{font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="rapport-generator"] main.x .cc-sub,.cc-foot{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rapport-generator"] main.x .rg-table-wrap{border:0;border-radius:0}body[data-vit-modus="rapport-generator"] main.x .rg-table{font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="rapport-generator"] main.x .rg-table th{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);text-transform:none;background:transparent;border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="rapport-generator"] main.x .rg-table td{border-bottom:1px solid var(--md-sys-color-outline-variant);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="rapport-generator"] main.x .nodata-banner{background:transparent;border:0;border-radius:0;padding:0;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)} /* flat: ingen boks i boksen */
body[data-vit-modus="rapport-generator"] main.x .info-panel{background:transparent;border:0;border-top:1px solid var(--md-sys-color-outline-variant);border-radius:0;padding:14px 0 0;margin-top:14px;box-shadow:none} /* flat: ingen boks i boksen */
body[data-vit-modus="rapport-generator"] main.x .rgp-typer{display:inline-flex;gap:0;margin:0 0 14px;padding:4px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container)}
body[data-vit-modus="rapport-generator"] main.x .rgp-typer .rgp-knapp{height:36px;padding:0 18px;border:0;border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-on-surface);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);cursor:pointer;font-family:inherit}body[data-vit-modus="rapport-generator"] main.x .rgp-typer .rgp-knapp.on{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
body[data-vit-modus="rapport-generator"] main.x .rgp-detalj{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px}body[data-vit-modus="rapport-generator"] main.x .rgp-steg{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);text-transform:none}
body[data-vit-modus="rapport-generator"] main.x .rgp-aar .rgp-knapp{height:32px;padding:0 14px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-on-surface);font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);cursor:pointer;font-family:inherit}body[data-vit-modus="rapport-generator"] main.x .rgp-aar .rgp-knapp.on{background:var(--md-sys-color-secondary-container);border-color:transparent;color:var(--md-sys-color-on-secondary-container)}
body[data-vit-modus="rapport-generator"] main.x .rgp-detalj select{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:6px 12px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest)}body[data-vit-modus="rapport-generator"] main.x .rgp-note{display:block;margin-top:6px;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rapport-generator"] main.x #rgInnhold{display:block}body[data-vit-modus="rapport-generator"] main.x .rgi-rad{display:flex;align-items:flex-start;gap:12px;padding:10px 0;margin:0;border:0;border-bottom:1px solid var(--md-sys-color-outline-variant);border-radius:0;background:transparent;cursor:pointer}body[data-vit-modus="rapport-generator"] main.x .rgi-rad:last-child{border-bottom:0}body[data-vit-modus="rapport-generator"] main.x .rgi-rad:hover{background:transparent}
body[data-vit-modus="rapport-generator"] main.x .rgi-rad input{width:18px;height:18px;margin:3px 0 0;accent-color:var(--md-sys-color-primary)}body[data-vit-modus="rapport-generator"] main.x .rgi-navn{font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);margin:0}body[data-vit-modus="rapport-generator"] main.x .rgi-hjelp{font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="rapport-generator"] main.x .rgi-hjelp strong{font-weight:500;color:var(--md-sys-color-on-surface)}body[data-vit-modus="rapport-generator"] main.x .rgi-hjelp a{color:var(--md-sys-color-primary)}
body[data-vit-modus="rapport-generator"] main.x .rgi-sperret{opacity:.55;cursor:not-allowed}
body[data-vit-modus="rapport-generator"] main.x #mineRapporter .sec-head{margin:0 0 12px}body[data-vit-modus="rapport-generator"] main.x .mr-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);color:var(--md-sys-color-on-surface);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="rapport-generator"] main.x .mr-item svg{width:16px;height:16px;color:var(--md-sys-color-primary)}body[data-vit-modus="rapport-generator"] main.x .mr-pil{margin-left:auto;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary)}body[data-vit-modus="rapport-generator"] main.x .mr-tom{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:0}body[data-vit-modus="rapport-generator"] main.x .mr-tom a{color:var(--md-sys-color-primary)}
body[data-vit-modus="rapport-generator"] main.x #rgArkiv p{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);margin:0 0 10px}body[data-vit-modus="rapport-generator"] main.x #rgArkiv label{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="rapport-generator"] main.x #rgArkiv input[type=text]{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest)}
body[data-vit-modus="rapport-generator"] main.x #rgArkiv button{display:inline-flex;align-items:center;height:36px;padding:0 18px;border:0;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);cursor:pointer;font-family:inherit}body[data-vit-modus="rapport-generator"] main.x #rgArkiv button:disabled{opacity:.38;cursor:default}
body[data-vit-modus="rapport-generator"] main.x #rapportForside .rapport-forside{max-width:100%;margin:0 auto}body[data-vit-modus="rapport-generator"] main.x .blokk.ark{background:transparent;border:0;padding:0;box-shadow:none}body[data-vit-modus="rapport-generator"] main.x .blokk.ark .bh{padding:0 4px}body[data-vit-modus="rapport-generator"] main.x .blokk.ark .fot{padding:0 4px}
@media(max-width:920px){body[data-vit-modus="rapport-generator"] main.x .kpi-grid{grid-template-columns:1fr 1fr}body[data-vit-modus="rapport-generator"] main.x .verktoy button,body[data-vit-modus="rapport-generator"] main.x .verktoy a{padding:0 12px 0 10px}}
@media(max-width:600px){body[data-vit-modus="rapport-generator"] main.x .kpi-grid{grid-template-columns:1fr}body[data-vit-modus="rapport-generator"] main.x .rg-sec{padding:16px}}
body[data-vit-modus="rapport-generator"] main.x #mgMarg,body[data-vit-modus="rapport-generator"] main.x #termPopup{display:none}

/* ═══ 07.09 BÆREKRAFT V2 (mock 71) — motorens vedlegg i v2-form på skjerm ═══════════════════════════════════════════
   baerekraft-motor.js tegner .kpi-grid/.kpi-velg/.sec-head/.gexpl/.chart-card(.andel)/.rg-card(.regne .rrad)/.sumrad/
   .rg-table/.kun-print i #vedleggPanel. På skjerm vises nøkkeltall og andeler i helten/flisene/kaka over, så de skjules her;
   på papir gjelder sidas dokument-CSS (v1 ordrett) og alt står. */
@media screen{body[data-vit-modus="baerekraft"] main.x #vedleggPanel .sec-head.skjul-skjerm,body[data-vit-modus="baerekraft"] main.x #vedleggPanel .kpi-grid,body[data-vit-modus="baerekraft"] main.x #vedleggPanel .chart-card,body[data-vit-modus="baerekraft"] main.x #vedleggPanel .gexpl,body[data-vit-modus="baerekraft"] main.x #vedleggPanel > .sec-head:first-of-type{display:none}}
body[data-vit-modus="baerekraft"] main.x #vedleggPanel{display:flex;flex-direction:column;gap:16px}
body[data-vit-modus="baerekraft"] main.x #vedleggPanel .sec-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:8px 0 0;padding:0;border:0}body[data-vit-modus="baerekraft"] main.x #vedleggPanel .sec-title{margin:0;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);letter-spacing:0}
body[data-vit-modus="baerekraft"] main.x #vedleggPanel .sec-tag{margin-left:auto;display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:0;text-transform:none}
body[data-vit-modus="baerekraft"] main.x .kpi-velg{margin:0}body[data-vit-modus="baerekraft"] main.x .kpi-velg summary{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 16px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-on-surface);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);cursor:pointer}
body[data-vit-modus="baerekraft"] main.x .velg-meny{position:absolute;z-index:20;min-width:260px;margin-top:6px;padding:8px;background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-medium);box-shadow:none}body[data-vit-modus="baerekraft"] main.x .velg-meny label{display:flex;align-items:center;gap:10px;padding:8px 10px;min-height:40px;border-radius:var(--md-sys-shape-corner-medium);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="baerekraft"] main.x .velg-meny label:hover{background:var(--md-sys-color-surface-container-low)}body[data-vit-modus="baerekraft"] main.x .velg-meny input{accent-color:var(--md-sys-color-primary)}
body[data-vit-modus="baerekraft"] main.x .rg-card{background:transparent;border:0;border-top:1px solid var(--md-sys-color-outline-variant);border-radius:0;padding:16px 0 0;margin:0;box-shadow:none}body[data-vit-modus="baerekraft"] main.x .rg-card:first-of-type{border-top:0;padding-top:0}
body[data-vit-modus="baerekraft"] main.x .kb-hode{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}body[data-vit-modus="baerekraft"] main.x .kb-hode h3{margin:0;font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);letter-spacing:0}body[data-vit-modus="baerekraft"] main.x .kb-hode .scope{font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="baerekraft"] main.x .kb-fortalt{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);max-width:70ch;margin:6px 0 0}body[data-vit-modus="baerekraft"] main.x .kb-fortalt b{color:var(--md-sys-color-on-surface);font-weight:500}
body[data-vit-modus="baerekraft"] main.x .regne{margin:12px 0 0;background:transparent;border:0;border-radius:0;padding:0}
body[data-vit-modus="baerekraft"] main.x .rrad{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:16px;align-items:center;padding:10px 0;border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="baerekraft"] main.x .rrad:last-child{border-bottom:0}body[data-vit-modus="baerekraft"] main.x .rrad.svar{background:transparent}
body[data-vit-modus="baerekraft"] main.x .rop{font:400 1rem/1.5rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface-variant);text-align:center}body[data-vit-modus="baerekraft"] main.x .rnavn{font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="baerekraft"] main.x .rkilde{display:block;font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:2px;letter-spacing:0;text-transform:none}
body[data-vit-modus="baerekraft"] main.x .rverdi{font:400 1rem/1.5rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface);font-variant-numeric:tabular-nums;white-space:nowrap}body[data-vit-modus="baerekraft"] main.x .rverdi .enh,body[data-vit-modus="baerekraft"] main.x .kpi-val .enh{font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-left:4px}
body[data-vit-modus="baerekraft"] main.x .mengde input{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);width:110px;padding:6px 10px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest);text-align:right}body[data-vit-modus="baerekraft"] main.x .mengde input:focus{outline:2px solid var(--md-sys-color-primary);outline-offset:0;border-color:transparent}
main.x .mk{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface-variant);font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:0;text-transform:none}main.x .mk.ok{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="baerekraft"] main.x .met-velg{display:flex;gap:6px;margin-top:6px}body[data-vit-modus="baerekraft"] main.x .met-velg button{height:28px;padding:0 12px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-on-surface);font:500 .75rem/1rem var(--md-ref-typeface-plain);cursor:pointer;letter-spacing:0;font-family:inherit}body[data-vit-modus="baerekraft"] main.x .met-velg button[aria-pressed="true"]{background:var(--md-sys-color-secondary-container);border-color:transparent;color:var(--md-sys-color-on-secondary-container)}
body[data-vit-modus="baerekraft"] main.x .kd{background:none;border:0;padding:0;font:inherit;color:var(--md-sys-color-primary);cursor:pointer;border-bottom:1px dotted var(--md-sys-color-primary)}body[data-vit-modus="baerekraft"] main.x .kb-fot{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:10px 0 0}body[data-vit-modus="baerekraft"] main.x .kb-fot .lenke{color:var(--md-sys-color-primary);font:inherit;background:none;border:0;padding:0;cursor:pointer}
body[data-vit-modus="baerekraft"] main.x .sumrad{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;background:transparent;border:0;border-top:1px solid var(--md-sys-color-outline-variant);border-radius:0;padding:14px 0 0;margin:0}body[data-vit-modus="baerekraft"] main.x .sumrad .sl{font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="baerekraft"] main.x .sumrad .grunn{font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="baerekraft"] main.x .sumrad .st{margin-left:auto;font:400 1.375rem/1.75rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="baerekraft"] main.x .rg-table{font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="baerekraft"] main.x .rg-table th{font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);background:transparent;border-bottom:1px solid var(--md-sys-color-outline-variant);letter-spacing:0;text-transform:none}body[data-vit-modus="baerekraft"] main.x .rg-table td{border-bottom:1px solid var(--md-sys-color-outline-variant);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="baerekraft"] main.x #vedleggPanel select{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:6px 10px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest)}
body[data-vit-modus="baerekraft"] main.x .kakeflate{height:320px;min-height:320px}body[data-vit-modus="baerekraft"] main.x #fordDel{margin-top:12px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline-variant);display:flex;gap:10px;flex-wrap:wrap}
body[data-vit-modus="baerekraft"] main.x #rapportForside.kun-print{display:none}
/* ── 11.09 MOCK 95: «Kontoene Vitin leser» og «Mer å rapportere på» ─────────────────────────────────────────
   Kilde per boks: .kilde (hode .kh med navn, scope og sum) og kontoradene .konto (nr · navn · kr · husets .bryter).
   .konto.av er tatt ut av regnestykket (gjennomstreket), .konto.skjult er foldet bak «Vis N til». .velg er lista
   «Legg til konto». .punkt er ett VSME-punkt: kode · navn + det Vitin har · status (.mk). Tekstknappen .btn-tekst er
   M3s text button (40 px, ingen ramme) og ligger globalt under main.x. */
main.x .btn-tekst{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 12px;border:0;background:none;border-radius:var(--md-sys-shape-corner-full);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);cursor:pointer;font-family:inherit}
main.x .btn-tekst:hover{background:var(--md-sys-color-surface-container-low)}
main.x .btn-tekst .ms{font-size:var(--ikon-lg)}
body[data-vit-modus="baerekraft"] main.x .kilde{padding:14px 0;border-top:1px solid var(--md-sys-color-outline-variant)}
body[data-vit-modus="baerekraft"] main.x .kilde:first-child{border-top:0;padding-top:0}
body[data-vit-modus="baerekraft"] main.x .kh{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
body[data-vit-modus="baerekraft"] main.x .kh h3{margin:0;font:500 1.0625rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="baerekraft"] main.x .kh .scope{font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="baerekraft"] main.x .kh .sum{margin-left:auto;font:400 1rem/1.5rem var(--md-ref-typeface-brand);font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--md-sys-color-on-surface)}
body[data-vit-modus="baerekraft"] main.x .kh .sum small{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);text-align:right}
body[data-vit-modus="baerekraft"] main.x .konto{display:grid;grid-template-columns:52px minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:7px 0}
body[data-vit-modus="baerekraft"] main.x .konto .nr{font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);font-variant-numeric:tabular-nums}
body[data-vit-modus="baerekraft"] main.x .konto .navn{font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="baerekraft"] main.x .konto .kr{font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="baerekraft"] main.x .konto.av .navn,body[data-vit-modus="baerekraft"] main.x .konto.av .kr,body[data-vit-modus="baerekraft"] main.x .konto.av .nr{opacity:.45;text-decoration:line-through}
body[data-vit-modus="baerekraft"] main.x .konto.skjult{display:none}
body[data-vit-modus="baerekraft"] main.x .tomk{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:4px 0 8px;max-width:70ch}
body[data-vit-modus="baerekraft"] main.x .legg{margin-top:6px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
body[data-vit-modus="baerekraft"] main.x .velg{margin-top:10px;padding:12px 16px;border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-surface-container-low)}
body[data-vit-modus="baerekraft"] main.x .velg .eye{display:block;margin-bottom:6px}
body[data-vit-modus="baerekraft"] main.x .velg label{display:grid;grid-template-columns:24px 52px minmax(0,1fr) auto;gap:12px;align-items:center;padding:8px 0;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);cursor:pointer}
body[data-vit-modus="baerekraft"] main.x .velg label .nr{font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="baerekraft"] main.x .velg label .kr{font-variant-numeric:tabular-nums;color:var(--md-sys-color-on-surface-variant);white-space:nowrap}
body[data-vit-modus="baerekraft"] main.x .velg input{width:18px;height:18px;accent-color:var(--md-sys-color-primary)}
body[data-vit-modus="baerekraft"] main.x .velg .knapper{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}
body[data-vit-modus="baerekraft"] main.x #kilder[aria-busy="true"]{opacity:.6;pointer-events:none}
body[data-vit-modus="baerekraft"] main.x .punkt{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:6px 16px;align-items:start;padding:12px 0;border-top:1px solid var(--md-sys-color-outline-variant)}
body[data-vit-modus="baerekraft"] main.x .punkt:first-child{border-top:0}
body[data-vit-modus="baerekraft"] main.x .punkt .kode{font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);padding-top:2px}
body[data-vit-modus="baerekraft"] main.x .punkt .navn{font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="baerekraft"] main.x .punkt .har{display:block;font:400 .875rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);max-width:64ch}
body[data-vit-modus="baerekraft"] main.x .punkt .stat{display:flex;flex-direction:column;align-items:flex-end;gap:4px;white-space:nowrap}
@media(max-width:920px){body[data-vit-modus="baerekraft"] main.x .konto{grid-template-columns:52px minmax(0,1fr) auto}body[data-vit-modus="baerekraft"] main.x .konto .kr{grid-column:2;font-size:.8125rem}body[data-vit-modus="baerekraft"] main.x .punkt{grid-template-columns:44px minmax(0,1fr)}body[data-vit-modus="baerekraft"] main.x .punkt .stat{grid-column:2;align-items:flex-start}}
@media print{body[data-vit-modus="baerekraft"] main.x #rapportForside.kun-print{display:block}}
@media(max-width:920px){body[data-vit-modus="baerekraft"] main.x .rrad{grid-template-columns:18px minmax(0,1fr) auto;gap:10px}body[data-vit-modus="baerekraft"] main.x .kakeflate{height:260px;min-height:260px}}

/* ═══ 07.09 PAPIRET: hjelpeknappen «?» sto på hvert ark i PDF-en. «body .vsh-hjelp{display:inline-flex!important}» (kortmeny-
   regelen) vant over print-regelen ved spesifisitet og rekkefølge. Målt i print-media: display flex → none med denne. Står sist. */
@media print{body .vsh-hjelp{display:none!important}}

/* ═══ 07.09 DEL VITIN V2 (mock 73) — motorens hvorfor-tekst, resultat og delingsrader i v2-form ═══════════════════════
   del-vitin-motor.js tegner #bHvorfor (.hv-inn/.hv-t), #resultBox (.r-ok/.r-title/.r-sub/.r-codes/.r-code-row/.copy-btn/
   .r-link/.r-warn/.r-actions .btn) og #shareList (.share-row .sh-main/.sh-who/.sh-code/.sh-meta/.sh-status/.sh-act). */
body[data-vit-modus="del-vitin"] main.x .hvorfor{margin-top:14px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="del-vitin"] main.x .hvorfor:empty{display:none}body[data-vit-modus="del-vitin"] main.x .hv-inn{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary);margin-bottom:4px}body[data-vit-modus="del-vitin"] main.x .hv-t{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);max-width:72ch}
body[data-vit-modus="del-vitin"] main.x .qn{display:none}
body[data-vit-modus="del-vitin"] main.x textarea.felt{display:block;width:100%;min-height:96px;resize:vertical;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:10px 12px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest);box-sizing:border-box}body[data-vit-modus="del-vitin"] main.x textarea.felt:focus{outline:2px solid var(--md-sys-color-primary);outline-offset:0;border-color:transparent}
body[data-vit-modus="del-vitin"] main.x .forhaand{margin-top:12px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.4rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="del-vitin"] main.x .forhaand .eye{display:block;margin-bottom:4px}
body[data-vit-modus="del-vitin"] main.x #notatStep.fremhev{border-color:var(--md-sys-color-primary)}
body[data-vit-modus="del-vitin"] main.x .lag{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
body[data-vit-modus="del-vitin"] main.x #resultBox:not(.on){display:none}
body[data-vit-modus="del-vitin"] main.x .r-ok{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary)}body[data-vit-modus="del-vitin"] main.x .r-title{margin:2px 0 0;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="del-vitin"] main.x .r-sub{margin:4px 0 14px;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="del-vitin"] main.x .r-codes{display:flex;flex-direction:column}body[data-vit-modus="del-vitin"] main.x .r-code-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="del-vitin"] main.x .r-code-l{font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="del-vitin"] main.x .r-code-v{display:inline-flex;align-items:center;gap:10px;font:400 1.375rem/1.75rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface);letter-spacing:.04em;font-variant-numeric:tabular-nums}
body[data-vit-modus="del-vitin"] main.x .copy-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-primary);font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);cursor:pointer;text-decoration:none;font-family:inherit;height:28px;padding:0 12px;font-size:.75rem;letter-spacing:0}body[data-vit-modus="del-vitin"] main.x .copy-btn.done{background:var(--md-sys-color-secondary-container);border-color:transparent;color:var(--md-sys-color-on-secondary-container)}
body[data-vit-modus="del-vitin"] main.x .r-link{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="del-vitin"] main.x .r-link svg{width:16px;height:16px;color:var(--md-sys-color-on-surface-variant);flex-shrink:0}body[data-vit-modus="del-vitin"] main.x .r-link .lk{flex:1;min-width:0;font:400 .875rem/1.25rem var(--font-mono, ui-monospace);color:var(--md-sys-color-on-surface);overflow-wrap:anywhere}
body[data-vit-modus="del-vitin"] main.x .r-warn{display:flex;gap:10px;align-items:flex-start;padding:12px 0;border-top:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="del-vitin"] main.x .r-warn b{color:var(--md-sys-color-on-surface);font-weight:500}body[data-vit-modus="del-vitin"] main.x .r-warn svg{width:16px;height:16px;flex-shrink:0;margin-top:3px;color:var(--md-sys-color-primary)}
body[data-vit-modus="del-vitin"] main.x .r-actions{display:flex;gap:10px;flex-wrap:wrap;padding-top:14px;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="del-vitin"] main.x .r-actions .btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-primary);font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);cursor:pointer;text-decoration:none;font-family:inherit;height:36px;padding:0 18px;font-size:.875rem}body[data-vit-modus="del-vitin"] main.x .r-actions .btn-dark{background:var(--md-sys-color-primary);border-color:transparent;color:var(--md-sys-color-on-primary)}
body[data-vit-modus="del-vitin"] main.x .share-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px 16px;align-items:center;padding:12px 0;border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="del-vitin"] main.x .share-row:last-child{border-bottom:0}
body[data-vit-modus="del-vitin"] main.x .sh-who{font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="del-vitin"] main.x .sh-code{font:400 .8125rem/1.25rem var(--font-mono, ui-monospace);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="del-vitin"] main.x .sh-meta{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="del-vitin"] main.x .sh-dot{margin:0 4px;color:var(--md-sys-color-outline-variant)}
body[data-vit-modus="del-vitin"] main.x .sh-status{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);font:500 .75rem/1rem var(--md-ref-typeface-plain);white-space:nowrap}body[data-vit-modus="del-vitin"] main.x .sh-status.expired{background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="del-vitin"] main.x .sh-actions{display:flex;gap:6px;flex-wrap:wrap}/* Delingsknappene er husets .btn-ut liten / .btn-ut.fare / .btn-tekst (12.09, form-vakta: de fantes bare naar en deling finnes, og gikk under radaren til bruks-vakta laget en). */body[data-vit-modus="del-vitin"] main.x .sh-act:disabled{opacity:.38;cursor:default}
body[data-vit-modus="del-vitin"] main.x .sh-empty,body[data-vit-modus="del-vitin"] main.x #shareList > div[style]{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);padding:0!important;font-size:.9375rem!important}
/* Lista over delinger tar aldri slutt (bruks-revisjonen 20.09): de avsluttede
   ligger bak denne ene linja. Husets .btn-tekst, men i full bredde som en
   listerad — og i stilarket, ikke som innebygd stil (form-vakta, 20.09). */
body[data-vit-modus="del-vitin"] main.x .sh-historikk{display:block;width:100%;text-align:left;padding:12px 0;font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);border-top:1px solid var(--md-sys-color-outline-variant)}
@media(max-width:680px){body[data-vit-modus="del-vitin"] main.x .share-row{grid-template-columns:1fr}body[data-vit-modus="del-vitin"] main.x .lag{align-items:stretch}body[data-vit-modus="del-vitin"] main.x .lag .btn-fyll{justify-content:center}}
body[data-vit-modus="del-vitin"] main.x #panel,body[data-vit-modus="del-vitin"] main.x #sokInp{display:none}

/* ═══ 07.09 VERDIVURDERING V2 (mock 74) — motorens tabeller, vurderinger, bransje og tom-tilstander i v2-form ═════════
   verdivurdering-motor.js skriver til id-ene i sida; den tegner selv .vbm-graf/.vbm-dom (VitViz.stolper), fyller
   .vv-bransje[data-vv-bransje] og setter body.vv-tom / body.vv-vent. Ingen bento-navigasjon: de seks delene står etter hverandre. */
body[data-vit-modus="verdivurdering"] main.x .vv-tom-panel,body[data-vit-modus="verdivurdering"] main.x .vv-vent-panel{display:none}body.vv-tom[data-vit-modus="verdivurdering"] main.x .vv-tom-panel,body.vv-vent[data-vit-modus="verdivurdering"] main.x .vv-vent-panel{display:block}
body.vv-tom[data-vit-modus="verdivurdering"] main.x .vv-innhold,body.vv-vent[data-vit-modus="verdivurdering"] main.x .vv-innhold{display:none}
body[data-vit-modus="verdivurdering"] main.x .vv-tom-panel h2,body[data-vit-modus="verdivurdering"] main.x .vv-vent-panel h2{margin:0 0 8px;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain)}body[data-vit-modus="verdivurdering"] main.x .vv-tom-panel .note,body[data-vit-modus="verdivurdering"] main.x .vv-vent-panel .note{font:400 .875rem/1.35rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:8px 0 0}
body[data-vit-modus="verdivurdering"] main.x .vv-graf{position:relative;width:100%}body[data-vit-modus="verdivurdering"] main.x #vvKortFotball{width:100%;height:240px;margin:4px 0}body[data-vit-modus="verdivurdering"] main.x .chart-hjelp{margin:0 0 6px}
body[data-vit-modus="verdivurdering"] main.x .bp-steg h3{margin:16px 0 8px;font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="verdivurdering"] main.x .bp-steg h3:first-of-type{margin-top:4px}
body[data-vit-modus="verdivurdering"] main.x .bp-steg table{width:100%;border-collapse:collapse;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="verdivurdering"] main.x .bp-steg th{text-align:right;padding:8px 10px;font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="verdivurdering"] main.x .bp-steg th:first-child{text-align:left}
body[data-vit-modus="verdivurdering"] main.x .bp-steg td{padding:9px 10px;text-align:right;border-bottom:1px solid var(--md-sys-color-outline-variant);color:var(--md-sys-color-on-surface);vertical-align:top;font-variant-numeric:tabular-nums}body[data-vit-modus="verdivurdering"] main.x .bp-steg td:first-child{text-align:left}body[data-vit-modus="verdivurdering"] main.x .bp-steg tr:last-child td{border-bottom:0}body[data-vit-modus="verdivurdering"] main.x .bp-steg tr.summary td{font-weight:500;border-top:1px solid var(--md-sys-color-outline);border-bottom:0}
body[data-vit-modus="verdivurdering"] main.x .bp-steg .tabellrull{overflow-x:auto}
body[data-vit-modus="verdivurdering"] main.x .vv-box{margin:14px 0 0;padding:12px 0 0;border-top:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="verdivurdering"] main.x .vv-eye{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary);margin-bottom:4px}
body[data-vit-modus="verdivurdering"] main.x .kilde-linje,body[data-vit-modus="verdivurdering"] main.x .chart-hjelp{margin:12px 0 0;padding:0;background:transparent;border:0;border-radius:0;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)} /* flate linjer — skallets delte .kilde-linje/.chart-hjelp er bokser, her er de tekst (boks-i-boks) */body[data-vit-modus="verdivurdering"] main.x .kilde-linje a{color:var(--md-sys-color-primary)}body[data-vit-modus="verdivurdering"] main.x .tag-kilde{display:inline-flex;align-items:center;height:20px;padding:0 8px;margin-right:6px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface-variant);font:500 .6875rem/1rem var(--md-ref-typeface-plain)}
body[data-vit-modus="verdivurdering"] main.x .m-ute{font-style:italic;color:var(--md-sys-color-on-surface-variant);font-weight:400}body[data-vit-modus="verdivurdering"] main.x .score-val{font-weight:500;color:var(--md-sys-color-primary)}
body[data-vit-modus="verdivurdering"] main.x .metode-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;margin:8px 0}body[data-vit-modus="verdivurdering"] main.x .metode-kort{padding:0}body[data-vit-modus="verdivurdering"] main.x .metode-kort h5{margin:0 0 2px;font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="verdivurdering"] main.x .metode-kort p{margin:0;font:400 .875rem/1.35rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="verdivurdering"] main.x .formula-block{margin:8px 0 12px;padding:10px 0 0;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="verdivurdering"] main.x .formula-block .flbl{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary);margin-bottom:4px}body[data-vit-modus="verdivurdering"] main.x .formula-block code{display:block;white-space:pre-wrap;font:400 .875rem/1.35rem var(--font-mono, ui-monospace);color:var(--md-sys-color-on-surface)}body[data-vit-modus="verdivurdering"] main.x .formula-block .where{margin-top:6px;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="verdivurdering"] main.x .caveat-list{list-style:none;padding:0;margin:8px 0 0}body[data-vit-modus="verdivurdering"] main.x .caveat-list li{position:relative;padding:8px 0 8px 22px;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="verdivurdering"] main.x .caveat-list li::before{content:'✕';position:absolute;left:2px;top:9px;font:500 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary)}body[data-vit-modus="verdivurdering"] main.x .caveat-list li strong{color:var(--md-sys-color-on-surface);font-weight:500}
body[data-vit-modus="verdivurdering"] main.x .ref-list{list-style:none;padding:0;margin:8px 0 0}body[data-vit-modus="verdivurdering"] main.x .ref-list li{padding:9px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .875rem/1.35rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="verdivurdering"] main.x .ref-list li strong{display:block;color:var(--md-sys-color-on-surface);font-weight:500}body[data-vit-modus="verdivurdering"] main.x .ref-list li a{color:var(--md-sys-color-primary);font:500 .8125rem/1.25rem var(--md-ref-typeface-plain)}body[data-vit-modus="verdivurdering"] main.x .ref-date{display:inline-block;margin-left:6px;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="verdivurdering"] main.x .bp-steg p{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="verdivurdering"] main.x .bp-steg p.lede{color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="verdivurdering"] main.x #vbmRader .vbm-graf{width:100%;height:220px;margin:0 0 8px}body[data-vit-modus="verdivurdering"] main.x .vbm-dom{margin:6px 0 0;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="verdivurdering"] main.x .vbm-dom b{font-weight:500}
body[data-vit-modus="verdivurdering"] main.x .vvb-velgerrad{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px}body[data-vit-modus="verdivurdering"] main.x .vvb-velgerrad label{display:inline-flex;align-items:center;gap:8px;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="verdivurdering"] main.x .vvb-velgerrad select{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:6px 10px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest);max-width:100%}
body[data-vit-modus="verdivurdering"] main.x .vvb-reset{display:inline-flex;align-items:center;height:32px;padding:0 14px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-primary);font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);cursor:pointer;font-family:inherit}
body[data-vit-modus="verdivurdering"] main.x .vvb-linje{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);margin:0 0 6px}body[data-vit-modus="verdivurdering"] main.x .vvb-linje strong{font-weight:500}body[data-vit-modus="verdivurdering"] main.x .vvb-note{font:400 .875rem/1.35rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:0}
@media(max-width:700px){body[data-vit-modus="verdivurdering"] main.x .metode-grid{grid-template-columns:1fr}body[data-vit-modus="verdivurdering"] main.x #vvKortFotball{height:200px}}
body[data-vit-modus="verdivurdering"] main.x #panel{display:none}

/* ═══ 07.09 TO-KOLONNEN MED ÉN SYNLIG NABO: en boks som står alene i .to (naboen er hidden — Verdivurderings benchmark uten treff,
   Sykefraværs visninger) skal fylle bredden, ikke stå halvbred ved siden av tomrom. Global regel for alle .to. */
main.x .to:not(:has(> :not([hidden]) ~ :not([hidden]))){grid-template-columns:1fr}

/* ═══ 07.09 KONTO V2 (DOKUMENTER, KUNDESERVICE) ═══════════════════════════════════════════════════════════════════
 */
body[data-vit-modus="dokumenter"] main.x .rad.dok{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:12px 0;text-decoration:none;color:inherit}body[data-vit-modus="dokumenter"] main.x .rad.dok:hover .tit{color:var(--md-sys-color-primary)}
body[data-vit-modus="dokumenter"] main.x .rad.dok > span:first-child{min-width:0;flex:1}body[data-vit-modus="dokumenter"] main.x .rad.dok .tit{display:block;font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="dokumenter"] main.x .rad.dok .st{display:block;font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:2px}body[data-vit-modus="dokumenter"] main.x .rad.dok .desc{display:block;font:400 .875rem/1.35rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:6px;max-width:80ch}
body[data-vit-modus="dokumenter"] main.x .rad.dok .hoyre{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}body[data-vit-modus="dokumenter"] main.x .rad.dok .aapne{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary)}body[data-vit-modus="dokumenter"] main.x .rad.dok .aapne .ms{font-size:var(--ikon-md)}
body[data-vit-modus="dokumenter"] main.x .rad.dok .pill{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-surface);font:500 .75rem/1rem var(--md-ref-typeface-plain);white-space:nowrap}body[data-vit-modus="dokumenter"] main.x .rad.dok .pill.svak{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
body[data-vit-modus="dokumenter"] main.x #rute .flis{cursor:pointer;text-align:left;font-family:inherit}
@media(max-width:680px){body[data-vit-modus="dokumenter"] main.x .rad.dok{flex-direction:column}body[data-vit-modus="dokumenter"] main.x .rad.dok .hoyre{flex-direction:row;align-items:center}}
body[data-vit-modus="sak-status"] main.x .felter input,body[data-vit-modus="sak-status"] main.x .felter textarea,body[data-vit-modus="kundeservice"] main.x .felter input,body[data-vit-modus="kundeservice"] main.x .felter textarea,body[data-vit-modus="partnerservice"] main.x .felter input,body[data-vit-modus="partnerservice"] main.x .felter textarea{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest);width:100%;box-sizing:border-box}body[data-vit-modus="kundeservice"] main.x .felter textarea{min-height:120px;resize:vertical}body[data-vit-modus="kundeservice"] main.x .felter input:focus,body[data-vit-modus="kundeservice"] main.x .felter textarea:focus{outline:2px solid var(--md-sys-color-primary);outline-offset:0;border-color:transparent}
body[data-vit-modus="sak-status"] main.x .handling,body[data-vit-modus="kundeservice"] main.x .handling,body[data-vit-modus="partnerservice"] main.x .handling{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}
body[data-vit-modus="sak-status"] main.x .status,body[data-vit-modus="kundeservice"] main.x .status,body[data-vit-modus="partnerservice"] main.x .status{margin:12px 0 0;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);min-height:1.45rem}body[data-vit-modus="sak-status"] main.x .status.ok,body[data-vit-modus="kundeservice"] main.x .status.ok,body[data-vit-modus="partnerservice"] main.x .status.ok{color:var(--md-sys-color-on-surface)}body[data-vit-modus="sak-status"] main.x .status.feil,body[data-vit-modus="kundeservice"] main.x .status.feil,body[data-vit-modus="partnerservice"] main.x .status.feil{color:var(--md-sys-color-error)}




/* ═══ 07.09 KONTO V2 (OM, MIN ANSATT) ═══════════════════════════════════════════════════════════════════════════════ */
body[data-vit-modus="om"] main.x .helt .hei{display:flex;gap:18px;align-items:flex-start}body[data-vit-modus="om"] main.x .helt .hei .v{flex:none;width:52px;height:52px;border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);display:inline-flex;align-items:center;justify-content:center;font:500 1.5rem/1 var(--md-ref-typeface-brand)}
body[data-vit-modus="om"] main.x .flater .flis .d{margin-top:4px;white-space:normal}body[data-vit-modus="om"] main.x .flater .flis{cursor:default}
body[data-vit-modus="om"] main.x .doklenker .rad{text-decoration:none;color:var(--md-sys-color-on-surface)}body[data-vit-modus="om"] main.x .doklenker .rad .ms{color:var(--md-sys-color-primary);font-size:var(--ikon-md)}body[data-vit-modus="om"] main.x .doklenker .rad:hover > span:first-child{color:var(--md-sys-color-primary)}
body[data-vit-modus="om"] main.x .rad > span:first-child{min-width:0}body[data-vit-modus="om"] main.x .rad .st{display:block;white-space:normal}
body[data-vit-modus="om"] main.x dl.bi{display:grid;grid-template-columns:max-content 1fr;gap:8px 20px;margin:0;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="om"] main.x dl.bi dt{color:var(--md-sys-color-on-surface-variant);font-weight:500!important}body[data-vit-modus="om"] main.x dl.bi dd{margin:0;color:var(--md-sys-color-on-surface)!important;font-family:var(--md-ref-typeface-plain)!important}
body[data-vit-modus="min-ansatt"] main.x .topp .profil{display:flex;gap:14px;align-items:center}body[data-vit-modus="min-ansatt"] main.x .topp .profil .s{flex:none;width:48px;height:48px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);display:inline-flex;align-items:center;justify-content:center;font:500 1.125rem/1 var(--md-ref-typeface-brand)}
body[data-vit-modus="min-ansatt"] main.x #maFlate .page{padding:0}body[data-vit-modus="min-ansatt"] main.x #maFlate .doc-head{display:none}body[data-vit-modus="min-ansatt"] main.x #maFlate .status-ok{display:flex;gap:8px;align-items:center;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);margin:0 0 14px}body[data-vit-modus="min-ansatt"] main.x #maFlate .status-dot{width:8px;height:8px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);flex:none}
body[data-vit-modus="min-ansatt"] main.x #maFlate .grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}body[data-vit-modus="min-ansatt"] main.x #maFlate .card{padding:14px 0 0;border-top:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="min-ansatt"] main.x #maFlate .card h2{margin:0 0 8px;font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="min-ansatt"] main.x #maFlate .card p{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:0 0 8px}
body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-trinn{list-style:none;margin:0;padding:0}body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-trinn li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-trinn li.gjort{color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-trinn .t-dot{width:8px;height:8px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-outline);flex:none}body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-trinn li.gjort .t-dot{background:var(--md-sys-color-primary)}body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-trinn .t-navn{flex:1}body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-trinn .t-frist{color:var(--md-sys-color-on-surface-variant);font-size:.8125rem}body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-trinn .t-notat{padding-left:18px;color:var(--md-sys-color-on-surface-variant);font-size:.8125rem}
body[data-vit-modus="min-ansatt"] main.x #maFlate textarea{display:block;width:100%;min-height:90px;box-sizing:border-box;margin:8px 0;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest)}body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-btn{display:inline-flex;align-items:center;height:36px;padding:0 18px;border:0;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);cursor:pointer;font-family:inherit}body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-btn:disabled{opacity:.38}
body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-sendt{display:flex;gap:10px;align-items:flex-start;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}body[data-vit-modus="min-ansatt"] main.x #maFlate .ma-sendt .t-dot{width:8px;height:8px;margin-top:8px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);flex:none}
body[data-vit-modus="min-ansatt"] main.x #maFlate .minimering{margin:16px 0 0;padding:12px 0 0;border-top:1px solid var(--md-sys-color-outline-variant);font:400 .875rem/1.4rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="min-ansatt"] main.x #maFlate .minimering b{color:var(--md-sys-color-on-surface);font-weight:500}body[data-vit-modus="min-ansatt"] main.x #maFlate .footer,body[data-vit-modus="min-ansatt"] main.x #maFlate .demo-note{display:none}
body[data-vit-modus="min-ansatt"] main.x #maFlate > div[style]{background:transparent!important;border:0!important;padding:0!important;margin:0!important;max-width:none!important}
body[data-vit-modus="min-ansatt"] main.x .rad .st{display:block;white-space:normal}
@media(max-width:700px){body[data-vit-modus="min-ansatt"] main.x #maFlate .grid{grid-template-columns:1fr}}

/* ═══ 07.09 MINE KUNDER V2 (mock 80) — rådgiverportalen: én kolonne uten venstremeny, motorens liste og panel i v2-form ══
   mine-kunder-motor.js tegner radene i #pfListe (.kundenavn/.bransje/.tall/.delta/.merke), kundepanelet i #pfPanel
   (.pf-topp/.kpi/.graf-boks/.cta/.gruppe), og be-om-tilgang i #pfBeOmVert (felt, .btn, #pfBeOmStatus). */
body[data-vit-modus="mine-kunder"] .app.portal{grid-template-columns:minmax(0,1fr)}
body[data-vit-modus="mine-kunder"] main.x .verktoy{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px}/* Sorteringsknappene i kolonneoverskriftene er husets tekstknapp (btn-tekst) — bare STØRRELSEN tilpasses raden (form-vakta 20.09) */body[data-vit-modus="mine-kunder"] main.x th .btn-tekst{height:auto;padding:0}body[data-vit-modus="mine-kunder"] main.x th .btn-tekst[aria-pressed="true"]{text-decoration:underline;text-underline-offset:3px}body[data-vit-modus="mine-kunder"] main.x #pfTom{min-height:0;align-items:flex-start;text-align:left;padding:4px 0 8px}body[data-vit-modus="mine-kunder"] main.x #pfTom p{max-width:60ch}

body[data-vit-modus="mine-kunder"] main.x .mk-filter button[aria-pressed="true"]{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}body[data-vit-modus="mine-kunder"] main.x .mk-filter .tell{margin-left:6px;color:inherit;opacity:.75}

body[data-vit-modus="mine-kunder"] main.x table.linjer{width:100%;border-collapse:collapse;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}
body[data-vit-modus="mine-kunder"] main.x table.linjer th{text-align:right;padding:8px 12px;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);border-bottom:1px solid var(--md-sys-color-outline-variant);white-space:nowrap}body[data-vit-modus="mine-kunder"] main.x table.linjer th:first-child{text-align:left}
body[data-vit-modus="mine-kunder"] main.x table.linjer td{padding:12px;text-align:right;border-bottom:1px solid var(--md-sys-color-outline-variant);color:var(--md-sys-color-on-surface);font-variant-numeric:tabular-nums;vertical-align:top}body[data-vit-modus="mine-kunder"] main.x table.linjer td:first-child{text-align:left}body[data-vit-modus="mine-kunder"] main.x table.linjer tbody tr:last-child td{border-bottom:0}
body[data-vit-modus="mine-kunder"] main.x table.linjer tbody tr{cursor:pointer}body[data-vit-modus="mine-kunder"] main.x table.linjer tbody tr:hover td{background:var(--md-sys-color-surface-container-low)}body[data-vit-modus="mine-kunder"] main.x table.linjer tbody tr.valgt td{background:var(--md-sys-color-secondary-container)}
body[data-vit-modus="mine-kunder"] main.x .navn{font-weight:500}body[data-vit-modus="mine-kunder"] main.x .meta{display:block;font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:2px}body[data-vit-modus="mine-kunder"] main.x .delaar,body[data-vit-modus="mine-kunder"] main.x .bokfort-alder{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:2px}body[data-vit-modus="mine-kunder"] main.x .bokfort-alder.etterslep{color:var(--md-sys-color-error)}body[data-vit-modus="mine-kunder"] main.x .aapne{color:var(--md-sys-color-primary);font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);white-space:nowrap}
body[data-vit-modus="mine-kunder"] main.x #pfListe .d{display:block;font:400 .75rem/1rem var(--md-ref-typeface-plain);margin-top:2px}
body[data-vit-modus="mine-kunder"] main.x .varsel{display:inline-flex;align-items:center;margin-top:6px;padding:2px 10px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-surface);font:500 .75rem/1.25rem var(--md-ref-typeface-plain)}body[data-vit-modus="mine-kunder"] main.x .varsel.arsak{background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="mine-kunder"] main.x td.tomt,#pfListe .tomt{text-align:left;color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="mine-kunder"] main.x .pf-tom{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:0}
body[data-vit-modus="mine-kunder"] main.x #pfPanel h2,#pfPanel .pf-h{margin:0;font:500 1.125rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}


body[data-vit-modus="mine-kunder"] main.x #pfPanel .cta,body[data-vit-modus="mine-kunder"] main.x body[data-vit-modus="mine-kunder"] main.x #pfPanel .cta:disabled,body[data-vit-modus="mine-kunder"] main.x #pfBeOmVert button:disabled{opacity:.38;cursor:default}
body[data-vit-modus="mine-kunder"] main.x #pfPanel .gruppe,body[data-vit-modus="mine-kunder"] main.x #pfBeOmVert .gruppe{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);margin:16px 0 6px}
body[data-vit-modus="mine-kunder"] main.x #pfPanel p,body[data-vit-modus="mine-kunder"] main.x #pfPanel .meta,#pfBeOmVert .meta{color:var(--md-sys-color-on-surface-variant);font-size:.875rem}
body[data-vit-modus="mine-kunder"] main.x body[data-vit-modus="mine-kunder"] main.x 
body[data-vit-modus="mine-kunder"] main.x #pfBeOmVert #pfBeOmStatus{display:block;margin-top:10px}#pfBeOmVert #pfBeOmStatus:empty{display:none}
body[data-vit-modus="mine-kunder"] main.x #pfBeOmVert .rad,#pfMineInv .rad,#pfMineFsp .rad{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}
@media(max-width:820px){body[data-vit-modus="mine-kunder"] main.x table.linjer,body[data-vit-modus="mine-kunder"] main.x table.linjer tbody{display:block}body[data-vit-modus="mine-kunder"] main.x table.linjer thead{display:none}body[data-vit-modus="mine-kunder"] main.x table.linjer tbody tr{display:block;padding:12px 0;border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="mine-kunder"] main.x table.linjer td{display:flex;align-items:baseline;justify-content:space-between;gap:12px;text-align:right;border:0;padding:5px 0}body[data-vit-modus="mine-kunder"] main.x table.linjer td[data-kol]{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:4px 12px}body[data-vit-modus="mine-kunder"] main.x table.linjer td[data-kol]::before{content:attr(data-kol);font:500 .75rem/1.25rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);text-align:left}body[data-vit-modus="mine-kunder"] main.x table.linjer td[data-kol] > *{grid-column:2;text-align:right}body[data-vit-modus="mine-kunder"] main.x table.linjer td:first-child,body[data-vit-modus="mine-kunder"] main.x table.linjer td:last-child{display:block;text-align:left}body[data-vit-modus="mine-kunder"] main.x table.linjer td:first-child > *,body[data-vit-modus="mine-kunder"] main.x table.linjer td:last-child > *{text-align:left}body[data-vit-modus="mine-kunder"] main.x table.linjer td:first-child::before,body[data-vit-modus="mine-kunder"] main.x table.linjer td:last-child::before{content:none} /* navnet og «Åpne» trenger ingen kolonneetikett */body[data-vit-modus="mine-kunder"] main.x table.linjer td:first-child,body[data-vit-modus="mine-kunder"] main.x table.linjer td:last-child{display:block;text-align:left}body[data-vit-modus="mine-kunder"] main.x table.linjer td:first-child{padding-bottom:8px}body[data-vit-modus="mine-kunder"] main.x .varsel{margin-top:8px}}

/* ═══ 07.09 KVELD · KUNDESERVICE RYDDET (Kenneth: «for rotete») ═════════════════════════════════════════════════════
   Forhåndsvisningen av meldingen er ute (den tjente oss, ikke kunden). Hjelperen (vit-ks-bot.js) står i hovedvisningen
   ved siden av skjemaet, og margen er punktvis som resten av appen. Klassene under er KS-botens egne. */

body[data-vit-modus="kundeservice"] main.x .ksb-lopet{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto;overscroll-behavior:contain;margin:0 0 12px}
body[data-vit-modus="kundeservice"] main.x .ksb-lopet:empty{display:none}
body[data-vit-modus="kundeservice"] main.x .ksb-boble{font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);padding:10px 14px;border-radius:var(--md-sys-shape-corner-large);max-width:100%;white-space:pre-wrap;overflow-wrap:anywhere}



body[data-vit-modus="kundeservice"] main.x .ksb-rad{display:flex;gap:8px}


body[data-vit-modus="kundeservice"] main.x .ksb-send{flex:none;height:40px;padding:0 18px;border:0;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);cursor:pointer;font-family:inherit}
body[data-vit-modus="kundeservice"] main.x .ksb-send:disabled{opacity:.38;cursor:default}
body[data-vit-modus="kundeservice"] main.x .ksb-opp{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}



body[data-vit-modus="kundeservice"] main.x .ksb-utkast-emne{margin:0 0 4px;font:500 .9375rem/1.375rem var(--md-ref-typeface-plain)}

/* ═══ 07.09 KVELD · KUNDESERVICE I EXPRESSIVE-KOMPOSISJON ═══════════════════════════════════════════════════════════
   Hjelperen bor i den tonede helten (primary-container). Flatene inni males på den tonen — hvitt felt på lilla, hvite
   bobler, fylt knapp — slik at rangordningen er tone og størrelse, ikke to like hvite bokser. */
body[data-vit-modus="kundeservice"] main.x .helt #ksBot{margin:14px 0 0}
body[data-vit-modus="kundeservice"] main.x .helt .ki,body[data-vit-modus="partnerservice"] main.x .helt .ki{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-primary-container);opacity:.75;margin:10px 0 0}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-lopet{max-height:300px}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-boble.deg{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);align-self:flex-end}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-boble.bot{background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-boble.bot::before{content:"KI-svar · laget automatisk";display:block;font:500 .6875rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);margin-bottom:4px}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-rad input{flex:1;min-width:0;height:48px;font:400 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface-container-lowest);border:0;border-radius:var(--md-sys-shape-corner-full);padding:0 20px}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-rad input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--md-sys-color-primary)}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-send{height:48px;padding:0 24px;background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-opp-knapp{height:34px;padding:0 16px;border:0;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface);font:500 .8125rem/1.125rem var(--md-ref-typeface-plain);cursor:pointer;font-family:inherit}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-utkast{background:var(--md-sys-color-surface-container-lowest)}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-utkast-melding{margin:0 0 10px;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="kundeservice"] main.x .helt .ksb-bruk{height:36px;padding:0 18px;border:0;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);cursor:pointer;font-family:inherit}
body[data-vit-modus="kundeservice"] main.x .helt .tall b{white-space:normal}
@media(max-width:820px){body[data-vit-modus="kundeservice"] main.x .helt .ksb-rad{flex-wrap:wrap}body[data-vit-modus="kundeservice"] main.x .helt .ksb-rad input,body[data-vit-modus="kundeservice"] main.x .helt .ksb-send{width:100%}}

/* ═══ BYRÅKONTO — UI/UX-revisjonen 19.09.2026 ═══════════════════════════════════════════════════════════════════════
   Kenneth 19.09: «Bruk husets form, aldri lokal kopi.» byraa-motor.js tegnet tidligere en egen grammatikk
   (.boks/.indre/.feltnavn/.felt/.forklaring/.sete-linje/.status/.byr-hode) med 19 inline style-attributter og denne
   CSS-blokka. Motoren tegner nå HUSETS klasser rett fra vit-shell.css — .blokk/.bh/.bt/.eye/.lede/.rad/.rader/.st/
   .handling/.pill/.tom/.fot/.felter/.knapper/.melding/.btn-ut/.btn-fyll, akkurat som ansatte.html og mine-kunder.html.
   Det eneste som gjenstår er linja under: portalen mangler aside.learn (samme grunn som mine-kunder), og husets
   .melding kjenner bare feil-fargen — byrået trenger to til (status underveis, bekreftet suksess). */
body[data-vit-modus="byraa"] .app.portal{grid-template-columns:minmax(0,1fr)}
body[data-vit-modus="byraa"] main.x /* #byrInnhold er .visning (display:contents) — boksene er main.x sine egne barn og får husets 20 px, ikke en egen 16 (målt 19.09) */
body[data-vit-modus="byraa"] main.x .melding.noytral{color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="byraa"] main.x .melding.ok{color:var(--md-sys-color-on-surface)}
/* .blokk .del er husets flex-rad for ikon+lede (linje 4660) — ventelista under «Byråets ansatte» bruker den som en
   skille-linje over en undergruppe rader i stedet, akkurat som rapport-generator alt gjør (linje 5072) med samme grep. */
body[data-vit-modus="byraa"] main.x .del{display:block;margin-top:16px;padding-top:14px;border-top:1px solid var(--md-sys-color-outline-variant)}
body[data-vit-modus="byraa"] main.x .del h3{margin:0 0 4px}

/* ═══ 07.09 VITIN-BOTEN V2 — chatten i v2-form ══════════════════════════════════════════════════════════════════════
   vitin-boten-motor.js tegner .msg-bubble (svar), .msg-bubble.demo-reply (dine), .velkomst-chips .prompt-chip,
   .typing-dots. Sida gir #chatBody, #composeInput, #sendBtn og #clearBtn. */
body[data-vit-modus="vitin-boten"] .app.portal{grid-template-columns:minmax(0,1fr)}
body[data-vit-modus="vitin-boten"] main.x .chat{display:flex;flex-direction:column;gap:16px;min-height:min(58vh,520px)}
body[data-vit-modus="vitin-boten"] main.x .chat-body{flex:1;display:flex;flex-direction:column;gap:12px;overflow-y:auto;overscroll-behavior:contain;max-height:60vh}
body[data-vit-modus="vitin-boten"] main.x .msg-bubble{max-width:min(70ch,86%);padding:12px 16px;border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);white-space:pre-wrap;overflow-wrap:anywhere}
body[data-vit-modus="vitin-boten"] main.x .msg-bubble.demo-reply{align-self:flex-end;background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
body[data-vit-modus="vitin-boten"] main.x .velkomst-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}

body[data-vit-modus="vitin-boten"] main.x .prompt-chip:hover{background:var(--md-sys-color-surface-container-low)}body[data-vit-modus="vitin-boten"] main.x .prompt-chip:active{border-radius:var(--md-sys-shape-corner-medium)}
body[data-vit-modus="vitin-boten"] main.x .typing-dots{display:inline-flex;gap:4px;align-items:center}
body[data-vit-modus="vitin-boten"] main.x .typing-dots span{width:6px;height:6px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-on-surface-variant);animation:botPrikk 1.2s infinite}
body[data-vit-modus="vitin-boten"] main.x .typing-dots span:nth-child(2){animation-delay:.15s}body[data-vit-modus="vitin-boten"] main.x .typing-dots span:nth-child(3){animation-delay:.3s}
@keyframes botPrikk{0%,60%,100%{opacity:.25}30%{opacity:1}}
@media(prefers-reduced-motion:reduce){body[data-vit-modus="vitin-boten"] main.x .typing-dots span{animation:none}}
body[data-vit-modus="vitin-boten"] main.x .chat-foot{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:14px}
body[data-vit-modus="vitin-boten"] main.x .compose{display:flex;gap:10px;align-items:flex-end}
body[data-vit-modus="vitin-boten"] main.x .compose textarea{flex:1;min-width:0;min-height:48px;max-height:180px;resize:vertical;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);padding:12px 16px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-surface-container-lowest);box-sizing:border-box}
body[data-vit-modus="vitin-boten"] main.x .compose textarea:focus{outline:none;border-color:var(--md-sys-color-primary);box-shadow:inset 0 0 0 1px var(--md-sys-color-primary)}
body[data-vit-modus="vitin-boten"] main.x .send-btn{flex:none;padding:0;width:40px;justify-content:center}
body[data-vit-modus="vitin-boten"] main.x .send-btn:active{border-radius:var(--md-sys-shape-corner-medium)}body[data-vit-modus="vitin-boten"] main.x .send-btn:disabled{opacity:.38;cursor:default}
body[data-vit-modus="vitin-boten"] main.x .compose-note{display:flex;gap:8px;align-items:flex-start;margin:10px 0 0;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}body[data-vit-modus="vitin-boten"] main.x .compose-note .ms{color:var(--md-sys-color-primary);font-size:var(--ikon-md)}

/* ═══ 07.09 PARTNERSERVICE V2 — samme skjema-komponent som Kundeservice (reglene over deles), eget ord i helten. */
body[data-vit-modus="partnerservice"] main.x .helt .tall b{white-space:normal}

/* ═══ 07.09 SAKSSTATUS V2 — åpen dør uten skall; motorens sak-kort i v2-form (skjemareglene deles med Kundeservice) */
body[data-vit-modus="sak-status"] .app.portal{grid-template-columns:minmax(0,1fr)}
body[data-vit-modus="sak-status"] main.x #ssSak{margin-top:16px}
body[data-vit-modus="sak-status"] main.x .sak{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:14px}
body[data-vit-modus="sak-status"] main.x .sak-hode{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 12px}
body[data-vit-modus="sak-status"] main.x .sak-hode b{font:500 1.125rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="sak-status"] main.x .sak-hode span{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sak-status"] main.x .sak-kropp{display:flex;flex-direction:column;gap:10px}
body[data-vit-modus="sak-status"] main.x .rad{display:grid;grid-template-columns:140px minmax(0,1fr);gap:12px;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="sak-status"] main.x .rad small{font:500 .75rem/1.45rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sak-status"] main.x .bot{margin-top:6px;border-top:1px solid var(--md-sys-color-outline-variant);padding-top:12px}
body[data-vit-modus="sak-status"] main.x .bot .ki{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary);margin-bottom:6px}
body[data-vit-modus="sak-status"] main.x .bot p{white-space:pre-wrap;font:400 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="sak-status"] main.x .bot .merk{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:8px}
@media(max-width:600px){body[data-vit-modus="sak-status"] main.x .rad{grid-template-columns:1fr;gap:2px}}

/* ═══ 07.09 ARKIVERT RAPPORT V2 — det frosne dokumentet i egen ramme, resten i v2-grammatikken */
body[data-vit-modus="arkiv-vis"] main.x .av-dok{padding:0;overflow:hidden}
body[data-vit-modus="arkiv-vis"] main.x #avRamme{display:block;width:100%;min-height:min(78vh,900px);border:0;background:var(--md-sys-color-surface-container-lowest);border-radius:var(--md-sys-shape-corner-large)}
body[data-vit-modus="arkiv-vis"] main.x #avFot{display:block;margin:0;color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="arkiv-vis"] main.x .helt .ki{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-primary-container);opacity:.75;margin:10px 0 0}
body[data-vit-modus="arkiv-vis"] main.x .helt .ki:empty{display:none}
@media print{body[data-vit-modus="arkiv-vis"] main.x .av-dok{border:0;padding:0}body[data-vit-modus="arkiv-vis"] main.x #avRamme{min-height:auto;height:auto}}

/* ═══ 07.09 DOKUMENTSIDENE V2 — v1-tekstens egne klasser i v2-grammatikken ═══════════════════════════════════════════
   Teksten er ordrett fra v1; rammen er v2. Reglene under maler v1-klassene på den nye flata. */
body[data-vit-modus="verdi-hvordan"] .app.portal{grid-template-columns:minmax(0,1fr)}
body[data-vit-modus="verdi-hvordan"] main.x p,li{font:400 .9375rem/1.6rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="verdi-hvordan"] main.x h3{margin:14px 0 6px;font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="verdi-hvordan"] main.x ul,ol{margin:8px 0;padding-left:20px}body[data-vit-modus="verdi-hvordan"] main.x li{margin:4px 0}
body[data-vit-modus="verdi-hvordan"] main.x .method{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:16px;margin-top:16px}body[data-vit-modus="verdi-hvordan"] main.x .method:first-of-type{border-top:0;padding-top:0;margin-top:0}
body[data-vit-modus="verdi-hvordan"] main.x .method .head-row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
body[data-vit-modus="verdi-hvordan"] main.x .method .num{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary)}
body[data-vit-modus="verdi-hvordan"] main.x .method .family{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="verdi-hvordan"] main.x .method .formula,body[data-vit-modus="verdi-hvordan"] main.x .formula{display:block;margin:10px 0;padding:12px 14px;border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-low);font:400 .875rem/1.45rem var(--font-mono, ui-monospace);color:var(--md-sys-color-on-surface);white-space:pre-wrap;overflow-wrap:anywhere}
body[data-vit-modus="verdi-hvordan"] main.x .method .why{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="verdi-hvordan"] main.x .role-box{margin:10px 0;padding:12px 0 0;border-top:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="verdi-hvordan"] main.x .pc-head{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);margin:10px 0 4px}body[data-vit-modus="verdi-hvordan"] main.x .pc-head.good{color:var(--up)}body[data-vit-modus="verdi-hvordan"] main.x .pc-head.warn{color:var(--md-sys-color-error)}
body[data-vit-modus="verdi-hvordan"] main.x ul.pc{list-style:none;padding-left:0;margin:0}body[data-vit-modus="verdi-hvordan"] main.x ul.pc li{position:relative;padding-left:18px}body[data-vit-modus="verdi-hvordan"] main.x ul.pc.good li::before{content:"+";position:absolute;left:0;color:var(--up)}body[data-vit-modus="verdi-hvordan"] main.x ul.pc.warn li::before{content:"−";position:absolute;left:0;color:var(--md-sys-color-error)}
body[data-vit-modus="verdi-hvordan"] main.x .lesmer{margin:10px 0 0;border-top:1px solid var(--md-sys-color-outline-variant);padding-top:10px}
body[data-vit-modus="verdi-hvordan"] main.x .lesmer summary{display:inline-flex;align-items:center;gap:8px;cursor:pointer;list-style:none;font:500 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary)}
body[data-vit-modus="verdi-hvordan"] main.x .lesmer summary::-webkit-details-marker{display:none}body[data-vit-modus="verdi-hvordan"] main.x .lesmer svg{width:14px;height:14px;transition:transform .2s}body[data-vit-modus="verdi-hvordan"] main.x .lesmer[open] svg{transform:rotate(180deg)}
body[data-vit-modus="verdi-hvordan"] main.x .lesmer-body{padding-top:8px}
body[data-vit-modus="verdi-hvordan"] main.x .steps ol{counter-reset:none}body[data-vit-modus="verdi-hvordan"] main.x .steps ol li{margin:8px 0}body[data-vit-modus="verdi-hvordan"] main.x .steps ol li strong{font-weight:500;color:var(--md-sys-color-on-surface)}
body[data-vit-modus="verdi-hvordan"] main.x .revisor{margin-top:12px}body[data-vit-modus="verdi-hvordan"] main.x .revisor .lbl{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary);margin-bottom:4px}
body[data-vit-modus="verdi-hvordan"] main.x .revisor ul{list-style:none;padding-left:0}body[data-vit-modus="verdi-hvordan"] main.x .revisor ul li{position:relative;padding-left:18px}body[data-vit-modus="verdi-hvordan"] main.x .revisor ul li::before{content:"✓";position:absolute;left:0;color:var(--md-sys-color-primary)}
body[data-vit-modus="verdi-hvordan"] main.x .sources .src{padding:10px 0;border-bottom:1px solid var(--md-sys-color-outline-variant)}body[data-vit-modus="verdi-hvordan"] main.x .sources .src:last-child{border-bottom:0}
body[data-vit-modus="verdi-hvordan"] main.x .sources .src .top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
body[data-vit-modus="verdi-hvordan"] main.x .sources .src .ref{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);font:500 .6875rem/1rem var(--md-ref-typeface-plain)}
body[data-vit-modus="verdi-hvordan"] main.x .sources .src .title{font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="verdi-hvordan"] main.x .sources .src .meta-line{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin-top:2px}
body[data-vit-modus="verdi-hvordan"] main.x a{color:var(--md-sys-color-primary)}
body[data-vit-modus="verdi-hvordan"] main.x table{width:100%;border-collapse:collapse;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);margin:8px 0}
body[data-vit-modus="verdi-hvordan"] main.x th{text-align:left;padding:8px 10px;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);border-bottom:1px solid var(--md-sys-color-outline-variant)}
body[data-vit-modus="verdi-hvordan"] main.x td{padding:9px 10px;border-bottom:1px solid var(--md-sys-color-outline-variant);color:var(--md-sys-color-on-surface)}

/* ═══ 07.09 LÆR MER V2 — faktagrunnlaget for jobbintervju: v1-klassene malt i v2-grammatikken ═════════════════
   Motoren tegner details.fakta med .fakta-tittel/.fakta-paastand/.fakta-body/.fakta-meta/.pill, og begrepsboksen #ordpop. */
body[data-vit-modus="laer-mer"] .app.portal{grid-template-columns:minmax(0,1fr)}
body[data-vit-modus="laer-mer"] main.x .tema-body{display:flex;flex-direction:column}
body[data-vit-modus="laer-mer"] main.x details.fakta{border-bottom:1px solid var(--md-sys-color-outline-variant);padding:10px 0}
body[data-vit-modus="laer-mer"] main.x details.fakta:last-child{border-bottom:0}
body[data-vit-modus="laer-mer"] main.x details.fakta summary,body[data-vit-modus="laer-mer"] main.x .fakta-tittel{cursor:pointer;list-style:none;font:500 .9375rem/1.45rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="laer-mer"] main.x details.fakta summary::-webkit-details-marker{display:none}
body[data-vit-modus="laer-mer"] main.x .fakta-paastand{display:block;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="laer-mer"] main.x .fakta-body{padding:8px 0 4px;font:400 .9375rem/1.55rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="laer-mer"] main.x .fakta-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
body[data-vit-modus="laer-mer"] main.x .pill{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface-variant);font:500 .75rem/1rem var(--md-ref-typeface-plain)}
body[data-vit-modus="laer-mer"] main.x .pill-lov{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
body[data-vit-modus="laer-mer"] main.x .tema-count{white-space:nowrap}
body[data-vit-modus="laer-mer"] main.x .ord{color:var(--md-sys-color-primary)}
body[data-vit-modus="laer-mer"] main.x a{color:var(--md-sys-color-primary)}
body[data-vit-modus="laer-mer"] .ordpop{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:900;width:min(560px,calc(100vw - 32px));background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-extra-large);padding:18px 22px;box-shadow:var(--sh-2, none)}
body[data-vit-modus="laer-mer"] .ordpop[hidden]{display:none}
body[data-vit-modus="laer-mer"] .ordpop-lukk{position:absolute;top:10px;right:12px;width:32px;height:32px;border:0;border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-on-surface-variant);font:400 1.25rem/1 var(--md-ref-typeface-plain);cursor:pointer}
body[data-vit-modus="laer-mer"] .ordpop-eyebrow{margin:0;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary)}
body[data-vit-modus="laer-mer"] .ordpop-navn{margin:2px 0 4px;font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="laer-mer"] .ordpop-tekst{margin:0;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}

/* ═══ 07.09 DEL-MOTTAK V2 — låsen i den tonede helten, den frosne rapporten i boksen ════════════════════════════════
   del-mottak-motor.js tegner tastaturet (.key), prikkene (.pdot) og rapporten (.rep-intro/.rep-grid/.rep-cell/
   .rep-forklar/.rep-tall-bak/.rtb-row) — sida gir id-ene. */
body[data-vit-modus="del-mottak"] .app.portal{grid-template-columns:minmax(0,1fr)}
body[data-vit-modus="del-mottak"] main.x{max-width:820px;margin:0 auto}
body[data-vit-modus="del-mottak"] main.x #lockWrap[hidden],body[data-vit-modus="del-mottak"] main.x #lockWrap.av{display:none}
body[data-vit-modus="del-mottak"] main.x #lock{display:flex;flex-direction:column;align-items:center;gap:12px;min-width:220px}
body[data-vit-modus="del-mottak"] main.x .lock-mark svg{width:44px;height:44px;display:block}
body[data-vit-modus="del-mottak"] main.x .pin-dots{display:flex;gap:10px;margin-top:4px}
body[data-vit-modus="del-mottak"] main.x .pdot{width:12px;height:12px;border-radius:var(--md-sys-shape-corner-full);background:transparent;border:1.5px solid var(--md-sys-color-on-primary-container);opacity:.5;transition:background .15s,opacity .15s}
body[data-vit-modus="del-mottak"] main.x .pdot.on{background:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary);opacity:1}
body[data-vit-modus="del-mottak"] main.x .pin-err{min-height:1.25rem;font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-error)}
body[data-vit-modus="del-mottak"] main.x .keypad{display:grid;grid-template-columns:repeat(3,64px);gap:10px;margin-top:4px}
body[data-vit-modus="del-mottak"] main.x .key{height:56px;border:0;border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface);font:400 1.25rem/1 var(--md-ref-typeface-brand);cursor:pointer;transition:border-radius .3s cubic-bezier(.2,0,0,1),background .2s}
body[data-vit-modus="del-mottak"] main.x .key:hover{background:var(--md-sys-color-surface-container-low)}body[data-vit-modus="del-mottak"] main.x .key:active{border-radius:var(--md-sys-shape-corner-medium)}
body[data-vit-modus="del-mottak"] main.x .report-wrap{display:none}body[data-vit-modus="del-mottak"] main.x .report-wrap.on{display:contents}
body[data-vit-modus="del-mottak"] main.x .rep-intro{font:400 1rem/1.6rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);margin:0 0 16px}body[data-vit-modus="del-mottak"] main.x .rep-intro b{font-weight:500}
body[data-vit-modus="del-mottak"] main.x .rep-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
body[data-vit-modus="del-mottak"] main.x .rep-cell{display:flex;flex-direction:column;gap:8px}
body[data-vit-modus="del-mottak"] main.x .rep-forklar{font:400 .875rem/1.4rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="del-mottak"] main.x .rep-tall-bak{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px;font:400 .8125rem/1.35rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="del-mottak"] main.x .rtb-row{display:flex;justify-content:space-between;gap:12px;padding:2px 0}
body[data-vit-modus="del-mottak"] main.x #recvNotat{margin:0 0 16px;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="del-mottak"] main.x .r-notat-l{display:block;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary);margin-bottom:4px}
body[data-vit-modus="del-mottak"] main.x .recv-foot{display:block;margin:8px 0 0;color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="del-mottak"] main.x .helt .ki{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-primary-container);opacity:.75;margin:10px 0 0}
@media(max-width:600px){body[data-vit-modus="del-mottak"] main.x .keypad{grid-template-columns:repeat(3,56px)}body[data-vit-modus="del-mottak"] main.x .key{height:50px}}

@media(max-width:600px){body[data-vit-modus="rapport-bygg"] main.x .bk-rad .btn-ut{margin-left:0}}


/* === 07.09 SERVICEPORTALEN V2 (saker.html) ======================================================
   saker-motor.js tegner listene, kortene og detaljpanelet; sida eier trepanel-oppsettet. Her er drakten:
   samme lerret, samme kortform, samme typografi som resten av appen. */
body[data-vit-modus="saker"] {background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface);font-family:var(--md-ref-typeface-plain)}
body[data-vit-modus="saker"] .midten{background:transparent}
body[data-vit-modus="saker"] .venstre{background:var(--md-sys-color-surface);border-right:1px solid var(--md-sys-color-outline-variant)}
body[data-vit-modus="saker"] .v-logo{width:40px;height:40px;border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);display:flex;align-items:center;justify-content:center;font:500 1.25rem/1 var(--md-ref-typeface-brand);margin:4px 0 18px 4px}
body[data-vit-modus="saker"] .v-hovednav{display:flex;flex-direction:column;gap:4px;background:transparent;border:0;padding:0}
body[data-vit-modus="saker"] .v-hovednav .nav-item{display:flex;align-items:center;gap:12px;width:100%;height:52px;padding:0 16px;border:0;border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-on-surface-variant);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);cursor:pointer;text-align:left;transition:background .18s,color .18s}
body[data-vit-modus="saker"] .v-hovednav .nav-item svg{width:22px;height:22px;flex:none}
body[data-vit-modus="saker"] .v-hovednav .nav-item:hover{background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="saker"] .v-hovednav .nav-item.on{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}
body[data-vit-modus="saker"] .nav-badge{margin-left:auto;min-width:22px;height:22px;padding:0 6px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);font:500 .75rem/1 var(--md-ref-typeface-plain);display:inline-flex;align-items:center;justify-content:center}
body[data-vit-modus="saker"] .v-hovednav .nav-item.on .nav-badge{background:var(--md-sys-color-on-primary-container);color:var(--md-sys-color-primary-container)}
body[data-vit-modus="saker"] .v-gruppe-tittel{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);margin:22px 0 10px 4px;text-transform:none}
body[data-vit-modus="saker"] .v-gruppe input,body[data-vit-modus="saker"] .v-gruppe select{width:100%;height:44px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface);font:400 .875rem/1.25rem var(--md-ref-typeface-plain);padding:0 14px;margin-bottom:8px;outline:none}
body[data-vit-modus="saker"] .v-gruppe input:focus,body[data-vit-modus="saker"] .v-gruppe select:focus{border-color:var(--md-sys-color-primary)}
body[data-vit-modus="saker"] .m-topbar .meta{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);text-transform:none;margin:0}
body[data-vit-modus="saker"] .m-topbar h1{font:400 2.25rem/2.75rem var(--md-ref-typeface-brand);letter-spacing:0;color:var(--md-sys-color-on-surface);margin:2px 0 0}
body[data-vit-modus="saker"] .laas .meta{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant);text-transform:none}
body[data-vit-modus="saker"] .kort-flate{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-extra-large);padding:20px 24px}
body[data-vit-modus="saker"] .kort-sp{font:400 1.5rem/2rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface);margin:0 0 12px;letter-spacing:0}
body[data-vit-modus="saker"] .kort-flate.haster{padding:16px}
body[data-vit-modus="saker"] .haster-rad{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;overflow:visible}
body[data-vit-modus="saker"] .haster-kort{min-width:0;background:var(--md-sys-color-surface-container-low);border:0;border-radius:var(--md-sys-shape-corner-large);padding:14px 16px;cursor:pointer;text-align:left;transition:background .18s}
body[data-vit-modus="saker"] .haster-kort:hover{background:var(--md-sys-color-surface-container)}
body[data-vit-modus="saker"] .haster-kort.partner{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}
body[data-vit-modus="saker"] .haster-kort .hk-emne{font:500 .9375rem/1.35rem var(--md-ref-typeface-plain);color:inherit;display:block;margin:6px 0 8px;overflow-wrap:anywhere}
body[data-vit-modus="saker"] .puls-linje{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;background:transparent;border:0;border-radius:0;padding:0;font:400 .875rem/1.4rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="saker"] .puls-linje b{font-weight:500;color:var(--md-sys-color-on-surface)}
body[data-vit-modus="saker"] #liste{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-extra-large);padding:6px 8px}
body[data-vit-modus="saker"] .sak-rad{display:block;width:100%;background:transparent;border:0;border-radius:var(--md-sys-shape-corner-large);padding:14px 16px;cursor:pointer;text-align:left;transition:background .18s}
body[data-vit-modus="saker"] .sak-rad + .sak-rad{border-top:1px solid var(--md-sys-color-outline-variant)}
body[data-vit-modus="saker"] .sak-rad:hover{background:var(--md-sys-color-surface-container-low)}
body[data-vit-modus="saker"] .sak-rad.valgt{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}
body[data-vit-modus="saker"] .sr-emne{font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:inherit;margin:4px 0 2px;overflow-wrap:anywhere}
body[data-vit-modus="saker"] .sr-sub{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="saker"] .sak-rad.valgt .sr-sub{color:var(--md-sys-color-on-primary-container)}
body[data-vit-modus="saker"] .liste-telling{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:0 0 10px 4px}
body[data-vit-modus="saker"] .panel-intro{font:400 .9375rem/1.6rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);max-width:70ch}
body[data-vit-modus="saker"] .snr{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface-variant);font:500 .6875rem/1 var(--md-ref-typeface-plain);letter-spacing:.3px}
body[data-vit-modus="saker"] .pille{display:inline-flex;align-items:center;height:22px;padding:0 10px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface-variant);font:500 .6875rem/1 var(--md-ref-typeface-plain);letter-spacing:.3px;text-transform:none}
body[data-vit-modus="saker"] .pille.ny{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}
body[data-vit-modus="saker"] .hoyre{background:var(--md-sys-color-surface);border-left:1px solid var(--md-sys-color-outline-variant)}
body[data-vit-modus="saker"] .laerepanel .lp{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-extra-large);padding:20px}
body[data-vit-modus="saker"] .lp-eye{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary);text-transform:none;margin:0 0 10px}
body[data-vit-modus="saker"] .lp-t{font:400 .875rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:0 0 12px}
body[data-vit-modus="saker"] .lp-t b{font-weight:500;color:var(--md-sys-color-on-surface)}
body[data-vit-modus="saker"] .skpi{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-large);padding:16px 18px}
body[data-vit-modus="saker"] .skpi .l{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="saker"] .skpi .v{font:400 2rem/2.4rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="saker"] .kb-kort{background:var(--md-sys-color-surface-container-lowest);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-large);margin-bottom:10px;overflow:hidden}

/* === 07.09 SERVICEPORTALEN V2 · RETTING etter maaling =========================================== */
body[data-vit-modus="saker"] .kort{border-radius:var(--md-sys-shape-corner-extra-large)!important;border-color:var(--md-sys-color-outline-variant)!important;background:var(--md-sys-color-surface-container-lowest)!important;padding:20px 24px!important;margin-bottom:0!important}
body[data-vit-modus="saker"] .kort-hode{margin:0 0 12px}
body[data-vit-modus="saker"] .kort-sp{font:500 1.125rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);margin:0;letter-spacing:0}
body[data-vit-modus="saker"] .kort-flate{background:transparent;border:0;border-radius:0;padding:0}
body[data-vit-modus="saker"] .sr-emne{display:block}
body[data-vit-modus="saker"] .sr-sub{display:block}
body[data-vit-modus="saker"] .sr-topp{margin-bottom:2px}
body[data-vit-modus="saker"] .puls-linje{padding:2px 4px}
body[data-vit-modus="saker"] .sak-filter{gap:12px}
body[data-vit-modus="saker"] .tom{font:400 .9375rem/1.6rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);padding:18px 4px;margin:0}

/* === 07.09 RAPPORT-BYGG · ARBEIDSBENKEN =========================================================
   Arket er flata. Oppsettvelgeren er arkets TOMME TILSTAND, og paletten aapner seg ved boksen du trykker
   (rapport-bygg-lim.js). Ingen stegteller: du bygger i arket, ikke gjennom en veiviser.
   Motoren (rapport-bygg-motor.js) tegner malene, lerretet, nokkeltallene og forslagene som foer. */
/* ARKET HAR PAPIRETS BREDDE (07.09.2026, maalt i ekte PDF). Grafene ble klippet paa hoeyre side i PDF-en
   fordi ECharts tegnet dem i skjermbredden (1350 px) mens A4 med 10 mm marg er 190 mm = ca. 718 px.
   Ingen JS kan maale papirbredden foer utskriften; loesninga er at arket ER papiret ogsaa paa skjermen.
   718 px innhold + 2 x 24 px boks-padding = 766. Da er det du ser paa skjermen det som kommer ut. */
body[data-vit-modus="rapport-bygg"] main.x .ark{max-width:766px;box-sizing:border-box} /* border-box: uten den gjaldt maalet innholdet, og arket ble 814 px — 7 % for bredt, og desember falt utenfor */
body[data-vit-modus="rapport-bygg"] main.x .ark .bh{align-items:center}
body[data-vit-modus="rapport-bygg"] main.x .ark .bh .hoyre{gap:8px}
body[data-vit-modus="rapport-bygg"] main.x .bk-hak{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);height:40px;padding:0 14px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-full)}
body[data-vit-modus="rapport-bygg"] main.x .bk-hak:hover{background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="rapport-bygg"] main.x .bk-hak input{width:16px;height:16px;accent-color:var(--md-sys-color-primary);cursor:pointer}
body[data-vit-modus="rapport-bygg"] main.x .topp select.btn,body[data-vit-modus="rapport-bygg"] main.x .bh select.btn{height:40px;border-radius:var(--md-sys-shape-corner-full);border:1px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface);font:500 .875rem/1 var(--md-ref-typeface-plain);padding:0 34px 0 16px}
body[data-vit-modus="rapport-bygg"] main.x .step-hint{font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);margin:0 0 16px;max-width:70ch}
body[data-vit-modus="rapport-bygg"] main.x #oppsett[hidden]{display:none}
body[data-vit-modus="rapport-bygg"] main.x #canvas{margin-top:2px}
body[data-vit-modus="rapport-bygg"] main.x #canvas:empty{display:none}
body[data-vit-modus="rapport-bygg"] main.x #rapportTopp:not(:empty){padding-bottom:8px;margin-bottom:16px;border-bottom:1px solid var(--md-sys-color-outline-variant)}
body[data-vit-modus="rapport-bygg"] .palett{position:fixed;z-index:70;width:min(380px,calc(100vw - 24px));max-height:min(560px,calc(100vh - 24px));display:flex;flex-direction:column;background:var(--md-sys-color-surface-container-high);border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-extra-large);opacity:0;transform:scale(.94);transform-origin:top left;transition:opacity .18s,transform .26s cubic-bezier(.2,.9,.25,1.08)}
body[data-vit-modus="rapport-bygg"] .palett.inne{opacity:1;transform:scale(1)}
body[data-vit-modus="rapport-bygg"] .palett[hidden]{display:none}
body[data-vit-modus="rapport-bygg"] .p-hode{display:flex;align-items:center;gap:12px;padding:16px 12px 12px 20px;border-bottom:1px solid var(--md-sys-color-outline-variant)}
body[data-vit-modus="rapport-bygg"] .p-hode .eye{flex:1;min-width:0;font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);letter-spacing:0}
body[data-vit-modus="rapport-bygg"] .palett .ms{font-family:'Material Symbols Outlined';font-size:var(--ikon-xl);line-height:1;vertical-align:-4px}
body[data-vit-modus="rapport-bygg"] .p-lukk{flex:none;width:40px;height:40px;border:0;border-radius:var(--md-sys-shape-corner-full);background:transparent;color:var(--md-sys-color-on-surface-variant);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .18s}
body[data-vit-modus="rapport-bygg"] .p-lukk:hover{background:var(--md-sys-color-surface-container)}
body[data-vit-modus="rapport-bygg"] .p-kropp{overflow:auto;padding:16px 20px 20px;min-height:0}
body[data-vit-modus="rapport-bygg"] .p-kropp .kpi-chips{display:block}
body[data-vit-modus="rapport-bygg"] .p-kropp .kpi-gruppe{background:transparent;border:0;border-radius:0;padding:14px 0 0;margin:0;border-top:1px solid var(--md-sys-color-outline-variant)}
body[data-vit-modus="rapport-bygg"] .p-kropp .kpi-gruppe:first-child{border-top:0;padding-top:0}
body[data-vit-modus="rapport-bygg"] .p-kropp .kpi-gruppe-h{font:500 .9375rem/1.4rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);border-bottom:0;padding-bottom:0;margin-bottom:10px}
body[data-vit-modus="rapport-bygg"] .p-kropp .kpi-gruppe-ant{font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="rapport-bygg"] .p-kropp #forslag{grid-template-columns:1fr;margin-top:16px}
body[data-vit-modus="rapport-bygg"] .p-kropp #forslag:not(:empty){padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}
/* Steg to: visningene foerst, og veien tilbake til nokkeltallene som en synlig knapp. */
body[data-vit-modus="rapport-bygg"] .p-valgt{display:none}
body[data-vit-modus="rapport-bygg"] .palett.steg2 .kpi-chips{display:none}
body[data-vit-modus="rapport-bygg"] .palett.steg2 .p-valgt{display:flex;align-items:center;gap:12px;margin-bottom:16px}
body[data-vit-modus="rapport-bygg"] .p-valgt .n{flex:1;min-width:0;font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="rapport-bygg"] .palett.steg2 .p-kropp #forslag{padding-top:0;border-top:0;margin-top:0}
@media print{body[data-vit-modus="rapport-bygg"] main.x .ark{background:transparent!important;border:0!important;padding:0!important;max-width:718px!important} /* padding nulles paa papiret, saa maalet maa vaere INNHOLDET (718 = 190 mm), ellers blir arket 766 og siste maaned faller utenfor */body[data-vit-modus="rapport-bygg"] main.x #oppsett{display:none!important}body[data-vit-modus="rapport-bygg"] .palett{display:none!important}}
@media(max-width:700px){body[data-vit-modus="rapport-bygg"] .palett{left:12px!important;right:12px!important;width:auto;top:auto!important;bottom:12px;max-height:70vh;transform-origin:bottom center}}

/* DYBDEVALGET PAA EGEN RAD UNDER SPOERSMAALSMENYEN (vedtak 16.08, gjenopprettet 08.09.2026).
   Det sto oeverst ved overskriften — altsaa foer du har lest sammenhengen og valgt spoersmaal.
   Raden har eget element fordi regelen «:is(:has(> .q-faner)) > .seg{display:none}» skjuler en .seg
   som ligger rett ved siden av menyen; her er den ikke lenger et direkte barn. */
/* KONTROLLRADEN: spoersmaalet, saa dybden — begge fra samme venstrekant som alt annet paa sida.
   Foerste forsoek la dybden fritt til hoeyre. Andre forsoek la dem paa samme linje, men ved 1 280 px
   brot den likevel til linje to og landet til venstre — altsaa vilkaarlig. Naa er det bestemt: alltid
   egen rad, alltid samme kant. Det er symmetrien Kenneth ba om, og det er der vedtaket fra 16.08 sa. */
main.x .kontrollrad{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
main.x .kontrollrad > .q-faner{max-width:100%}
/* Perioden og valget om den pågående måneden hører sammen (21.09.2026): velgeren
   først, toggelen under, venstrestilt som knapperader ellers i huset. */
main.x .periodevalg{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3)}
/* Forbeholdet i demoens koblingsvisning (21.09.2026): står først, og skal leses.
   Ingen lilla flate — den er forbeholdt fagord og primærknapper (flat-vakta). */
main.x .kobl-demo{margin:0 0 var(--sp-4);padding:var(--sp-4) var(--sp-5);background:var(--md-sys-color-surface-container);border-radius:var(--boks-radius);color:var(--md-sys-color-on-surface)}
main.x .periodevalg > .periode{width:100%}
/* DYBDERADEN (11.09.2026): Innsikt/Detaljene til venstre, periodevelgeren til hoeyre — samme linje. Raden flyttes
   under noekkeltallene av vit-forsta-faner.js; naar den brekker (smal skjerm) legger velgeren seg under, fortsatt hoeyre. */
main.x .dybderad{display:flex;align-items:flex-start;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;width:100%}
main.x .dybderad > .seg{margin:0}
main.x .dybderad > .f-periode{margin-left:auto;margin-top:var(--fp-topp,22px)} /* bare naar helten mangler slottet — Forstaa tegner stripa i helten (11.09) */

/* DET ERSTATTEDE SPORET MAA FAKTISK VAERE UTE AV FLYTEN (09.09.2026).
   Regelen over (.vsh-erstattet, ca. linje 3681) klipper sporet bort naar
   skallet har byttet det mot en nedtrekksliste paa mobil. Men lenger nede
   staar «.gran,.lens,.seg,… {position:relative}» — samme spesifisitet, senere
   i fila, og den vant. Sporet ble derfor liggende i flyten.
   MAALT paa Oversikt (iPhone 13): .bh var 231 px hoey der innholdet er 91 px.
   De 140 px var den usynlige knapperada og lufta rundt den — paa hver eneste
   side som bytter en velger, ikke bare denne.
   Doblet klassenavn gir 0,2,0 og vinner uansett rekkefoelge. Sporet blir
   staaende i DOM-en med maalbar geometri, som kommentaren over krever.
   Sporet beholder sin EGNE MAAL. Foerste forsoek klemte det til 1x1 px, slik
   den opprinnelige regelen ville. Men kommentaren over sier at fanebytterne
   leser geometri paa knappen de skal skru paa — og en knapp i en 1 px hoey
   boks med overflow:hidden maaler null. Regelen har aldri vaert i kraft, saa
   ingen vet om den holder; og det var nettopp en «trygg» CSS-endring som tok
   fanene sist. absolute tar det ut av flyten, visibility skjuler det, og
   maalene staar igjen aa lese. */
.vsh-erstattet.vsh-erstattet{position:absolute!important;visibility:hidden!important;
  pointer-events:none!important;margin:0!important;z-index:-1!important}

/* INGEN INFOTEKST OVER TO LINJER (Kenneth 09.09.2026 — gjentatt mange ganger).
   MAALT paa Resultat i Forstaa: etiketten «Alt du solgte for i septem…» ble
   kuttet MIDT I ORDET av en enkeltlinjes ellipse, mens smaateksten under gikk
   over tre linjer. Begge deler er samme feil: teksten faar bestemme hoeyden.
   Regelen er to linjer, og den hoerer i malen — ikke i hvert kall. */
.vv-kpi-lbl,.kpi-lbl,.kort .lbl,.vv-kpi-maal,.kort-maal,.kort .maal,.kort .sml{
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  overflow:hidden;white-space:normal;text-overflow:ellipsis;overflow-wrap:anywhere}
/* VERDIEN OGSAA. Paa Endring er «verdien» en setning — «Varene ble billigere»
   — og den ble kuttet midt i ordet av en enkeltlinjes ellipse: «Varene ble
   billi…». Et tall brekker ikke uansett; en setning skal faa to linjer. */
.vv-kpi-val{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  overflow:hidden;white-space:normal;overflow-wrap:anywhere}

/* NEDTREKKSLISTA SKAL FOELGE M3 (Kenneth 09.09.2026: «menyvelgeren/
   nedtrekksmenyen maa foelge resten av M3»).
   MAALT: .vsh-ned tegnet seg med --valg-flate og --valg-ramme, og begge er
   `transparent` i Kraken — sporet er boksen for en knapperad, saa den
   ENKELTE knappen skal vaere naken. Men naar rada er byttet mot en
   nedtrekksliste finnes ikke sporet lenger, og da sto lista igjen som loes
   tekst med en pil: ingen flate, ingen kant, ingen hoeyde som stemte med
   resten. M3 tegner en slik kontroll som et felt.
   Vi bruker de samme M3-tokenene som kortene og knappene ellers, saa den
   foelger med naar temaet skifter. */
.vsh-ned{
  /* Lista ERSTATTER en segmentgruppe, saa den skal ha segmentgruppas form —
     ikke et tekstfelt sin. MAALT: corner-small ga 4 px ved siden av et kort
     paa 28, og det leste som et fremmedelement. --md-sys-shape-corner-gruppe
     er den samme formen sporet har paa pc. */
  background-color:var(--valg-spor,var(--md-sys-color-surface-container-high,var(--surface-3)));
  border:1px solid var(--valg-spor-ramme,var(--md-sys-color-outline-variant,var(--line)));
  /* Kraken sier selv «valgflater helt runde» — det tokenet er --valg-radius,
     og det er det denne kontrollen er. (Ikke --md-sys-shape-corner-gruppe:
     det loeste ikke til 22 px paa denne noden, 4 kom ut.) */
  border-radius:var(--valg-radius);
  color:var(--md-sys-color-on-surface,var(--ink));
  min-height:48px;
  transition:background-color .15s,border-color .15s;
}
.vsh-ned:hover{background-color:var(--md-sys-color-surface-container-highest,var(--surface-2))}
.vsh-ned:focus-visible{
  outline:2px solid var(--md-sys-color-primary,var(--brand));outline-offset:2px;
  border-color:var(--md-sys-color-primary,var(--brand));
}

/* RADER ER RADER, IKKE PILLER (Kenneth 09.09.2026: «sånne halvmåner/rester av
   bokser på talloppstillingen»).
   .tl-rad i «Velg linje — grafen følger» er <button> uten egen drakt, og arvet
   derfor knappefamiliens form: helt runde ender. Stablet i en liste leser det
   som avkuttede bokser, ikke som rader. Sebraen ligger alt der; det som
   manglet var at rada slutter aa vaere en knapp visuelt.
   Trykkflata er uendret — bare formen. */
.tl-tab .tl-rad{
  display:flex;align-items:center;gap:10px;width:100%;box-sizing:border-box;
  border:0;background:none;text-align:left;font:inherit;color:inherit;cursor:pointer;
  padding:9px 12px;
  /* !important fordi knappefamilien setter den runde forma med hoeyere
     spesifisitet enn en klasse — maalt i prod: radiusen sto fortsatt paa
     9999 px etter foerste forsoek. Verdien er et token, ikke et tall. */
  border-radius:var(--md-sys-shape-corner-extra-small)!important;
}
.tl-tab .tl-rad .tl-navn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tl-tab .tl-rad .tl-verdi,.tl-tab .tl-rad .tl-delta{flex:none;font-variant-numeric:tabular-nums}
.tl-tab .tl-rad:hover{background:var(--md-sys-color-surface-container-high,var(--surface-3))}
.tl-tab .tl-rad.on{background:var(--md-sys-color-secondary-container,var(--brand-soft));
  color:var(--md-sys-color-on-secondary-container,var(--ink))}

/* Hovedtallet paa Oversikt er valget «Omsetning» (se oversikt-lim.js). Det maa
   se ut som noe man kan trykke paa — ellers er veien tilbake usynlig. */
main.x #helt .tall{cursor:pointer;border-radius:var(--md-sys-shape-corner-medium,12px);
  transition:background-color .15s;margin:-4px -8px;padding:4px 8px}
main.x #helt .tall:hover{background:var(--md-sys-color-surface-container-high,var(--surface-3))}

/* DEN GLOBALE PERIODEVELGEREN PAA FORSTAA (Kenneth 09.09.2026).
   «Det skal vaere EN global periodevelger, og den skal man kunne ENKELT bla
   gjennom uavhengig av hvilken kategori man er paa.» Den staar i kontrollrada
   over fanene, i samme spor-grammatikk som resten av valgene. */
/* ══ PERIODEVELGEREN — M3 MonthsNavigation ═════════════════════════════
   Kenneth 10.09.2026: «den jaevla periodevelgeren NEKTER JEG AA TRO er en
   del av expressive 3.»
   Han hadde rett. Foerste utgave var mitt eget paafunn — to spor med piler
   inni. Formen her er M3 sin egen, fra androidx
   compose/material3/.../DatePicker.kt:
     MonthsNavigation (2454)   rad: menyknapp til venstre, pilpar til hoeyre
     YearPickerMenuButton (2530) TextButton, CircleShape, ingen ramme
     pilene                    IconButton m/ KeyboardArrowLeft/Right
   Menyknappen lar deg HOPPE, pilene stegger. Etikettene «Du ser paa» /
   «Sammenlignet med» er Vitins tillegg — de er tekst, ikke en ny komponent. */
/* ══ PERIODEVELGEREN ER AARSSTRIPA I HELTEN (Kenneth 11.09.2026, mock 97 godkjent) ══
   Formen paa stripa er Oversikts aarsstripe (.strip over). Her: slott med aarets soeyle (og fjoraarets naar det
   maales mot i fjor), den du ser paa fylt, den du maaler mot med ramme, ordene «denne»/«mot» under, «I aar» som
   trettende slott, tre valgknapper (husets .seg) og setningen i klartekst. Helten faar en tredje rad for stripa. */
/* Strukturelt, ikke sidenavn (20.09): alle helter med periodestripe får tredje rad — Forstå, Oversikt, Resultat. */
main.x .helt:has(> .periode){grid-template-columns:auto 1fr;grid-template-areas:"tall tekst" "stripe stripe"}
main.x .helt:has(> .periode) > .tall{grid-area:tall}
main.x .helt:has(> .periode) > div:not(.tall):not(.periode){grid-area:tekst}
main.x .helt > .periode{grid-area:stripe;margin-top:6px;padding-top:16px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-on-primary-container) 14%,transparent)}
main.x .helt > .periode:empty{display:none}
/* ══ DEN STABLEDE HELTBOKSEN (Kenneth 20.09.2026) ══════════════════════════
   «Synes du det å stappe den boksen med ulogisk tekstbrytning og alt for mye stappet inn er oversiktlig og
   pedagogisk? … kan du prøve å jobbe globalt og systematisk?» / «Er det to bokser der?» / «Skal du jobbe med det
   globale tokenet eller fortsette å kode lokalt?»
   Helten er ÉN boks overalt. Kartlagt 20.09 (scripts/maal/_p64-helt-kartlegging.mjs): 14 sider har helten med
   tall + «Sammenhengen» + «Det viktigste»; på pc er den to kolonner (tallet · teksten). Stablet — under 1200 px,
   og dermed også Light «Hele sida», som bruker SAMME regel — er rekkefølgen: øyebrynet ØVERST, tallet, én
   undertekst, chipen, metalinja, prosaen, «Det viktigste». Tekstkolonnen løses opp (display:contents) så
   øyebrynet kan stå først; radavstanden er 0 og delene bærer sin egen luft fra Kraken (--luft-topp), ellers
   arver kolonnen pc-ens kolonnegap som radgap. Velgerne er strukturelle, ikke sidenavn: helter uten tall er én
   rad fra før (:has(> .tall)), og helten med periodestripe (Forstå) har egne grid-områder og holdes utenfor
   (:not(:has(> .periode))). */
@media(max-width:1200px){
main.x .helt:has(> .tall):has(> div:not(.tall)):not(:has(> .periode)){row-gap:0;min-height:0;align-items:start}
main.x .helt:has(> .tall):not(:has(> .periode)) > div:not(.tall){display:contents}
main.x .helt:has(> .tall):not(:has(> .periode)) > div:not(.tall) > .eye{order:-1;margin-bottom:var(--luft-topp)}
main.x .helt:has(> .tall):not(:has(> .periode)) > .tall,main.x #helt:has(> .tall):not(:has(> .periode)) > .tall{margin:0 0 var(--luft-topp);padding:0} /* #helt: det trykkbare tallet har margin:-4px -8px — id-regelen vant over avstanden (målt 20.09) */
main.x .helt:has(> .tall):not(:has(> .periode)) > div:not(.tall) > p:first-of-type{margin-top:0}
main.x .helt:has(> .tall):not(:has(> .periode)) > .tall > span{max-width:none} /* full bredde: 18em-taket er for den smale tallkolonnen på pc */
main.x .helt:has(> .tall):not(:has(> .periode)){--helt-under-disp:none;--helt-chip-disp:none} /* Stablet: ingen tekst før teksten (Kenneth 20.09: «Hvorfor skal du ha en tekst før teksten? Få det inn i informasjonen som kommer under»). Underteksten og chipen vises ikke som egne linjer; skallet (vit-shell.js heltInnledning) fletter dem inn som første setning i «Sammenhengen» når prosaen ikke alt bærer tallet. Variabler, ikke velgere: pc- og Light-regelen leser dem begge. */
/* Klemt: tre linjer prosa, to punkter, og «Vis mer» (vit-shell.js heltVisMer). Åpen: alt. */
main.x .helt.klemt > div:not(.tall) > p:not(.vh){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
main.x .helt.klemt > div:not(.tall) > ul > li:nth-child(n+3){display:none}
main.x .helt > div:not(.tall) > .helt-mer{justify-self:start;margin-top:var(--luft-topp);height:auto;padding:0}
}
main.x .periode .hode{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
main.x .periode .hode .eye{color:var(--md-sys-color-on-primary-container);opacity:.85}
main.x .periode .hode .seg{--valg-h:32px;margin:0}
main.x .periode .hode .aar{display:flex;align-items:center}main.x .periode .slott i.fjor{cursor:pointer}main.x .periode .slott i.fjor:hover{background:color-mix(in srgb,var(--md-sys-color-on-primary-container) 28%,transparent)}main.x .periode .ord button.o{border:0;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;border-radius:var(--md-sys-shape-corner-extra-small);font-family:inherit}main.x .periode .ord button.o:hover{background:color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent)}main.x .periode .ord button.o:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:1px}main.x .periode .hode .aar:empty{display:none}main.x .periode .hode .aar .seg{--valg-h:32px;margin:0}
/* KOMPAKT (Kenneth 20.09: «Den må naturligvis bli mindre på Oversikt og Resultat, men samme motor/UI og UX»): samme deler, lavere stolper, mindre skrift. */
main.x .periode.kompakt .strip{height:46px;gap:4px}main.x .periode.kompakt .hode{margin-bottom:6px;gap:8px}main.x .periode.kompakt .hode .seg,main.x .periode.kompakt .hode .aar .seg{--valg-h:28px}main.x .periode.kompakt .hode .eye{display:none}main.x .periode.kompakt .ord{margin-top:4px;gap:4px}main.x .periode.kompakt .setning{margin-top:6px;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain)}main.x .periode.kompakt .slott.aar{font:500 .75rem/1rem var(--md-ref-typeface-plain)}main.x .helt > .periode.kompakt{padding-top:10px}
main.x .periode .strip{display:grid;grid-template-columns:repeat(12,1fr) 72px;gap:6px;align-items:end;height:84px;margin:0}
main.x .periode .slott{display:flex;align-items:flex-end;justify-content:center;gap:2px;height:100%;border:0;background:none;padding:0;cursor:pointer;border-radius:var(--md-sys-shape-corner-small);font-family:inherit}
main.x .periode .slott:hover i.na{transform:translateY(-2px)}
main.x .periode .slott i{display:block;width:100%;border-radius:var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-extra-small) var(--md-sys-shape-corner-extra-small);transition:transform .15s,background .2s}
main.x .periode .slott i.na{background:color-mix(in srgb,var(--md-sys-color-primary) 28%,var(--md-sys-color-primary-container))}
main.x .periode .slott i.fjor{background:color-mix(in srgb,var(--md-sys-color-on-primary-container) 14%,transparent);width:55%}
main.x .periode .slott.denne i.na{background:var(--md-sys-color-primary)}
main.x .periode .slott.mot i.na{background:transparent;box-shadow:inset 0 0 0 2px var(--md-sys-color-primary)}
main.x .periode .slott i.fjor.motfjor{background:transparent;box-shadow:inset 0 0 0 2px var(--md-sys-color-primary)}
main.x .periode .slott.paa:not(.denne) i.na{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--md-sys-color-primary) 28%,var(--md-sys-color-primary-container)) 0 4px,transparent 4px 8px)}
main.x .periode .slott.kommer{cursor:default}
main.x .periode .slott.kommer i.na{height:22px!important;background:transparent;border:1px dashed color-mix(in srgb,var(--md-sys-color-on-primary-container) 30%,transparent)}
main.x .periode .slott.aar{align-items:center;border-radius:var(--md-sys-shape-corner-large);border:1px solid color-mix(in srgb,var(--md-sys-color-on-primary-container) 30%,transparent);font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-primary-container)}
main.x .periode .slott.aar.denne{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-color:transparent}
main.x .periode .slott:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}
/* «VELG SELV» LEDER (Kenneth 14.09): steg 0 pulserer alle slottene, steg 1 staar den valgte fylt og stille mens resten pulserer. */
@keyframes fpPuls{0%,100%{opacity:1;transform:translateY(0)}50%{opacity:.45;transform:translateY(-2px)}}
main.x .periode .strip.velg0 .slott:not(.kommer):not(.aar) i.na,main.x .periode .strip.velg1 .slott:not(.denne):not(.kommer):not(.aar) i.na{animation:fpPuls 1.3s ease-in-out infinite}
main.x .periode .strip.velg1 .slott.denne i.na{animation:none}
main.x .periode .strip.velg0 .slott:nth-child(2n) i.na,main.x .periode .strip.velg1 .slott:nth-child(2n) i.na{animation-delay:.2s}
main.x .periode .strip.velg0 .slott:nth-child(3n) i.na,main.x .periode .strip.velg1 .slott:nth-child(3n) i.na{animation-delay:.4s}
main.x .periode .setning.instruks{color:var(--md-sys-color-primary)}
main.x .periode .setning.instruks b{font-weight:600}
@media (prefers-reduced-motion:reduce){main.x .periode .strip .slott i.na{animation:none!important}}
main.x .periode .ord{display:grid;grid-template-columns:repeat(12,1fr) 72px;gap:6px;text-align:center;margin-top:6px}
main.x .periode .ord span,main.x .periode .ord button.o{font:400 .6875rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-primary-container);opacity:.8}
main.x .periode .ord span b,main.x .periode .ord button.o b{display:block;font:600 .6875rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);opacity:1;letter-spacing:.3px}
main.x .periode .setning{margin:12px 0 0;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-primary-container)}
main.x .periode .setning b{font-weight:500}
@media (max-width:920px){
  body[data-vit-modus="forsta"] main.x .helt{grid-template-columns:1fr;grid-template-areas:"tall" "tekst" "stripe"}
  main.x .periode .strip,main.x .periode .ord{grid-template-columns:repeat(12,1fr) 56px;gap:3px}
  main.x .periode .hode{flex-direction:column;align-items:flex-start}
}
/* html:not(.vsh-light) på alle reglene under (20.09.2026): låsen er for pc-sida som bytter faner. I Light viser «Hele sida» (dok-modus) den samme markupen, og der klippet den underteksten til «per …», skjulte punkt tre i «Det viktigste» og strakk boksen til 524 px — målt på Lager. Light-skjermene har sin egen kompakt-regel. */

/* HELTBOKSEN SKAL IKKE HOPPE (Kenneth 09.09.2026: «naar man blar mellom
   kategoriene saa hopper det fordi den blaa/lilla infoboksen oeverst endrer
   stoerrelse basert paa teksten den skal vise. Den skal vaere statisk,
   teksten inni skal endre seg»).
   MAALT paa Forstaa, sju faner: 224–404 px, altsaa 180 px hopp ved hvert
   fanebytte. Hoeyden er satt til det hoeyeste innholdet, saa ingenting
   klippes; kortere tekst faar luft i stedet for aa dra resten av sida opp. */
html:not(.vsh-light) main.x #helt:has(> .periode){align-content:center} /* min-height:372px er borte (23.09): låsen målte helten før periodestripa flyttet inn, og holdt ikke lenger — målt 446–600 px på Forstå. Høyden eies nå av «SAMMENHENGEN HAR ÉN STØRRELSE» under. */
/* SAMMENHENGEN HAR ÉN STØRRELSE (Kenneth 23.09.2026: «Det er et lite blink/hopp hver gang man manøvrerer inn på ny
   kategori på Forstå … Begynn med å standardiser størrelsen på sammenhengen boksen»).
   MÅLT samme dag (scripts/maal/_p101-helt-linjer.mjs): tekstkolonnen var 135–289 px på Forstå og 286–459 på
   Lager-Forstå, så faneraden under flyttet seg opptil 154 px ved hvert bytte. Nå er tekstkolonnen ÉN høyde
   (--helt-tekst, Kraken): prosaen fire linjer, «Det viktigste» tre linjer. Er teksten lengre, klemmes den, og
   «Vis alt» øverst til høyre i boksen åpner resten (vit-shell.js heltVisMer). Et nytt fanevalg lukker den igjen.
   Gjelder helten på sidene med faner (den med periodestripe: Forstå og Lager-Forstå), og bare på web —
   Light har sine egne skjermer. */
html:not(.vsh-light) main.x #helt:has(> .periode) > div:not(.tall):not(.periode){height:var(--helt-tekst);box-sizing:border-box;overflow:hidden;position:relative;align-self:start}
html:not(.vsh-light) main.x #helt:has(> .periode) > .tall{align-self:start}
html:not(.vsh-light) main.x #helt:has(> .periode):not(.aapen) #hProsa{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}
/* #viktigst hadde max-height 3 × 1.5rem (23.09) — med nøkkelpunktenes 8 px luft (26.09) klippet den midt i tredje punkt selv om kolonnen (152 px) hadde plass til fire; kolonnen klipper nå alene, og heleUt (vit-shell.js) skjuler hele punkter som ikke får plass */
html:not(.vsh-light) main.x #helt:has(> .periode).aapen > div:not(.tall):not(.periode){height:auto}
html:not(.vsh-light) main.x #helt:has(> .periode) .helt-alt{position:absolute;top:0;right:0;height:auto;padding:0;color:var(--md-sys-color-primary)}
/* MOBIL HOPPER MEST (maalt i prod: 466–697 px, 231 px hopp). Jeg lot foerst
   boksen staa fri her og begrunnet det med at stabling er riktigere enn
   tomrom — men hoppet er verre paa liten skjerm, ikke mindre, og Kenneth ba
   om at boksen er STATISK.
   Paa telefon kommer hoeydeforskjellen fra «Det viktigste»-lista, som brytes
   over flere linjer. Der viser vi de to viktigste punktene — resten staar i
   Detaljene — og da er boksen baade jevn og kortere. Det er ogsaa det samme
   light-prinsippet som resten av mobilvisningen. */
@media(max-width:1200px){html:not(.vsh-light) main.x #helt:not(.prosa){min-height:0;align-content:start}} /* :not(.prosa) og hele 1200-spennet (20.09): regelen over fikk :not(.prosa) 18.09 og vant på spesifisitet, så helten sto 372 px høy med tomrom over og under teksten på pc under 1200 (Kenneth: «Hvorfor må det være så mye tomrom?»). Stablet klippes teksten, så boksen står stille uten minstehøyde. */
@media(max-width:680px){
  /* Paa telefon varierer BAADE prosaen og «Det viktigste» i lengde, og da
     hjelper det ikke aa laase hoeyden: maalt 466–646 px selv med to punkter.
     Aa sette min-height til 646 ville gitt en boks paa nesten hele skjermen.
     Riktig vei er aa klippe TEKSTEN, ikke strekke boksen — samme
     light-prinsipp som resten av mobilvisningen. Hele teksten staar i
     Detaljene og i chatten. */
  html:not(.vsh-light) main.x #helt #hProsa{
    display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6;
    overflow:hidden;
  }
  /* MAALT hva som faktisk varierte, i stedet for aa gjette hoeyden:
       prosa      156 px overalt (klemmingen over virker)
       .tall      120 eller 140 — chipen brytes til to linjer paa noen faner
       #viktigst  102, 128 eller 154 — punktene brytes ulikt
     Begge klemmes: chipen til én linje, lista til to punkter i fast hoeyde.
     Da er alle delene like hoeye, og boksen staar stille uten at jeg maa
     jage et magisk tall. */
  html:not(.vsh-light) main.x #helt .tall .d{
    max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  /* MAALT: Krona sto 20 px hoeyere enn de andre fordi underteksten «igjen av
     hver hundrelapp inn» brytes til to linjer. Én linje her — hele setningen
     staar i Sammenhengen rett under. */
  html:not(.vsh-light) main.x #helt .tall > span:not(.d){
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  html:not(.vsh-light) main.x #helt #viktigst{height:104px;overflow:hidden}
  html:not(.vsh-light) main.x #helt #viktigst li:nth-child(n+3){display:none}
}

/* SUBTEKSTEN PAA KPI-KORTENE STAAR PAA ÉN LINJE (samme beskjed).
   Tak paa to linjer fantes fra foer for etiketten; her er kravet strengere:
   det er en kort merknad, ikke en setning. Teksten er kortet i motoren
   («3 117 mindre enn i august (til 6.)» -> «−3 117 mot august»); denne
   regelen er sikkerhetsnettet naar et tall likevel blir for langt. */
main.x .rute .vv-kpi-maal,main.x .rute .maal,main.x .rute .sml,main.x .rute .d{
  display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;
}

/* KORTOVERSKRIFTENE FOELGER TETTHETEN (Kenneth 10.09.2026).
   Foerste forsoek satte tokenet paa `aside.learn .vf h2` — bot-panelets
   overskrift — og traff dermed ikke kortene i hovedkolonnen i det hele
   tatt. MAALT etter deploy: h2 sto fortsatt paa 18 px paa pc. Her staar
   regelen der den faktisk gjelder for alle kort. */
main.x h2{font-size:var(--kort-h2,18px)}

/* EN OVERSKRIFT OVER EN TABELL ER EN OVERSKRIFT (Kenneth 10.09.2026:
   «"alle utgiftskontoene" (som du forøvrig har gjort til en liten
    graa/svart overskrift ditt geni)»). Den sto som .eye — smaatekst i
   versaler. Naa er den h3 i husets grammatikk: svart, lesbar, over
   innholdet den navngir. Motoren skriver den bare naar det ER innhold. */
main.x .ov-tit{
  margin:18px 0 8px;
  font:600 var(--kort-h2,18px)/1.35 var(--md-ref-typeface-plain);
  color:var(--md-sys-color-on-surface);
}

/* ══ INNSIKT/DETALJENE — ET VALG, I HUSETS EGEN VALGFORM ═══════════════
   Kenneth 10.09.2026, to ganger:
     «Innsikt og detaljene er bare skrevet rett paa canvaset … det er
      latskap.»
     «DU velger altsaa aa legge en strek under og sier deg fornoeyd?»

   ROTAARSAKEN, funnet 10.09: `.seg` staar ALLEREDE i den kanoniske
   valgfamilien paa linje 1770, med spor, haarlinje og radius. Kontrollen
   saa bar ut fordi MINE egne regler her overstyrte den — foerst med
   `background:none!important;border:0!important` (to ord paa lerretet),
   saa med en M3-understrek. Kommentaren over familieregelen sier det rett
   ut: «Lokale kopier er slettet — legg ALDRI inn en ny … Trenger en flate
   noe eget, er det PLASSERING (margin, flex), aldri utseende.»

   Denne blokka gjoer derfor bare to ting, og ingen av dem er utseende:
     · setter --valg-h lavere, saa kontrollen er MINDRE enn fanerada over.
       Det er hierarkiet: samme form, mindre stoerrelse.
     · plasserer ledeteksten «Vis meg» over sporet (satt av
       vit-forsta-faner.js, som er det ene stedet begge dybdeveiene gaar
       gjennom). */
main.x [data-qseksjon] .seg[data-dybde-for],main.x .seg[data-dybde-alene]{
  --valg-h:var(--dybde-h,30px);
  position:relative;margin:19px 0 14px;
}
main.x [data-qseksjon] .seg[data-dybde-for] > button,main.x .seg[data-dybde-alene] > button{
  --valg-font-str:var(--dybde-fs,13px);
}
/* .seg-lede («Vis meg») er fjernet 21.09.2026 — se settLedetekst i vit-forsta-faner.js. */

/* DUPLIKATET ER FJERNET (10.09.2026). Her laa den forrige utgaven av
   dybdekontrollen — M3 secondary tabs med understrek — og siden den sto
   ETTER den nye spor-regelen lenger oppe, vant den paa rekkefoelge. Kenneth
   saa derfor fortsatt «bare en strek under seg» etter at sporet var skrevet.
   SAMME FEIL SOM db9bf77f, ni timer tidligere: jeg skrev en ny regel uten
/* ══ FANERADEN RULLER, DEN BREKKER ALDRI (Kenneth 10.09.2026) ═══════════
   «Hovedboksen er nå blitt så stor at den går over 2 linjer … lag et format
   som gir en bla-funksjon når man gjør bildet mindre, og at det går ned til
   liste når det er mindre enn 4 igjen.»

   MÅLT på Forstå, 1440 → 360 px: fanene sto på ÉN rad ned til 1280, brakk
   til TO på 1100–1024, ble hele igjen på 900–768, og brakk til to og tre
   under 680. Tre ulike brytepunkter, ingen plan.

   M3 (androidx TabRow.kt) sier det rett ut:
     «When a set of tabs cannot fit on screen, use scrollable tabs.»
     ScrollableTabRowMinTabWidth = 90.dp
     ScrollableTabRowEdgeStartPadding = 52.dp — «helps inform the user that
     this tab row can be scrolled»
   Flere rader med faner finnes ikke i M3. Det var min oppfinnelse.

   Derfor: nowrap + vannrett rulling, aldri wrap. Kanten toner ut som hint om
   at det er mer — Expressive-varianten av de 52 dp-ene. Under 680 px bytter
   skallet raden til nedtrekksliste; det er «lista» når selv fire ikke får
   plass (4 × 90 dp = 360 px + kant). */
main.x .q-faner{
  /* !important fordi familie-regelen for .gran/.lens/.seg/.q-faner setter
     `overflow:visible!important`. MAALT: rada hadde scrollWidth 683 mot
     clientWidth 612 — den SKULLE rullet — men overflowX var `visible`, saa
     knappene fløt ut av vinduet i stedet. Skala-vakta fanget det.
     Bredden maa ogsaa loesnes: familien setter `width:fit-content`, som
     gjoer beholderen like bred som innholdet — og da finnes det ingen
     ramme aa rulle innenfor. */
  display:flex;flex-wrap:nowrap!important;
  overflow-x:auto!important;overflow-y:hidden!important;
  width:100%!important;max-width:100%!important;
  scrollbar-width:none;-ms-overflow-style:none;
  scroll-snap-type:x proximity;scroll-behavior:smooth;
  /* «black» er ikke en merkevarefarge her — det er masken sin alfakanal:
     ugjennomsiktig der raden skal vises, gjennomsiktig der den toner ut.
     Et fargetoken ville vaert feil verktoey. */
  -webkit-mask-image:linear-gradient(90deg,black calc(100% - 28px),transparent);
  mask-image:linear-gradient(90deg,black calc(100% - 28px),transparent);
}
main.x .q-faner::-webkit-scrollbar{display:none}
main.x .q-faner > button,main.x .q-faner > .qf{
  flex:0 0 auto!important;white-space:nowrap;scroll-snap-align:start;
}
/* Er alt synlig, skal ingen kant tone ut — masken ville da lyve om at det
   finnes mer til høyre. Klassen settes av skallet når raden ikke ruller. */
main.x .q-faner.uten-rulling{
  -webkit-mask-image:none;mask-image:none;overflow-x:visible;
}



/* ══ 11.09 MOBIL — LIGHT-VISNINGEN (mock 94 godkjent). Pc-flata (.app) staar skjult i dokumentet; vit-light.js tegner
   chromet: top app bar small (64, Surface, TitleLarge), sidene som ruller skjerm for skjerm (scroll-snap), navigation bar
   (64, SurfaceContainer, indikator SecondaryContainer 56×32), bot-arket (bottom sheet) og snackbaren. Fire ting per
   skjerm: eyebrow, ett tall, én setning, én graf. Infoboksen i SAMME token som Sammenhengen paa pc. ══ */
/* DOKUMENTET ER RULLEFLATEN (Kenneth 12.09: «Resten så refresher nettleseren, på Vitin så refresher bare siden … Hvorfor?»).
   Foer var html/body laast (100dvh, overflow:hidden) og pageren rullet — da fikk Safari aldri sin egen «dra ned for aa
   laste inn paa nytt», og Light tegnet en egen. Naa ruller dokumentet: app bar og periodevelger er sticky oeverst,
   menyen fast nederst, skjermene flyter i dokumentet og snapper (proximity) til toppen under velgeren. Nettleseren
   eier refreshen, og rullingen er nettleserens egen — én rulleflate, ingen egen gest. */
html.vsh-light,html.vsh-light body{margin:0;background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface)}
/* SEKSJONSFOKUS (Kenneth 12.09: «naa er heile siden en stor scroll — ingen fokus underveis»): dokumentet snapper til
   toppen av hver skjerm (mandatory) og stopper paa hver (stop: always) — én skjerm om gangen som foer, men i
   nettleserens egen rulling. En skjerm hoeyere enn vinduet leses ferdig foer neste snapper inn. */
/* M3: top app bar 64, navigation bar 80. Dokumentet snapper skjerm for skjerm (mandatory + stop always) — hver grafskjerm
   er noeyaktig én visning (.side.fast), saa det finnes ingen hvilestilling midt i en skjerm (Kenneth 13.09: «rett ned til
   neste graf»). Listeskjermer er minst én visning og ruller videre. */
/* Snappen sitter paa html: body maa vaere overflow:visible, ellers er body selv rulleflata (html har overflow-x:hidden
   fra skallet) og snap-omraadene hoerer til body — maalt 13.09: scrollTo(300) sto paa 300 i baade Chromium og WebKit. */
html.vsh-light body{overflow:visible}
/* MAGNETEN ER TATT UT (Kenneth 21.09: «det er fremdeles hopping mellom scrollen
   paa oekonomi paa light. Enten saa maa du fikse magnetlogikken eller saa maa du
   gaa tilbake til vanlig scroll med tydelig overskriftsskiller»).

   MÅLT med hjulet paa 393×852, tilstand.html, skjermer paa 708 px:
     hjul 120 px  →  28  →  spretter tilbake til 0
     hjul 200 px  →  10  →  spretter tilbake til 0
     hjul 300 px  →  ingenting skjer
     hjul 420 px  →  hopper hele 708
   Tre av fire forsoek gir enten null framdrift eller et rykk som gaar tilbake.
   `mandatory` velger naermeste snap-punkt, og under halve skjermen er det den
   du staar paa. Det er hoppingen.

   `proximity` ble maalt i samme DOM og loeser det ikke: 120 og 200 px spretter
   fortsatt tilbake, fordi du er NAER punktet — og det er der man alltid er.
   Uten snap er rullingen jevn: 120 → 320 → 620 → 1040.

   Skjermene er fortsatt nøyaktig én visning hoeye. Det som holder dem fra
   hverandre naa er skillet over oeyebrynet, ikke magneten. */
html.vsh-light{--vl-topp:64px;--vl-nav:80px;scroll-padding-top:var(--vl-topp);scroll-padding-bottom:var(--vl-nav)}
/* Bare paa skjerm: paa papir skal web-sida (rapporten) ut, ikke Light — utskriften fra Baerekraft var et blankt ark
   (Kenneth 13.09). Print-regelen for #vlight staar sist i fila. */
@media screen{html.vsh-light body > :not(#vlight):not(script):not(style):not(link):not(#preso):not(#vitPersonalLaas):not(.vpd){display:none!important} /* .vpd = husets dialoger (Personal-låsen, NDA-gaten): gaten var display:none på telefon — Aspia på iPhone fikk en tom side (målt 20.09) */}
html.vsh-light body{visibility:visible!important}
html.vsh-light main.x.vlight{display:block;min-height:100dvh;box-sizing:border-box;font-family:var(--md-ref-typeface-plain);padding:var(--vl-topp) 0 0!important;gap:0;max-width:none;margin:0;min-width:0}
/* fixed, ikke sticky: sticky doede av en overflow-forfar (maalt i WebKit 12.09: app bar rullet vekk) */
html.vsh-light .vlight .tab{position:fixed;top:0;left:0;right:0;z-index:5;height:var(--vl-topp)}html.vsh-light .vlight .sider{display:block}html.vsh-light .vlight .mnav{position:sticky;bottom:0;left:auto;right:auto;width:100%;z-index:6;height:var(--vl-nav);padding:12px 0 16px;box-sizing:border-box} /* sticky, ikke fixed (Kenneth 20.09: «Nederste menyen svever i luften når man manøvrerer opp og så ned igjen. Den følger ikke nettleseren»): iOS Safari flytter fixed-elementer først når verktøylinja er ferdig, sticky følger rullingen. Menyen ligger sist i dokumentflyten, så sida trenger ingen bunnpolstring. */

/* PERIODECHIPEN = M3 filter chip med nedtrekk (androidx FilterChipTokens: hoeyde 32, corner-small, selected =
   secondary-container / on-secondary-container, label-large 14/20 500, trailing icon 18). Lista er husets select
   (vsh-ned) tegnet som chipen; pila er Material Symbols arrow_drop_down oppaa. Ligger i skjermens tittelrad. */
/* SKILLET MELLOM SKJERMENE (Kenneth 21.09, da magneten ble tatt ut). Uten snap
   ser man to halve skjermer samtidig, og da maa det vaere tydelig hvor den ene
   slutter og den neste begynner. Hverken border eller margin kan brukes: skjermen
   har fast hoeyde og border-box, saa en piksel border spiser en piksel innhold —
   og mobil-vakta staar paa null overflyt. En inset-haarlinje tar ingen plass.
   Oeyebrynet er overskriften; den faar luft over seg og staar som et avsnittsskille. */
html.vsh-light .vlight .side + .side{box-shadow:inset 0 1px 0 var(--md-sys-color-outline-variant)}
html.vsh-light .vlight .side + .side .rad-topp{padding-top:4px}
html.vsh-light .vlight .side .rad-topp{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:32px}
/* PERIODECHIPEN = M3 filter chip med nedtrekk (Kenneth 13.09: «foelg M3 Expressive») — verdiene staar paa select-regelen under. */
html.vsh-light .vlight .side .periode{position:relative;display:inline-flex;flex:0 0 auto}
html.vsh-light .vlight .side .periode select.vl-chip{appearance:none;-webkit-appearance:none;margin:0;width:auto;min-height:32px;height:32px;padding:0 30px 0 12px;border:0;border-radius:var(--md-sys-shape-corner-small);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);font:500 .875rem/1.25rem var(--md-ref-typeface-plain)} /* M3 FilterChipTokens.kt (androidx, hentet 13.09): ContainerHeight 32, ContainerShape CornerSmall, FlatSelectedContainerColor SecondaryContainer, SelectedLabelTextColor OnSecondaryContainer, LabelTextFont LabelLarge, IconSize 18. Ikke vsh-ned: den klassen er nedtrekket som erstatter en rad (sporets form) — dette er en chip. */
html.vsh-light .vlight .side .periode .ms{position:absolute;right:6px;top:50%;transform:translateY(-50%);pointer-events:none;font-size:var(--ikon-lg);color:var(--md-sys-color-on-secondary-container)}
html.vsh-light .vlight .tab{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;padding:0 4px;background:var(--md-sys-color-surface)}
html.vsh-light .vlight .tab .ik{width:48px;height:48px;display:grid;place-items:center;border:0;background:none;color:var(--md-sys-color-on-surface-variant);font-family:inherit}
html.vsh-light .vlight .tab .merke{width:32px;height:32px;margin:0 auto;border-radius:var(--md-sys-shape-corner-small);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);display:grid;place-items:center;font:600 1rem/1 var(--md-ref-typeface-brand)}
html.vsh-light .vlight .tab h1{margin:0;font:400 1.375rem/1.75rem var(--md-ref-typeface-brand);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* INGEN NOESTEDE RULLEFLATER (Kenneth 12.09, iPhone: skjermen sto fast med tom flate under innholdet, og «kan ikke
   manoevrere opp igjen»). Foer: pageren rullet skjerm for skjerm (mandatory) OG hver skjerm rullet inni seg — to
   rulleflater i hverandre er det Safari roter til. Naa: hver skjerm er saa hoey som innholdet (minst én skjermhoeyde),
   bare pageren ruller, og den snapper til en skjermtopp naar den er naer (proximity). Skjerm for skjerm som i mock 94,
   uten fella. */
html.vsh-light .vlight .sider{position:relative}
/* SEKSJONENE SOM KORT PÅ TELEFONEN (Kenneth 26.09.2026 kveld, «F2» av to forslag fra M3-kilden): seksjonene som følger
   hverandre nedover (01 · Salget, 02 · Lønnen …) hadde ingen egen begynnelse — 0 px mellom, øyebryn i label-størrelse,
   og tabellen i én seksjon gled rett i neste («Mellom de seksjonene er det for lite luft»). Nå: hver seksjon på egen
   flate i surface-container-low (M3 ElevatedCardTokens: ContainerColor = SurfaceContainerLow), XL-hjørner, 20/16/24 px
   innvendig, --seksjon-luft (16 px) mellom, 12 px sidemarg rundt kortene. Øyebrynet blir seksjonens overskrift:
   title-large 22/28 i tekstfargen, nummeret som del av den. */
html.vsh-light .vlight .sider{padding:0 12px}
html.vsh-light .vlight .sider > .side,html.vsh-light .vlight .sider > .side.fast{background:var(--md-sys-color-surface-container-low);border-radius:var(--md-sys-shape-corner-extra-large);padding:20px 16px 24px;box-shadow:none;border:1px solid var(--md-sys-color-outline-variant)} /* kanten (27.09.2026): surface-container-low mot surface målte 1,02:1 lys og 1,12:1 mørk — kortet var usynlig. M3 OutlinedCard: 1 dp outline-variant (androidx OutlinedCardTokens), ingen skygge. */
html.vsh-light .vlight .sider > .side + .side{margin-top:var(--seksjon-luft)}
html.vsh-light .vlight .sider > .side > .rad-topp .eye{font:400 1.375rem/1.75rem var(--md-ref-typeface-plain);letter-spacing:0;text-transform:none;color:var(--md-sys-color-on-surface)}
/* Foerste tegning holdes usynlig til grafene har satt seg (vit-light.js ventPaaGrafene) — sloeret skal aldri vise en flate
   som flytter seg (Kenneth 18.09). Plassen er der, saa rulling og snap er uendret. */
html.vsh-light.vl-tegner .vlight .sider{visibility:hidden}
/* MAALT 12.09 (nav-vakt, ekte beroeringsrulling): med overscroll-behavior:contain paa skjermen naadde fingeren aldri
   pageren — «kan ikke scrolle opp eller ned». Skjermen ruller selv naar den har mer innhold, og gir resten videre. */
/* Skjermen er som mock 94 (godkjent 11.09): padding 20/20/8 og 14 px mellom delene, rett paa lerretet uten boks. */
html.vsh-light .vlight .side{min-height:calc(var(--vl-vh,100dvh) - var(--vl-topp) - var(--vl-nav));box-sizing:border-box;padding:8px 16px 12px;display:flex;flex-direction:column;gap:10px;overflow:visible}
/* ÉN SKJERM ER ÉN SKJERM (Kenneth 20.09: «lønnene vises nederst på telefonen, det er neste side og skal ikke vises før man blar ned dit»): skjermen er nøyaktig den synlige høyden, og har den mer innhold, ruller innholdet inne i skjermen — neste skjerm ligger under folden. Dokumentmodus (.dok) ruller fritt som før. */
/* INNHOLDET FÅR PUSTE (Kenneth 21.09, da magneten ble tatt ut). Med snap var
   skjermen nøyaktig én visning og alt som ikke fikk plass ble klippet — det var
   riktig SAA LENGE man aldri kunne se to skjermer samtidig. Uten magnet ruller
   man fritt, og da er en klippende fasthøyde bare en tvangstrøye: målt 21.09 var
   skjermen 442 px mens innholdet var 488 — 46 px ble borte, og tilpass() svarte
   med å krympe tall og skjule setningen. Nå er skjermen MINST én visning og vokser
   med innholdet: ingenting klippes, ingenting krympes, og skillet over øyebrynet
   viser hvor neste begynner. */
html.vsh-light .vlight .side:not(.dok){min-height:calc(var(--vl-vh,100dvh) - var(--vl-topp) - var(--vl-nav));overflow-x:hidden;-webkit-overflow-scrolling:touch}
/* Grafskjermen er én visning: hoeyden er vinduet minus app bar og meny, grafen tar resten (flex 1), ingenting stikker ut. */
/* Hoeyden er den SYNLIGE (--vl-vh fra visualViewport, satt av vit-light.js): Chrome paa iPhone regner ikke verktoeylinja
   bort fra 100dvh, og infoboksen laa under menyen (Kenneth 13.09). */
html.vsh-light .vlight .side.fast{min-height:calc(var(--vl-vh,100dvh) - var(--vl-topp) - var(--vl-nav));overflow:visible}
/* LAV VISNING (< 640 px synlig, Chrome paa iPhone): tettere luft, mindre tall, én linje setning, trykk-hintet vises foerst
   naar noe er trykket — grafen beholder plassen sin. */
html.vsh-light.vl-lav .vlight .side{padding:6px 16px 8px;gap:6px}
html.vsh-light.vl-lav .vlight .side .helt{padding:10px 14px}
html.vsh-light.vl-lav .vlight .side .tall b{font:400 2rem/2.25rem var(--md-ref-typeface-brand)}
html.vsh-light.vl-lav .vlight .side .helt .tall span{font:400 .875rem/1.125rem var(--md-ref-typeface-plain)}
html.vsh-light.vl-lav .vlight .side .helt .tall .d{margin-top:4px}
/* SETNINGEN BLIR STÅENDE (Kenneth 21.09). Den ble skjult på lav visning for å
   gi grafen plassen i en skjerm med fast høyde. Uten den fasthøyden er det bare
   å fjerne det som forklarer tallet — og forklaringen er halve produktet.
   Helten er fortsatt én rad på lav visning. */
html.vsh-light.vl-lav .vlight .side .helt .tall{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 10px}
html.vsh-light.vl-lav .vlight .side .helt .tall b{display:inline-block}
html.vsh-light.vl-lav .vlight .side .helt .tall span{display:inline-block}
html.vsh-light.vl-lav .vlight .side .verdi:not(.har){display:none}
html.vsh-light.vl-lav .vlight .side .graf{min-height:130px!important}
html.vsh-light.vl-lav .vlight .side .graf.lav{min-height:110px!important}
html.vsh-light.vl-lav .vlight .side .info{padding:6px 12px;font-size:.75rem;line-height:1.125rem}
/* TRANGE TRINN (14.09, maalt paa enheten av tilpass() i vit-light.js): naar innholdet stikker ut av visningen,
   strammes luft og tall i to trinn foer rader skjules — ingenting klippes midt i. */
html.vsh-light .vlight .side.fast.vl-trang{padding:6px 16px 8px;gap:6px}
html.vsh-light .vlight .side.fast.vl-trang .helt{padding:10px 14px}
html.vsh-light .vlight .side.fast.vl-trang .tall b{font:400 2rem/2.25rem var(--md-ref-typeface-brand)}
html.vsh-light .vlight .side.fast.vl-trang .helt .tall span{font:400 .875rem/1.125rem var(--md-ref-typeface-plain)}
html.vsh-light .vlight .side.fast.vl-trang .setning{display:none}
html.vsh-light .vlight .side.fast.vl-trang .graf{min-height:120px!important}
/* Linja under grafen foelger samme stige som setningen: naar visningen er
   trang, gaar den forklarende underlinja foerst. Tallet, retningen og hvor
   mange dager som er med blir staaende — det er selve poenget (Kenneth 21.09:
   «ingen saa langt denne maaneden»). MAALT 21.09 i CI: uten dette tok de to
   linjene plassen som gjorde at fire skjermer paa Tilstand ikke lenger fikk
   innholdet i én visning paa Safari-hoeyde (442 px). Én skjerm er én skjerm. */
html.vsh-light .vlight .side.fast.vl-trang .vl-graflinje small{display:none}
html.vsh-light .vlight .side.fast.vl-trang .vl-graflinje{margin-top:6px;padding-top:5px}
html.vsh-light.vl-lav .vlight .side.fast .vl-graflinje small{display:none}
html.vsh-light.vl-lav .vlight .side.fast .vl-graflinje{margin-top:6px;padding-top:5px}
html.vsh-light .vlight .side.fast.vl-trang .graf.lav{min-height:110px!important}
/* Radene strammes ogsaa: 88 px per rad ga 2 av 13 synlige paa iPhone 16 Pro Max (maalt 14.09). */
html.vsh-light .vlight .side.fast.vl-trang :is(.side,.liste-ark) .vl-rader>li,html.vsh-light .vlight .side.fast.vl-trang .vl-rader>li{padding:8px 0}
html.vsh-light .vlight .side.fast.vl-trang .vl-rader>li .t small{font-size:.75rem;line-height:1rem}
html.vsh-light .vlight .side.fast.vl-trang2 .vl-rader>li{padding:6px 0;gap:8px}
html.vsh-light .vlight .side.fast.vl-trang2 .info{padding:6px 12px;font-size:.75rem;line-height:1.125rem}
html.vsh-light .vlight .side.fast.vl-trang2 .verdi:not(.har){display:none}
html.vsh-light .vlight .side.fast.vl-trang2 .graf{min-height:100px!important}
html.vsh-light .vlight .side.fast.vl-trang2 .vl-graflinje{margin-top:4px;padding-top:4px;font-size:.75rem;line-height:1.125rem}
/* Siste trinn: linja skal vaere ÉN linje. MÅLT 21.09 i CI og lokalt — med
   «mot de samme 19 dagene i fjor» brekker den til to (36 px), og skjermen
   ble 29 px for hoey. Tallet og retningen er poenget; sammenligningen staar
   i grafen og i analysen. Luften mellom delene strammes samtidig, som
   trinnet alt gjoer for tall og rader. */
html.vsh-light .vlight .side.fast.vl-trang2 .vl-graflinje .mot{display:none}
html.vsh-light .vlight .side.fast.vl-trang2 .vl-graflinje .mot-kort{display:inline}
html.vsh-light .vlight .side.fast.vl-trang2{gap:4px}
html.vsh-light .vlight .side.fast.vl-trang2 .graf.lav{min-height:96px!important}
html.vsh-light .vlight .side.fast.vl-trang2 .vl-setn-knapper .btn-tekst{height:28px}
/* Lista i skjermen tar resten av visningen og klippes; «Vis alle» aapner arket med hele lista (Kenneth 13.09). */
html.vsh-light .vlight .side.fast .vl-flyt{flex:1 1 auto;min-height:0;overflow:hidden}
html.vsh-light .vlight .side.fast .liste{max-height:none;overflow:hidden}
html.vsh-light .vlight .side .vl-alle{margin-top:0;justify-content:flex-start;flex:0 0 auto}
html.vsh-light .vlight .ark.liste-ark .vl-flyt,html.vsh-light .vlight .ark.liste-ark .liste{max-height:none;overflow:visible;flex:0 0 auto}
html.vsh-light.vl-en{scroll-snap-type:none}
html.vsh-light .vlight .side.dok{display:block;padding:0 16px 24px}
html.vsh-light .vlight .side.dok main.x{padding:8px 0 0!important;gap:18px;min-width:0}
html.vsh-light .vlight .side.dok main.x .topp{flex-direction:column;align-items:flex-start}
html.vsh-light .vlight .side .graf{flex:0 0 auto}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader{list-style:none;margin:0;padding:0;display:flex;flex-direction:column} /* tittelen over (eye.under) gir lufta — foer sto tegnforklaring, trykk-tekst og rader knust sammen (Kenneth 12.09) */
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader>li{display:flex;align-items:center;gap:12px;padding:24px 0;border-top:1px solid var(--md-sys-color-outline-variant)} /* 12 → 24 px (Kenneth 26.09: «mellom salget og lønnen så går det litt i hverandre … avstanden når man blar nedover»); de trange modusene under beholder 8/6 px for skjermer som må få plass */
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader>li .t>b,html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader>li .t>strong{font:500 1.25rem/1.75rem var(--md-ref-typeface-plain)} /* overskriften per rad ett hakk større (Kenneth 26.09: «overskriften per seksjon er liten») — mock R3 */
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader>li:first-child{border-top:0}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader>li.tom{color:var(--md-sys-color-on-surface-variant);font:400 .9375rem/1.5rem var(--md-ref-typeface-plain)}
/* Tom liste med knapp (24.09.2026): setningen og knappen samlet, midtstilt — knappen i full bredde som i arket. */
html.vsh-light .vlight .side .vl-rader>li.tom.med-knapp{display:flex;flex-direction:column;align-items:stretch;gap:16px;text-align:center}
html.vsh-light .vlight .side .vl-rader>li.tom .btn-fyll{justify-content:center;min-height:56px;box-sizing:border-box}
html.vsh-light .vlight .side .vl-rader>li.tom .btn-fyll .ms{color:inherit} /* radenes chevron-farge (on-surface-variant) traff knappens ikon */
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader .trykk{width:100%;display:flex;align-items:center;gap:12px;text-decoration:none}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader .t{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader .t b{font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader small{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader .v{flex:0 0 auto;text-align:right;display:flex;flex-direction:column;align-items:flex-end;font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);font-variant-numeric:tabular-nums}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-rader .ms{color:var(--md-sys-color-on-surface-variant)}
/* iOS ZOOMER INN PAA FELT MED SKRIFT UNDER 16 PX OG BLIR STAAENDE ZOOMET (Kenneth 14.09: «ser det ikke paa telefonen med mindre jeg
   zoomer ut og proever aa stille arket rett»; maalt: botens felt 15 px, periodevelgeren 14 px, budsjettfeltene 15 px). Alle felt i
   Light er 16 px — da roerer ikke Safari zoomen. !important fordi feltene arver stoerrelse fra hver sin komponent. */
html.vsh-light body :is(#vlight input,#vlight select,#vlight textarea){font-size:1rem!important} /* id-en i selektoren: skallets felt-regel (body :is(input …) !important) vant ellers */
/* SJEKKLINJA (14.09, «terskelen — jeg forstaar ikke»): under tallet staar dommen i klartekst og de to kravene med hake eller ring,
   saa grensen leses av tallet selv: «Har flyttet seg mye · ✓ over 5 % · ✓ over 28 111 kr». */
html.vsh-light .vlight .side .vl-sjekk{margin:-2px 0 0;display:flex;flex-wrap:wrap;gap:2px 10px;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side .vl-sjekk span{display:inline-flex;align-items:center;gap:3px}
/* ÉN LINJE (Kenneth 21.09: «du må ha det på en linje for 100 gang. Velg ikoner
   som skiller de fra hverandre»). Dommen, så de to målte tallene med hvert sitt
   ikon — prosenten og kronene. Ikonet farges: primary når kravet er over
   grensen, outline når det ikke er. Grensen står i «Hvordan Vitin måler» og i
   title/skjermleser-teksten, aldri på linja — målt tok den 140 px den ikke har. */
html.vsh-light .vlight .side .vl-sjekk.enlinje{
  display:flex;align-items:baseline;gap:4px 12px;flex-wrap:nowrap;margin:-2px 0 0;
  font:400 .8125rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);
}
html.vsh-light .vlight .side .vl-sjekk.enlinje b{
  font:600 .875rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
html.vsh-light .vlight .side .vl-sjekk.enlinje .krav{
  display:inline-flex;align-items:center;gap:3px;white-space:nowrap;flex:0 0 auto;
  font-weight:600;color:var(--md-sys-color-on-surface);font-variant-numeric:tabular-nums;
}
html.vsh-light .vlight .side .vl-sjekk.enlinje .krav .ms{font-size:1rem;line-height:1.375rem}
html.vsh-light .vlight .side .vl-sjekk.enlinje .krav.ja .ms{color:var(--md-sys-color-primary)}
html.vsh-light .vlight .side .vl-sjekk.enlinje .krav.nei .ms{color:var(--md-sys-color-outline)}
html.vsh-light .vlight .side .vl-sjekk.enlinje .krav.nei{color:var(--md-sys-color-on-surface-variant);font-weight:400}
/* REFERANSE, IKKE DOM (22.09.2026). Et krav med ok=null er ikke en grense
   tallet består eller stryker på — det er det vi måler mot. Den skal derfor
   verken bære primærfargen (bestått) eller den nedtonede (ikke bestått), men
   samme nøytrale blekk som resten av linja. Ett token, ikke en tredje farge. */
html.vsh-light .vlight .side .vl-sjekk.enlinje .krav.noyt{color:var(--md-sys-color-on-surface-variant);font-weight:400}
html.vsh-light .vlight .side .vl-sjekk.enlinje .krav.noyt .ms{color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side .vl-sjekk.enlinje .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* LINJA UNDER GRAFEN i Light (Kenneth 21.09: «ingen så langt denne måneden»).
   Grafen teller hele måneder; denne bærer måneden man står i, med like mange
   dager begge år. Den står under grafen og aldri i den. Lights egen form:
   én linje, ikke pc-ens avsnitt. */
/* MÅNEDEN MAN STÅR I — stilt opp som radene i lista under, ikke løpende tekst.
   [måneden] [tallet] [endringen], og forklaringen på egen tynn linje under. */
html.vsh-light .vlight .side .vl-graflinje{
  display:grid;grid-template-columns:1fr auto auto;align-items:baseline;column-gap:10px;
  margin:10px 0 0;padding-top:8px;box-shadow:inset 0 1px 0 var(--md-sys-color-outline-variant);
  font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);
}
html.vsh-light .vlight .side .vl-graflinje b{color:var(--md-sys-color-on-surface);font-weight:600}
html.vsh-light .vlight .side .vl-graflinje .t{font-variant-numeric:tabular-nums;color:var(--md-sys-color-on-surface);font-weight:600;white-space:nowrap}
html.vsh-light .vlight .side .vl-graflinje .d{white-space:nowrap;min-width:0}
html.vsh-light .vlight .side .vl-graflinje .d.god{color:var(--pos)}
html.vsh-light .vlight .side .vl-graflinje .d.vond{color:var(--dn)}
html.vsh-light .vlight .side .vl-graflinje .d.flat{color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side .vl-graflinje small{grid-column:1 / -1;margin-top:1px;font-size:.6875rem;line-height:1rem;color:var(--md-sys-color-outline)}
/* Lista under maa ikke gli sammen med linja over (Kenneth 21.09: «bare rot»). */
html.vsh-light .vlight .side .vl-graflinje + .vl-driv{margin-top:8px}
html.vsh-light .vlight .side .vl-graflinje .mot-kort{display:none}
/* Bindeordet mellom de to kravene (21.09). Begge maa stemme foer Vitin sier
   fra; uten ordet leste linja som to loese punkter, og haken ved det ene
   motsa dommen foran. Dempet, fordi det er grammatikk og ikke et tall. */
html.vsh-light .vlight .side .vl-sjekk span.og{opacity:.62;margin:0 -4px}
html.vsh-light .vlight .side .vl-sjekk span.dom{font-weight:500;color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight .side .vl-sjekk .ms{font-size:var(--ikon-md);color:var(--md-sys-color-primary)}
html.vsh-light .vlight .side .vl-sjekk span.nei .ms{color:var(--md-sys-color-outline)}
/* VITINS ANALYSE I ARKET (14.09, «ingen AI-analyse greie som gir en interaktiv foelelse»): samme koreografi som paa pc —
   operasjonslinja, boelgelinja, saa teksten ord for ord. .tekstrom/.fk.jobber-reglene er felles. */
html.vsh-light .vlight .ark .fk{display:grid;grid-template-columns:24px 1fr;gap:2px 10px;margin:0 0 14px;align-items:start}
html.vsh-light .vlight .ark .fk .ms{font-size:var(--ikon-xl);color:var(--md-sys-color-primary);line-height:1.5rem}
html.vsh-light .vlight .ark .fk > div{display:contents}
html.vsh-light .vlight .ark .fk b{font:500 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight .ark .fk .tekstrom{grid-column:2}
html.vsh-light .vlight .ark .fk p{margin:0;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side.kompakt{gap:8px}
/* ÉN VISNING (14.09): ark-knappene under setningen, den lave utviklingsgrafen og driverne under den. */
html.vsh-light .vlight .side .vl-setn-knapper{display:flex;flex-wrap:wrap;gap:0 4px;margin:-6px 0 -6px -12px;flex:0 0 auto}
html.vsh-light .vlight .side .vl-setn-knapper .btn-tekst{height:32px;font:500 .875rem/1.25rem var(--md-ref-typeface-plain)}
/* GRAFEN TAR PLASSEN SOM BLIR TIL OVERS (Kenneth 15.09: «Naa var det vel god plass. Det skal fylle skjermen,
   ikke noe mer. Dette gir stoerre plass til grafene»). Foer var grafen laast til 124 px og driverlista tok resten —
   med fire rader sto halve skjermen tom. Naa har lista sin egen hoeyde og grafen faar det som er igjen. */
html.vsh-light .vlight .side .graf.lav{flex:1 1 auto;min-height:124px!important}
html.vsh-light .vlight .side .vl-driv{display:flex;flex-direction:column;flex:0 0 auto;min-height:0;overflow:hidden}
html.vsh-light .vlight .side.kompakt .helt{padding:10px 14px}
html.vsh-light .vlight .side.kompakt .helt .tall{display:block}
html.vsh-light .vlight .side.kompakt .helt .tall b{display:block;font:400 2rem/2.25rem var(--md-ref-typeface-brand)}
html.vsh-light .vlight .side.kompakt .helt .tall > span{display:block;font:400 .9375rem/1.25rem var(--md-ref-typeface-plain);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}html.vsh-light .vlight .side.kompakt .helt .tall > span span{display:inline;white-space:inherit} /* traff ALLE span under .tall — fagord-merkingen legger span rundt ordet, og «i driftsinntekter hittil i 2026» ble tre blokker med nowrap (målt 20.09 på byråsidene, gjelder alle kompakte skjermer) */
html.vsh-light .vlight .side .vl-driv h3{margin:0 0 2px;display:flex;justify-content:space-between;align-items:center;gap:8px;font:500 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side .vl-driv h3.to{align-items:flex-start;line-height:1.2rem}
html.vsh-light .vlight .side .vl-driv h3 b{color:var(--md-sys-color-on-surface);font-weight:500}
html.vsh-light .vlight .side .vl-driv h3 .h{font-weight:400;white-space:nowrap}
html.vsh-light .vlight .side .vl-driv h3 .btn-tekst{height:28px;padding:0 4px;font:500 .8125rem/1.25rem var(--md-ref-typeface-plain)}
html.vsh-light .vlight .side .vl-driv .rad>*{line-height:1.25rem}
html.vsh-light .vlight .side .vl-driv .rad{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:2px 0;border-top:1px solid var(--md-sys-color-outline-variant);font:400 .9375rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight .side .vl-driv .rad:first-of-type{border-top:0}
html.vsh-light .vlight .side .vl-driv .rad b{font-weight:500;font-variant-numeric:tabular-nums}
html.vsh-light .vlight .side .vl-driv .rad small{font-variant-numeric:tabular-nums;color:var(--md-sys-color-on-surface-variant);min-width:52px;text-align:right}
html.vsh-light .vlight .side .vl-driv .rad.topp{background:var(--md-sys-color-surface-container-low);border-radius:var(--md-sys-shape-corner-medium);padding:6px 10px;margin:0 -10px 2px;border-top:0}
html.vsh-light .vlight .side .vl-driv .rad.topp+.rad{border-top:0}
html.vsh-light .vlight .side .vl-driv .rad.topp small.u{display:block;text-align:left;min-width:0}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-felter{display:flex;flex-direction:column;gap:14px}
html.vsh-light .vlight .side .vl-felt{display:flex;flex-direction:column;gap:4px}
html.vsh-light .vlight .side .vl-felt .l{font:500 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side .vl-felt .f{display:flex;align-items:center;gap:8px}
html.vsh-light .vlight .side .vl-felt input{flex:1 1 auto;min-width:0}
html.vsh-light .vlight .side .vl-felt em{font:400 1rem/1.5rem var(--md-ref-typeface-plain);font-style:normal;color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side .vl-felt small{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-valg{display:flex;flex-direction:column}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-valg-rad{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--md-sys-color-outline-variant);position:relative}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-valg-rad:first-child{border-top:0}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-valg-rad input{width:18px;height:18px;flex:0 0 auto}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-valg-rad .t{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-valg-rad .t b{font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-valg-rad small{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-valg-rad .v{font:500 1rem/1.5rem var(--md-ref-typeface-plain);font-variant-numeric:tabular-nums;color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight .side .vl-velg{display:flex;gap:8px;flex-wrap:wrap}
html.vsh-light .vlight .side .vl-meny{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 2px} /* undermenyen (19.09) */
html.vsh-light .vlight .side .vl-meny a{flex:1 1 0;justify-content:center}
html.vsh-light .vlight :is(.side,.liste-ark) .vl-sok{width:100%;box-sizing:border-box}
html.vsh-light .vlight .side .vl-knapper{display:flex;gap:8px;flex-wrap:wrap}
html.vsh-light .vlight :is(.side,.liste-ark) .liste{flex:0 0 auto;min-height:0;overflow:visible;border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-surface-container-low);padding:8px 12px 12px}
html.vsh-light .vlight :is(.side,.liste-ark) .liste>*{max-width:100%}
html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x{padding:0!important;gap:18px;min-width:0;max-width:100%;width:100%;margin:0}
html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x .topp{flex-direction:column;align-items:flex-start}
/* Hele sida inne i skjermen (dokumenter, del Vitin, lover og regler): skjermen har alt overskrift og setning — sidas egen topp og laeremarg-knapp ville staatt dobbelt. */
html.vsh-light .vlight :is(.side,.liste-ark) .liste>main.x>.topp,html.vsh-light .vlight :is(.side,.liste-ark) .liste>main.x>header,html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x .bm-knapp,html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x .lyspaere{display:none!important}
/* Seksjoner sida selv holder skjult bak faner (Min side): inne i skjermen er seksjonen selve innholdet. */
html.vsh-light .vlight :is(.side,.liste-ark) .liste>main.x>section,html.vsh-light .vlight :is(.side,.liste-ark) .liste>main.x>section[hidden],html.vsh-light .vlight :is(.side,.liste-ark) .liste>main.x>.sek,html.vsh-light .vlight :is(.side,.liste-ark) .liste>main.x>.ms-seksjon{display:block!important}
html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x input,html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x select,html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x textarea{max-width:100%;box-sizing:border-box}
html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x .rad,html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x .rute,html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x .tre,html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x .seg{flex-wrap:wrap}
html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x img,html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x svg{max-width:100%}
html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x .blokk,html.vsh-light .vlight :is(.side,.liste-ark) .liste main.x .card{padding:12px}
html.vsh-light .vlight :is(.side,.liste-ark) .liste .rute,html.vsh-light .vlight :is(.side,.liste-ark) .liste .seg{display:flex;flex-wrap:wrap;gap:8px}
html.vsh-light .vlight .side .eye{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary)}
/* Helten i Light = husets helt (main.x .helt), samme tokens: primary-container, extra-large, on-primary-container; pilla
   er datoen/perioden som paa sykefravaerssaken (Kenneth 12.09: «meir av denne typen design inn i light»). */
html.vsh-light .vlight .side .helt{display:block;flex:0 0 auto;background:var(--md-sys-color-primary-container);border-radius:var(--md-sys-shape-corner-extra-large);padding:12px 16px;color:var(--md-sys-color-on-surface)} /* block: main.x .helt (pc) gir grid med to kolonner og 32 px gap, og .vlight bærer klassen .x — «display:block» sto bare i denne kommentaren, ikke i regelen (målt 12.09, målt igjen 27.09.2026: computed display grid, gap 32 px). Fargen er on-surface, ikke on-primary-container: Light-tallet står på lerretet. */
html.vsh-light .vlight .side .helt:has(> .periode){display:block} /* Forstå i «Hele sida»: pc-ens grid-områder (tall tekst / stripe) passer ikke på telefon; ellers gjelder «DEN STABLEDE HELTBOKSEN» i pc-blokka også her */
html.vsh-light .vlight .side .helt .tall > span{display:var(--helt-under-disp,block);max-width:none;font:400 .9375rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-primary-container)}html.vsh-light .vlight .side .helt .tall > span span{display:inline;font:inherit} /* > : fagord-merkingen legger span rundt ordet — «uten mva · 43 varenumre» ble tre blokker med løs prikkelinje (Kenneth 20.09, lager i Light) */
html.vsh-light .vlight .side .helt .tall .d{display:var(--helt-chip-disp,inline-flex);margin-top:var(--helt-chip-topp,6px);border-radius:var(--helt-chip-radius,var(--md-sys-shape-corner-full));padding:var(--helt-chip-pad,2px 10px);background:var(--helt-chip-bg,var(--md-sys-color-surface-container-lowest));font:var(--helt-chip-font,500 .8125rem/1.25rem var(--md-ref-typeface-plain));color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side .eye.under{margin-top:6px}
/* Tallet er M3 display-small (36/44) — ikke display-medium: grafen skal vaere det stoerste i visningen (Kenneth 13.09). */
html.vsh-light .vlight .side .tall b{display:block;font:400 2.25rem/2.75rem var(--md-ref-typeface-brand);letter-spacing:0;font-variant-numeric:tabular-nums}
html.vsh-light .vlight .side .tall span{display:block;font:400 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side .tall.tekst b{font:400 1.75rem/2.25rem var(--md-ref-typeface-brand);letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.vsh-light .vlight .side .setning{margin:0;flex:0 0 auto;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain)}
/* Grafen skal vaere det stoerste i visningen (Kenneth 13.09: «grafen er minst flere steder naar den skal vaere stoerst»):
   setningen to linjer, infoboksen én linje — resten staar i «Laer mer». */
html.vsh-light .vlight .side.fast .setning{display:-webkit-box;-webkit-line-clamp:var(--setning-linjer,2);-webkit-box-orient:vertical;overflow:hidden} /* --setning-linjer (26.09): sider der setninga er forklaring, ikke ingress, setter none — Min side klippet «Valget lagres i denne…» etter to linjer (Kenneth: «teksten forsvinner ut til høgre») */
/* !important: tegnemotoren hever grafens min-height paa smal skjerm for aa gi plass til aksebaandet
   (hevPaaSmal i viz-nivo). Maalt 15.09 paa iPhone 16 Pro Max: 257 px — den presset driverlista fra fire
   rader til én. I Light eier SKJERMEN hoeyden; grafen faar det som er ledig, aldri paa lista sin bekostning. */
html.vsh-light .vlight .side .graf{flex:1 1 auto;min-height:150px!important;overflow:hidden}
html.vsh-light .vlight .side .graf > *{height:100%!important;min-height:0!important;max-height:none}
html.vsh-light .vlight .side .verdi{display:flex;flex:0 0 auto;align-items:center;gap:6px;margin:0;min-height:22px;font:400 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side .verdi.har{color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight .side .verdi b{font-weight:500}
html.vsh-light .vlight .side .verdi .ms,html.vsh-light .vlight .side .info .ms,html.vsh-light .vlight .tekstknapp .ms{font-size:var(--ikon-lg)}
html.vsh-light .vlight .side.fast .info .t{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
html.vsh-light .vlight .side.fast .info{align-items:center;padding:8px 12px}
html.vsh-light .vlight .side .info{display:flex;flex:0 0 auto;gap:8px;align-items:flex-start;margin:0;padding:10px 12px;border-radius:var(--md-sys-shape-corner-large);background:var(--sammenheng-flate,var(--md-sys-color-primary-container));border:1px solid var(--sammenheng-ramme,transparent);font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight .side .info .ms{flex:none;color:var(--md-sys-color-primary)}
html.vsh-light .vlight .side .info .t{flex:1 1 auto;min-width:0}
html.vsh-light .vlight .side .info .btn-tekst{flex:0 0 auto;align-self:center;margin:-6px -8px -6px 0}
/* Arkene stopper 128 px under toppen (app bar + periodevelger) — skyggen over er alltid der aa trykke for aa lukke
   (maalt 12.09: 82dvh la arket paa 88 px, og skyggen var 24 px hoey). */
html.vsh-light .vlight .ark{max-height:calc(100dvh - 128px);box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain}
html.vsh-light .vlight .ark.forklar{max-height:calc(100dvh - 128px)}
/* Hver del er en boks som infoboksen paa skjermen (.side .info): corner-large, sammenheng-flate, ikon i primaer (Kenneth 13.09). */
html.vsh-light .vlight .ark.forklar .del{margin:0 0 10px}
html.vsh-light .vlight .ark.forklar .del.boks{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--md-sys-shape-corner-large);background:var(--sammenheng-flate,var(--md-sys-color-primary-container));border:1px solid var(--sammenheng-ramme,transparent)}
html.vsh-light .vlight .ark.forklar .del.boks > .ms{flex:none;color:var(--md-sys-color-primary);font-size:var(--ikon-xl);margin-top:2px}
html.vsh-light .vlight .ark.forklar .del.boks .inn{flex:1 1 auto;min-width:0}
html.vsh-light .vlight .ark.forklar h3{margin:0 0 4px;font:500 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight .ark.forklar p{margin:0;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .ark.forklar p b{color:var(--md-sys-color-on-surface)}
/* Arket i merkets toner (Kenneth 12.09: «den boksen man aapner» skal vaere brand-token-vennlig): tittelen som eyebrow i
   primary (som paa skjermen), tallblokka i husets utheving (merkets tint + hel haarlinje i merket), avsnittstitlene i
   primary, hanken i primary. Alt fra Kraken-tokens — foelger lyst og moerkt tema. */
/* Overskriften er husets bokstittel (title-large) med sidas ikon foran. */
html.vsh-light .vlight .ark.forklar h2.tit{display:flex;align-items:center;gap:10px;margin:0 0 12px;font:400 1.375rem/1.75rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight .ark.forklar h2.tit .ms{color:var(--md-sys-color-primary);font-size:var(--ikon-xl)}
html.vsh-light .vlight .ark.forklar .vl-ark-sider{margin:0 0 16px}
html.vsh-light .vlight .ark.forklar .del.ord p{font-size:.875rem;line-height:1.25rem}
html.vsh-light .vlight .ark.forklar .del.tallet{padding:12px 14px}
html.vsh-light .vlight .ark.forklar .del.tallet b{display:block;font:500 1.75rem/2.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface);letter-spacing:0}
html.vsh-light .vlight .ark.forklar .del.tallet .hva{display:block;margin-top:2px;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .ark.forklar .kilde{display:block;margin-top:4px;font:400 .75rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .side .bunn{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:4px 16px;margin-top:auto} /* flere lenker nederst (Personal 19.09) */
/* FIXED, IKKE ABSOLUTT (16.09.2026: prikken stakk inn i bunnmenyen på korte
   skjermer). .sider er HELE den rullbare sidestabelen — top:50% regnet mot
   den totale innholdshøyden, ikke det synlige skjermbildet, og en kort side
   plasserte da prikken tilfeldig nede ved --vl-nav. Fixed + sentrert i
   rommet mellom app bar og meny (samme --vl-topp/--vl-nav-tokens som resten
   av skallet) holder den midt i BILDET uansett hvor høyt innholdet er. */
html.vsh-light .vlight .prikker{position:fixed;right:6px;top:calc(var(--vl-topp) + (var(--vl-vh,100dvh) - var(--vl-topp) - var(--vl-nav)) / 2);transform:translateY(-50%);z-index:4;display:flex;flex-direction:column;gap:6px}
html.vsh-light .vlight .prikker i{width:6px;height:6px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-outline-variant);transition:height .3s cubic-bezier(.2,0,0,1),background .2s}
html.vsh-light .vlight .prikker i.na{height:18px;background:var(--md-sys-color-primary)}
html.vsh-light .vlight .mnav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--md-sys-color-surface-container);box-shadow:0 -1px 0 var(--md-sys-color-outline-variant)}
html.vsh-light .vlight .mnav button{min-width:0;border:0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:0;font-family:inherit;color:var(--md-sys-color-on-surface-variant);cursor:pointer}
html.vsh-light .vlight .mnav .ind{width:64px;height:32px;border-radius:var(--md-sys-shape-corner-full);display:grid;place-items:center;transition:background .2s}
html.vsh-light .vlight .mnav .etk{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px}
html.vsh-light .vlight .mnav button.on{color:var(--md-sys-color-secondary)}
html.vsh-light .vlight .mnav button.on .ind{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}
html.vsh-light .vlight .liste{display:flex;flex-direction:column;max-height:70dvh;overflow-y:auto}
html.vsh-light .vlight .liste .gr{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-primary);padding:16px 0 6px}
html.vsh-light .vlight .liste a{display:grid;grid-template-columns:24px 1fr 24px;align-items:center;gap:16px;min-height:56px;text-decoration:none;color:inherit;border-top:1px solid var(--md-sys-color-outline-variant)}
html.vsh-light .vlight .liste a .ms{color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .liste a b{font:400 1rem/1.5rem var(--md-ref-typeface-plain)}
html.vsh-light .vlight .liste a small{display:block;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .ark{position:fixed;inset:auto 0 0 0;transform:translateY(105%);transition:transform .35s cubic-bezier(.2,0,0,1);background:var(--md-sys-color-surface-container-low);border-radius:var(--md-sys-shape-corner-extra-large) var(--md-sys-shape-corner-extra-large) 0 0;padding:8px 20px 24px;z-index:20}
html.vsh-light .vlight .ark.aapen{transform:none}
html.vsh-light .vlight .ark .hank{width:32px;height:4px;border-radius:var(--md-sys-shape-corner-extra-small);background:var(--md-sys-color-outline);margin:8px auto 16px;position:relative;touch-action:none}
html.vsh-light .vlight .ark .hank::before{content:"";position:absolute;inset:-14px -48px} /* 48 px treff-flate rundt hanken — den dras (12.09) */
html.vsh-light .vlight .side .info{cursor:pointer}
html.vsh-light .vlight .ark h2{margin:0 0 12px;font:400 1.375rem/1.75rem var(--md-ref-typeface-brand)}
html.vsh-light .vlight .ark .vl-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
html.vsh-light .vlight .ark#vlArk{min-height:60dvh;display:flex;flex-direction:column}
html.vsh-light .vlight .ark#vlArk .felt{margin-top:auto}
html.vsh-light .vlight .ark .svar{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;max-height:52dvh;overflow-y:auto;overscroll-behavior:contain}
html.vsh-light .vlight .ark .svar .boble{background:var(--boks-tone);color:var(--md-sys-color-on-surface);/* tokenet --boks-tone (vit-tokens.css), Kenneth 25.09: «lysere … mellom den og bakgrunnen … inn i token» */border-radius:var(--md-sys-shape-corner-large);padding:12px 16px;font:400 1rem/1.5rem var(--md-ref-typeface-plain)}
html.vsh-light .vlight .ark .svar .boble.venter{opacity:.6}
html.vsh-light .vlight .ark .svar .kilde{display:block;margin-top:6px;font:400 .75rem/1rem var(--md-ref-typeface-plain);opacity:.8}
/* Svaret i tre nivåer (24.09.2026): spørsmålet som overskrift med skillelinje, avsnitt med luft, lister med innrykk,
   kilden som fot. title-medium over body-large (M3-skalaen). */
html.vsh-light .vlight .ark .svar .boble p{margin:0}
html.vsh-light .vlight .ark .svar .boble :is(p,ul,ol)+:is(p,ul,ol){margin-top:14px} /* luft mellom avsnittene (Kenneth 25.09) */
html.vsh-light .vlight .ark .svar .boble .spm{font:500 1rem/1.5rem var(--md-ref-typeface-plain);letter-spacing:.15px;padding-bottom:8px;margin-bottom:12px;border-bottom:1px solid var(--md-sys-color-outline-variant)}
html.vsh-light .vlight .ark .svar .boble :is(ul,ol){margin:0;padding-left:20px}
html.vsh-light .vlight .ark .svar .boble li+li{margin-top:4px}
html.vsh-light .vlight .ark .svar .boble p.del{margin-top:20px;font:500 1rem/1.5rem var(--md-ref-typeface-plain);letter-spacing:.15px}
html.vsh-light .vlight .ark .svar .boble p.del+:is(p,ul,ol){margin-top:4px}
html.vsh-light .vlight .ark .svar .boble .kilde.fot{margin-top:16px}
html.vsh-light .vlight .ark .felt{display:flex;gap:8px}
html.vsh-light .vlight .ark input{flex:1;min-width:0}
html.vsh-light .vlight .skygge{position:fixed;inset:0;background:var(--md-sys-color-scrim);opacity:0;pointer-events:none;transition:opacity .3s;z-index:19}
html.vsh-light .vlight .skygge.aapen{opacity:.32;pointer-events:auto}
html.vsh-light .vlight .snack{position:fixed;left:16px;right:16px;bottom:80px;min-height:48px;display:flex;align-items:center;padding:0 16px;border-radius:var(--md-sys-shape-corner-extra-small);background:var(--md-sys-color-on-surface);color:var(--md-sys-color-surface);font:400 .875rem/1.25rem var(--md-ref-typeface-plain);transform:translateY(20px);opacity:0;transition:transform .25s,opacity .25s;z-index:21;pointer-events:none}
html.vsh-light .vlight .snack.vis{transform:none;opacity:1}
html.vsh-light .vlight .ms{font-family:'Material Symbols Outlined';font-weight:normal;font-style:normal;font-size:var(--ikon-xl);line-height:1;display:inline-block}

/* Egne punkter til «Neste steg» paa presentasjonen (12.09, Kenneth: «maa jo vaere tilpasningsvennlig»). Feltet er husets felt (den globale feltregelen); her bare plassering og etikett. */
body[data-vit-modus="presentasjon"] main.x .neste-egne{display:flex;flex-direction:column;gap:8px;margin-top:14px;max-width:640px}
body[data-vit-modus="presentasjon"] main.x .neste-egne label{display:flex;flex-direction:column;gap:2px;font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
body[data-vit-modus="presentasjon"] main.x .neste-egne .st{font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="presentasjon"] main.x .neste-egne textarea{width:100%;box-sizing:border-box;min-height:84px;resize:vertical}

/* ══ 12.09 PERSONAL-DØREN (Kenneth: «Ja» til pin/ansikt foran Personal). Husets modal-geometri (samme som .vit-last:
   teppe --scrim, midtstilt, 24 px) rundt husets boks (main.x > .blokk) — knapper, felter og tittel er husets egne.
   Ingen overstyringer: main.x faar bare en bredde, som del-mottak. ══ */
.vpd{position:fixed;inset:0;z-index:9600;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--scrim);overflow:auto}
.vpd main.x{max-width:440px;width:100%;padding:0!important} /* dialogens usynlige ramme arvet sidens 20/24/32/32 — kortet sto 4 px skjevt (19.09) */.vpd.vpd-nda main.x{max-width:600px;margin:auto}.vpd.vpd-nda{align-items:flex-start} /* kortet er hoeyere enn telefonskjermen: margin:auto sentrerer naar det er plass, og toppen klippes aldri (maalt 20.09) */html.vsh-light .side.dok .vsh-hjelp{display:none}/* Dok-modus i Light (20.09): innrykket paa 44 px under 920 px er plass til pc-skallets burger — Light har ingen burger, saa oeyebryn og sti staar paa kanten */html.vsh-light .side.dok .topp > div > .eye{padding-left:0}html.vsh-light .side.dok .topp .sti{margin-left:0} /* skallets lyspaere-knapp ble med pc-innholdet inn i dok-skjermen — Light har sin egen i toppen *//* NDA-gaten (Kenneth 19.09: «design det på nytt»): husets klasser, egen rytme — luft vokser der et nytt trinn begynner */.vpd-nda main.x .nda-kort{display:block;padding:20px 24px 24px}.vpd-nda main.x .nda-kort .bh{margin-bottom:12px}.vpd-nda main.x .nda-lede{margin:0 0 16px}.vpd-nda .nda-avtale p{margin:0 0 10px;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}.vpd-nda .nda-avtale p:last-child{margin-bottom:0}.vpd-nda .nda-avtale a{color:var(--md-sys-color-primary);font-weight:500}.vpd-nda .nda-samtykke{margin:20px 0 12px;font:500 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}.vpd-nda .vpd-feil{margin-top:10px}
.vpd .vpd-lede,.vpd .vpd-fot,.vpd .vpd-eller,.vpd .vpd-feil{margin:0;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
.vpd .vpd-fot{font-size:.75rem;line-height:1rem}
.vpd .vpd-eller{text-align:center}
.vpd .vpd-feil{color:var(--md-sys-color-error)}
.vpd .vpd-kort{display:flex;flex-direction:column;gap:12px}
/* PERSONAL-LÅSEN, ett trinn om gangen (20.09): låsikon, tittel, én setning, én vei. */
.vpd.vpd-laas .vpd-ikon{width:48px;height:48px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);display:grid;place-items:center;margin-bottom:2px}.vpd.vpd-laas .vpd-ikon .ms{font-size:var(--ikon-xl)}
.vpd.vpd-laas .bh{margin:0;padding:0;min-height:0}.vpd.vpd-laas .bh .bt{margin:0}.vpd.vpd-laas .vpd-lede{color:var(--md-sys-color-on-surface);margin-top:-4px}.vpd.vpd-laas .vpd-feil{margin:-2px 0 0}
/* Demo-merknaden i Personal-døren (21.09.2026): sier at låsen er der med vilje, og hva man skriver. */
.vpd.vpd-laas .vpd-demo{display:flex;gap:8px;align-items:flex-start;margin:2px 0 0;padding:10px 12px;background:color-mix(in oklab,var(--md-sys-color-primary) 8%,transparent);box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--md-sys-color-primary) 28%,transparent);border-radius:var(--boks-radius);font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
.vpd.vpd-laas .vpd-demo .ms{font-size:var(--ikon-lg);line-height:1.25rem;color:var(--md-sys-color-primary);flex:none}
.vpd.vpd-laas .vpd-demo b{font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.06em}
.vpd.vpd-laas .vpd-steg{display:flex;flex-direction:column;gap:10px;align-items:flex-start;margin-top:4px}
.vpd.vpd-laas .vpd-steg .btn-fyll{height:52px;padding:0 22px;font-size:1rem;white-space:nowrap}
.vpd.vpd-laas .vpd-pin label{display:block;margin:0;font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
.vpd.vpd-laas .vpd-pinfelt{width:100%;max-width:300px;height:60px;box-sizing:border-box;border:2px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-surface-container-lowest);font:500 1.75rem/2rem var(--md-ref-typeface-plain);letter-spacing:.45em;text-align:center;text-indent:.45em;color:var(--md-sys-color-on-surface)}
.vpd.vpd-laas .vpd-pinfelt::placeholder{color:var(--md-sys-color-outline-variant);letter-spacing:.45em}
.vpd.vpd-laas .vpd-pinfelt:focus{outline:none;border-color:var(--md-sys-color-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--md-sys-color-primary) 18%,transparent)}
.vpd.vpd-laas .vpd-pinfelt:disabled{opacity:.6}
.vpd.vpd-laas .vpd-hint{font:400 .8125rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
.vpd.vpd-laas .vpd-steg .btn-tekst{height:auto;padding:4px 0}
.vpd .vpd-valg{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.vpd .vpd-pin label{display:block;margin:0 0 6px;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
.vpd .vpd-rad{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.vpd .vpd-rad input{flex:1 1 140px;min-width:0}
html.vpd-laast{overflow:hidden}
/* I Light dekker døren bare innholdet: app-baren øverst og menyen nederst står fri, så kunden kan gå et annet sted (nav-vakta 20.09: menyen var dekket av teppet). */
html.vsh-light .vpd.vpd-laas{top:var(--vl-topp);bottom:var(--vl-nav);z-index:4;padding:16px}
/* Sida bak doeren er skjult til den er laast opp (Kenneth 12.09: «kanskje det kan vaere lurt aa skjule det vi proever
   aa skjule»): innholdet (hovedkolonnen, laeremargen, Light-skjermene) er usynlig, chromet (meny, app bar, nav) staar
   saa kunden kan gaa et annet sted. Rutene svarer 423 uansett — dette er det oeyet ser. */
html.vpd-laast .app main.x,html.vpd-laast .app aside.learn,html.vpd-laast .vlight .sider,html.vpd-laast .vlight .periode{visibility:hidden}
/* UTSKRIFT FRA LIGHT (13.09): telefonen skriver ut web-sida — Light skjules, resten av print-reglene over gjelder. */
@media print{html.vsh-light #vlight,html.vsh-light .vlight{display:none}html.vsh-light body{visibility:visible}}

/* ══ TILSTANDSRAPPORT (KI) — tilstand.html (13.09.2026, mock 98/99) ══════════════════════
   Trappa til venstre (husets .pkt), ett steg = én visning i #rull, grafen (VitViz) 300 px med
   loop, infoboksen .hva over grafen, tre analyserader under. Ventingen er analysen: .op-linja
   over bølgelinja, teksten strømmer inn. Light: skjermene tegnes av vit-light.js; bare .hva og
   bølgen trengs der. */
main.x .tvisning{position:relative;display:block}
main.x .trail{padding:var(--luft-topp) 0;display:flex;flex-direction:column}
main.x .trail .tid{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
main.x .trail .tid li{display:flex;align-items:center;gap:10px;padding:3px 0;font:400 .8125rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);cursor:pointer;transition:color var(--md-sys-motion-effects-default-duration) var(--md-sys-motion-effects-default-easing)}
main.x .trail .tid li.na{color:var(--md-sys-color-on-surface);font-weight:500}
main.x .trail .tid li .pkt{flex:none;width:26px;height:26px;font-size:.6875rem;display:inline-grid;place-items:center}
main.x .trail .tid li.tema{margin:var(--luft-topp) 0 2px;cursor:default} main.x .trail .tid li.tema .eye{font-size:.6875rem}
main.x .trail .fot{margin-top:auto;font:400 .75rem/1.125rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);padding-right:14px}
main.x .trail .styr{display:flex;align-items:center;gap:8px;margin:var(--luft-blokk) 0 var(--luft-topp);font:500 .8125rem/1 var(--font-mono);color:var(--md-sys-color-on-surface-variant)}
main.x .trail .styr .btn-tekst{width:36px;height:36px;padding:0;border-radius:var(--md-sys-shape-corner-full);border:1px solid var(--md-sys-color-outline);display:grid;place-items:center}
/* VANLIG RULLING (Kenneth 15.09): stegene staar under hverandre paa sida og rulles som alt annet.
   Snapping og egen rulleflate er ute — den gjorde rapporten til en presentasjon man maatte «hoppe» i. */
/* SAMMENHENGEN (16.09): overordnet KPI-boks øverst i Tilstandsrapporten, over stegene i #rull. .blokk, .seg og .graf er allerede globale — bare avstand og tall-typografien (speiler .tsteg .ttall) trengs her. */
main.x .samm{margin-bottom:28px} main.x .samm .seg{margin:10px 0 14px}
/* HVERT STEG SIN BOKS, SAMMENHENGEN ER OPPSUMMERINGEN (Kenneth 23.09.2026, web: «akkurat nå så ser det ut som om at det
   er en feil med at bare første graf har fått egen boks … Som standarden sier: alle må få en egen boks som er like stor
   på alle. og sammenhengen boksen må vise at det er en oppsummeringsboks»).
   Stegene (Tilstanden, 01 · Salget …) er nå hver sin hvite boks (.blokk, satt i tilstand-lim.js) med husets polstring.
   Sammenhengen får heltens drakt — den lilla flata med øyebrynet «Sammenhengen» som oppsummerer på Forstå og Oversikt —
   så den leses som oppsummeringen av stegene under, ikke som steg null. */
main.x .tsteg.blokk{padding:16px 20px 20px}
main.x .samm.blokk{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);border-color:transparent;border-radius:var(--md-sys-shape-corner-extra-large);padding:20px 24px}
main.x .samm .bh .bt{font:var(--md-sys-typescale-label-large);color:var(--md-sys-color-primary);letter-spacing:.1px}
main.x .samm .bh .eye{color:var(--md-sys-color-on-primary-container);opacity:.85}
main.x .samm .ttall{color:var(--md-sys-color-on-primary-container)}
main.x .samm .ttall small{color:var(--md-sys-color-on-primary-container);opacity:.85}
/* GRAFEN STÅR TIL VENSTRE, SOM TEKSTEN (Kenneth 23.09.2026: «Grafene på tilstandsrapporten må venstrestilles akkurat som
   teksten. Ikke tekst til venstre og graf midt i.»). Søyler med én til tre kategorier og ringen fylte hele boksbredden
   og ble tegnet midt i den — to søyler på 170 px hver midt i 780 px. Nå får de bredden de trenger og står fra venstre
   kant, der teksten starter. Grafer med mange kategorier fyller bredden som før. Malen merker formen (vit-viz.js
   merkForm); plassen bestemmes her. */
main.x :is(.tsteg .grafen .vv-graf, #sammGraf)[data-vit-form]{justify-self:start;margin-left:0!important;margin-right:auto!important}
main.x :is(.tsteg .grafen .vv-graf, #sammGraf)[data-vit-form="kake"]{max-width:calc(var(--graf-ring, 190px) + 280px)}
main.x :is(.tsteg .grafen .vv-graf, #sammGraf)[data-vit-form="stolper"][data-vit-kat="1"]{max-width:var(--graf-tak, 360px)}
main.x :is(.tsteg .grafen .vv-graf, #sammGraf)[data-vit-form="stolper"][data-vit-kat="2"]{max-width:calc(var(--graf-tak, 360px) + 120px)}
main.x :is(.tsteg .grafen .vv-graf, #sammGraf)[data-vit-form="stolper"][data-vit-kat="3"]{max-width:calc(var(--graf-tak, 360px) + 240px)}
main.x .samm .ttall{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 14px;font:400 1.75rem/1.2 var(--md-ref-typeface-brand);letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--md-sys-color-on-surface);margin-bottom:14px}
main.x .samm .ttall small{display:inline;font:400 .875rem/1.3rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);letter-spacing:0}
main.x .tsteg-rull{overflow:visible;display:flex;flex-direction:column;gap:28px}
/* IKONET TIL VENSTRE (Kenneth 16.09.2026: «de ikonene må forresten bort til
   venstre side»). Kolonnene byttet plass i stedet for at .tover fikk en ny
   grid-area alene — da beholder .ttall den brede 1fr-sporet den trenger for
   å bryte linje, mens ikonet får den smale auto-kolonnen, nå først. Samme
   venstre-plassering som .fk-radene under og light-visningen bruker fra før
   («bruk husets form»), ikke en ny lokal løsning. */
main.x .tsteg{box-sizing:border-box;scroll-margin-top:18px;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto var(--ts-graf,300px) minmax(0,1fr);gap:10px 16px;padding:10px 0 12px}
main.x .tsteg .tover{grid-area:1/1;align-self:start} main.x .tsteg .ttall{grid-area:1/2} main.x .tsteg .hva,main.x .tsteg .grafen,main.x .tsteg .under,main.x .tsteg .tknapper{grid-column:1/3}
main.x .tsteg .tover{display:flex;align-items:center;gap:10px;white-space:nowrap} main.x .tsteg .tover .eye{color:var(--md-sys-color-primary)}
main.x .tsteg .tover .ms{width:32px;height:32px;border-radius:var(--md-sys-shape-corner-small);background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);display:grid;place-items:center;font-size:var(--ikon-xl)}
/* «SAA LANGT DENNE MAANEDEN» (Kenneth 21.09.2026: «august er siste maaned
   overalt paa light. Ingen saa langt denne maaneden»). Staar UNDER grafen,
   ikke i den: grafen teller bare hele maaneder, og en loepende maaned skal
   aldri kunne leses som en soeyle man kan sammenligne. Hoerer til begge
   flater — web og Light — og bor derfor her, ikke i en av dem. */
main.x .tsteg .saalangt,html.vsh-light .vlight .saalangt{margin:10px 0 0;padding:10px 0 0;border-top:1px solid var(--md-sys-color-outline-variant);font:400 .875rem/1.35rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);font-variant-numeric:tabular-nums}
main.x .tsteg .saalangt b,html.vsh-light .vlight .saalangt b{font-weight:500;color:var(--md-sys-color-on-surface)}
main.x .tsteg .saalangt .sl-tall,html.vsh-light .vlight .saalangt .sl-tall{font-weight:500;color:var(--md-sys-color-on-surface)}
main.x .tsteg .saalangt .sl-d.god,html.vsh-light .vlight .saalangt .sl-d.god{color:var(--md-sys-color-primary)}
main.x .tsteg .saalangt .sl-d.vond,html.vsh-light .vlight .saalangt .sl-d.vond{color:var(--md-sys-color-error)}
main.x .tsteg .saalangt .sl-d.flat,html.vsh-light .vlight .saalangt .sl-d.flat{color:var(--md-sys-color-on-surface-variant)}
main.x .tsteg .saalangt small,html.vsh-light .vlight .saalangt small{display:block;margin-top:3px;font:400 .75rem/1.1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);opacity:.85}
main.x .tsteg .ttall{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 14px;font:400 1.75rem/1.2 var(--md-ref-typeface-brand);letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--md-sys-color-on-surface)}
main.x .tsteg .ttall small{display:inline;font:400 .875rem/1.3rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);letter-spacing:0}
main.x .tsteg .grafen{min-height:0!important;height:var(--ts-graf,300px);display:grid;overflow:hidden} main.x .tsteg .grafen .vv-graf{width:100%;height:100%;min-height:0!important}
main.x .tsteg .grafen.regnetflate{display:block;height:auto;overflow:visible}
main.x .tsteg .under{display:grid;gap:10px;align-content:start}
main.x .tsteg .under .fork{display:grid;grid-template-columns:1fr;gap:10px}
main.x .tsteg .under .fk{display:grid;grid-template-columns:24px 176px 1fr;gap:0 12px;align-items:start}
main.x .tsteg .under .fk .ms{margin:0;font-size:var(--ikon-lg,22px);line-height:1.5rem;color:var(--md-sys-color-primary)} main.x .tsteg .under .fk > div{display:contents}
main.x .tsteg .under .fk b{font:500 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
main.x .tsteg .under .fk p{margin:0;font:400 .9375rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant);max-width:62ch}
main.x .tsteg .under .bevis{display:flex;gap:4px 22px;padding-top:8px;font:400 .75rem/1.25rem var(--font-mono);color:var(--md-sys-color-on-surface-variant)} main.x .tsteg .under .bevis b{font-weight:500;color:var(--md-sys-color-on-surface)}
main.x .tsteg .ttall,main.x .tsteg .fork{opacity:0;transform:translateY(12px);transition:opacity var(--md-sys-motion-expressive-effects-default-duration) var(--md-sys-motion-expressive-effects-default-easing),transform var(--md-sys-motion-expressive-spatial-default-duration) var(--md-sys-motion-expressive-spatial-default-easing)}
main.x .tsteg.inne .ttall,main.x .tsteg.inne .fork{opacity:1;transform:none} main.x .tsteg.inne .fork{transition-delay:.4s}
main.x .tsteg .tknapper{display:flex;gap:10px;flex-wrap:wrap} main.x .tsteg .tknapper a{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 20px;border-radius:var(--md-sys-shape-corner-full);border:1px solid var(--md-sys-color-outline);color:var(--md-sys-color-on-surface);font:500 .875rem/1 var(--md-ref-typeface-plain);text-decoration:none} main.x .tsteg .tknapper .fyll{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-color:transparent}
main.x dl.regnet{display:grid;grid-template-columns:max-content 1fr;gap:6px 18px;margin:0;font:400 .875rem/1.4rem var(--md-ref-typeface-plain)}
main.x dl.regnet dt{line-height:1.4rem;color:var(--md-sys-color-primary)} main.x dl.regnet dd{margin:0;color:var(--md-sys-color-on-surface-variant)}
@media(max-width:920px){main.x .tvisning{grid-template-columns:1fr}main.x .trail{display:none}}
/* Infoboksen over grafen og dommen som stemples inn */
.hva{display:flex;align-items:center;gap:10px;padding:8px 14px;border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-low);font:400 .875rem/1.3rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)} .hva .ms{color:var(--md-sys-color-primary);flex:none}
.hva .dom{margin-left:auto;flex:none;padding:5px 9px;border-radius:var(--md-sys-shape-corner-small);background:var(--md-sys-color-surface-container-highest);color:var(--md-sys-color-on-surface);animation:vtStempel var(--md-sys-motion-expressive-spatial-default-duration) var(--md-sys-motion-expressive-spatial-default-easing) both}
.hva .dom.passert{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}
@keyframes vtStempel{from{transform:scale(1.4);opacity:0}to{transform:none;opacity:1}}
/* Ventingen er analysen: operasjonslinja og bølgen (M3 Expressive wavy), så teksten */
.tekstrom .op{margin:0;font:400 .875rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);display:none}
/* IKONET PUSTER MENS TEKSTEN HENTES (Kenneth 16.09.2026: «ikke den bølgede
   lastingen … finn et dynamisk ikon som laster fram til teksten er ferdig»)
   — erstatter den forrige SVG-bølgelinja. Radens eget ikon (allerede der,
   samme som «Tilstanden»-ikonet over) får bevegelse i stedet for et eget
   pyntesymbol. */
.fk.jobber .op{display:block}
.fk.ferdig .op{display:none}
.fk.jobber .ms{display:inline-block;animation:vtIkonPuls 1.3s ease-in-out infinite}
@keyframes vtIkonPuls{0%,100%{transform:scale(1);opacity:.7}50%{transform:scale(1.2);opacity:1}}
.tekstrom .tekst.strom::after{content:"";display:inline-block;width:.45em;height:1em;margin-left:2px;vertical-align:-.15em;background:var(--md-sys-color-primary);animation:vtMark .9s steps(2) infinite}
@keyframes vtMark{to{opacity:0}}
/* Loopen i grafene (Kenneth 13.09): stolpene puster, referansestreken marsjerer, kakestykkene løfter seg — hvert 9. sekund */
main.x .tsteg .vv-graf svg g[transform] > rect:not([fill="transparent"]),html.vsh-light .vlight .graf .vv-graf svg g[transform] > rect:not([fill="transparent"]){transform-box:fill-box;transform-origin:50% 100%;animation:vtPuls 9s var(--md-sys-motion-expressive-spatial-default-easing) infinite}
main.x .tsteg .vv-graf svg g[transform]:nth-child(2) > rect{animation-delay:90ms} main.x .tsteg .vv-graf svg g[transform]:nth-child(3) > rect{animation-delay:180ms} main.x .tsteg .vv-graf svg g[transform]:nth-child(4) > rect{animation-delay:270ms} main.x .tsteg .vv-graf svg g[transform]:nth-child(5) > rect{animation-delay:360ms} main.x .tsteg .vv-graf svg g[transform]:nth-child(6) > rect{animation-delay:450ms} main.x .tsteg .vv-graf svg g[transform]:nth-child(7) > rect{animation-delay:540ms} main.x .tsteg .vv-graf svg g[transform]:nth-child(8) > rect{animation-delay:630ms}
main.x .tsteg .vv-graf svg line[stroke-dasharray],html.vsh-light .vlight .graf .vv-graf svg line[stroke-dasharray]{animation:vtStrek 9s linear infinite}
main.x .tsteg .vv-graf svg g[transform] > path[fill]:not([fill="none"]),html.vsh-light .vlight .graf .vv-graf svg g[transform] > path[fill]:not([fill="none"]){transform-box:view-box;transform-origin:0 0;animation:vtRing 9s var(--md-sys-motion-expressive-spatial-default-easing) infinite}
@keyframes vtPuls{0%,84%,100%{transform:scaleY(1)}89%{transform:scaleY(.9)}94%{transform:scaleY(1.03)}}
@keyframes vtStrek{to{stroke-dashoffset:-90}}
@keyframes vtRing{0%,84%,100%{transform:scale(1)}90%{transform:scale(1.045)}}
@media (prefers-reduced-motion:reduce){main.x .tsteg .vv-graf svg *,html.vsh-light .vlight .graf .vv-graf svg *,.fk.jobber .ms{animation:none!important}}

/* DOKUMENTET PÅ TELEFON (24.09.2026, Kenneth: «sjekk at alle tilhørende dokumenter er klar til utfylling i light
   versjon og klar til … utskrift»). Målt: i Light ble dokumentflata lagt i den skjulte pc-sida — høyde 0, alle fem
   sykefraværsdokumentene, og rekrutteringens ark likeså. vit-light.js vlDokVert() legger flata i #vlDok i Light-rota; her er #vlDok en
   fullskjerm over Light med egen rulling, verktøylinja fast øverst. På papir: bare dokumentet — pc-sida og resten av
   Light tas bort (regelen over skjuler #vlight på papir; denne står etter den og vinner når et dokument er åpent). */
html.vsh-light #vlDok{display:none}
html.vsh-light #vlDok:has(> .on){display:block;position:fixed;inset:0;z-index:60;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--md-sys-color-surface);padding:0 16px 32px}
html.vsh-light #vlDok .sf-dok-verktoy{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface);padding-top:12px}
@media print{
  html.vsh-light body:has(#vlDok > .on) #vlight{display:block!important;padding:0!important;min-height:0!important}
  html.vsh-light body:has(#vlDok > .on) #vlight > :not(#vlDok){display:none!important}
  /* Dokumentets egen print-regel («main > *:not(#sfDokFlate)») traff #vlDok, fordi Light-rota også er en <main> —
     papiret ble blankt (målt). Denne er mer spesifikk og holder verten synlig. */
  html.vsh-light body:has(#vlDok > .on) #vlight > #vlDok{display:block!important}
  html.vsh-light body:has(#vlDok > .on) #vshRoot{display:none!important}
  html.vsh-light #vlDok{position:static!important;overflow:visible!important;padding:0!important}
}

/* STEGENE OG STEGET I ARKET (Personal i Light, mock 120 godkjent 24.09.2026). Kenneth: «Fokus på det steget man er
   på», «stegene må være meir isolert», «ta en mellomting mellom den [rosa] og bakgrunnen». Oversikten får plass på
   én skjerm; hvert steg åpnes alene i husets ark. Steget du står på bærer valgt-formen (diagonale hjørner,
   boksstandarden 15.09) i mellomtonen; de andre er lukkede kort med fire like hjørner. Bare tokens. */
html.vsh-light .vlight{--vl-steg-tone:var(--boks-tone)} /* mellomtonen eies av vit-tokens.css (--boks-tone, Kenneth 25.09: «inn i token så vi slepper å diskutere det hver gang») */
html.vsh-light .vlight .vl-stegene{display:flex;flex-direction:column;gap:10px;margin-top:4px}
html.vsh-light .vlight .vl-steg-hvem{margin:0;text-align:center;font:500 .875rem/1.25rem var(--md-ref-typeface-plain);letter-spacing:.1px;color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .vl-steg-gjort{display:flex;justify-content:center;flex-wrap:wrap;gap:0 4px;margin:-12px 0 -6px;padding:0;list-style:none;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .vl-steg-gjort li{display:inline-flex;align-items:center;gap:6px}
html.vsh-light .vlight .vl-steg-gjort .ms{font-size:var(--ikon-lg);color:var(--md-sys-color-primary)}
/* Et fullført steg er trykkbart (ny sykmelding, planen på nytt): husets tekstknapp (.btn-tekst) med 48 px trykkflate. */
html.vsh-light .vlight .vl-steg-gjort .btn-tekst{min-height:48px;gap:6px}
html.vsh-light .vlight .vl-steg-naa{background:var(--vl-steg-tone);color:var(--md-sys-color-on-surface);border-radius:var(--form-valgt);padding:20px 20px 16px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px}
html.vsh-light .vlight .vl-steg-nr{width:48px;height:48px;display:grid;place-items:center;border-radius:var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small) var(--md-sys-shape-corner-gruppe) var(--md-sys-shape-corner-small);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);font:500 1.25rem/1 var(--md-ref-typeface-brand)}
html.vsh-light .vlight .vl-steg-lbl{margin-top:4px;font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant)} /* setningsform som M3-etiketter; versal-taket står */
html.vsh-light .vlight .vl-steg-tit{margin:0;font:400 1.5rem/2rem var(--md-ref-typeface-brand);color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight .vl-steg-frist{margin:0;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .vl-steg-naa .btn-fyll{margin-top:10px;width:100%;box-sizing:border-box;justify-content:center;min-height:56px}
html.vsh-light .vlight .vl-steg-kort{display:flex;align-items:center;gap:16px;width:100%;min-height:60px;padding:8px 16px;box-sizing:border-box;border:0;border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);text-align:left;cursor:pointer;font:inherit}
html.vsh-light .vlight .vl-steg-kort .vl-steg-nr{flex:0 0 40px;width:40px;height:40px;border-radius:var(--md-sys-shape-corner-medium);background:var(--vl-steg-tone);color:var(--md-sys-color-on-surface);font-size:1rem}
html.vsh-light .vlight .vl-steg-kort .t{flex:1;min-width:0}
html.vsh-light .vlight .vl-steg-kort b{display:block;font:500 1rem/1.5rem var(--md-ref-typeface-plain)}
html.vsh-light .vlight .vl-steg-kort small{display:block;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .vl-steg-kort > .ms{color:var(--md-sys-color-on-surface-variant)}
/* Innholdet i arket: toppen midtstilt (M3 Dialog), felt og knapper i full bredde, felt 56 (M3-vedtaket 21.09). */
html.vsh-light .vlight #vlListeTit:empty{display:none}
html.vsh-light .vlight .vl-ark-inn{display:flex;flex-direction:column;gap:20px;padding:4px 4px 8px}
html.vsh-light .vlight .vl-ark-topp{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}
html.vsh-light .vlight .vl-ark-inn .stotte{margin:4px 0 0;font:400 1rem/1.5rem var(--md-ref-typeface-plain);max-width:32ch}
html.vsh-light .vlight .vl-ark-inn .vl-felter{display:flex;flex-direction:column;gap:16px}
html.vsh-light .vlight .vl-ark-inn .vl-felt{display:flex;flex-direction:column;gap:4px;margin:0}
html.vsh-light .vlight .vl-ark-inn .vl-felt .l{font:500 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
/* flex:0 0 auto: bot-arkets .ark input{flex:1} traff feltene her (samme .ark) og krympet dem til 41 px (målt 24.09) */
html.vsh-light .vlight .vl-ark-inn .vl-felt :is(input,select){flex:0 0 auto;width:100%;height:56px;box-sizing:border-box} /* flate, ramme, hjørne, luft og skrift er husregelens (feltdod-vakta) */
html.vsh-light .vlight .vl-ark-inn .vl-felt textarea{flex:0 0 auto;width:100%;min-height:96px;box-sizing:border-box;resize:vertical}
html.vsh-light .vlight .vl-ark-inn .btn-fyll{width:100%;box-sizing:border-box;justify-content:center;min-height:56px}
html.vsh-light .vlight .vl-ark-inn .btn-tekst{align-self:center}
html.vsh-light .vlight .vl-ark-inn .skjedd{display:flex;flex-direction:column;align-items:center;gap:8px}
html.vsh-light .vlight .vl-ark-inn .skjedd .lbl{font:500 .875rem/1.25rem var(--md-ref-typeface-plain);letter-spacing:.1px;color:var(--md-sys-color-on-surface)}
html.vsh-light .vlight .vl-ark-inn .skjedd .seg{margin:0}
html.vsh-light .vlight .vl-ark-inn .kanal{margin:0;text-align:center;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .vl-ark-inn .status{margin:0;min-height:1.25rem;text-align:center;font:500 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .vl-ark-inn .status.feil{color:var(--md-sys-color-error)}

/* OPPFØLGINGSPLANEN ETTER NAVs FELT (24.09.2026): delene (arbeidssituasjon, tilrettelegging, oppfølging, mottakere,
   medvirkning, kontaktperson) med husets øyebryn; bryterradene er 48 px høye med husets M3-bryter (.bryter); kvitteringene
   fra NAV i liten tekst. Samme del i pc-skjemaet og i Light-arket (public/app/sykefravaer-plan.js). Bare tokens. */
.plan-del{display:flex;flex-direction:column;gap:8px;margin:0 0 16px}
.plan-del > .eye{display:block;margin:4px 0 0}
.plan-rad{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:48px;font:400 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
.plan-send{display:flex;flex-direction:column;gap:12px}
.plan-kvitteringer{margin:0 0 12px;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px;font:400 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
:is(.plan-send,.plan-del) [aria-invalid="true"]{outline:2px solid var(--md-sys-color-error)!important;outline-offset:0}

/* BETA-MERKET (Kenneth 25.09.2026: «skriv BETA bak personal — både for demo og for live kunder»). Ett merke for pc og
   telefon: menyskuffen, bunnmenyen, toppen og øyebrynet. M3 label-small i secondary-container, som husets .pill. */
.beta{display:inline-block;vertical-align:middle;margin-left:2px;padding:0 6px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);font:500 .6875rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;text-transform:none}
html.vsh-light .vlight .mnav .etk .beta{margin-left:0;padding:0 4px;font-size:.5625rem;line-height:.875rem}

/* VEIVISEREN (25.09.2026, mock 121) — loven i klartekst, hvor du gjør det, ett trykk som fører datoen. Samme deler på pc
   (trinnet) og telefon (arket): .vv-lov (lovens linje + setningen), .vv-knapper (husets .btn-ut/.btn-fyll). Ingen egne farger. */
.vv-lov{display:flex;flex-direction:column;gap:4px}
.vv-lov-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0;min-height:2.5rem}
.vv-lov-navn{font:500 .75rem/1rem var(--md-ref-typeface-plain);letter-spacing:.5px;color:var(--md-sys-color-on-surface-variant)}
.vv-lov-h .btn-tekst{margin-right:-12px}
.vv-tekst{margin:0;font:400 1rem/1.5rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface)}
.vv-hos .vv-ut{margin-left:auto}
/* pc: knappene til venstre, i rad (knapperader til venstre, 19.09) */
body[data-vit-modus="sykefravaer"] main.x .trinnboks .vv-knapper{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-start;margin-top:12px}
body[data-vit-modus="sykefravaer"] main.x .trinnboks .vv .status{margin:8px 0 0;min-height:1.25rem;font:500 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}
body[data-vit-modus="sykefravaer"] main.x .trinnboks .vv .status:empty{display:none}
/* telefon: alt i full bredde, under hverandre — arket er ett steg (mock 120/121) */
html.vsh-light .vlight .vl-ark-inn .vv-knapper{display:flex;flex-direction:column;gap:16px}
html.vsh-light .vlight .vl-ark-inn .vv-knapper .btn-ut{width:100%;box-sizing:border-box;justify-content:center;min-height:56px;background:transparent} /* <button> og <a> med .btn-ut skal se like ut — UA-bakgrunnen på button ut */

/* LOGGEN SOM RADER (Kenneth 25.09.2026, mock D): 16 px luft; lukket rad = navn + første setning på én linje; det åpne
   klippes til seks linjer med «Vis mer»; navnet på det åpne henger fast i toppen; figuren ut; KI-setningen i Label Small. */
aside.learn .bm-lopet{gap:16px}
aside.learn .logg-naa{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:6px;margin:0 0 -16px;padding:6px 0;background:var(--md-sys-color-surface);border-bottom:1px solid var(--md-sys-color-outline-variant);font:500 .875rem/1.25rem var(--md-ref-typeface-plain);color:var(--md-sys-color-primary);cursor:pointer}
aside.learn .logg-naa[hidden]{display:none}
aside.learn .tip.lm:not(.aapen) .lm-h i{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
aside.learn .tip.lm.svar .lm-h i{color:var(--md-sys-color-on-surface-variant)}
aside.learn .tip.lm.aapen:is(.svar,.dobbel) .lm-h i{display:none} /* åpen svar-rad: første setning står alt i kroppen — ikke to ganger */
aside.learn .tip.lm.aapen .mer.klipp{max-height:9rem;overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,var(--md-sys-color-scrim) 7rem,transparent);mask-image:linear-gradient(to bottom,var(--md-sys-color-scrim) 7rem,transparent)}
aside.learn .tip.lm .vis-mer{grid-column:1 / -1;justify-self:start;margin:-4px 0 0 44px}
aside.learn .tip.lm:not(.aapen) .vis-mer{display:none}
aside.learn .bm-ki{font:400 .6875rem/1rem var(--md-ref-typeface-plain);color:var(--md-sys-color-on-surface-variant)}

/* KILDEN SOM LITEN, STRUKTURERT BLOKK (Kenneth 25.09: «Kilden trenger ikke så stor plass og gjør den mindre. Sett informasjonen
   opp strukturert om du skal ramse andeler tall formler osv.»): label-small (11/16), to kolonner — etiketten (Kontoer, Regnestykke,
   Lest …) til venstre, verdien til høyre, tabulære tall. Én tegner (VitBot.kildeHtml) og én drakt for pc-margen og telefonen. */
aside.learn .kilde.kilde-rader,html.vsh-light .vlight .ark .kilde.kilde-rader{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0 10px;margin:10px 0 0;padding-top:6px;border-top:1px solid var(--md-sys-color-outline-variant);font:400 .6875rem/1rem var(--md-ref-typeface-plain);letter-spacing:.3px;opacity:1}
aside.learn .kilde.kilde-rader{color:var(--md-sys-color-on-surface-variant)}
html.vsh-light .vlight .ark .svar .kilde.kilde-rader,html.vsh-light .vlight .ark.forklar .kilde.kilde-rader,html.vsh-light .vlight .ark .del .kilde.kilde-rader{display:grid;color:inherit;opacity:.85;font:400 .6875rem/1rem var(--md-ref-typeface-plain)} /* slår de eldre Light-reglene (.ark .svar .kilde / .ark.forklar .kilde) på spesifisitet, ikke på rekkefølge */
.kilde.kilde-rader .kr{display:contents}
.kilde.kilde-rader em{font-style:normal;font-weight:500}
.kilde.kilde-rader .kr>span{font-variant-numeric:tabular-nums;min-width:0;overflow-wrap:anywhere}

/* NØKKELPUNKTER I TOPPBOKSEN (Kenneth 26.09.2026: «Det er FOR MYE TEKST … legg det inn i nøkkelpunkter»): prosaen i .helt er
   skjult der lista finnes (vit-shell.js legger data-punkter), og punktene står med luft, body-large. */
main.x .helt p[data-punkter="skjult"],main.x .helt p[data-punkter="delt"]{display:none}
main.x .helt ul.punkter{display:flex;flex-direction:column;flex-wrap:nowrap;gap:8px;margin:6px 0 0;padding-left:18px;font:var(--md-sys-typescale-body-large)} /* flex-wrap:nowrap: «main.x .punkter» (prikkeknappene, linje ~4586) har flex-wrap:wrap, og i kolonnen med fast høyde hoppet tredje punkt til en usynlig kolonne til høyre (Lager i prod 26.09) */
main.x .helt ul.punkter li{margin:0}
main.x .helt ul.punkter li.klemt-bort{display:none} /* bare hele punkter i den klemte kolonnen (vit-shell.js heltVisMer/heleUt): et punkt som får åtte piksler av siste linje ser ut som en feil; «Vis alt» viser resten */
main.x .helt ul.punkter li b{font-weight:600}

/* HOVEDTALLET I TOPPBOKSEN — B på pc, P2 på telefon (Kenneth 26.09.2026 kveld, etter mocker fra M3-kilden: «Jeg tror
   kanskje ikke tallet kan ha egen boks» → «B og P2»). Ingen flate rundt tallet. Hierarkiet ligger i typografien —
   display-large emphasized 57/64 — og i en loddrett skillelinje (M3 Divider, --linje-skille) mellom tallet og punktene.
   Endringen står som tekst i delta-fargen (variant 5, samme dag), aldri som chip. Tekstkolonna er 152 px (--helt-tekst).
   Historikken samme dag: lilla flate (--boks-hovedtall) → «for mørk» → variant 5 med luft → boksen ut.
   Telefonen (Light, P2): rent — etikett, tallet i display-medium 45/52, teksten under — og skillelinja under hele
   innledningen (setninga, eller knapperaden når den finnes), så lista begynner med en linje slik hvert punkt i den
   gjør. M3 setter skillelinjer mellom seksjoner, ikke inne i dem. Vedtaket 20.09 «ingen tekst før teksten» står. */
html:not(.vsh-light) main.x .helt .tall{background:transparent;color:var(--md-sys-color-on-surface);border-radius:0;padding:0 32px 0 0;width:max-content;align-self:stretch;display:flex;flex-direction:column;justify-content:center;border-right:var(--linje-skille)}
html:not(.vsh-light) main.x .helt .tall .d{white-space:nowrap}
html:not(.vsh-light) main.x #helt .tall{border-radius:0;padding:0 32px 0 0} /* «main.x #helt .tall» (id) satte corner-medium og 8 px sidepadding — 0 og 32 px mot skillelinja skal vinne også på sidene med periodestripe */
html:not(.vsh-light) main.x .helt .tall b{font:var(--md-sys-typescale-display-large-emphasized);letter-spacing:-.03em}
html:not(.vsh-light) main.x .helt .tall > span{font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);margin-top:6px}
main.x .helt .tall .d,html.vsh-light .vlight .side .helt .tall .d{background:transparent;border-radius:0;padding:0;font:500 .9375rem/1.375rem var(--md-ref-typeface-plain);margin-top:8px} /* variant 5: endringen som tekst i delta-fargen (▲/▼ + prosent + «mot samme dager i fjor»), ingen chip-flate — informasjonen står (Kenneth 26.09: «Jeg velger nr 5») */
html.vsh-light .vlight .side .helt,html.vsh-light.vl-lav .vlight .side .helt,html.vsh-light .vlight .side.fast.vl-trang .helt,html.vsh-light .vlight .side.kompakt .helt{width:auto;justify-self:stretch;background:transparent;border-radius:0;padding:0;box-shadow:none} /* P2: ingen flate — også i de kompakte modusene som hadde 10/14 px innvendig marg for boksen */
html.vsh-light .vlight .side .helt .tall{padding:0;margin:0} /* margin-bottom 20 px fra en eldre Light-regel lå igjen under tallet (målt 26.09: 20 + 40 + 20 + 20) */
html.vsh-light .vlight .side .helt .tall b{font:var(--md-sys-typescale-display-medium-emphasized);letter-spacing:-.02em}
html.vsh-light .vlight .side.kompakt .helt .tall b{font:500 2rem/2.25rem var(--md-ref-typeface-brand);letter-spacing:-.02em} /* den kompakte sida beholder størrelsen sin, men samme vekt */
html.vsh-light .vlight .side .helt ~ p.setning:not(:has(+ .vl-setn-knapper)),html.vsh-light .vlight .side .helt ~ .vl-setn-knapper{border-bottom:var(--linje-skille);padding-bottom:16px} /* P2: skillelinja under innledningen */

/* DEN FARLIGE KNAPPEN (revisjonen 27.09.2026): sto bare i min-side.html som en lokal variant («standard hører i malen, ikke
   kalleren»), med color:#fff som fallback fordi --md-sys-color-on-error ikke fantes — i mørk ga det 1,70:1. Nå i malen, med
   M3-rollen on-error i begge tema. */
main.x .btn-fyll.farlig{background:var(--md-sys-color-error);color:var(--md-sys-color-on-error)}
