/* ============================================================
   stil-base.css — del 1/12
   Designsystem/tokens, mørk modus-grunnlag, header, knapper, avatarer,
   selects, timeline-basis, event-kort, modaler, toast, KPI, org-modalens
   kjerne (eventer/ansatte/roller/maler), Mitt arbeid, event-innstillinger,
   sammendragskolonne, AI-modaler/sidepanel, kjøreplan (kpd-/uh-)
   Del av styles.css-splitten (2026-08-07). Lastes i FAST rekkefølge —
   kildeorden er kaskade-bærende (primitivene i stil-tema.css vinner ved
   lik spesifisitet fordi de kommer sist). Ny fil? Oppdater Index.html
   (statisk lenke eller DESKTOP_STIL i loaderen) OG alle test-*.html.
   ============================================================ */
    /* ==========================================
       DESIGN SYSTEM
       ========================================== */
    :root {
      --col-width: 140px;
      --sidebar-bredde: 600px; /* Felles bredde for hendelse- og info-sidebar (høyre panel) */
      --primary: #F71B00;
      --primary-dark: #CC1500;
      /* rgb-trippel til rgba() — samme mønster som --st-*-tint under.
         Lagt til 2026-09-19 da ~200 hardkodede rgba(247,27,0,A) i denne
         og de elleve andre stilfilene ble byttet mot tokenet de skulle
         hatt (docs/DESIGN.md §2: «ny kode skal ikke inneholde nye
         hex-verdier»). Uten den ville hver tint-bruk vært ugyldig. */
      --primary-tint: 247, 27, 0;
      --bg: #FFF2E9;
      --bg-panel: #2A2A2A;
      --surface: #FFFFFF;
      --text: #1D1D1D;
      --text-muted: #7A6E68;
      --border: #E5D8CF;
      --accent: #2563eb;
      /* Semantiske statusfarger (2026-08-07): ÉN grønn/amber/rød for ok/obs/feil.
         Før fantes 5 grønntoner og 3 tint-baser for «godkjent» — samme semantikk
         skal se lik ut i budsjett, bemanning, oppgaver, booking og mobil. */
      --st-ok-bg: #DCF5E7;   --st-ok-tekst: #047857;   --st-ok-tint: 16,185,129;
      --st-obs-bg: #FEF3C7;  --st-obs-tekst: #B45309;  --st-obs-tint: 245,158,11;
      --st-feil-bg: #FDECEA; --st-feil-tekst: #B42318; --st-feil-tint: 239,68,68;
      /* «-adaptiv»: statustekst som følger TEMAET. De tre over gjør ikke det —
         de er definert kun her i lys utgave (se .ev-oppsett lenger nede), så
         flater i mørk modus har måttet skrive sin egen `body.dark-mode … color:
         #FCD34D`-regel ved siden av hver eneste bruk. Disse to gjør det unødig.
         Bevisst ADDITIVE: de 233 stedene som bruker --st-*-tekst er urørt, for
         -tekst og -bg må byttes i PAR (lys tekst på --st-obs-bg #FEF3C7 blir
         gul-på-gult) og det er en egen runde gjennom hele mørk modus. */
      --st-obs-tekst-adaptiv: #B45309;
      --st-feil-tekst-adaptiv: #DC2626;
      /* Grønn fikk sin adaptive utgave 2026-09-18 da org-siden ble mørk: «✓ Konto»
         og «● Aktiv» sto i 2,45:1 med den faste --st-ok-tekst. */
      --st-ok-tekst-adaptiv: #047857;
      /* Samme grep for merkerødt SOM TEKST. --primary-dark er definert kun her,
         i lys utgave, og ble brukt som tekstfarge på --primary-pill i aktive
         nav-knapper, piller og merker. I mørk modus er den pilla nesten sort
         (color-mix mot #212329), og var(--primary-dark) målte 2,2:1 mot den — under AA på
         nøyaktig det elementet som skal si «du er her». Målt, ikke antatt:
         2,2 på pill, 2,8 på --surface, 3,1 på --bg.
         GJELDER KUN `color:`. --primary-dark er fortsatt riktig som BAKGRUNN
         (hover på primærknapper) — bytter du den, blir hover lyserosa.
         Flater som pinner den lyse paletten (#aiPanel, #org-page-familien) må
         pinne DENNE i samme slengen, ellers får de lys rød tekst på hvitt kort
         i mørk modus — 2,3:1, verre enn feilen dette retter. */
      --primary-dark-adaptiv: #CC1500;
      /* Modal-tokens (2026-08-07): felles backdrop, radius og skygge. z-skalaen
         er dokumentasjon for NYE flater — eksisterende z-verdier står urørt
         til stablingsrekkefølgen mellom modulene er kartlagt. */
      --overlay-bg: rgba(29, 29, 29, 0.45);
      --overlay-blur: 3px;
      --modal-r: 14px;
      --modal-shadow: 0 28px 90px rgba(0, 0, 0, 0.38);
      --z-modal: 2600; --z-toast: 6000; --z-popover: 9000;
      /* Dialogen (bekreft/varsle/sporTekst) åpnes som regel OPPÅ noe annet
         — en modal, et popover, offline-banneret på 99999. Den er alltid
         det øverste, ellers ber vi om en bekreftelse brukeren ikke ser. */
      --z-dialog: 100000;
      /* Felt-tokens (2026-08-07): én skjemafelt-geometri og én fokusring */
      --felt-pad: 9px 11px;
      --felt-r: 9px;
      --fokus-ring: 0 0 0 3px var(--primary-pill);
      /* Animasjonstokens (2026-08-07): ALL inngangsbevegelse i appen leser
         disse — juster nivået ETT sted. --anim-nivaa skalerer varighet,
         stagger og avstand samlet: 0 = av, 1 = standard, 1.5 = tydeligere.
         Enkelttokens kan også overstyres hver for seg. Ambient bevegelse
         (puls, skeleton-skimmer) skaleres bevisst IKKE — den er tempo, ikke
         nivå, og en uendelig animasjon med 0s varighet er udefinert. */
      --anim-nivaa: 1;
      --anim-kurve: cubic-bezier(.2, .85, .3, 1);
      --anim-tid: calc(.52s * var(--anim-nivaa));          /* kort-/rad-innfall */
      --anim-tid-panel: calc(.4s * var(--anim-nivaa));     /* fane-/panel-innfall */
      --anim-tid-hurtig: calc(.26s * var(--anim-nivaa));   /* chips, småfades */
      --anim-stagger: calc(38ms * var(--anim-nivaa));      /* forsinkelse per listeelement */
      --anim-avstand: calc(16px * var(--anim-nivaa));      /* løftehøyde kort */
      --anim-avstand-panel: calc(10px * var(--anim-nivaa));/* løftehøyde panel/fane */
      /* --el-designtokens (2026-08-07): var duplisert ordrett i 13 komponent-
         skop (mobil-org, årshjul, racesim m.fl.) — samlet her. Bevisst
         LITERALER, ikke aliaser mot --bg/--text: el-flatene skal forbli cream
         også i mørk modus. --el-purple avviker per modul og står igjen lokalt. */
      --el-cream: #FFF2E9;
      --el-cream-2: #F0E5DC;
      --el-cream-3: #FFFCF8;
      --el-paper: #FFFFFF;
      --el-ink: #1D1D1D;
      --el-ink-2: #2A2A2A;
      --el-ink-3: #3A3A3A;
      --el-muted: #7A6E68;
      --el-line: #E5D8CF;
      --el-line-2: #C8B8AD;
      --el-red: var(--primary);
      --el-red-dark: var(--primary-dark);
      --el-red-soft: rgba(var(--primary-tint), 0.12);
      --el-amber: #FBBF24;
      --el-amber-soft: rgba(251, 191, 36, 0.20);
      --el-emerald: #10B981;
      --el-emerald-soft: rgba(var(--st-ok-tint), 0.14);
      --el-blue: #3B82F6;
      --el-blue-soft: rgba(59, 130, 246, 0.14);
      --bg2: #F0E5DC;
      --card: rgba(255,255,255,0.05);
      --card-hover: rgba(255,255,255,0.09);
      /* Org-modal A+B tokens */
      --ink-soft: #5C5048;
      --line-soft: #D6C7BC;
      --amber: #F59E0B;
      --amber-soft: rgba(251,191,36,0.15);
      --amber-text: #9A6E0A;
      /* AI-lilla: fargen alt maskingenerert bærer (badges, AI-punkter,
         forslagsbokser). Var duplisert som literal #7C3AED / rgba(124,58,237)
         et dusin steder før 16.08.2026 — samme trippel som --amber, og
         -text har egen mørk utgave fordi #7C3AED er for mørk mot #16171C. */
      --ai-lilla: #7C3AED;
      --ai-lilla-soft: rgba(124,58,237,0.15);
      --ai-lilla-text: #6D28D9;
      --primary-pill: #FFE7DD;
      --header-dark: #1D1D1D;
      /* Kommandopulten — mørk flate på cream. MÅ finnes i begge temaer:
         en mørk flate som ikke løftes i mørk modus forsvinner i grunnen
         (DESIGN.md §2). Mørk utgave i body.dark-mode. */
      --pult-bg: #1D1D1D;
      --pult-kant: #1D1D1D;
      --paper: #FFF8F1;
      --header-panel-height: 215px;
      --area-header-height: 40px;
      --loc-header-height: 50px;
      --hour-height: 120px;
      --half-hour-height: 60px;
      --quarter-height: 30px;
    }

    /* ==========================================
       MØRK MODUS — ekte mørkt tema
       Lys = default cream-tema (:root ovenfor). Mørk redefinerer kjerne-
       variablene her, + overstyrer hardkodede lyse flater i egen blokk lenger
       ned (søk: "DARK-MODE OVERRIDES"). color-scheme gjør native kontroller,
       scrollbars og datovelgere mørke.
       ========================================== */
    body.dark-mode {
      color-scheme: dark;
      --bg: #16171C;
      --bg2: #1C1D23;
      --surface: #212329;
      --bg-panel: #16171C;
      --text: #ECEDF0;
      --text-muted: #9A9EA8;
      /* Bare org-familien definerer --text-secondary (lys, i stil-orgflater.css).
         Siden org-siden følger mørk modus (2026-09-18) må den finnes her også,
         ellers blir «… og 3 til»/skjemaetiketter i lokasjonsmodalene ugyldig
         farge og arver. Alias, ikke ny hue. */
      --text-secondary: var(--text-muted);
      --border: rgba(255,255,255,0.11);
      --line-soft: rgba(255,255,255,0.08);
      --ink-soft: #C2C6CE;
      --paper: #212329;
      --card: rgba(255,255,255,0.045);
      --card-hover: rgba(255,255,255,0.085);
      --primary-pill: color-mix(in srgb, var(--primary) 26%, #212329);
      /* 5,5:1 mot pilla over, 6,8 mot --surface, 7,8 mot --bg. Samme verdi som
         .sup-ai-btn alt brukte for rød tekst på mørkt — ingen ny hue. */
      --primary-dark-adaptiv: #FF8A75;
      --amber-soft: rgba(251,191,36,0.16);
      --amber-text: #F0C24B;
      --ai-lilla: #A78BFA;
      --ai-lilla-soft: rgba(167,139,250,0.18);
      --ai-lilla-text: #C4B5FD;
      /* Samme gulen flatene i stil-tema.css skrev for hånd; rød lysnes fordi
         #DC2626 mot #16171C bare så vidt er lesbar (≈4,2:1). */
      --st-obs-tekst-adaptiv: #FCD34D;
      --st-feil-tekst-adaptiv: #F87171;
      --st-ok-tekst-adaptiv: #6EE7B7;   /* samme grønn som .status-green og .oa-pill--redaktor */
      /* Aksentblå som TEKST på mørke flater: #2563eb målte 2,8:1 på «Planlagt»-
         chipen i Møter. Løftet trinn av samme hue (7:1 mot --surface). */
      --accent: #60A5FA;
      --header-dark: #101116;
      /* Kommandopulten (Oversikt-heroen, «Live nå»-kortet) er «mørk flate på
         cream». Her er grunnen selv nesten like mørk, så pulten må LØFTES for
         å beholde skillet — ikke beholde #1D1D1D, som forsvinner i
         bakgrunnen. Lys utgave står i :root. */
      --pult-bg: #2B2D36;
      --pult-kant: #3E414D;
    }

    .spinner {
      border: 4px solid rgba(255,255,255,0.15);
      border-top: 4px solid white;
      border-radius: 50%;
      width: 44px;
      height: 44px;
      animation: spin 0.8s linear infinite;
    }
    @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }

    /* ==========================================
       EVENTLAB-MERKET (.elab-*)
       Geometrien til selve merket er fasit i icons/favicon.svg — her bor bare
       lockup-typografien og bevegelsen. Markup-kontrakt: <svg> med klassen
       .elab-merke, og de fire rektanglene MERKET med .elab-strek (spina i
       tillegg med .elab-strek--spine) — uten de klassene treffer ikke
       animasjonen. app-core.js sin eventlabMerke() skriver riktig markup;
       de statiske flatene (Index.html, superadmin.html, support/) har den
       inline fordi de rendres før JS-en har kjørt.
       ========================================== */
    .elab-logo { display: inline-flex; align-items: center; gap: 14px; line-height: 1; }
    .elab-logo--vertikal { flex-direction: column; gap: 14px; text-align: center; }
    .elab-merke { display: block; flex-shrink: 0; }
    .elab-tekst { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
    .elab-logo--vertikal .elab-tekst { align-items: center; }
    .elab-ord {
      font-family: 'Bebas Neue', sans-serif;
      letter-spacing: 0.12em;
      line-height: 1;
      color: #fff;
      /* letter-spacing legger luft ETTER hvert tegn — også det siste. Uten
         denne motvekten er tekstboksen 0.12em bredere enn glyfene, og en
         sentrert lockup står synlig for langt til venstre. */
      margin-right: -0.12em;
    }
    .elab-tagline {
      font-family: 'Inter', -apple-system, sans-serif;
      text-transform: uppercase;
      letter-spacing: 0.11em;
      font-weight: 600;
      font-size: 10px;
      line-height: 1.5;
      /* 0.42 ga 4,45:1 mot #1D1D1D — så vidt under AA-kravet på 4,5:1.
         0.5 gir 5,0:1. Målt i prod 17.08.2026. */
      color: rgba(255,255,255,0.5);
    }
    .elab-logo--lys .elab-ord { color: #1D1D1D; }
    .elab-logo--lys .elab-tagline { color: rgba(0,0,0,0.55); }
    /* Luft ned til innholdet under (login-, org-velger- og invitasjonsskjermen) */
    .elab-logo--luft { margin-bottom: 38px; }

    /* ==========================================
       REISEN INN (#login-screen → #loading-screen → org-velgeren)
       Tre flater, ett merke. Merket bytter størrelse, plass og farge, men
       formen står stille — det er det som binder innloggingen, lasting og
       org-valget sammen til én bevegelse i stedet for tre skjermbytter.

       STASJONENE er tokens (--st-*) og ikke tall i hver regel, fordi
       overgangene er «matched cuts»: merket på flata du forlater animeres
       til NØYAKTIG hvilestillingen på flata som kommer, og først da byttes
       flatene. Skriver de to hver sine tall, og tallene glir fra hverandre,
       blir byttet et synlig hopp i stedet for et klipp ingen ser.

       Geometrien til selve merket er fortsatt fasit i icons/favicon.svg.
       Her brukes den NAKNE varianten med tett viewBox ("139 135 234 242"),
       så bredden i CSS er bredden på merket — ikke på en rute rundt det.
       ========================================== */
    :root {
      /* Høyde delt på bredde for det nakne merket (242/234). Brukes overalt
         der høyden utledes av bredden, så stasjonene bare trenger ett mål. */
      --merke-forhold: calc(242 / 234);
      --reise-tid: .62s;

      /* LOGGINN: merket er nesten like høyt som flata og blør ut venstrekanten.
         min(…vw) holder det innenfor på brede, lave vinduer. */
      --st-login-b: min(59vh, 44vw);
      --st-login-x: calc(var(--st-login-b) * -0.103);
      --st-login-y: calc(50vh - var(--st-login-b) * var(--merke-forhold) / 2);

      /* LASTER: sentrert i flata. Teksten henger under merket uten å flytte
         det (se .laster-under), slik at midtstillingen er nøyaktig 50/50 og
         klippet fra innloggingen treffer. */
      --st-laster-b: 143px;
      --st-laster-x: calc(50vw - var(--st-laster-b) / 2);
      --st-laster-y: calc(50vh - var(--st-laster-b) * var(--merke-forhold) / 2);

      /* ORG-VELGER: øverst til venstre i innholdsspalta, samme x som
         overskriften under. Spalta er 1000 px bred og sentrert. */
      --st-org-b: 74px;
      --st-org-x: max(28px, calc(50vw - 500px));
      --st-org-y: 62px;
    }

    /* Selve merket. Én regel for alle tre flatene; hver flate setter --rm-*
       fra sin stasjon, og overgangen er den samme uansett vei. */
    .reise-merke {
      position: fixed;
      left: var(--rm-x);
      top: var(--rm-y);
      width: var(--rm-b);
      height: calc(var(--rm-b) * var(--merke-forhold));
      fill: var(--rm-farge, #fff);
      /* Ingen «all»: --rm-* endres i samme tick som klassen, og en all-regel
         ville forsøkt å animere fill-arv og annet vi ikke vil ha med. */
      transition:
        left   var(--reise-tid) var(--anim-kurve, cubic-bezier(.2,.85,.3,1)),
        top    var(--reise-tid) var(--anim-kurve, cubic-bezier(.2,.85,.3,1)),
        width  var(--reise-tid) var(--anim-kurve, cubic-bezier(.2,.85,.3,1)),
        height var(--reise-tid) var(--anim-kurve, cubic-bezier(.2,.85,.3,1)),
        fill   var(--reise-tid) ease;
    }
    @media (prefers-reduced-motion: reduce) {
      /* Flatene bytter fortsatt, men uten forflytning: merket står der det
         står på hver flate. Klippet blir et klipp, og det er greit. */
      .reise-merke { transition: fill .2s ease; }
      /* Glansen er BEVEGELSE og skal vekk — men lasteskjermen må fortsatt vise
         at noe skjer, ellers er den bare en mørk flate. Rolig opacity-puls i
         stedet, uten forflytning. CSS-fill vinner over fill-attributtet på
         <g>, så gradienten kobles ut her og ingen andre steder. */
      .laster-merke g { fill: var(--primary); }
      .laster-merke { animation: elabDemp 1.9s ease-in-out infinite; }
    }

    /* ── 1. INNLOGGING ──────────────────────────────────────────────
       Rød fullflate. Merket i hvitt, stort nok til å blø ut kanten — det
       er merket, ikke en logo i et hjørne. Skjemaet ligger i en smal
       høyrespalte, med ordmerket høyt og feltene lavt. */
    #login-screen {
      --rm-x: var(--st-login-x);
      --rm-y: var(--st-login-y);
      --rm-b: var(--st-login-b);
      --rm-farge: #fff;
      background: var(--primary) !important;
      transition: background-color var(--reise-tid) ease;
    }
    /* Utgangen mot lasteskjermen: merket reiser til LASTER-stasjonen og
       blir rødt mens flata mørkner. Innholdet fader først — et skjema som
       krymper sammen med merket ser ut som en feil, ikke en overgang. */
    #login-screen.reise-ut {
      --rm-x: var(--st-laster-x);
      --rm-y: var(--st-laster-y);
      --rm-b: var(--st-laster-b);
      --rm-farge: var(--primary);
      background: #2A2A2A !important;
    }
    #login-screen.reise-ut .logginn-spalte { opacity: 0; transform: translateY(-6px); }

    .logginn-spalte {
      position: fixed;
      right: max(28px, calc(50vw - 569px));
      top: 64px;
      bottom: 64px;
      width: min(372px, calc(100vw - 56px));
      display: flex;
      flex-direction: column;
      /* margin-bottom:auto på .logginn-topp i stedet for space-between:
         de ser like ut når det er ledig plass, men når innholdet er høyere
         enn spalta (standalone-hintet + en feilmelding samtidig) klipper
         space-between toppen bort i en scroll-container. Med auto-margin
         starter innholdet på toppen og scroller normalt.
         Gap er en MINSTEavstand: uten den ville taglinen klistret seg til
         e-postfeltet i akkurat det tilfellet. */
      gap: 40px;
      overflow-y: auto;
      font-family: 'Inter', -apple-system, sans-serif;
      transition: opacity .28s ease, transform .28s ease;
    }
    .logginn-topp { display: flex; flex-direction: column; align-items: flex-start; margin-bottom: auto; }
    .logginn-ord {
      font-family: 'Bebas Neue', sans-serif;
      font-size: clamp(56px, 6.8vw, 86px);
      line-height: .9;
      letter-spacing: .01em;
      color: #fff;
    }
    /* ── Tekst på den røde flata ──────────────────────────────────────
       Hvit på #F71B00 måler 4,11:1. Det holder for STOR tekst (AA krever
       3:1 der), men ikke for brødtekst, som krever 4,5. Alt som er mindre
       enn stort får derfor samme dempede pille: hvit på den måler 5,66:1.
       Pilla er altså ikke pynt — den er den eneste måten en liten hvit
       tekst kan stå på merkerødt. Stor tekst (ordmerket, undertitlene)
       står fritt. */
    .logginn-tagline,
    .logginn-lenke,
    .logginn-under-tekst,
    #login-status,
    #login-standalone-hint {
      background: rgba(0,0,0,.17);
      color: #fff;
    }
    .logginn-tagline {
      margin-top: 18px;
      font-size: 13.5px;
      font-weight: 600;
      padding: 7px 16px;
      border-radius: 999px;
    }
    .logginn-bunn { display: flex; flex-direction: column; }
    /* De tre undersidene deler spalte. Flex-kolonne her og ikke bare på
       .logginn-bunn: «Glemt passord?» er align-self:flex-end og trenger en
       flex-forelder for å finne høyrekanten. */
    #login-hoved, #login-glemt, #login-reset { flex-direction: column; }
    #login-hoved { display: flex; }
    /* Feltene er hvite på rødt. Placeholderen ER etiketten (feltene er
       placeholder-only), så den må holde AA mot hvitt — #6B6058 måler
       6,1:1, mot 2,6:1 for nettleserens standard grå. */
    #login-screen input {
      height: 42px;
      box-sizing: border-box;
      padding: 0 15px;
      border: 1px solid transparent;
      border-radius: 9px;
      background: #fff;
      /* Fast, ikke --text: feltet er alltid hvitt, mens --text snur til
         #ECEDF0 i mørk modus — da hadde man skrevet lyst på hvitt. */
      color: #1D1D1D;
      font-family: inherit;
      font-size: 14px;
      outline: none;
      transition: border-color .15s, box-shadow .15s;
    }
    #login-screen input::placeholder { color: #6B6058; opacity: 1; }
    #login-screen input:focus { border-color: #2A2A2A; box-shadow: 0 0 0 3px rgba(0,0,0,.18); }
    .logginn-felt { display: flex; flex-direction: column; gap: 12px; }
    .logginn-knapper { display: flex; gap: 11px; margin-top: 13px; }
    .logginn-knapper button {
      flex: 1;
      height: 42px;
      border: none;
      border-radius: 9px;
      font-family: inherit;
      font-size: 14px;
      font-weight: 700;
      color: #fff;
      cursor: pointer;
      transition: background-color .15s, transform .1s;
    }
    .logginn-knapper button:active { transform: scale(.985); }
    /* E-post og passord er primærveien nå. Google er sekundær med vilje:
       i hjemskjerm-appen på iOS åpner OAuth-arket en isolert sesjon uten
       Safari-innloggingen, og tastaturet kan utebli helt der (se
       #login-standalone-hint). Knappen er fortsatt like stor — bare
       lavere i rangen. */
    .logginn-primar { background: #2A2A2A; }
    .logginn-primar:hover { background: #1D1D1D; }
    .logginn-google { background: rgba(0,0,0,.15); }
    .logginn-google:hover { background: rgba(0,0,0,.26); }
    .logginn-lenke {
      align-self: flex-end;
      margin-top: 14px;
      border: none;
      padding: 5px 13px;
      border-radius: 999px;
      font-family: inherit;
      font-size: 12.5px;
      font-weight: 600;
      cursor: pointer;
      transition: background-color .15s;
    }
    .logginn-lenke:hover { background: rgba(0,0,0,.3); }
    #login-status {
      margin-top: 16px;
      padding: 10px 14px;
      border-radius: 9px;
      font-family: inherit;
      font-size: 13px;
      line-height: 1.6;
    }
    /* Ingen reservert høyde: statuslinja er tom det meste av tiden, og en
       tom pille under skjemaet er en flekk uten innhold. */
    #login-status:empty { display: none; }
    /* Undersidene (glemt passord, nytt passord) arver den røde flata, men
       er egne skjermer i samme spalte. */
    /* 20px + 700 er over AA-grensa for «stor tekst» (18,66 px fet), der
       kravet er 3:1 — hvit på merkerødt måler 4,11 og står dermed fritt.
       16px ville krevd 4,5 og måttet inn i en pille som brødteksten under. */
    .logginn-under-tittel { font-size: 20px; font-weight: 700; color: #fff; margin-bottom: 8px; }
    .logginn-under-tekst {
      align-self: flex-start;
      font-size: 13px; line-height: 1.55;
      padding: 8px 14px; border-radius: 9px;
      margin-bottom: 20px;
    }
    #login-standalone-hint { border: 1px solid rgba(255,255,255,.22); }
    #login-standalone-hint strong { color: #fff; }

    /* ── 2. LASTESKJERM ─────────────────────────────────────────────
       Mørk flate, rødt merke, og en steglinje som teller ekte milepæler
       (auth → org → data) — ikke en tidsstyrt animasjon. Står den stille,
       går det faktisk tregt, og det er meningen at man skal se det. */
    #loading-screen {
      --rm-x: var(--st-laster-x);
      --rm-y: var(--st-laster-y);
      --rm-b: var(--st-laster-b);
      --rm-farge: var(--primary);
      /* Fast #2A2A2A, ikke --bg-panel: det tokenet snur til #16171C i mørk
         modus, og lasteskjermen er en merkeflate — den skal se lik ut for
         alle. Org-velgeren under følger derimot temaet, for den er første
         skjerm i appen og ikke en del av oppstarten. */
      background: #2A2A2A !important;
      transition: background-color var(--reise-tid) ease;
    }
    /* Utgangen mot org-velgeren: samme klipp én gang til, andre vei. */
    #loading-screen.reise-ut {
      --rm-x: var(--st-org-x);
      --rm-y: var(--st-org-y);
      --rm-b: var(--st-org-b);
      background: var(--bg) !important;
    }
    #loading-screen.reise-ut .laster-under { opacity: 0; }
    /* Teksten henger UNDER merkets stasjon uten å delta i sentreringen:
       ellers ville merket blitt skjøvet opp av teksten, og klippet fra
       innloggingen ville bommet med akkurat den halve teksthøyden. */
    .laster-under {
      position: fixed;
      top: calc(var(--st-laster-y) + var(--st-laster-b) * var(--merke-forhold) + 40px);
      left: 0;
      right: 0;
      text-align: center;
      transition: opacity .28s ease;
    }
    .laster-ord {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 31px;
      line-height: 1;
      letter-spacing: .17em;
      /* Samme motvekt som .elab-ord: letter-spacing legger luft etter siste
         tegn også, og en sentrert linje står ellers for langt til venstre. */
      margin-right: -.17em;
      color: #fff;
    }
    .laster-steg {
      margin-top: 11px;
      font-family: 'Inter', -apple-system, sans-serif;
      font-size: 13.5px;
      font-weight: 500;
      color: rgba(255,255,255,.78);
      transition: opacity .17s ease;
    }
    .laster-steg.bytter { opacity: 0; }
    .laster-steg:empty { display: none; }
    /* --primary måler 3,49:1 mot #2A2A2A — under AA for et tall som ER
       informasjonen. #FF8A75 er appens egen mørk modus-utgave av merkerødt
       (--primary-dark-adaptiv) og måler 6,25:1. Skrevet ut, ikke tokenet:
       lasteskjermen er alltid mørk, uansett hvilket tema brukeren har. */
    .laster-steg b { color: #FF8A75; font-weight: 700; }
    /* 0.32 ga 2,81:1. «/ 3» er dempet, men det er fortsatt tallet som sier
       hvor mange steg som gjenstår. 0.55 → 5,42:1. */
    .laster-steg i { color: rgba(255,255,255,.55); font-style: normal; }
    .laster-steg span { margin-left: 9px; }

    /* ── 3. ORG-VELGEREN ────────────────────────────────────────────
       Lys flate — den er ikke en del av oppstarten lenger, den er første
       skjerm i appen. Kortene følger appens kort-idiom.
       Rendres inn i #login-screen av visOrgVelger(), som setter .orgvelg
       på den: derfor overstyrer disse reglene login-flatas røde. */
    #login-screen.orgvelg {
      --rm-x: var(--st-org-x);
      --rm-y: var(--st-org-y);
      --rm-b: var(--st-org-b);
      --rm-farge: var(--primary);
      background: var(--bg) !important;
      display: block !important;
      overflow-y: auto;
    }
    .orgvelg-spalte {
      width: min(1000px, calc(100vw - 56px));
      margin: 0 auto;
      /* Starter under merkets stasjon, slik at overskriften følger merket
         i stedet for å ligge bak det. */
      padding: calc(var(--st-org-y) + var(--st-org-b) * var(--merke-forhold) + 30px) 0 62px;
      font-family: 'Inter', -apple-system, sans-serif;
      animation: orgvelgInn var(--anim-tid, .52s) var(--anim-kurve, cubic-bezier(.2,.85,.3,1)) .12s backwards;
    }
    .orgvelg-tittel {
      /* <h1> har nettleserens egen margin (0.67em ≈ 23 px) — den la seg oppå
         den utregnede avstanden til merket og gjorde luften der tilfeldig. */
      margin: 0;
      font-family: 'Bebas Neue', sans-serif;
      font-size: 34px;
      line-height: 1;
      letter-spacing: .035em;
      color: var(--text);
    }
    .orgvelg-hvem { margin-top: 7px; font-size: 13.5px; color: var(--text-muted); }
    .orgvelg-liste {
      margin-top: 26px;
      display: flex;
      flex-direction: column;
      gap: 11px;
    }
    .orgvelg-kort {
      display: flex;
      align-items: center;
      gap: 15px;
      padding: 15px 20px;
      background: var(--surface);
      border: 1px solid var(--border);
      border-radius: 11px;
      box-shadow: 0 1px 2px rgba(0,0,0,.05);
      text-decoration: none;
      color: var(--text);
      transition: border-color .15s, box-shadow .15s, transform .15s;
    }
    .orgvelg-kort:hover {
      border-color: var(--primary);
      box-shadow: 0 6px 18px rgba(0,0,0,.08);
      transform: translateY(-1px);
    }
    .orgvelg-kort:active { transform: scale(.995); }
    .orgvelg-monogram {
      width: 40px; height: 40px; flex-shrink: 0;
      border-radius: 9px;
      background: var(--primary);
      color: #fff;
      display: flex; align-items: center; justify-content: center;
      font-family: 'Bebas Neue', sans-serif;
      font-size: 17px; letter-spacing: .06em;
    }
    .orgvelg-tekst { flex: 1; min-width: 0; }
    .orgvelg-navn {
      display: block;
      font-size: 15px; font-weight: 700;
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }
    .orgvelg-meta { display: block; margin-top: 2px; font-size: 12px; color: var(--text-muted); }
    .orgvelg-rolle { flex-shrink: 0; font-size: 12px; font-weight: 700; }
    .orgvelg-fot { margin-top: 26px; display: flex; justify-content: flex-end; }
    .orgvelg-fot button {
      background: none;
      border: 1px solid var(--border);
      border-radius: 8px;
      padding: 7px 16px;
      font-family: inherit; font-size: 12px;
      color: var(--text-muted);
      cursor: pointer;
      transition: border-color .15s, color .15s;
    }
    .orgvelg-fot button:hover { border-color: var(--text-muted); color: var(--text); }
    @keyframes orgvelgInn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

    /* Smalt: spalta legger seg UNDER merket i stedet for ved siden av. Her er
       den i vanlig flyt og ikke fastlåst — et lavt vindu (liggende telefon,
       delt skjerm) har ikke plass til både et merke som fyller flata og et
       skjema, og da skal flata kunne scrolle i stedet for å klippe toppen av
       skjemaet. min-height skyver innholdet ned mot bunnen så lenge det ER
       plass; blir det for trangt, vokser spalta og #login-screen scroller. */
    @media (max-width: 860px) {
      :root {
        /* vh FØRST i min(): på et lavt vindu er det høyden som er knapp, og
           et merke målt i vw ville skjøvet skjemaet under folden. */
        --st-login-b: min(26vh, 58vw);
        --st-login-x: calc(var(--st-login-b) * -0.14);
        --st-login-y: 7vh;
        --st-org-x: 28px;
        --st-org-y: 34px;
        --st-org-b: 58px;
      }
      /* Inline display:flex på elementet, derfor !important. Taper fortsatt
         mot html.sesjon-ventet og html.oppstart-aktiv, som er mer spesifikke. */
      #login-screen { display: block !important; overflow-y: auto !important; }
      /* …men ikke når initAuth har skjult den etter innlogging. Uten denne
         sto skjemaet igjen over appen på mobil etter vellykket innlogging. */
      #login-screen[style*="display: none"] { display: none !important; }
      .logginn-spalte {
        position: static;
        overflow: visible;   /* #login-screen scroller i stedet, se over */
        /* Taket er lesbarhet, ikke plass: et e-postfelt over 420 px er en
           strek, ikke et felt — og på en liggende telefon er flata 712 px bred. */
        width: auto;
        max-width: 420px;
        margin: calc(var(--st-login-y) + var(--st-login-b) * var(--merke-forhold) + 36px) 28px
                max(34px, env(safe-area-inset-bottom));
        min-height: calc(100vh - var(--st-login-y) - var(--st-login-b) * var(--merke-forhold) - 106px);
        gap: 38px;
      }
      /* Smal: merket ligger over, så innholdet skal samles NEDERST. */
      .logginn-topp { margin-bottom: 0; margin-top: auto; }
      .logginn-ord { font-size: clamp(46px, 13vw, 72px); }
      .orgvelg-spalte { width: calc(100vw - 56px); }
    }

    /* Lavt vindu (liggende telefon, delt skjerm): ordmerket er det som koster
       mest høyde, og et tolinjers EVENT/LAB i 72 px skyver «Logg inn» under
       folden. Her måles det i vh i stedet for vw. */
    @media (max-height: 560px) {
      .logginn-ord { font-size: clamp(34px, 8vh, 56px); }
      .logginn-spalte { gap: 22px; }
      .logginn-tagline { margin-top: 12px; }
    }
    /* ==========================================
       MOBIL-OPPSTART (.oppstart-*)
       Ett dekke som eier hele oppstarten på ≤768 px — også innloggingen og
       redirect-hoppet i landing.js. Porten (klassen på <html>) settes av
       inline-scriptet i Index.html <head>; kontrolleren (window._oppstart*)
       bor i app-mobile.js. Se docs/mobil-oppstart-2026-08-10.md.
       Stilen MÅ ligge her og ikke i app-mobiles MB_CSS: MB_CSS injiseres av et
       defer-skript og finnes ikke når flata skal stå på skjermen.
       ========================================== */
    .oppstart {
      display: none;
      position: fixed;
      inset: 0;
      z-index: 10500;
      box-sizing: border-box;
      flex-direction: column;
      align-items: center;
      justify-content: space-between;
      background: #1D1D1D;
      padding: calc(24px + env(safe-area-inset-top)) 24px calc(20px + env(safe-area-inset-bottom));
      opacity: 1;
      transition: opacity .42s ease;
    }
    /* To veier inn: porten mens flata lever, .ut mens den fader. Layouten ligger
       på basisregelen nettopp fordi oppstart-aktiv fjernes FØR fade-en er
       ferdig — det er den fjerningen som slipper #login-screen, #loading-screen
       og de pausede innfallene fri. Uten .ut ville flata forsvunnet momentant. */
    html.oppstart-aktiv .oppstart,
    .oppstart.ut { display: flex; }
    .oppstart.ut { opacity: 0; pointer-events: none; }

    /* #login-screen har display:flex INLINE i markupen, så en vanlig regel
       taper. !important er trygt her fordi oppstart-aktiv fjernes idet flata
       begynner å fade: kreves login, står skjemaet klart under det fadende
       dekket. #loading-screen ville ellers loopet sitt eget merke bak dekket. */
    html.oppstart-aktiv #login-screen,
    html.oppstart-aktiv #loading-screen { display: none !important; }

    /* Desktop-motstykket (porten i Index.html, 2026-09-12): finnes en
       Supabase-sesjon i localStorage, skal innloggingsskjemaet ikke blinke på
       hver sidelast mens sjekk_auth() venter på nettet — det mørke dekket
       (#loading-screen med merket) står i stedet, fra første piksel til
       flaten er klar. initAuth slipper klassen på hvert utgangspunkt
       (_slippSesjonVentet), og der en flate styrer loaderen med inline-stil
       settes den inline-synlig i samme tick, så dekket ikke blinker. */
    html.sesjon-ventet #login-screen   { display: none !important; }
    html.sesjon-ventet #loading-screen { display: flex !important; }
    /* Lasteskjermen er bare merket: tekstelementene står tomme i markupen og
       vises kun når hentData sin feilvei har skrevet noe i dem. */
    #loading-screen h2:empty,
    #loading-status:empty { display: none; }

    /* I --fortsett og --stille skal merket stå ferdig tegnet: .elab-merke--animert
       ligger i markupen og ville ellers spilt innfallet sitt om igjen. */
    html:not(.oppstart-full) .oppstart-merke .elab-strek { animation: none; }

    .oppstart-midt { display: flex; flex-direction: column; align-items: center; margin: auto 0; }
    .oppstart-merke { margin-bottom: 22px; }
    .oppstart-ord {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 34px;
      line-height: 1;
      color: #fff;
      /* Samme motvekt som .elab-ord: letter-spacing legger luft etter siste
         tegn også, og en sentrert lockup står ellers for langt til venstre. */
      letter-spacing: .12em;
      margin-right: -.12em;
    }
    /* Indikatoren er EKTE milepæler (auth → org/event → data), ikke en tidsstyrt
       animasjon. Står den stille, går det faktisk tregt — det er hensikten. */
    .oppstart-spor {
      width: 132px;
      height: 2px;
      margin: 22px 0 18px;
      border-radius: 999px;
      background: rgba(255,255,255,0.12);
      overflow: hidden;
    }
    .oppstart-spor > i {
      display: block;
      width: 100%;
      height: 100%;
      border-radius: inherit;
      background: var(--primary);
      transform: scaleX(0);
      transform-origin: left center;
      /* Transition, ikke animation: den skal også virke under reduced motion,
         fordi indikatoren er informasjon og ikke pynt. */
      transition: transform .32s cubic-bezier(.2,.85,.3,1);
    }
    .oppstart-tekst { text-align: center; min-height: 34px; transition: opacity .17s ease; }
    .oppstart-tekst.bytter { opacity: 0; }
    .oppstart-tittel {
      font-family: 'Inter', -apple-system, sans-serif;
      font-size: 15px;
      font-weight: 600;
      line-height: 1.35;
      color: #fff;
    }
    .oppstart-tittel:empty { display: none; }
    .oppstart-under {
      font-family: 'Inter', -apple-system, sans-serif;
      font-size: 11px;
      font-weight: 600;
      line-height: 1.5;
      text-transform: uppercase;
      letter-spacing: .11em;
      color: rgba(255,255,255,0.42);
    }
    /* «av» holdes gemen: hele linja i versaler leste som en stamme mot
       org-navnet rett over, og signaturen skal ligge under, ikke konkurrere. */
    .oppstart-bunn {
      font-family: 'Inter', -apple-system, sans-serif;
      font-size: 10px;
      font-weight: 500;
      letter-spacing: .06em;
      color: rgba(255,255,255,0.26);
    }
    .oppstart-bunn b {
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: .14em;
      color: rgba(255,255,255,0.42);
    }

    @keyframes oppstartMerke {
      from { transform: scale(.86); opacity: 0; }
      to   { transform: none;       opacity: 1; }
    }
    @keyframes oppstartOrd {
      from { clip-path: inset(0 100% 0 0); opacity: 0; transform: translateY(4px); }
      to   { clip-path: inset(0 -10% 0 0); opacity: 1; transform: none; }
    }
    @keyframes oppstartTon { from { opacity: 0; } to { opacity: 1; } }

    html, body {
      height: 100vh;
      margin: 0;
      overflow: hidden;
      font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
      background-color: var(--bg);
      color: var(--text);
      -webkit-font-smoothing: antialiased;
    }
    body { display: flex; flex-direction: column; }

    /* ==========================================
       HEADER
       ========================================== */
    .header-panel {
      position: fixed;
      top: 0; left: 0; right: 0;
      z-index: 2000;
      background: var(--header-dark, #1D1D1D);
      padding: 0 20px;
      border-bottom: 1px solid rgba(0,0,0,0.25);
      box-shadow: 0 4px 20px rgba(0,0,0,0.28);
      box-sizing: border-box;
      display: flex;
      flex-direction: column;
      gap: 0;
      transform: translateY(0);
      transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1),
                  box-shadow 0.28s ease;
    }
    .header-panel.skjult {
      transform: translateY(-100%);
      box-shadow: none;
    }
    #header-spacer {
      flex-shrink: 0;
      transition: height 0.28s cubic-bezier(0.4, 0, 0.2, 1);
    }
    .header-row1 {
      display: flex; align-items: center; gap: 10px;
      height: 54px;
    }
    .tlb-tilbake {
      background: color-mix(in srgb, #fff 8%, var(--header-dark, #1D1D1D)) !important;
      border: 1px solid rgba(255,255,255,0.16) !important;
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.09), 0 1px 2px rgba(0,0,0,0.35);
      color: rgba(255,255,255,0.88) !important;
      padding: 6px 11px !important; border-radius: 8px;
      font-size: 12px; font-weight: 600;
      display: inline-flex; align-items: center; gap: 6px;
      cursor: pointer; white-space: nowrap; flex-shrink: 0;
    }
    .tlb-tilbake:hover {
      background: color-mix(in srgb, #fff 14%, var(--header-dark, #1D1D1D)) !important;
      border-color: rgba(255,255,255,0.30) !important;
      color: #fff !important;
    }
    .tlb-modus-tag {
      flex-shrink: 0;
      font-size: 10px; font-weight: 700;
      text-transform: uppercase; letter-spacing: 0.09em;
      color: color-mix(in srgb, var(--primary) 75%, #fff);
      background: color-mix(in srgb, var(--primary) 16%, transparent);
      border: 1px solid color-mix(in srgb, var(--primary) 40%, transparent);
      border-radius: 999px; padding: 3px 10px;
    }
    .header-row3 {
      display: flex; align-items: center; gap: 0;
      border-top: 1px solid rgba(255,255,255,0.07);
      padding: 8px 0 9px;
    }
    .header-panel .btn-ai-primary {
      background: linear-gradient(135deg,var(--primary-dark),var(--primary));
      color: white;
      border: 1px solid rgba(255,255,255,0.20);
      font-weight: 700;
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.22), 0 2px 10px rgba(var(--primary-tint), 0.35);
    }
    .header-panel .btn-ai-primary:hover {
      background: linear-gradient(135deg,#E01700,#FF3D24);
      border-color: rgba(255,255,255,0.32);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.26), 0 4px 12px rgba(var(--primary-tint), 0.45);
    }
    /* Nøytral mørk — «Opprett med AI» er verktøylinjas ENE røde primærhandling,
       og to røde AI-knapper side om side lot rødt slutte å bety «viktigst» */
    .header-panel .btn-ai-secondary {
      background: color-mix(in srgb, #fff 8%, var(--header-dark, #1D1D1D));
      color: white;
      border: 1px solid rgba(255, 255, 255, 0.26);
      font-weight: 700;
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.10), 0 1px 2px rgba(0,0,0,0.35);
    }
    .header-panel .btn-ai-secondary:hover {
      background: color-mix(in srgb, #fff 14%, var(--header-dark, #1D1D1D));
      border-color: rgba(255, 255, 255, 0.4);
    }
    #header-pin-btn.pinned {
      background: rgba(255,255,255,0.18) !important;
      border-color: rgba(255,255,255,0.45) !important;
      color: white !important;
    }
    .header-zone {
      display: flex; align-items: center; gap: 6px;
      padding: 0 14px;
      flex-shrink: 0;
    }
    .header-zone:first-child { padding-left: 0; }
    .header-zone + .header-zone { border-left: 1px solid rgba(255,255,255,0.09); }
    .header-zone.grow { flex: 1; }
    .zone-label {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 11px; font-weight: 400; color: rgba(255,255,255,0.32);
      letter-spacing: 0.12em;
      white-space: nowrap; margin-right: 4px;
    }

    /* Nedsenket gruppeflate — kontrast til de hevede enkeltknappene */
    .ctrl-group {
      display: flex; align-items: center; gap: 1px;
      background: rgba(0,0,0,0.26);
      border: 1px solid rgba(255,255,255,0.10);
      box-shadow: inset 0 1px 2px rgba(0,0,0,0.3);
      border-radius: 8px; padding: 2px;
      flex-shrink: 0;
    }
    .ctrl-seg-btn {
      background: transparent !important;
      border: none !important;
      box-shadow: none !important;
      color: rgba(255,255,255,0.75) !important;
      font-size: 15px; font-weight: 400;
      padding: 2px 8px !important; line-height: 1.2;
      border-radius: 6px !important;
    }
    .ctrl-seg-btn:hover { background: rgba(255,255,255,0.14) !important; color: #fff !important; }
    .ctrl-seg-verdi {
      font-family: 'JetBrains Mono', monospace;
      font-size: 11px; font-weight: 700; color: #fff;
      min-width: 28px; text-align: center;
    }
    .header-sep {
      width: 1px; height: 18px; background: rgba(255,255,255,0.15); flex-shrink: 0;
    }
    /* Del-knappen skjules/vises via style.display fra app-core — flex-layouten
       må derfor ligge i CSS så ikonet sentreres når inline-display fjernes. */
    #delelenke-btn { display: inline-flex; align-items: center; gap: 5px; }

    /* Dagknapper i verktøyslinjen (genereres av genererDatoArray) */
    .tl-dag-btn {
      display: inline-flex; flex-direction: column; align-items: center; gap: 0;
      min-width: 34px; padding: 3px 7px 4px !important;
      border-radius: 8px;
      background: color-mix(in srgb, #fff 8%, var(--header-dark, #1D1D1D)) !important;
      border: 1px solid rgba(255,255,255,0.15) !important;
      color: rgba(255,255,255,0.85) !important;
      cursor: pointer; line-height: 1.15;
    }
    .tl-dag-btn:hover {
      background: color-mix(in srgb, #fff 14%, var(--header-dark, #1D1D1D)) !important;
      border-color: rgba(255,255,255,0.28) !important;
      color: #fff !important;
    }
    .tl-dag-uke {
      font-size: 10px; font-weight: 700; letter-spacing: 0.08em;
      text-transform: uppercase; opacity: 0.8;
    }
    .tl-dag-nr { font-size: 13px; font-weight: 700; }
    .tl-dag-btn.active {
      background: var(--primary) !important;
      border-color: var(--primary) !important;
      color: #fff !important;
      box-shadow: 0 2px 8px rgba(var(--primary-tint), 0.45);
    }
    .tl-dag-btn.active .tl-dag-uke { opacity: 0.85; }
    /* Dager utenfor eventdatoene (genererDatoArray utvider til faktiske
       hendelsesdatoer): nedtonet + stiplet så de skiller seg fra perioden. */
    .tl-dag-btn--utenfor {
      opacity: 0.55;
      border-style: dashed !important;
    }
    .tl-dag-btn--utenfor.active { opacity: 0.9; }

    /* ORG/EVENT-CHIP OG DROPDOWN */
    .org-chip {
      display: flex; align-items: center; gap: 6px;
      background: color-mix(in srgb, #fff 8%, var(--header-dark, #1D1D1D));
      border: 1px solid rgba(255,255,255,0.16);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), 0 1px 2px rgba(0,0,0,0.3);
      border-radius: 8px; padding: 5px 10px 5px 10px;
      color: white; font-size: 12px; font-weight: 600;
      cursor: pointer; transition: background 0.15s; white-space: nowrap;
      font-family: inherit;
    }
    .org-chip:hover {
      background: color-mix(in srgb, #fff 14%, var(--header-dark, #1D1D1D));
      border-color: rgba(255,255,255,0.28);
    }
    .org-chip-sep { opacity: 0.3; margin: 0 2px; }
    .org-chip-event { color: rgba(255,255,255,0.65); font-weight: 500; }
    .org-chip-arrow { opacity: 0.45; font-size: 10px; margin-left: 2px; }

    .org-dropdown-popup {
      position: absolute; top: calc(100% + 8px); right: 0;
      background: white; border-radius: 12px;
      box-shadow: 0 8px 32px rgba(0,0,0,0.18), 0 2px 8px rgba(0,0,0,0.1);
      border: 1px solid #E5E7EB; min-width: 240px; z-index: 9999;
      overflow: hidden; animation: dropdownFadeIn 0.12s ease;
    }
    @keyframes dropdownFadeIn { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:translateY(0); } }
    .org-dropdown-header {
      padding: 12px 16px 8px;
      font-size: 10px; font-weight: 700; color: #9CA3AF;
      text-transform: uppercase; letter-spacing: 0.08em;
    }
    .org-dropdown-item {
      display: flex; align-items: center; gap: 10px;
      padding: 9px 16px; font-size: 13px; color: #1D1D1D;
      cursor: pointer; transition: background 0.1s; text-decoration: none;
    }
    .org-dropdown-item:hover { background: #F9FAFB; }
    .org-dropdown-item.active { background: #FFF7ED; color: #EA580C; font-weight: 600; }
    .org-dropdown-item.action { color: #374151; font-weight: 500; }
    .org-dropdown-sep { height: 1px; background: #F1F5F9; margin: 4px 0; }

    .hoved-tittel {
      margin: 0;
      font-family: 'Bebas Neue', 'Inter', sans-serif;
      font-size: 21px;
      font-weight: 400;
      color: rgba(255,255,255,0.95);
      letter-spacing: 0.05em;
      white-space: nowrap;
      overflow: hidden; text-overflow: ellipsis;
      min-width: 0; flex-shrink: 1;
      max-width: 340px;
    }

    /* ==========================================
       BUTTONS — base (light bg)
       ========================================== */
    button {
      padding: 7px 14px;
      border: 1.5px solid var(--border);
      border-radius: 8px;
      background: var(--surface);
      color: var(--text);
      font-size: 13px;
      font-weight: 600;
      cursor: pointer;
      transition: all 0.15s ease;
      font-family: inherit;
    }
    /* 2026-08-07: hover maler ikke lenger om bakgrunn/kant — det overstyrte
       modulenes egne knappefarger og tvang frem !important-overstyringer.
       Brightness gir samme feedback uten å eie fargen. */
    button:hover { filter: brightness(0.97); }
    button.active {
      background: var(--primary);
      color: white;
      border-color: var(--primary);
      box-shadow: 0 2px 8px rgba(var(--primary-tint), 0.35);
    }

    /* Header button overrides (dark bg) — hevet, solid «tast»-chip:
       solid flate avledet av headerfargen + topplys-inset + myk skygge
       (samme oppskrift som .orgp-support-btn). */
    .header-panel button {
      background: color-mix(in srgb, #fff 8%, var(--header-dark, #1D1D1D));
      color: rgba(255,255,255,0.88);
      border: 1px solid rgba(255,255,255,0.16);
      border-radius: 8px;
      padding: 6px 12px;
      font-size: 12px;
      font-weight: 600;
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.09), 0 1px 2px rgba(0,0,0,0.35);
    }
    .header-panel button:hover {
      background: color-mix(in srgb, #fff 14%, var(--header-dark, #1D1D1D));
      border-color: rgba(255,255,255,0.30);
      color: white;
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.12), 0 2px 6px rgba(0,0,0,0.4);
    }
    .header-panel button.active {
      background: var(--primary);
      color: white;
      border-color: var(--primary);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.25), 0 2px 8px rgba(var(--primary-tint), 0.5);
    }

    /* ==========================================
       PROFILBILDE-AVATARER (avatarInnhold i app-core.js)
       Legges INNI en hvilken som helst avatar-sirkel: holderen
       fyller containeren og klipper bildet til containerens radius;
       initialene bak blir synlige hvis bildet feiler (onerror fjerner img).
       ========================================== */
    .avatar-holder {
      position: relative; width: 100%; height: 100%;
      display: grid; place-items: center;
      border-radius: inherit; overflow: hidden;
    }
    .avatar-bilde {
      position: absolute; inset: 0; width: 100%; height: 100%;
      object-fit: cover; border-radius: inherit;
    }

    /* ==========================================
       SELECTS — base (light bg)
       ========================================== */
    select {
      padding: 7px 14px;
      border: 1.5px solid var(--border);
      border-radius: 8px;
      background: var(--surface);
      color: var(--text);
      font-size: 13px;
      font-weight: 500;
      cursor: pointer;
      font-family: inherit;
      transition: all 0.15s ease;
    }
    select:hover { border-color: #94A3B8; }
    select option { background: white; color: var(--text); }

    /* Header select overrides (dark bg) — nedsenkede felt som søket */
    .header-panel select {
      background: rgba(0,0,0,0.26);
      color: rgba(255,255,255,0.85);
      border: 1px solid rgba(255,255,255,0.12);
      box-shadow: inset 0 1px 2px rgba(0,0,0,0.3);
      border-radius: 8px;
      padding: 6px 9px;
      font-size: 12px;
      font-weight: 600;
      max-width: 170px;
    }
    .header-panel select:hover { background: rgba(0,0,0,0.34); border-color: rgba(255,255,255,0.26); }
    .header-panel select option { background: #2A2A2A; color: white; }

    /* Header text input */
    .header-panel input[type="text"] {
      padding: 6px 11px;
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 8px;
      background: rgba(0,0,0,0.26);
      box-shadow: inset 0 1px 2px rgba(0,0,0,0.3);
      color: white;
      font-size: 12px;
      font-family: inherit;
      transition: all 0.15s ease;
    }
    .header-panel input[type="text"]:focus {
      outline: none;
      border-color: color-mix(in srgb, var(--primary) 55%, transparent);
      background: rgba(0,0,0,0.34);
      box-shadow: inset 0 1px 2px rgba(0,0,0,0.3),
                  0 0 0 3px color-mix(in srgb, var(--primary) 18%, transparent);
    }
    .header-panel input[type="text"]::placeholder { color: rgba(255,255,255,0.35); }
    .header-panel input[type="range"] { cursor: pointer; accent-color: var(--primary); }

    .controls-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }

    /* ==========================================
       TIMELINE
       ========================================== */
    .timeline-wrapper { flex-grow: 1; overflow: auto; display: flex; position: relative; }

    .time-column {
      position: sticky; left: 0; z-index: 990;
      width: 65px; flex-shrink: 0;
      background-color: var(--bg);
      border-right: 1px solid var(--border);
      height: var(--timeline-height, 11520px);
      box-shadow: 2px 0 8px rgba(29,29,29,0.05);
    }
    .time-spacer { height: calc(var(--area-header-height) + var(--loc-header-height)); box-sizing: border-box; }

    .time-slot { height: 120px; box-sizing: border-box; position: relative; border-bottom: 1px solid transparent; }
    .time-text {
      position: absolute; top: -7px; right: 12px;
      font-size: 11px; color: var(--text-muted); font-weight: 600; letter-spacing: 0.02em;
    }
    /* Klokkeslett-etiketter i tidskolonnen (genereres av tegnTidslinje) */
    .tl-time-lbl {
      position: absolute; left: 0; width: 100%; text-align: center;
      font-family: 'JetBrains Mono', monospace;
    }
    .tl-time-lbl--hel     { font-size: 11px; font-weight: 700; color: var(--text); letter-spacing: -0.02em; }
    .tl-time-lbl--halv    { font-size: 10px; font-weight: 500; color: var(--text-muted); }
    .tl-time-lbl--kvarter { font-size: 9px;  font-weight: 400; color: color-mix(in srgb, var(--text-muted) 65%, transparent); }
    /* Skjøt der «Skjul netter» har klappet sammen tomme nattetimer.
       Høyde 0 med overflow synlig — markøren må ikke flytte tidsaksen. */
    .tl-natt-skjot {
      position: absolute; left: 0; right: 0; height: 0; z-index: 940;
      border-top: 1px dashed color-mix(in srgb, var(--text-muted) 55%, transparent);
      line-height: normal; pointer-events: none;
    }
    .tl-natt-skjot span {
      position: absolute; bottom: 1px; left: 50%; transform: translateX(-50%);
      background: var(--bg); padding: 0 3px;
      font-family: 'JetBrains Mono', monospace; font-size: 8px; font-weight: 600;
      color: var(--text-muted); letter-spacing: -0.03em; white-space: nowrap;
    }
    .tl-natt-skjot--under span { bottom: auto; top: 1px; }
    /* Døgnskille — heltrukket der natt-skjøten er stiplet, så de to markørene
       ikke forveksles når begge treffer samme time. */
    .tl-dogn-skille {
      position: absolute; left: 0; right: 0; height: 0; z-index: 941;
      border-top: 1px solid color-mix(in srgb, var(--primary) 45%, transparent);
      line-height: normal; pointer-events: none;
    }
    .tl-dogn-skille span {
      position: absolute; top: 1px; left: 50%; transform: translateX(-50%);
      background: var(--bg); padding: 0 3px;
      font-family: 'JetBrains Mono', monospace; font-size: 8px; font-weight: 600;
      color: color-mix(in srgb, var(--primary) 80%, var(--text-muted));
      letter-spacing: -0.03em; white-space: nowrap;
    }
    #skjul-netter-btn.aktiv {
      background: var(--primary) !important; border-color: var(--primary) !important;
      color: #fff !important;
    }
    /* Dag-etikett (sticky pille øverst i tidskolonnen) */
    .tl-dag-etikett {
      position: absolute; left: 4px; right: 4px;
      background: var(--header-dark, #1D1D1D); color: #fff;
      text-align: center;
      font-family: 'Bebas Neue', sans-serif;
      font-size: 13px; letter-spacing: 0.08em;
      padding: 6px 2px 5px;
      border-radius: 0 0 9px 9px;
      box-shadow: 0 3px 10px rgba(29,29,29,0.25);
    }

    .area-group {
      display: flex; flex-direction: column;
      min-height: var(--timeline-height, 11520px);
      border-right: 2px solid var(--border);
    }
    .area-header {
      position: sticky; top: 0; z-index: 800;
      height: var(--area-header-height); line-height: var(--area-header-height);
      background: var(--header-dark, #374151); color: white;
      text-align: center; font-weight: 400; font-size: 15px;
      font-family: 'Bebas Neue', sans-serif;
      letter-spacing: 0.12em;
      text-shadow: 0 1px 2px rgba(0,0,0,0.25);
      box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
    }
    .location-columns-container { display: flex; flex-direction: row; flex-grow: 1; min-height: 100%; }
    .location-column {
      height: var(--timeline-height, 11520px);
      position: relative; box-sizing: border-box;
      border-right: 1px solid var(--border);
      min-width: var(--col-width); max-width: var(--col-width); flex: 0 0 var(--col-width);
    }
    .location-header {
      position: sticky; top: var(--area-header-height); z-index: 700;
      height: var(--loc-header-height);
      display: flex; align-items: center; justify-content: center;
      background: color-mix(in srgb, var(--surface) 88%, transparent);
      backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
      text-align: center;
      font-weight: 700; font-size: 11.5px; color: var(--text);
      border-bottom: 1px solid var(--border);
      letter-spacing: 0.05em; text-transform: uppercase;
      padding: 0 6px; box-sizing: border-box;
      overflow: hidden;
    }

    .grid-container {
      flex-grow: 1; height: var(--timeline-height, 11520px);
      display: flex; position: relative; cursor: pointer;
      background-image:
        linear-gradient(to bottom, color-mix(in srgb, var(--text) 22%, transparent) 1px, transparent 1px),
        linear-gradient(to bottom, color-mix(in srgb, var(--text) 11%, transparent) 1px, transparent 1px),
        linear-gradient(to bottom, color-mix(in srgb, var(--text) 5%, transparent) 1px, transparent 1px);
      background-size: 100% var(--hour-height), 100% var(--half-hour-height), 100% var(--quarter-height);
    }

    /* ==========================================
       EVENT CARDS
       ========================================== */
    .event-card {
      position: absolute;
      border-radius: 9px;
      color: white;
      box-shadow: 0 1px 3px rgba(15,23,42,0.22), inset 0 1px 0 rgba(255,255,255,0.14), inset 0 0 0 1px rgba(255,255,255,0.06);
      box-sizing: border-box;
      cursor: pointer;
      overflow: hidden;
      transition: box-shadow 0.15s ease, height 0.15s ease, min-width 0.15s ease, transform 0.12s ease;
      border: none;
      display: flex; flex-direction: column;
      justify-content: space-between; align-items: stretch;
      text-align: left; padding: 6px 7px;
    }
    /* Hover-kortet vokser til siden også, ikke bare nedover: i en smal kolonne
       (bredde-slideren nede, eller flere samtidige hendelser som deler plassen)
       ble detaljene ellers presset til ett ord per linje. min-width betyr at
       kolonner som allerede er breiere enn dette står helt urørt.
       overflow-wrap hører hjemme her og ikke på .event-card: hover er eneste
       tilstand med overflow:visible, så det er bare her lange ord kan renne
       utenfor kanten. På kortflaten ellers vil brytingen skyve ansvarlig-linja
       ut av det klippede kortet. */
    .event-card:hover:not(.is-resizing) {
      height: auto !important;
      min-height: var(--card-h, 40px);
      min-width: 210px;
      overflow: visible;
      overflow-wrap: anywhere;
      z-index: 50 !important;
      box-shadow: 0 10px 30px rgba(15,23,42,0.35), inset 0 1px 0 rgba(255,255,255,0.2), inset 0 0 0 1px rgba(255,255,255,0.1);
    }
    .event-card.is-resizing {
      overflow: hidden;
      cursor: ns-resize;
    }
    .event-card-tittel {
      font-weight: 800; font-size: 13.5px; line-height: 1.15;
      letter-spacing: -0.01em;
      margin-bottom: 1px;
      text-shadow: 0 1px 2px rgba(0,0,0,0.18);
    }
    .event-card-tid {
      font-family: 'JetBrains Mono', monospace;
      font-size: 9px; font-weight: 500; opacity: 0.85;
      letter-spacing: -0.02em;
    }
    .event-card-topp { display: flex; align-items: flex-start; justify-content: space-between; gap: 4px; width: 100%; }
    .event-card-topp .event-card-tittel { flex: 1 1 auto; min-width: 0; }
    .event-card-ekstern-chip {
      display: inline-block; margin-left: 5px; padding: 1px 5px;
      background: rgba(255,255,255,0.22); border-radius: 100px;
      font-size: 8.5px; font-weight: 700; letter-spacing: 0.05em;
      text-transform: uppercase; vertical-align: 1px;
    }
    .event-card-ansvarlig { font-size: 12px; font-weight: 600; width: 100%; margin-bottom: 3px; opacity: 0.95; }
    .card-expanded {
      display: none; width: 100%; margin-top: 6px;
      padding-top: 6px; border-top: 1px solid rgba(255,255,255,0.25);
      text-align: left;
    }
    .event-card:hover:not(.is-resizing) .card-expanded { display: block; }
    .card-exp-tid { font-family: 'JetBrains Mono', monospace; font-size: 11.5px; font-weight: 700; margin-bottom: 5px; opacity: 0.95; }
    .card-exp-rad { font-size: 11px; opacity: 0.85; line-height: 1.5; }
    .card-exp-lbl { opacity: 0.65; margin-right: 3px; }
    .card-exp-besk { font-size: 11px; opacity: 0.8; margin-top: 5px; line-height: 1.4; font-style: italic; }
    .card-exp-konflikt { margin-top: 6px; font-size: 11px; font-weight: 700; color: #FBBF24; }

    .resizer {
      position: absolute; bottom: 0; left: 0; width: 100%; height: 8px;
      cursor: ns-resize;
      background: rgba(0,0,0,0.15);
      border-top: 1px solid rgba(0,0,0,0.08);
      border-radius: 0 0 9px 9px;
      opacity: 0;
      transition: opacity 0.12s ease;
    }
    .event-card:hover .resizer { opacity: 1; }
    .resizer:hover { background: rgba(0,0,0,0.3); }

    /* ==========================================
       MODALS
       ========================================== */
    .modal {
      display: none; position: fixed; z-index: 2000; left: 0; top: 0; width: 100%; height: 100%;
      background: rgba(15,23,42,0.65);
      backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
    }
    .modal-content {
      background: var(--surface); margin: 3% auto; padding: 32px;
      border-radius: 16px; width: 650px; max-width: 95%;
      max-height: 92vh; overflow-y: auto; -webkit-overflow-scrolling: touch;
      box-shadow: 0 25px 60px rgba(0,0,0,0.2), 0 0 0 1px rgba(0,0,0,0.04);
    }
    .modal-header {
      margin-top: 0; border-bottom: 1px solid var(--border);
      padding-bottom: 16px; margin-bottom: 24px;
      font-size: 18px; font-weight: 700; color: var(--text); letter-spacing: -0.02em;
    }

    /* Reset buttons/selects inside modals to light theme */
    .modal button, .modal-content button { background: var(--surface); color: var(--text); border-color: var(--border); }
    .modal button:hover, .modal-content button:hover { background: var(--bg); border-color: #C8B8AD; color: var(--text); }
    .modal select, .modal-content select { background: var(--surface); color: var(--text); border-color: var(--border); }
    .modal select option, .modal-content select option { background: white; color: var(--text); }

    /* ── Event-skjema: høyre sidebar ──────────────────────────────── */
    #eventModal {
      background: transparent !important;
      backdrop-filter: none !important;
      -webkit-backdrop-filter: none !important;
      left: auto;
      right: 0;
      width: var(--sidebar-bredde);
      pointer-events: none;
    }
    /* Delt stil for event- og info-sidebar */
    #eventModal .modal-content,
    #infoModal  .modal-content {
      margin: 0 !important;
      max-width: 100vw !important;
      height: 100vh !important;
      max-height: 100vh !important;
      border-left: 1px solid var(--border);
      box-shadow: -12px 0 48px rgba(0,0,0,0.35) !important;
      pointer-events: all;
      box-sizing: border-box !important;
      overflow-y: auto;
      animation: event-sidebar-in 0.28s cubic-bezier(0.32,0.72,0,1);
    }
    #eventModal .modal-content,
    #infoModal  .modal-content {
      width: var(--sidebar-bredde) !important;
      border-radius: 16px 0 0 16px !important;
    }
    @keyframes event-sidebar-in {
      from { transform: translateX(100%); }
      to   { transform: translateX(0); }
    }

    /* ── Info-sidebar ──────────────────────────────────────── */
    #infoModal {
      background: transparent !important;
      backdrop-filter: none !important;
      -webkit-backdrop-filter: none !important;
      left: auto;
      right: 0;
      width: var(--sidebar-bredde);
      pointer-events: none;
    }
    #infoModal .info-layout {
      grid-template-columns: 1fr !important;
    }
    #infoModal .info-kp-kolonne {
      border-left: none !important;
      padding-left: 0 !important;
      border-top: 1px solid var(--border);
      padding-top: 20px;
      margin-top: 8px;
    }
    #infoModal .info-modal-footer {
      position: sticky; bottom: 0;
      background: var(--surface);
      padding: 14px 0 4px !important;
      margin-top: 8px;
      border-top: 1px solid var(--border);
    }

    .event-modal-hd {
      display: flex; align-items: center; justify-content: space-between;
      position: sticky; top: 0; z-index: 2;
      background: var(--surface);
      padding-bottom: 14px; margin-bottom: 20px;
      border-bottom: 1px solid var(--border);
      flex-shrink: 0;
      padding-top: 2px;
    }
    #eventModal .modal-header,
    #infoModal  .modal-header {
      border: none !important; padding: 0 !important; margin: 0 !important;
      font-family: 'Bebas Neue', sans-serif;
      font-size: 22px; font-weight: 400;
      text-transform: uppercase; letter-spacing: 0.03em;
      line-height: 1.1;
      min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .event-modal-lukk {
      width: 28px; height: 28px; border-radius: 7px;
      border: 1px solid var(--border) !important; background: transparent !important;
      color: var(--text-muted) !important; cursor: pointer;
      display: flex !important; align-items: center; justify-content: center;
      flex-shrink: 0; transition: background .12s, color .12s;
      padding: 0;
    }
    .event-modal-lukk:hover { background: var(--border) !important; color: var(--text) !important; }
    #eventModal .mal-footer-row {
      position: sticky; bottom: 0;
      background: var(--surface);
      padding: 14px 0 2px !important;
      margin-top: 12px;
      border-top: 1px solid var(--border);
    }

    .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 24px; }

    .form-group label {
      display: block; font-size: 11px; font-weight: 700;
      margin-bottom: 6px; color: var(--text-muted);
      text-transform: uppercase; letter-spacing: 0.07em;
    }
    .form-group input, .form-group select, .form-group textarea {
      width: 100%; box-sizing: border-box; padding: 10px 12px;
      border: 1.5px solid var(--border); border-radius: 8px;
      font-size: 14px; font-family: inherit; color: var(--text); background: var(--surface);
      transition: border-color 0.15s, box-shadow 0.15s;
    }
    .form-group input:focus, .form-group select:focus, .form-group textarea:focus {
      outline: none; border-color: var(--primary);
      box-shadow: 0 0 0 3px rgba(var(--primary-tint), 0.12);
    }
    .form-group select option { background: white; color: var(--text); }

    /* Synlighets-velgeren: <option> kan ikke inneholde SVG, så ikonet ligger
       i feltkanten og speiler valgt verdi (oppdaterSynlighetIkon i app-core). */
    .synl-select-wrap { position: relative; }
    .synl-select-wrap .synl-select-ikon {
      position: absolute; left: 12px; top: 50%; transform: translateY(-50%);
      display: flex; color: var(--text-muted); pointer-events: none;
    }
    .synl-select-wrap select { padding-left: 35px; }
    .info-value svg { vertical-align: -2px; margin-right: 4px; }

    .info-item { background: var(--bg); padding: 12px 14px; border-radius: 10px; border: 1.5px solid var(--border); }
    .info-label { font-size: 10px; text-transform: uppercase; color: var(--text-muted); font-weight: 700; display: block; margin-bottom: 4px; letter-spacing: 0.07em; }
    .info-value { font-size: 14px; font-weight: 600; color: var(--text); }

    .full-width { grid-column: span 2; }

    .btn-save {
      background: var(--primary) !important; color: white !important; font-weight: 700;
      border: none !important; padding: 11px 24px; border-radius: 8px; font-size: 14px;
      box-shadow: 0 2px 8px rgba(var(--primary-tint), 0.3);
    }
    .btn-save:hover { background: var(--primary-dark) !important; box-shadow: 0 4px 14px rgba(var(--primary-tint), 0.4) !important; }
    .btn-cancel {
      background: var(--bg) !important; color: var(--text-muted) !important;
      border: 1.5px solid var(--border) !important; padding: 11px 24px;
      border-radius: 8px; font-size: 14px; font-weight: 600; margin-left: 10px;
    }
    .btn-cancel:hover { background: var(--border) !important; color: var(--text) !important; }

    /* ==========================================
       TOAST
       ========================================== */
    #toast-varsel {
      visibility: hidden; min-width: 260px;
      background: #0F172A; color: white;
      border-radius: 12px; padding: 14px 18px;
      position: fixed; z-index: 3000; left: 50%; bottom: 32px; transform: translateX(-50%);
      box-shadow: 0 8px 32px rgba(0,0,0,0.35);
      font-size: 14px; font-weight: 500;
      display: flex; justify-content: space-between; align-items: center; gap: 16px;
      border: 1px solid rgba(255,255,255,0.08);
    }
    #toast-varsel.show { visibility: visible; animation: fadein 0.25s, fadeout 0.3s 4.7s; }
    /* Suksess-varianten (visToast med { type: 'suksess' }): grønn hake foran
       teksten, så en tildelingskvittering kan skilles fra feil i sidesynet.
       flex-start i stedet for space-between — med haken som eget flex-element
       ville space-between dyttet den og teksten fra hverandre. */
    #toast-varsel.er-suksess { justify-content: flex-start; border-left: 4px solid rgb(var(--st-ok-tint)); }
    #toast-varsel.er-suksess::before {
      content: '✓'; flex: 0 0 auto; width: 22px; height: 22px; border-radius: 50%;
      background: rgb(var(--st-ok-tint)); color: #fff;
      display: flex; align-items: center; justify-content: center;
      font-size: 13px; font-weight: 800;
    }
    #toast-varsel.er-suksess .btn-undo { margin-left: auto; }
    @keyframes fadein { from { bottom: 16px; opacity: 0; } to { bottom: 32px; opacity: 1; } }
    @keyframes fadeout { from { bottom: 32px; opacity: 1; } to { bottom: 16px; opacity: 0; } }

    .btn-undo { background: rgb(var(--st-feil-tint)); color: white; border: none; padding: 6px 14px; border-radius: 6px; cursor: pointer; font-weight: 700; font-size: 12px; white-space: nowrap; }
    .btn-undo:hover { background: #DC2626; }

    /* ==========================================
       INFO MODAL — TO-KOLONNE KJØREPLAN-LAYOUT
       ========================================== */
    .info-layout {
      display: grid;
      grid-template-columns: 260px 1fr;
      gap: 0 28px;
      align-items: start;
    }
    .info-kp-kolonne {
      border-left: 1px solid var(--border);
      padding-left: 28px;
    }
    .info-kp-kolonne .kp-seksjon {
      margin-top: 0;
      border-top: none;
      padding-top: 0;
    }
    /* Verten for hendelsens faktarutenett. Ikke selv et grid — .lvp-info-grid
       (stil-orgflater.css) har sitt eget oppsett, delt med Program-fanen. */
    .info-fakta { margin-bottom: 12px; }
    .info-meta-extra { display: flex; flex-direction: column; gap: 10px; }
    @media (max-width: 720px) {
      #infoModal .modal-content { width: 95vw; }
      .info-layout { grid-template-columns: 1fr; }
      .info-kp-kolonne { border-left: none; padding-left: 0; border-top: 1px solid var(--border); padding-top: 20px; margin-top: 8px; }
    }

    /* ==========================================
       CONFIRM MODAL
       ========================================== */
    #confirmModal { display: none; position: fixed; z-index: 3000; left: 0; top: 0; width: 100%; height: 100%; background: rgba(15,23,42,0.65); backdrop-filter: blur(6px); }
    #confirmModal .modal-content { background: var(--surface); margin: 15% auto; padding: 32px; border-radius: 16px; width: 360px; text-align: center; box-shadow: 0 25px 60px rgba(0,0,0,0.2); }

    /* KPI MODAL */
    #kpiModal { display: none; position: fixed; z-index: 3100; left: 0; top: 0; width: 100%; height: 100%;
      background: rgba(15,23,42,0.6); backdrop-filter: blur(6px); }
    #kpiModal .modal-content { background: var(--surface); margin: 4% auto; padding: 28px 32px;
      border-radius: 16px; width: 560px; max-width: 95%; max-height: 85vh; overflow-y: auto;
      box-shadow: 0 30px 70px rgba(0,0,0,0.22), 0 0 0 1px rgba(0,0,0,0.04); }
    .kpi-modal-tittel { margin: 0 0 20px; font-size: 18px; font-weight: 800; color: var(--text);
      letter-spacing: -0.02em; display: flex; align-items: center; gap: 10px; }
    .kpi-modal-seksjon { font-size: 11px; font-weight: 700; color: var(--text-muted);
      text-transform: uppercase; letter-spacing: 0.08em; margin: 20px 0 10px; }
    .kpi-rad { display: flex; align-items: center; gap: 10px; padding: 7px 0;
      border-bottom: 1px solid var(--border); }
    .kpi-rad:last-child { border-bottom: none; }
    .kpi-rad-label { font-size: 13px; font-weight: 600; color: var(--text); width: 160px; min-width: 160px; max-width: 160px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .kpi-rad-tall { font-size: 12px; color: var(--text-muted); min-width: 90px; text-align: right; white-space: nowrap; }
    .kpi-bar-wrapper { flex: 1; background: var(--border); border-radius: 4px; height: 7px; overflow: hidden; min-width: 60px; }
    .kpi-bar { height: 100%; border-radius: 4px; transition: width 0.4s cubic-bezier(0.4,0,0.2,1); }
    .kpi-summary-box { background: var(--bg); border-radius: 10px; padding: 14px 18px;
      display: flex; gap: 24px; margin-bottom: 4px; flex-wrap: wrap; }
    .kpi-summary-stat { display: flex; flex-direction: column; }
    .kpi-summary-tall { font-size: 22px; font-weight: 800; color: var(--text); letter-spacing: -0.03em; }
    .kpi-summary-lbl  { font-size: 11px; color: var(--text-muted); margin-top: 1px; }
    #confirmModal h3 { margin-top: 0; color: var(--text); font-size: 18px; font-weight: 700; letter-spacing: -0.02em; }
    #confirmModal p { color: var(--text-muted); font-size: 14px; margin-bottom: 24px; line-height: 1.6; }
    .btn-danger { background: rgb(var(--st-feil-tint)); color: white; border: none; padding: 11px 24px; border-radius: 8px; cursor: pointer; font-weight: 700; font-size: 14px; box-shadow: 0 2px 8px rgba(var(--st-feil-tint),0.3); }
    .btn-danger:hover { background: #DC2626; }

    /* ==========================================
       KONFLIKT-BADGE
       ========================================== */
    /* Rolig markering i hvile: tynn stripe i venstre kant + ikon-badge i
       badge-raden. Full farget ring kun på hover. Stedkonfliktens gule
       stripe vinner hvis begge gjelder (samme par kan kollidere på både
       sted og person) — badge-raden viser uansett begge ikonene. */
    .har-konflikt {
      box-shadow: inset 3px 0 0 #FBBF24, 0 1px 3px rgba(15,23,42,0.22), inset 0 1px 0 rgba(255,255,255,0.14), inset 0 0 0 1px rgba(255,255,255,0.06);
    }
    .har-personkonflikt:not(.har-konflikt) {
      box-shadow: inset 3px 0 0 #A78BFA, 0 1px 3px rgba(15,23,42,0.22), inset 0 1px 0 rgba(255,255,255,0.14), inset 0 0 0 1px rgba(255,255,255,0.06);
    }
    .event-card.har-konflikt:hover:not(.is-resizing) {
      box-shadow: 0 0 0 2px #FBBF24, 0 10px 30px rgba(15,23,42,0.35), inset 0 1px 0 rgba(255,255,255,0.2);
    }
    .event-card.har-personkonflikt:not(.har-konflikt):hover:not(.is-resizing) {
      box-shadow: 0 0 0 2px #8B5CF6, 0 10px 30px rgba(15,23,42,0.35), inset 0 1px 0 rgba(255,255,255,0.2);
    }
    #konflikt-chip {
      display: none; cursor: pointer; padding: 2px 8px;
      background: rgba(251,191,36,0.15); border: 1px solid rgba(251,191,36,0.4);
      border-radius: 6px; font-size: 12px; font-weight: 700; color: #FBBF24;
      white-space: nowrap; transition: background 0.15s;
      align-items: center; gap: 4px;
    }
    #konflikt-chip:hover { background: rgba(251,191,36,0.25); }

    /* ==========================================
       HEATMAP I TIDSKOLONNE
       ========================================== */
    .heatmap-celle {
      position: absolute; right: 0; width: 5px; border-radius: 1px 0 0 1px;
      pointer-events: none;
    }

    /* ==========================================
       HENDELSESMALER
       ========================================== */
    .mal-bar { display: none; }
    .mal-footer-row {
      display: flex; align-items: center; gap: 8px;
      margin-top: 20px; flex-wrap: wrap;
    }
    .btn-sekundær {
      display: inline-flex; align-items: center; gap: 6px;
      padding: 7px 14px; border-radius: 7px; border: 1px solid var(--border);
      background: var(--bg); color: var(--text); font-size: 12px; font-weight: 500;
      cursor: pointer; white-space: nowrap; transition: border-color .12s, color .12s;
    }
    .btn-sekundær:hover { border-color: var(--primary); color: var(--primary); }
    .mal-dropdown-panel {
      position: absolute; bottom: calc(100% + 6px); left: 0;
      min-width: 220px; background: var(--surface);
      border: 1px solid var(--border); border-radius: 8px;
      box-shadow: 0 8px 28px rgba(0,0,0,.15); z-index: 500;
      overflow: hidden;
    }
    .mal-panel-rad {
      display: flex; align-items: center;
    }
    .mal-liste-btn {
      flex: 1; padding: 9px 14px; text-align: left; border: none; background: none;
      color: var(--text); font-size: 13px; cursor: pointer;
    }
    .mal-liste-btn:hover { background: rgba(var(--primary-tint), .06); color: var(--primary); }
    .mal-slett-inline-btn {
      padding: 9px 12px; border: none; background: none;
      color: var(--text-muted); font-size: 16px; cursor: pointer; flex-shrink: 0;
    }
    .mal-slett-inline-btn:hover { color: rgb(var(--st-feil-tint)); }

    /* ==========================================
       LEGENDE MODAL
       ========================================== */
    #legendeModal .modal-content { width: 440px; }
    .legende-rad { display: flex; align-items: center; gap: 10px; padding: 6px 0;
      border-bottom: 1px solid var(--border); font-size: 13px; }
    .legende-rad:last-child { border-bottom: none; }
    .legende-farge { width: 16px; height: 16px; border-radius: 4px; flex-shrink: 0; }

    /* ==========================================
       KPI DASHBOARD
       ========================================== */
    .kpi-box {
      background: rgba(255,255,255,0.07);
      border: 1px solid rgba(255,255,255,0.1);
      border-left: 2px solid rgba(255,255,255,0.25);
      border-radius: 8px; padding: 4px 10px;
      display: flex; flex-direction: column; justify-content: center;
    }
    .kpi-title { font-size: 9px; font-weight: 700; color: rgba(255,255,255,0.45); text-transform: uppercase; letter-spacing: 0.07em; margin-bottom: 1px; }
    .kpi-value { font-size: 13px; font-weight: 800; color: white; white-space: nowrap; }

    /* ==========================================
       TOOLTIP
       ========================================== */
    .tooltip { position: relative; display: inline-block; margin-left: 5px; cursor: help; }
    .tooltip-icon { background: rgba(255,255,255,0.2); color: white; border-radius: 50%; width: 14px; height: 14px; display: inline-flex; align-items: center; justify-content: center; font-size: 10px; font-weight: bold; }
    .tooltip-text {
      visibility: hidden; width: 180px; background-color: #0F172A; color: white;
      text-align: center; border-radius: 8px; padding: 8px 12px;
      position: absolute; z-index: 1000; bottom: 125%; left: 50%; margin-left: -90px;
      opacity: 0; transition: opacity 0.2s; font-size: 11px; font-weight: 400; line-height: 1.5;
      box-shadow: 0 8px 24px rgba(0,0,0,0.25); border: 1px solid rgba(255,255,255,0.08);
    }
    .tooltip:hover .tooltip-text { visibility: visible; opacity: 1; }

    /* ==========================================
       DB STATUS BADGE
       ========================================== */
    .db-status-badge { display: flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 20px; font-size: 11px; font-weight: 700; letter-spacing: 0.03em; }
    .status-green { background: rgba(var(--st-ok-tint),0.15); color: #6EE7B7; border: 1px solid rgba(var(--st-ok-tint),0.3); }
    .status-red { background: rgba(var(--st-feil-tint),0.15); color: #FCA5A5; border: 1px solid rgba(var(--st-feil-tint),0.3); }

    /* ==========================================
       SETTINGS TABS
       ========================================== */
    .tab-btn {
      background: transparent !important; border: none !important;
      border-bottom: 2px solid transparent !important; border-radius: 0 !important;
      color: var(--text-muted) !important; font-weight: 600 !important;
      padding: 8px 16px !important; font-size: 14px !important; box-shadow: none !important;
    }
    .tab-btn:hover { color: var(--primary) !important; background: transparent !important; }
    .tab-btn.active { color: var(--primary) !important; border-bottom: 2px solid var(--primary) !important; background: transparent !important; box-shadow: none !important; }
    .org-tab-hjelp { font-size: 12px; color: var(--text-muted); padding: 6px 2px 14px; min-height: 18px; }

    /* ==========================================
       ORGANISASJONSINNSTILLINGER — FULLSKJERM (A+B)
       ========================================== */
    .orgp-header {
      display: flex; align-items: center; gap: 12px;
      padding: 0 18px; height: 56px;
      background: var(--header-dark); color: #fff;
      border-bottom: 1px solid rgba(0,0,0,0.2);
      flex-shrink: 0;
    }
    /* Event-topbaren er en container så innholdet tilpasser seg redusert bredde
       (AI-panel åpent, smalt vindu) uten at knapper renner ut under panelet.
       Org-sidens header fikk samme hale (Historikk/Mitt ansvar/Innspill/
       Varsler, 2026-09-17) og rant over ved 1180 px — derfor samme grep der. */
    .db-topbar.orgp-header, #org-page > .orgp-header { container-type: inline-size; }
    /* Smal topbar → kollaps knappe-labels til ikon-only (samme grep som
       iPad/tablet), og krymp/skjul søkefeltet gradvis. Container-query slår
       til uansett skjermstørrelse — også når AI-panelet krymper skallet. */
    @container (max-width: 1200px) {
      .orgp-support-btn span:not(.orgp-badge) { display: none; }
      .orgp-support-btn { padding: 8px 9px; }
    }
    @container (max-width: 1000px) {
      .orgp-header-soek { min-width: 0; flex: 0 1 190px; }
    }
    @container (max-width: 820px) {
      .orgp-header-soek { display: none; }
    }
    /* «Rolig kant» (designrunde 18.09.2026, 1A): rammene faller bort i hele
       topbaren — bare tekst og ikon, gruppert med tynne skiller, og AI er den
       eneste fylte (røde) flaten. Knappene finner formen sin i hover. */
    .orgp-header .kpd-tilbake-btn {
      background: none; border: 1px solid transparent; box-shadow: none;
      color: rgba(255,255,255,0.78);
      padding: 6px 10px; border-radius: 8px;
      font-size: 12px; font-weight: 600;
      display: inline-flex; align-items: center; gap: 6px;
      cursor: pointer;
      transition: background 0.15s, color 0.15s;
    }
    .orgp-header .kpd-tilbake-btn:hover {
      background: rgba(255,255,255,0.08);
      color: #fff;
    }
    .orgp-org-pille {
      display: inline-flex; align-items: center; gap: 9px;
      background: rgba(255,255,255,0.08);
      border: 1px solid transparent; box-shadow: none;
      padding: 4px 11px 4px 5px; border-radius: 999px;
      font-family: inherit;
    }
    .orgp-org-pille-avatar {
      width: 22px; height: 22px; border-radius: 999px;
      background: var(--primary); color: #fff;
      display: grid; place-items: center;
      font-family: 'Bebas Neue', sans-serif;
      font-size: 13px; padding-top: 1px;
      letter-spacing: 0.04em;
    }
    .orgp-org-pille-navn { font-size: 12px; font-weight: 600; color: #fff; white-space: nowrap; }
    .orgp-org-pille-sep { font-size: 10px; color: rgba(255,255,255,0.35); }
    .orgp-org-pille-meta { font-size: 11px; color: rgba(255,255,255,0.55); white-space: nowrap; }
    .orgp-tittel {
      margin: 0 0 0 4px; font-family: 'Bebas Neue', sans-serif;
      font-size: 18px; font-weight: 400; letter-spacing: 0.04em;
      color: rgba(255,255,255,0.95);
      /* Én linje m/ellipsis — ellers brøt tittelen til flere linjer og ble
         klippet øverst når skallet krympet (AI-panel åpent). */
      min-width: 0; flex-shrink: 1;
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }
    /* Tittel som chip (event-dashbordet): samme typografi, men klikkbar med
       nedtrekk for å bytte event. Ellipsen ligger på navne-spannet siden en
       flex-knapp ikke klipper teksten sin selv. */
    .orgp-tittel-velger { position: relative; display: flex; min-width: 0; flex-shrink: 1; }
    .orgp-tittel-chip {
      display: inline-flex; align-items: center; gap: 7px;
      max-width: 100%; margin-left: 0;
      background: none; border: 1px solid transparent; border-radius: 8px;
      padding: 3px 8px 2px 8px;
      transition: background 0.15s, border-color 0.15s;
    }
    .orgp-tittel-chip:hover,
    .orgp-tittel-chip[aria-expanded="true"] {
      background: color-mix(in srgb, #fff 10%, var(--header-dark, #1D1D1D));
      border-color: rgba(255,255,255,0.22);
      color: #fff;
    }
    .orgp-tittel-chip-navn { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .orgp-tittel-chip .org-chip-arrow { font-family: Inter, sans-serif; opacity: 0.55; }
    .orgp-tittel-velger .org-dropdown-popup { left: 0; right: auto; min-width: 300px; max-width: min(420px, 90vw); }
    .orgp-tittel-velger .org-dropdown-item { white-space: nowrap; }
    /* Nedsenket felt — kontrast til de hevede knappene gir dybdehierarki */
    .orgp-header-soek {
      position: relative;
      display: inline-flex; align-items: center; gap: 7px;
      background: rgba(0,0,0,0.28);
      border: 1px solid rgba(255,255,255,0.10);
      box-shadow: inset 0 1px 3px rgba(0,0,0,0.35);
      border-radius: 8px; padding: 5px 11px;
      min-width: 280px; max-width: 380px; flex: 0 1 320px;
      transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
    }
    .orgp-header-soek:focus-within {
      border-color: color-mix(in srgb, var(--primary) 55%, transparent);
      background: rgba(0,0,0,0.34);
      box-shadow: inset 0 1px 3px rgba(0,0,0,0.3),
                  0 0 0 3px color-mix(in srgb, var(--primary) 18%, transparent);
    }
    .orgp-header-soek input {
      flex: 1; background: transparent; border: none; outline: none;
      color: #fff; font-size: 12px; font-family: inherit; padding: 0;
      min-width: 0;
    }
    .orgp-header-soek input::placeholder { color: rgba(255,255,255,0.5); }
    .orgp-header-soek svg { flex-shrink: 0; }
    .orgp-header-soek .orgp-kbd {
      font-family: 'JetBrains Mono', monospace;
      font-size: 9.5px; color: rgba(255,255,255,0.45);
      background: rgba(255,255,255,0.07);
      border: 1px solid rgba(255,255,255,0.16); border-radius: 4px;
      box-shadow: inset 0 -1px 0 rgba(0,0,0,0.3);
      padding: 1px 5px; flex-shrink: 0;
    }

    /* ── Global søk-dropdown — command palette ───────────────── */
    .db-soek-dd {
      position: absolute; top: calc(100% + 6px); left: 0; right: 0;
      z-index: 1500;
      background: var(--paper, #FFF8F1);
      border: 1px solid var(--line-soft, var(--border));
      border-radius: 12px;
      box-shadow:
        0 24px 60px -16px rgba(29, 29, 29, 0.32),
        0 6px 18px -4px rgba(29, 29, 29, 0.14);
      max-height: 460px; overflow-y: auto;
      padding: 6px;
      animation: db-soek-pop .12s ease-out;
    }
    @keyframes db-soek-pop {
      from { opacity: 0; transform: translateY(-4px); }
      to   { opacity: 1; transform: translateY(0); }
    }
    .db-soek-gruppe-tittel {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 12px; letter-spacing: 0.06em;
      color: var(--ink-soft, var(--text-muted));
      text-transform: uppercase;
      padding: 8px 10px 4px;
    }
    .db-soek-gruppe-tittel:first-child { padding-top: 4px; }
    .db-soek-rad {
      display: flex; align-items: center; gap: 11px;
      width: 100%; padding: 9px 11px;
      background: transparent;
      border: 1px solid transparent;
      border-radius: 9px;
      cursor: pointer; text-align: left;
      font-family: inherit; color: var(--text);
      transition: background .12s, border-color .12s;
    }
    .db-soek-rad:hover, .db-soek-rad.aktiv {
      background: var(--surface, #fff);
      border-color: var(--border);
    }
    .db-soek-rad.aktiv {
      box-shadow: 0 2px 6px rgba(29, 29, 29, 0.06);
    }
    .db-soek-ikon {
      width: 28px; height: 28px;
      display: flex; align-items: center; justify-content: center;
      border-radius: 8px; flex-shrink: 0;
    }
    .db-soek-info {
      flex: 1; min-width: 0;
      display: flex; flex-direction: column; gap: 1px;
    }
    .db-soek-tittel {
      font-size: 13px; font-weight: 600; color: var(--text);
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .db-soek-sub {
      font-size: 11px; color: var(--ink-soft, var(--text-muted));
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .db-soek-pil {
      color: var(--text-muted); flex-shrink: 0;
      opacity: 0; transition: opacity .12s, transform .12s;
    }
    .db-soek-rad:hover .db-soek-pil,
    .db-soek-rad.aktiv .db-soek-pil {
      opacity: 1; transform: translateX(2px);
    }
    .db-soek-tom {
      padding: 24px 12px; text-align: center;
      color: var(--text-muted); font-size: 13px;
    }

    /* Flash-effekt når søk navigerer til en oppgave/element */
    .opp-kort-flash {
      animation: opp-kort-flash 1.5s ease-out;
    }
    @keyframes opp-kort-flash {
      0%, 100% { box-shadow: none; }
      20% { box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 35%, transparent); }
    }
    /* Rammeløs handling («Rolig kant»): tekst + ikon rett på headerflaten,
       en svak flate kommer først i hover. Ikonet følger teksten i farge. */
    .orgp-support-btn {
      display: inline-flex; align-items: center; gap: 7px;
      padding: 7px 10px; border-radius: 8px;
      font-size: 13px; font-weight: 600;
      background: none; border: 1px solid transparent; box-shadow: none;
      color: rgba(255,255,255,0.82);
      cursor: pointer; flex-shrink: 0;
      transition: background 0.15s, color 0.15s;
    }
    .orgp-support-btn svg { color: rgba(255,255,255,0.7); transition: color 0.15s; }
    .orgp-support-btn:hover { background: rgba(255,255,255,0.08); color: #fff; }
    .orgp-support-btn:hover svg { color: #fff; }
    .orgp-support-btn:active { background: rgba(255,255,255,0.12); }
    /* Tynt skille mellom gruppene: søk | Historikk · Mitt ansvar · Innspill |
       Varsler · AI · avatar. */
    .orgp-header-skille {
      width: 1px; height: 22px; flex-shrink: 0;
      background: rgba(255,255,255,0.14);
    }
    /* AI: den ene røde handlingen — fylt pille helt i kanten ved konto. */
    .orgp-support-btn.ai {
      background: var(--primary); border-color: var(--primary);
      border-radius: 999px; padding: 7px 14px;
      color: #fff;
      box-shadow: 0 1px 2px rgba(0,0,0,0.3);
      transition: background 0.15s, box-shadow 0.15s, transform 0.12s;
    }
    .orgp-support-btn.ai svg { color: #fff; }
    .orgp-support-btn.ai:hover {
      background: color-mix(in srgb, var(--primary) 88%, #fff);
      border-color: color-mix(in srgb, var(--primary) 88%, #fff);
      color: #fff;
      box-shadow: 0 4px 12px -2px rgba(var(--primary-tint), 0.45);
      transform: translateY(-1px);
    }
    .orgp-support-btn.ai:active { transform: translateY(0); background: var(--primary); }
    .orgp-support-btn .orgp-badge {
      background: var(--primary); color: #fff;
      border-radius: 999px; font-size: 9.5px;
      padding: 1px 5px; font-weight: 700; margin-left: 2px;
    }
    /* Ikon-only (varsler): ordet skjules, tallet bæres av badgen oppe til
       høyre på klokka. Knappen har position:relative i markupen. */
    .orgp-support-btn.ikon { padding: 8px 9px; }
    .orgp-support-btn.ikon span:not(.orgp-badge) { display: none; }
    .orgp-support-btn.ikon svg { width: 16px; height: 16px; }
    .orgp-support-btn.ikon .orgp-badge {
      position: absolute; top: -3px; right: -4px; margin: 0;
      display: inline-flex; align-items: center; justify-content: center;
      min-width: 17px; height: 17px; line-height: 1;
      padding: 0 4px; font-size: 9px; box-sizing: border-box;
      border: 2px solid var(--header-dark, #1D1D1D);
    }
    .orgp-bruker-avatar {
      width: 30px; height: 30px; border-radius: 999px;
      background: linear-gradient(135deg,#8B5CF6,#3B82F6);
      color: #fff; display: grid; place-items: center;
      font-size: 11px; font-weight: 700; flex-shrink: 0;
      padding: 0; border: none; /* nullstill global button-stil — ellers skvises initialene ut av sirkelen */
      box-shadow: 0 0 0 2px rgba(255,255,255,0.20);
      cursor: pointer;
      transition: transform 0.12s, box-shadow 0.15s;
    }
    .orgp-bruker-avatar:hover {
      transform: translateY(-1px);
      box-shadow: 0 0 0 2px rgba(255,255,255,0.45), 0 4px 12px -2px rgba(0,0,0,0.5);
    }

    /* Universell pointer-cursor for alt klikkbart i toppmenyen */
    .orgp-header button,
    .orgp-header a,
    .orgp-header .orgp-org-pille,
    .orgp-header [role="button"] {
      cursor: pointer;
    }

    .orgp-body {
      display: flex; flex: 1; min-height: 0; overflow: hidden;
    }
    .orgp-nav {
      width: 232px; flex-shrink: 0;
      border-right: 1px solid var(--border);
      background: var(--surface);
      display: flex; flex-direction: column;
      overflow-y: auto; padding: 14px 10px;
      gap: 0;
      transition: width 0.16s ease;
    }
    /* Kollapsknapp + smal meny (2026-08-27). Kjøreplanen jobbes side ved side
       med andre vinduer, og 232 px meny er mye på en delt skjerm. Smal modus
       beholder ikonene og flytter etiketten til title — en meny uten begge
       deler er ikke smal, den er borte. iPad-modus har sin egen skuff
       (#ipad-nav-toggle) og skal ikke smalne; derfor :not(.ipad-modus). */
    .orgp-nav-kollaps {
      display: flex; align-items: center; gap: 8px;
      width: 100%; padding: 6px 9px; margin-bottom: 8px; flex-shrink: 0;
      border: 1px solid var(--border); border-radius: 7px;
      background: transparent; color: var(--text-muted);
      font-family: inherit; font-size: 11.5px; font-weight: 600;
      cursor: pointer; white-space: nowrap;
      transition: color 0.12s, border-color 0.12s;
    }
    .orgp-nav-kollaps:hover { color: var(--primary); border-color: var(--primary); }
    body.ipad-modus .orgp-nav-kollaps { display: none; }

    body.nav-smal:not(.ipad-modus) .orgp-nav {
      width: 54px; padding-left: 6px; padding-right: 6px;
    }
    body.nav-smal:not(.ipad-modus) .orgp-nav-soek,
    body.nav-smal:not(.ipad-modus) .orgp-nav-gruppe-tittel,
    body.nav-smal:not(.ipad-modus) .orgp-nav-btn > span,
    body.nav-smal:not(.ipad-modus) .orgp-nav-kollaps > span,
    body.nav-smal:not(.ipad-modus) .orgp-nav-footer-info,
    body.nav-smal:not(.ipad-modus) .orgp-nav-footer-logout { display: none; }
    body.nav-smal:not(.ipad-modus) .orgp-nav-btn,
    body.nav-smal:not(.ipad-modus) .orgp-nav-kollaps,
    body.nav-smal:not(.ipad-modus) .orgp-nav-footer {
      justify-content: center; padding-left: 0; padding-right: 0;
    }
    body.nav-smal:not(.ipad-modus) .orgp-nav-kollaps svg { transform: rotate(180deg); }
    .orgp-nav-soek {
      display: flex; align-items: center; gap: 7px;
      background: var(--bg2);
      border: 1px solid var(--border);
      border-radius: 8px; padding: 6px 10px;
      margin-bottom: 14px; flex-shrink: 0;
    }
    .orgp-nav-soek input {
      flex: 1; background: transparent; border: none; outline: none;
      color: var(--text); font-size: 12px; font-family: inherit; padding: 0;
      min-width: 0;
    }
    .orgp-nav-soek input::placeholder { color: var(--text-muted); }
    .orgp-nav-gruppe { display: flex; flex-direction: column; gap: 1px; margin-bottom: 14px; }
    .orgp-nav-gruppe-tittel {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 13px; font-weight: 400; color: var(--ink-soft, var(--text-muted));
      text-transform: uppercase; letter-spacing: 0.08em;
      padding: 0 8px 6px;
    }
    /* legacy separator — bevart for back-compat hvis noe injecter den */
    .orgp-nav-separator { display: none; }
    .orgp-nav-btn {
      position: relative;
      display: flex; align-items: center; gap: 9px;
      width: 100%; padding: 7px 9px; border-radius: 7px;
      border: none !important; background: transparent !important;
      color: var(--ink-soft) !important; font-size: 12.5px; font-weight: 500;
      cursor: pointer; text-align: left;
      transition: background 0.12s, color 0.12s;
      font-family: inherit; white-space: nowrap;
    }
    .orgp-nav-btn > span:first-of-type { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
    .orgp-nav-btn:hover {
      background: rgba(128,128,128,0.07) !important;
      color: var(--text) !important;
    }
    .orgp-nav-btn.active {
      background: var(--primary-pill) !important;
      color: var(--primary-dark-adaptiv) !important;
      font-weight: 700 !important;
    }
    .orgp-nav-btn.active::before {
      content: ''; position: absolute; left: 0; top: 6px; bottom: 6px;
      width: 2.5px; background: var(--primary); border-radius: 2px;
    }
    .orgp-nav-btn.active svg { stroke: var(--primary); }
    .orgp-nav-btn-badge {
      font-size: 9.5px; font-weight: 700;
      padding: 1px 5px; border-radius: 4px;
      background: var(--primary); color: #fff;
      min-width: 14px; text-align: center; line-height: 1.4;
      margin-left: auto; flex-shrink: 0;
    }
    .orgp-nav-btn-badge.amber { background: var(--amber); color: #fff; }
    .orgp-nav-spacer { flex: 1; min-height: 6px; }
    .orgp-nav-footer {
      border-top: 1px solid var(--border);
      padding: 10px 9px 0; margin-top: 6px;
      display: flex; align-items: center; gap: 9px;
      flex-shrink: 0;
    }
    .orgp-nav-footer-avatar {
      width: 26px; height: 26px; border-radius: 999px;
      background: linear-gradient(135deg,#8B5CF6,#3B82F6);
      color: #fff; display: grid; place-items: center;
      font-size: 10px; font-weight: 700; flex-shrink: 0;
    }
    .orgp-nav-footer-avatar[role="button"] { cursor: pointer; transition: box-shadow .12s; }
    .orgp-nav-footer-avatar[role="button"]:hover,
    .orgp-nav-footer-avatar[role="button"]:focus-visible { box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--primary); outline: none; }
    .orgp-nav-footer-info { flex: 1; min-width: 0; line-height: 1.2; }
    .orgp-nav-footer-navn {
      font-size: 11.5px; font-weight: 600; color: var(--text);
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .orgp-nav-footer-rolle {
      font-size: 10px; color: var(--text-muted);
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .orgp-nav-footer-logout {
      background: transparent; border: none; color: var(--text-muted);
      padding: 4px; border-radius: 6px; cursor: pointer;
      display: inline-flex; align-items: center; justify-content: center;
    }
    .orgp-nav-footer-logout:hover { background: var(--bg2); color: var(--text); }

    /* ── SKINNE (2026-09-16) — venstremenyen som 92 px ikonskinne ──────────
       Bygges av byggNavSkinne (app-core.js) oppå den gamle .orgp-nav-markupen:
       gruppene får en .orgp-skinne-btn hver, og fanene flyttes inn i et
       .orgp-skinne-panel som legger seg over flaten (position: fixed, så
       verken skinnens egen scroll eller .orgp-body sin overflow klipper det).
       Designkilde: Event-meny.dc.html / Org-landing - to modus (runde 4). */
    .orgp-nav.orgp-skinne {
      box-sizing: border-box; width: 92px; padding: 12px 8px 10px; gap: 2px;
      overflow-y: auto; overflow-x: hidden;
      align-items: stretch;
      /* Svever: løsnet fra venstre kant med luft rundt og avrundede hjørner
         (Remi, 16.09.2026) — samme form som panelene. */
      margin: 10px 0 10px 10px; align-self: flex-start;
      max-height: calc(100% - 20px);
      border: 1px solid var(--border); border-radius: 14px;
      box-shadow: 0 1px 2px rgba(29,29,29,0.04);
    }
    .orgp-skinne .orgp-nav-soek,
    .orgp-skinne .orgp-nav-kollaps { display: none; }
    .orgp-skinne-logo {
      display: flex; flex-direction: column; align-items: center; gap: 6px;
      padding: 0 0 10px; margin-bottom: 10px;
      border-bottom: 1px solid var(--border); flex-shrink: 0;
    }
    .orgp-skinne-logo span {
      font-family: 'Bebas Neue', sans-serif; font-size: 13px;
      letter-spacing: 0.14em; text-transform: uppercase; color: var(--text);
    }
    .orgp-skinne-gruppe { margin-bottom: 0; gap: 0; flex-shrink: 0; }
    .orgp-skinne-gruppe[data-skille="over"] {
      border-top: 1px solid var(--border); margin-top: 6px; padding-top: 6px;
    }
    .orgp-skinne-btn {
      position: relative;
      display: flex; flex-direction: column; align-items: center; gap: 4px;
      width: 100%; padding: 6px 4px; border: none; border-radius: 9px;
      background: transparent; color: var(--ink-soft);
      font-family: inherit; cursor: pointer;
      transition: background 0.12s, color 0.12s;
    }
    .orgp-skinne-btn svg { width: 19px; height: 19px; stroke: var(--text-muted); flex-shrink: 0; }
    .orgp-skinne-btn > span:first-of-type {
      font-size: 9px; font-weight: 800; letter-spacing: 0.11em;
      text-transform: uppercase; text-align: center; line-height: 1.3;
    }
    .orgp-skinne-btn:hover { background: rgba(128,128,128,0.07); color: var(--text); }
    .orgp-skinne-btn.active { background: var(--primary-pill); color: var(--primary-dark-adaptiv); }
    .orgp-skinne-btn.active svg { stroke: var(--primary); }
    .orgp-skinne-btn.primaer { background: var(--primary); color: #fff; margin-bottom: 4px; }
    .orgp-skinne-btn.primaer svg { stroke: #fff; width: 20px; height: 20px; }
    .orgp-skinne-btn.primaer:hover { background: var(--primary-dark); color: #fff; }
    .orgp-skinne-badge {
      position: absolute; top: 2px; right: 4px;
      min-width: 15px; height: 15px; padding: 0 4px; border-radius: 999px;
      background: var(--primary); color: #fff;
      font-size: 9px; font-weight: 700; line-height: 1;
      display: grid; place-items: center;
    }
    .orgp-skinne-badge.amber { background: var(--amber); }

    .orgp-skinne-panel {
      display: none; position: fixed; z-index: 4700;
      width: 224px; box-sizing: border-box;
      background: var(--surface); border: 1px solid var(--border); border-radius: 10px;
      box-shadow: 0 2px 6px rgba(29,29,29,0.10), 0 18px 40px -18px rgba(29,29,29,0.38);
      flex-direction: column; padding: 12px 10px; gap: 2px;
      max-height: calc(100vh - 16px); overflow-y: auto;
    }
    .orgp-skinne-panel.apen { display: flex; }
    .orgp-skinne-panel-hdr {
      display: flex; align-items: center; gap: 8px;
      padding: 0 4px 10px; margin-bottom: 8px;
      border-bottom: 1px solid var(--border);
      font-family: 'Bebas Neue', sans-serif; font-size: 17px;
      letter-spacing: 0.08em; text-transform: uppercase; color: var(--text);
    }
    .orgp-skinne-panel-hdr svg { width: 15px; height: 15px; stroke: var(--primary); flex-shrink: 0; }
    .orgp-skinne-panel .orgp-nav-gruppe-tittel,
    .orgp-skinne-panel .orgp-nav-btn svg,
    .orgp-skinne-panel .orgp-nav-btn--panelskjult { display: none; }
    .orgp-skinne-panel .orgp-nav-btn {
      flex-wrap: wrap; gap: 2px 10px;
      padding: 9px 10px; border-radius: 8px;
      font-size: 12.5px; font-weight: 600; white-space: normal;
    }
    .orgp-skinne-panel .orgp-nav-btn > span:first-of-type { flex: 1 1 auto; }
    .orgp-skinne-panel .orgp-nav-btn small {
      flex-basis: 100%; font-size: 10.5px; font-weight: 500; color: var(--text-muted);
    }
    .orgp-skinne-panel .orgp-nav-btn::after {
      content: '›'; margin-left: auto; font-size: 15px; line-height: 1;
      color: var(--text-muted); order: 1;
    }
    .orgp-skinne-panel .orgp-nav-btn small { order: 2; }
    .orgp-skinne-panel .orgp-nav-btn-badge { order: 1; margin-left: auto; }
    .orgp-skinne-panel .orgp-nav-btn:has(.orgp-nav-btn-badge:not([style*="none"]))::after { display: none; }
    .orgp-skinne-panel .orgp-nav-btn.active::before { display: none; }
    .orgp-skinne-panel .orgp-nav-btn.active,
    .orgp-skinne-panel .orgp-nav-btn[aria-current="true"] {
      background: var(--primary-pill) !important;
      color: var(--primary-dark-adaptiv) !important; font-weight: 700 !important;
    }
    /* Hover-utfelt til høyre for panelet (data-skinne-flyt) */
    .orgp-skinne-flyt {
      display: none; position: fixed; z-index: 4701;
      width: 260px; box-sizing: border-box;
      background: var(--surface); border: 1px solid var(--border); border-radius: 10px;
      box-shadow: 0 2px 6px rgba(29,29,29,0.10), 0 18px 40px -18px rgba(29,29,29,0.38);
      flex-direction: column; padding: 10px; gap: 2px;
      max-height: calc(100vh - 16px); overflow-y: auto;
    }
    .orgp-skinne-flyt.apen { display: flex; }
    .orgp-skinne-flyt-hdr {
      font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.12em;
      text-transform: uppercase; color: var(--text-muted); padding: 2px 8px 8px;
    }
    .orgp-skinne-flyt-rad {
      display: flex; align-items: center; gap: 8px; padding: 8px 8px; border-radius: 8px;
      font-size: 12.5px; font-weight: 600; color: var(--text); text-decoration: none;
    }
    button.orgp-skinne-flyt-rad { width: 100%; border: none; background: transparent; font-family: inherit; text-align: left; cursor: pointer; }
    .orgp-skinne-flyt-rad:hover { background: var(--bg); color: var(--primary-dark-adaptiv); }
    .orgp-skinne-flyt-navn { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .orgp-skinne-flyt-naar { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; color: var(--text-muted); white-space: nowrap; }
    .orgp-skinne-flyt-alle {
      margin-top: 6px; padding: 8px; border: none; border-top: 1px solid var(--border);
      background: transparent; color: var(--ink-soft); font-family: inherit;
      font-size: 12px; font-weight: 600; text-align: left; cursor: pointer;
    }
    .orgp-skinne-flyt-alle:hover { color: var(--primary-dark-adaptiv); }
    .orgp-skinne-panel-tekst {
      padding: 8px 4px 0; margin-top: 6px; border-top: 1px solid var(--border);
      font-size: 10.5px; color: var(--text-muted); line-height: 1.5;
    }
    /* Bunnen: bruker som avatar + navn under hverandre, som i designet */
    /* Skinnen er så høy som knappene (17.09.2026) — ingen fyll ned til bunnen */
    .orgp-skinne .orgp-nav-spacer { flex: 0 0 8px; min-height: 8px; }
    .orgp-skinne .orgp-nav-footer {
      flex-direction: column; gap: 5px; padding: 10px 0 0; margin-top: 4px; text-align: center;
    }
    .orgp-skinne .orgp-nav-footer-avatar { width: 30px; height: 30px; font-size: 11px; }
    .orgp-skinne .orgp-nav-footer-info { width: 100%; }
    .orgp-skinne .orgp-nav-footer-navn {
      font-size: 9.5px; font-weight: 500; color: var(--text-muted);
      white-space: normal; line-height: 1.3;
    }
    .orgp-skinne .orgp-nav-footer-rolle { display: none; }
    .orgp-skinne .orgp-nav-footer-logout { padding: 3px; }

    /* Fase-pille i org-headeren (Hjem): Avvikling (rød, pulserende) eller
       Planlegging (dempet). Settes av renderLanding, skjules av switchOrgTab. */
    .orgp-modus-pille {
      display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0;
      font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
      padding: 4px 2px;
      color: rgba(255,255,255,0.55);
    }
    .orgp-modus-pille::before {
      content: ''; width: 5px; height: 5px; border-radius: 999px; background: currentColor;
    }
    .orgp-modus-pille.live { color: color-mix(in srgb, var(--primary) 80%, #fff); }
    .orgp-modus-pille.live::before { animation: lp2-puls-prikk 1.4s ease-in-out infinite; }
    @keyframes lp2-puls-prikk { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }

    .orgp-content {
      flex: 1; min-width: 0; overflow-y: auto;
      padding: 20px 28px;
      /* Cream-paletten settes på #org-page (se «ORG-FLATER» nederst i fila),
         så .orgp-content arver --bg derfra. */
      background: var(--bg);
    }
    .orgp-hjelp {
      font-size: 12px; color: var(--text-muted);
      margin-bottom: 16px; min-height: 0;
    }
    .orgp-hjelp:empty { display: none; }

    /* Eventer-dashboard (A+B) */
    .ev-dash-header {
      display: flex; align-items: flex-end; justify-content: space-between;
      gap: 16px; margin-bottom: 18px; flex-wrap: wrap;
    }
    .ev-dash-kicker {
      font-family: 'JetBrains Mono', monospace;
      font-size: 10px; color: var(--text-muted);
      letter-spacing: 0.12em; text-transform: uppercase;
      margin-bottom: 6px;
    }
    .ev-dash-tittel {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 38px; font-weight: 400; line-height: 1;
      margin: 0; color: var(--text); letter-spacing: 0.01em;
    }
    .ev-dash-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
    .ev-dash-segm {
      display: inline-flex; background: var(--surface);
      border: 1px solid var(--border); border-radius: 8px; padding: 3px;
    }
    .ev-dash-segm button {
      background: transparent; color: var(--ink-soft);
      border: none !important; padding: 6px 12px; border-radius: 6px;
      font-size: 11.5px; font-weight: 600; cursor: pointer;
      font-family: inherit;
    }
    /* Aktiv segmenttilstand er merkerød med hvit tekst — overalt (DESIGN.md
       §4). Denne var `var(--text)`: sort på cream, altså et annet designspråk
       enn resten, OG nesten hvit bak hvit tekst i mørk modus. */
    .ev-dash-segm button.aktiv { background: var(--primary); color: #fff; }
    /* Arrangørfilteret er en ANNEN akse enn statussegmentet, så det er et
       nedtrekk og ikke flere segmenter: antall arrangører er ukjent, og
       segmenter ville sprengt raden ved fire lokallag. Formen låner
       segmentkontrollens ramme så de to leses som ett filtersett. */
    .ev-dash-arrvelg {
      background: var(--surface); color: var(--ink-soft);
      border: 1px solid var(--border); border-radius: 8px;
      padding: 7px 10px; font-size: 11.5px; font-weight: 600;
      font-family: inherit; cursor: pointer; max-width: 200px;
    }
    .ev-dash-nytt {
      background: var(--primary); color: #fff;
      border: none; border-radius: 8px;
      padding: 9px 16px; font-size: 12.5px; font-weight: 700;
      display: inline-flex; align-items: center; gap: 8px;
      cursor: pointer; box-shadow: 0 2px 0 var(--primary-dark);
      font-family: inherit;
    }
    .ev-dash-nytt:hover { background: var(--primary-dark); }

    /* Sekundær «Nytt prosjekt»-knapp — outline-variant ved siden av «Nytt event» */
    .ev-dash-nytt-sek {
      background: var(--surface); color: var(--text);
      border: 1.5px solid var(--border);
      box-shadow: none;
    }
    .ev-dash-nytt-sek:hover { background: var(--bg); border-color: var(--primary); color: var(--primary); }

    /* Seksjonstittel som skiller Eventer fra Prosjekter i org-modalen */
    .ev-seksjon-tittel {
      font-size: 11px; font-weight: 800; letter-spacing: 0.12em;
      text-transform: uppercase; color: var(--text-muted);
      margin: 22px 2px 12px;
    }
    .ev-seksjon-tittel:first-of-type { margin-top: 4px; }

    .ev-stat-strip {
      display: grid; grid-template-columns: repeat(4, 1fr);
      gap: 12px; margin-bottom: 22px;
    }
    .ev-stat-kort {
      border: 1px solid var(--border); border-radius: 12px;
      padding: 14px 16px; position: relative; overflow: hidden;
      background: var(--surface);
    }
    /* «Live nå» er kommandopult-flata i miniatyr — samme token som
       .evo-hero. Den var `var(--text)`, som er cream-mørk i lys modus og
       NESTEN HVIT i mørk: hvit tekst på hvitt kort. */
    .ev-stat-kort.tone-red {
      background: var(--pult-bg); border-color: var(--pult-kant);
    }
    .ev-stat-kort.tone-amber { background: rgba(251,191,36,0.10); }
    .ev-stat-label {
      font-size: 10px; font-weight: 700; color: var(--text-muted);
      letter-spacing: 0.1em; text-transform: uppercase;
      display: flex; align-items: center; gap: 6px;
    }
    .ev-stat-kort.tone-red .ev-stat-label { color: rgba(255,255,255,0.55); }
    .ev-stat-kort.tone-amber .ev-stat-label { color: var(--amber-text); }
    .ev-stat-pulse {
      width: 6px; height: 6px; border-radius: 999px;
      background: var(--primary);
      box-shadow: 0 0 0 3px rgba(var(--primary-tint), 0.25);
      animation: ev-pulse 1.6s ease-in-out infinite;
    }
    @keyframes ev-pulse {
      0%, 100% { box-shadow: 0 0 0 3px rgba(var(--primary-tint), 0.25); }
      50% { box-shadow: 0 0 0 5px rgba(var(--primary-tint), 0.08); }
    }
    .ev-stat-verdi {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 38px; line-height: 1; margin-top: 8px;
      color: var(--text); letter-spacing: 0.01em;
    }
    .ev-stat-kort.tone-red .ev-stat-verdi { color: #fff; }
    .ev-stat-delta { font-size: 11px; color: var(--text-muted); margin-top: 4px; }
    .ev-stat-kort.tone-red .ev-stat-delta { color: rgba(255,255,255,0.55); }
    .ev-stat-kort.tone-amber .ev-stat-delta { color: var(--amber-text); }

    /* Klikkbar variant — brukes f.eks. for "Personer"-KPI på landingen */
    button.ev-stat-kort, .ev-stat-knapp {
      display: block; width: 100%; text-align: left;
      font-family: inherit; cursor: pointer;
      transition: transform 0.12s, box-shadow 0.15s, border-color 0.15s;
    }
    button.ev-stat-kort:hover, .ev-stat-knapp:hover {
      transform: translateY(-1px);
      border-color: var(--line-soft);
      box-shadow: 0 4px 14px rgba(29,29,29,0.07);
    }
    .ev-stat-knapp .ev-stat-label { gap: 6px; }
    .ev-stat-knapp .ev-stat-pil { color: var(--text-muted); transition: transform 0.15s, color 0.15s; }
    .ev-stat-knapp:hover .ev-stat-pil { color: var(--primary); transform: translateX(2px); }

    .ev-kort-grid {
      display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px;
    }
    @media (max-width: 1100px) {
      .ev-kort-grid { grid-template-columns: 1fr; }
      .ev-stat-strip { grid-template-columns: repeat(2, 1fr); }
    }
    .ev-kort {
      background: var(--surface); border: 1px solid var(--border);
      border-radius: 12px; padding: 16px 18px;
      position: relative; overflow: hidden; cursor: pointer;
      transition: border-color 0.15s, transform 0.12s, box-shadow 0.15s;
    }
    .ev-kort:hover {
      border-color: var(--line-soft);
      transform: translateY(-1px);
      box-shadow: 0 4px 14px rgba(29,29,29,0.06);
    }
    .ev-kort-rail {
      position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
      background: var(--primary);
    }
    .ev-kort-topp {
      display: flex; align-items: flex-start; gap: 12px;
    }
    .ev-kort-tittelblokk { flex: 1; min-width: 0; }
    .ev-kort-tittelrad {
      display: flex; align-items: center; gap: 8px; margin-bottom: 2px;
      flex-wrap: wrap;
    }
    .ev-kort-navn {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 24px; font-weight: 400; line-height: 1; margin: 0;
      color: var(--text); letter-spacing: 0.02em; text-transform: uppercase;
    }
    .ev-kort-pille-live {
      font-size: 10px; font-weight: 700;
      padding: 2px 7px; border-radius: 999px;
      background: var(--primary); color: #fff;
      display: inline-flex; align-items: center; gap: 4px;
      letter-spacing: 0.06em;
    }
    .ev-kort-pille-live::before {
      content: ''; width: 5px; height: 5px; border-radius: 999px;
      background: #fff;
      animation: ev-pulse-dot 1.4s ease-in-out infinite;
    }
    @keyframes ev-pulse-dot {
      0%, 100% { opacity: 1; }
      50% { opacity: 0.3; }
    }
    .ev-kort-pille-arkiv {
      font-size: 10px; font-weight: 700;
      padding: 2px 7px; border-radius: 999px;
      background: var(--border); color: var(--text-muted);
      letter-spacing: 0.06em;
    }
    .ev-kort-id {
      font-family: 'JetBrains Mono', monospace;
      font-size: 10.5px; color: var(--text-muted);
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .ev-kort-mer {
      width: 32px; height: 32px; border-radius: 8px;
      border: 1px solid var(--line-soft); background: var(--surface);
      color: var(--text); cursor: pointer;
      display: inline-flex; align-items: center; justify-content: center;
      flex-shrink: 0;
      transition: background 0.12s, border-color 0.12s;
    }
    .ev-kort-mer:hover,
    .ev-kort-mer.aapen {
      background: var(--bg2); border-color: var(--text);
    }
    /* Tre prikker tegnet med CSS — alltid synlig, uansett SVG-cache */
    .ev-kort-mer-prikker {
      position: relative; display: inline-block;
      width: 4px; height: 4px; border-radius: 50%;
      background: var(--text);
    }
    .ev-kort-mer-prikker::before,
    .ev-kort-mer-prikker::after {
      content: ''; position: absolute; top: 0;
      width: 4px; height: 4px; border-radius: 50%;
      background: var(--text);
    }
    .ev-kort-mer-prikker::before { left: -7px; }
    .ev-kort-mer-prikker::after  { left: 7px; }

    /* Popover-meny for event-kort */
    .ev-kort-pop {
      position: fixed; z-index: 9999;
      min-width: 180px;
      background: var(--surface); border: 1px solid var(--line-soft);
      border-radius: 10px; padding: 6px;
      box-shadow: 0 8px 28px rgba(29,29,29,0.14);
      display: flex; flex-direction: column; gap: 2px;
      font-size: 13px;
    }
    .ev-kort-pop button {
      background: transparent; border: none;
      padding: 8px 10px; border-radius: 6px;
      text-align: left; cursor: pointer; color: var(--text);
      display: flex; align-items: center; gap: 10px;
      font-size: 13px; font-weight: 500;
      transition: background 0.1s;
    }
    .ev-kort-pop button:hover { background: var(--bg2); }
    .ev-kort-pop button svg { stroke: var(--text-muted); flex-shrink: 0; }
    .ev-kort-pop button.fare { color: #DC2626; }
    .ev-kort-pop button.fare:hover { background: rgba(220,38,38,0.08); }
    .ev-kort-pop button.fare svg { stroke: #DC2626; }
    .ev-kort-pop hr {
      border: none; border-top: 1px solid var(--border); margin: 4px 0;
    }
    .ev-kort-meta {
      display: flex; gap: 16px; margin-top: 12px; flex-wrap: wrap;
      font-size: 11.5px; color: var(--ink-soft);
    }
    .ev-kort-meta-item {
      display: inline-flex; align-items: center; gap: 5px;
    }
    .ev-kort-meta-item svg { stroke: var(--text-muted); flex-shrink: 0; }

    /* «Kom i gang»-stripa — står kun på kort der noe faktisk mangler.
       Obs-tonen (ikke rød): dette er noe som gjenstår, ikke noe som er galt.
       Tekstfargen er --amber-text, samme par som .ev-kort-konflikt rett
       under: --st-obs-tekst finnes KUN i lys utgave, så en obs-tone bygget
       på den blir uleselig i mørk modus. Tinten er translucent amber og
       virker på begge grunner. */
    .ev-oppsett {
      display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
      margin-top: 12px; padding: 8px 10px; border-radius: 9px;
      background: var(--amber-soft);
      border: 1px solid rgba(var(--st-obs-tint), 0.28);
    }
    .ev-oppsett-label {
      font-size: 10px; font-weight: 800; letter-spacing: 0.08em;
      text-transform: uppercase; color: var(--amber-text);
    }
    .ev-oppsett-teller {
      font-family: 'JetBrains Mono', monospace;
      font-size: 10.5px; color: var(--amber-text); opacity: 0.75;
    }
    .ev-oppsett-steg-rad { display: flex; gap: 6px; flex-wrap: wrap; margin-left: auto; }
    .ev-oppsett-steg {
      background: var(--surface); color: var(--text);
      border: 1px solid var(--border); border-radius: 7px;
      padding: 4px 9px; font-size: 11.5px; font-weight: 600;
      cursor: pointer; font-family: inherit;
    }
    .ev-oppsett-steg:hover { border-color: var(--primary); color: var(--primary); }
    .ev-oppsett-steg:focus-visible {
      outline: none; border-color: var(--primary); box-shadow: var(--fokus-ring);
    }

    .ev-kort-footer {
      display: flex; align-items: center; gap: 10px;
      margin-top: 14px; padding-top: 12px;
      border-top: 1px solid var(--border);
    }
    .ev-kort-prog { flex: 1; min-width: 0; }
    .ev-kort-prog-label {
      display: flex; justify-content: space-between;
      font-size: 10px; color: var(--text-muted); margin-bottom: 4px;
    }
    .ev-kort-prog-label > span:first-child {
      font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
    }
    .ev-kort-prog-label > span:last-child { font-family: 'JetBrains Mono', monospace; }
    .ev-kort-prog-bar {
      height: 4px; background: var(--border); border-radius: 999px; overflow: hidden;
    }
    .ev-kort-prog-fill {
      height: 100%; background: var(--primary); border-radius: 999px;
      transition: width 0.3s ease;
    }
    .ev-kort-konflikt {
      font-size: 10.5px; font-weight: 700;
      padding: 3px 8px; border-radius: 6px;
      background: var(--amber-soft); color: var(--amber-text);
      display: inline-flex; align-items: center; gap: 4px;
      flex-shrink: 0;
    }

    .ev-tom-state {
      grid-column: 1 / -1;
      padding: 32px; text-align: center;
      color: var(--text-muted); font-size: 13px;
      border: 1px dashed var(--line-soft); border-radius: 12px;
      background: var(--surface);
    }

    .ev-tips {
      margin-top: 22px; padding: 12px 16px;
      /* Halvgjennomsiktig --surface, ikke rgba(255,255,255,.5): den siste er
         hvit uansett tema, så boksen ble en lys stripe med lys tekst i mørk
         modus. color-mix gir samme mykhet på begge grunner. */
      background: color-mix(in srgb, var(--surface) 55%, transparent);
      border: 1px dashed var(--line-soft);
      border-radius: 10px;
      display: flex; align-items: center; gap: 12px;
      font-size: 12px; color: var(--ink-soft);
    }
    .ev-tips a { color: var(--primary); font-weight: 600; cursor: pointer; text-decoration: none; }
    .ev-tips a:hover { text-decoration: underline; }
    .ev-tips-lukk {
      background: transparent; border: none; color: var(--text-muted);
      cursor: pointer; font-size: 16px; padding: 4px; line-height: 1;
      margin-left: auto;
    }

    /* Inline opprett/rediger event-skjema */
    .ev-form-panel {
      background: var(--surface); border: 1px solid var(--border);
      border-radius: 12px; padding: 16px 18px; margin-bottom: 18px;
    }
    .ev-form-panel.skjult { display: none; }
    .ev-form-tittel {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 18px; letter-spacing: 0.04em;
      margin: 0 0 12px; color: var(--text);
    }
    /* Utgangspunkt for et nytt event: tomt / fra maler / kopi */
    .ev-kilde-velger { margin-bottom: 14px; }
    .ev-kilde-label {
      font-size: 11px; font-weight: 700; color: var(--ink-soft);
      letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 6px;
    }
    .ev-kilde-kort-rad {
      display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
    }
    .ev-kilde-kort {
      display: flex; flex-direction: column; gap: 2px; text-align: left;
      background: var(--bg); color: var(--text);
      border: 1.5px solid var(--border); border-radius: 10px;
      padding: 10px 12px; cursor: pointer; font-family: inherit;
      transition: border-color 0.15s, background 0.15s;
    }
    .ev-kilde-kort:hover { border-color: var(--line-soft); background: var(--surface); }
    /* Aktiv tilstand er merkerød med hvit tekst — samme som faner og
       segmentkontroller ellers i appen (DESIGN.md §4). */
    .ev-kilde-kort.aktiv {
      background: var(--primary); border-color: var(--primary); color: #fff;
    }
    .ev-kilde-kort:focus-visible {
      outline: none; border-color: var(--primary); box-shadow: var(--fokus-ring);
    }
    .ev-kilde-tittel { font-size: 13px; font-weight: 700; }
    .ev-kilde-tekst { font-size: 11.5px; color: var(--text-muted); }
    .ev-kilde-kort.aktiv .ev-kilde-tekst { color: rgba(255, 255, 255, 0.82); }
    @media (max-width: 720px) {
      .ev-kilde-kort-rad { grid-template-columns: 1fr; }
    }

    .ev-form-grid {
      display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
    }
    .ev-form-grid label {
      display: block; font-size: 11px; font-weight: 700;
      color: var(--ink-soft); margin-bottom: 4px;
    }
    .ev-form-grid input, .ev-form-grid select {
      width: 100%; padding: 9px 12px; box-sizing: border-box;
      border: 1px solid var(--border); border-radius: 8px;
      background: var(--bg); color: var(--text);
      font-size: 13px; font-family: inherit;
    }
    .ev-form-grid input:focus, .ev-form-grid select:focus {
      outline: none; border-color: var(--primary);
    }
    .ev-form-knapper {
      display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px;
      align-items: center;
    }
    .ev-form-status {
      font-size: 12px; color: var(--text-muted); margin-right: auto;
      min-height: 18px;
    }
    .ev-form-avbryt {
      background: transparent; color: var(--ink-soft);
      border: 1px solid var(--border); border-radius: 8px;
      padding: 8px 14px; font-size: 12.5px; font-weight: 600; cursor: pointer;
      font-family: inherit;
    }
    .ev-form-avbryt:hover { background: var(--bg2); }
    .ev-form-lagre {
      background: var(--primary); color: #fff;
      border: none; border-radius: 8px;
      padding: 8px 18px; font-size: 12.5px; font-weight: 700;
      cursor: pointer; box-shadow: 0 2px 0 var(--primary-dark);
      font-family: inherit;
    }
    .ev-form-lagre:hover { background: var(--primary-dark); }
    .ev-form-lagre:disabled {
      background: var(--border); color: var(--text-muted);
      box-shadow: none; cursor: not-allowed;
    }

    @media (max-width: 720px) {
      .orgp-header { padding: 0 12px; gap: 8px; }
      .orgp-org-pille-meta { display: none; }
      .orgp-tittel, .orgp-tittel-velger { display: none; }
      .orgp-header-soek { display: none; }
      .orgp-support-btn span:not(.orgp-badge) { display: none; }
      .ev-stat-strip { grid-template-columns: repeat(2, 1fr); }
      .ev-form-grid { grid-template-columns: 1fr; }
      .ev-dash-tittel { font-size: 28px; }
    }
    @media (max-width: 680px) {
      .orgp-nav { width: 44px; padding: 10px 4px; gap: 4px; }
      .orgp-nav-soek { display: none; }
      .orgp-nav-gruppe-tittel { display: none; }
      .orgp-nav-btn { padding: 9px; justify-content: center; gap: 0; }
      .orgp-nav-btn > span:first-of-type, .orgp-nav-btn-badge { display: none; }
      .orgp-nav-btn.active::before { left: -2px; top: 4px; bottom: 4px; }
      .orgp-nav-footer-info, .orgp-nav-footer-logout { display: none; }
      .orgp-nav-footer { justify-content: center; padding: 10px 4px 0; }
      .orgp-content { padding: 14px 16px; }
    }

    /* ==========================================
       MITT ANSVAR — på tvers av events (ma-)
       Design «Eventtavlen» 1B (2026-09-17): mørkt «Neste på deg»-bånd,
       tittelrad med «+» og to segmenter, én kolonne per event og en
       sidekolonne. Kortklassene .mitt-arbeid-kort/-seksjon beholdes
       (toggleMittAnsvarOppgave og toggleMittArbeidSeksjon leser dem).
       ========================================== */
    .ma-rot { display: flex; flex-direction: column; gap: 16px; max-width: 1240px; margin: 0 auto; }
    .ma-mikro { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--text-muted); }

    /* Hero: neste hendelse på meg */
    .ma-hero {
      display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap;
      background: var(--header-dark); color: #fff; border-radius: 14px; padding: 18px 22px;
    }
    .ma-hero-eyebrow { display: flex; align-items: center; gap: 7px; font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.7); }
    .ma-hero-prikk { width: 7px; height: 7px; border-radius: 999px; background: var(--primary); box-shadow: 0 0 0 3px rgba(var(--primary-tint), .25); }
    .ma-hero--naa .ma-hero-prikk { animation: lp2-puls-prikk 1.4s ease-in-out infinite; }
    .ma-hero-tittel { font-family: 'Bebas Neue', sans-serif; font-size: 30px; letter-spacing: .03em; line-height: 1; margin-top: 8px; }
    .ma-hero-sub { font-size: 12.5px; color: rgba(255,255,255,.72); margin-top: 6px; }
    .ma-hero-knapper { display: flex; gap: 8px; flex-shrink: 0; }
    .ma-hero-knapper .btn { text-decoration: none; }
    .ma-hero-ghost { background: transparent !important; color: #fff !important; border: 1px solid rgba(255,255,255,.35) !important; }
    .ma-hero-ghost:hover { background: rgba(255,255,255,.08) !important; }

    /* Tittelrad */
    .ma-topp { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
    .ma-tittel { margin: 4px 0 0; font-size: 32px; }
    .ma-verktoy { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
    .ma-pluss-wrap { position: relative; }
    .ma-pluss { width: 48px; height: 48px; padding: 0 !important; border-radius: 12px !important; display: inline-flex; align-items: center; justify-content: center; font-size: 26px; line-height: 1; box-shadow: 0 4px 12px rgba(var(--primary-tint), .28); }
    .ma-pluss svg { width: 24px; height: 24px; }
    .ma-pluss:hover { transform: translateY(-1px); }
    .ma-pluss-meny {
      position: absolute; top: calc(100% + 8px); right: 0; z-index: 30; width: 260px;
      display: flex; flex-direction: column; gap: 10px;
      background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 12px;
      box-shadow: var(--modal-shadow);
    }
    .ma-pluss-meny[hidden] { display: none; }
    .ma-pluss-type button { flex: 1; }
    .ma-pluss-label { display: flex; flex-direction: column; gap: 5px; font: 700 11.5px Inter, sans-serif; color: var(--text-muted); }
    .ma-pluss-event { font-family: inherit; font-size: 12.5px; }
    .ma-pluss-opprett { width: 100%; }

    /* Flaten: kolonner + sidekolonne */
    .ma-flate { display: grid; grid-template-columns: minmax(0, 1fr) 240px; gap: 14px; align-items: start; }
    .ma-flate--full { grid-template-columns: minmax(0, 1fr); }
    .ma-kolonner { display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 14px; align-items: start; }
    .ma-kolonner--tid { grid-template-columns: minmax(0, 1fr); }
    .ma-kolonne, .ma-side-boks {
      background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 12px;
      display: flex; flex-direction: column; gap: 6px; min-width: 0;
    }
    .ma-kolonne-hode { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 4px 10px; padding-bottom: 8px; border-bottom: 2px solid var(--text); margin-bottom: 4px; }
    .ma-kolonne-navn { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; }
    .ma-kolonne-tittel { font-family: 'Bebas Neue', sans-serif; font-size: 19px; letter-spacing: .04em; color: var(--text); line-height: 1; }
    .ma-kolonne-sub { grid-column: 1 / -1; font-size: 11.5px; color: var(--text-muted); }
    .ma-merke { font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; padding: 2px 7px; border-radius: 999px; background: var(--bg2); color: var(--ink-soft); }
    .ma-merke--live { background: var(--primary); color: #fff; }
    .ma-lenke { font-size: 11.5px; font-weight: 700; color: var(--primary-dark-adaptiv); text-decoration: none; white-space: nowrap; }
    .ma-lenke:hover { text-decoration: underline; }
    .ma-gruppe-hode { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-soft); padding: 8px 2px 4px; }
    .ma-gruppe-hode--feil { color: var(--st-feil-tekst-adaptiv); }

    /* Kort */
    .mitt-arbeid-kort {
      display: flex; align-items: flex-start; gap: 9px; padding: 9px 11px;
      background: var(--surface); border: 1px solid var(--border); border-left: 3px solid var(--border); border-radius: 8px;
      cursor: pointer; position: relative; transition: border-color .12s, box-shadow .12s;
    }
    .mitt-arbeid-kort:hover { box-shadow: 0 2px 8px rgba(66,43,28,.08); }
    .mitt-arbeid-kort:focus-visible { outline: 2px solid var(--primary); outline-offset: 1px; }
    .mitt-arbeid-kort[data-type="oppgave"]  { border-left-color: #2563EB; }
    .mitt-arbeid-kort[data-type="hendelse"] { border-left-color: var(--st-ok-tekst); }
    .mitt-arbeid-kort[data-type="under"]    { border-left-color: #B07D00; }
    .mitt-arbeid-kort[data-type="mote"],
    .mitt-arbeid-kort[data-type="ai"]       { border-left-color: #7C3AED; }
    .mitt-arbeid-kort.naa { border-color: var(--primary); border-left-color: var(--primary); box-shadow: 0 0 0 1px var(--primary) inset; }
    .mitt-arbeid-kort.forfalt { background: rgba(var(--st-feil-tint), .07); border-color: rgba(var(--st-feil-tint), .35); border-left-color: var(--st-feil-tekst); }
    .mitt-arbeid-kort.fullfort { opacity: .75; }
    .mitt-arbeid-kort.fullfort .mitt-arbeid-kort-tittel { text-decoration: line-through; color: var(--text-muted); }
    .ma-kort-ikon { flex-shrink: 0; width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; color: var(--text-muted); margin-top: 1px; }
    .mitt-arbeid-kort[data-type="mote"] .ma-kort-ikon, .mitt-arbeid-kort[data-type="ai"] .ma-kort-ikon { color: #7C3AED; }
    .mitt-arbeid-kort[data-type="hendelse"] .ma-kort-ikon { color: var(--st-ok-tekst); }
    .ma-kort-puls { width: 9px; height: 9px; border-radius: 999px; background: var(--primary); box-shadow: 0 0 0 3px rgba(var(--primary-tint), .2); animation: lp2-puls-prikk 1.4s ease-in-out infinite; }
    .ma-kort-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
    .ma-kort-over { font-family: 'JetBrains Mono', monospace; font-size: 9.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--primary); font-weight: 700; }
    .mitt-arbeid-kort-tittel { font-size: 13px; font-weight: 600; color: var(--text); line-height: 1.35; overflow-wrap: anywhere; }
    .ma-kort-meta { font-size: 11.5px; color: var(--text-muted); overflow-wrap: anywhere; }
    .ma-kort-meta--feil { color: var(--st-feil-tekst-adaptiv); font-weight: 700; }
    .ma-kort-prio { display: inline-block; font-size: 10px; font-weight: 800; color: var(--st-feil-tekst); background: rgba(var(--st-feil-tint), .12); border-radius: 999px; padding: 0 6px; margin-left: 4px; vertical-align: 1px; }
    .ma-kort-ok { color: var(--st-ok-tekst); font-size: 11px; margin-left: 4px; }
    /* Sjekk-sirkel — matcher .mob-opp-check (Google Tasks-stil) */
    .mitt-arbeid-kort-check {
      display: inline-flex; align-items: center; justify-content: center;
      width: 20px !important; height: 20px !important; flex: 0 0 20px; align-self: flex-start; margin-top: 1px;
      box-sizing: border-box; border: 2px solid var(--text-muted) !important; border-radius: 50% !important;
      background: transparent !important; color: #fff; cursor: pointer; padding: 0 !important; min-height: 0 !important;
      -webkit-tap-highlight-color: transparent; transition: background .15s ease, border-color .15s ease, transform .12s ease;
    }
    .mitt-arbeid-kort-check svg { display: block; width: 12px; height: 12px; opacity: 0; transition: opacity .12s; }
    .mitt-arbeid-kort-check:hover { background: var(--bg2) !important; border-color: var(--text) !important; }
    .mitt-arbeid-kort-check:active { transform: scale(.9); }
    .mitt-arbeid-kort-check.av { background: var(--text-muted) !important; border-color: var(--text-muted) !important; }
    .mitt-arbeid-kort-check.av svg { opacity: 1; }
    .mitt-arbeid-kort.fullfort-anim { opacity: 0; transform: translateX(20px); transition: opacity .28s, transform .28s; }
    .mitt-arbeid-kort.fullfort-anim .mitt-arbeid-kort-check { background: var(--text-muted) !important; border-color: var(--text-muted) !important; }
    .mitt-arbeid-kort.fullfort-anim .mitt-arbeid-kort-check svg { opacity: 1; }
    /* Vis/skjul: kort utover MAX_VIST gjemmes til seksjonen utvides */
    .mitt-arbeid-kort.skjult { display: none; }
    .mitt-arbeid-seksjon.utvidet .mitt-arbeid-kort.skjult { display: flex; }
    .mitt-arbeid-vis-mer {
      align-self: flex-start; margin-top: 4px; padding: 5px 11px;
      background: transparent; border: 1px solid var(--border); border-radius: 8px;
      font-size: 11.5px; font-weight: 700; color: var(--ink-soft); cursor: pointer; font-family: inherit;
    }
    .mitt-arbeid-vis-mer:hover { background: var(--bg2); color: var(--text); }

    /* Sidekolonne */
    .ma-side { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
    .ma-side-boks { gap: 8px; }
    .ma-sum-rad { display: flex; align-items: center; justify-content: space-between; font-size: 12.5px; color: var(--ink-soft); padding: 7px 0; border-bottom: 1px solid color-mix(in srgb, var(--border) 60%, transparent); }
    .ma-sum-rad:last-child { border-bottom: none; padding-bottom: 0; }
    .ma-sum-rad b { font-family: 'Bebas Neue', sans-serif; font-size: 20px; letter-spacing: .03em; color: var(--text); line-height: 1; }
    .ma-sum-rad b.ma-sum--feil { color: var(--primary); }
    .ma-sum-hint { margin-top: 6px; padding: 0; border: none; background: none; text-align: left; font: inherit; font-size: 11.5px; font-weight: 700; color: var(--primary-dark-adaptiv); cursor: pointer; }
    .ma-sum-hint:hover { text-decoration: underline; }
    /* Delegert av deg / Bookinger på deg (2026-09-17): rader i sidekolonnen */
    .ma-side-rad { display: flex; flex-direction: column; gap: 2px; padding: 7px 0; border-bottom: 1px solid color-mix(in srgb, var(--border) 60%, transparent); text-decoration: none; color: var(--text); font-size: 12.5px; }
    .ma-side-rad:last-child { border-bottom: none; padding-bottom: 0; }
    .ma-side-rad b { font-weight: 600; }
    .ma-side-rad:hover b { color: var(--primary-dark-adaptiv); }
    .ma-side-rad-sub { font-size: 11px; color: var(--text-muted); }
    .ma-side-rad--feil { color: var(--st-feil-tekst-adaptiv); font-weight: 700; }
    .ma-side-rad--obs { color: #B07D00; font-weight: 700; }
    .ma-nevnt { background: var(--header-dark); border-color: var(--header-dark); color: #fff; }
    .ma-nevnt .ma-mikro { color: rgba(255,255,255,.6); }
    .ma-nevnt-rad { font-size: 12px; line-height: 1.45; color: rgba(255,255,255,.78); padding: 7px 0; border-bottom: 1px solid rgba(255,255,255,.12); }
    .ma-nevnt-rad:last-child { border-bottom: none; padding-bottom: 0; }
    .ma-nevnt-rad b { color: #fff; }
    .ma-nevnt-rad[role="button"] { cursor: pointer; }
    .ma-nevnt-rad[role="button"]:hover b { text-decoration: underline; }

    .mitt-arbeid-tom { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; padding: 56px 24px; color: var(--text-muted); font-size: 13px; line-height: 1.55; grid-column: 1 / -1; }
    .mitt-arbeid-tom b { color: var(--text); font-size: 15px; }
    .mitt-arbeid-tom span { max-width: 400px; }
    .mitt-arbeid-ikke-registrert { font-size: 13px; color: var(--text-muted); padding: 24px; line-height: 1.5; }

    /* Event-nivå: tittelrad med tellere, «Døgnet mitt», Kvitteringer, Mitt team */
    .ma-tittelrad { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
    .ma-under { font-size: 12.5px; color: var(--text-muted); }
    .ma-hero-bar { height: 4px; border-radius: 999px; background: rgba(255,255,255,.18); margin-top: 12px; max-width: 560px; overflow: hidden; }
    .ma-hero-bar-fyll { height: 100%; background: var(--primary); border-radius: 999px; }
    .ma-pluss-valg { text-align: left; }
    .ma-flate--dogn { grid-template-columns: minmax(0, 1fr) 320px; }
    .ma-dogn-hode, .ma-kvitt-hode { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding-bottom: 6px; }
    .ma-dogn { display: grid; grid-template-columns: 48px minmax(0, 1fr); row-gap: 8px; column-gap: 8px; }
    .ma-dogn-rad { display: contents; }
    .ma-dogn-tid { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--text-muted); padding-top: 12px; text-align: right; white-space: nowrap; }
    .ma-dogn-rad.naa .ma-dogn-tid { color: var(--primary); font-weight: 700; }
    .mitt-arbeid-kort.ma-dogn-kort { display: flex; align-items: center; gap: 10px; padding: 9px 12px; }
    .mitt-arbeid-kort[data-type="vakt"] { border-left-color: #B07D00; background: rgba(var(--st-obs-tint), .08); }
    .mitt-arbeid-kort[data-type="vakt"] .ma-kort-ikon { color: #B07D00; }
    .ma-dogn-type { display: inline-flex; align-items: center; gap: 6px; font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft); white-space: nowrap; }
    .ma-dogn-rad.naa .ma-dogn-type { color: var(--primary); }
    .ma-dogn-kort .mitt-arbeid-kort-tittel { flex: 0 1 auto; }
    .ma-dogn-kort .ma-kort-meta { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .ma-dogn-status { font-size: 11.5px; font-weight: 700; color: var(--st-ok-tekst); white-space: nowrap; }
    .ma-dogn-rad.naa .ma-dogn-status { color: var(--primary); }
    .ma-dogn-rad.ferdig .ma-dogn-kort { opacity: .7; }
    .ma-dogn-rad.naa .ma-dogn-kort { position: relative; }
    .ma-dogn-rad.naa .ma-dogn-kort::before { content: ''; position: absolute; left: -3px; right: 0; top: -6px; height: 2px; background: var(--primary); }
    .ma-kvitt .mitt-arbeid-kort { cursor: pointer; }
    .ma-kvitt-fot { display: flex; align-items: center; gap: 10px; margin-top: 4px; font-size: 11.5px; font-weight: 700; color: var(--ink-soft); white-space: nowrap; }
    .ma-kvitt-bar { flex: 1; height: 5px; border-radius: 999px; background: var(--bg2); overflow: hidden; }
    .ma-kvitt-bar-fyll { height: 100%; background: var(--primary); border-radius: 999px; }
    .ma-team-rad { display: flex; flex-direction: column; gap: 3px; }
    .ma-team-navn { font-size: 13.5px; font-weight: 700; color: var(--text); }
    .ma-team-avatarer { display: flex; gap: 5px; margin-top: 6px; }
    .ma-avatar { width: 28px; height: 28px; border-radius: 999px; background: var(--text); color: var(--surface); font-size: 10.5px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
    .ma-avatar--rest { background: var(--bg2); color: var(--ink-soft); }
    .ma-lenkeknapp { align-self: flex-start; background: none; border: none; padding: 0; color: var(--primary-dark-adaptiv); font-size: 11.5px; font-weight: 700; font-family: inherit; cursor: pointer; }
    .ma-lenkeknapp:hover { text-decoration: underline; }
    @media (max-width: 1100px) {
      .ma-flate--dogn { grid-template-columns: minmax(0, 1fr); }
    }
    @media (max-width: 900px) {
      .ma-flate { grid-template-columns: minmax(0, 1fr); }
      .ma-hero-knapper { width: 100%; }
    }

    /* ── Kommentartråd med @-omtale (oppgave-modal) ─────────── */
    .komm-laasthint { font-size: 13px; color: var(--text-muted); padding: 8px 0; }
    .komm-seksjon { display: flex; flex-direction: column; gap: 12px; }
    .komm-traad { display: flex; flex-direction: column; gap: 12px; max-height: 340px; overflow-y: auto; padding-right: 2px; }
    .komm-laster, .komm-tom, .komm-feil { font-size: 13px; color: var(--text-muted); padding: 6px 0; }
    .komm-feil { color: #D93025; }
    .komm-rad { display: flex; gap: 10px; }
    .komm-avatar {
      flex-shrink: 0; width: 30px; height: 30px; border-radius: 50%;
      background: var(--primary); color: #fff; font-size: 11px; font-weight: 700;
      display: flex; align-items: center; justify-content: center;
    }
    .komm-boble { flex: 1; min-width: 0; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 8px 11px; }
    .komm-meta { display: flex; align-items: center; gap: 8px; margin-bottom: 3px; }
    .komm-navn { font-size: 12.5px; font-weight: 700; color: var(--text); }
    .komm-tid { font-size: 11px; color: var(--text-muted); }
    .komm-slett { margin-left: auto; border: none; background: none; color: var(--text-muted); font-size: 16px; line-height: 1; cursor: pointer; padding: 0 2px; opacity: 0.5; }
    .komm-slett:hover { opacity: 1; color: #D93025; }
    .komm-tekst { font-size: 13px; color: var(--text); line-height: 1.45; word-wrap: break-word; }
    .komm-omtale { color: var(--primary); font-weight: 600; }
    .komm-ny { position: relative; }
    .komm-input-wrap { position: relative; }
    .komm-input {
      width: 100%; resize: none; min-height: 40px; max-height: 140px;
      padding: 10px 12px; border: 1.5px solid var(--border); border-radius: 10px;
      font-size: 13px; font-family: inherit; background: var(--bg); color: var(--text); line-height: 1.4;
    }
    .komm-input:focus { outline: none; border-color: var(--primary); }
    .komm-mention-pop {
      position: absolute; left: 0; bottom: calc(100% + 4px); z-index: 30;
      width: min(280px, 100%); max-height: 220px; overflow-y: auto;
      background: var(--surface); border: 1px solid var(--border); border-radius: 10px;
      box-shadow: 0 8px 24px rgba(0,0,0,0.16); padding: 4px;
    }
    .komm-mention-valg {
      display: flex; align-items: center; gap: 9px; width: 100%; text-align: left;
      padding: 7px 9px; border: none; background: none; border-radius: 7px; cursor: pointer;
      font-size: 13px; color: var(--text);
    }
    .komm-mention-valg:hover, .komm-mention-valg.hl { background: rgba(var(--primary-rgb, 247,27,0), 0.1); }
    .komm-mention-av {
      flex-shrink: 0; width: 24px; height: 24px; border-radius: 50%;
      background: var(--primary); color: #fff; font-size: 10px; font-weight: 700;
      display: flex; align-items: center; justify-content: center;
    }
    .komm-ny-bunn { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 8px; }
    .komm-hint { font-size: 11px; color: var(--text-muted); }
    .komm-hint kbd { background: var(--bg); border: 1px solid var(--border); border-radius: 4px; padding: 0 4px; font-size: 10px; }
    .komm-send {
      flex-shrink: 0; padding: 8px 16px; border: none; border-radius: 9px;
      background: linear-gradient(135deg, var(--primary-dark), var(--primary)); color: #fff;
      font-size: 13px; font-weight: 700; cursor: pointer; transition: filter 0.15s;
    }
    .komm-send:hover { filter: brightness(1.06); }
    .komm-send:disabled { opacity: 0.5; cursor: default; }

    /* ── "Mitt ansvar"-overlay (åpnes fra event-headeren) ───── */
    .mittansvar-overlay {
      display: none;
      position: fixed; inset: 0; z-index: 9600;
      background: rgba(0,0,0,0.45);
      align-items: flex-start; justify-content: center;
      padding: 40px 20px; overflow-y: auto;
    }
    .mittansvar-modal {
      width: 100%; max-width: 1180px;
      background: var(--bg);
      border: 1px solid var(--border);
      border-radius: 16px;
      box-shadow: 0 24px 60px rgba(0,0,0,0.3);
      overflow: hidden;
      animation: mittansvarInn 0.18s ease;
    }
    @keyframes mittansvarInn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
    .mittansvar-modal-hdr {
      display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
      padding: 20px 24px 16px;
      border-bottom: 1px solid var(--border);
      position: sticky; top: 0; background: var(--bg); z-index: 1;
    }
    .mittansvar-modal-tittel { font-size: 20px; font-weight: 800; color: var(--text); margin: 0; }
    .mittansvar-modal-sub { font-size: 12.5px; color: var(--text-muted); margin-top: 2px; }
    .mittansvar-modal-luk {
      flex-shrink: 0; border: none; background: var(--surface); color: var(--text-muted);
      width: 32px; height: 32px; border-radius: 8px; font-size: 20px; line-height: 1; cursor: pointer;
      transition: background 0.12s, color 0.12s;
    }
    .mittansvar-modal-luk:hover { background: rgba(128,128,128,0.18); color: var(--text); }
    .mittansvar-modal-body { padding: 20px 24px 28px; }

    /* ==========================================
       EVENT-INNSTILLINGER — SIDEBAR-LAYOUT (estab-)
       ========================================== */
    .estab-layout {
      display: flex;
      gap: 0;
      height: 100%;
    }
    .estab-nav {
      width: 176px;
      flex-shrink: 0;
      border-right: 1px solid var(--border);
      display: flex;
      flex-direction: column;
      gap: 1px;
      padding: 6px 8px;
      background: var(--surface);
      overflow-y: auto;
    }
    .estab-nav-btn {
      display: flex;
      align-items: center;
      gap: 9px;
      width: 100%;
      padding: 9px 11px;
      border-radius: 8px;
      border: none !important;
      background: transparent !important;
      color: var(--text-muted) !important;
      font-size: 13px;
      font-weight: 500;
      cursor: pointer;
      text-align: left;
      font-family: inherit;
      transition: background 0.12s, color 0.12s;
      white-space: nowrap;
    }
    .estab-nav-btn:hover {
      background: rgba(128,128,128,0.1) !important;
      color: var(--text) !important;
    }
    .estab-nav-btn.active {
      background: rgba(var(--primary-tint), 0.1) !important;
      color: var(--primary) !important;
      font-weight: 700 !important;
    }
    .estab-nav-btn.active svg { stroke: var(--primary); }
    .estab-content {
      flex: 1;
      min-width: 0;
      padding: 20px 24px;
      overflow-y: auto;
    }
    /* db-innstillinger overrides — replace old tab-bar rules */
    #db-innstillinger .tab-bar { display: none; }
    #db-innstillinger .estab-layout { min-height: 500px; height: auto; }
    #db-innstillinger .estab-nav { background: transparent; border-right-color: var(--border); }
    #db-innstillinger .estab-content { padding: 0 0 0 20px; }
    @media (max-width: 680px) {
      .estab-nav { width: 44px !important; padding: 6px 4px !important; }
      .estab-nav-btn { padding: 9px !important; justify-content: center !important; font-size: 0 !important; }
      .estab-nav-btn svg { flex-shrink: 0; }
      .estab-content { padding: 14px 0 14px 12px !important; }
    }

    /* ==========================================
       SETTINGS MODAL – ADMIN TABLE & ICON BTNS
       ========================================== */
    .settings-modal-header {
      display: flex; align-items: center; justify-content: space-between;
      border-bottom: 1px solid var(--border); padding-bottom: 16px; margin-bottom: 20px;
    }
    .settings-modal-header h2 {
      margin: 0; font-size: 18px; font-weight: 700; color: var(--text); letter-spacing: -0.02em;
    }
    .settings-close-btn {
      display: inline-flex; align-items: center; justify-content: center;
      width: 32px; height: 32px; border-radius: 8px;
      border: none !important; background: transparent !important;
      color: var(--text-muted) !important; cursor: pointer; transition: background 0.15s, color 0.15s;
      font-size: 18px; line-height: 1; padding: 0 !important;
    }
    .settings-close-btn:hover { background: var(--border) !important; color: var(--text) !important; }

    .icon-btn {
      display: inline-flex; align-items: center; justify-content: center;
      width: 30px; height: 30px; border-radius: 6px;
      border: none !important; cursor: pointer;
      transition: background 0.15s, color 0.15s; padding: 0 !important; flex-shrink: 0;
    }
    .icon-btn-edit  { background: rgba(var(--primary-tint), 0.08) !important; color: var(--primary) !important; }
    .icon-btn-edit:hover  { background: rgba(var(--primary-tint), 0.18) !important; }
    .icon-btn-delete { background: rgba(var(--st-feil-tint),0.08) !important; color: rgb(var(--st-feil-tint)) !important; }
    .icon-btn-delete:hover { background: rgba(var(--st-feil-tint),0.18) !important; color: #DC2626 !important; }

    .admin-table { width: 100%; border-collapse: collapse; background: var(--bg); font-size: 13px; min-width: 600px; border-radius: 10px; overflow: hidden; }
    .admin-table thead th {
      background: rgba(128,128,128,0.12); color: var(--text-muted);
      font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em;
      padding: 10px 14px; border-bottom: 2px solid #E5E7EB; text-align: left;
    }
    .admin-table thead th:last-child { text-align: right; width: 80px; }
    .admin-table tbody tr { border-bottom: 1px solid var(--border); transition: background 0.12s; }
    .admin-table tbody tr:last-child { border-bottom: none; }
    .admin-table tbody tr:hover { background: rgba(128,128,128,0.07); }
    .admin-table tbody td { padding: 10px 14px; color: var(--text); }
    .admin-table tbody td:last-child { text-align: right; white-space: nowrap; }

    .admin-form-box {
      background: rgba(128,128,128,0.06); border: 1px solid var(--border); padding: 20px 24px; border-radius: 12px;
      margin-bottom: 20px; border: 1.5px solid var(--border);
    }
    .admin-form-title {
      margin: 0 0 14px; font-size: 13px; font-weight: 700; color: var(--text-muted);
      text-transform: uppercase; letter-spacing: 0.06em;
    }

    .bruker-kort {
      transition: box-shadow 0.18s ease, transform 0.18s ease, border-color 0.18s ease;
    }
    .bruker-kort:hover {
      box-shadow: 0 6px 18px rgba(0,0,0,0.08);
      transform: translateY(-1px);
    }
    .bruker-kort select:hover,
    .bruker-kort input[type="date"]:hover { filter: brightness(0.98); }

    /* ==========================================
       PERSON POPUP (inni innstillinger)
       ========================================== */
    .person-back-btn {
      display: inline-flex; align-items: center; gap: 6px;
      background: transparent !important; border: none !important; box-shadow: none !important;
      color: var(--text-muted) !important; font-size: 13px; font-weight: 600;
      cursor: pointer; padding: 0 0 16px !important; transition: color 0.15s;
    }
    .person-back-btn:hover { color: var(--text) !important; background: transparent !important; }
    .person-popup-hero {
      display: flex; align-items: center; gap: 16px;
      padding-bottom: 20px; border-bottom: 1.5px solid var(--border); margin-bottom: 20px;
    }
    .person-avatar {
      width: 52px; height: 52px; border-radius: 50%;
      background: linear-gradient(135deg, var(--primary) 0%, #FFD0A2 100%);
      display: flex; align-items: center; justify-content: center;
      font-size: 19px; font-weight: 800; color: white; flex-shrink: 0; letter-spacing: -0.01em;
    }
    .person-popup-name { font-size: 20px; font-weight: 800; color: var(--text); letter-spacing: -0.03em; }
    .person-popup-meta { font-size: 13px; color: var(--text-muted); margin-top: 3px; }
    .person-contact-strip { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 24px; }
    .person-contact-chip {
      display: inline-flex; align-items: center; gap: 7px;
      background: var(--bg); border: 1.5px solid var(--border); border-radius: 8px;
      padding: 7px 13px; font-size: 13px; color: var(--text);
    }
    .person-contact-chip a { color: inherit; text-decoration: none; }
    .person-contact-chip a:hover { text-decoration: underline; }
    .person-events-title {
      font-size: 11px; font-weight: 700; color: var(--text-muted);
      text-transform: uppercase; letter-spacing: 0.07em;
      display: flex; align-items: center; gap: 8px; margin-bottom: 12px;
    }
    .person-count-badge {
      background: var(--primary); color: white; border-radius: 20px;
      padding: 1px 8px; font-size: 11px; font-weight: 700;
    }
    .person-day-label {
      font-size: 11px; font-weight: 700; color: var(--text-muted);
      text-transform: uppercase; letter-spacing: 0.07em; margin: 16px 0 8px;
    }
    .person-event-card {
      display: flex; align-items: stretch; gap: 0;
      border-radius: 8px; margin-bottom: 0; overflow: hidden;
      background: var(--bg); border: 1.5px solid var(--border); transition: border-color 0.15s;
    }
    .person-event-card:hover { border-color: #C8B8AD; }
    .person-event-accent { width: 4px; flex-shrink: 0; }
    .person-event-body { padding: 9px 13px; flex: 1; min-width: 0; }
    .person-event-title { font-size: 13px; font-weight: 600; color: var(--text); }
    .person-event-sub { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
    .person-events-grid {
      display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin-bottom: 4px;
    }
    .person-hero-edit-btn {
      margin-left: auto; flex-shrink: 0;
      display: inline-flex; align-items: center; gap: 6px;
      background: rgba(var(--primary-tint), 0.08) !important; color: var(--primary) !important;
      border: none !important; border-radius: 8px; padding: 7px 14px;
      font-size: 13px; font-weight: 600; cursor: pointer; transition: background 0.15s;
    }
    .person-hero-edit-btn:hover { background: rgba(var(--primary-tint), 0.18) !important; }
    .status-badge-avlyst {
      display: inline-block; font-size: 10px; font-weight: 700;
      background: rgba(var(--st-feil-tint),0.1); color: rgb(var(--st-feil-tint));
      border-radius: 4px; padding: 1px 6px; margin-left: 6px; vertical-align: middle;
    }
    .person-name-link {
      color: var(--primary); cursor: pointer; font-weight: 600;
      border-bottom: 1px dashed rgba(var(--primary-tint), 0.35); transition: border-color 0.15s;
    }
    .person-name-link:hover { border-bottom-color: var(--primary); }

    /* ==========================================
       SAMMENDRAGSKOLONNE
       ========================================== */
    .summary-column {
      position: sticky;
      left: 65px;
      z-index: 980;
      width: 280px;
      height: var(--timeline-height, 11520px);
      flex-shrink: 0;
      background: var(--bg2);
      border-right: 1px solid var(--border);
      box-shadow: 4px 0 16px rgba(29,29,29,0.09);
      transition: width 0.25s cubic-bezier(0.4,0,0.2,1);
    }
    .summary-column.collapsed {
      width: 26px;
      cursor: pointer;
      background: color-mix(in srgb, var(--text) 4%, transparent);
      box-shadow: 2px 0 8px rgba(0,0,0,0.07);
      overflow: hidden;
    }
    .summary-column.collapsed:hover { background: color-mix(in srgb, var(--text) 9%, transparent); }
    .summary-header {
      position: sticky;
      top: 0;
      z-index: 981;
      box-sizing: border-box;
      height: calc(var(--area-header-height) + var(--loc-header-height) + 4px);
      background: var(--header-dark, #374151);
      color: white;
      display: flex;
      align-items: flex-end;
      justify-content: space-between;
      padding: 0 8px 10px 12px;
      font-family: 'Bebas Neue', sans-serif;
      font-weight: 400;
      font-size: 14px;
      letter-spacing: 0.1em;
      white-space: nowrap;
      box-shadow: 0 2px 6px rgba(0,0,0,0.20);
    }
    .summary-toggle-btn {
      background: rgba(255,255,255,0.12) !important;
      border: 1px solid rgba(255,255,255,0.22) !important;
      color: white !important;
      font-size: 11px !important;
      padding: 2px 8px !important;
      border-radius: 6px !important;
      cursor: pointer;
      flex-shrink: 0;
      transition: background 0.15s !important;
      font-family: 'Inter', sans-serif;
    }
    .summary-toggle-btn:hover { background: rgba(255,255,255,0.26) !important; }
    .summary-column.collapsed .summary-header {
      height: 160px !important;
      writing-mode: vertical-rl;
      transform: rotate(180deg);
      align-items: center;
      justify-content: flex-end;
      padding: 12px 6px;
      font-size: 11px;
      letter-spacing: 0.14em;
      color: var(--text-muted);
      background: transparent;
      box-shadow: none;
    }
    .summary-column.collapsed .summary-toggle-btn { display: none; }
    .summary-column.collapsed .summary-grid { opacity: 0; pointer-events: none; }
    .summary-grid {
      position: relative;
      height: var(--timeline-height, 11520px);
      transition: opacity 0.2s;
      background-image:
        linear-gradient(to bottom, color-mix(in srgb, var(--text) 22%, transparent) 1px, transparent 1px),
        linear-gradient(to bottom, color-mix(in srgb, var(--text) 11%, transparent) 1px, transparent 1px),
        linear-gradient(to bottom, color-mix(in srgb, var(--text) 5%, transparent) 1px, transparent 1px);
      background-size: 100% var(--hour-height), 100% var(--half-hour-height), 100% var(--quarter-height);
    }
    .summary-event {
      position: absolute;
      border-radius: 7px;
      padding: 4px 7px;
      box-sizing: border-box;
      overflow: hidden;
      cursor: pointer;
      color: white;
      font-size: 11px;
      line-height: 1.2;
      box-shadow: 0 1px 4px rgba(15,23,42,0.2), inset 0 1px 0 rgba(255,255,255,0.14);
      border: none;
      transition: filter 0.1s, box-shadow 0.12s;
    }
    .summary-event:hover { filter: brightness(1.1); box-shadow: 0 4px 14px rgba(15,23,42,0.3), inset 0 1px 0 rgba(255,255,255,0.18); }
    .summary-event-title { font-weight: 700; font-size: 12px; letter-spacing: -0.01em; }
    .summary-event-meta { font-size: 10px; opacity: 0.85; margin-top: 1px; }
    .summary-resize-handle {
      position: absolute;
      top: 0; right: 0;
      width: 5px;
      height: 100%;
      cursor: col-resize;
      z-index: 990;
      background: transparent;
      transition: background 0.15s;
    }
    .summary-resize-handle:hover,
    .summary-resize-handle.dragging { background: rgba(0,0,0,0.25); }

    /* ==========================================
       COLLAPSED LOCATION COLUMNS
       ========================================== */
    .location-column.collapsed {
      min-width: 26px !important;
      max-width: 26px !important;
      flex: 0 0 26px !important;
      overflow: clip;
      cursor: pointer;
      background: color-mix(in srgb, var(--text) 5%, transparent) !important;
      transition: background 0.15s;
    }
    .location-column.collapsed:hover {
      background: color-mix(in srgb, var(--text) 11%, transparent) !important;
    }
    .location-column.collapsed .location-header {
      position: sticky !important;
      top: var(--area-header-height, 48px);
      height: 120px !important;
      line-height: 1 !important;
      writing-mode: vertical-rl;
      transform: rotate(180deg);
      font-size: 9px;
      padding: 10px 5px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      cursor: pointer;
      background: transparent;
      backdrop-filter: none; -webkit-backdrop-filter: none;
      color: var(--text-muted);
      border-bottom: none;
      transition: color 0.15s;
      z-index: 701;
      display: block;
    }
    .location-column.collapsed:hover .location-header {
      color: var(--text);
    }
    .location-column.collapsed .grid-container {
      pointer-events: none;
      opacity: 0;
    }
    .ny-hendelse-ghost {
      position: absolute; left: 3px; right: 3px;
      background: rgba(var(--primary-tint), 0.15);
      border: 2px solid var(--primary);
      border-radius: 6px;
      pointer-events: none;
      z-index: 500;
      box-sizing: border-box;
      display: flex; align-items: flex-start; justify-content: center;
      padding: 5px 6px;
      font-size: 11px; font-weight: 700; color: var(--primary);
      overflow: hidden; white-space: nowrap;
      min-height: 4px;
      transition: none;
    }

    /* ==========================================
       PROGRAM FLYT MODAL
       ========================================== */
    #pfModal {
      display: none; position: fixed; z-index: 3100; left: 0; top: 0; width: 100%; height: 100%;
      background: rgba(15,23,42,0.6); backdrop-filter: blur(6px);
    }
    #pfModal .modal-content {
      background: var(--surface); margin: 3% auto; padding: 28px 32px;
      border-radius: 16px; width: 960px; max-width: 96%; max-height: 90vh; overflow-y: auto;
      box-shadow: 0 30px 70px rgba(0,0,0,0.22), 0 0 0 1px rgba(0,0,0,0.04);
    }
    .pf-header { display: flex; align-items: center; gap: 12px; margin-bottom: 24px; }
    .pf-tittel { font-family: 'Bebas Neue', sans-serif; font-size: 26px; letter-spacing: 0.06em; color: var(--text); flex: 1; }
    .pf-lukk { background: none; border: none; font-size: 20px; color: var(--text-muted); cursor: pointer; padding: 4px 8px; line-height: 1; }
    .pf-lukk:hover { color: var(--text); background: none; }
    .pf-dag-select { padding: 5px 10px; border: 1.5px solid var(--border); border-radius: 8px; background: var(--bg); font-size: 13px; font-weight: 600; color: var(--text); font-family: inherit; cursor: pointer; }
    .pf-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 24px; }
    .pf-stat {
      background: var(--bg); border-radius: 12px; padding: 14px 16px;
      border: 1.5px solid var(--border); display: flex; flex-direction: column; gap: 4px;
    }
    .pf-stat-tall { font-size: 28px; font-weight: 800; letter-spacing: -0.03em; }
    .pf-stat-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: var(--text-muted); }
    .pf-stat.grønn .pf-stat-tall { color: var(--st-ok-tekst); }
    .pf-stat.oransje .pf-stat-tall { color: #D4500A; }
    .pf-stat.rød .pf-stat-tall { color: var(--primary); }
    .pf-stat.grå .pf-stat-tall { color: var(--text-muted); }
    .pf-snitt { font-size: 13px; color: var(--text-muted); margin-bottom: 20px; padding: 10px 14px; background: var(--bg); border-radius: 8px; border: 1.5px solid var(--border); }
    .pf-dag-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: var(--text-muted); margin: 20px 0 8px; }
    .pf-table { width: 100%; border-collapse: collapse; font-size: 13px; }
    .pf-table th { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: var(--text-muted); padding: 6px 10px; text-align: left; border-bottom: 1.5px solid var(--border); }
    .pf-table td { padding: 9px 10px; border-bottom: 1px solid var(--border); vertical-align: middle; }
    .pf-table tr:last-child td { border-bottom: none; }
    .pf-table tr:hover td { background: var(--bg); }
    .pf-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex-shrink: 0; }
    .pf-forsinkelse { font-weight: 700; font-size: 13px; }
    .pf-forsinkelse.grønn { color: var(--st-ok-tekst); }
    .pf-forsinkelse.oransje { color: #D4500A; }
    .pf-forsinkelse.rød { color: var(--primary); }
    .pf-forsinkelse.grå { color: var(--text-muted); }
    .pf-status-chip {
      display: inline-flex; align-items: center; border-radius: 6px; padding: 2px 8px;
      font-size: 11px; font-weight: 700;
    }
    .pf-ingen-logg { text-align: center; padding: 40px 0; color: var(--text-muted); }
    .pf-setup-btn { margin-top: 12px; background: var(--primary) !important; color: white !important; border: none !important; padding: 10px 20px; border-radius: 8px; font-weight: 700; cursor: pointer; }
    .pf-sammendrag-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 24px; }
    .pf-sammendrag-boks { background: var(--bg); border: 1.5px solid var(--border); border-radius: 12px; padding: 16px; }
    .pf-sammendrag-tittel { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); margin-bottom: 10px; }
    .pf-s-table { width: 100%; border-collapse: collapse; font-size: 12px; }
    .pf-s-table th { font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-muted); padding: 4px 6px; text-align: left; border-bottom: 1px solid var(--border); }
    .pf-s-table th:not(:first-child) { text-align: right; }
    .pf-s-table td { padding: 6px 6px; border-bottom: 1px solid var(--border); vertical-align: middle; }
    .pf-s-table tr:last-child td { border-bottom: none; }
    .pf-s-table td:not(:first-child) { text-align: right; font-variant-numeric: tabular-nums; }
    .pf-s-navn { font-weight: 600; color: var(--text); max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .pf-s-snitt { font-weight: 700; }
    .pf-s-snitt.grønn { color: var(--st-ok-tekst); }
    .pf-s-snitt.oransje { color: #D4500A; }
    .pf-s-snitt.rød { color: var(--primary); }
    .pf-s-snitt.grå { color: var(--text-muted); }
    .pf-mini-bar-wrap { width: 50px; height: 5px; background: var(--border); border-radius: 3px; display: inline-block; vertical-align: middle; margin-left: 4px; }
    .pf-mini-bar { height: 100%; border-radius: 3px; }
    .pf-detaljer-tittel { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); margin: 0 0 10px; }

    /* ==========================================
       SKRIV UT MODAL
       ========================================== */
    #skrivUtModal {
      display: none; position: fixed; z-index: 3200; left: 0; top: 0; width: 100%; height: 100%;
      background: rgba(15,23,42,0.6); backdrop-filter: blur(6px);
    }
    #skrivUtModal .modal-content {
      background: var(--surface); margin: 8% auto; padding: 28px 32px;
      border-radius: 16px; width: 520px; max-width: 96%;
      box-shadow: 0 30px 70px rgba(0,0,0,0.22), 0 0 0 1px rgba(0,0,0,0.04);
    }
    .su-header { display: flex; align-items: center; margin-bottom: 22px; }
    .su-tittel { font-family: 'Bebas Neue', sans-serif; font-size: 24px; letter-spacing: 0.06em; color: var(--text); flex: 1; }
    .su-lukk { background: none; border: none; font-size: 20px; color: var(--text-muted); cursor: pointer; padding: 4px 8px; line-height: 1; }
    .su-lukk:hover { color: var(--text); background: none; }
    .su-filters { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 22px; }
    .su-filter-group { display: flex; flex-direction: column; gap: 5px; }
    .su-filter-group label { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: var(--text-muted); }
    .su-filter-group select { padding: 7px 10px; border: 1.5px solid var(--border); border-radius: 8px; background: var(--bg); font-size: 13px; font-weight: 500; color: var(--text); font-family: inherit; cursor: pointer; }
    .su-filter-group select:focus { outline: none; border-color: var(--primary); }
    .su-divider { border: none; border-top: 1px solid var(--border); margin: 0 0 18px; }
    .su-layout-row { display: flex; gap: 8px; margin-bottom: 16px; }
    .su-layout-btn { flex: 1; padding: 8px 6px; border: 1.5px solid var(--border); border-radius: 8px; background: var(--bg); font-size: 12px; font-weight: 600; cursor: pointer; color: var(--text); transition: all 0.15s; text-align: center; }
    .su-layout-btn.aktiv { border-color: var(--primary); background: rgba(var(--primary-tint), 0.06); color: var(--primary); }
    .su-actions { display: flex; gap: 8px; justify-content: flex-end; }
    .su-preview-count { font-size: 12px; color: var(--text-muted); align-self: center; margin-right: auto; }

    /* ==========================================
       AI MASSE-OPPRETTELSE MODAL
       ========================================== */
    #aiMasseModal {
      display: none; position: fixed; z-index: 3200; left: 0; top: 0; width: 100%; height: 100%;
      background: rgba(15,23,42,0.6); backdrop-filter: blur(6px);
    }
    #aiMasseModal .modal-content {
      background: var(--surface); margin: 5% auto; padding: 28px 32px;
      border-radius: 16px; width: 640px; max-width: 96%; max-height: 88vh; overflow-y: auto;
      box-shadow: 0 30px 70px rgba(0,0,0,0.22);
    }
    .aim-header { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
    .aim-tittel { font-family: 'Bebas Neue', sans-serif; font-size: 24px; letter-spacing: 0.06em; color: var(--text); flex: 1; }
    .aim-lukk { background: none; border: none; font-size: 20px; color: var(--text-muted); cursor: pointer; padding: 4px 8px; }
    .aim-lukk:hover { color: var(--text); background: none; }
    .aim-ingress { font-size: 13px; color: var(--text-muted); margin: 0 0 16px; line-height: 1.5; }
    #aiMasse-tekst {
      width: 100%; box-sizing: border-box; padding: 12px; border: 1.5px solid var(--border);
      border-radius: 10px; font-size: 13px; font-family: inherit; resize: vertical;
      background: var(--bg); color: var(--text); line-height: 1.5;
    }
    #aiMasse-tekst:focus { outline: none; border-color: var(--primary); }
    .aim-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
    .aim-kort-liste { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
    .aim-kort {
      background: var(--surface); border: 1.5px solid var(--border); border-radius: 10px; padding: 12px 14px;
      transition: border-color 0.15s;
    }
    .aim-kort:has(input:checked) { border-color: var(--primary); background: rgba(var(--primary-tint), 0.04); }
    .aim-kort-checkbox-row { display: flex; align-items: center; gap: 10px; }
    .aim-kort-checkbox-row input[type="checkbox"] { accent-color: var(--primary); width: 16px; height: 16px; flex-shrink: 0; cursor: pointer; }
    .aim-kort-tittel { font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: 3px; }
    .aim-kort-meta { font-size: 12px; color: var(--text-muted); display: flex; gap: 10px; flex-wrap: wrap; }
    .aim-kort-meta span::before { content: '· '; }
    .aim-kort-meta span:first-child::before { content: ''; }
    .aim-loading { text-align: center; padding: 32px 0; color: var(--text-muted); font-size: 14px; }
    .aim-tabs { display: flex; gap: 0; margin-bottom: 16px; border: 1.5px solid var(--border); border-radius: 10px; overflow: hidden; }
    .aim-tab {
      flex: 1; padding: 8px 14px; font-size: 13px; font-weight: 600; cursor: pointer;
      background: var(--bg); color: var(--text-muted); border: none; border-radius: 0;
      transition: all 0.15s; font-family: inherit;
    }
    .aim-tab + .aim-tab { border-left: 1.5px solid var(--border); }
    .aim-tab.aktiv { background: var(--surface); color: var(--text); }
    .aim-dropzone {
      border: 2px dashed var(--border); border-radius: 10px; padding: 32px 20px;
      text-align: center; cursor: pointer; transition: all 0.2s; background: var(--bg);
    }
    .aim-dropzone:hover, .aim-dropzone.dragover { border-color: var(--primary); background: rgba(var(--primary-tint), 0.04); }
    .aim-dropzone-ikon { font-size: 32px; margin-bottom: 8px; }
    .aim-dropzone-tekst { font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 4px; }
    .aim-dropzone-sub { font-size: 12px; color: var(--text-muted); }
    .aim-fil-valgt { display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: rgba(var(--primary-tint), 0.06); border: 1.5px solid var(--primary); border-radius: 10px; margin-top: 10px; }
    .aim-fil-navn { font-size: 13px; font-weight: 600; color: var(--text); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .aim-fil-fjern { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 16px; padding: 0 4px; flex-shrink: 0; }
    .aim-formater { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 12px; justify-content: center; }
    .aim-format-badge { font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 4px; background: var(--bg); border: 1px solid var(--border); color: var(--text-muted); letter-spacing: 0.04em; }

    /* Tale-inndata */
    .aim-tale-rad {
      display: flex; align-items: center; gap: 12px; margin: 10px 0 4px;
    }
    .aim-tale-btn {
      display: flex; align-items: center; gap: 8px;
      padding: 9px 18px; border-radius: 10px;
      background: var(--bg); border: 1.5px solid var(--border);
      color: var(--text-muted); font-size: 13px; font-weight: 600;
      cursor: pointer; font-family: inherit;
      transition: all 0.18s; flex-shrink: 0;
    }
    .aim-tale-btn:hover { border-color: var(--primary); color: var(--primary); background: rgba(var(--primary-tint), 0.04); }
    .aim-tale-btn.tale-aktiv {
      background: rgba(var(--primary-tint), 0.08);
      border-color: var(--primary);
      color: var(--primary);
      animation: tale-puls 1.4s ease-in-out infinite;
    }
    .aim-tale-btn.tale-aktiv svg { animation: tale-mic-puls 1.4s ease-in-out infinite; }
    .aim-tale-status {
      font-size: 12px; font-weight: 600; display: flex; align-items: center; gap: 6px;
    }
    .aim-tale-status.lytter { color: var(--primary); }
    .aim-tale-status.lytter::before {
      content: '';
      display: inline-block; width: 8px; height: 8px; border-radius: 50%;
      background: var(--primary);
      animation: tale-dot-puls 1s ease-in-out infinite;
    }
    .aim-tale-status.feil { color: rgb(var(--st-feil-tint)); }
    @keyframes tale-puls {
      0%, 100% { box-shadow: 0 0 0 0 rgba(var(--primary-tint), 0.25); }
      50%       { box-shadow: 0 0 0 6px rgba(var(--primary-tint), 0); }
    }
    @keyframes tale-mic-puls {
      0%, 100% { opacity: 1; }
      50%       { opacity: 0.6; }
    }
    @keyframes tale-dot-puls {
      0%, 100% { opacity: 1; transform: scale(1); }
      50%       { opacity: 0.5; transform: scale(0.75); }
    }
    .aim-kort-tittel-input {
      width: 100%; box-sizing: border-box; font-size: 13px; font-weight: 700; color: var(--text);
      border: none; border-bottom: 1.5px solid transparent; background: transparent; padding: 0 0 2px;
      font-family: inherit; outline: none; transition: border-color 0.15s;
    }
    .aim-kort-tittel-input:focus { border-bottom-color: var(--primary); }
    .aim-edit-row { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
    .aim-input-sm {
      padding: 3px 7px; border: 1.5px solid var(--border); border-radius: 6px;
      font-size: 11px; font-family: inherit; background: var(--surface); color: var(--text);
      outline: none; transition: border-color 0.15s;
    }
    .aim-input-sm:focus { border-color: var(--primary); }
    .aim-input-sm.dato { width: 155px; }
    .aim-select-sm {
      padding: 3px 6px; border: 1.5px solid var(--border); border-radius: 6px;
      font-size: 11px; font-family: inherit; background: var(--surface); color: var(--text);
      outline: none; cursor: pointer; transition: border-color 0.15s;
    }
    .aim-select-sm:focus { border-color: var(--primary); }

    /* ==========================================
       AI-ASSISTENT SIDEPANEL (push-layout)
       Tar plass på skjermen — dytter innholdet i stedet for å dekke det.
       ========================================== */
    :root { --ai-w: 440px; }

    #aiPanel {
      /* Lås panelets palett til det varme event-temaet uansett kontekst, slik at
         det ser likt ut på org-nivå (body.light-mode) og på event-dashboard. */
      --bg: #FFF2E9;
      --surface: #FFFFFF;
      --text: #1D1D1D;
      --text-muted: #7A6E68;
      --border: #E5D8CF;
      --primary: #F71B00;
      --primary-dark: #CC1500;
      /* Pinnes fordi paletten over er pinnet: uten denne arver panelet mørk
         modus sin lyse rødfarge og setter den på sitt eget hvite kort. */
      --primary-dark-adaptiv: #CC1500;
      position: fixed; top: 0; right: 0;
      width: var(--ai-w);
      height: 100vh; height: 100dvh; /* dvh = synlig viewport (mobil-verktøylinje teller ikke med) */
      z-index: 8000;
      background: var(--surface);
      border-left: 1px solid var(--border);
      box-shadow: -16px 0 48px rgba(0,0,0,0.16);
      display: flex; flex-direction: column;
      box-sizing: border-box;
      transform: translateX(100%);
      transition: transform 0.30s cubic-bezier(0.32,0.72,0,1);
    }
    body.med-ai-panel #aiPanel { transform: translateX(0); }

    /* Push: gjør plass til panelet. In-flow innhold (tidslinje) krymper via
       padding-right; faste flater (header/overlays) skyves via right/width. */
    body { transition: padding-right 0.30s cubic-bezier(0.32,0.72,0,1); }
    body.med-ai-panel { padding-right: var(--ai-w); }
    .header-panel {
      transition: transform 0.28s cubic-bezier(0.4,0,0.2,1),
                  box-shadow 0.28s ease,
                  right 0.30s cubic-bezier(0.32,0.72,0,1);
    }
    body.med-ai-panel .header-panel { right: var(--ai-w); }
    #org-page, #kp-dashboard { transition: width 0.30s cubic-bezier(0.32,0.72,0,1); }
    body.med-ai-panel #org-page,
    body.med-ai-panel #kp-dashboard:not(.kpd-embed) { width: calc(100% - var(--ai-w)) !important; }
    #eventModal, #infoModal { transition: right 0.30s cubic-bezier(0.32,0.72,0,1); }
    body.med-ai-panel #eventModal,
    body.med-ai-panel #infoModal { right: var(--ai-w); }

    /* ── Panel-innhold ── */
    .aip-header {
      display: flex; align-items: center; gap: 8px;
      padding: 16px 18px 14px; flex-shrink: 0;
      border-bottom: 1px solid var(--border);
    }
    .aip-tittel {
      font-family: 'Bebas Neue', sans-serif; font-size: 22px;
      letter-spacing: 0.05em; color: var(--text); flex: 1;
      display: flex; align-items: center; gap: 8px;
    }
    .aip-tittel .aip-dot { width: 8px; height: 8px; border-radius: 50%;
      background: var(--primary); box-shadow: 0 0 0 3px rgba(var(--primary-tint), 0.18); }
    .aip-ikon-btn {
      background: none; border: 1px solid transparent; border-radius: 8px;
      color: var(--text-muted); cursor: pointer; padding: 5px 8px; font-size: 16px;
      line-height: 1; transition: all 0.15s;
    }
    .aip-ikon-btn:hover { color: var(--text); background: var(--bg); border-color: var(--border); }

    /* Proaktiv helsesjekk-banner */
    .aip-helse {
      flex-shrink: 0; padding: 10px 16px;
      border-bottom: 1px solid var(--border); background: rgba(var(--primary-tint), 0.045);
    }
    .aip-helse-tittel {
      font-size: 10px; font-weight: 700; text-transform: uppercase;
      letter-spacing: 0.06em; color: var(--text-muted); margin-bottom: 6px;
    }
    .aip-helse-pills { display: flex; flex-wrap: wrap; gap: 6px; }
    .aip-helse-pill {
      font-size: 11.5px; font-weight: 600; padding: 5px 11px; border-radius: 20px;
      background: var(--surface); border: 1px solid rgba(var(--primary-tint), 0.35);
      color: var(--primary); cursor: pointer; transition: background 0.15s;
    }
    .aip-helse-pill:hover { background: rgba(var(--primary-tint), 0.08); }

    /* «AI ikke konfigurert»-varsel — vises før brukeren prøver å sende */
    .aip-konfig {
      flex-shrink: 0; padding: 10px 16px;
      border-bottom: 1px solid var(--border);
      background: var(--amber-soft, rgba(251, 191, 36, 0.14));
    }
    .aip-konfig-tittel {
      font-size: 10px; font-weight: 700; text-transform: uppercase;
      letter-spacing: 0.06em; color: var(--amber-text, var(--st-obs-tekst)); margin-bottom: 4px;
    }
    .aip-konfig-tekst { font-size: 12px; color: var(--text); line-height: 1.45; }
    .aip-konfig-btn {
      margin-top: 8px; font-size: 11.5px; font-weight: 600;
      padding: 5px 11px; border-radius: 20px;
      background: var(--surface); border: 1px solid var(--border);
      color: var(--text); cursor: pointer; transition: border-color 0.15s, color 0.15s;
    }
    .aip-konfig-btn:hover { border-color: var(--primary); color: var(--primary); }

    .aip-chat {
      flex: 1 1 auto; overflow-y: auto; min-height: 0;
      -webkit-overflow-scrolling: touch; overscroll-behavior: contain;
      display: flex; flex-direction: column; gap: 12px;
      padding: 16px 18px;
    }
    /* Viktig: barna må ikke krympe — ellers klemmer flex-kolonnen sammen
       meldinger/kort i stedet for at chatten scroller. */
    .aip-chat > * { flex-shrink: 0; }
    .aip-tom {
      margin: auto; text-align: center; color: var(--text-muted);
      font-size: 13px; line-height: 1.6; padding: 0 12px; max-width: 280px;
    }
    .aip-tom svg { opacity: 0.4; margin-bottom: 10px; }

    .aip-msg {
      font-size: 13px; line-height: 1.55; max-width: 88%;
      padding: 9px 13px; border-radius: 14px;
    }
    .aip-msg-bruker {
      align-self: flex-end; background: var(--primary); color: #fff;
      border-bottom-right-radius: 4px;
    }
    .aip-msg-ai {
      align-self: flex-start; background: var(--bg); color: var(--text);
      border: 1px solid var(--border); border-bottom-left-radius: 4px;
      white-space: pre-wrap;
    }
    .aip-msg-feil { align-self: flex-start; color: var(--primary);
      border-color: rgba(var(--primary-tint), 0.3); background: rgba(var(--primary-tint), 0.05); }

    /* ── Markdown-formatert AI-svar ── */
    .aip-msg-ai.aip-md { white-space: normal; align-self: stretch; max-width: 100%; }
    .aip-md > :first-child { margin-top: 0; }
    .aip-md > :last-child { margin-bottom: 0; }
    .aip-md p { margin: 0 0 8px; }
    .aip-md .aip-h { font-weight: 700; line-height: 1.3; margin: 12px 0 6px; color: var(--text); }
    .aip-md .aip-h1 { font-size: 16px; }
    .aip-md .aip-h2 { font-size: 14.5px; }
    .aip-md .aip-h3, .aip-md .aip-h4 { font-size: 13px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-muted); }
    .aip-md .aip-ul, .aip-md .aip-ol { margin: 4px 0 8px; padding-left: 20px; }
    .aip-md .aip-ul li, .aip-md .aip-ol li { margin: 2px 0; }
    .aip-md code {
      font-family: 'SF Mono', ui-monospace, Menlo, monospace; font-size: 12px;
      background: rgba(0,0,0,0.06); padding: 1px 5px; border-radius: 5px;
    }
    .aip-md a { color: var(--primary); text-decoration: underline; }
    .aip-md strong { font-weight: 700; }
    .aip-tabell-wrap { overflow-x: auto; margin: 6px 0 10px; border: 1px solid var(--border); border-radius: 8px; }
    .aip-tabell { border-collapse: collapse; width: 100%; font-size: 12px; }
    .aip-tabell th, .aip-tabell td { padding: 6px 10px; text-align: left; border-bottom: 1px solid var(--border); white-space: nowrap; }
    .aip-tabell th { background: var(--surface); font-weight: 700; color: var(--text); position: sticky; top: 0; }
    .aip-tabell tr:last-child td { border-bottom: none; }
    .aip-tabell tbody tr:nth-child(even) td { background: rgba(0,0,0,0.02); }

    .aip-typing { display: inline-flex; gap: 4px; padding: 2px 0; }
    .aip-typing span {
      width: 6px; height: 6px; border-radius: 50%; background: var(--text-muted);
      animation: aip-blink 1.2s infinite ease-in-out;
    }
    .aip-typing span:nth-child(2) { animation-delay: 0.2s; }
    .aip-typing span:nth-child(3) { animation-delay: 0.4s; }
    @keyframes aip-blink { 0%,80%,100% { opacity: 0.25; } 40% { opacity: 1; } }

    /* ── Forslags-/utkast-kort ── */
    .aip-kort {
      align-self: stretch; background: var(--surface);
      border: 1px solid var(--border); border-radius: 14px;
      box-shadow: 0 2px 10px rgba(0,0,0,0.05); overflow: hidden;
    }
    .aip-kort-topp {
      display: flex; align-items: center; gap: 8px;
      padding: 11px 14px; background: var(--bg);
      border-bottom: 1px solid var(--border);
      font-weight: 700; font-size: 12.5px; color: var(--text);
      letter-spacing: 0.01em;
    }
    .aip-kort-topp .aip-merke {
      font-size: 10px; font-weight: 700; text-transform: uppercase;
      letter-spacing: 0.06em; color: var(--primary);
      background: rgba(var(--primary-tint), 0.09); padding: 2px 7px; border-radius: 20px;
    }
    .aip-kort-body { padding: 10px 14px; display: flex; flex-direction: column; gap: 8px; }
    .aip-kort-footer {
      display: flex; gap: 8px; padding: 11px 14px;
      border-top: 1px solid var(--border); background: var(--bg);
    }
    .aip-kort-footer .aip-btn-primar { flex: 1; }

    /* Redigerbar hendelse-rad i utkast */
    .aip-hrad {
      border: 1px solid var(--border); border-radius: 10px;
      padding: 9px 10px; display: flex; gap: 9px; align-items: flex-start;
      background: var(--bg);
    }
    .aip-hrad.av { opacity: 0.45; }
    .aip-hrad > input[type="checkbox"] { margin-top: 3px; flex-shrink: 0; accent-color: var(--primary); }
    .aip-hrad-felt { flex: 1; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
    .aip-inp, .aip-sel {
      width: 100%; box-sizing: border-box;
      padding: 6px 8px; border: 1px solid var(--border); border-radius: 7px;
      font-size: 12.5px; font-family: inherit; background: var(--surface); color: var(--text);
    }
    .aip-inp:focus, .aip-sel:focus { outline: none; border-color: var(--primary); }
    .aip-inp-tittel { font-weight: 600; }
    .aip-rad2 { display: flex; gap: 6px; }
    .aip-rad2 > * { flex: 1; min-width: 0; }
    /* Tid-/feltkolonne: stable felt vertikalt i full bredde slik at datetime-local
       viser både dato og klokkeslett (to side-om-side blir for smale). */
    .aip-rad-tid, .aip-felt-kol { display: flex; flex-direction: column; gap: 8px; }
    .aip-rad-tid > *, .aip-felt-kol > * { min-width: 0; }
    .aip-felt-merke { font-size: 10px; color: var(--text-muted); margin-bottom: 2px; display: block; }

    /* Knapper */
    .aip-btn-primar {
      background: linear-gradient(135deg, var(--primary-dark), var(--primary));
      color: #fff; border: none; border-radius: 9px; cursor: pointer;
      font-weight: 700; font-size: 13px; padding: 9px 14px; transition: filter 0.15s;
    }
    .aip-btn-primar:hover { filter: brightness(1.06); }
    .aip-btn-primar:disabled { opacity: 0.5; cursor: default; filter: none; }
    .aip-btn-sekundar {
      background: var(--surface); color: var(--text-muted);
      border: 1px solid var(--border); border-radius: 9px; cursor: pointer;
      font-weight: 600; font-size: 13px; padding: 9px 14px; transition: all 0.15s;
    }
    .aip-btn-sekundar:hover { color: var(--text); border-color: var(--text-muted); }

    /* Input + chips */
    .aip-bunn { flex-shrink: 0; border-top: 1px solid var(--border); padding: 12px 14px; }
    .aip-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
    .aip-chip {
      font-size: 11px; padding: 5px 11px; border-radius: 20px;
      background: var(--bg); border: 1px solid var(--border); color: var(--text-muted);
      cursor: pointer; transition: all 0.15s; white-space: nowrap;
    }
    .aip-chip:hover { border-color: var(--primary); color: var(--primary); background: rgba(var(--primary-tint), 0.04); }
    .aip-input-rad { display: flex; gap: 8px; align-items: flex-end; }
    #aip-input {
      flex: 1; resize: none; max-height: 120px; min-height: 40px;
      padding: 10px 12px; border: 1.5px solid var(--border); border-radius: 11px;
      font-size: 13px; font-family: inherit; background: var(--bg); color: var(--text);
      line-height: 1.4;
    }
    #aip-input:focus { outline: none; border-color: var(--primary); }
    .aip-send {
      flex-shrink: 0; width: 42px; height: 42px; border-radius: 11px; border: none;
      background: linear-gradient(135deg, var(--primary-dark), var(--primary));
      color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center;
      transition: filter 0.15s;
    }
    .aip-send:hover { filter: brightness(1.08); }
    .aip-send:disabled { opacity: 0.5; cursor: default; }

    /* Mobil: panelet blir full-skjerm overlay og dytter ikke layouten */
    @media (max-width: 768px) {
      #aiPanel { width: 100vw; z-index: 9500; }
      body.med-ai-panel { padding-right: 0; }
      body.med-ai-panel .header-panel,
      body.med-ai-panel #eventModal,
      body.med-ai-panel #infoModal { right: 0; }
      body.med-ai-panel #org-page,
      body.med-ai-panel #kp-dashboard:not(.kpd-embed) { width: 100% !important; }

      /* Respekter notch/safe-area: header (med reset/lukk) under notch,
         input over home-indikatoren — så hjørner/knapper ikke kuttes. */
      #aiPanel .aip-header { padding-top: max(16px, env(safe-area-inset-top)); }
      #aiPanel .aip-bunn { padding-bottom: max(12px, env(safe-area-inset-bottom)); }
      /* 16px hindrer at iOS zoomer inn når man fokuserer et felt. */
      #aiPanel #aip-input,
      #aiPanel .aip-inp,
      #aiPanel .aip-sel { font-size: 16px; }
      /* Skjul de forhåndsdefinerte forslags-chipsene på mobil — de stjeler plass. */
      #aiPanel .aip-chips { display: none; }
    }

    /* ==========================================
       KJØREPLAN / UNDERHENDELSER
       ========================================== */
    .kp-seksjon { margin-top: 24px; border-top: 1px solid var(--border); padding-top: 16px; }
    /* infoModal er en 600 px sidebar (ikke en bred modal), og .info-layout er
       låst til én kolonne der. Verktøyraden har derfor ~536 px å gå på uansett
       skjermbredde, mens de seks knappene trenger ~525. Tittelen på egen linje
       er det som gjør at raden får plass — «space-between» ga den bare ~470 og
       tvang fram en brekt knapp. Samme oppsett som ≤768 px alt hadde. */
    .kp-header {
      display: flex; flex-direction: column; align-items: flex-start;
      gap: 8px; margin-bottom: 12px;
    }
    .kp-tittel {
      font-size: 11px; font-weight: 700; text-transform: uppercase;
      letter-spacing: 0.09em; color: var(--text-muted);
    }
    /* Verktøyraden i infoModal. Seks knapper fra tre ulike stilfamilier
       (.kp-btn-print/-mal, .kp-live-btn, .kp-monitor-btn fra stil-landing,
       .kp-legg-til-btn) med hver sin font-size og padding ga fem ulike høyder:
       23, 25, 27, 32 og 70 px i samme rad.
       De 70 er den egentlige feilen: .kp-legg-til-btn var den ENESTE uten
       white-space:nowrap, altså det eneste krympbare elementet i en nowrap-rad.
       Kolonnen er 600 px fast på desktop og raden trenger 580 + tittelen, så
       flexboxen la hele underskuddet på den ene knappen — 118 px ble til 60, og
       «+ Legg til punkt» brakk over tre linjer mot kanten.
       Fikses to steder: alle får samme høyde og nowrap, og raden får lov til å
       brekke i stedet for å presse én knapp. Scopet hit med vilje —
       kjøreplan-overlayet bruker .kpd-panel-knappar og røres ikke. */
    .kp-header-actions {
      display: flex; align-items: center; gap: 4px; flex-wrap: wrap;
    }
    /* Barnevelger, ikke klassevelger: de samme knappeklassene brukes i
       kjøreplan-overlayet (.kpd-panel-knappar) og skal ikke røres der.
       «> div > button» treffer bare mal-knappene som ligger i en
       position:relative-wrapper — panelinnholdet ligger et nivå dypere. */
    .kp-header-actions > button,
    .kp-header-actions > div > button {
      height: 28px; padding: 0 9px; font-size: 11px; border-radius: 7px;
      display: inline-flex; align-items: center; gap: 5px;
      white-space: nowrap; flex-shrink: 0;
    }
    .kp-header-actions > div { flex-shrink: 0; }
    /* «Reset buttons inside modals to light theme» (.modal button, ca. linje 956)
       er 0,1,1 og slår hver av knappeklassene under, som alle er 0,1,0. Inne i
       infoModal ble derfor Live-gradienten, Monitor-blåen og primærfyllet vasket
       til samme hvite pille — seks like knapper der fargen var det eneste som
       skilte dem, og «+ Legg til punkt» (border:none) så ut som ren tekst.
       Utenfor modalen, i .kpd-panel-knappar, har de alltid vært riktige.
       Verdiene under er de samme som i .kp-live-btn (her) og .kp-monitor-btn
       (stil-landing.css) — endres de der, må de endres her.
       :hover må stå eksplisitt: .modal button:hover er 0,2,1 og ville ellers
       vunnet tilbake på hover. */
    .kp-header-actions > .kp-live-btn,
    .kp-header-actions > .kp-live-btn:hover {
      background: linear-gradient(135deg, var(--primary-dark), var(--primary));
      color: #fff; border-color: rgba(255,255,255,0.15);
    }
    .kp-header-actions > .kp-monitor-btn,
    .kp-header-actions > .kp-monitor-btn:hover {
      background: var(--accent);
      color: #fff; border-color: transparent;
    }
    .kp-header-actions > .kp-foh-btn,
    .kp-header-actions > .kp-foh-btn:hover {
      background: var(--header-dark, #1D1D1D);
      color: #fff; border-color: transparent;
    }
    .kp-header-actions > .kp-legg-til-btn,
    .kp-header-actions > .kp-legg-til-btn:hover {
      background: var(--primary); color: #fff; border-color: transparent;
      /* Live-gradienten ender på nøyaktig samme --primary-rød, så de to smeltet
         sammen til én klump side om side. Auto-margin skyver primærhandlingen ut
         til høyre kant og bruker slakken raden har igjen. */
      margin-left: auto;
    }
    .kp-legg-til-btn {
      font-size: 12px; font-weight: 600; padding: 5px 13px; border-radius: 7px;
      background: var(--primary); border: none; color: #fff;
      cursor: pointer; transition: opacity 0.15s;
    }
    .kp-legg-til-btn:hover { opacity: 0.85; }
    .kp-loading { font-size: 12px; color: var(--text-muted); padding: 8px 0; }
    .kp-tom {
      font-size: 13px; color: var(--text-muted); font-style: italic;
      padding: 20px 0; text-align: center;
    }
    .kp-liste { display: flex; flex-direction: column; gap: 3px; margin-bottom: 10px; }
    .kp-fase-gruppe { margin-bottom: 16px; }
    .kp-fase-header {
      display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
    }
    .kp-fase-header-label {
      font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em;
      color: var(--text-muted); white-space: nowrap;
    }
    .kp-fase-header-tid {
      font-size: 10px; color: var(--text-muted); font-variant-numeric: tabular-nums;
      white-space: nowrap; opacity: 0.7;
    }
    .kp-fase-header-linje { flex: 1; height: 1px; background: var(--border); }
    .kp-rad {
      display: grid; grid-template-columns: 16px 54px 1fr auto auto;
      align-items: center; gap: 10px;
      padding: 10px 12px 10px 10px; border-radius: 8px; background: var(--bg);
      border: 1px solid var(--border);
      border-left-width: 3px;
      transition: box-shadow 0.15s, opacity 0.15s;
      position: relative;
    }
    .kp-rad:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.07); }
    .kp-rad:hover .kp-aksjoner { opacity: 1; }
    .kp-rad.dragging { opacity: 0.3; }
    .kp-rad { position: relative; }
    .kp-rad.drag-over-top::before,
    .kp-rad.drag-over-bottom::after {
      content: '';
      position: absolute;
      left: 0; right: 0;
      height: 3px;
      background: var(--primary);
      border-radius: 2px;
      z-index: 10;
    }
    .kp-rad.drag-over-top::before  { top: -2px; }
    .kp-rad.drag-over-bottom::after { bottom: -2px; }
    .kp-drag {
      cursor: grab; color: var(--text-muted); font-size: 15px; line-height: 1;
      user-select: none; text-align: center; transition: color 0.15s, background 0.15s;
      padding: 3px 2px; border-radius: 4px; opacity: 0.45;
    }
    .kp-rad:hover .kp-drag { opacity: 1; background: var(--border); }
    .kp-drag:active { cursor: grabbing; }
    .kp-tid {
      font-size: 14px; font-weight: 700; color: var(--text);
      font-variant-numeric: tabular-nums; white-space: nowrap; letter-spacing: -0.01em;
    }
    .kp-innhold { min-width: 0; }
    .kp-rad-tittel {
      font-size: 14px; font-weight: 600; color: var(--text);
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
      line-height: 1.3;
    }
    .kp-rad-meta {
      font-size: 11px; color: var(--text-muted);
      display: flex; flex-wrap: wrap; gap: 8px; margin-top: 3px;
    }
    .kp-rad-meta span { display: flex; align-items: center; gap: 2px; }
    .kp-status-badge {
      font-size: 10px; font-weight: 700; padding: 3px 9px; border-radius: 20px; cursor: pointer;
      white-space: nowrap; transition: opacity 0.15s; flex-shrink: 0;
    }
    .kp-status-badge:hover { opacity: 0.7; }
    .kp-aksjoner {
      display: flex; gap: 4px; align-items: center;
      opacity: 0; transition: opacity 0.15s;
    }
    .kp-btn-sm {
      font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 6px; cursor: pointer;
      border: 1px solid; transition: all 0.12s; white-space: nowrap;
    }
    .kp-btn-rediger {
      background: transparent; border-color: var(--border); color: var(--text-muted);
    }
    .kp-btn-rediger:hover { background: rgba(0,0,0,0.05); border-color: var(--text-muted); color: var(--text); }
    .kp-btn-slett {
      background: transparent; border-color: transparent; color: #9CA3AF;
    }
    .kp-btn-slett:hover { background: rgba(var(--st-feil-tint),0.08); border-color: rgba(var(--st-feil-tint),0.3); color: #DC2626; }
    .kp-btn-print {
      font-size: 11px; font-weight: 600; padding: 4px 11px; border-radius: 7px; cursor: pointer;
      background: transparent; border: 1px solid var(--border); color: var(--text-muted);
      transition: all 0.15s; white-space: nowrap;
    }
    .kp-btn-print:hover { border-color: var(--text-muted); color: var(--text); }
    .kp-btn-mal {
      font-size: 11px; font-weight: 600; padding: 4px 11px; border-radius: 7px; cursor: pointer;
      background: transparent; border: 1px solid var(--border); color: var(--text-muted);
      transition: all 0.15s; white-space: nowrap;
    }
    .kp-btn-mal:hover { border-color: var(--primary); color: var(--primary); }
    /* Kjøreplan-popoverne (mal/kopier/historikk/knytt): ÉN definisjon.
       Halvparten hadde egne inline-stiler (radius 8, tyngre skygge) som vant
       over denne — inline-stilene er fjernet fra markupen, alle bærer nå
       .kp-popover (+ modifikator). Id-lista står for ev. gammel markup. */
    .kp-popover,
    #kp-mal-panel, #kpd-mal-panel,
    #kp-lagre-mal-panel, #kpd-lagre-mal-panel {
      position: absolute; top: calc(100% + 6px); right: 0; z-index: 200;
      min-width: 320px; max-width: min(440px, calc(100vw - 32px));
      background: var(--surface); border: 1.5px solid var(--border);
      border-radius: 10px; padding: 12px 14px; box-shadow: 0 8px 24px rgba(0,0,0,0.18);
    }
    /* Liste-innhold (historikk) styrer egen luft per rad */
    .kp-popover--liste { min-width: 340px; padding: 6px; }
    /* Knytt til hendelse trenger litt mer bredde til hendelsesvelgeren */
    .kp-popover--bred { min-width: 360px; max-width: min(460px, calc(100vw - 32px)); }
    /* Live-familien: ÉN definisjon for begge flatene (infoModal .kp-live-btn,
       kjøreplan-panelets .live-start-btn). Solid rød fyllfarge — rød er
       reservert for LIVE i hele appen, og en «faded» startknapp leste som
       sekundær handling. Gradienten starter mørkere enn --primary så den
       skilles fra «+ Legg til punkt» når de står i samme rad. */
    .kp-live-btn, .live-start-btn {
      font-size: 12px; font-weight: 700; padding: 5px 14px; border-radius: 7px;
      background: linear-gradient(135deg, var(--primary-dark), var(--primary)); border: 1px solid rgba(255,255,255,0.15);
      color: white; cursor: pointer; box-shadow: 0 2px 8px rgba(var(--primary-tint), 0.35);
      transition: all 0.15s; white-space: nowrap;
    }
    .kp-live-btn:hover, .live-start-btn:hover { box-shadow: 0 3px 14px rgba(var(--primary-tint), 0.5); opacity: 0.92; }
    .kp-live-btn svg, .live-start-btn svg { color: #fff; flex-shrink: 0; }

    /* Kjøreplan-skjema */
    .kp-skjema {
      background: var(--surface); border: 1.5px solid var(--primary);
      border-radius: 10px; padding: 16px; margin-top: 10px;
    }
    .kp-skjema-rad { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
    .kp-skjema-felt { display: flex; flex-direction: column; gap: 4px; }
    .kp-skjema-felt label {
      font-size: 10px; font-weight: 700; text-transform: uppercase;
      letter-spacing: 0.05em; color: var(--text-muted);
    }
    .kp-input {
      padding: 6px 10px; border: 1.5px solid var(--border); border-radius: 7px;
      font-size: 13px; font-family: inherit; background: var(--bg); color: var(--text);
      outline: none; transition: border-color 0.15s;
    }
    .kp-input:focus { border-color: var(--primary); }
    .kp-input.w-full { width: 100%; box-sizing: border-box; }
    .kp-teknisk-toggle {
      background: none; border: none; cursor: pointer; font-size: 11px; color: var(--text-muted);
      padding: 4px 0; text-align: left; margin: 2px 0 4px; display: flex; align-items: center; gap: 4px;
    }
    .kp-teknisk-toggle:hover { color: var(--text); }
    .kp-teknisk-seksjon { display: none; }
    .kp-teknisk-seksjon.apen { display: block; }
    .kp-skjema-knapper { display: flex; gap: 8px; margin-top: 14px; }
    .kp-lagre-btn {
      padding: 8px 20px; border-radius: 7px; font-size: 13px; font-weight: 700;
      background: var(--primary); color: #fff; border: none;
      cursor: pointer; transition: opacity 0.15s;
      box-shadow: 0 2px 8px rgba(var(--primary-tint), 0.3);
    }
    .kp-lagre-btn:hover { opacity: 0.85; }
    .kp-avbryt-btn {
      padding: 7px 16px; border-radius: 7px; font-size: 13px; font-weight: 600;
      background: transparent; border: 1.5px solid var(--border); color: var(--text-muted);
      cursor: pointer; transition: border-color 0.15s, color 0.15s;
    }
    .kp-avbryt-btn:hover { border-color: var(--text-muted); color: var(--text); }

/* ─── KJØREPLAN DASHBOARD ──────────────────────────────────────────────
   Flaten fulgte sin egen grønnpalett (#1B3A2D/#EEF2EC) til 2026-08-23 —
   utenfor tokensystemet og derfor lys-only. Nå: mørk topbar i orgp-språket
   (--header-dark), --bg-arbeidsflate, merkerød aktiv-markering og --pult-*
   for det mørke statkortet (samme token som .evo-hero). .kpd-embed lenger
   ned beholder KUN det som faktisk er annerledes i fane-modus. */
    .kpd-header {
      display: flex; align-items: center; gap: 16px;
      padding: 14px 24px;
      background: var(--header-dark, #1D1D1D); flex-shrink: 0;
    }
    .kpd-tilbake-btn {
      display: flex; align-items: center; gap: 6px;
      background: color-mix(in srgb, #fff 8%, var(--header-dark, #1D1D1D));
      border: 1px solid rgba(255,255,255,0.16);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.09), 0 1px 2px rgba(0,0,0,0.35);
      color: rgba(255,255,255,0.88); font-size: 12px; font-weight: 600;
      padding: 7px 14px; border-radius: 8px;
      cursor: pointer; flex-shrink: 0; transition: all 0.12s; font-family: inherit;
    }
    .kpd-tilbake-btn:hover {
      background: color-mix(in srgb, #fff 14%, var(--header-dark, #1D1D1D));
      border-color: rgba(255,255,255,0.30);
      color: white;
    }
    .kpd-header-tittelblokk { display: flex; flex-direction: column; gap: 1px; }
    .kpd-overskrift {
      font-size: 17px; font-weight: 800; color: white;
      margin: 0; letter-spacing: -0.02em;
    }
    .kpd-header-meta { font-size: 11px; color: rgba(255,255,255,0.5); font-weight: 400; }

    /* Event picker in header */
    .kpd-event-picker-seksjon { display: flex; align-items: center; }
    .kpd-event-velger {
      border: 1px solid rgba(255,255,255,0.25); border-radius: 8px;
      padding: 7px 12px; font-size: 13px; font-weight: 600;
      background: rgba(255,255,255,0.1); color: white;
      font-family: inherit; cursor: pointer; outline: none;
      transition: border-color 0.15s; max-width: 280px;
    }
    .kpd-event-velger:focus { border-color: rgba(255,255,255,0.5); }
    .kpd-event-velger option { background: var(--header-dark, #1D1D1D); color: white; }

    /* ── Søkefelt (øverst i venstrepanelet) ───────────── */
    .kpd-sok {
      display: flex; align-items: center; gap: 8px;
      padding: 10px 14px; flex-shrink: 0;
      border-bottom: 1px solid var(--border);
    }
    .kpd-sok-ikon { color: var(--text-muted); flex-shrink: 0; }
    .kpd-sok-input {
      flex: 1; border: none; outline: none;
      font-size: 13px; font-family: inherit;
      color: var(--text); background: transparent; width: 100%;
    }
    .kpd-sok-input::placeholder { color: var(--text-muted); }

    /* ── Body ──────────────────────────────────────────── */
    .kpd-body {
      display: flex; flex: 1; min-height: 0; overflow: hidden;
      padding: 0 24px 24px; gap: 12px; background: var(--bg);
    }

    /* ── Venstre panel ─────────────────────────────────── */
    .kpd-venstre {
      width: 280px; flex-shrink: 0;
      background: var(--surface); border: 1px solid var(--border);
      border-radius: 14px;
      display: flex; flex-direction: column; overflow: hidden;
      box-shadow: 0 1px 3px rgba(0,0,0,0.05);
    }
    .kpd-hendelse-liste { flex: 1; overflow-y: auto; padding-bottom: 16px; }

    /* Seksjonsoverskrift (Med kjøreplan / Øvrige hendelser) */
    .kpd-seksjon-header {
      display: flex; align-items: center; justify-content: space-between;
      gap: 8px; white-space: nowrap;
      padding: 14px 16px 6px;
      font-size: 10px; font-weight: 700; text-transform: uppercase;
      letter-spacing: 0.08em; color: var(--text);
      background: var(--surface); position: sticky; top: 0; z-index: 2;
    }
    /* Venstredelen (etikett + teller): ellipser heller enn å brekke over to
       linjer — «Frittstående kjøreplaner» brakk i 280px-lista. */
    .kpd-seksjon-venstre { display: flex; align-items: center; gap: 8px; min-width: 0; }
    .kpd-seksjon-etikett { overflow: hidden; text-overflow: ellipsis; }
    .kpd-seksjon-header-dim { color: var(--text-muted); }
    .kpd-seksjon-header-border { border-top: 1px solid var(--border); margin-top: 4px; padding-top: 14px; }
    .kpd-seksjon-teller {
      background: var(--text); color: var(--surface);
      font-size: 10px; font-weight: 700; padding: 1px 7px; border-radius: 10px;
    }
    .kpd-seksjon-teller-dim { background: var(--bg2); color: var(--text-muted); }

    .kpd-dag-header {
      padding: 6px 16px 3px; font-size: 10px; font-weight: 600;
      letter-spacing: 0.04em; color: var(--text-muted); background: var(--surface);
    }
    .kpd-hendelse-rad {
      display: flex; align-items: center; gap: 10px;
      padding: 10px 16px; cursor: pointer;
      border-left: 3px solid transparent;
      border-bottom: 1px solid color-mix(in srgb, var(--border) 45%, transparent);
      transition: background 0.1s;
    }
    .kpd-hendelse-rad:hover { background: var(--bg); }
    .kpd-hendelse-rad.aktiv {
      background: color-mix(in srgb, var(--primary) 6%, transparent);
      border-left-color: var(--primary);
    }
    .kpd-hendelse-info { flex: 1; min-width: 0; }
    .kpd-hendelse-tittel {
      font-size: 13px; font-weight: 600; color: var(--text);
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }
    .kpd-hendelse-meta { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
    .kpd-antall-badge {
      flex-shrink: 0; background: var(--text); color: var(--surface);
      font-size: 10px; font-weight: 700; padding: 2px 7px;
      border-radius: 10px; min-width: 20px; text-align: center;
    }
    .kpd-antall-tom { background: var(--bg2); color: var(--text-muted); }

    /* ── Høyre panel ───────────────────────────────────── */
    .kpd-hoyre {
      flex: 1; min-width: 0; display: flex;
      flex-direction: column; overflow: hidden;
      background: var(--surface); border: 1px solid var(--border);
      border-radius: 14px;
      box-shadow: 0 1px 3px rgba(0,0,0,0.05);
    }
    .kpd-tom-panel {
      flex: 1; display: flex; align-items: center; justify-content: center;
    }
    .kpd-tom-innhold { text-align: center; padding: 40px 20px; }
    .kpd-tom-ikon-wrapper {
      width: 72px; height: 72px; border-radius: 50%;
      background: var(--bg); display: flex; align-items: center; justify-content: center;
      margin: 0 auto 16px; color: var(--text-muted);
    }
    .kpd-tom-tittel { font-size: 17px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
    .kpd-tom-tekst { font-size: 13px; color: var(--text-muted); max-width: 240px; margin: 0 auto; line-height: 1.5; }

    .kpd-panel-header {
      display: flex; align-items: flex-start; justify-content: space-between; gap: 12px 20px;
      padding: 20px 24px 18px;
      border-bottom: 1px solid var(--border);
      background: var(--surface); flex-shrink: 0;
      /* Tittelblokka har min-width i markupen; blir raden for bred, brekker
         verktøyraden ned på egen linje i stedet for å klemme tittelen flat. */
      flex-wrap: wrap;
    }
    .kpd-panel-tilbake { display: none; }
    .kpd-panel-tittel {
      font-size: 20px; font-weight: 800; color: var(--text);
      line-height: 1.2; letter-spacing: -0.02em;
    }
    .kpd-panel-meta { font-size: 12px; color: var(--text-muted); margin-top: 5px; }
    /* Verktøyraden: samme normalisering som .kp-header-actions i infoModal —
       knappene kommer fra fire stilfamilier (.kp-btn-print/-mal, .live-start-btn,
       .live-monitor-btn, .kp-legg-til-btn) med hver sin font/padding og dermed
       hver sin høyde. Barnevelgeren gir alle 28 px og nowrap, og raden får
       brekke i stedet for å klemme én knapp («> div > button» treffer
       mal-knappene som ligger i position:relative-wrappere). */
    .kpd-panel-knappar {
      display: flex; gap: 6px; align-items: center; flex-shrink: 0; padding-top: 2px;
      flex-wrap: wrap; justify-content: flex-end;
    }
    .kpd-panel-knappar > button,
    .kpd-panel-knappar > div > button {
      height: 28px; padding: 0 11px; font-size: 11.5px; border-radius: 7px;
      display: inline-flex; align-items: center; gap: 5px;
      white-space: nowrap; flex-shrink: 0;
    }
    .kpd-panel-knappar > div { flex-shrink: 0; }
    /* .kpd-kjoreplan-scroll-blokka (gammel kort-editor med egne fasefarger) er
       SLETTET 2026-08-23 — containeren forsvant fra Index.html da høyre panel
       gikk over til den delte fkpx-editoren, så reglene traff ingenting. */

/* ─── Innebygd Kjøreplaner-fane (.kpd-embed, dashboard-fane) ─────────────
   Basisstilen over er nå token-basert, så remapen her er KUN det som er
   annerledes når modulen lever som fane: dashboardet har allerede en mørk
   topbar, så headeren blir lys flate; kortene mister skygge og det mørke
   statkortet flates ut (ett hero-kort per skjerm er nok — fanen har evo-hero). */
    .kpd-embed .kpd-header {
      background: var(--surface); border-bottom: 1px solid var(--border);
    }
    .kpd-embed .kpd-tilbake-btn { display: none; }
    /* Som fane er tittelen fanens øverste nivå → fanetittel-primitiven
       (Bebas 26), ikke Inter 17. Fullskjerm beholder orgp-topbarens uttrykk. */
    .kpd-embed .kpd-overskrift {
      color: var(--text);
      font-family: 'Bebas Neue', sans-serif; font-size: 26px; font-weight: 400;
      letter-spacing: .03em; text-transform: uppercase; line-height: 1;
    }
    .kpd-embed .kpd-header-tittelblokk { gap: 3px; }
    .kpd-embed .kpd-header-meta { color: var(--text-muted); }
    .kpd-embed .kpd-event-velger {
      border-color: var(--border); background: var(--surface); color: var(--text);
    }
    .kpd-embed .kpd-event-velger:focus { border-color: var(--primary); }
    .kpd-embed .kpd-event-velger option { background: var(--surface); color: var(--text); }
    .kpd-embed .kpd-body { background: transparent; }
    .kpd-embed .kpd-venstre,
    .kpd-embed .kpd-hoyre { box-shadow: none; }



    /* ══════════════════════════════════════════════════════════════════
       DIALOGER (app-core.js: bekreft/varsle/sporTekst, prefiks `dlg-`)

       Erstatter native alert()/confirm()/prompt(). Dialogen ligger direkte
       på <body>, ikke inne i `.modal`, så `.modal button` (0,1,1) treffer
       den ikke — men den globale `button`-regelen gjør det. Alt er derfor
       skopet `.dlg .x` (0,2,0), samme lærdom som dtp- og mb-komponentene.

       Fare-tonen (sletting) er den eneste som får rødt. Native confirm()
       ga ingen forskjell på «slett for alltid» og «last inn på nytt?»,
       og det er nettopp der brukeren trenger å stoppe opp.
       ══════════════════════════════════════════════════════════════════ */
    .dlg-overlay {
      position: fixed; inset: 0; z-index: var(--z-dialog, 100000);
      display: flex; align-items: center; justify-content: center;
      padding: 20px;
      background: rgba(15, 23, 42, 0.55);
      -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
    }
    .dlg-overlay .dlg {
      width: min(420px, 100%);
      background: var(--surface, #fff);
      border: 1px solid var(--border, #E5D8CF);
      border-radius: var(--modal-r, 14px);
      box-shadow: var(--modal-shadow, 0 28px 90px rgba(0,0,0,.38));
      padding: 20px;
      max-height: calc(100vh - 40px);
      overflow-y: auto;
    }
    .dlg .dlg-hode { display: flex; gap: 13px; align-items: flex-start; }
    .dlg .dlg-ikon {
      flex: 0 0 auto; width: 34px; height: 34px; border-radius: 10px;
      display: flex; align-items: center; justify-content: center;
      background: var(--bg, #FAF6F2); color: var(--text-muted, #7A6E68);
    }
    .dlg .dlg-ikon svg { width: 18px; height: 18px; }
    .dlg--fare .dlg-ikon { background: var(--st-feil-bg, #FEE2E2); color: var(--st-feil-tekst, #B91C1C); }
    .dlg--feil .dlg-ikon { background: var(--st-feil-bg, #FEE2E2); color: var(--st-feil-tekst, #B91C1C); }
    .dlg .dlg-hode-tekst { min-width: 0; flex: 1; }
    .dlg .dlg-tittel {
      margin: 3px 0 0; font-size: 15.5px; font-weight: 700;
      color: var(--text, #1D1D1D); line-height: 1.35;
    }
    .dlg .dlg-tekst {
      margin: 7px 0 0; font-size: 13px; line-height: 1.5;
      color: var(--text-muted, #7A6E68); overflow-wrap: anywhere;
    }
    .dlg .dlg-felt { display: block; margin: 15px 0 0; }
    .dlg .dlg-etikett {
      display: block; margin-bottom: 5px; font-size: 11px; font-weight: 700;
      letter-spacing: .04em; text-transform: uppercase; color: var(--text-muted, #7A6E68);
    }
    .dlg .dlg-input {
      width: 100%; box-sizing: border-box;
      padding: var(--felt-pad, 9px 11px); border-radius: var(--felt-r, 9px);
      border: 1.5px solid var(--border, #E5D8CF);
      background: var(--surface, #fff); color: var(--text, #1D1D1D);
      font-family: inherit; font-size: 14px;
    }
    .dlg .dlg-input:focus { outline: none; border-color: var(--primary, var(--primary)); box-shadow: var(--fokus-ring, 0 0 0 3px rgba(var(--primary-tint), .16)); }
    .dlg .dlg-bunn { display: flex; gap: 8px; justify-content: flex-end; margin-top: 19px; }
    .dlg .dlg-knapp {
      padding: 9px 16px; border-radius: 9px; cursor: pointer;
      border: 1.5px solid var(--border, #E5D8CF);
      background: var(--surface, #fff); color: var(--text, #1D1D1D);
      font-family: inherit; font-size: 13px; font-weight: 700;
    }
    .dlg .dlg-knapp:hover { background: var(--bg, #FAF6F2); }
    .dlg .dlg-knapp:focus-visible { outline: none; box-shadow: var(--fokus-ring, 0 0 0 3px rgba(var(--primary-tint), .16)); }
    .dlg .dlg-knapp--primar {
      background: var(--text, #1D1D1D); border-color: var(--text, #1D1D1D); color: #fff;
    }
    .dlg .dlg-knapp--primar:hover { background: #000; }
    .dlg .dlg-knapp--fare {
      background: var(--primary, var(--primary)); border-color: var(--primary, var(--primary)); color: #fff;
    }
    .dlg .dlg-knapp--fare:hover { background: #d81700; }
    @media (prefers-reduced-motion: no-preference) {
      .dlg-overlay .dlg {
        animation: dlgInn calc(var(--anim-varighet, 180ms)) var(--anim-kurve, cubic-bezier(.22,1,.36,1)) backwards;
      }
      @keyframes dlgInn {
        from { opacity: 0; transform: translateY(8px) scale(.97); }
        to   { opacity: 1; transform: none; }
      }
    }
    /* Små skjermer uten mobilappen (nettleser på nettbrett, delelenker):
       full bredde og større treffflater, men fortsatt sentrert modal. */
    @media (max-width: 480px) {
      .dlg .dlg-bunn { flex-direction: column-reverse; }
      .dlg .dlg-knapp { width: 100%; padding: 12px 16px; font-size: 14px; }
      .dlg .dlg-input { font-size: 16px; }
    }

    /* ══════════════════════════════════════════════════════════════════
       DATO/TID-VELGER (app-datotid.js, prefiks `dtp-`)

       Erstatter native date/time/datetime-local på de arrangements-scopede
       flatene. Kontrakt og bruk: se toppen av app-datotid.js.

       Merk: time = firkanter i rutenett, minutt = piller. Med lik form ble
       de seks rader identiske celler, og man så ikke hvor det ene sluttet
       og det andre begynte. Formforskjellen ER informasjonen.

       Alt er token-basert, så mørk modus følger med uten egne regler i
       stil-tema.css — bortsett fra at `.dtp-panel` og `.dtp-bunn` MÅ ha
       eksplisitt `--surface`-bakgrunn: panelet ligger over annet innhold,
       og den sticky bunnlinja skal ikke slippe innhold gjennom.
       ══════════════════════════════════════════════════════════════════ */
    .dtp-skjult {
      position: absolute!important;
      width: 1px;
      height: 1px;
      padding: 0;
      margin: -1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
      white-space: nowrap;
      border: 0;
    }
    .dtp-vert {
      position: relative;
      display: block;
    }

    /* ── Lukket tilstand: ser ut som .felt, oppfører seg som en knapp ── */
    .dtp-knapp {
      display: flex;
      align-items: center;
      gap: 9px;
      width: 100%;
      box-sizing: border-box;
      padding: var(--felt-pad,9px 11px);
      border-radius: var(--felt-r,9px);
      border: 1px solid var(--border,#E5D8CF);
      background: var(--surface,#fff);
      color: var(--text,#1D1D1D);
      font: 500 13px/1.35 Inter,system-ui,sans-serif;
      text-align: left;
      cursor: pointer;
      transition: border-color .12s,box-shadow .12s;
    }
    .dtp-knapp:hover:not(:disabled) {
      border-color: var(--text-muted,#7A6E68);
    }
    .dtp-knapp:disabled {
      opacity: .6;
      cursor: default;
    }
    .dtp-knapp:focus-visible,
    .dtp-vert.apen .dtp-knapp {
      outline: none;
      border-color: var(--primary,var(--primary));
      box-shadow: var(--fokus-ring,0 0 0 3px rgba(var(--primary-tint), .15));
    }
    .dtp-knapp svg {
      flex: 0 0 auto;
      opacity: .5;
    }
    .dtp-knapp-tekst {
      flex: 1;
      min-width: 0;
      display: flex;
      align-items: baseline;
      gap: 6px;
      overflow: hidden;
      white-space: nowrap;
    }
    .dtp-knapp-dato {
      min-width: 0;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    /* Klokkeslettet krymper aldri — det er den presise delen av verdien.
       Datoen er den som skal kortes ned: «Fre 24. j… · 10:00» er brukbart,
       «Fre 24. jul · 10:…» er ikke. */
    .dtp-knapp-tid {
      flex: 0 0 auto;
      font-family: 'JetBrains Mono',ui-monospace,monospace;
      font-weight: 500;
      font-variant-numeric: tabular-nums;
    }
    .dtp-knapp-dato + .dtp-knapp-tid::before {
      content: '·';
      margin-right: 6px;
      color: var(--text-muted,#7A6E68);
    }
    .dtp-knapp.tom .dtp-knapp-tekst {
      color: var(--text-muted,#7A6E68);
      font-weight: 400;
    }
    .dtp-knapp-etter {
      flex: 0 0 auto;
      font: 600 11px/1 Inter,sans-serif;
      color: var(--text-muted,#7A6E68);
      font-variant-numeric: tabular-nums;
      background: var(--bg,#FFF2E9);
      padding: 4px 7px;
      border-radius: 999px;
    }
    .dtp-vert.ugyldig .dtp-knapp {
      border-color: var(--st-feil-tekst,#C62828);
    }
    /* `.modal button, .modal-content button` (0,1,1) i modal-seksjonen over
       slår komponentens egne (0,1,0)-regler — samme felle som mb-komponentene
       gikk i. Alt INNE i panelet er derfor scopet `.dtp-panel .x` (0,2,0),
       som også er sant: de elementene finnes ikke andre steder. Kun den
       lukkede knappen står utenfor panelet og må gjentas her. */
    .modal .dtp-knapp,
    .modal-content .dtp-knapp {
      background: var(--surface,#fff);
      border-color: var(--border,#E5D8CF);
      color: var(--text,#1D1D1D);
    }
    .modal .dtp-knapp:hover:not(:disabled),
    .modal-content .dtp-knapp:hover:not(:disabled) {
      background: var(--surface,#fff);
      border-color: var(--text-muted,#7A6E68);
    }
    .modal .dtp-vert.apen .dtp-knapp,
    .modal-content .dtp-vert.apen .dtp-knapp {
      border-color: var(--primary,var(--primary));
    }

    .dtp-panel {
      position: absolute;
      z-index: var(--z-popover,9000);
      top: calc(100% + 6px);
      left: 0;
      width: 328px;
      max-width: calc(100vw - 24px);
      max-height: min(78vh,640px);
      overflow-y: auto;
      overscroll-behavior: contain;
      background: var(--surface,#fff);
      border: 1px solid var(--border,#E5D8CF);
      border-radius: var(--modal-r,14px);
      box-shadow: var(--modal-shadow,0 18px 48px rgba(66,43,28,.18));
      padding: 12px 12px 0;
      box-sizing: border-box;
    }
    .dtp-panel[hidden] {
      display: none;
    }
    .dtp-panel.opp {
      top: auto;
      bottom: calc(100% + 6px);
    }
    .dtp-panel.hoyre {
      left: auto;
      right: 0;
    }
    .dtp-panel .dtp-seksjon+.dtp-seksjon {
      margin-top: 12px;
      padding-top: 12px;
      border-top: 1px solid var(--border,#E5D8CF);
    }
    .dtp-panel .dtp-merke {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 8px;
      font: 700 10px/1 Inter,sans-serif;
      letter-spacing: .07em;
      text-transform: uppercase;
      color: var(--text-muted,#7A6E68);
      margin-bottom: 8px;
    }
    .dtp-panel .dtp-merke-verdi {
      font-family: 'JetBrains Mono',ui-monospace,monospace;
      font-weight: 500;
      letter-spacing: 0;
      text-transform: none;
      font-size: 11px;
    }

    /* Dagstripe — speiler tidslinjas dagknapper */
    .dtp-panel .dtp-dager {
      display: flex;
      gap: 6px;
      overflow-x: auto;
      scrollbar-width: thin;
      padding-bottom: 2px;
      scroll-snap-type: x proximity;
    }
    .dtp-panel .dtp-dag {
      flex: 0 0 auto;
      scroll-snap-align: start;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 1px;
      min-width: 52px;
      padding: 7px 9px;
      border-radius: 10px;
      border: 1px solid var(--border,#E5D8CF);
      background: var(--surface,#fff);
      color: var(--text,#1D1D1D);
      cursor: pointer;
      transition: background .12s,color .12s,border-color .12s;
    }
    .dtp-panel .dtp-dag-uke {
      font: 700 9.5px/1 Inter,sans-serif;
      letter-spacing: .06em;
      text-transform: uppercase;
      color: var(--text-muted,#7A6E68);
    }
    .dtp-panel .dtp-dag-nr {
      font: 500 15px/1.1 'JetBrains Mono',ui-monospace,monospace;
      font-variant-numeric: tabular-nums;
    }
    .dtp-panel .dtp-dag-mnd {
      font: 600 9px/1 Inter,sans-serif;
      text-transform: uppercase;
      letter-spacing: .05em;
      color: var(--text-muted,#7A6E68);
    }
    .dtp-panel .dtp-dag:hover {
      border-color: var(--text-muted,#7A6E68);
    }
    .dtp-panel .dtp-dag.valgt {
      background: var(--primary,var(--primary));
      border-color: var(--primary,var(--primary));
      color: #fff;
    }
    .dtp-panel .dtp-dag.valgt .dtp-dag-uke, .dtp-panel .dtp-dag.valgt .dtp-dag-mnd {
      color: rgba(255,255,255,.82);
    }
    .dtp-panel .dtp-dag.idag:not(.valgt) .dtp-dag-nr {
      position: relative;
    }
    .dtp-panel .dtp-dag.idag:not(.valgt) .dtp-dag-nr::after {
      content: '';
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      bottom: -3px;
      width: 4px;
      height: 4px;
      border-radius: 50%;
      background: var(--primary,var(--primary));
    }
    .dtp-panel .dtp-dag.utenfor {
      opacity: .55;
    }
    .dtp-panel .dtp-dag--annen {
      justify-content: center;
      gap: 4px;
      color: var(--text-muted,#7A6E68);
      border-style: dashed;
    }
    .dtp-panel .dtp-dag--annen:hover {
      color: var(--primary,var(--primary));
      border-color: var(--primary,var(--primary));
    }

    /* Månedsrutenett (fri dato) */
    .dtp-panel .dtp-mnd-topp {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 8px;
      margin-bottom: 8px;
    }
    .dtp-panel .dtp-mnd-navn {
      font: 700 12.5px/1 Inter,sans-serif;
      color: var(--text,#1D1D1D);
    }
    .dtp-panel .dtp-pil {
      display: grid;
      place-items: center;
      width: 28px;
      height: 28px;
      border-radius: 8px;
      border: 1px solid var(--border,#E5D8CF);
      background: var(--surface,#fff);
      color: var(--text,#1D1D1D);
      cursor: pointer;
    }
    .dtp-panel .dtp-pil:hover {
      background: var(--bg,#FFF2E9);
    }
    .dtp-panel .dtp-rutenett {
      display: grid;
      grid-template-columns: repeat(7,1fr);
      gap: 2px;
    }
    .dtp-panel .dtp-ukenavn {
      font: 700 9.5px/1 Inter,sans-serif;
      letter-spacing: .05em;
      text-transform: uppercase;
      color: var(--text-muted,#7A6E68);
      text-align: center;
      padding: 4px 0;
    }
    .dtp-panel .dtp-celle {
      aspect-ratio: 1;
      display: grid;
      place-items: center;
      border: none;
      background: none;
      border-radius: 8px;
      font: 500 12.5px/1 'JetBrains Mono',ui-monospace,monospace;
      font-variant-numeric: tabular-nums;
      color: var(--text,#1D1D1D);
      cursor: pointer;
    }
    .dtp-panel .dtp-celle:hover {
      background: var(--bg,#FFF2E9);
    }
    .dtp-panel .dtp-celle.blank {
      visibility: hidden;
      cursor: default;
    }
    .dtp-panel .dtp-celle.utenfor-mnd {
      color: var(--text-muted,#7A6E68);
      opacity: .5;
    }
    .dtp-panel .dtp-celle.valgt {
      background: var(--primary,var(--primary));
      color: #fff;
    }
    .dtp-panel .dtp-celle.idag:not(.valgt) {
      box-shadow: inset 0 0 0 1.5px var(--primary,var(--primary));
    }
    .dtp-panel .dtp-celle.eventdag:not(.valgt) {
      background: var(--primary-pill,rgba(var(--primary-tint), .12));
    }

    /* Tid — stort felt + to rutenett */
    .dtp-panel .dtp-tid-topp {
      display: flex;
      align-items: stretch;
      gap: 6px;
      margin-bottom: 10px;
    }
    .dtp-panel .dtp-tid-felt {
      flex: 1;
      min-width: 0;
      box-sizing: border-box;
      padding: 8px 10px;
      border-radius: var(--felt-r,9px);
      border: 1px solid var(--border,#E5D8CF);
      background: var(--surface,#fff);
      color: var(--text,#1D1D1D);
      font: 500 19px/1.15 'JetBrains Mono',ui-monospace,monospace;
      font-variant-numeric: tabular-nums;
      letter-spacing: .02em;
      text-align: center;
    }
    .dtp-panel .dtp-tid-felt:focus {
      outline: none;
      border-color: var(--primary,var(--primary));
      box-shadow: var(--fokus-ring,0 0 0 3px rgba(var(--primary-tint), .15));
    }
    .dtp-panel .dtp-tid-felt::placeholder {
      color: var(--text-muted,#7A6E68);
      opacity: .6;
    }
    .dtp-panel .dtp-steg {
      display: grid;
      place-items: center;
      width: 38px;
      border-radius: var(--felt-r,9px);
      border: 1px solid var(--border,#E5D8CF);
      background: var(--surface,#fff);
      color: var(--text,#1D1D1D);
      cursor: pointer;
      padding: 0;
    }
    .dtp-panel .dtp-steg:hover {
      background: var(--bg,#FFF2E9);
    }

    /* Time og minutt må LESES som to forskjellige ting: timene er firkanter
    i et rutenett, minuttene er piller. Med lik form ble de seks rader
    identiske celler, og man så ikke hvor det ene sluttet og det andre begynte. */
    .dtp-panel .dtp-undermerke {
      font: 700 9.5px/1 Inter,sans-serif;
      letter-spacing: .07em;
      text-transform: uppercase;
      color: var(--text-muted,#7A6E68);
      margin: 0 0 5px;
    }
    .dtp-panel .dtp-grid {
      display: grid;
      gap: 3px;
    }
    .dtp-panel .dtp-grid.timer {
      grid-template-columns: repeat(6,1fr);
    }
    .dtp-panel .dtp-grid.min {
      grid-template-columns: repeat(6,1fr);
      gap: 4px;
    }
    .dtp-panel .dtp-tall {
      padding: 6px 0;
      border: 1px solid transparent;
      border-radius: 7px;
      background: var(--bg,#FFF2E9);
      color: var(--text,#1D1D1D);
      font: 500 12.5px/1 'JetBrains Mono',ui-monospace,monospace;
      font-variant-numeric: tabular-nums;
      cursor: pointer;
      transition: background .1s;
    }
    .dtp-panel .dtp-grid.min .dtp-tall {
      border-radius: 999px;
      background: transparent;
      border-color: var(--border,#E5D8CF);
    }
    .dtp-panel .dtp-tall:hover {
      background: var(--primary-pill,rgba(var(--primary-tint), .12));
    }
    .dtp-panel .dtp-tall.valgt, .dtp-panel .dtp-grid.min .dtp-tall.valgt {
      background: var(--primary,var(--primary));
      border-color: var(--primary,var(--primary));
      color: #fff;
    }
    .dtp-panel .dtp-tall.avvik {
      border-color: var(--primary,var(--primary));
      border-style: dashed;
    }

    /* Varighet */
    .dtp-panel .dtp-chips {
      display: flex;
      flex-wrap: wrap;
      gap: 5px;
    }
    .dtp-panel .dtp-chip {
      padding: 5px 10px;
      border-radius: 999px;
      border: 1px solid var(--border,#E5D8CF);
      background: var(--surface,#fff);
      color: var(--text,#1D1D1D);
      font: 600 11.5px/1 Inter,sans-serif;
      cursor: pointer;
    }
    .dtp-panel .dtp-chip:hover {
      border-color: var(--text-muted,#7A6E68);
    }
    .dtp-panel .dtp-chip.valgt {
      background: var(--primary,var(--primary));
      border-color: var(--primary,var(--primary));
      color: #fff;
    }
    .dtp-panel .dtp-hint {
      margin-top: 7px;
      font: 500 11px/1.4 Inter,sans-serif;
      color: var(--text-muted,#7A6E68);
    }
    .dtp-panel .dtp-hint.advar {
      color: var(--st-feil-tekst,#C62828);
    }

    /* Sticky: «Ferdig» skal ALDRI havne under bretten. Panelet er høyere enn
    en liten telefon, og en primærhandling man må rulle til er ingen
    primærhandling. */
    .dtp-panel .dtp-bunn {
      position: sticky;
      bottom: 0;
      z-index: 1;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 8px;
      margin-top: 12px;
      padding: 10px 0 12px;
      border-top: 1px solid var(--border,#E5D8CF);
      background: var(--surface,#fff);
    }
    .dtp-panel .dtp-lenke {
      border: none;
      background: none;
      padding: 4px 2px;
      color: var(--text-muted,#7A6E68);
      font: 600 11.5px/1 Inter,sans-serif;
      cursor: pointer;
      text-decoration: underline;
      text-underline-offset: 2px;
    }
    .dtp-panel .dtp-lenke:hover {
      color: var(--primary,var(--primary));
    }
    .dtp-panel .dtp-ferdig {
      padding: 7px 14px;
      border-radius: 9px;
      border: none;
      background: var(--primary,var(--primary));
      color: #fff;
      font: 600 12.5px/1 Inter,sans-serif;
      cursor: pointer;
    }

    /* ── Mobil: bunnark i stedet for popover ── */
    @media (max-width:768px) {
      .dtp-bakteppe {
        position: fixed;
        inset: 0;
        z-index: var(--z-popover,9000);
        background: rgba(20,12,8,.42);
        -webkit-backdrop-filter: blur(2px);
        backdrop-filter: blur(2px);
      }
      .dtp-bakteppe[hidden] {
        display: none;
      }
      .dtp-panel {
        position: fixed;
        top: auto;
        bottom: 0;
        left: 0;
        right: 0;
        width: auto;
        max-width: none;
        border-radius: 18px 18px 0 0;
        border-left: none;
        border-right: none;
        border-bottom: none;
        padding: 8px 16px 0;
        max-height: 88dvh;
        overflow-y: auto;
      }
      .dtp-panel.opp, .dtp-panel.hoyre {
        top: auto;
        bottom: 0;
        left: 0;
        right: 0;
      }
      .dtp-panel .dtp-håndtak {
        width: 38px;
        height: 4px;
        border-radius: 999px;
        background: var(--border,#E5D8CF);
        margin: 2px auto 8px;
      }
      .dtp-panel .dtp-tittel {
        font: 400 26px/1 'Bebas Neue',Inter,sans-serif;
        letter-spacing: .06em;
        text-transform: uppercase;
        color: var(--text,#1D1D1D);
        margin: 0 0 14px;
      }

      /* 16 px iOS-gulv: alt under zoomer inn ved fokus */
      .dtp-panel .dtp-tid-felt {
        font-size: 21px;
        padding: 10px;
      }
      .dtp-panel .dtp-grid.timer, .dtp-panel .dtp-grid.min {
        gap: 5px;
      }
      .dtp-panel .dtp-tall {
        padding: 10px 0;
        font-size: 14px;
        border-radius: 9px;
      }
      .dtp-panel .dtp-grid.min .dtp-tall {
        border-radius: 999px;
      }
      .dtp-panel .dtp-dag {
        min-width: 58px;
        padding: 8px 10px;
      }
      .dtp-panel .dtp-celle {
        font-size: 14px;
        border-radius: 9px;
      }
      .dtp-panel .dtp-chip {
        padding: 8px 13px;
        font-size: 12.5px;
      }
      .dtp-panel .dtp-ferdig {
        padding: 11px 20px;
        font-size: 14px;
      }
      .dtp-panel .dtp-steg {
        width: 44px;
      }

      /* Sticky bunn må dekke helt ut til panelkanten, ellers blør innholdet
      gjennom sidegutterne når man ruller. */
      .dtp-panel .dtp-bunn {
        margin: 12px -16px 0;
        padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
      }
    }
    @media (min-width:769px) {
      .dtp-panel .dtp-håndtak, .dtp-panel .dtp-tittel {
        display: none;
      }
    }

    /* ── Varighetsvelger (`vgt-`, samme fil/komponent som dtp) ──────────
       Gjenbruker .dtp-panel/.dtp-bunn/.dtp-merke så det er ÉN paneltype i
       appen. Formspråket er også dtp sitt: minutt = firkanter, sekund =
       piller — den forskjellen er det som gjør at man ser hvor det ene
       rutenettet slutter og det andre begynner.
       Alt inne i panelet er skopet `.dtp-panel .x`, se blokka over. */
    .vgt-knapp {
      display: flex;
      align-items: center;
      gap: 9px;
      width: 100%;
      box-sizing: border-box;
      padding: var(--felt-pad,9px 11px);
      border-radius: var(--felt-r,9px);
      border: 1px solid var(--border,#E5D8CF);
      background: var(--surface,#fff);
      color: var(--text,#1D1D1D);
      font: 500 13px/1.35 Inter,system-ui,sans-serif;
      text-align: left;
      cursor: pointer;
      transition: border-color .12s,box-shadow .12s;
    }
    .vgt-knapp svg {
      width: 16px;
      height: 16px;
      flex: 0 0 auto;
      color: var(--text-muted,#7A6E68);
    }
    .vgt-knapp-tekst {
      font-family: 'JetBrains Mono',ui-monospace,monospace;
      font-variant-numeric: tabular-nums;
    }
    .vgt-knapp.tom .vgt-knapp-tekst {
      font-family: Inter,system-ui,sans-serif;
      color: var(--text-muted,#7A6E68);
    }
    .vgt-knapp:hover:not(:disabled) { border-color: var(--text-muted,#7A6E68); }
    .vgt-knapp:disabled { opacity: .6; cursor: default; }
    .vgt-knapp:focus-visible {
      outline: none;
      border-color: var(--primary,var(--primary));
      box-shadow: var(--fokus-ring,0 0 0 3px rgba(var(--primary-tint), .16));
    }
    /* `.modal button` (0,1,1) maler om knapper inne i modaler — gjentas her
       med modal-spesifisitet, samme felle som dtp- og mb-komponentene. */
    .modal .vgt-knapp,
    .modal-content .vgt-knapp {
      background: var(--surface,#fff);
      border-color: var(--border,#E5D8CF);
      color: var(--text,#1D1D1D);
    }
    .dtp-panel .vgt-topp {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 8px;
      margin-bottom: 10px;
    }
    .dtp-panel .vgt-na {
      font: 500 21px/1 'JetBrains Mono',ui-monospace,monospace;
      font-variant-numeric: tabular-nums;
      color: var(--text,#1D1D1D);
    }
    .dtp-panel .vgt-just { display: flex; gap: 5px; }
    .dtp-panel .vgt-pm {
      padding: 5px 9px;
      border-radius: 7px;
      border: 1px solid var(--border,#E5D8CF);
      background: var(--surface,#fff);
      color: var(--text-muted,#7A6E68);
      font: 600 11px/1 Inter,sans-serif;
      cursor: pointer;
    }
    .dtp-panel .vgt-pm:hover { border-color: var(--text-muted,#7A6E68); color: var(--text,#1D1D1D); }
    .dtp-panel .vgt-chips { display: flex; flex-wrap: wrap; gap: 5px; }
    .dtp-panel .vgt-chip {
      padding: 6px 11px;
      border-radius: 999px;
      border: 1px solid var(--border,#E5D8CF);
      background: transparent;
      color: var(--text,#1D1D1D);
      font: 500 12px/1 'JetBrains Mono',ui-monospace,monospace;
      font-variant-numeric: tabular-nums;
      cursor: pointer;
    }
    .dtp-panel .vgt-chip:hover { border-color: var(--text-muted,#7A6E68); }
    .dtp-panel .vgt-chip.valgt {
      background: var(--primary,var(--primary));
      border-color: var(--primary,var(--primary));
      color: #fff;
    }
    .dtp-panel .vgt-rute {
      display: grid;
      grid-template-columns: repeat(8,1fr);
      gap: 4px;
    }
    .dtp-panel .vgt-celle {
      padding: 7px 0;
      border-radius: 7px;
      border: 1px solid transparent;
      background: var(--bg,#FAF6F2);
      color: var(--text,#1D1D1D);
      font: 500 12.5px/1 'JetBrains Mono',ui-monospace,monospace;
      font-variant-numeric: tabular-nums;
      cursor: pointer;
    }
    .dtp-panel .vgt-celle:hover { border-color: var(--text-muted,#7A6E68); }
    .dtp-panel .vgt-celle.valgt {
      background: var(--primary,var(--primary));
      border-color: var(--primary,var(--primary));
      color: #fff;
    }
    /* Verdi utenfor rutenettet (importert 23 min) — vises heller enn å
       forsvinne stille, samme regel som dtp sitt avvikende minutt. */
    .dtp-panel .vgt-celle.avvik,
    .dtp-panel .vgt-pille.avvik { border-style: dashed; }
    .dtp-panel .vgt-piller { display: flex; flex-wrap: wrap; gap: 5px; }
    .dtp-panel .vgt-pille {
      min-width: 38px;
      padding: 6px 9px;
      border-radius: 999px;
      border: 1px solid var(--border,#E5D8CF);
      background: transparent;
      color: var(--text,#1D1D1D);
      font: 500 12px/1 'JetBrains Mono',ui-monospace,monospace;
      font-variant-numeric: tabular-nums;
      cursor: pointer;
    }
    .dtp-panel .vgt-pille:hover { border-color: var(--text-muted,#7A6E68); }
    .dtp-panel .vgt-pille.valgt {
      background: var(--primary,var(--primary));
      border-color: var(--primary,var(--primary));
      color: #fff;
    }
    .dtp-panel .vgt-fri {
      width: 100%;
      box-sizing: border-box;
      padding: var(--felt-pad,9px 11px);
      border-radius: var(--felt-r,9px);
      border: 1px solid var(--border,#E5D8CF);
      background: var(--surface,#fff);
      color: var(--text,#1D1D1D);
      font: 500 13px Inter,system-ui,sans-serif;
    }
    .dtp-panel .vgt-fri:focus {
      outline: none;
      border-color: var(--primary,var(--primary));
      box-shadow: var(--fokus-ring,0 0 0 3px rgba(var(--primary-tint), .16));
    }
    .dtp-panel .vgt-fri.ugyldig { border-color: var(--st-feil-tekst,#B42318); }
    @media (max-width:768px) {
      .dtp-panel .vgt-rute { grid-template-columns: repeat(6,1fr); }
      .dtp-panel .vgt-celle { padding: 10px 0; }
      .dtp-panel .vgt-pille { padding: 9px 12px; }
      .dtp-panel .vgt-fri { font-size: 16px; }
    }
    @media (prefers-reduced-motion:no-preference) {
      .dtp-panel:not([hidden]) {
        animation: dtpInn var(--anim-tid-hurtig,.18s) var(--anim-kurve,cubic-bezier(.2,.8,.3,1)) backwards;
      }
      @keyframes dtpInn {
        from {
          opacity: 0;
          transform: translateY(calc(var(--anim-avstand,10px)*-.5));
        }
      }
      @media (max-width:768px) {
        .dtp-panel:not([hidden]) {
          animation: dtpArkInn var(--anim-tid-panel,.26s) var(--anim-kurve,cubic-bezier(.2,.8,.3,1)) backwards;
        }
        @keyframes dtpArkInn {
          from {
            transform: translateY(16px);
            opacity: .4;
          }
        }
      }
    }
