@charset "UTF-8";
  /* =========================================================
     ARYTMI · v4 — tur-forberedelses-flowet
     VIGTIGT: @charset-linjen SKAL stå allerførst. Klassenavne som
     .knap.primær og .dæmpet indeholder æ/ø/å, og servere der sender
     text/css uden charset (fx python -m http.server) får browseren til
     at læse filen som latin-1 — så matcher de selektorer ingenting,
     og halvdelen af designet forsvinder lydløst.
     Palette fra logoet: kobber, bark, oliven, sølvgrå, creme
     ========================================================= */

  /* Appens egne skrifter (11/8). Før lånte appen skrift fra maskinen, så den
     så forskellig ud på Mac, Windows og Android — og overskrifter og tal endte
     som TO forskellige skrifter på Windows. Nu er de pinnet.
     Variable fonte: vægt-INTERVALLET i font-weight er det, der gør at
     font-weight:650 (brugt 5 steder) rent faktisk rammer 650 og ikke 700.
     Relativ sti uden skråstreg foran — så virker de også på demo-linket,
     der ligger i en undermappe. Licenser ligger i fonts/. */
  @font-face{
    font-family:'Fraunces';
    font-style:normal;
    font-weight:300 700;
    font-display:swap;
    src:url('fonts/fraunces.woff2') format('woff2');
  }
  @font-face{
    font-family:'Inter';
    font-style:normal;
    font-weight:400 700;
    font-display:swap;
    src:url('fonts/inter.woff2') format('woff2');
  }

  /* PALETTEN — hver farve, appen bruger, står her og kun her (samlet 27/9).
     Resten af filen henter dem med var(--p-…). Et nyt farvesæt skiftes ved at
     rette værdierne nedenfor. Temaerne (morgen/dag/nat) længere nede peger på
     paletten og flytter ikke på den.
     Navnene: brandfarverne ved navn, resten efter familie og lyshed —
     "lys-1" er den lyseste af de lyse. -rgb er samme farve til rgba(). */
  :root{
    /* DEN NYE PALETTE (Oliivia 27/9). Rollerne står ved tokens nedenfor.
       Kontrast målt på koderne: brun på creme 11,8 · brun på sand 10,1 ·
       brun på CTA 5,6 · rust på creme 6,1 · terracotta på creme 3,2 (kun
       grafik/ikoner) · petrol på creme 4,4 (kun ikoner/streger). */
    --p-deep-brown:#4a2417; --p-deep-brown-rgb:74,36,23;
    --p-warm-cream:#f7efe4; --p-warm-cream-rgb:247,239,228;
    --p-soft-sand:#e9ddcf; --p-soft-sand-rgb:233,221,207;
    --p-terracotta:#c86f3c;   /* ikke i brug: accenten er rust (Kennet 27/9) */
    --p-cta:#e8935a; --p-cta-rgb:232,147,90;
    --p-rust:#8e4333;
    --p-petrol:#5f746f; --p-petrol-rgb:95,116,111;
    --p-bark:#3a3227; --p-bark-rgb:58,50,39;
    --p-bark-moerk:#241f18; --p-bark-moerk-rgb:36,31,24;
    --p-bark-tekst:#2e2a24;
    --p-brun-1:#8a5f3e;
    --p-brun-2:#8a5a33;
    --p-brun-3:#8a6320;
    --p-brun-4:#6e4f2a;
    --p-brun-5:#6b4526;
    --p-brun-6:#5b4a2e;
    --p-brun-7:#5e3729;
    --p-brun-8:#4a4238;
    --p-brun-9:#5c4022;
    --p-brun-10:#453d32;
    --p-brun-11:#463c30;
    --p-brun-12:#3b342b;
    --p-brun-13:#2a231b;
    --p-brun-14:#242019;
    --p-brun-15:#241f19;
    --p-brun-16:#201c16; --p-brun-16-rgb:32,28,22;
    --p-brun-17:#1e1a14; --p-brun-17-rgb:30,26,20;
    --p-brun-18:#1e1912; --p-brun-18-rgb:30,25,18;
    --p-brun-19:#1b1712;
    --p-brun-20:#191713; --p-brun-20-rgb:25,23,19;
    --p-brun-21:#181510; --p-brun-21-rgb:24,21,16;
    --p-brun-22:#14110d; --p-brun-22-rgb:20,17,13;
    --p-brun-23:#14110c; --p-brun-23-rgb:20,17,12;
    --p-brun-24:#14100b; --p-brun-24-rgb:20,16,11;
    --p-brun-25:#120f0b; --p-brun-25-rgb:18,15,11;
    --p-creme:#eceae3; --p-creme-rgb:236,234,227;
    --p-creme-lys:#faf9f5;
    --p-gran:#354a3e; --p-gran-rgb:53,74,62;
    --p-gran-lys:#e2ece5;
    --p-gran-mid:#4f6b58;
    --p-groen-1:#e3edc7;
    --p-groen-2:#c9d5cd;
    --p-groen-3:#9ec2ab;
    --p-groen-4:#7aa388; --p-groen-4-rgb:122,163,136;
    --p-groen-5:#5c6b48;
    --p-groen-6:#4d5c3a;
    --p-groen-7:#3c5546;
    --p-groen-8:#232d27; --p-groen-8-rgb:35,45,39;
    --p-graa-1:#b9beb6;
    --p-graa-2:#a6a894;
    --p-graa-3:#9a948a;
    --p-graa-4:#8a8378;
    --p-graa-5:#6b675c;
    --p-graa-6:#6a655b;
    --p-graa-7:#57534a;
    --p-hvid:#ffffff; --p-hvid-rgb:255,255,255;
    --p-kobber:#b0794e; --p-kobber-rgb:176,121,78;
    --p-kobber-1:#f6e3b4;
    --p-kobber-2:#e9dcc0;
    --p-kobber-3:#eaddbe;
    --p-kobber-4:#e8d5ae; --p-kobber-4-rgb:232,213,174;
    --p-kobber-5:#e8cfa3; --p-kobber-5-rgb:232,207,163;
    --p-kobber-6:#e4c9a4;
    --p-kobber-7:#e0a48d;
    --p-kobber-8:#cdb591;
    --p-kobber-9:#d0a060; --p-kobber-9-rgb:208,160,96;
    --p-kobber-lys:#d2a97e; --p-kobber-lys-rgb:210,169,126;
    --p-lys-1:#fcfbf7; --p-lys-1-rgb:252,251,247;
    --p-lys-2:#fdfbf4;
    --p-lys-3:#fdf6f0;
    --p-lys-4:#faf8f2; --p-lys-4-rgb:250,248,242;
    --p-lys-5:#f9f5e9;
    --p-lys-6:#f4f2ec;
    --p-lys-7:#f6f3ea; --p-lys-7-rgb:246,243,234;
    --p-lys-8:#f4f1e9;
    --p-lys-9:#f2efe6; --p-lys-9-rgb:242,239,230;
    --p-lys-10:#f4efe4;
    --p-lys-11:#f6f0e0;
    --p-lys-12:#f6ecdf;
    --p-lys-13:#f6e8d8;
    --p-lys-14:#e8e4da;
    --p-lys-15:#e7e3d9;
    --p-lys-16:#e8e2d5;
    --p-lys-17:#e2ead2;
    --p-lys-18:#f0e2cb;
    --p-lys-19:#eadfcd;
    --p-lys-20:#e4e0d3;
    --p-oliven:#5f6353;
    --p-oliven-lys:#8b8d7a;
    --p-roed-1:#8c3a2e;
    --p-roed-2:#7d4938;
    --p-roed-3:#7a3227;
    --p-roed-4:#74301f;
    --p-sand-1:#dfdbd0;
    --p-sand-2:#ddd8cb;
    --p-sand-3:#d9d3c5;
    --p-sand-4:#d8d4c6;
    --p-sand-5:#cfc8b9;
    --p-sand-6:#cdc6b3;
    --p-sand-7:#c9c2b0;
    --p-sand-8:#9b917a;
    --p-sand-9:#7d7261;
    --p-sort:#000000; --p-sort-rgb:0,0,0;
  }
  :root{
    /* Fallback-stakkene er præcis dem, appen brugte før — går en fontfil tabt,
       ser appen ud som den plejede i stedet for at gå i stykker. */
    --skrift-display:'Fraunces',"Iowan Old Style","Palatino Linotype","Palatino","Georgia",serif;
    --skrift-brød:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
    --gran:var(--p-deep-brown);          /* mørk bark — primær */
    --gran-mørk:color-mix(in srgb,var(--p-deep-brown) 80%,#000);
    --fjord:color-mix(in srgb,var(--p-deep-brown) 80%,var(--p-warm-cream));         /* dæmpet oliven */
    --fjord-lys:color-mix(in srgb,var(--p-deep-brown) 60%,var(--p-warm-cream));
    --rav:var(--p-rust);            /* accenten er Warm Rust Red (Kennet 27/9) */           /* kobber — logoets accent */
    --rav-lys:color-mix(in srgb,var(--p-rust) 55%,var(--p-warm-cream));
    --rav-tekst:var(--p-rust);     /* accent som TEKST — terracotta er for svag til lille tekst */
    --cta:var(--p-cta);            /* hovedknapperne */
    --paa-cta:var(--p-deep-brown); /* 5,6:1 — hvid på orange giver kun 2,4 */
    --nav-flade:var(--p-deep-brown); /* bundmenuen er en mørk sektion — dækkende, se .bundnav */
    /* Turens tre faser (TUR_FASER i app.js): planlægning, pakning, start tur. */
    --fase-plan:var(--p-petrol); --fase-pak:var(--p-rust); --fase-afsted:var(--p-deep-brown);
    --nat:var(--p-brun-14);
    /* ---- ankerfarven (14/8) ----
       Appen havde ingen kølig tone overhovedet: kobber, creme og bark trækker
       alle samme vej, og derfor læses hele appen som blød uden modvægt.
       --anker er jeres grønne, kørt dybere ned og drejet et par grader mod blå.
       Den er IKKE --fjord: #5f6353 er for lyst og for varmt (gulgrønt) til at
       kunne være modvægt — det ligger i samme temperaturfamilie som kobberet.
       --fjord bliver som sekundær; --anker er den, fakta og struktur står i.
       Kontrast MÅLT mod appens tre bunde: bund 9,8 · flade 11,2 · kort 11,2.
       --anker-mid rammer 6,3 på flade og kort — over kravet på 4,5. */
    /* Justeret 14/8 fra #2F3A34: den lå kun 19 RGB-enheder fra barken #3A3227,
       og ved afkrydsningsfelt-størrelse kunne øjet ikke skelne dem — den var
       teknisk grøn, ikke synligt grøn. #354A3E ligger 34 fra barken, altså
       næsten dobbelt så langt, og er stadig mørk og kølig.
       MÅLT: 7,9 på bund · 9,1 på flade · 9,1 på kort · creme ovenpå 8,3. */
    --anker:var(--p-deep-brown);
    --anker-mid:var(--p-petrol);     /* ikoner og understøttende tal på lys bund — målt 5,6:1 */
    --anker-lys:color-mix(in srgb,var(--p-petrol) 14%,var(--p-warm-cream));     /* fladen bag et faktafelt */
    /* ---- tre farver, der FOER kun fandtes i lys udgave (KN 15/9) ----
       Kennet: "Der er altsaa flere steder i appen hvor man ikke kan se
       skrifttypen pga temaets farver."

       Maalt med en kontrastproeve paa fem skaerme i begge moerke temaer.
       Det var ikke 181 spredte fejl, men FIRE farver brugt mange steder:

         --anker som TEKST   1,12:1   "Kort fortalt", faciliteter, taelleren
         .knap.stille        1,60:1   "Inviter en ven med"
         .knap.stille.fare   1,68:1   "Annullér turen"
         --fjord             1,98:1   tjeklistens navne, "Her er du"

       Kravet er 4,5:1. 1,12 betyder i praksis usynlig.

       --anker kan ikke bare vendes: den er OGSAA baggrund elleve steder
       (tjekboksen, den valgte chip, segmentknappen). Derfor en egen token
       til tekstbrugen, som i lys er praecis --anker og i moerke bliver
       --anker-mid, der allerede fandtes og allerede er temasat. */
    --anker-tekst:var(--anker);
    --stille:color-mix(in srgb,var(--p-deep-brown) 80%,var(--p-warm-cream));        /* den stille knaps tekst */
    --fare:var(--p-rust);          /* den stille knap, naar handlingen fortryder noget */
    /* Blaek til flader, der er LYSE I ALLE TEMAER (KN 15/9).
       Startpillen har en fast creme-gradient som baggrund, men tog sin
       tekstfarve fra --gran - og --gran vender til lys i de moerke temaer.
       Resultat: lys tekst paa lys flade, "NY ARYTME" usynlig om aftenen.
       Den her token maa ALDRIG overskrives i et tema. Er fladen fast, skal
       blaekket vaere det ogsaa. */
    --paa-lys-flade:var(--p-deep-brown);
    /* ---- hvor ankerfarven bruges (rettet 14/8 efter KN's indvending) ----
       Første udgave brugte den KUN på fakta-værdier. Men appens faktafelter er
       næsten tomme (underlag: 0 af 19 steder, faciliteter kun delvist skrevet),
       så modvægten havde reelt ét element at stå på i hele overblikket — og
       var derfor usynlig. Det var en designfejl, ikke en implementeringsfejl.
       Reglen nu, og den skal holdes:
         --anker  = TILSTAND OG STRUKTUR. Det valgte, det klarede, det der
                    skrider frem: primærknap, afkrydsning, valgte segmenter og
                    chips, aktive trin-prikker, fremdriftsbjælker, fakta.
         --gran   = TEKST. Overskrifter og brødtekst. Røres ikke.
         --rav    = ACCENT. Logoets kobber, EKG'en, ikoner, det der skal
                    fange øjet ét sted ad gangen. Røres ikke.
       Sådan virker farven, uanset om nogen har skrevet data ind endnu. */
    --bund:var(--p-warm-cream);          /* sølvgrå creme */
    --flade:var(--p-soft-sand);
    --flade-dyb:color-mix(in srgb,var(--p-deep-brown) 10%,var(--p-soft-sand));
    --tekst:var(--p-deep-brown);
    /* Var #8e8a7f: 3,3:1 mod fladen og under kravet på 4,5:1 — brugt i småtekst
       18 steder. #6b675c klarer 4,5:1 på ALLE tre bunde appen bruger
       (bund 4,7 · flade 5,4 · kort 5,1). Målt, ikke skønnet. (13/8) */
    --dæmpet:color-mix(in srgb,var(--p-deep-brown) 75%,var(--p-warm-cream));
    --linje:color-mix(in srgb,var(--p-deep-brown) 18%,var(--p-soft-sand));
    --radius:18px;           /* var 26px — se kort-blokken nedenfor */
    --radius-m:14px;         /* kompakte kort og knap-kort */

    /* ---- ét kort i stedet for syv (13/8) ----
       Appen havde syv næsten ens matterede flader: tre gennemsigtigheder, to
       slørings-styrker, fire hjørneafrundinger og fem skygge-opskrifter til
       samme idé. Forskellene var for små til at ses og store nok til, at det
       aldrig føltes helt roligt. Nu ét sæt værdier, som alle syv trækker på.
       Vil man ændre kortenes udseende, sker det HER — ikke syv steder. */
    /* ---- fra sky til flade (14/8) ----
       Kortet svævede: 60 % gennemsigtigt, 16px sløring, en hvid inderkant og
       26px hjørner. Ingenting i appen havde en kant, man kunne se, og dét er
       det, der læses som "blødt". Samme farver, samme indhold — men nu ligger
       kortet ned på siden i stedet for at flyde over den.
       Vær opmærksom: ved 86 % dækker fladen reelt landskabet bag kortet
       (blandet giver den rgb(250,249,244) — praktisk talt --flade). Det er
       bevidst: landskabet skal ses mellem kortene, ikke igennem dem.
       Skal det tilbage, er det tallet her, der skrues ned — ikke sløringen.
       Ét sted at ændre, alle syv korttyper følger med. */
    --kort-flade:rgba(var(--p-soft-sand-rgb),.86);
    --kort-kant:color-mix(in srgb,var(--p-deep-brown) 18%,var(--p-soft-sand));
    --kort-sløring:blur(7px) saturate(1.04);
    --kort-skygge:0 4px 14px rgba(var(--p-deep-brown-rgb),.07);
    --kort-skygge-løft:0 10px 26px rgba(var(--p-deep-brown-rgb),.12);
    --overskrift:var(--gran);   /* se h1,h2,h3 nedenfor — må flyttes af temaet */
    /* --paa-lys flytter sig ALDRIG. Den er til tekst, der står på en flade,
       som selv bliver lys i alle temaer: ordet inde i den runde creme-knap,
       .knap.lys, .kør-knap, aktiveringskoden, den valgte ejer-knap. --gran
       vender om, når appen bliver mørk; disse seks steder må ikke følge med,
       for så skriver de cremefarvet på creme. */
    --paa-lys:var(--p-deep-brown);
    /* Fladen i et indtastningsfelt. Stod som rgba(255,255,255,.55) to steder
       og blev en lys klump paa en moerk flade. */
    --felt-flade:rgba(var(--p-hvid-rgb),.55);
  }

  /* =========================================================
     DØGNETS LYS I HELE APPEN (KN 11/9)
     =========================================================
     Forsidens landskab har fulgt solen siden i dag. Her følger resten af
     appen med, i de SAMME fire trin som landskabets egne paletter:
     klarMorgen · klarDag · klar (aften) · klarNat. appTema() i app.js
     sætter data-tema på .telefon; sceneLys() ejer beregningen.

     :root ovenfor ER dagens sæt. Derfor har klarDag og 'lys' ingen regler
     hernede — de ER standarden. Det betyder også, at appen falder tilbage
     til nøjagtig sit nuværende udseende, hvis JavaScript'et ikke når at
     sætte data-tema. Et tema, der fejler, skal fejle lyst og læsbart.

     Kun FLADER, TEKST og LINJER flytter sig. Kobber og anker er accenter og
     bliver, hvor de er — ellers mister appen sin identitet, når det bliver
     mørkt. --gran flyttes aldrig; se kommentaren ved h1,h2,h3.

     ⚠️ IKKE FÆRDIGT. Appen har 181 unikke farver skrevet direkte i reglerne
     uden om disse tokens. De følger IKKE med endnu, og de vil stå lyse på en
     mørk flade, til de er hentet ind. Det er næste etape, og den tages skærm
     for skærm med øjnene på. Står noget lyst og forkert, er det dét, det er
     — ikke en fejl i motoren her. */
  .telefon[data-tema="klarMorgen"]{
    --bund:color-mix(in srgb,var(--p-warm-cream) 70%,#fff);
  }
  .telefon[data-tema="klar"]{
    /* AFTENEN I DEN NYE PALETTE (27/9). Samme opskrift som natten nedenfor,
       men bunden er Deep Brown kørt kortere mod sort — lysere og varmere end
       natten. På den lysere bund klarer Terracotta sig ikke som TEKST
       (3,9:1 på kort), så --rav-tekst er Terracotta blandet mod creme; som
       grafik (--rav) holder den ren Terracotta over 3:1 overalt.
       --paa-lys, --paa-lys-flade og --paa-cta sættes IKKE her — se natten.
       Målt på koderne (bund #2c160e · flade #381b11 · kort #3b261e):
       creme 15,0/13,8/12,4 · dæmpet 6,5/6,0/5,4 · rav-tekst 6,1/5,6/5,0 ·
       terracotta som grafik 4,7/4,4/3,9 · lys petrol 7,3/6,7/6,0 ·
       sand 6,8/6,3/5,7 · fare 6,7/6,2/5,6 · brun på CTA 5,6. */
    --gran-mørk:color-mix(in srgb,var(--p-deep-brown) 35%,#000);
    --rav:var(--p-terracotta);
    --rav-tekst:color-mix(in srgb,var(--p-terracotta) 80%,var(--p-warm-cream));
    --rav-lys:color-mix(in srgb,var(--p-terracotta) 60%,var(--p-warm-cream));
    --anker:color-mix(in srgb,var(--p-petrol) 85%,#000);
    --nav-flade:color-mix(in srgb,var(--p-deep-brown) 40%,#000);
    --fase-plan:var(--anker); --fase-pak:var(--p-rust);
    --fase-afsted:color-mix(in srgb,var(--p-deep-brown) 70%,var(--p-warm-cream));
    --gran:var(--p-warm-cream); --felt-flade:rgba(var(--p-warm-cream-rgb),.07);
    --bund:color-mix(in srgb,var(--p-deep-brown) 60%,#000);
    --flade:color-mix(in srgb,var(--p-deep-brown) 76%,#000);
    --flade-dyb:rgba(var(--p-warm-cream-rgb),.16);
    --tekst:var(--p-warm-cream); --overskrift:var(--p-warm-cream);
    --dæmpet:rgba(var(--p-warm-cream-rgb),.62);
    --linje:rgba(var(--p-warm-cream-rgb),.15);
    --kort-flade:rgba(var(--p-warm-cream-rgb),.075); --kort-kant:rgba(var(--p-warm-cream-rgb),.14);
    --kort-skygge:0 4px 14px rgba(var(--p-sort-rgb),.30);
    --kort-skygge-løft:0 10px 26px rgba(var(--p-sort-rgb),.40);
    --anker-lys:rgba(var(--p-petrol-rgb),.24);
    --anker-mid:color-mix(in srgb,var(--p-petrol) 55%,var(--p-warm-cream));
    --fjord-lys:color-mix(in srgb,var(--p-soft-sand) 62%,var(--bund));
    /* De fire fra 15/9. --fjord bruges ALDRIG som baggrund (kontrolleret),
       saa den kan vendes direkte her i stedet for at skulle have en egen
       teksttoken som --anker. */
    --anker-tekst:var(--anker-mid);
    --fjord:color-mix(in srgb,var(--p-soft-sand) 70%,var(--bund));
    --stille:rgba(var(--p-warm-cream-rgb),.80);
    --fare:color-mix(in srgb,var(--p-rust) 50%,var(--p-warm-cream));
  }
  .telefon[data-tema="klarNat"]{
    /* NATTEN I DEN NYE PALETTE (27/9). Bunden er Deep Brown kørt ned mod sort,
       teksten Warm Cream. Rust er for mørk på den bund (2,7:1), så accenten
       bliver Terracotta — paletten har den netop til det. Ankeret er Petrol,
       en tak dybere, så den lyse tekst på valgte chips holder.
       --paa-lys, --paa-lys-flade og --paa-cta sættes IKKE her: de står på
       flader, der er lyse i alle temaer, og tager :root's brune.
       Målt på koderne (bund #1b0d08 · flade #26130c · kort #271914):
       creme 16,6/15,6/14,9 · dæmpet 6,8/6,4/6,1 · terracotta 5,2/4,9/4,7 ·
       lys petrol 8,1/7,6/7,2 · sand 7,3/6,9/6,6 · fare 7,5/7,0/6,7 ·
       lys tekst på ankeret 5,5 · på Start tur 5,4 · på rust 6,6 ·
       brun på CTA 5,6. */
    --gran-mørk:color-mix(in srgb,var(--p-deep-brown) 25%,#000);
    --rav:var(--p-terracotta); --rav-tekst:var(--p-terracotta);
    --rav-lys:color-mix(in srgb,var(--p-terracotta) 60%,var(--p-warm-cream));
    --anker:color-mix(in srgb,var(--p-petrol) 85%,#000);
    --nav-flade:color-mix(in srgb,var(--p-deep-brown) 28%,#000);
    --fase-plan:var(--anker); --fase-pak:var(--p-rust);
    --fase-afsted:color-mix(in srgb,var(--p-deep-brown) 70%,var(--p-warm-cream));
    --gran:var(--p-warm-cream); --felt-flade:rgba(var(--p-warm-cream-rgb),.055);
    --bund:color-mix(in srgb,var(--p-deep-brown) 36%,#000);
    --flade:color-mix(in srgb,var(--p-deep-brown) 52%,#000);
    --flade-dyb:rgba(var(--p-warm-cream-rgb),.13);
    --tekst:var(--p-warm-cream); --overskrift:var(--p-warm-cream);
    --dæmpet:rgba(var(--p-warm-cream-rgb),.62);
    --linje:rgba(var(--p-warm-cream-rgb),.12);
    --kort-flade:rgba(var(--p-warm-cream-rgb),.055); --kort-kant:rgba(var(--p-warm-cream-rgb),.11);
    --kort-skygge:0 4px 14px rgba(var(--p-sort-rgb),.42);
    --kort-skygge-løft:0 10px 26px rgba(var(--p-sort-rgb),.52);
    --anker-lys:rgba(var(--p-petrol-rgb),.22);
    --anker-mid:color-mix(in srgb,var(--p-petrol) 55%,var(--p-warm-cream));
    --fjord-lys:color-mix(in srgb,var(--p-soft-sand) 55%,var(--bund));
    /* De fire fra 15/9. --fjord bruges ALDRIG som baggrund (kontrolleret),
       saa den kan vendes direkte her i stedet for at skulle have en egen
       teksttoken som --anker. */
    --anker-tekst:var(--anker-mid);
    --fjord:color-mix(in srgb,var(--p-soft-sand) 70%,var(--bund));
    --stille:rgba(var(--p-warm-cream-rgb),.80);
    --fare:color-mix(in srgb,var(--p-rust) 50%,var(--p-warm-cream));
  }
  /* Skiftet sker få gange i døgnet, men kan ramme en åben skærm. Så skal det
     ske roligt — og stå helt stille for den, der har bedt om mindre bevægelse. */
  .telefon{transition:background-color .8s ease}
  @media(prefers-reduced-motion:reduce){ .telefon{transition:none} }
  *{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
  html,body{height:100%}
  body{
    font-family:var(--skrift-brød);
    background:var(--p-sand-4);color:var(--tekst);display:flex;justify-content:center;
  }
  /* color hører HER og ikke kun på body: temaets tokens sættes på .telefon,
     og body ligger uden for den. Uden denne linje arver al tekst uden egen
     klasse dagens mørke farve og forsvinder på en mørk flade. */
  /* APPEN TILPASSER SIG TELEFONEN (Kennet 27/9, første iPhone-byg).
     Rammen på 430 × 932 er prototypens telefon-på-en-computer. På en rigtig
     telefon fylder appen hele skærmen, uanset størrelse — ellers står der en
     grå stribe i kanten af en 440 punkter bred iPhone Pro Max, og bunden
     stopper 24 punkter før skærmen gør.
     --top er det, telefonen selv melder som optaget af ur og kameraø. Den er
     0 på Android (systemet tegner bjælken uden for appen) og i en almindelig
     browser, så intet flytter sig dér.
     ⚠️ PÅ IPHONE sættes --top inline på <html> af ArytmiBridgeViewController.swift
     (4/10): webvisningen meldte kun ~3 punkter, og alt lå oveni uret. */
  :root{--skaerm:min(100dvh,932px);--top:env(safe-area-inset-top,0px);--bund-luft:env(safe-area-inset-bottom,0px)}
  /* iOS lader hele webvisningen gynge og trække, selvom appen scroller inde
     i .indhold. Siden selv skal stå stille. */
  html,body{overscroll-behavior:none}
  /* ---------- træk ned for at opdatere (28/9) ----------
     Rullefladen gynger ikke selv (overscroll-behavior), så det er appens
     egen bevægelse, man ser: indholdet giver efter, og pulsen kommer ned
     ovenfra. Den tegner sig op, mens man trækker, bliver kobber ved
     tærsklen og slår, mens der hentes. */
  .indhold{overscroll-behavior-y:none;transition:transform .34s cubic-bezier(.2,.7,.3,1)}
  .træk-opdater{position:absolute;left:50%;top:calc(var(--top) - 44px);z-index:40;pointer-events:none;
    --træk:0px;--træk-andel:0;
    transform:translate(-50%,var(--træk));opacity:var(--træk-andel);
    transition:transform .34s cubic-bezier(.2,.7,.3,1),opacity .25s ease}
  .træk-ring{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;
    background:var(--flade);border:1px solid var(--linje);color:var(--dæmpet);
    box-shadow:0 6px 18px rgba(var(--p-sort-rgb),.28);
    transform:rotate(calc(var(--træk-andel) * 180deg - 180deg)) scale(calc(.7 + var(--træk-andel) * .3));
    transition:color .2s,border-color .2s,background .2s}
  .træk-ring svg{width:20px;height:20px}
  .træk-opdater.klar .træk-ring,.træk-opdater.opdaterer .træk-ring{color:var(--rav-lys);border-color:var(--rav)}
  .træk-opdater.opdaterer .træk-ring{transform:none;animation:trækSlag .9s ease-in-out infinite}
  @keyframes trækSlag{0%,100%{transform:scale(1)}18%{transform:scale(1.14)}36%{transform:scale(.96)}54%{transform:scale(1.06)}}
  @media(prefers-reduced-motion:reduce){.træk-opdater.opdaterer .træk-ring{animation:none}}

  /* Et tryk er et tryk — ingen ventetid på, om det var et dobbelttryk for
     at zoome. Appen zoomer ikke, så den pause var ren forsinkelse. */
  html{touch-action:manipulation}
  /* Det, man trykker på, giver efter under fingeren — også de ting, der
     ikke er .knap. Det er den lille bevægelse, der gør, at et tryk mærkes,
     før den næste skærm er der. */
  .navpunkt .ik,.kal-dag span,.rejse-dato,.forslag-række,.liste-punkt[onclick]{transition:transform .14s ease}
  .navpunkt:active .ik{transform:scale(.88)}
  .kal-dag:not(:disabled):active span{transform:scale(.86)}
  .rejse-dato:active,.liste-punkt[onclick]:active{transform:scale(.985)}
  .telefon{width:100%;max-width:430px;height:var(--skaerm);min-height:0;background:var(--bund);color:var(--tekst);
    display:flex;flex-direction:column;position:relative;overflow:hidden;
    box-shadow:0 0 70px rgba(var(--p-sort-rgb),.18)}
  /* EFTER .telefon-reglen ovenfor, ellers vinder dens max-width:430px. */
  @media(max-width:500px){
    :root{--skaerm:100dvh}
    .telefon{max-width:none;box-shadow:none}
  }
  /* PÅ HJEMMESKÆRMEN (K22, Kennets iPhone 6/10): en creme bjælke under
     bundmenuen, ca. 60 punkter høj. Den ligger UDEN FOR websiden: iPhone giver
     siden 812 af skærmens 874 punkter og fylder resten selv med sidens
     baggrundsfarve, som den husker fra opstarten (WebKit-fejl 301994). Intet
     element kan tegne dér.
     To forsøg samme aften gjorde appen højere (dvh + statuslinje, så en fast
     ramme) — begge skød bundmenuen ned i det døde felt, hvor den blev skåret
     over. Gør det ikke igen. Den eneste knap er FARVEN: siden får bundmenuens
     farve, så feltet går i ét med menuen. --side-bund sættes af appTema(),
     fordi menuens farve følger døgnets lys. Kun på hjemmeskærmen; i en browser
     står siden, som den altid har gjort. */
  @media(display-mode:standalone){
    html,body{background:var(--side-bund,var(--p-deep-brown))}
  }
  /* Og hjem-stregen står i det døde felt, ikke over siden — så skal
     bundmenuen ikke holde plads til den. Uden denne linje blev menuen
     34 punkter højere oveni feltets 60 (Kennet 6/10: "alt for høj").
     Klassen sættes af målDødtFelt() i app.js, kun når feltet er målt. */
  html.doedt-felt{--bund-luft:0px}
  .indhold{flex:1;overflow-y:auto;overflow-x:hidden;padding:0 0 118px;scroll-behavior:smooth;position:relative;z-index:1}
  .side{padding:22px 22px 0}
  /* Fri af uret og kameraøen. En hero øverst på skærmen trækkes op under
     dem igen — billedet skal gå helt til kanten — og dens tekst rykkes ned. */
  .indhold{padding-top:var(--top)}
  .indhold > .hero:first-child,.indhold > .ned-hero:first-child{margin-top:calc(-1 * var(--top))}
  .indhold > .hero:first-child .overlay{padding-top:calc(20px + var(--top))}
  /* Nedtællingen og loggen har deres egen hero (.ned-hero). Den blev trukket
     op under uret sammen med de andre, men teksten fulgte ikke med ned. */
  .indhold > .ned-hero:first-child .ned-lag{padding-top:calc(20px + var(--top))}
  /* HEADEREN BAG URET (OD 4/10: "en header så ur, batteri osv ikke kommer
     til at ligge oveni app indholdet"). .indhold er selve rullefladen, så
     dens margen i toppen ruller med — og så gled teksten op under uret.
     Et fast bånd i statuslinjens højde, i bundmenuens farve, så appen har
     en ramme i begge ender. ::after, fordi ::before er gløden længere nede.
     Ikonerne er lyse (SystemBars style DARK i
     capacitor.config.js). I en browser er --top 0, og båndet findes ikke. */
  .telefon::after{content:'';position:absolute;top:0;left:0;right:0;height:var(--top);
    background:var(--nav-flade);z-index:45;pointer-events:none}

  /* font-optical-sizing:auto er browserens standard for variable fonte: Fraunces
     tegner selv 64px-nedtællingen anderledes end en 15px-etiket. Derfor ingen
     manuel opsz nogen steder. lining-nums holder tallene på linje — appen bruger
     serifen til rene tal flere steder (nedtælling, radius, tæller). */
  /* --overskrift, ikke --gran (KN 11/9). --gran har to jobs: den er
     overskrifternes farve OG den mørke farve, der skrives MED på lyse flader
     — fx ordet inde i den runde creme-startknap. Vender man --gran om, når
     appen bliver mørk, forsvinder "START HER" i sin egen knap. Overskrifterne
     har derfor deres egen token, som temaet må flytte på. */
  h1,h2,h3,.serif{font-family:var(--skrift-display);font-weight:600;color:var(--overskrift);letter-spacing:.2px;
    font-variant-numeric:lining-nums}
  h1{font-size:27px;line-height:1.22}
  h2{font-size:20px}
  h3{font-size:17px}
  p{line-height:1.6}
  .dæmpet{color:var(--dæmpet);font-size:14px;line-height:1.55}
  .etiket{font-size:11px;letter-spacing:2.2px;text-transform:uppercase;color:var(--dæmpet);font-weight:600}
  /* ---------- to skrifter, to opgaver (14/8) ----------
     Fraunces sad på ALT — også afstande, radius, tælleren og nedtællingen.
     En serif med høj stregkontrast får tal til at læses som pynt frem for som
     oplysning, og det er en af de stærkeste grunde til, at appen føltes
     dekoreret frem for præcis. Fraunces beholder det store nedtællingstal og
     overskrifterne (dér ER tallet en følelse). Alt funktionelt — km, minutter,
     klokkeslæt, tællere — kører nu i Inter med lige brede cifre, så de ikke
     hopper, når de tæller ned. Klassen sættes på selve tal-elementet. */
  .tal{font-family:var(--skrift-brød);font-variant-numeric:tabular-nums lining-nums;
    font-feature-settings:"tnum" 1,"lnum" 1}
  .res-meta,.sk-meta,.ned-dato,.sted-chip,.lup-tæl,.tjek-under,.radius-mærker{
    font-variant-numeric:tabular-nums lining-nums}

  /* ---------- animationer ---------- */
  @keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  @keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.15)}100%{transform:scale(1)}}
  @keyframes svæv{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
  @keyframes drift{from{transform:translateX(0)}to{transform:translateX(-26px)}}
  @keyframes blink{0%,100%{opacity:.15}50%{opacity:1}}
  @keyframes aurora{0%,100%{transform:translateX(0) skewX(0)}50%{transform:translateX(16px) skewX(-4deg)}}
  @keyframes fugle{0%{transform:translate(-60px,10px)}100%{transform:translate(480px,-26px)}}
  @keyframes heroTekst{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
  @keyframes pulsprik{0%,100%{transform:scale(1)}50%{transform:scale(1.35)}}
  @keyframes skud{0%,88%{opacity:0;transform:translate(0,0)}90%{opacity:.9}96%{opacity:0;transform:translate(-150px,64px)}100%{opacity:0}}
  @keyframes flue{0%,100%{transform:translate(0,0);opacity:.15}30%{opacity:.9}50%{transform:translate(7px,-9px);opacity:.4}70%{opacity:.85}}
  @keyframes spejl{0%,100%{opacity:.22}50%{opacity:.4}}
  @keyframes rippleUd{to{transform:scale(1);opacity:0}}
  @keyframes ekgTegn{to{stroke-dashoffset:0}}
  @keyframes splashUd{to{opacity:0;transform:translateY(-24px) scale(1.02);visibility:hidden}}
  @keyframes linjeUd{to{width:120px}}
  /* Kortere og tættere (28/9): 0,38 s og 10 px i stedet for 0,5 s og 14 px,
     og rækkefølgen falder med 30 ms i stedet for 50. Det skal føles som et
     blad, der lægger sig, ikke som noget, der læsses af. */
  .anim>*{animation:fadeUp .38s cubic-bezier(.2,.7,.3,1) both}
  .anim>*:nth-child(1){animation-delay:0s}.anim>*:nth-child(2){animation-delay:.03s}
  .anim>*:nth-child(3){animation-delay:.06s}.anim>*:nth-child(4){animation-delay:.09s}
  .anim>*:nth-child(5){animation-delay:.12s}.anim>*:nth-child(6){animation-delay:.15s}
  .anim>*:nth-child(n+7){animation-delay:.18s}
  /* KUN VED ET SKÆRMSKIFT. tegn() sætter .skift på #indhold, når
     visningen er ny. Tegnes skærmen om under én (et flueben, en dato),
     står alt stille — ellers blinkede hele siden ved hvert tryk. */
  .indhold:not(.skift) .anim>*,
  .indhold:not(.skift) :is(.hero .h-top,.h-bund h1,.h-under,.h-bund p,.h-bund .handling,
    .rund-start,.spontan-link,.tjekboks.markeret,.sp-puls-spor){animation:none}
  .stjerneskud{animation:skud 11s linear infinite}
  .ildflue{animation:flue 6s ease-in-out infinite}
  .vandspejl{animation:spejl 5s ease-in-out infinite}

  /* ---------- ikoner ---------- */
  .ik{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;vertical-align:-5px;flex-shrink:0}
  .ik.stor{width:26px;height:26px}

  /* ---------- hero ---------- */
  /* overflow:hidden er nyt (KN 6/9). Parallaksen nedenfor skubber både
     landskabet og teksten NEDAD, mens man scroller — og så længe der ikke lå
     noget under hero'en, kunne ingen se, at de kravlede 105 px ud over kanten.
     Med værktøjskassen nederst lagde landskabet sig hen over de øverste to
     kort. En parallaks-kasse skal klippe sit eget indhold. */
  .hero{position:relative;color:var(--p-lys-9);height:340px;overflow:hidden}
  /* Forsiden: ét helt billede, én beslutning */
  .hero.fuld{height:calc(var(--skaerm) - 92px);min-height:520px}
  /* De 66 px ekstra er værktøjskassens overskrift, der kigger frem under
     folden (KN 6/9). Uden dem er hero'en præcis så høj som skærmen, og så
     findes de fire værktøjer kun for den, der scroller videre på et billede,
     der ser færdigt ud. Klassen sidder kun på Hjem — onboardingens hero har
     intet under sig og skal blive stående som den er. */
  /* KUN VINKET KIGGER FREM (KN 13/9) ----------------------------------
     Kennet 13/9: "man skal ikke kunne se den hvide tekst Vaerktoejskassen,
     kun Swipe op for vaerktoejskassen." Foer stod der 92 px af blokken over
     folden, og overskriften begynder 75 px inde - saa den stak op.

     REGNESTYKKET, maalt i browseren og ikke gaettet:

       synligt = traek-fra - 49        (49 = bundnavigationens 75 px
                                        minus blokkens 26 px overlap)

     113 giver 64 px synligt. Vinket slutter 59 px inde i blokken, saa det
     er helt med, og der er fem px luft under det.

     ÉT TAL, IKKE TO. Der stod foer en anden vaerdi under
     @media(max-height:880px), og den er vaek nu: bundnavigationen er 75 px
     hoej ved ALLE skaermstoerrelser (63 px knaprække + 12 px afstand til
     bunden), saa de to tal skulle altid vaere ens. To tal, der skal vaere
     ens, bliver det ikke i laengden - det var praecis derfor det her blev
     rettet to gange 13/9: foerste forsoeg satte kun det ene, og saa stak
     overskriften stadig op paa en hoej skaerm. */
  .hero.fuld.med-vaerktoej{height:calc(var(--skaerm) - (var(--nav-h) - 26px) - var(--vk-kig))}
  /* LAVERE, OG SÅ ET HOP (KN 28/9): "værktøjskassen kom længere ned under
     menubjælken. Måske kan den bounce lidt op for at gøre opmærksom på sig
     selv." Nu kigger kun 38 px frem: kanten og grebet (vinket begynder 40 px inde, så 38 er loftet). Vinket ligger gemt
     under bundnavigationen og kommer frem, når blokken hopper op (vkHop
     herunder, én gang pr. opstart - se vkScrollEffekt()).
     Formlen ovenfor er stadig ét tal: --vk-kig er det synlige stykke.
     --nav-h er bundnavigationens højde (se .bundnav) — de 49 i regnestykket
     ovenfor var 75 - 26, fra da menuen var 75 px høj.
     Uden bevægelse (reduceret bevægelse) er der intet hop, der viser
     vinket, så dér står de 64 px fra før, og vinket er fremme hele tiden. */
  .telefon{--vk-kig:38px;--nav-h:60px}
  @media(prefers-reduced-motion:reduce){ .telefon{--vk-kig:64px} }
  /* Login og onboarding har INGEN bundnavigation — tegnNav() skjuler den, til
     man er onboardet. Uden den her blev de 92 px (76 på lave skærme) stående
     som en tom, cremefarvet stribe under hero'en, fordi .telefon lyser creme
     igennem, hvor der ikke er noget. Set første gang i den pakkede app på en
     Galaxy S24 8/9 2026, hvor Androids navigationsbjælke rammer striben ind
     nedefra — men fejlen er lige så synlig i browseren på 375×812.
     Overlayets padding-bottom holder stadig knappen fri af systembjælken. */
  .telefon.uden-bundnav .hero.fuld{height:var(--skaerm)}
  .hero.fuld .overlay{padding-bottom:calc(28px + var(--bund-luft));
    justify-content:flex-start;
    background:linear-gradient(to top,rgba(var(--p-brun-25-rgb),.58) 0%,rgba(var(--p-brun-25-rgb),.28) 24%,transparent 48%)}
  /* centreret komposition: logo → overskrift → tekst → rund knap, trukket op mod toppen */
  .hero.fuld .h-bund{display:flex;flex-direction:column;align-items:center;text-align:center;margin-top:118px}
  .hero.fuld .h-bund h1{font-size:33px;line-height:1.15}
  .hero.fuld .h-bund p{font-size:15.5px;margin-top:10px;max-width:300px}
  /* logoet er brandmærket i toppen — knappen er den eneste cirkel i midten */
  .ht-side{display:flex;align-items:center;min-width:0}
  .ht-side.højre{justify-content:flex-end}
  .h-logo{pointer-events:none}
  /* Det nye logo (27/9) er stablet, ca. 2,25:1 mod det gamles 4:1. Samme
     højde gav et halvt så bredt navn, så højderne er skruet op. */
  .h-logo .logo-svg{height:52px}
  #splash .logo-svg{height:64px}

  /* rund hovedknap med hjerteslag-ringe */
  @keyframes ping{0%{transform:scale(1);opacity:.8}60%{opacity:0}100%{transform:scale(1.8);opacity:0}}
  .rund-start{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:32px;
    animation:heroTekst .9s cubic-bezier(.2,.7,.3,1) .26s both}
  .rund-knap{position:relative;width:104px;height:104px;border-radius:50%;border:none;cursor:pointer;
    background:radial-gradient(circle at 38% 30%,var(--p-lys-2),var(--p-kobber-2));color:var(--paa-lys);
    display:flex;align-items:center;justify-content:center;font-family:inherit;
    box-shadow:0 16px 44px rgba(var(--p-sort-rgb),.42), 0 0 34px rgba(var(--p-kobber-4-rgb),.26), inset 0 1px 0 rgba(var(--p-hvid-rgb),.95);
    transition:transform .22s cubic-bezier(.2,.7,.3,1),box-shadow .25s}
  .rund-knap .ik{width:36px;height:36px;stroke-width:1.5;position:relative;z-index:2}
  .rund-knap:active{transform:scale(.94)}
  @media(hover:hover){.rund-knap:hover{transform:scale(1.05);
    box-shadow:0 20px 54px rgba(var(--p-sort-rgb),.48), 0 0 48px rgba(var(--p-kobber-4-rgb),.45), inset 0 1px 0 rgba(var(--p-hvid-rgb),.95)}}
  /* Én ring, ikke to (14/8). To ringe, der udvidede sig i forskudt takt, gjorde
     knappen urolig uden at gøre den tydeligere. Pulsen er brandet og bliver —
     den skal bare slå én gang ad gangen. r2 findes ikke længere i markup'et. */
  .rk-ring{position:absolute;inset:0;border-radius:50%;border:1.5px solid rgba(var(--p-kobber-lys-rgb),.85);
    pointer-events:none;animation:ping 3.6s cubic-bezier(.2,.6,.3,1) infinite}
  /* stille dobbeltring — samme greb som i logoets bomærke */
  .rund-knap::after{content:'';position:absolute;inset:-7px;border-radius:50%;
    border:1px solid rgba(var(--p-kobber-lys-rgb),.42);pointer-events:none}
  .rk-label{font-size:13px;font-weight:700;letter-spacing:2.6px;text-transform:uppercase;color:rgba(var(--p-lys-7-rgb),.9)}
  .rk-label.sætning{font-size:13.5px;font-weight:500;letter-spacing:0;text-transform:none;line-height:1.4;max-width:250px;color:rgba(var(--p-lys-7-rgb),.85)}
  .rk-note{font-size:12.5px;color:rgba(var(--p-lys-7-rgb),.62);margin-top:-4px}
  /* pulsen fra logoet, midt i knappen */
  .rk-puls{width:58px;height:20px;position:relative;z-index:2}
  /* ⚠️ 1,8 VAR FOR TYNDT (KN 17/9: "sinusrytmen skal være tydeligere").
     Stregen er appens signatur — den er det samme udslag som i logoet — og
     den sad som en hårlinje inde i en 104 px cirkel. non-scaling-stroke
     betyder, at tallet her ER pixels på skærmen, uanset hvad viewBoxen
     siger: 1,8 px ryger under ét pixel-gitter på en telefon med lav
     tæthed og bliver grå i stedet for bark. */
  /* ⚠️ FARVEN HER, OG DET ER IKKE var(--gran). Se noten ved pulsIKnap()
     i app.js: --gran er #3a3227 i :root, men #ECEAE3 i en moerk kontekst,
     og forsiden er moerk. Knappens cirkel er lys uanset hvad — saa
     --paa-lys er den rigtige, den samme som ordet i knappen bruger.
     Streger man en creme puls paa en creme cirkel, forsvinder den, og det
     ligner en for tynd streg. */
  .rk-puls path{vector-effect:non-scaling-stroke;stroke:var(--paa-lys);stroke-width:2.6}
  /* Startknappen bærer ordet inde i cirklen: ORD ØVERST, puls under.
     Rækkefølgen står i opmærkningen — se kommentaren i app.js. */
  .rund-knap.med-ord{flex-direction:column;gap:5px}
  /* Større udsnit end de 48 px, den havde: udslaget skal kunne SES som en
     hjerterytme, ikke anes som en dekoration under et ord. */
  .rund-knap.med-ord .rk-puls{width:58px;height:21px}
  .rund-knap.med-ord .rk-puls path{stroke-width:3}
  .rk-ord{position:relative;z-index:2;font-size:13px;font-weight:700;letter-spacing:2.4px;
    text-transform:uppercase;color:var(--paa-lys)}
  .rk-billede{width:76px;height:76px;border-radius:50%;border:2px solid var(--gran);overflow:hidden;
    display:flex;align-items:center;justify-content:center;position:relative;z-index:2;background:var(--p-hvid)}
  .rk-billede img{width:84%;height:auto;display:block}
  /* fremdriftsbue om knappen, når turen er i gang */
  .rk-bue{position:absolute;inset:-10px;width:calc(100% + 20px);height:calc(100% + 20px);transform:rotate(-90deg)}
  .rk-bue circle{fill:none;stroke-width:2.5;stroke-linecap:round}
  .rk-spor{stroke:rgba(var(--p-lys-7-rgb),.2)}
  .rk-fyld{stroke:var(--rav-lys);stroke-dasharray:100;transition:stroke-dashoffset .6s cubic-bezier(.2,.7,.3,1)}
  .hero svg.scene{position:absolute;inset:0;width:100%;height:100%;display:block}
  .hero .overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:20px 22px 24px}
  .hero .h-top{position:relative;display:flex;align-items:center;justify-content:space-between;animation:heroTekst .7s cubic-bezier(.2,.7,.3,1) both}
  .hero .h-top .ht-side{flex:1}
  .hero .h-top .h-logo{position:static;transform:none}
  /* Arytmi-tæller — levende EKG-puls, der ender i et lille hjerte */
  @keyframes ekgSweep{0%{stroke-dashoffset:100}70%,100%{stroke-dashoffset:-22}}
  @keyframes hjerteBeat{0%,60%,100%{transform:scale(1)}68%{transform:scale(1.34)}75%{transform:scale(.92)}82%{transform:scale(1.12)}88%{transform:scale(1)}}
  .aryt-tæller{display:flex;align-items:center;gap:6px;background:rgba(var(--p-lys-9-rgb),.14);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(var(--p-lys-9-rgb),.25);border-radius:100px;padding:6px 12px 6px 10px;cursor:pointer;font-family:inherit}
  .aryt-tæller .at-label{font-size:10.5px;color:rgba(var(--p-lys-7-rgb),.78);white-space:nowrap}
  .aryt-tæller .at-ekg{width:32px;height:14px;overflow:visible}
  .aryt-tæller .at-ekg .bg{stroke:rgba(var(--p-kobber-lys-rgb),.32);stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round}
  .aryt-tæller .at-ekg .spark{stroke:var(--rav-lys);stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:22 100;filter:drop-shadow(0 0 2px rgba(var(--p-kobber-lys-rgb),.7));animation:ekgSweep 2.6s cubic-bezier(.85,0,.5,1) infinite}
  .aryt-tæller .at-hjerte{width:12px;height:12px;transform-origin:center;animation:hjerteBeat 2.6s ease-in-out infinite}
  .aryt-tæller .at-hjerte path{fill:var(--rav-lys);stroke:none}
  /* Tælleren er et instrument, ikke en overskrift — Inter, lige brede cifre */
  .aryt-tæller .at-tal{font-family:var(--skrift-brød);font-weight:700;font-size:15.5px;
    font-variant-numeric:tabular-nums lining-nums;color:var(--p-lys-7);line-height:1}
  .h-bund h1{color:var(--p-lys-7);font-size:28px;text-shadow:0 1px 12px rgba(var(--p-sort-rgb),.25);animation:heroTekst .8s cubic-bezier(.2,.7,.3,1) both}
  .h-under{font-family:var(--skrift-display);font-weight:600;font-size:17px;color:var(--rav-lys);margin-top:5px;text-shadow:0 1px 8px rgba(var(--p-sort-rgb),.2);animation:heroTekst .8s cubic-bezier(.2,.7,.3,1) .08s both}
  .hero.fuld .h-under{font-size:19px}
  .h-bund p{color:rgba(var(--p-lys-9-rgb),.82);font-size:14.5px;margin-top:6px;max-width:310px;text-shadow:0 1px 8px rgba(var(--p-sort-rgb),.2);animation:heroTekst .8s cubic-bezier(.2,.7,.3,1) .12s both}
  .h-bund .handling{margin-top:16px;animation:heroTekst .8s cubic-bezier(.2,.7,.3,1) .24s both}

  /* ---------- logo & EKG ---------- */
  .logo-svg{height:46px;width:auto;display:block}
  .brand-lockup{display:flex;flex-direction:column;align-items:center;gap:5px}
  .brand-tag{color:rgba(var(--p-lys-7-rgb),.72);font-size:10px;letter-spacing:2.3px;text-transform:uppercase;font-weight:600}
  /* Logoet er cirkulært i sig selv — vi klipper kun de tomme hjørner væk */
  .logo-billede{height:46px;width:46px;border-radius:50%;object-fit:cover;display:block;
    box-shadow:0 6px 20px rgba(var(--p-sort-rgb),.4)}
  #splash .logo-billede{height:176px;width:176px;margin:0 auto;box-shadow:0 22px 60px rgba(var(--p-sort-rgb),.5)}
  .ekg{width:112px;height:18px;display:block;margin-bottom:10px;opacity:.95}
  .ekg path{stroke-dasharray:230;stroke-dashoffset:230;animation:ekgTegn 2.4s cubic-bezier(.4,0,.3,1) .5s both}

  /* ---------- knapper ---------- */
  .knap{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:none;border-radius:100px;padding:14px 26px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;transition:transform .15s,opacity .15s,box-shadow .2s;overflow:hidden;position:relative}
  .knap:active{transform:scale(.96)}
  .knap.primær{background:var(--cta);color:var(--paa-cta);box-shadow:0 8px 22px rgba(var(--p-deep-brown-rgb),.22)}
  .knap.lys{background:var(--p-warm-cream);color:var(--paa-lys);box-shadow:0 6px 18px rgba(var(--p-sort-rgb),.22)}
  .knap.blød{background:var(--flade-dyb);color:var(--gran)}
  .knap.kontur{background:transparent;color:var(--gran);border:1.5px solid var(--linje)}
  .knap.lille{padding:9px 18px;font-size:13.5px}
  .knap.bred{width:100%}
  .knap:disabled{opacity:.35;cursor:default;box-shadow:none}
  /* .ånde er tom med vilje (14/8). Klassen sidder seks steder i app.js og på
     appens vigtigste knapper — den er fjernet som ANIMATION, ikke som klasse,
     så markup'et ikke skal rettes seks steder for at fjerne ét åndedrag.
     En trykflade, der puster, mens man læser, gør appen urolig. */
  .knap.ånde{}
  .ripple{position:absolute;border-radius:50%;background:rgba(var(--p-bark-rgb),.14);transform:scale(0);animation:rippleUd .65s ease-out both;pointer-events:none}
  .knap.primær .ripple{background:rgba(var(--p-hvid-rgb),.28)}
  /* Lysstrejfet hen over knappen hvert 5,5. sekund i al evighed er fjernet —
     det er et sprog fra spilbutikker, ikke fra en app om at holde fri. */
  .kør-knap{background:linear-gradient(125deg,var(--p-lys-5),var(--p-kobber-3));color:var(--paa-lys);font-size:15.5px;padding:15px 22px 15px 19px;gap:10px}

  /* ---------- flader ----------
     Alle matterede flader deler nu ét sæt værdier (se :root). Klassenavnene
     er urørt — de bruges af navigationstesten og af hver eneste skærm. */
  .kort,.liste,.tur-kort,.forslag-knap,.res-kort,.tjek-punkt{
    background:var(--kort-flade);
    backdrop-filter:var(--kort-sløring);-webkit-backdrop-filter:var(--kort-sløring);
    -webkit-backdrop-filter:var(--kort-sløring);
    border:1px solid var(--kort-kant);
    box-shadow:var(--kort-skygge);
    position:relative}
  .kort{border-radius:var(--radius);padding:22px;margin-bottom:16px}
  .kort.klik{cursor:pointer;transition:transform .15s}
  .kort.klik:active{transform:scale(.98)}
  .liste{border-radius:var(--radius);padding:8px 20px;margin-bottom:16px}
  .sektion{margin:26px 0 10px;display:flex;align-items:baseline;justify-content:space-between}
  /* Ét glød, ikke to (14/8). Der lå to store farvede skyer bag ALT indhold —
     én kobber, én oliven — og de var med til at gøre hele appen ens varm.
     Den ene er væk, den anden halveret. Landskabet gør arbejdet nu. */
  .telefon::before{content:'';position:absolute;top:330px;left:-90px;width:320px;height:320px;border-radius:50%;
    background:radial-gradient(circle,rgba(var(--p-kobber-rgb),.10),transparent 68%);pointer-events:none;z-index:0}

  /* ---------- landskabet som gennemgående baggrund ---------- */
  .app-baggrund{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
  /* varm himmel-hvisken øverst */
  .app-baggrund::before{content:'';position:absolute;top:0;left:0;right:0;height:320px;
    background:linear-gradient(to bottom,rgba(var(--p-kobber-rgb),.16),rgba(var(--p-kobber-rgb),.05) 52%,transparent)}
  /* solens genskin, samme sted som i hero'en */
  .app-baggrund::after{content:'';position:absolute;top:-70px;right:-80px;width:300px;height:300px;border-radius:50%;
    background:radial-gradient(circle,rgba(var(--p-kobber-5-rgb),.45),transparent 68%)}
  .app-baggrund .bg-bund,.app-baggrund .bg-traeer{position:absolute;bottom:0;left:0;width:100%;height:170px}
  /* Her stod stregtegningen af den gamle bil (bil-streg.png) bag alt
     indhold. Taget ud 27/9 (Kennet: "giver ikke mening") — forsiden har den
     nye signaturbil, og stregerne var den gamle. Filerne er i parkeret/. */

  @media(hover:hover){
    .kort.klik:hover,.forslag-knap:hover{transform:translateY(-3px);box-shadow:0 22px 48px rgba(var(--p-bark-rgb),.15), inset 0 1px 0 rgba(var(--p-hvid-rgb),.85)}
    .knap.primær:hover{transform:translateY(-1px);box-shadow:0 12px 28px rgba(var(--p-bark-rgb),.36)}
    .knap.lys:hover,.knap.blød:hover,.knap.kontur:hover{transform:translateY(-1px)}
    .tilbage:hover{transform:translateX(-2px)}
    .sted-chip:hover{border-color:var(--rav)}
  }
  .forslag-knap{transition:transform .22s cubic-bezier(.2,.7,.3,1),box-shadow .25s}

  /* ---------- bundnav ---------- */
  /* FAST I BUNDEN (KN 28/9: "jeg synes det ser lidt fjollet ud at den
     svæver"). Før var den en pille 12 px over kanten; nu er den en bjælke,
     der går helt ud til kanterne og ned under hjemmeindikatoren.
     ⚠️ HØJDEN ER --nav-h (60 px = 5 + 46 + 9) over sikkerhedsmargenen.
     Den var 75, og det var for højt (KN 28/9: "Menu er for høj"). Forsidens
     hero regner med --nav-h, så værktøjskassen kigger stadig lige meget
     frem. Rør man paddingen eller .navpunkt's højde, så ret --nav-h med.
     Stregen foroven er en inset-skygge og ikke en border, netop så den
     ikke lægger en pixel til.
     Ordene under ikonerne er nye: tre ikoner alene var et gæt for den, der
     ikke har brugt appen før. De hedder det samme som skærmene (KN 6/9).
     ⚠️ FLADEN ER DÆKKENDE (28/9). Den var 82-90 % gennemsigtig, og på
     forsiden ligger værktøjskassen bag bjælken — så skinnede kassens lyse
     flade igennem, og bjælken blev en rødbrun blok på Kennets iPhone. */
  .bundnav{position:absolute;left:0;right:0;bottom:0;
    background:var(--nav-flade);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
    display:flex;padding:5px 10px calc(9px + var(--bund-luft));z-index:50;
    box-shadow:inset 0 1px 0 rgba(var(--p-hvid-rgb),.09),0 -12px 32px rgba(var(--p-brun-23-rgb),.28)}
  .navpunkt{flex:1;background:none;border:none;cursor:pointer;text-align:center;color:var(--p-graa-3);font-family:inherit;
    padding:4px 0;height:46px;position:relative;transition:color .2s;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
  .navpunkt .ik{width:22px;height:22px}
  .nav-navn{font-size:10px;line-height:12px;font-weight:600;letter-spacing:.2px;white-space:nowrap}
  .navpunkt.aktiv{color:var(--p-lys-9)}
  .navpunkt.aktiv .ik{color:var(--rav-lys)}
  /* Den aktive fane er kobberikon + creme ord. Ingen streg i overkanten:
     på forsiden står værktøjskassens greb lige over bjælken, midt på, og de
     to lagde sig oven i hinanden. */

  /* ---------- sektions-wizard (prikker der viser trin i rækken) ---------- */
  .sek-prikker{display:flex;gap:6px;margin:2px 0 18px}
  .sek-prik{flex:1;height:4px;border-radius:100px;background:var(--flade-dyb);transition:background .2s}
  .sek-prik.klaret{background:var(--rav)}
  .sek-prik.aktiv{background:var(--anker)}
  /* Top på et trin i flowet: etiket og Overblik-genvejen deler øverste linje,
     spørgsmålet får hele bredden nedenunder. */
  .trin-top{margin-bottom:16px}
  .trin-top .etiket-række{display:flex;align-items:center;gap:12px;margin-bottom:5px;min-height:34px}
  /* .overblik-knap er fjernet 31/8 (OD) — vejen hjem er bundnavigationen. */

  /* ---------- fremskridt ---------- */
  .fremskridt{height:6px;background:var(--flade-dyb);border-radius:100px;margin:16px 0;overflow:hidden}
  .fremskridt .bar{height:100%;background:linear-gradient(90deg,var(--rav),var(--anker));border-radius:100px;transition:width .35s cubic-bezier(.2,.7,.3,1)}

  /* ---------- lister & tjek ---------- */
  .liste-punkt{display:flex;align-items:center;gap:13px;padding:14px 0;border-bottom:1px solid var(--linje)}
  .liste-punkt:last-child{border-bottom:none}
  .tjekboks{width:26px;height:26px;border-radius:50%;border:1.8px solid var(--p-sand-6);background:transparent;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .2s}
  .tjekboks svg{width:13px;height:13px;stroke:var(--p-lys-9);stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
  .tjekboks svg path{stroke-dasharray:24;stroke-dashoffset:24}
  .tjekboks.markeret{background:var(--anker);border-color:var(--anker);animation:pop .3s}
  .tjekboks.markeret svg path{stroke-dashoffset:0;transition:stroke-dashoffset .35s cubic-bezier(.2,.7,.3,1) .06s}
  .liste-punkt .navn{flex:1;font-size:15px;transition:color .2s}
  .liste-punkt.strøget .navn{color:var(--dæmpet);text-decoration:line-through;text-decoration-color:var(--rav)}

  /* Bilen: foldbare emner. Overskriften er en almindelig listerække — teksten
     folder sig ud nedenunder, så siden ikke bliver en mur af brødtekst. */
  .bil-emne{border-bottom:none}
  .bil-pil{color:var(--p-sand-7);flex-shrink:0;display:flex;transition:transform .25s}
  .bil-pil.åben{transform:rotate(90deg)}
  .bil-mærke{font-size:12px;font-weight:650;color:var(--fjord);flex-shrink:0;display:flex;align-items:center;gap:4px}
  .bil-mærke svg{width:13px;height:13px}
  /* Nummeret foran hvert madscenarie (01–05, OD 30/8). Tal i Inter med lige
     brede cifre, så de står i kolonne — samme regel som resten af appens tal. */
  .mad-nr{font-family:var(--skrift-brød);font-variant-numeric:tabular-nums lining-nums;
    font-weight:700;font-size:12.5px;letter-spacing:.5px;color:var(--rav-tekst);
    flex-shrink:0;min-width:22px}
  /* Info-ikonet på tjeklistepunkter (KN 27/8, erstatter pilen): "der er mere
     at læse, men du behøver ikke". Egen tap-flade, adskilt fra selve rækkens
     til-/fravælg-klik. */
  .bil-info{border:none;background:transparent;color:var(--p-sand-7);cursor:pointer;flex-shrink:0;
    display:flex;align-items:center;padding:4px}
  .bil-info svg{width:19px;height:19px}
  .bil-krop{padding:0 0 16px;border-bottom:1px solid var(--linje);animation:fold .28s ease}
  .bil-krop:last-child{border-bottom:none}
  .bil-krop p{font-size:14.5px;line-height:1.66}
  .bil-krop .knap{margin-top:12px}
  @keyframes fold{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

  /* ---------- Profil & indstillinger: raekker der folder ud ----------
     KN 15/9: "Det hele er meget stort." Tre indstillingskort blev til tre
     raekker i én liste. Tilstanden staar til hoejre, fordi det er den, man
     kommer for at se; forklaringen folder sig ud nedenunder. */
  .indstil-liste{padding:2px 20px}
  .indstil-række .navn{font-weight:550;line-height:1.35;min-width:0}

  /* IKONERNE står i deres egen celle med fast mål og samme stregtykkelse.
     Uden cellen fik hvert ikon sin egen optiske bredde, og så stod de tre
     titler i tre forskellige afstande fra kanten — det var dét, der så løst
     ud. Rækkerne er samtidig lige høje (alle har en undertekst), så
     ikonerne flugter lodret. */
  .indstil-ikon{width:24px;height:24px;flex-shrink:0;display:flex;align-items:center;
    justify-content:center;color:var(--rav)}
  .indstil-ikon svg{width:19px;height:19px;stroke-width:1.7}
  .indstil-under{font-size:12.5px;color:var(--dæmpet);font-weight:400;margin-top:1px}

  /* KONTAKTEN — KN 15/9: "Kan du ikke bare lave en slider til/fra".
     Kobber, fordi --rav er den ene brandfarve, der står fast i ALLE temaer:
     en kontakt, man ikke kan se om natten, er værre end ingen kontakt. */
  .kontakt{position:relative;width:44px;height:26px;border-radius:13px;flex-shrink:0;
    border:1px solid var(--linje);background:var(--felt-flade);padding:0;cursor:pointer;
    transition:background .22s ease,border-color .22s ease;-webkit-tap-highlight-color:transparent}
  .kontakt::after{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;
    background:var(--p-creme-lys);box-shadow:0 1px 3px rgba(var(--p-bark-rgb),.35);transition:transform .22s cubic-bezier(.3,.8,.4,1)}
  .kontakt.til{background:var(--rav);border-color:var(--rav)}
  .kontakt.til::after{transform:translateX(18px)}
  .kontakt:focus-visible{outline:2px solid var(--rav);outline-offset:2px}

  /* "Hvem kan se turen" paa turkortet. Samme hoejde og rytme som
     gaeste-linjen lige over, saa de to svar paa "hvem er med" ligner
     hinanden i stedet for at vaere to designs. */
  .deler-linje{display:flex;align-items:center;gap:9px;margin-top:10px;
    padding-top:10px;border-top:1px solid var(--linje)}
  .deler-tekst{flex:1;min-width:0;font-size:13px;color:var(--dæmpet)}
  .deler-linje .kontakt{width:40px;height:24px}
  .deler-linje .kontakt::after{width:18px;height:18px}
  .deler-linje .kontakt.til::after{transform:translateX(16px)}

  /* Slet-ikonet paa turkortet. Stille: det skal kunne FINDES, ikke tilbydes.
     Faerre farve end alt andet paa kortet, og foerst rav naar man roerer det.
     36x36 tapflade om et 17px ikon - fingeren skal kunne ramme det, uden at
     ikonet raaber. */
  .slet-tur{border:0;background:none;padding:6px;margin:-6px -4px 0 0;cursor:pointer;
    flex-shrink:0;color:var(--dæmpet);display:flex;align-items:center;justify-content:center;
    border-radius:9px;transition:color .2s,background .2s;-webkit-tap-highlight-color:transparent}
  .slet-tur svg{width:17px;height:17px;stroke-width:1.6}
  .slet-tur:active{background:var(--felt-flade)}
  @media(hover:hover){ .slet-tur:hover{color:var(--rav-tekst)} }

  /* KONTOEN som liste (KN 15/9: "Kunne man ikke samle denne lidt ogsaa").
     Etiket over listen, felter indeni — samme form som indstillingerne,
     saa de to blokke laeser som ét sted og ikke som to designs. */
  .liste-etiket{display:block;margin:0 0 7px 6px}
  .liste-etiket-række{display:flex;align-items:baseline;justify-content:space-between;margin:0 6px 7px}
  .liste-etiket-række .liste-etiket{margin:0}
  /* "Ret" er en stille knap, ikke en handling man skal lokkes til. Samme
     form som "Ret" over kortet paa destinationsskaermen. */
  .liste-ret{border:0;background:none;font-family:inherit;font-size:12.5px;font-weight:650;
    color:var(--gran);text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:0}
  /* Feltet ser foerst ud som et felt, naar man HAR trykket Ret. Ellers er
     det en vaerdi paa linje med de andre. */
  .konto-række input.konto-felt.retter,.konto-række select.konto-felt.retter{border:1.5px solid var(--linje);border-radius:11px;
    padding:7px 11px;background:var(--felt-flade);text-align:right;
    /* Samme faste maal som paa datotrinnet, og af samme grund: uden det er
       navnefeltet 35 px hoejt og datofeltet 37, og deres hoejrekanter stod
       45 px fra hinanden. Maalt 15/9. */
    flex:0 0 168px;width:168px;height:38px;box-sizing:border-box;line-height:1.2;
    /* margin-left:auto skubber feltet helt ud til hoejrekanten. Uden den
       staar det lige efter etiketten, og saa flytter det sig alt efter om
       der staar "Navn" eller "Foedselsdag" foran. */
    margin-left:auto}
  .konto-række input.konto-felt[readonly]{cursor:default}
  .konto-række .navn{flex:none;font-weight:550}
  /* .konto-række foran: input[type=text] paa linje ~700 er baade mere
     specifik og staar senere i filen, saa uden den ville feltet beholde
     appens store ramme og braekke raekken. */
  .konto-række input.konto-felt,.konto-række select.konto-felt{flex:1;min-width:0;border:0;background:none;font:inherit;font-size:15px;
    color:var(--tekst);text-align:right;padding:0;outline:none;height:auto;margin:0;box-shadow:none}
  .konto-felt::placeholder{color:var(--dæmpet)}
  .konto-værdi{flex:1;min-width:0;text-align:right;font-size:15px;color:var(--dæmpet);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .konto-note{font-size:12px;margin:-8px 6px 18px;line-height:1.55}

  /* ---------- Datotrinnet: samme raekkeform som kontoen ----------
     KN 15/9: "alt for klumpe dumbe". Fem fuldbredde-blokke blev til fem
     linjer. Spoergsmaalet til venstre, svaret til hoejre. */

  /* ---------- KALENDEREN (KN 17/9) ----------
     Afløste fire felter og en dropdown ("Samme dag / Dagen efter / Vælg
     dato"). Spørgsmålet er ét: hvilke dage er I væk? Så er svaret ét
     greb — tryk afrejse, tryk hjemkomst.

     Farverne er turkortets: kobber til de valgte ender, en dæmpet
     kobberflade til dagene imellem. Ikke en ny palet — det er den samme
     markering, som "her er du" bruger på fasebåndet. */
  .dato-kort{padding:16px 16px 6px}
  .kal-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
  /* Samme snit som h1-h3: vægt 600, overskriftsfarven, lining-tal (OD 5/10:
     "måneden er skrevet med en ny font" — den stod alene i vægt 400). */
  .kal-maaned{font-family:var(--skrift-display);font-weight:600;font-size:18px;color:var(--overskrift);
    text-transform:capitalize;letter-spacing:.2px;font-variant-numeric:lining-nums}
  .kal-pil{width:38px;height:38px;border-radius:50%;border:1px solid var(--linje);
    background:none;color:var(--gran);font-size:20px;line-height:1;cursor:pointer;
    display:flex;align-items:center;justify-content:center;transition:border-color .2s,opacity .2s}
  .kal-pil:disabled{opacity:.28;cursor:default}
  @media(hover:hover){.kal-pil:not(:disabled):hover{border-color:var(--rav)}}
  /* Syv spor, faste og lige brede — så tallene står i lodrette rækker og
     ikke danser, når en måned starter på en anden ugedag. */
  .kal-uge,.kal-gitter{display:grid;grid-template-columns:repeat(7,1fr)}
  .kal-uge{margin-bottom:4px}
  .kal-uge span{text-align:center;font-size:11px;letter-spacing:.06em;text-transform:uppercase;
    color:var(--dæmpet);padding:4px 0}
  .kal-gitter{gap:2px 0}
  .kal-tom{height:40px}
  .kal-dag{height:40px;border:0;background:none;cursor:pointer;position:relative;
    font-family:var(--skrift-brød);font-size:14.5px;color:var(--gran);
    font-variant-numeric:tabular-nums lining-nums;
    display:flex;align-items:center;justify-content:center;
    transition:color .15s}
  .kal-dag:disabled{color:var(--dæmpet);opacity:.35;cursor:default}
  /* Dagens dato får en prik, ikke en ring: en ring til i et gitter, der
     allerede markerer to ender og en periode, er én markering for meget. */
  .kal-dag.idag::after{content:"";position:absolute;bottom:5px;left:50%;
    transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--rav)}
  /* Båndet mellem enderne. Det er en firkant og ikke afrundet, fordi
     dagene skal hænge SAMMEN hen over ugeskiftet — en afrunding pr. dag
     ville gøre en uge til syv perler. */
  .kal-dag.imellem{background:rgba(var(--p-kobber-rgb),.13)}
  .kal-dag.fra,.kal-dag.til{color:var(--p-hvid);font-weight:700}
  .kal-dag.fra::before,.kal-dag.til::before{content:"";position:absolute;inset:2px;
    border-radius:50%;background:var(--rav);z-index:0}
  /* Tallet ligger i et span netop for at kunne loeftes over cirklen — se
     noten i kalenderGitter(). */
  .kal-dag span{position:relative;z-index:1}
  /* Enderne bærer selv halvdelen af båndet, så det møder cirklen i stedet
     for at stoppe en dag for tidligt. `ene` er endagsturen: ingen bånd. */
  .kal-dag.fra:not(.ene){background:linear-gradient(to right,transparent 50%,rgba(var(--p-kobber-rgb),.13) 50%)}
  .kal-dag.til:not(.ene){background:linear-gradient(to right,rgba(var(--p-kobber-rgb),.13) 50%,transparent 50%)}
  .kal-dag.idag.fra::after,.kal-dag.idag.til::after{background:var(--p-hvid);z-index:2}
  @media(hover:hover){.kal-dag:not(:disabled):not(.fra):not(.til):hover{color:var(--rav-tekst)}}
  /* Perioden skrevet ud. Et gitter med farver kan ikke siges højt. */
  /* DATOTRINNET SOM EN REJSEPLAN (KN 28/9): to rækker, Afrejse og
     Hjemkomst, hver i sin boks med dag til venstre og klokkeslæt til
     højre. Rækken, man retter, lyser op, og kalenderen folder sig ud under. */
  .rejse-række{display:flex;align-items:stretch;border:1.5px solid var(--linje);border-radius:14px;
    background:var(--felt-flade);transition:border-color .2s}
  .rejse-række.aktiv{border-color:var(--rav)}
  .rejse-dato{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;border:0;background:none;
    font-family:inherit;text-align:left;cursor:pointer;color:var(--tekst);padding:10px 12px 11px 14px;
    border-radius:13px 0 0 13px}
  .rejse-dato:focus-visible{outline:2px solid var(--fjord);outline-offset:-2px}
  @media(hover:hover){.rejse-række:not(.aktiv):hover{border-color:rgba(var(--p-kobber-rgb),.55)}}
  .rejse-etiket{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--dæmpet);
    letter-spacing:.02em}
  .rejse-etiket svg{width:15px;height:15px;color:var(--rav-tekst)}
  .rejse-værdi{font-size:18px;font-weight:600;line-height:1.25;white-space:nowrap;
    overflow:hidden;text-overflow:ellipsis}
  .rejse-række.aktiv .rejse-værdi{color:var(--rav-tekst)}
  /* Klokkeslættet har sin egen lille kolonne, adskilt af en hårstreg. */
  .rejse-tid{flex:none;display:flex;flex-direction:column;justify-content:center;gap:3px;
    padding:8px 12px 9px;border-left:1px solid var(--linje-blød);cursor:pointer}
  .rejse-tid input[type=time]{width:92px;height:32px;box-sizing:border-box;padding:0 2px;border:0;
    background:none;border-radius:0;font:inherit;font-size:18px;font-weight:600;color:var(--tekst);
    font-variant-numeric:tabular-nums;text-align:left}
  .rejse-tid input[type=time]:focus{outline:none;color:var(--rav-tekst)}
  /* Rejselængden står i hullet mellem de to rækker, som på en billet. */
  .rejse-mellem{display:flex;align-items:center;gap:10px;margin:0 14px;min-height:30px;
    font-size:12.5px;color:var(--dæmpet);font-weight:550}
  .rejse-mellem::before,.rejse-mellem::after{content:"";flex:1;height:1px;background:var(--linje-blød)}
  .rejse-mellem span:empty{display:none}
  .kal-hjælp{margin:0;padding:14px 2px 0;text-align:center;font-size:13.5px;color:var(--rav-tekst);
    font-weight:550}
  .dato-kort{padding-bottom:16px}
  @media(max-width:360px){
    .rejse-dato{padding:9px 8px 10px 12px}
    .rejse-tid{padding:8px 10px 9px}
    .rejse-tid input[type=time]{width:84px;font-size:16px}
    .rejse-værdi{font-size:16.5px}
  }
  /* Folden: grid-rækken går fra 0fr til 1fr, så højden glider — også ind
     igen. max-height-tricket ville kræve et gæt på kalenderens højde, og
     et gæt er forkert på den måned, der har seks uger. */
  .dato-fold{display:grid;grid-template-rows:0fr;opacity:0;
    transition:grid-template-rows .34s cubic-bezier(.2,.7,.3,1),opacity .24s ease}
  .dato-fold.åben{grid-template-rows:1fr;opacity:1}
  .dato-fold-indre{overflow:hidden;min-height:0}
  .dato-fold-indre #kalender{padding:10px 2px 0}
  @media(prefers-reduced-motion:reduce){.dato-fold,.rejse-række{transition:none}}

  /* ⚠️ ETIKETTEN SKAL HAVE PLADS. "Ca. hvornår kører I?" braekkede over
     TRE linjer ved siden af et tidsfelt, fordi .konto-raekke deler
     bredden ligeligt. Klokkeslaettet fylder det, det fylder — resten er
     etikettens. */
  /* ⚠️ ETIKETTEN VAR LAAST TIL 58 % af raekken, og paa 320 px braekkede
     "Ca. hvornaar koerer I?" derfor over fire linjer ved siden af et
     klokkeslaet, der fyldte det halve af sin plads. Tallet fylder det, det
     fylder — resten er etikettens. */
  .dato-liste .konto-række{gap:14px}
  .dato-liste .navn{flex:1 1 auto;max-width:none;min-width:0;
    font-weight:550;line-height:1.35}
  .dato-liste input.konto-felt{flex:0 0 auto;width:auto;min-width:104px}
  /* Paa de smalleste telefoner staar etiketten over feltet. To ting paa
     samme linje, hvor den ene er en saetning, holder ikke under 360 px. */
  @media(max-width:360px){
    .dato-liste .konto-række{flex-direction:column;align-items:stretch;gap:6px}
    .dato-liste input.konto-felt{text-align:left;width:100%}
  }
  /* Selecten arver kontofeltets form, men skal have plads til sin pil. */
  .konto-række select.konto-felt.retter{padding-right:27px;text-align:left;cursor:pointer;
    appearance:none;-webkit-appearance:none;
    background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27%3E%3Cpath d=%27M6 9.5 12 15l6-5.5%27 fill=%27none%27 stroke=%27%235f6353%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E");
    background-repeat:no-repeat;background-position:right 7px center;background-size:15px}
  /* Telefonens egen kalender-/urknap skal kunne rammes. */
  /* Ét maal til hele svarkolonnen, saa de fire felters hoejrekant flugter.
     Uden den var datoen bredest, uret smallest og dropdownen midtimellem —
     tre forskellige kanter under hinanden. */
  /* ÉT MAAL TIL ALLE FIRE FELTER. To ting gjorde dem ulige store:
     1) basisreglen ovenfor er MERE specifik og saetter flex:1, saa hvert
        felt voksede efter sin etikets laengde - dropdownen fik 158 px,
        fordi "Hjem igen?" er kortere end "Ca. hvornaar koerer I?".
     2) de tre native kontroller har hver sin indbyggede hoejde: 35, 37
        og 38 px. Uden en eksplicit hoejde arver man browserens skoen.
     Derfor baade hoejere specificitet OG faste maal. Maalt efter. */
  .dato-liste .konto-række input.konto-felt,
  .dato-liste .konto-række select.konto-felt{
    flex:0 0 150px;width:150px;height:38px;box-sizing:border-box;line-height:1.2}
  .dato-liste .konto-række .navn{flex:1;min-width:0}
  .dato-liste .navn{flex:1}
  /* De to sjaeldne handlinger staar side om side og stille. De skal kunne
     findes, ikke tilbydes. */
  .indstil-fod{display:flex;flex-direction:column;gap:10px;align-items:center;margin-top:18px}
  .indstil-fod .knap{width:100%;max-width:170px}
  /* SLETNING — ét niveau under Log ud, med vilje.
     Den skal kunne findes af den, der leder efter den (Google Play og App
     Store kraever det), og ikke af fingeren, der sigtede efter Log ud.
     Derfor: daempet, uden ramme, og ikke roed. Det roede hoerer til paa
     selve skaermen, hvor der staar hvad der sker. */
  .slet-link{background:none;border:0;padding:8px 12px;font:inherit;font-size:13px;
    color:var(--daempet,var(--p-graa-4));text-decoration:underline;text-underline-offset:3px;cursor:pointer}
  .slet-link:hover{color:var(--tekst)}
  /* Selve handlingsknappen INDE paa sletteskaermen. Her maa den gerne
     se ud, som den goer: det er den eneste uigenkaldelige knap i appen. */
  .slet-knap{background:var(--p-roed-1);color:var(--p-lys-3);border:1px solid var(--p-roed-4)}
  .slet-knap:hover:not(:disabled){background:var(--p-roed-3)}
  .slet-knap:disabled{opacity:.6;cursor:default}
  .slet-liste{margin:10px 0 0;padding-left:20px;line-height:1.7;font-size:14.5px}
  .slet-liste li{margin-bottom:4px}
  /* `.side` har `padding:22px 22px 0` — ingen luft i bunden. Bundnavigationen
     ligger absolut og daekker de nederste ~75 px, saa det sidste paa en lang
     skaerm gemmer sig bag den, ogsaa naar der er rullet helt ned. Maalt 16/9:
     knappens underkant laa 233 px under navigationens overkant.
     De fleste skaerme slutter hoejt nok til at det ikke ses. Her goer det:
     de to nederste elementer er kodeordsfeltet og selve sletteknappen, og
     ingen af dem maa vaere svaere at faa oeje paa. Polstringen laegges KUN
     her - de oevrige skaerme roeres ikke af en rettelse, de ikke bad om. */
  .slet-side{padding-bottom:96px}

  /* ---------- "HUN HAR DELT EN TUR MED DIG" (KN 16/9) ----------
     Ligger under hero'en paa forsiden. Kobber, fordi det er appens ene
     accentfarve og bruges til dét, man skal laegge maerke til - samme
     begrundelse som Udgiv-knappen i bagrummet.
     Den fylder én linje og kan lukkes. En besked, der ikke kan lukkes,
     bliver til en ting, man ser forbi. */
  .delt-varsel{
    display:flex;align-items:center;gap:12px;
    margin:14px 16px 0;padding:13px 14px;
    background:linear-gradient(180deg,rgba(var(--p-kobber-lys-rgb),.16),rgba(var(--p-kobber-rgb),.13));
    border:1px solid rgba(var(--p-kobber-rgb),.34);border-radius:18px}
  .delt-varsel .dv-krop{flex:1 1 auto;min-width:0}
  .delt-varsel .dv-titel{font-weight:600;font-size:14.5px;line-height:1.4;color:var(--overskrift)}
  .delt-varsel .dv-under{font-size:13px;color:var(--fjord);margin-top:2px;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .delt-varsel .dv-se{flex:0 0 auto;padding:8px 14px;font-size:13.5px;border-radius:100px}
  .delt-varsel .dv-luk{flex:0 0 auto;background:none;border:0;padding:6px;cursor:pointer;
    color:var(--fjord);opacity:.7;line-height:0}
  .delt-varsel .dv-luk:hover{opacity:1}
  .delt-varsel .dv-luk .ik{width:15px;height:15px}

  /* ---------- KOER DERHEN (17/9) ----------
     Koordinaterne skal kunne LAESES OP, ikke bare ses. Derfor tabular
     tal, god stoerrelse og plads omkring - og de er markerbare, saa de
     kan kopieres ind i en besked. */
  .kør-derhen{margin:16px 0 0;padding:15px 16px;background:var(--kort-flade);
    backdrop-filter:var(--kort-sløring);-webkit-backdrop-filter:var(--kort-sløring);
    border:1px solid var(--kort-kant);border-radius:20px}
  .kør-derhen .kd-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
  .kør-derhen .kd-titel{font-family:var(--skrift-display);font-weight:600;
    font-size:15.5px;color:var(--overskrift);flex:1 1 auto}
  /* `.knap` er skrevet til <button>, og en <a> tager browserens understregning
     med sig. Derfor slås den fra her (velkomstskærmens <a> med samme
     regel blev en <button> og forsvandt 4/10). */
  .kør-derhen .kd-top .knap{flex:0 0 auto;padding:8px 14px;font-size:13.5px;gap:6px;
    text-decoration:none}
  .kør-derhen .kd-top .knap .ik{width:15px;height:15px}
  .kør-derhen .kd-tal{margin-top:10px;font-size:19px;font-weight:600;
    font-variant-numeric:tabular-nums lining-nums;letter-spacing:.02em;
    color:var(--overskrift);user-select:all;-webkit-user-select:all}
  .kør-derhen .kd-note{margin-top:7px;font-size:12.5px;line-height:1.5;color:var(--fjord)}
  /* Adressen over tallene (KN 5/10, 0047) — det, man skriver i GPS'en. */
  .kør-derhen .kd-adresse{display:flex;align-items:flex-start;gap:8px;margin-top:10px;font-size:15px;line-height:1.45;color:var(--gran)}
  .kør-derhen .kd-adresse .ik{width:17px;height:17px;flex-shrink:0;margin-top:2px;color:var(--rav)}
  /* 320 px: "Lyset i appen" + "Foelger doegnet" er for meget paa én linje,
     og titlen braekkede over i to, mens tilstanden blev staaende. Maalt paa
     320x700 — raekken strammes, i stedet for at teksten forkortes. */
  @media (max-width:360px){
    .indstil-liste{padding:2px 15px}
    .indstil-liste .liste-punkt{gap:9px}
    .indstil-ikon{width:21px}
    .indstil-række .navn{font-size:14.5px}
    .bil-info{padding:2px}
    /* 320 px: telefonens egen datovisning (dd-mm-aaaa + ikon) kan ikke
       klemmes ned i 148 px — den blev klippet til "20-09-202". Feltet faar
       mere plads, og etiketten maa bryde over flere linjer i stedet. */
    .dato-liste{padding:2px 14px}
    .dato-liste .liste-punkt{gap:9px}
    .dato-liste .konto-felt{width:152px;font-size:14px}
    .dato-liste .navn{font-size:14px}
    /* Kontofeltet skal ned i samme maal som datofelterne paa 320 px.
       Med 168 px loeb raekken over, og saa faldt margin-left:auto sammen,
       saa de to felter stod 16 px fra hinanden i stedet for paa linje. */
    .konto-række input.konto-felt.retter,.konto-række select.konto-felt.retter{
      flex:0 0 150px;width:150px}
    /* Lang etiket maa ikke stoede ind i feltet. */
    .dato-liste .konto-række .navn{padding-right:6px}
  }

  /* Pakkelisten: egne punkter. Feltet står nederst i listen som en tom række,
     så det er tydeligt, at listen kan vokse. */
  .eget-felt{flex:1;border:none;background:transparent;font:inherit;font-size:15px;color:var(--tekst);padding:0;min-width:0}
  .eget-felt:focus{outline:none}
  .eget-felt::placeholder{color:var(--dæmpet)}
  .eget-tilføj{border:1px solid var(--linje);background:transparent;border-radius:999px;padding:5px 13px;
    font:inherit;font-size:12.5px;font-weight:650;color:var(--gran);cursor:pointer;flex-shrink:0}
  .eget-tilføj:active{transform:scale(.96)}
  .eget-fjern{border:none;background:transparent;color:var(--dæmpet);cursor:pointer;flex-shrink:0;
    display:flex;align-items:center;padding:4px}
  .eget-fjern svg{width:15px;height:15px}

  /* beskrivelsen på forslagskortet — så man kan vælge ud fra andet end afstand */
  .res-tekst{display:block;font-size:13.5px;line-height:1.5;color:var(--tekst);margin:4px 0 6px}

  /* tekstknap midt i en sætning — bruges i den hurtige arytme */
  .som-link{background:none;border:none;padding:0;font:inherit;color:var(--rav-tekst);
    text-decoration:underline;cursor:pointer}

  /* ---------- mail-kladde: brugeren retter selv i invitationen ---------- */
  .mail-felt{width:100%;min-height:340px;border:1px solid var(--linje);border-radius:16px;
    padding:14px 16px;font-family:inherit;font-size:13.5px;line-height:1.6;color:var(--tekst);
    background:var(--flade);resize:vertical}
  .mail-felt:focus{outline:none;border-color:var(--rav)}
  .mail-vis{white-space:pre-wrap;font-family:inherit;font-size:13.5px;line-height:1.6;color:var(--tekst)}

  /* ---------- skærm-top ---------- */
  .skærm-top{display:flex;align-items:center;gap:12px;margin-bottom:16px}
  .tilbage{border:none;background:var(--flade);box-shadow:0 4px 14px rgba(var(--p-bark-rgb),.08);width:40px;height:40px;border-radius:50%;cursor:pointer;color:var(--gran);flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:transform .2s}

  /* ---------- valg-kort ---------- */
  .forslag{display:flex;flex-direction:column;gap:11px}
  .forslag-knap{display:flex;align-items:center;gap:14px;border-radius:var(--radius-m);padding:17px 18px;font-family:inherit;font-size:15px;cursor:pointer;text-align:left;color:var(--tekst);overflow:hidden}
  .forslag-knap:active{transform:scale(.97)}
  .forslag-knap b{color:var(--gran)}
  .forslag-knap .f-ikon{width:40px;height:40px;border-radius:13px;background:var(--p-lys-19);color:var(--p-brun-1);display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .forslag-knap .pil{margin-left:auto;color:var(--p-sand-7)}

  /* ---------- rigtigt interaktivt kort (Leaflet/OSM) ---------- */
  .kort-wrap{border-radius:18px;overflow:hidden;position:relative;isolation:isolate}
  .leaflet-container{background:var(--flade-dyb);font-family:inherit;border-radius:inherit}
  /* Forslagskortet under de tre steder (KN 28/9) — appens eneste kort,
     efter destinationsskærmen (#rigtigt-kort) er væk. Et overblik over
     tre steder, ikke et arbejdskort. */
  .forslag-kort-ramme{margin-top:10px}
  /* "Foreslå 3 nye" og overskriften over kortet (OD 4/10). */
  .flere-forslag{text-align:center;margin-top:16px}
  .flere-forslag p{font-size:12.5px;line-height:1.5;margin:10px 4px 0}
  .forslag-kort-titel{font-size:17px;margin:24px 0 0}
  /* Højere 28/9 ("kortet skal fylde lidt mere"): følger skærmen, ca. 340 px
     på 375×812 og 295 px på 320×700. */
  /* Vinket under kortet og pinnens knap (KN 28/9). */
  .forslag-vink{display:flex;align-items:center;justify-content:center;gap:6px;
    margin:8px 0 0;font-size:12px;color:var(--dæmpet)}
  .forslag-vink .ik{width:14px;height:14px;color:var(--rav-lys)}
  .lkort-pop .leaflet-popup-content-wrapper{background:none;box-shadow:none;padding:0;border-radius:100px}
  .lkort-pop .leaflet-popup-content{margin:0;width:auto!important}
  .lkort-pop .leaflet-popup-tip-container{display:none}
  .lkort-pop .knap{white-space:nowrap;box-shadow:0 8px 22px rgba(var(--p-sort-rgb),.45)}
  #forslag-kort{height:clamp(280px, calc(var(--skaerm) * .42), 420px);width:100%;background:var(--flade-dyb);border-radius:18px;overflow:hidden}

  /* FLISERNE DÆMPES — KN 15/9: "kortet er lidt grimt og ikke særlig moderne".

     Han har ret, og det er ikke Leaflets skyld. OSM's egne fliser er tegnet
     til at VÆRE et kort: lyserøde motorveje, gule landeveje, kraftig
     skovgrøn, mange etiketter. De farver slås med bark, kobber, oliven og
     creme, og kortet kom derfor til at ligne et fremmed element, der var
     klistret ind midt på siden.

     HVORFOR ET FILTER OG IKKE EN PÆNERE FLISELEVERANDØR:
     CARTO's Positron er pænere ud af kassen og var det oplagte valg. Prøvet
     i appen 15/9 — den stempler nu "API KEY REQUIRED" tværs over hver flise.
     En nøgle hører ikke i repoet (AGENTS.md), og en telefon kan ikke
     domænelåse den, som en hjemmeside kan. De øvrige pæne leverandører
     (MapTiler, Stadia, Thunderforest) vil have det samme.

     Filteret koster ingen nøgle, ingen ny leverandør, ingen ny konto — og
     ændrer ikke, hvem vi krediterer. Det er den samme flise; den er bare
     skruet ned, så kortet holder paletten i stedet for at bryde den. */
  .leaflet-tile-pane{filter:saturate(.32) contrast(.92) brightness(1.08) sepia(.14)}

  /* Om natten VENDES fliserne i stedet for bare at blive mørknet:
     invert + hue-rotate beholder vand som blåt og skov som grønt — bare
     mørkt. Slukker man i stedet lyset med brightness alene, bliver alt til
     det samme grå, og så kan man ikke længere se, hvad man kigger på. */
  .telefon[data-tema="klar"] .leaflet-tile-pane,
  .telefon[data-tema="klarNat"] .leaflet-tile-pane{
    filter:invert(.93) hue-rotate(180deg) saturate(.3) brightness(.95) contrast(.9)}

  /* Zoom-knapperne. Leaflets egne er grå kasser med 1px kant — det er den
     mest umoderne enkeltdel på skærmen, og den sidder øverst til venstre,
     hvor øjet lander først. Samme runding og skygge som appens egne kort. */
  .leaflet-bar{border:0!important;border-radius:13px!important;overflow:hidden;
    box-shadow:0 2px 10px rgba(var(--p-bark-rgb),.18)!important}
  /* .leaflet-touch skal med: Leaflets egen regel er mere specifik end
     .leaflet-bar a alene, og saa vinder dens 30px over vores. */
  .leaflet-touch .leaflet-bar a,.leaflet-bar a,.leaflet-bar a:hover{
    width:34px;height:34px;line-height:33px;
    background:var(--flade);color:var(--tekst);
    border-bottom:1px solid var(--linje);font-family:inherit;font-size:18px;font-weight:400}
  .leaflet-touch .leaflet-bar a:last-child,.leaflet-bar a:last-child{border-bottom:0}
  .leaflet-bar a:hover{color:var(--rav)}
  .leaflet-bar a.leaflet-disabled{color:var(--dæmpet);background:var(--flade)}
  .leaflet-control-zoom{margin:12px 0 0 12px!important}

  /* Attributionen skal stå der — den er et krav, ikke pynt. Men den skal
     være stille: den er en kildeangivelse, ikke en oplysning til brugeren.
     KN 28/9 bad om at få den helt væk. "Leaflet" og flaget er væk
     (setPrefix(false) i lkortBund) — "© OpenStreetMap" kan IKKE
     fjernes: det er et krav i OpenStreetMaps licens (ODbL) og i deres
     vilkår for at bruge kortfliserne. Så den står uden flade og halvt
     gennemsigtig i hjørnet i stedet. */
  .leaflet-control-attribution{font-size:9px!important;padding:2px 7px!important;
    background:transparent!important;color:var(--dæmpet)!important;
    border-radius:9px 0 0 0;opacity:.6}
  /* Pladsholderen i søgefeltet står i midten (KN 28/9). Det, man skriver,
     står til venstre. Feltet bor i trin 3. */
  #bySøg::placeholder{text-align:center}
  .leaflet-control-attribution a{color:var(--fjord)!important;text-decoration:none}
  .lkort-testet{width:28px;height:28px;border-radius:50%;background:var(--rav-lys);border:1.5px solid var(--p-brun-1);
    display:flex;align-items:center;justify-content:center;color:var(--p-brun-9);box-shadow:0 3px 10px rgba(var(--p-bark-rgb),.35)}
  .lkort-testet .ik{width:15px;height:15px;stroke-width:1.9}
  .lkort-testet.udenfor{background:var(--flade);border-color:var(--linje);color:var(--dæmpet);box-shadow:none}
  /* Kladdens markør på kortet: stiplet kant, så den kan kendes fra et
     udgivet sted på en armslængdes afstand — også uden at læse mærket. */
  .lkort-testet.kladde{background:var(--gran);border:1.5px dashed var(--p-lys-7);color:var(--p-lys-7)}
  .lkort-start{width:16px;height:16px;border-radius:50%;background:var(--rav);
    border:2.5px solid var(--p-lys-9);box-shadow:0 3px 10px rgba(var(--p-bark-rgb),.3)}
  .lkort-tip-km{color:var(--fjord);font-size:11px}
  .lkort-tip-uden{color:var(--dæmpet);font-size:11px;font-style:italic}
  .lkort-bruger{position:relative;width:16px;height:16px}
  .lkort-bruger .prik{position:absolute;inset:0;border-radius:50%;background:var(--gran);border:2.5px solid var(--p-lys-9);box-shadow:0 3px 10px rgba(var(--p-bark-rgb),.35)}
  .lkort-bruger .puls{position:absolute;inset:-9px;border-radius:50%;background:var(--gran);opacity:.18;animation:pulsprik 3s ease-in-out infinite}
  /* Rolig opsummering af trin 3+4 over kortet — én linje, ingen pille-række */
  .valg-linje{display:flex;align-items:baseline;gap:7px;margin:0 0 10px;font-size:12.5px;color:var(--fjord)}
  .valg-linje .ik{width:13px;height:13px;flex:none;color:var(--rav);align-self:center}
  .valg-linje span{flex:1;line-height:1.5}
  .valg-linje button{border:0;background:none;font-family:inherit;font-size:12.5px;font-weight:600;
    color:var(--gran);text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:0}
  .sted-chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}
  .sted-chip{display:inline-flex;align-items:center;gap:6px;border:1.3px solid var(--linje);background:var(--flade);
    border-radius:100px;padding:8px 13px;font-size:12.5px;font-weight:600;color:var(--tekst);cursor:pointer;font-family:inherit;transition:all .2s}
  .sted-chip .ik{width:14px;height:14px;color:var(--rav)}
  .sted-chip.valgt{background:var(--anker);border-color:var(--anker);color:var(--p-lys-9)}
  .sted-chip.valgt .ik{color:var(--rav-lys)}
  /* DET VALGTE STÅR SOM EN BJÆLKE fra side til side (KN 28/9) — startpunktet,
     destinationen og datoen i invitationen. En pille, der stoppede midt i
     kortet, så tilfældig ud under et felt, der går hele vejen. Samme bredde
     som feltet og knappen over den, og teksten i midten ligesom knappen. */
  .sted-chips .sted-chip.valgt{flex:1 1 100%;justify-content:center;text-align:center;
    padding:10px 16px;font-size:13.5px;line-height:1.35}
  /* tel kom til 6/9 (telefonnumre til invitationer). Uden den i listen
     stod feltet som browserens eget, lige under et af appens egne. */
  input[type=text],input[type=email],input[type=password],input[type=tel],textarea{
    width:100%;border:1.5px solid var(--linje);border-radius:14px;padding:13px 15px;
    font-size:15px;font-family:inherit;background:var(--felt-flade);color:var(--tekst);transition:border-color .2s}
  input::placeholder,textarea::placeholder{color:var(--dæmpet);opacity:.75}
  input:focus,textarea:focus{outline:none;border-color:var(--fjord)}
  textarea{resize:vertical;min-height:72px}
  label.felt-etiket{display:block;font-size:12.5px;font-weight:650;color:var(--gran);margin:15px 0 7px;letter-spacing:.3px}

  /* ---------- faktagitteret (14/8) ----------
     Felterne toilet/handel/aftensmad/morgen har ligget i datamodellen hele
     tiden og blev vist som fire rækker brødtekst nederst på siden — altså som
     noget, man skulle læse. Nu et gitter man kan scanne: den ene læser tager
     tabellen og trykker videre, den anden springer den over og læser
     fortællingen. Begge bliver betjent i stedet for kun den ene. */
  .fakta-net{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--linje);
    border:1px solid var(--linje);border-radius:var(--radius-m);overflow:hidden;margin:0 0 16px}
  .fakta{background:var(--flade);padding:11px 13px;display:flex;gap:9px;align-items:flex-start}
  .fakta .ik{width:16px;height:16px;color:var(--anker-mid);margin-top:1px}
  .fakta-krop{min-width:0}
  .fakta-navn{font-size:10px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;
    color:var(--dæmpet);display:block}
  .fakta-værdi{font-variant-numeric:tabular-nums lining-nums;font-size:13px;font-weight:600;
    color:var(--anker-tekst);line-height:1.35;display:block;margin-top:2px}
  .fakta-værdi.tom{color:var(--dæmpet);font-weight:400;font-style:italic}
  /* Under 340px bliver to spalter for smalle til "Offentligt toilet ved slusen,
     600 m" — så falder gitteret til én. */
  @media(max-width:359px){ .fakta-net{grid-template-columns:1fr} }
  /* Kun toilettet er tilbage (KN 24/9) — ét felt skal ikke stå i en halv spalte. */
  .fakta-net.en{grid-template-columns:1fr}

  /* ---------- stjernerne og "Anbefalet af Arytmi" (KN 24/9) ----------
     Kobber, fordi det er appens accent for "det her er vores". De tomme
     stjerner står med, så fire ikke kan læses som fire af fire. */
  .stjerner{display:inline-flex;gap:1px;letter-spacing:0;line-height:1;font-size:15px}
  .stjerner .fuld{color:var(--rav)}
  .stjerner .tom{color:var(--p-sand-5)}
  .vurdering-linje{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px}
  .tekst-knap{background:none;border:0;padding:4px 0;font:inherit;font-size:12.5px;font-weight:600;
    color:var(--anker-mid);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
  .sk-stjerner{color:var(--rav-lys);letter-spacing:1px}

  /* ---------- "kort fortalt" over prosaen (14/8) ----------
     Stedbeskrivelserne er det bedste i appen, og der er ikke ændret ét ord i
     dem. Der er kun sat en linje ovenover, så den, der vil have svaret, får
     det på to sekunder — og den, der vil have stemningen, får den uforstyrret,
     fordi den ikke længere også skal levere fakta. */
  .dom{background:var(--flade);border:1px solid var(--linje);border-radius:var(--radius-m);
    padding:12px 15px;margin-bottom:14px}
  .dom-titel{font-size:10px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;
    color:var(--dæmpet);margin-bottom:6px}
  .dom-linje{display:flex;flex-wrap:wrap;gap:0 6px;font-variant-numeric:tabular-nums lining-nums;
    font-size:13.5px;color:var(--anker-tekst);font-weight:600;line-height:1.7}
  .dom-linje i{color:var(--p-graa-1);font-style:normal}

  /* ---------- verts-kortet ---------- */
  .vært-række{display:flex;gap:12px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--linje)}
  .vært-række:last-child{border:none}
  .vært-række .ik{color:var(--rav);margin-top:1px}
  .vært-række .v-tekst{font-size:14.5px;line-height:1.5}

  /* ---------- hero-bånd på undersider ---------- */
  .guide-hero{border-radius:var(--radius) var(--radius) 20px 20px;padding:26px 22px 22px;margin-bottom:16px;position:relative;overflow:hidden;color:var(--p-hvid)}
  .guide-hero h1{color:var(--p-lys-7);font-size:24px;position:relative}
  .guide-hero .g-under{color:rgba(var(--p-lys-7-rgb),.75);font-size:13.5px;margin-top:4px;position:relative}
  .guide-hero .vandmærke{position:absolute;right:-14px;bottom:-18px;opacity:.16}
  .guide-hero .vandmærke .ik{width:120px;height:120px;stroke-width:1.1}
  /* Hero med rigtigt foto fra turen — gradienten ligger i style-attributten,
     så teksten kan læses oven på et lyst billede */
  .guide-hero.m-foto{background-size:cover;background-position:center;min-height:210px;
    display:flex;flex-direction:column;justify-content:flex-end}
  .guide-hero.m-foto .g-under{color:rgba(var(--p-lys-7-rgb),.92)}
  .guide-hero .hero-mærkat{position:relative;align-self:flex-start;margin-top:10px;
    font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;font-weight:700;
    background:rgba(var(--p-lys-7-rgb),.9);color:var(--p-brun-6);border-radius:100px;padding:4px 11px}

  /* ---------- fotostribe på et testet sted ---------- */
  .foto-stribe{display:flex;gap:8px;overflow-x:auto;margin:16px -20px 0;padding:0 20px 4px;
    scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
  .foto-stribe::-webkit-scrollbar{display:none}
  .foto-stribe img{height:132px;width:auto;flex:0 0 auto;border-radius:12px;object-fit:cover;
    scroll-snap-align:start;cursor:pointer;background:var(--p-lys-16)}
  .ingen-foto{font-size:13px;color:var(--dæmpet);margin-top:14px;font-style:italic}
  .foto-lup{position:fixed;inset:0;z-index:900;background:rgba(var(--p-brun-22-rgb),.94);
    display:flex;align-items:center;justify-content:center;padding:20px;cursor:zoom-out}
  .foto-lup img{max-width:100%;max-height:88vh;border-radius:12px}
  .lup-tæl{position:absolute;bottom:18px;left:0;right:0;text-align:center;
    color:rgba(var(--p-lys-7-rgb),.7);font-size:12.5px;letter-spacing:.6px}

  .guide-brød{line-height:1.68;font-size:15px}
  .guide-brød h3{margin:22px 0 8px}
  .guide-brød ul{padding-left:20px;margin:8px 0}
  .guide-brød li{margin-bottom:8px}
  /* Opret, ikke kursiv: der er kun hentet den oprette Fraunces ned, og en
     browser-skråstillet serif med høj stregkontrast ser forkert ud. Et citat
     på 16px læses fint oprejst — kobber-stregen bærer allerede markeringen. */
  .citat{border-left:3px solid var(--rav);padding:6px 0 6px 16px;margin:16px 0;color:var(--gran);font-family:var(--skrift-display);font-size:16px}

  /* ---------- OD-pladsholder ---------- */
  .od-plads{border:1.6px dashed var(--p-sand-6);border-radius:16px;padding:14px 16px;color:var(--dæmpet);font-size:13.5px;background:rgba(var(--p-hvid-rgb),.35);margin:10px 0}
  .od-mærke{display:inline-block;font-size:10.5px;letter-spacing:1.5px;text-transform:uppercase;font-weight:700;color:var(--p-brun-3);background:var(--p-lys-18);border-radius:100px;padding:3px 10px;margin-bottom:6px}

  /* ---------- sælg-kort (upsell af fysiske pakker) ---------- */
  .sælg-kort{background:linear-gradient(155deg,rgba(var(--p-kobber-lys-rgb),.20),rgba(var(--p-kobber-lys-rgb),.06));
    border:1px solid rgba(var(--p-kobber-lys-rgb),.4);border-radius:var(--radius);padding:20px 20px 18px;margin:6px 0 18px;position:relative;overflow:hidden}
  .sælg-kort::before{content:'';position:absolute;top:-50px;right:-50px;width:160px;height:160px;border-radius:50%;
    background:radial-gradient(circle,rgba(var(--p-kobber-lys-rgb),.3),transparent 70%)}
  .sælg-etiket{font-size:10.5px;letter-spacing:1.8px;text-transform:uppercase;font-weight:700;color:var(--p-brun-1);position:relative}
  .sælg-kort h3{margin-top:6px;font-size:17px;position:relative}
  .sælg-kort p{color:var(--dæmpet);font-size:13.5px;margin:6px 0 14px;line-height:1.5;position:relative}

  /* ---------- mørke kort (bonus/notifikation) ---------- */
  .mørk-kort{background:linear-gradient(150deg,var(--p-brun-11),var(--p-brun-13));border-radius:var(--radius);padding:22px;color:var(--p-lys-9);margin-bottom:16px;position:relative;overflow:hidden}
  .mørk-kort h3{color:var(--p-lys-9)}
  .mørk-kort p{color:rgba(var(--p-lys-9-rgb),.72);font-size:14px}
  .mørk-kort .glød{position:absolute;top:-40px;right:-40px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(var(--p-kobber-lys-rgb),.25),transparent 70%)}

  /* ---------- anmeld ---------- */
  .bedøm-række{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 0;border-bottom:1px solid var(--linje)}
  .bedøm-række:last-child{border:none}
  .prikker{display:flex;gap:8px}
  .prik-valg{width:27px;height:27px;border-radius:50%;border:1.6px solid var(--p-sand-6);background:none;cursor:pointer;font-size:0;transition:all .15s}
  .prik-valg.valgt{background:var(--rav);border-color:var(--rav);transform:scale(1.05)}
  .bølger{color:var(--rav);letter-spacing:1px;font-size:13px}

  /* ---------- log ---------- */
  .tur-kort{border-radius:var(--radius);padding:20px 22px;margin-bottom:16px}
  .tur-kort .top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px;gap:10px}
  .tur-kort .dato{font-size:12.5px;color:var(--dæmpet);white-space:nowrap}
  .tom-tilstand{text-align:center;padding:40px 26px}

  /* ---------- onboarding ---------- */
  .ob-mail{background:var(--p-hvid);border-radius:18px;padding:0;overflow:hidden;box-shadow:0 18px 44px rgba(var(--p-bark-rgb),.16);margin-bottom:16px}
  .ob-mail .m-top{background:var(--p-lys-6);padding:14px 18px;border-bottom:1px solid var(--p-lys-14);font-size:12.5px;color:var(--p-graa-6)}
  .ob-mail .m-krop{padding:22px 20px}
  .ob-kode{font-family:"SF Mono",Menlo,monospace;font-size:22px;letter-spacing:4px;color:var(--paa-lys);background:var(--p-lys-10);border-radius:12px;padding:12px 18px;text-align:center;margin:14px 0;font-weight:700}
  .kode-felt{display:flex;gap:10px;justify-content:center;margin:16px 0}
  .kode-cifre{font-family:"SF Mono",Menlo,monospace;font-size:24px;letter-spacing:10px;text-align:center}
  .advarsel{background:var(--p-lys-13);border:1px solid var(--p-kobber-6);border-radius:14px;padding:14px 16px;font-size:13.5px;line-height:1.55;color:var(--p-brun-4);margin:14px 0}

  /* Rolig forklaringsboks (KN 6/9). Bevidst IKKE .advarsel — den er ravgul og
     siger "pas på". Det her er en oplysning: hvorfor spørger vi om det her?
     Fladen er --anker-lys, den samme kølige grønne som faktafelterne, så den
     læses som information og ikke som et problem. */
  .info-boks{display:flex;gap:10px;align-items:flex-start;background:var(--anker-lys);
    border-radius:14px;padding:12px 14px;margin:10px 0 4px}
  .info-boks .ik{width:16px;height:16px;color:var(--anker-tekst);flex-shrink:0;margin-top:2px}
  .info-boks p{margin:0;font-size:13px;line-height:1.5;color:var(--anker-tekst)}

  /* ---------- sektions-bundnavigation (Forrige / Næste) ---------- */
  .fod-nav{display:flex;gap:10px}
  .fod-nav .knap{flex:1}
  /* Tilbage er smal, så det næste skridt får pladsen (KN 28/9: "Destination
     valgt" brækkede over to linjer i en knap med halv bredde). Står den
     alene — destinationen, før et sted er valgt — fylder den stadig ud.
     Under 360 px er den kun pilen; ordet står i aria-label. */
  .fod-nav .fod-tilbage{flex:0 0 auto}
  .fod-nav .fod-tilbage:only-child{flex:1}
  @media(max-width:359px){
    .fod-nav .fod-tilbage:not(:only-child) .fod-ord{display:none}
    .fod-nav .fod-tilbage:not(:only-child){padding-left:16px;padding-right:16px}
  }

  /* ---------- notifikations-banner ---------- */
  .notif-banner{display:flex;align-items:center;gap:13px;background:linear-gradient(150deg,var(--p-brun-11),var(--p-brun-13));border-radius:20px;padding:16px 18px;color:var(--p-lys-9);margin:18px 0 0;cursor:pointer;box-shadow:0 14px 34px rgba(var(--p-brun-18-rgb),.3)}
  .notif-banner .ik{color:var(--rav-lys)}

  /* ---------- splash ---------- */
  #splash{position:absolute;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
    overflow:hidden;animation:splashUd .9s cubic-bezier(.6,0,.3,1) 2.2s both}
  #splash .scene{position:absolute;inset:0;width:100%;height:100%}
  #splash .s-mid{position:relative;text-align:center}
  #splash .s-logo-wrap{animation:heroTekst 1.1s cubic-bezier(.2,.7,.3,1) .15s both}
  #splash .logo-svg{height:84px;margin:0 auto}
  #splash .brand-tag{font-size:12.5px;letter-spacing:3.5px;margin-top:10px;animation:heroTekst 1.1s cubic-bezier(.2,.7,.3,1) .5s both}
  #splash .s-linje{width:0;height:1px;background:rgba(var(--p-lys-7-rgb),.4);margin:14px auto 0;animation:linjeUd 1s ease .8s both}

  .succes-flash{position:absolute;top:calc(18px + var(--top));left:18px;right:18px;background:rgba(var(--p-brun-17-rgb),.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--p-lys-9);border-radius:18px;padding:15px 19px;font-size:14px;z-index:100;box-shadow:0 14px 34px rgba(var(--p-sort-rgb),.3);opacity:0;transform:translateY(-14px) scale(.97);transition:all .35s cubic-bezier(.2,.7,.3,1);pointer-events:none;display:flex;gap:11px;align-items:center;line-height:1.45}
  .succes-flash.vis{opacity:1;transform:none}
  .succes-flash .ik{color:var(--rav-lys);animation:pop .5s cubic-bezier(.2,.7,.3,1) .15s both}
  /* egen bekræftelsesboks i stedet for window.confirm() */
  .modal-bag{position:fixed;inset:0;background:rgba(var(--p-brun-23-rgb),.55);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
    display:flex;align-items:center;justify-content:center;z-index:300;padding:24px;
    animation:fadeUp .22s cubic-bezier(.2,.7,.3,1) both}
  .modal-kort{background:var(--flade);border-radius:var(--radius);padding:24px 22px;max-width:340px;width:100%;
    box-shadow:0 24px 60px rgba(var(--p-sort-rgb),.35);text-align:center}
  .modal-kort p{font-size:15px;color:var(--tekst);line-height:1.5;margin-bottom:18px}
  .modal-knapper{display:flex;gap:10px}
  .modal-knapper .knap{flex:1}

  /* ---------- forslag under et søgefelt (startpunktet, 28/9) ----------
     Én samlet liste i stedet for en stak piller: gaden øverst, byen dæmpet
     under, venstrestillet og med hårstreger imellem. */
  .forslag-liste{margin-top:8px;border:1.5px solid var(--linje);border-radius:14px;
    background:var(--felt-flade);overflow:hidden}
  .forslag-række{display:flex;align-items:center;gap:12px;width:100%;border:0;background:none;
    font-family:inherit;text-align:left;cursor:pointer;color:var(--tekst);padding:11px 14px}
  .forslag-række + .forslag-række{border-top:1px solid var(--linje-blød)}
  .forslag-række:active{background:rgba(var(--p-kobber-rgb),.10)}
  @media(hover:hover){.forslag-række:hover{background:rgba(var(--p-kobber-rgb),.08)}}
  .forslag-række:focus-visible{outline:2px solid var(--fjord);outline-offset:-2px}
  .forslag-ikon{flex:none;display:flex;color:var(--rav-tekst)}
  .forslag-ikon svg{width:18px;height:18px}
  .forslag-tekst{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
  .forslag-top{font-size:15px;font-weight:600;line-height:1.3}
  .forslag-under{font-size:12.5px;color:var(--dæmpet);line-height:1.35}
  /* Pladsholderen står midt i feltet, på linje med "Brug min placering"
     og "— eller vælg en anden adresse —" ovenover (KN 28/9). Det, man
     skriver, starter til venstre, som det plejer. */
  #spAdr:placeholder-shown{text-align:center}

  /* ---------- dato/tid-felter ---------- */
  input[type=date],input[type=time]{
    width:100%;border:1.5px solid var(--linje);border-radius:14px;padding:13px 15px;
    font-size:15px;font-family:inherit;background:var(--felt-flade);color:var(--tekst);transition:border-color .2s}
  input[type=date]:focus,input[type=time]:focus{outline:none;border-color:var(--fjord)}

  /* ---------- fødselsdag: dag/måned/år (24/8) ----------
     Erstatter det native dato-felt på onboardingens "Lidt om dig" — et
     kalenderhjul er dårligt egnet til fødselsdage (mange klik tilbage i
     tiden) og så forskelligt ud på tværs af Mac/Windows/Android, ligesom
     skriften gjorde det før 13/8. appearance:none + egen pil, så de tre
     felter ser ens ud overalt og matcher resten af formularen. */
  .dato-vælger{display:grid;grid-template-columns:1fr 1.5fr 1fr;gap:8px}
  .dato-vælger select{
    width:100%;border:1.5px solid var(--linje);border-radius:14px;padding:13px 24px 13px 12px;
    font-size:15px;font-family:inherit;background-color:rgba(var(--p-hvid-rgb),.55);color:var(--tekst);
    transition:border-color .2s;appearance:none;-webkit-appearance:none;cursor:pointer;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9.5 12 15l6-5.5' fill='none' stroke='%235f6353' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat:no-repeat;background-position:right 6px center;background-size:16px}
  .dato-vælger select:focus{outline:none;border-color:var(--fjord)}
  .dato-vælger select:invalid,.dato-vælger select option[value=""]{color:var(--dæmpet)}

  /* ---------- spontan tur: lille link på forsiden ---------- */
  .spontan-link{margin-top:16px;background:rgba(var(--p-lys-9-rgb),.12);border:1px solid rgba(var(--p-lys-9-rgb),.28);
    color:rgba(var(--p-lys-7-rgb),.92);border-radius:100px;padding:10px 18px;font-family:inherit;font-size:13.5px;font-weight:600;
    cursor:pointer;display:inline-flex;align-items:center;gap:8px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
    animation:heroTekst .8s cubic-bezier(.2,.7,.3,1) .34s both;transition:transform .15s,background .2s}
  .spontan-link .ik{width:16px;height:16px;color:var(--rav-lys)}
  .spontan-link:active{transform:scale(.96)}
  @media(hover:hover){.spontan-link:hover{background:rgba(var(--p-lys-9-rgb),.2)}}

  /* ---------- spontan-wizard ---------- */
  .wizard-top{margin-bottom:18px}
  .wiz-etiket{font-size:11px;letter-spacing:1.8px;text-transform:uppercase;font-weight:700;color:var(--rav-tekst)}
  .wiz-prik-række{display:flex;gap:6px;margin-top:12px}
  .wiz-prik{flex:1;height:4px;border-radius:100px;background:var(--flade-dyb);transition:background .25s}
  .wiz-prik.aktiv{background:var(--anker)}
  .wiz-prik.klaret{background:var(--rav)}
  .wiz-spm{font-size:22px;margin:6px 0 4px;color:var(--gran)}
  .wiz-under{color:var(--dæmpet);font-size:14px;margin-bottom:4px;line-height:1.5}

  /* segmenterede valg (enten/eller) */
  .seg-række{margin:16px 0}
  .seg-titel{font-size:12.5px;font-weight:650;color:var(--gran);margin-bottom:8px;letter-spacing:.3px}
  .seg-valg{display:flex;gap:10px}
  /* Segmentknappen beholder sin egen kant (1.5px linje) — den skal LIGNE et valg,
     ikke et kort. Men fladen er den fælles. */
  .seg-knap{flex:1;background:var(--kort-flade);border:1.5px solid var(--linje);border-radius:var(--radius-m);
    padding:15px 10px 13px;font-family:inherit;cursor:pointer;text-align:center;color:var(--tekst);
    display:flex;flex-direction:column;align-items:center;gap:7px;transition:all .18s}
  .seg-knap .ik{width:24px;height:24px;color:var(--fjord)}
  .seg-knap span{font-size:13.5px;font-weight:600}
  .seg-knap:active{transform:scale(.96)}
  .seg-knap.valgt{background:var(--anker);border-color:var(--anker);color:var(--p-lys-9)}
  .seg-knap.valgt .ik{color:var(--rav-lys)}

  /* afstands-slider */
  .radius-vis{text-align:center;margin:8px 0 18px}
  .radius-tal{font-family:var(--skrift-brød);font-weight:700;font-size:26px;letter-spacing:-.3px;
    font-variant-numeric:tabular-nums lining-nums;color:var(--anker-tekst);line-height:1.15}
  .radius-under{color:var(--dæmpet);font-size:13px;margin-top:2px}
  input[type=range].radius{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:100px;
    background:linear-gradient(90deg,var(--rav),var(--flade-dyb));outline:none;margin:6px 0}
  input[type=range].radius::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:26px;height:26px;border-radius:50%;
    background:radial-gradient(circle at 38% 30%,var(--p-lys-2),var(--p-kobber-2));border:2px solid var(--gran);cursor:pointer;
    box-shadow:0 4px 12px rgba(var(--p-bark-rgb),.3)}
  input[type=range].radius::-moz-range-thumb{width:26px;height:26px;border-radius:50%;
    background:var(--p-lys-11);border:2px solid var(--gran);cursor:pointer}
  .radius-mærker{display:flex;justify-content:space-between;font-size:11px;color:var(--dæmpet);margin-top:6px}

  /* resultat-kort (3 steder) */
  .res-kort{border-radius:var(--radius-m);padding:18px;margin-bottom:13px;cursor:pointer;
    display:flex;gap:15px;align-items:flex-start;text-align:left;width:100%;font-family:inherit;color:var(--tekst);transition:transform .18s,box-shadow .2s}
  .res-kort:active{transform:scale(.98)}
  @media(hover:hover){.res-kort:hover{transform:translateY(-2px);box-shadow:var(--kort-skygge-løft)}}
  .res-ikon{width:46px;height:46px;border-radius:14px;background:var(--p-lys-19);color:var(--p-brun-1);display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .res-krop{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:3px}
  .res-navn{font-weight:650;font-size:15.5px;color:var(--gran)}
  .res-meta{font-size:12.5px;color:var(--dæmpet);margin-top:3px;line-height:1.45}
  .res-mærke{display:inline-block;font-size:10px;letter-spacing:1px;text-transform:uppercase;font-weight:700;
    color:var(--p-brun-3);background:var(--p-lys-18);border-radius:100px;padding:2px 9px;margin-top:8px}
  .res-mærke.ægte{color:var(--p-groen-5);background:var(--p-lys-17)}

  /* ---------- de tre steder som stående fotokort (13/8) ----------
     Vandret række med snap i stedet for tre kort under hinanden: tre fuldbredde
     3:4-kort ville være 1300px indhold på en 800px skærm, og skærmen, hvis
     hele formål er at SAMMENLIGNE, ville blive noget man scroller forbi.
     Kortene bløder ud til skærmkanten via negativ margin, så man kan se, at
     der er mere til højre. */
  .sted-række{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;
    margin:0 -22px;padding:2px 22px 14px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .sted-række::-webkit-scrollbar{display:none}
  .sted-kort{position:relative;flex:0 0 72%;aspect-ratio:3/4;scroll-snap-align:start;
    border:none;padding:0;border-radius:20px;overflow:hidden;cursor:pointer;display:block;
    text-align:left;font-family:inherit;color:inherit;background:var(--flade-dyb);
    box-shadow:0 10px 28px rgba(var(--p-bark-rgb),.14);transition:transform .18s,box-shadow .2s}
  .sted-kort:active{transform:scale(.98)}
  @media(hover:hover){.sted-kort:hover{transform:translateY(-2px);box-shadow:0 18px 40px rgba(var(--p-bark-rgb),.2)}}
  .sk-foto{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
  /* Steder uden billeder får landskabets egen aftenhimmel, ikke et tomt felt */
  .sted-kort.uden-foto{background:linear-gradient(168deg,var(--p-brun-8) 0%,var(--p-sand-9) 58%,var(--p-kobber-8) 100%)}
  .sk-vandmærke{position:absolute;right:-16px;bottom:6px;color:var(--p-lys-7);opacity:.16;
    display:block;line-height:0}
  .sk-vandmærke .ik{width:132px;height:132px;stroke-width:1.1}
  /* Gradienten ligger på TEKSTEN, ikke på kortet: så er bunden under skriften
     kendt uanset hvor lyst fotografiet er, og kontrasten kan garanteres. */
  .sk-tekst{position:absolute;left:0;right:0;bottom:0;padding:30px 16px 15px;
    display:flex;flex-direction:column;gap:3px;
    background:linear-gradient(to top,rgba(var(--p-brun-25-rgb),.9) 0%,rgba(var(--p-brun-25-rgb),.62) 55%,transparent 100%)}
  .sk-navn{font-family:var(--skrift-display);font-weight:600;font-size:19px;line-height:1.2;
    color:var(--p-lys-7);text-shadow:0 1px 10px rgba(var(--p-sort-rgb),.45)}
  .sk-meta{font-size:12px;color:rgba(var(--p-lys-7-rgb),.86);line-height:1.4}
  /* ---------- det fremhævede ord (14/8) ----------
     Tre kort, der alle sagde "rammer 3 af 3 ønsker", fortalte i praksis
     ingenting: man skulle ind på hvert enkelt for at finde ud af, hvad der
     skilte dem. Ordet er stedets ene kendetegn, og det står som overlinje
     OVER navnet — ikke som endnu et mærke i hjørnet, hvor det ville slås med
     "★ Testet af Arytmi" om pladsen på en 250px-bred kortflade. */
  .sk-ord{font-size:10.5px;font-weight:700;letter-spacing:2.2px;text-transform:uppercase;
    color:var(--rav-lys);text-shadow:0 1px 8px rgba(var(--p-sort-rgb),.5);margin-bottom:1px}
  /* Datastriben. Egen linje under navnet, adskilt af en hårstreg, lige brede
     cifre. Kortet kan nu vælges på tal og ikke kun på fornemmelse. */
  .sk-fakta{display:flex;flex-wrap:wrap;align-items:center;gap:0 7px;margin-top:7px;
    padding-top:8px;border-top:1px solid rgba(var(--p-lys-7-rgb),.28);
    font-variant-numeric:tabular-nums lining-nums;
    font-size:12px;color:rgba(var(--p-lys-7-rgb),.94);letter-spacing:.1px}
  .sk-fakta b{font-weight:700}
  .sk-fakta i{color:rgba(var(--p-lys-7-rgb),.42);font-style:normal}
  /* Stempel i hjørnet frem for etiket i bunden — så flytter det sig ikke,
     når stedets navn er langt. Samme farver som .hero-mærkat, der allerede
     er appens svar på "etiket oven på et fotografi". */
  /* Flere mærker kan stå på én gang (OD 4/10) — de stables i hjørnet. */
  .sk-mærker{position:absolute;top:12px;left:12px;right:12px;display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start}
  .sk-tekst .sk-stjerner{font-size:14px;line-height:1}
  .sk-mærke{font-size:10px;letter-spacing:1px;
    text-transform:uppercase;font-weight:700;padding:5px 10px;border-radius:100px;
    background:rgba(var(--p-lys-7-rgb),.92);color:var(--p-brun-6)}
  .sk-mærke.måske{background:rgba(var(--p-lys-7-rgb),.9);color:var(--p-brun-4)}
  /* Kladden (4A). Gran og ikke rav: rav er appens "her skal du kigge", og
     en kladde skal netop IKKE se ud som noget, kunden er ude efter. Den
     skal se ud som noget, der ikke er færdigt. */
  .sk-mærke.kladde{background:var(--gran);color:var(--p-lys-7)}
  /* Anbefalet af Arytmi (KN 24/9): kobber og ikke creme, så den skiller sig
     ud fra "Testet", som alle vores steder er. */
  .sk-mærke.anbefalet,.sg-mærkat.anbefalet{background:var(--rav);color:var(--p-lys-7)}

  /* ---------- destinationens galleri (13/8) ----------
     Stående 3:4 i fuld bredde. Billederne er taget stående med en telefon —
     det er formatet, der viser, at nogen har stået der. */
  .sted-galleri{position:relative;margin:0 -22px 16px;aspect-ratio:3/4;overflow:hidden;background:var(--flade-dyb)}
  .sg-spor{position:absolute;inset:0;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;scrollbar-width:none}
  .sg-spor::-webkit-scrollbar{display:none}
  .sg-spor img{flex:0 0 100%;width:100%;height:100%;object-fit:cover;scroll-snap-align:center;
    display:block;cursor:zoom-in}
  .sted-galleri.uden-foto{background:linear-gradient(168deg,var(--p-brun-8) 0%,var(--p-sand-9) 58%,var(--p-kobber-8) 100%);aspect-ratio:4/3}
  .sg-vandmærke{position:absolute;right:-18px;bottom:34px;color:var(--p-lys-7);opacity:.16;line-height:0}
  .sg-vandmærke .ik{width:150px;height:150px;stroke-width:1.1}
  .sg-ingen{position:absolute;top:18px;left:22px;right:22px;font-size:13px;
    color:rgba(var(--p-lys-7-rgb),.82);font-style:italic}
  /* pointer-events:none — ellers ville et træk hen over teksten ikke bladre */
  .sg-tekst{position:absolute;left:0;right:0;bottom:0;padding:56px 22px 26px;pointer-events:none;
    background:linear-gradient(to top,rgba(var(--p-brun-25-rgb),.92) 0%,rgba(var(--p-brun-25-rgb),.58) 56%,transparent 100%)}
  .sg-navn{font-family:var(--skrift-display);font-weight:600;font-size:26px;line-height:1.18;
    color:var(--p-lys-7);text-shadow:0 1px 12px rgba(var(--p-sort-rgb),.45);margin:0}
  .sg-under{font-size:13.5px;line-height:1.5;color:rgba(var(--p-lys-7-rgb),.85);margin-top:6px;max-width:30em}
  .sg-mærkat{display:inline-block;font-size:10px;letter-spacing:1.4px;text-transform:uppercase;
    font-weight:700;padding:4px 10px;border-radius:100px;background:rgba(var(--p-lys-7-rgb),.9);
    color:var(--p-brun-6);margin-bottom:9px}
  .sg-prikker{position:absolute;left:0;right:0;bottom:11px;display:flex;gap:5px;justify-content:center;
    pointer-events:none}
  .sg-prikker span{width:6px;height:6px;border-radius:50%;background:rgba(var(--p-lys-7-rgb),.42);
    transition:background .2s,transform .2s}
  .sg-prikker span.på{background:var(--p-lys-7);transform:scale(1.25)}

  /* ---------- nedtælling + tjekliste (forsiden når turen har en dato) ---------- */
  .ned-hero{position:relative;color:var(--p-lys-9);padding:0 0 20px;overflow:hidden}
  .ned-hero svg.scene{position:absolute;inset:0;width:100%;height:100%;display:block}
  .ned-hero::after{content:'';position:absolute;inset:0;z-index:0;
    /* ⚠️ BUNDEN ER MØRKEST MED VILJE (KN 17/9). Sted, dato og lys lander
       oven på vandets spejling, som er scenens LYSESTE sted — og en
       lys tekst på et lyst vand kan ikke læses. Før stod bunden på .4;
       nu trapper den op ad tre trin, så landskabet stadig er der, men
       teksten ligger på noget mørkt. */
    /* KN 5/10: samme farver hele vejen — toppen er nu klar som på
       velkomstskærmen og forsiden, kun bunden er stadig mørkest. */
    background:linear-gradient(to top,rgba(var(--p-brun-25-rgb),.62) 0%,rgba(var(--p-brun-25-rgb),.32) 30%,transparent 60%)}
  .ned-hero .ned-lag{position:relative;z-index:1;padding:20px 22px 12px}
  /* ⚠️ HØJDEN ER SAT, og det er en rettelse, ikke en smag (KN 17/9:
     "kan du forbedre det hele lidt mere grafisk?").

     Heroen fik en sjette linje, da døgnets lys flyttede herop, men den
     voksede ikke med. Scenen er tegnet i 430x420 og blev presset ned i
     375x305 — landskabet blev en stribe, bilen og bålet forsvandt under
     kanten, og teksten laa klods op ad bunden. Med 355 px er billedet et
     billede igen, og der er luft under de tre linjer.

     KUN paa de to planlaegnings-heroer. Loggens hero (skaermLog) baerer
     en titel og en knap og har ikke brug for hoejden - derfor en
     modifikator og ikke .ned-hero selv. */
  .ned-rejse{min-height:355px}
  .ned-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px}
  /* Det store tal BLIVER i Fraunces — her er tallet en følelse, ikke en måling */
  .ned-tal{font-family:var(--skrift-display);font-size:64px;line-height:.95;color:var(--p-lys-7);
    font-variant-numeric:lining-nums;text-shadow:0 2px 16px rgba(var(--p-sort-rgb),.3)}
  .ned-label{font-size:12px;letter-spacing:2.4px;text-transform:uppercase;color:rgba(var(--p-lys-7-rgb),.78);font-weight:600;margin-bottom:6px}
  /* ---------- HVORNÅR OG HVOR (KN 17/9) ----------
     Sted, dato og døgnets lys er ÉN gruppe. Før stod de som tre løse
     linjer, og lyset kom oven i købet i en pille med ramme og baggrund —
     det eneste indrammede i en hero, der ellers kun er tekst på et
     landskab. Kennet: "nu bliver det hele ret rodet". Han havde ret.

     Nu: én hårfin streg OVER gruppen i stedet for en kasse OM en af
     linjerne. Stregen skiller nedtællingen fra svaret på hvornår og hvor,
     og de tre linjer aftager i styrke nedad — stedet er det lyseste, lyset
     det svageste. Det er den samme trappe, resten af appen bruger. */
  /* ⚠️ INGEN STREG. Den var der i ti minutter og blev pillet ud igen:
     en hårfin linje på 16 % hvidt forsvinder fuldstændig oven på en
     solnedgang i vand. Den løste ingenting og lagde én ting mere på et
     billede, der i forvejen har travlt. Afstanden grupperer alene —
     18 px over gruppen mod 3-5 px inde i den, og øjet samler den selv. */
  .ned-naar{margin-top:18px}
  /* KN 5/10: ingen nål foran, og stedet i overskrifternes skrift. Datoen i
     samme kapitæler som "NEDTÆLLING" og "DAGE TIL JERES TUR" (.ned-label). */
  .ned-sted{font-family:var(--skrift-display);font-weight:600;font-size:22px;line-height:1.2;letter-spacing:.2px;
    color:var(--p-lys-7);text-shadow:0 1px 8px rgba(var(--p-sort-rgb),.25)}
  .ned-dato{font-size:12px;letter-spacing:2.4px;text-transform:uppercase;font-weight:600;margin-top:6px;
    color:rgba(var(--p-lys-7-rgb),.78);text-shadow:0 1px 6px rgba(var(--p-sort-rgb),.45)}
  /* Lyset er datoens lillesøster: samme størrelse, samme dæmpning, kun
     ikonet i kobber. Tallene i tabular, så de ikke danser, når klokken
     skifter fra 07.09 til 07.10. */
  .ned-sol{
    display:flex; align-items:center; gap:7px; flex-wrap:wrap;
    margin-top:5px; font-size:13px; color:rgba(var(--p-lys-7-rgb),.78);
    text-shadow:0 1px 6px rgba(var(--p-sort-rgb),.45);
    font-variant-numeric:tabular-nums lining-nums;
  }
  .ned-sol .ik{width:14px;height:14px;color:var(--rav-lys);flex:0 0 auto}
  .ned-sol-lys{opacity:.66}
  .tjek-blok{padding:20px 18px 8px}
  .tjek-overskrift{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:4px}
  .tjek-overskrift h2{font-size:18px;color:var(--gran)}
  .tjek-tæl{font-family:var(--skrift-brød);font-weight:700;color:var(--anker-tekst);font-size:14px;
    font-variant-numeric:tabular-nums lining-nums}
  .tjek-bar{height:6px;background:var(--flade-dyb);border-radius:100px;margin:12px 0 18px;overflow:hidden}
  .tjek-bar .fyld{height:100%;background:linear-gradient(90deg,var(--rav),var(--anker));border-radius:100px;transition:width .5s cubic-bezier(.2,.7,.3,1)}
  /* ---------- bilens instrumentbræt (14/8) ----------
     Fire felter, man aflæser i stedet for at læse. Tallene i Inter med lige
     brede cifre, så de står som instrumenter og ikke som pynt. */
  .maaler-net{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:16px}
  .maaler{background:var(--flade);border:1px solid var(--linje);border-radius:var(--radius-m);
    padding:13px 14px}
  .maaler .m-navn{font-size:10px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;
    color:var(--dæmpet)}
  .maaler .m-tal{font-variant-numeric:tabular-nums lining-nums;font-size:20px;font-weight:700;
    color:var(--anker-tekst);line-height:1.2;margin-top:4px;letter-spacing:-.2px}
  .maaler .m-tal small{font-size:12.5px;font-weight:600;color:var(--anker-mid)}
  .maaler .m-under{font-size:11.5px;color:var(--dæmpet);margin-top:3px;line-height:1.35}
  .maaler.ok{background:var(--anker-lys);border-color:var(--p-groen-2)}
  .maaler.ok .m-tal{color:var(--p-groen-7)}
  @media(max-width:359px){ .maaler-net{grid-template-columns:1fr} }

  /* ---------- overskrift over de tre planlægningspunkter (14/8, OD) ---------- */
  .plan-overskrift{margin:22px 0 10px}
  .plan-overskrift h3{font-size:16.5px;line-height:1.3}
  /* ---------- invitationen som rund knap i bunden (14/8, OD) ----------
     Samme form som startknappen på forsiden, men mindre og uden pulsringe:
     den skal læses som sidens ene store greb, ikke som en ny nedtælling. */
  .inviter-blok{display:flex;flex-direction:column;align-items:center;gap:9px;
    margin:26px 0 4px;padding-top:22px;border-top:1px solid var(--linje)}
  .rund-knap.inviter-rund{width:68px;height:68px;box-shadow:0 8px 22px rgba(var(--p-bark-rgb),.22),
    inset 0 1px 0 rgba(var(--p-hvid-rgb),.95)}
  .rund-knap.inviter-rund::after{inset:-6px;border-color:rgba(var(--p-kobber-rgb),.34)}
  .rund-knap.inviter-rund .ik{width:27px;height:27px;color:var(--anker-tekst)}
  .inviter-tekst{font-family:var(--skrift-display);font-weight:600;font-size:16px;
    color:var(--gran);text-align:center;line-height:1.3}
  .inviter-under{font-size:12.5px;color:var(--dæmpet);text-align:center;margin-top:-4px}

  .tjek-punkt{display:flex;align-items:center;gap:14px;width:100%;
    border-radius:var(--radius-m);padding:15px 16px;margin-bottom:10px;font-family:inherit;cursor:pointer;text-align:left;
    transition:transform .16s,box-shadow .2s}
  .tjek-punkt:active{transform:scale(.98)}
  @media(hover:hover){.tjek-punkt:hover{transform:translateY(-2px);box-shadow:var(--kort-skygge-løft)}}
  .tjek-boks{width:28px;height:28px;border-radius:50%;border:1.8px solid var(--p-sand-6);flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .25s}
  .tjek-boks .ik{width:15px;height:15px;color:var(--p-lys-9);stroke-width:2.6;opacity:0;transform:scale(.6);transition:all .25s}
  .tjek-punkt.klar .tjek-boks{background:var(--anker);border-color:var(--anker)}
  .tjek-punkt.klar .tjek-boks .ik{opacity:1;transform:none}
  .tjek-krop{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
  .tjek-navn{font-weight:650;font-size:15px;color:var(--gran)}
  .tjek-punkt.klar .tjek-navn{color:var(--fjord)}
  .tjek-under{font-size:12.5px;color:var(--dæmpet);margin-top:2px}
  .tjek-pil{color:var(--p-sand-7);flex-shrink:0}
  .tjek-punkt.klar .tjek-pil{opacity:.4}
  /* Låst: venter på at rejsemakkeren bekræfter datoen. Stadig trykbar — man
     får en forklaring i stedet for at komme ind — men tydeligt dæmpet. */
  .tjek-punkt.låst{opacity:.55;cursor:default}
  .tjek-punkt.låst:active{transform:none}
  @media(hover:hover){.tjek-punkt.låst:hover{transform:none;box-shadow:0 8px 22px rgba(var(--p-bark-rgb),.05)}}
  .tjek-punkt.låst .tjek-boks{background:var(--p-lys-20);border-color:var(--p-lys-20)}
  .tjek-punkt.låst .tjek-boks .ik{opacity:1;transform:none;color:var(--p-sand-8)}
  .tjek-punkt.låst .tjek-pil{opacity:.5}
  .knap.låst{opacity:.55}

  /* ---------- forsiden på lavere skærme ----------
     Forsiden skal blive ved med at være ét helt skærmbillede. På telefoner,
     der er lavere end en Pro Max (fx iPhone X/SE) faldt 'spontan tur'-knappen
     ned bag bundnavet. Vi strammer NEDEFRA — luften under teksten, og ikke
     luften over overskriften, så kompositionen (sol, overskrift, landskab)
     bliver stående som den er. */
  @media(max-height:880px){
    .hero.fuld{height:calc(var(--skaerm) - 76px)}
    .hero.fuld .overlay{padding-bottom:calc(12px + var(--bund-luft))}
    .hero.fuld .rund-start{margin-top:18px;gap:10px}
    .rund-knap{width:96px;height:96px}
    .rund-knap .ik{width:33px;height:33px}
    .spontan-link{margin-top:10px}
  }
  /* Under ~700px (SE, ældre Android) rækker det ikke — her må luften over
     overskriften også give sig. */
  @media(max-height:700px){
    .hero.fuld .h-bund{margin-top:56px}
    .hero.fuld .h-bund h1{font-size:29px}
    .hero.fuld .h-under{font-size:17.5px}
    .hero.fuld .h-bund p{font-size:14px;margin-top:8px}
    .rund-knap{width:86px;height:86px}
    .rund-knap .ik{width:30px;height:30px}
  }

  @media(prefers-reduced-motion:reduce){
    /* Rettet 13/8: før stod her kun animation-duration:.001s, hvilket fik de
       uendelige sløjfer (ildfluer, stjerneskud, pulsringe) til at køre
       HURTIGERE i stedet for at stoppe. Antallet af gentagelser og forsinkelsen
       skal med, ellers gør reglen det modsatte af det, den lover. */
    *,*::before,*::after{
      animation-duration:.001s !important;
      animation-iteration-count:1 !important;
      animation-delay:0s !important;
      transition-duration:.001s !important;
    }
    .sted-række,.sg-spor,.foto-stribe,.indhold{scroll-behavior:auto !important}
    #splash{display:none}
  }

  /* ---------- fokus: appen kunne ikke betjenes med tastatur (13/8) ----------
     Alle fem :focus-regler i filen slog markeringen fra uden at sætte noget i
     stedet. :focus-visible vises kun ved tastatur, ikke ved tryk — så det
     generer ingen på telefonen. */
  :where(button,a,input,textarea,select,[tabindex]):focus-visible{
    outline:2px solid var(--rav);outline-offset:2px;border-radius:4px}
  /* ... men IKKE selve indholdsbeholderen. Den får fokus ved hver navigation,
     så skærmlæseren læser den nye skærm op (se efterNavigation() i app.js).
     Den er ikke en betjening, og en kobberring om hele fladen ved hvert
     skærmskift ville se ud som en fejl. Reglen skal stå EFTER :where ovenfor:
     :where() vejer nul, så en ren id-selektor vinder uanset rækkefølge — men
     den står her, fordi det er her, den hører til at blive læst. */
  #indhold:focus,#indhold:focus-visible{outline:none}
  .knap:focus-visible,.tilbage:focus-visible,
  .navpunkt:focus-visible,.sted-chip:focus-visible,.eget-tilføj:focus-visible{
    outline:2px solid var(--rav);outline-offset:3px}
  .rund-knap:focus-visible,.start-pille:focus-visible,.tjekboks:focus-visible,.prik-valg:focus-visible{
    outline:2px solid var(--rav);outline-offset:4px}
  .sted-kort:focus-visible,.res-kort:focus-visible,.tjek-punkt:focus-visible,
  .forslag-knap:focus-visible,.seg-knap:focus-visible{
    outline:2px solid var(--rav);outline-offset:3px}
  /* På mørk bund skal ringen være lys for at kunne ses */
  .hero :focus-visible,.sted-kort:focus-visible,.sg-spor img:focus-visible,
  .bundnav :focus-visible{outline-color:var(--rav-lys)}

  /* ---------- tryk-flader op på 44px (13/8) ----------
     Måles med et usynligt felt via ::after, så knapperne SER ud præcis som før
     — det er kun fingerens mål, der vokser. */
  .knap.lille{min-height:44px}
  .tilbage{width:44px;height:44px}
  .eget-fjern,.prik-valg,.tjekboks,.sted-chip,.bil-info{position:relative}
  .eget-fjern::after,.tjekboks::after,.sted-chip::after,.bil-info::after{
    content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
    width:max(100%,44px);height:max(100%,44px)}
  /* Bedømmelsesprikkerne står fem i træk med 8px imellem — et 44px bredt felt
     ville få naboernes felter til at overlappe, så man ramte den forkerte.
     De vokser derfor kun i højden, hvor rækken er tynd. */
  .prik-valg::after{
    content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
    width:100%;height:44px}

  /* ---------- Dine arytmer (OD 31/8) ---------- */
  /* Overskrifterne der deler listen i kommende og afholdte ture. */
  .aryt-sektion{font-size:17px;margin:26px 0 12px}
  /* Loggen som profilen (28/9): skærmTop øverst, så hovedknappen og det
     stille link, så listen. .tjek-blok står under .side og har selv sin
     sidemargen, så siden selv holder sig til toppen. */
  .log-side{padding-bottom:0}
  .log-ny{gap:12px}
  .log-ny .logo-puls{width:52px}
  .log-spontan{display:block;margin:12px auto 0;border:0;background:none;font-family:inherit;
    font-size:13.5px;font-weight:400;color:var(--dæmpet);text-decoration:underline;   /* ikke fed (KN 5/10) */
    text-underline-offset:3px;cursor:pointer;padding:6px 4px}
  .log-side + .tjek-blok{padding:4px 22px 8px}
  /* De to greb under hver kommende tur: se turplanen, eller kom videre.
     Side om side på en telefon — de er lige vigtige, og en kolonne ville
     skubbe næste tur ned under kanten. */
  .aryt-knapper{display:flex;gap:8px;margin-top:14px}
  /* Stablet: bruges når turens sidste greb (send destination til køretøj)
     står på kortet — en fire-ords etiket kan ikke være i en halv bredde. */
  .aryt-knapper.stablet{flex-direction:column-reverse;gap:9px}
  /* Loggens header (KN 4/9): årshjulet og "Ny arytme" ligger oven på
     hero-scenen — samme signatur som nedtællingsforsiden. Før stod titlen for
     sig selv, og hjulet fyldte et helt kort midt nede i listen. */
  .log-hoved{display:flex;align-items:center;justify-content:space-between;gap:10px}
  .log-titel{font-size:26px;line-height:1.15;color:var(--p-lys-7);text-shadow:0 2px 16px rgba(var(--p-sort-rgb),.3)}
  .rund-start.log-start{margin-top:10px;gap:0}
  /* Det bare tekstlink fra forsiden (KN 28/9): ingen pille, så det ikke
     konkurrerer med "Ny arytme" lige over. */
  .rund-start.log-start .spontan-link{margin-top:10px;background:none;border:0;padding:6px 2px;
    font-size:12px;font-weight:500;color:rgba(var(--p-creme-rgb),.82);
    backdrop-filter:none;-webkit-backdrop-filter:none}
  /* Startknappen i loggen er en PILLE, ikke en cirkel (KN 6/9). "Ny arytme" er
     to ord — inde i en 104px cirkel brækkede de over to linjer, og sidens ene
     store greb blev det, der så mest tilfældigt ud. Pillen beholder brandet
     (creme, dobbeltring, pulsen fra logoet) og lader ordene stå på én linje. */
  /* ---------- "NY ARYTME" ER GJORT STILLE (KN 17/9) ----------
     "Jeg tænker bare du kan fjerne denne knap eller i hvert fald gøre den
     mere diskret."

     ⚠️ DEN KUNNE IKKE FJERNES, og det er værd at vide hvorfor, før nogen
     prøver igen. Med en tur i gang er den her knap den ENESTE vej til tur
     nummer to: forsiden viser så turens tjekliste i stedet for "Start
     her", og "Planlæg endnu en arytme" blev fjernet fra planlægningen
     samme dag. Uden den kan man ikke oprette en tur mere.

     Så den blev stille i stedet. Før var den cremefyldt, 56 px høj, med
     slagskygge, gløde og en dobbeltring udenom — altså skærmens største
     greb, på en skærm hvor man kigger på de ture, man ALLEREDE har. Nu er
     den en kontur: ingen fyld, ingen skygge, ingen ring. Den kan findes,
     når man leder efter den, og den råber ikke, når man ikke gør.

     Pulsen følger teksten via currentColor — knappen står nu på det mørke
     landskab og ikke på creme, så barkfarven fra .rk-puls ville forsvinde
     her på nøjagtig samme måde, som creme gjorde på den runde knap. */
  .start-pille{position:relative;display:inline-flex;align-items:center;gap:9px;
    min-height:42px;padding:0 18px;border-radius:100px;cursor:pointer;
    font-family:var(--skrift-brød);font-size:12.5px;font-weight:700;letter-spacing:1.4px;
    text-transform:uppercase;white-space:nowrap;user-select:none;
    color:rgba(var(--p-lys-7-rgb),.88);
    background:rgba(var(--p-brun-24-rgb),.24);
    border:1px solid rgba(var(--p-creme-rgb),.28);
    -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px);
    box-shadow:none;
    transition:transform .22s cubic-bezier(.2,.7,.3,1),border-color .25s,color .25s}
  /* Pulsen står EFTER ordet og slår (KN 28/9) — den afløser pilen. Den svage
     streg står altid; det lyse spor tegner slaget og falmer. */
  .sp-puls{width:40px;height:17px;flex-shrink:0;overflow:visible;position:relative;z-index:2}
  .sp-puls path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
  .sp-puls-bund{stroke:currentColor;stroke-width:1.8;opacity:.32}
  /* ÉT SLAG, SÅ STÅR DEN (KN 28/9: "animationen skal køre én gang og
     slutte — det er for stressende at se på"). Sporet tegner pulsen, når
     skærmen kommer frem, og bliver stående tegnet. Hvilestillingen ER den
     tegnede streg, så uden animation (reduceret bevægelse, eller en
     gentegning uden skærmskift) står pulsen der bare. */
  .sp-puls-spor{stroke:var(--rav-lys);stroke-width:2.4;stroke-dasharray:100;stroke-dashoffset:0;
    filter:drop-shadow(0 0 2.5px rgba(var(--p-kobber-lys-rgb),.75));
    animation:pulsSlag 1.3s cubic-bezier(.45,0,.25,1) .35s both}
  @keyframes pulsSlag{from{stroke-dashoffset:100}to{stroke-dashoffset:0}}
  /* LOGOETS PULS (OD 4/10). Den ægte logofil som maske, beskåret til pulsen:
     viewBox-udsnittet 1330 1414 1612×446 af logoets 140 140 3868×1720 (målt
     på PNG'en: x 300–697, y 321–429). Størrelse og position er regnet ud af
     det — 3868/1612 = 239,95 %, (1330−140)/(3868−1612) = 52,75 %, bunden flugter.
     Farven er tekstens. Tegner sig fra venstre én gang, som pulsen før. */
  .logo-puls{display:block;flex-shrink:0;width:56px;aspect-ratio:1612/446;background:currentColor;
    -webkit-mask:url("brand/arytmi_logo_2026/arytmi_brun.svg") 52.75% 100%/239.95% auto no-repeat;
    mask:url("brand/arytmi_logo_2026/arytmi_brun.svg") 52.75% 100%/239.95% auto no-repeat;
    animation:logoPulsSlag 1.3s cubic-bezier(.45,0,.25,1) .35s both}
  @keyframes logoPulsSlag{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
  @media(prefers-reduced-motion:reduce){.logo-puls{animation:none}}
  @media(prefers-reduced-motion:reduce){.sp-puls-spor{animation:none}}
  /* Ringen banker ikke længere. Den er brandet, men en puls, der slår på
     en knap, man ikke skal trykke på lige nu, er præcis det, der gjorde
     knappen for højlydt. Selve EKG-stregen bliver — DEN er mærket. */
  .start-pille .sp-ring{display:none}
  .start-pille .sp-ord{position:relative;z-index:2}
  .start-pille:active{transform:scale(.97)}
  @media(hover:hover){
    .start-pille:hover{border-color:rgba(var(--p-creme-rgb),.5);color:var(--p-lys-7)}}
  /* Pulsringen bliver — den er brandet. Den slår bare i pilleform nu, og kun 6%
     ud, så en bred knap ikke sender en ring hen over hele skærmen. */
  @keyframes pille-ping{0%{transform:scale(1);opacity:.7}70%{opacity:0}100%{transform:scale(1.06);opacity:0}}
  .sp-ring{position:absolute;inset:0;border-radius:100px;
    border:1.5px solid rgba(var(--p-kobber-lys-rgb),.85);pointer-events:none;
    animation:pille-ping 3.6s cubic-bezier(.2,.6,.3,1) infinite}
  @media(max-width:360px){ .start-pille{font-size:13px;padding:0 18px;letter-spacing:1.4px} }
  @media(max-width:360px){ .log-titel{font-size:23px} }

  /* Pop-uppen "Log spontan tur"/"Anmeld turen" er et skema, ikke en besked —
     derfor venstrestillet, og med lov til at scrolle på en lav telefon. */
  .spontan-kort{text-align:left;max-height:82vh;overflow-y:auto;padding-bottom:0}
  /* Gem-knappen skal blive stående, også når skemaet må scrolles på en lav
     telefon (375x667) — ellers ligger vejen ud af pop-uppen under kanten. */
  .spontan-kort .modal-knapper{position:sticky;bottom:0;background:var(--flade);
    padding:12px 0 20px;margin-top:14px}
  .spontan-kort p{font-size:14px;margin-bottom:2px}
  /* Prikkerne skal levne plads til selve spørgsmålet i en smal pop-up —
     ellers brækker "Hvor god var destinationen?" over tre linjer, og skemaet
     bliver dobbelt så højt som det behøver. */
  .spontan-kort .bedøm-række{padding:11px 0}
  .spontan-kort .prikker{gap:6px}
  .spontan-kort .prik-valg{width:25px;height:25px}

  /* Vælg alle / Fravælg alle over en emneliste (KN 4/9) */
  .vælg-alle{text-align:right;margin:0 0 4px}
  .aryt-knapper .knap{flex:1;min-width:0;padding-left:10px;padding-right:10px;
    justify-content:center;text-align:center;white-space:normal;line-height:1.25}
  /* Turen forsiden viser lige nu — markeret med kobberkant, så man kan se
     hvilken af flere ture, headeren taler om. */
  .aryt-nu{border-color:var(--rav-lys);box-shadow:0 0 0 1.5px var(--rav-lys) inset}
  /* Datoen står på egen linje i kommende-kortene — stednavn + lang dato på
     samme række pressede navnet ned i tre linjer på en 375px-skærm. */
  .tur-kort .dato{white-space:normal}
  /* Pakkelisternes overskrifter i den dekorative font (OD 31/8) — de seks
     lister skal kunne skelnes fra rækkerne inde i dem. */
  .pakke-titel{font-family:var(--skrift-display);font-weight:600;font-size:16.5px;
    letter-spacing:.2px;color:var(--gran)}

  /* ---------- fasebånd (OD 31/8) ----------
     Tre faser: planlægning · klargøring · afsted. Den aktive står i sin egen
     farve, de klarede står dæmpet i deres. Så kan man se på et halvt sekund,
     hvilket sted i turen listen hører til. */
  /* ---------- proceslinjen (KN 6/9) ----------
     Afløser .fase-bånd, som var tre stumme etiketter: de skiftede farve, men
     sagde hverken hvad der var overstået, eller hvor man selv stod. Nu er det
     en proces — pil imellem trinnene, flueben på det gjorte, "Her er du"
     under det aktuelle. Bygges ét sted: procesLinje() i app.js.

     Hvert trin er en kolonne med to linjer. "Her er du"-linjen står der også
     på de trin man IKKE er på (tom), så linjen ikke hopper i højden, når man
     rykker et trin frem.

     Målt på 375px: tre kolonner à ca. 100px. Derfor 9,5px og lille
     bogstavafstand — "PLANLÆGNING" er det længste ord og skal kunne stå på
     én linje ved siden af fluebenet. */
  .proces{display:flex;align-items:flex-start;gap:2px;margin:0 0 16px}
  .proces-trin{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px}
  .proces-mærke{display:flex;align-items:center;justify-content:center;gap:3px;width:100%;
    text-align:center;font-size:9.5px;letter-spacing:.4px;text-transform:uppercase;
    font-weight:700;color:var(--dæmpet);padding:6px 5px;border-radius:100px;
    background:var(--flade);border:1px solid var(--linje);white-space:nowrap;
    transition:background .25s,color .25s,border-color .25s,opacity .25s}
  .proces-trin.klaret .proces-mærke{color:var(--p-creme-lys);background:var(--f);border-color:var(--f);opacity:.6}
  .proces-trin.nu .proces-mærke{color:var(--p-creme-lys);background:var(--f);border-color:var(--f);
    box-shadow:0 3px 10px rgba(var(--p-gran-rgb),.22)}
  .proces-flue{display:inline-flex;flex-shrink:0}
  .proces-flue .ik{width:11px;height:11px;stroke-width:2.8}
  /* Står altid der, tom eller ej — se kommentaren om højdehop ovenfor. */
  .proces-nu{font-size:9px;letter-spacing:.5px;text-transform:uppercase;font-weight:700;
    color:var(--f);min-height:12px;line-height:12px;text-align:center}
  /* "HER ER DU" tager farve efter fasen (--f saettes inline fra TUR_FASER i
     app.js). De tre farver er haardkodede og foelger ikke temaet, saa paa en
     moerk flade blev etiketten 1,98:1 - maalt 15/9. Den FYLDTE brik er fin:
     der er farven baggrund med lys tekst ovenpaa. Det er kun her, farven
     bruges som TEKST.
     Kun de moerke temaer roeres, saa fasens farvetone beholdes i lys. */
  .telefon[data-tema="klar"] .proces-nu,
  .telefon[data-tema="klarNat"] .proces-nu{color:var(--fjord)}
  .proces-pil{flex:0 0 auto;display:flex;align-items:center;justify-content:center;
    height:28px;color:var(--flade-dyb)}
  .proces-pil .ik{width:13px;height:13px}
  .proces-pil.passeret{color:var(--rav)}
  /* Målt på 320px (iPhone SE): "PLANLÆGNING" + flueben klippede med 6px.
     Bogstavafstanden ryger først — den er pynt; ordet er indholdet. */
  @media(max-width:359px){
    .proces-mærke{font-size:9px;letter-spacing:0;padding:6px 3px;gap:2px}
    .proces-flue .ik{width:10px;height:10px}
    .proces-nu{font-size:8.5px;letter-spacing:.3px}
  }

  /* ---------- knap-hierarki (31/8) ----------
     Tre niveauer, og kun tre. Før stod fire konturknapper i tre forskellige
     bredder oven på hinanden nederst på overblikket — ingen af dem fortalte,
     hvad man egentlig skulle gøre.

       .primær   Skærmens ene rigtige greb. Fyldt. Højst én pr. skærm.
       .kontur   Den understøttende vej. Kant, ingen flade.
       .stille   Udveje og fortrydelser. Tekst, ingen kant, ingen flade —
                 læselig, men den trækker ikke øjet. */
  /* Farverne er MØRKERE end --dæmpet med vilje. --dæmpet (#6b675c) giver 3,8:1
     mod sidebaggrunden — fint til hjælpetekst, for lidt til en knap på 13px,
     hvor AA kræver 4,5. Målt: 5,2:1 og 4,9:1. */
  .knap.stille{background:none;border:none;box-shadow:none;color:var(--stille);
    font-size:13px;font-weight:600;letter-spacing:.2px;padding:10px 14px;min-height:44px}
  .knap.stille .ik{width:15px;height:15px}
  /* Terrakotta, ikke rød: det er en fortrydelse, ikke en advarsel. */
  .knap.stille.fare{color:var(--fare)}
  @media(hover:hover){
    .knap.stille:hover{color:var(--gran)}
    .knap.stille.fare:hover{color:var(--p-brun-7)}
  }
  /* Rækken de står i. Wrapper på små skærme, så to lange labels ikke klemmes. */
  .stille-række{display:flex;justify-content:center;align-items:center;
    gap:6px;flex-wrap:wrap}
  /* Foden under skærmens indhold: en hårfin streg, så det stille lag læses som
     "her er siden slut", ikke som endnu en række valg. */
  .side-fod{margin-top:24px;padding-top:16px;border-top:1px solid var(--linje)}
  .side-fod .knap.kontur{margin-bottom:2px}

  /* =========================================================
     GÆSTEN, PARTNEREN OG AFGANGEN (KN 6/9)
     ========================================================= */

  /* ---------- proceslinjen som sidens greb ----------
     .stor bruges på Hjem, hvor linjen har overtaget pladsen fra de to
     rubrikker. Den skal kunne ses og RAMMES: 44px høje mærker, større skrift.
     Statusvarianten (uden .stor) er urørt — den står stadig som en tynd
     stribe på pakkelisten og nedtællingen. */
  .proces.stor{gap:4px;margin:2px 0 18px}
  /* 11,5px klippede 'PLANLÆGNING' på 375px — kolonnen er ca. 95px bred, og
     ordet er det længste i appen. Højden er det, .stor er til for; skriften
     må give sig. */
  .proces.stor .proces-mærke{font-size:10px;letter-spacing:0;padding:13px 4px;
    min-height:44px;border-radius:14px}
  .proces.stor .proces-flue .ik{width:13px;height:13px}
  .proces.stor .proces-nu{font-size:10px;min-height:14px;line-height:14px;margin-top:1px}
  .proces.stor .proces-pil{height:44px}
  .proces.stor .proces-pil .ik{width:15px;height:15px}
  /* Trin man kan trykke på. Knappen nulstilles helt — baggrunden og kanten
     bor på .proces-mærke indeni, ellers ville der stå en kasse om en kasse. */
  .proces-trin.trykbar{background:none;border:none;padding:0;font-family:inherit;
    cursor:pointer;-webkit-tap-highlight-color:transparent}
  .proces-trin.trykbar:active .proces-mærke{transform:scale(.96)}
  .proces.stor .proces-mærke{transition:background .25s,color .25s,border-color .25s,
    opacity .25s,transform .16s,box-shadow .2s}
  @media(hover:hover){
    .proces-trin.trykbar:hover .proces-mærke{border-color:var(--f);color:var(--f)}
    .proces-trin.trykbar.klaret:hover .proces-mærke,
    .proces-trin.trykbar.nu:hover .proces-mærke{color:var(--p-creme-lys);opacity:1;
      box-shadow:0 6px 16px rgba(var(--p-gran-rgb),.26)}
  }
  .proces-trin.trykbar:focus-visible{outline:2px solid var(--rav);outline-offset:3px;border-radius:16px}
  @media(max-width:359px){
    /* På 320px koster fluebenet på "Planlægning" de sidste 5px. Ikonet må
       give sig før ordet — man kan læse trinnet uden at kunne se hakket. */
    .proces.stor .proces-mærke{font-size:9px;letter-spacing:0;padding:12px 2px;gap:2px}
    .proces.stor .proces-flue .ik{width:9px;height:9px}
  }

  /* ---------- afgangskortet: adressen og det ene greb ----------
     Folder ud af "Start tur" på Hjem. Mørkt, fordi det er turens sidste
     skærm før man kører — og fordi det ikke skal forveksles med de lyse
     kort, man RETTER i. Her er der intet at rette. */
  .afgang-kort{background:linear-gradient(155deg,var(--p-bark),var(--p-bark-moerk));color:var(--p-lys-9);
    border-radius:var(--radius-m);padding:18px 18px 16px;margin:0 0 18px;
    box-shadow:0 14px 34px rgba(var(--p-bark-moerk-rgb),.28);animation:foldUd .3s cubic-bezier(.2,.7,.3,1)}
  @keyframes foldUd{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
  .afgang-kort .etiket{color:rgba(var(--p-lys-7-rgb),.6)}
  /* "God tur!" (KN 7/9). Displayskriften og fuld styrke: det er kortets
     hilsen, ikke dets overskrift-etiket — derfor ikke .etiket, som er lille,
     spærret og dæmpet med vilje. */
  .afgang-hilsen{font-family:var(--skrift-display);font-weight:600;font-size:21px;
    line-height:1.2;color:var(--p-lys-7);letter-spacing:.2px}
  .afgang-adresse{font-size:19px;line-height:1.25;color:var(--p-lys-7);margin-top:5px}
  .afgang-koord,.afgang-tid{display:flex;align-items:center;gap:7px;margin-top:9px;
    font-size:13.5px;color:rgba(var(--p-lys-7-rgb),.75);
    font-variant-numeric:tabular-nums lining-nums}
  .afgang-koord .ik,.afgang-tid .ik{width:15px;height:15px;color:var(--rav-lys);flex-shrink:0}
  .afgang-kort .som-link{color:rgba(var(--p-lys-7-rgb),.6)}

  /* ---------- gæstens status ----------
     Står på selve turkortet i loggen og på Hjem. "Afventer" er ikke en fejl,
     så den er rav og ikke rød — den er bare en tilstand, man venter i. */
  .gæst-linje{display:flex;align-items:center;gap:7px;margin:10px 0 0;
    font-size:13px;font-weight:600;padding:8px 11px;border-radius:100px}
  .gæst-linje .ik{width:15px;height:15px;flex-shrink:0}
  .gæst-linje.venter{background:var(--p-lys-12);color:var(--p-brun-2)}
  .gæst-linje.med{background:var(--p-lys-17);color:var(--p-groen-6)}
  /* Kolonne, ikke række: på 375px brækkede etiket og knap alligevel om,
     og så stod knappen venstrestillet under en centreret etiket. */
  .gæst-demo{display:flex;flex-direction:column;align-items:center;gap:2px;
    margin-top:10px;padding-top:10px;border-top:1px dashed var(--linje)}
  .gæst-demo .dæmpet{font-size:12px}

  /* ---------- hvem pakker hvad ----------
     Tre knapper i én rille, ikke tre løse. Rillen siger "vælg én af dem" —
     tre selvstændige knapper ville sige "tryk på så mange du vil". */
  .ejer-række{display:flex;align-items:center;gap:10px;padding:11px 0;
    border-bottom:1px solid var(--linje)}
  .ejer-række:last-child{border-bottom:none}
  /* "Varme/ventilation" er ét ord uden mellemrum — uden anywhere skæres
     det af i stedet for at brække på 320px. */
  .ejer-navn{flex:1;min-width:0;font-size:14.5px;line-height:1.3;overflow-wrap:anywhere}
  .ejer-valg{display:inline-flex;flex-shrink:0;background:var(--flade-dyb);
    border-radius:100px;padding:2px;gap:2px}
  .ejer-knap{border:none;background:none;font-family:inherit;font-size:11.5px;
    font-weight:700;color:var(--dæmpet);padding:7px 10px;border-radius:100px;
    cursor:pointer;white-space:nowrap;transition:background .18s,color .18s,box-shadow .18s}
  .ejer-knap.valgt{background:var(--p-creme-lys);color:var(--paa-lys);box-shadow:0 1px 4px rgba(var(--p-bark-rgb),.16)}
  .ejer-knap.valgt.deres{background:var(--rav);color:var(--p-lys-2)}
  .ejer-knap.valgt.fælles{background:var(--anker);color:var(--p-lys-7)}
  .ejer-knap:focus-visible{outline:2px solid var(--rav);outline-offset:2px}
  /* Tælleren i toppen: tre tal, så man kan se skævheden uden at scrolle. */
  .ejer-tæller{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;
    background:var(--flade);border:1px solid var(--linje);border-radius:var(--radius-m);
    padding:11px 14px;margin-bottom:14px;font-size:12.5px;color:var(--dæmpet)}
  .ejer-tæller span{display:inline-flex;align-items:center;gap:5px}
  .ejer-tæller .ik{width:14px;height:14px;color:var(--rav)}
  .ejer-tæller b{color:var(--anker-tekst);font-variant-numeric:tabular-nums lining-nums}
  .ejer-hurtig{font-size:12.5px;color:var(--dæmpet);padding:4px 0 8px;
    display:flex;align-items:center;gap:7px;flex-wrap:wrap}
  .ejer-skil{color:var(--flade-dyb)}
  /* Mærkatet på selve pakkelisten. Lille — det er en oplysning, ikke et valg;
     valget tager man i fordelingen. */
  .ejer-mærkat{flex-shrink:0;font-size:10.5px;font-weight:700;letter-spacing:.4px;
    text-transform:uppercase;padding:3px 8px;border-radius:100px;
    background:var(--flade-dyb);color:var(--dæmpet)}
  .ejer-mærkat.deres{background:var(--p-lys-12);color:var(--p-brun-2)}
  .ejer-mærkat.fælles{background:var(--p-lys-17);color:var(--p-groen-6)}
  @media(max-width:359px){
    .ejer-knap{font-size:11px;padding:7px 8px}
    .ejer-navn{font-size:14px}
  }

  /* =========================================================
     VÆRKTØJSKASSEN (KN 6/9) — vejr · lommelygte · tommestok · nivellering
     Ligger nederst på alle tre forsider. Bruger appens egne farver:
     --anker til tilstand og struktur, --rav til accent, --gran til tekst.
     Se .hero.fuld ovenfor for de 64 px, der får kassen til at kigge frem.
     ========================================================= */
  /* ---- værktøjskassen som et ark over landskabet (KN 11/9) ----
     Før sluttede hero'en i en lige, hård kant tværs over skærmen, og
     værktøjskassen begyndte under den som et fladt gitter. Nu skydes blokken
     op OVER landskabets nederste 26 px med runde tophjørner, så de to ting
     hænger sammen i stedet for at støde op mod hinanden.

     ---- og så er den mørk (KN 11/9) ----
     Første forsøg gjorde blokken lys: fire cremefarvede kort med et fyldt
     pastelfelt bag hvert ikon, på en creme baggrund. Kennets dom var, at den
     faldt ud af appen — "for bastant, for lyst". Han har ret, og grunden er
     værd at skrive ned: hero'en er mørk, stemningsfuld og nordisk, og så
     landede man i et generisk indstillingsgitter. Det fyldte felt bag ikonet
     var det værste: det laver en tynd stregtegning om til et klistermærke.

     Nu fortsætter blokken aftenen i stedet for at bryde den. Mørk flade,
     ikonerne tegnet direkte uden felt bag, hårfine kanter i stedet for
     kasser med ramme om.

     ÉT udtryk, ikke to. Blokken sidder også nederst på to andre forsider,
     hvor der er LYST indhold over den — dér lukker den siden som en mørk
     fod. Det er med vilje: to forskellige værktøjskasser ville være præcis
     den fejl, "ét kort i stedet for syv (13/8)" advarer imod.

     Derfor rører kortene her heller ikke --kort-*. De er ikke en ottende
     variant af det lyse kort; de er en anden flade i en anden verden. Skal
     det LYSE kort ændres, sker det stadig deroppe. */
  /* Overlappet gælder KUN under den fulde hero (KN 11/9). Blokken skal skydes
     op over LANDSKABET — men på 'klar'- og nedtællingsforsiden står der
     rigtige knapper over den ("Planlæg endnu en arytme", "Annullér turen"),
     og dér åd de -26 px den nederste halvdel af dem. Selve panelet ser ens
     ud begge steder; det er kun overlappet, der hører til landskabet. */
  .vk-blok{position:relative;z-index:1;margin-top:18px;
    padding:26px 18px 140px;margin-bottom:-118px;
    border-radius:22px 22px 0 0;
    /* Den nye palette (27/9): Deep Brown, der mørkner nedad. Panelet er
       mørkt i ALLE temaer, så accenten er fast her og følger ikke --rav-lys,
       der skifter med temaet. Målt på top #4a2417 / bund #341910:
       creme 11,8/14,3 · accent 5,1/6,1 · undertekst 5,5/6,6. */
    --vk-accent:color-mix(in srgb,var(--p-terracotta) 75%,var(--p-warm-cream));
    border-top:1px solid color-mix(in srgb,var(--p-terracotta) 35%,transparent);
    background:linear-gradient(to bottom, rgba(var(--p-deep-brown-rgb),.94),
      color-mix(in srgb,color-mix(in srgb,var(--p-deep-brown) 70%,#000) 98.5%,transparent) 220px)}
  .hero.fuld.med-vaerktoej + .vk-blok{margin-top:-26px}
  /* Hoppet: 34 px op viser vinket (det slutter 59 px inde; 38 + 34 = 72),
     og et lille efterhop får det til at ligne noget, der vil op. To gange,
     så stopper det. vk-hop sættes kun af vkScrollEffekt(). */
  @media(prefers-reduced-motion:no-preference){
    .hero.fuld.med-vaerktoej + .vk-blok.vk-hop{
      animation:vkHop 2.6s cubic-bezier(.3,.7,.4,1) 1.6s 2}
  }
  @keyframes vkHop{
    0%{transform:none}
    16%{transform:translateY(-34px)}
    30%{transform:none}
    38%{transform:translateY(-9px)}
    46%,100%{transform:none}}
  /* ---- grebet og vinket (KN 11/9) ----
     Grebet var væk en overgang, fordi arket ikke kan trækkes. Det kan det
     stadig ikke — men blokken ligger lige under folden, så et swipe op ÉR
     bevægelsen, der henter den frem. Nu passer stregen til noget, der sker.
     Vinket peger opad og forsvinder, når kassen er fremme (.vk-fremme
     sættes af vkScrollEffekt(), når den sidste række er tonet ind). */
  .vk-greb{width:36px;height:4px;border-radius:100px;margin:0 auto 10px;
    background:rgba(var(--p-warm-cream-rgb),.28)}
  .vk-vink{display:flex;align-items:center;justify-content:center;gap:7px;
    margin:0 0 16px;font-size:11px;letter-spacing:1.4px;text-transform:uppercase;
    color:var(--vk-accent);opacity:.9;transition:opacity .45s}
  .vk-vink-pil{width:13px;height:8px;fill:none;stroke:currentColor;
    stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;
    animation:vkVink 2.4s ease-in-out infinite}
  @keyframes vkVink{0%,100%{transform:translateY(1.5px);opacity:.55}50%{transform:translateY(-1.5px);opacity:1}}
  .vk-blok.vk-fremme .vk-vink{opacity:0}
  /* flex-wrap + flex-shrink:0 er et værn, ikke en rettelse: etiketten skal
     bryde til sin egen linje frem for at blive klemt til nul, hvis nogen
     forlænger teksten. Under 360 px er den skjult med vilje — se reglen ved
     @media(max-width:359px) længere nede, den har sin egen begrundelse. */
  .vk-top{display:flex;flex-wrap:wrap;align-items:baseline;
    justify-content:space-between;gap:4px 10px;margin-bottom:18px}
  .vk-top h2{font-size:19px;color:var(--p-warm-cream);font-weight:500;letter-spacing:.3px}
  .vk-top .etiket{color:var(--vk-accent);flex-shrink:0}
  /* ---- rækker, ikke kasser (KN 11/9) ----
     "Boksene er for store." De var to kolonner med 20 px polstring hver —
     fire flader, der fyldte en halv skærm for at rumme otte ord. Nu er det
     fire rækker med en hårfin streg imellem: ingen rammer, ingen flader,
     halv højde. Klassen hedder stadig .vk-kort, fordi css-klasser er nøgler
     og ikke beskrivelser — samme begrundelse som ved vk-lineal i app.js. */
  .vk-grid{display:flex;flex-direction:column;
    border-top:1px solid rgba(var(--p-warm-cream-rgb),.09)}
  .vk-kort{display:flex;align-items:center;gap:14px;width:100%;
    text-align:left;padding:13px 4px;background:none;border:0;
    border-bottom:1px solid rgba(var(--p-warm-cream-rgb),.09);
    cursor:pointer;font-family:inherit;
    transition:background .2s,padding-left .2s}
  .vk-kort:active{background:rgba(var(--p-warm-cream-rgb),.05)}
  .vk-tekst{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
  /* Ikonet står frit. Intet felt bag — se begrundelsen øverst i blokken.
     Tyndere streg end appens 1,7: på en mørk flade skærer den fulde tykkelse
     for hårdt, og det er dét, "bastant" betyder. */
  .vk-ikon{display:inline-flex;align-items:center;justify-content:center;
    flex:none;width:30px;color:rgba(var(--p-warm-cream-rgb),.88)}
  .vk-ikon .ik{width:26px;height:26px;stroke-width:1.3}
  /* Ét kobberikon, ikke fire — accenten skal fange øjet ét sted ad gangen.
     At det netop er lommelygten, der lyser kobber i mørket, er ikke tilfældigt. */
  .vk-kort:nth-child(2) .vk-ikon{color:var(--vk-accent)}
  .vk-navn{font-family:var(--skrift-display);font-weight:600;font-size:16px;color:var(--p-warm-cream)}
  .vk-under{font-size:12px;color:rgba(var(--p-warm-cream-rgb),.62);line-height:1.4}
  .vk-pil{width:7px;height:12px;flex:none;fill:none;stroke:rgba(var(--p-warm-cream-rgb),.42);
    stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:stroke .2s}
  .vk-kort:active .vk-pil{stroke:var(--vk-accent)}
  @media(hover:hover){ .vk-kort:hover{background:rgba(var(--p-warm-cream-rgb),.05);padding-left:8px}
    .vk-kort:hover .vk-pil{stroke:var(--vk-accent)} }

  /* ---- lidt liv i de tre af ikonerne (KN 11/9: "ikke særlig levende") ----
     Ganske lidt. Solen drejer én gang i minuttet, lygtens stråler ånder, og
     boblen i vateret driver, som en boble gør. Ingen af dem skal ses — de
     skal mærkes. Står ikonet uden for værktøjskassen, sker der ingenting. */
  .vk-ikon .ik-sol{transform-origin:8.8px 8.4px;animation:vkSol 60s linear infinite}
  .vk-ikon .ik-straale{animation:vkStraale 3.4s ease-in-out infinite}
  .vk-ikon .ik-boble{animation:vkBoble 6.5s ease-in-out infinite}
  @keyframes vkSol{to{transform:rotate(360deg)}}
  @keyframes vkStraale{0%,100%{opacity:.45}50%{opacity:1}}
  @keyframes vkBoble{0%,100%{transform:translateX(-1.4px)}50%{transform:translateX(1.4px)}}

  /* ---- indtoning, når man scroller ned til kassen ----
     Klasserne sættes af vkScrollEffekt() i app.js, som hægtes på i tegn().
     --i er kortets plads i rækken og forskyder starten, så de fire kommer
     efter hinanden i stedet for samlet. Samme bevægelsessprog som heroTekst
     på forsiden: op og ind, aldrig skalering.
     .vk-afventer sættes KUN, når effekten faktisk kører — uden den (reduceret
     bevægelse, eller ingen IntersectionObserver) er kortene synlige fra start. */
  .vk-kort.vk-afventer{opacity:0;transform:translateY(16px);
    transition:opacity .62s cubic-bezier(.2,.7,.3,1),transform .62s cubic-bezier(.2,.7,.3,1),
      border-color .18s,box-shadow .25s;
    transition-delay:calc(var(--i,0) * 80ms)}
  .vk-kort.vk-afventer.vk-vis{opacity:1;transform:none}
  @media(prefers-reduced-motion:reduce){
    .vk-kort.vk-afventer{opacity:1;transform:none;transition:none}
  }

  /* ---------- de fire værktøjsskærme ---------- */
  .vk-panel{padding:22px 20px}
  .vk-midt{text-align:center}
  .vk-midt .dæmpet{margin-left:auto;margin-right:auto;max-width:300px}
  .vk-hero-ikon{display:inline-flex;align-items:center;justify-content:center;
    width:58px;height:58px;border-radius:18px;background:var(--anker-lys);
    color:var(--anker-tekst);margin-bottom:12px}
  .vk-hero-ikon .ik{width:30px;height:30px}
  .vk-status{min-height:20px;margin:14px 0 0;font-size:13px;color:var(--dæmpet);line-height:1.5}
  /* Fast lys boks i alle temaer (ny palette 27/9): rust på creme med et
     strejf af rust — 5,3:1. */
  .vk-status.vk-fejl{color:var(--p-rust);background:color-mix(in srgb,var(--p-rust) 10%,var(--p-warm-cream));
    border:1px solid color-mix(in srgb,var(--p-rust) 35%,var(--p-warm-cream));
    border-radius:14px;padding:11px 14px;margin-top:14px}

  /* Lommelygten: én stor cirkel, samme greb som forsidens startknap. */
  .vk-lygte{width:150px;height:150px;border-radius:50%;margin:6px auto 16px;
    display:flex;align-items:center;justify-content:center;cursor:pointer;
    background:var(--flade);border:1.5px solid var(--linje);color:var(--gran);
    transition:background .2s,border-color .2s,box-shadow .25s,color .2s}
  .vk-lygte .ik{width:52px;height:52px}
  /* Tændt: CTA-orangen blandet i creme, gløden er CTA'en selv. Ikonet er
     Deep Brown — 9,2:1. Fladen er lys i alle temaer. */
  .vk-lygte.tændt{background:color-mix(in srgb,var(--p-cta) 35%,var(--p-warm-cream));
    border-color:var(--p-cta);color:var(--p-deep-brown);
    box-shadow:0 0 46px rgba(var(--p-cta-rgb),.55)}

  /* Tommestokken: to punkter og en pil imellem — samme tegning som målingen.
     Klassen hedder stadig .vk-lineal-tegning; navnet blev skiftet 7/9, nøglen
     ikke. */
  .vk-lineal-tegning{display:flex;align-items:center;justify-content:center;gap:14px;
    height:64px;color:var(--anker-mid)}
  .vk-lineal-tegning i{width:12px;height:12px;border-radius:50%;
    background:var(--anker-lys);border:2px solid var(--anker-mid)}
  .vk-lineal-tegning .ik{width:30px;height:30px}
  .vk-resultater{padding:18px 20px}
  .vk-resultater h3{margin-bottom:8px}
  .vk-måling{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
    padding:10px 0;border-bottom:1px solid var(--linje);font-size:14px;color:var(--dæmpet)}
  .vk-måling strong{color:var(--anker-tekst);font-family:var(--skrift-brød);font-weight:700;
    font-variant-numeric:tabular-nums lining-nums}

  /* Nivelleringen: et rundt vaterpas med en boble, der flytter sig. */
  .vk-vater{position:relative;width:190px;height:190px;max-width:100%;margin:4px auto 18px;
    border-radius:50%;overflow:hidden;border:1.5px solid var(--linje);
    background:radial-gradient(circle,var(--flade) 0,var(--flade) 46%,var(--bund) 47%);
    transition:background .25s}
  .vk-vater::before,.vk-vater::after{content:'';position:absolute;background:var(--flade-dyb)}
  .vk-vater::before{width:1px;height:100%;left:50%;top:0}
  .vk-vater::after{height:1px;width:100%;top:50%;left:0}
  .vk-vater-ring{position:absolute;width:48px;height:48px;border-radius:50%;
    border:1.5px solid var(--anker-mid);top:calc(50% - 24px);left:calc(50% - 24px)}
  .vk-boble{position:absolute;width:36px;height:36px;border-radius:50%;
    top:calc(50% - 18px);left:calc(50% - 18px);z-index:2;
    background:var(--anker-lys);border:1.5px solid var(--anker-mid)}
  /* I vater: midten bliver en lys petrol. Paletten har intet grønt; petrol
     er dens kølige tone og den, ankeret allerede står i. */
  .vk-vater.i-vater{--vk-i-vater:color-mix(in srgb,var(--p-petrol) 45%,var(--p-warm-cream));
    background:radial-gradient(circle,var(--vk-i-vater) 0,var(--vk-i-vater) 46%,var(--bund) 47%)}
  .vk-vater.i-vater .vk-boble{background:var(--anker);border-color:var(--anker)}
  .vk-aflæsninger{display:flex;margin:16px 0 18px}
  .vk-aflæsninger > div{width:50%;display:flex;flex-direction:column;gap:2px}
  .vk-aflæsninger > div + div{border-left:1px solid var(--linje)}
  .vk-aflæsninger strong{font-family:var(--skrift-brød);font-weight:600;font-size:26px;
    color:var(--anker-tekst);font-variant-numeric:tabular-nums lining-nums}
  .vk-aflæsninger span{font-size:11px;color:var(--dæmpet)}
  @media(prefers-reduced-motion:no-preference){ .vk-boble{transition:transform .1s linear} }
  @media(prefers-reduced-motion:reduce){ .vk-kort,.vk-lygte,.vk-vater{transition:none}
    /* Solen, strålerne, boblen og pilen i vinket står stille. Vinket selv
       bliver stående — det er en besked, ikke en udsmykning. */
    .vk-ikon .ik-sol,.vk-ikon .ik-straale,.vk-ikon .ik-boble,.vk-vink-pil{animation:none} }
  /* På en smal telefon (320 px: SE, ældre Android). Her stod før en måling af,
     om to kolonner kunne være der — den er ikke længere relevant: kassen er
     rækker, og en række har hele bredden. Tilbage står to ting.

     Etiketten "TIL DET PRAKTISKE" er skjult MED VILJE: den knækker over to
     linjer og skubber overskriften skæv. Den beslutning står ved magt. */
  @media(max-width:359px){
    .vk-blok{padding-left:14px;padding-right:14px}
    .vk-top .etiket{display:none}
    .vk-kort{padding:12px 2px;gap:12px}
    .vk-ikon{width:27px}
    .vk-ikon .ik{width:24px;height:24px}
  }
  /* Under 300 px giver to kolonner ordbrud. Så hellere fire fulde rækker. */
  @media(max-width:299px){ .vk-grid{grid-template-columns:1fr} }
  /* .knap er display:inline-flex, og det slår browserens egen [hidden]-regel.
     Uden den her stod "Brug vandret igen" fremme, før der var et nulpunkt. */
  .knap[hidden]{display:none}

  /* ---------- forsiden, designrunde 11/9 2026 ----------
     Fra den eksterne models designrunde. Mere luft, større og lettere
     overskrift, en lille versal-etiket over den, roligere tæller og en
     mørkning bag teksten, så landskabet kan være lyst uden at æde ordene.
     Rammer KUN den almindelige forside (.hero.fuld.med-vaerktoej) —
     onboardingens hero og båndene på undersiderne står uændret.

     TO TING ER BEVIDST IKKE TAGET MED (KN 11/9):

     1. Den grønne startknap. Forslaget lavede den runde knap om til et
        bredt grønt rektangel i --anker og slog .rk-ring og dobbeltringen
        fra. Den runde knap er logoets bomærke i knapform — se
        kommentarerne ved .rund-knap ovenfor, "Én ring, ikke to (14/8)".
        Den bliver, som den er.
     2. Venstrestilling. Forslaget satte text-align:left på hele h-bund og
        gav etiketten en kobberstreg i venstre side. Forsiden er centreret
        og forbliver centreret; stregen gav kun mening venstrestillet og er
        derfor væk med den. */
  /* ⚠️ --top SKAL MED I TOPPEN (28/9). Reglen her er lige så specifik som
     `.indhold > .hero:first-child .overlay` øverst i filen og står senere —
     så dens 24 px overskrev statuslinjens margen, og logoet lå under uret
     og kameraøen på Kennets iPhone. Browseren melder 0, så det sås aldrig. */
  /* ⚠️ INTET EKSTRA SLØR (KN 5/10: "Farvetema her på forsiden med login vil
     jeg også gerne have på forsiden når man er logget ind … skift kun når
     tidspunktet på døgnet tillader dette"). Her lå 64 % brunt over den
     øverste del af landskabet, så forsiden stod i skumring midt på dagen,
     mens velkomstskærmen lige før stod i dagslys. Nu arver den
     `.hero.fuld .overlay` — kun mørkt nederst — og farverne kommer alene
     fra døgnets lys i heroScene(). */
  .hero.fuld.med-vaerktoej .overlay{
    padding:calc(24px + var(--top)) 28px 22px;
  }
  /* ⚠️ TO HOVEDER, ÉT UDSEENDE (KN 17/9: "jeg kunne godt tænke mig at få
     dette layout fra forsiden til at være det samme på planlægnings-
     skærmen"). Reglerne er ikke kopieret derned — selektorerne er
     udvidet. Kopierede regler driver fra hinanden, og det var lige
     præcis dét, der var sket: forsiden havde stregen og en nøgen
     tæller, planlægningen havde hverken eller. */
  .hero.fuld.med-vaerktoej .h-top,
  .ned-rejse .ned-top{
    /* Stregen under logoet er væk (KN 28/9: "fjern også den linje"). */
    padding-bottom:18px;
  }
  /* Afstanden ned til det næste er den ENE ting, der ikke må være ens:
     på forsiden følger en stor overskrift (h-bund har selv 54 px), her
     følger et lille versalt mærkat. */
  .ned-rejse .ned-top{margin-bottom:20px}
  .hero.fuld.med-vaerktoej .h-logo .logo-svg,
  .ned-rejse .ned-top .h-logo .logo-svg{height:50px}
  /* Tælleren er nøgen begge steder: pillen omkring den gjorde den til en
     knap, man skulle forholde sig til, og den er et instrument. */
  .hero.fuld.med-vaerktoej .aryt-tæller,
  .ned-rejse .ned-top .aryt-tæller{
    min-height:44px;padding:0 0 0 10px;gap:7px;
    border:0;background:none;box-shadow:none;backdrop-filter:none;
    -webkit-backdrop-filter:none;
  }
  .hero.fuld.med-vaerktoej .aryt-tæller .at-label,
  .ned-rejse .ned-top .aryt-tæller .at-label{font-size:10px;color:var(--p-creme)}
  .hero.fuld.med-vaerktoej .aryt-tæller .at-tal,
  .ned-rejse .ned-top .aryt-tæller .at-tal{font-size:17px;color:var(--p-creme)}
  .hero.fuld.med-vaerktoej .aryt-tæller .at-hjerte,
  .ned-rejse .ned-top .aryt-tæller .at-hjerte{animation:none}
  /* 84 px (KN 28/9: "synes det hele sidder lidt højt oppe"). Hero'en blev
     samtidig 28 px højere, fordi værktøjskassen kigger mindre frem. */
  /* Længere ned på høje telefoner (KN 5/10: "ryk forsiden ned også"). Bilen
     står i bunden af scenen og følger skærmhøjden, teksten gør ikke — så den
     ekstra luft må kun komme af den ekstra højde. Ved 812 er der ingen at tage
     af (knappen rører bilen ved +50 px), ved 932 er der 66 px. */
  .hero.fuld.med-vaerktoej .h-bund{margin-top:clamp(84px, calc(84px + (var(--skaerm) - 812px) * .55), 150px)}
  .hero.fuld.med-vaerktoej .h-bund h1{
    font-size:40px;line-height:1.09;font-weight:450;letter-spacing:-1.4px;
    max-width:340px;margin-left:auto;margin-right:auto;
    text-shadow:0 2px 20px rgba(var(--p-sort-rgb),.10);
  }
  .hero.fuld.med-vaerktoej .h-bund .h-under{
    order:-1;margin:0 0 14px;
    font-family:var(--skrift-brød);font-size:10px;font-weight:600;
    line-height:1.5;letter-spacing:2.2px;text-transform:uppercase;color:var(--p-creme);
  }
  .hero.fuld.med-vaerktoej .h-bund p:not(.h-under){
    max-width:280px;margin-left:auto;margin-right:auto;margin-top:17px;
    font-size:13px;line-height:1.65;color:var(--p-creme);
  }
  /* Startknappen sidder lavere end designrundens forslag (KN 11/9): teksten
     får luft under sig, og knappen lander tættere på tommelfingeren. */
  /* Afstanden SKAL være større end 7 px (KN 11/9). Den runde knaps stille
     dobbeltring ligger i ::after med inset:-7px, altså uden for knappens
     egen kasse — og flex-gap måler på kassen, ikke på ringen. Med gap:4px
     lagde genvejen sig oven i ringen. */
  .hero.fuld.med-vaerktoej .rund-start{gap:18px;margin-top:52px;max-width:100%}
  /* Lille og stille (KN 11/9): genvejen er et tilbud ved siden af, ikke en
     handling, der skal måle sig med startknappen. */
  .hero.fuld.med-vaerktoej .spontan-link{
    color:rgba(var(--p-creme-rgb),.82);opacity:1;min-height:0;padding:6px 2px;gap:7px;
    margin-top:0;background:none;border:0;border-radius:0;
    font-size:11px;font-weight:400;letter-spacing:.2px;
  }
  .hero.fuld.med-vaerktoej .spontan-link .ik{width:17px;height:17px;color:var(--p-kobber-lys)}
  .hero.fuld.med-vaerktoej button:focus-visible{outline:2px solid var(--p-creme);outline-offset:5px}
  /* ---- startknappen som pille (KN 28/9) ----
     CTA-orange, Deep Brown tekst (5,5:1). Pulsen fra logoet står foran ordet
     og følger tekstfarven, pilen bagved siger "herfra og videre". Gløden
     ånder langsomt i stedet for ringen, der pingede ud fra cirklen. */
  .start-cta{position:relative;display:inline-flex;align-items:center;gap:12px;
    min-height:58px;padding:0 22px 0 24px;border:0;border-radius:100px;cursor:pointer;
    font-family:var(--skrift-brød);font-size:16px;font-weight:700;letter-spacing:.2px;
    color:var(--p-deep-brown);
    background:linear-gradient(180deg,color-mix(in srgb,var(--p-cta) 82%,var(--p-warm-cream)),var(--p-cta));
    box-shadow:0 14px 34px rgba(var(--p-sort-rgb),.42),0 0 0 6px rgba(var(--p-cta-rgb),.13),
      0 0 34px rgba(var(--p-cta-rgb),.30),inset 0 1px 0 rgba(var(--p-hvid-rgb),.5);
    transition:transform .22s cubic-bezier(.2,.7,.3,1)}
  /* OD 4/10: ingen pil, "Start her" øverst og logoets puls nedenunder. */
  .start-cta{flex-direction:column;justify-content:center;gap:5px;padding:10px 34px 9px}
  /* Kapitæler i samme skrift som "FRA IDÉ TIL AFSTED" (.h-under på
     forsiden): brødskriften, versaler, spærret — OD 4/10. Også "Planlæg ny
     arytme" i loggen. Et par punkter større end overlinjen, for det er en knap. */
  .start-cta span:not(.logo-puls),.log-ny span:not(.logo-puls){
    font-family:var(--skrift-brød);font-size:13px;font-weight:700;letter-spacing:2.2px;text-transform:uppercase}
  /* Velkomstskærmens "Log ind og start din arytme" kan ikke stå på én linje
     i kapitæler — så to lige lange linjer i stedet for ét ord alene. */
  .start-cta span:not(.logo-puls){text-wrap:balance;line-height:1.5}
  .start-cta .logo-puls{width:72px}
  /* Velkomstskærmen: mere luft mellem overskrift, tekst og knap (KN 5/10).
     Står efter .hero.fuld-reglerne, så den også gælder på lave skærme. */
  .hero.fuld .h-bund.velkomst p{margin-top:16px}
  .hero.fuld .h-bund.velkomst .handling{margin-top:36px}
  /* Og det hele lidt længere ned (KN 5/10: "står meget højt oppe"). */
  .hero.fuld .h-bund.velkomst{margin-top:175px}
  @media(max-height:700px){.hero.fuld .h-bund.velkomst{margin-top:80px}}

  /* ---------- login-familien (KN 5/10: "kedelig og mangler lidt design") ----------
     Velkomstskærmens landskab som bånd øverst (.ned-hero giver scenen og den
     mørke toning, så den lyse tekst kan læses), og formularen i et kort, der
     griber op over kanten. Ét udtryk for login, kode på mail og nyt kodeord. */
  .login-hero{min-height:318px;padding-bottom:52px;text-align:center}
  .login-hero .ned-lag{display:flex;flex-direction:column;align-items:center}
  .login-hero .h-logo .logo-svg{height:46px}
  .login-maerkat{margin-top:38px;font-family:var(--skrift-brød);font-size:11px;font-weight:700;
    letter-spacing:2.2px;text-transform:uppercase;color:var(--p-kobber-lys);
    text-shadow:0 1px 8px rgba(var(--p-sort-rgb),.25)}
  .login-titel{margin-top:10px;font-size:30px;line-height:1.15;color:var(--p-lys-7);
    text-shadow:0 1px 12px rgba(var(--p-sort-rgb),.25);text-wrap:balance}
  .login-under{margin:12px 0 0;max-width:300px;font-size:14.5px;line-height:1.5;text-wrap:balance;
    color:rgba(var(--p-lys-9-rgb),.86);text-shadow:0 1px 8px rgba(var(--p-sort-rgb),.2)}
  .login-blok{position:relative;z-index:2;margin-top:-40px;padding:0 18px}
  /* Massiv flade: kortet ligger halvt over landskabet, og gennem glasset
     blev bakkerne til en mudret stribe bag mailfeltet. */
  .login-kort{padding:6px 22px 18px;background:var(--flade);box-shadow:0 20px 44px rgba(var(--p-sort-rgb),.16)}
  /* Bilen (den ægte signaturbil.svg) står nederst i scenen og blev skåret
     midt over af kortet. Den har lige holdt på velkomstskærmen; her er
     båndet kun himmel og bakker. Skjult, ikke gentegnet. */
  .login-hero svg.scene image{display:none}
  .login-link{margin-top:10px;text-align:center}
  .login-link .tekst-knap{font-size:14px;font-weight:500;color:var(--fjord);padding:6px;
    text-decoration:underline;text-underline-offset:3px;cursor:pointer}
  .login-foerste{margin:26px 4px 0;text-align:center}
  .login-foerste p{margin:0 auto 14px;max-width:300px;font-size:14px;line-height:1.55;color:var(--dæmpet)}
  .login-foerste p b{color:var(--gran)}
  /* Installationsguiden (K22, KN 6/10) — samme ramme som login (obRamme).
     Trinene som nummererede rækker; ikonet viser den knap, hun skal finde
     i SIN browser. */
  .inst-liste{list-style:none;margin:14px 0 4px;padding:0}
  .inst-trin{display:flex;align-items:flex-start;gap:14px;padding:12px 0;
    border-bottom:1px solid rgba(var(--p-sort-rgb),.07)}
  .inst-trin:last-child{border-bottom:0}
  .inst-nr{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;
    font-size:13px;font-weight:700;color:var(--p-lys-7);background:var(--p-kobber)}
  .inst-tekst{padding-top:4px;font-size:15px;line-height:1.45;color:var(--gran)}
  .inst-ikon{display:inline-flex;vertical-align:-5px;margin-left:2px;color:var(--fjord)}
  .inst-ikon .ik{width:22px;height:22px}
  .inst-klar{margin:16px 0 8px;font-size:15px;line-height:1.55;color:var(--gran)}
  .inst-hvorfor{margin:22px 6px 6px;font-size:13.5px;line-height:1.6;text-align:center;color:var(--dæmpet)}
  .start-cta:active{transform:scale(.96)}
  @media(prefers-reduced-motion:no-preference){
    .start-cta{animation:ctaÅnde 3.6s ease-in-out infinite}
  }
  @keyframes ctaÅnde{
    0%,100%{box-shadow:0 14px 34px rgba(var(--p-sort-rgb),.42),0 0 0 6px rgba(var(--p-cta-rgb),.13),
      0 0 34px rgba(var(--p-cta-rgb),.30),inset 0 1px 0 rgba(var(--p-hvid-rgb),.5)}
    50%{box-shadow:0 14px 34px rgba(var(--p-sort-rgb),.42),0 0 0 10px rgba(var(--p-cta-rgb),.07),
      0 0 52px rgba(var(--p-cta-rgb),.48),inset 0 1px 0 rgba(var(--p-hvid-rgb),.5)}}
  @media(max-height:740px){
    .hero.fuld.med-vaerktoej .overlay{padding:calc(18px + var(--top)) 24px 18px}
    .hero.fuld.med-vaerktoej .h-top{padding-bottom:12px}
    /* 46 px (KN 28/9, set på 320×700: "tingene her skal rykkes længere ned"). */
    .hero.fuld.med-vaerktoej .h-bund{margin-top:46px}
    .hero.fuld.med-vaerktoej .h-bund h1{font-size:35px;line-height:1.08}
    .hero.fuld.med-vaerktoej .h-bund .h-under{margin-bottom:10px;font-size:9px}
    .hero.fuld.med-vaerktoej .h-bund p:not(.h-under){font-size:12px;line-height:1.55;margin-top:12px;max-width:270px}
    .hero.fuld.med-vaerktoej .rund-start{margin-top:34px;gap:16px}
    /* Den spontane genvej får sin pille tilbage på lave skærme (KN 11/9).
       Designrunden gjorde den til et bart tekstlink — pænt på en høj telefon,
       hvor den lander på den mørke overlay. Ved 320×700 lander den oven i
       bilen, og så kan man ikke læse den. Prøvet i browseren, ikke gættet. */
    .hero.fuld.med-vaerktoej .spontan-link{
      background:rgba(var(--p-lys-9-rgb),.10);border:1px solid rgba(var(--p-lys-9-rgb),.22);
      border-radius:100px;padding:6px 13px;font-size:11px;
      backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
    }
  }
  @media(max-width:350px){
    .hero.fuld.med-vaerktoej .overlay{padding-left:22px;padding-right:22px}
    .hero.fuld.med-vaerktoej .h-bund h1{font-size:33px;letter-spacing:-1px}
    .hero.fuld.med-vaerktoej .h-logo .logo-svg{height:44px}
    .hero.fuld.med-vaerktoej .aryt-tæller .at-label{font-size:9px}
  }
  @media(prefers-reduced-motion:reduce){
    .hero.fuld.med-vaerktoej *, .hero.fuld.med-vaerktoej *::after{animation:none!important;transition:none!important}
  }

  /* =============================================================
     EDITOR-TILSTANDEN (KN 5/10) — kun for admins med editoren slået til.
     Bjælken svæver over bundmenuen og følger med på hver skærm; arket er
     appens egen modal, bare med plads til en længere tekst.
     ============================================================= */
  .red-bjaelke{position:absolute;left:12px;right:12px;bottom:calc(84px + var(--bund-luft));z-index:60;
    display:flex;align-items:center;gap:8px;padding:7px 7px 7px 14px;border-radius:100px;
    background:var(--p-deep-brown);color:var(--p-warm-cream);
    box-shadow:0 12px 30px rgba(var(--p-sort-rgb),.32),inset 0 1px 0 rgba(var(--p-hvid-rgb),.08)}
  .telefon.uden-bundnav .red-bjaelke{bottom:calc(14px + var(--bund-luft))}
  .red-mærke{display:flex;align-items:center;gap:6px;margin-right:auto;font-size:11px;font-weight:700;
    letter-spacing:1.6px;text-transform:uppercase;color:var(--p-kobber-lys)}
  .red-mærke .ik{width:15px;height:15px}
  .red-knap{border:1px solid rgba(var(--p-warm-cream-rgb),.28);background:none;color:var(--p-warm-cream);
    border-radius:100px;padding:8px 13px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
  .red-knap.aktiv{background:var(--p-warm-cream);color:var(--p-deep-brown)}
  .red-knap.udgiv{background:var(--cta);border-color:transparent;color:var(--paa-cta)}
  .red-knap:disabled{opacity:.45;background:none;border-color:rgba(var(--p-warm-cream-rgb),.2);color:var(--p-warm-cream);cursor:default}
  /* "Ret tekst" er trykket: alt på skærmen er nu et mål, ikke en knap. */
  body.red-vælg #indhold *{cursor:crosshair}
  body.red-vælg #indhold :is(h1,h2,h3,p,button,label,span,a,.etiket):hover{outline:1.5px dashed var(--p-kobber);outline-offset:2px}
  /* Et langt tryk må ikke markere tekst eller åbne telefonens egen menu. */
  .telefon:has(.red-bjaelke) #indhold{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;padding-bottom:190px}
  .telefon:has(.red-bjaelke) #indhold :is(input,textarea){-webkit-user-select:text;user-select:text}

  .red-ark{max-width:380px;max-height:calc(var(--skaerm) - 80px);overflow-y:auto;text-align:left}
  .red-ark textarea{margin-top:14px;min-height:110px;font-size:15px;line-height:1.5}
  .red-ark .modal-knapper{margin-top:16px}
  .red-ark input[type=search]{width:100%}
  .red-nøgle{font-family:ui-monospace,Menlo,Consolas,monospace;letter-spacing:0;text-transform:none;font-weight:500}
  .red-hjælp{font-size:12.5px;margin-top:6px;line-height:1.45}
  .red-fejl{color:var(--fare);font-size:13.5px;margin-top:10px;line-height:1.45}
  .red-fejl:empty{display:none}
  .red-link{font-size:13.5px;color:var(--fjord);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
  .red-valg{display:flex;flex-direction:column;gap:8px;margin-top:14px}
  .red-valg button{text-align:left;border:1px solid var(--linje);background:var(--felt-flade);color:var(--tekst);
    border-radius:14px;padding:11px 14px;font:inherit;font-size:14px;line-height:1.4;cursor:pointer}
  .red-ark-fod{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px}
  .red-ark-fod .tekst-knap{font-size:13.5px;color:var(--fjord);text-decoration:underline;cursor:pointer}

  /* ---- fanen "Steder" ---- */
  input[type=search]{width:100%;border:1.5px solid var(--linje);border-radius:14px;padding:12px 15px;
    font-size:15px;font-family:inherit;background:var(--felt-flade);color:var(--tekst)}
  .red-steder{display:flex;flex-direction:column;gap:10px}
  .red-sted{display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;
    border:1px solid var(--kort-kant);background:var(--kort-flade);border-radius:18px;padding:9px 12px 9px 9px;
    font:inherit;color:var(--tekst)}
  .red-sted-billede{flex:0 0 56px;height:56px;border-radius:12px;overflow:hidden;display:flex;
    align-items:center;justify-content:center;background:var(--flade-dyb);color:var(--rav)}
  .red-sted-billede img{width:100%;height:100%;object-fit:cover;display:block}
  .red-sted-tekst{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
  .red-sted-tekst b{font-size:15px;color:var(--gran);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .red-sted-tekst span{font-size:12.5px;color:var(--dæmpet)}
  .red-ikke-udgivet{flex-shrink:0;font-size:10.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;
    color:var(--paa-cta);background:var(--cta);border-radius:100px;padding:4px 9px}

  /* ---- ét sted ---- */
  .red-skema .kort{margin-top:14px}
  .red-skema select{width:100%;border:1.5px solid var(--linje);border-radius:14px;padding:12px 14px;
    font-size:15px;font-family:inherit;background:var(--felt-flade);color:var(--tekst)}
  .red-flueben{display:flex;align-items:flex-start;gap:12px;margin-top:14px;cursor:pointer}
  .red-flueben input{width:20px;height:20px;margin-top:1px;accent-color:var(--p-kobber);flex-shrink:0}
  .red-flueben span{display:flex;flex-direction:column;gap:2px;font-size:14.5px;color:var(--gran)}
  .red-flueben .dæmpet{font-size:12.5px}
  .red-to{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .red-billeder{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
  .red-billede{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;background:var(--flade-dyb)}
  .red-billede img{width:100%;height:100%;object-fit:cover;display:block}
  .red-bill-knap{position:absolute;top:5px;right:5px;width:30px;height:30px;border-radius:50%;border:0;cursor:pointer;
    display:flex;align-items:center;justify-content:center;background:rgba(var(--p-sort-rgb),.55);color:#fff}
  .red-bill-knap.venstre{right:auto;left:5px}
  .red-bill-knap .ik{width:15px;height:15px}
  .red-forside{position:absolute;left:5px;bottom:5px;font-size:10px;font-weight:700;letter-spacing:.6px;
    text-transform:uppercase;background:var(--cta);color:var(--paa-cta);border-radius:100px;padding:3px 8px}
  .red-tilfoej{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;
    border:1.5px dashed var(--linje);background:none;color:var(--gran);font-size:12px;font-weight:600}
  .red-tilfoej .ik{width:22px;height:22px;color:var(--rav)}
  .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
  /* Listedelen i arket (5/10): tilføj, fjern, skjul og vis igen. */
  .red-liste{display:flex;flex-direction:column;gap:8px;margin-top:18px;padding-top:14px;border-top:1px solid var(--linje)}
  .red-liste .knap.stille{align-self:center}
  .red-skjult{text-align:left;border:1px dashed var(--linje);background:none;color:var(--gran);border-radius:12px;
    padding:9px 12px;font:inherit;font-size:13.5px;cursor:pointer}
  /* Fanen "Steder" i to afsnit (KN 5/10): ikke udgivet øverst, i appen under. */
  .red-afsnit{margin:18px 0 10px}
  .red-afsnit h3{display:flex;align-items:center;gap:8px;margin-bottom:10px}
  .red-antal{font-family:var(--skrift-brød);font-size:12px;font-weight:700;color:var(--paa-cta);background:var(--cta);
    border-radius:100px;padding:2px 9px;letter-spacing:.3px}
  .red-afsnit .knap{margin-bottom:6px}
  /* "toilet" streget over på forslagskortet, når der intet toilet er (KN 5/10). */
  .uden-toilet{text-decoration:line-through;text-decoration-thickness:1.5px}
  /* "Vælg et sted" i nedtællingen, når intet sted er valgt: kapitæler som .ned-label (KN 5/10). */
  .ned-sted.uden{font-family:var(--skrift-brød);font-size:12px;letter-spacing:2.4px;text-transform:uppercase;font-weight:600;
    color:rgba(var(--p-lys-7-rgb),.78)}
  /* Plan B i sin egen boks (KN 5/10: "så man kan se, dette er noget andet, og
     der er hjælp at hente"). Petrol — landskabets farve — så den ikke ligner
     de cremefarvede kort, den står mellem. */
  .planb-boks{margin:22px 0 8px;padding:16px 14px 6px;border-radius:var(--radius);
    background:rgba(var(--p-petrol-rgb),.14);border:1px solid rgba(var(--p-petrol-rgb),.38)}
  .planb-boks h3{display:flex;align-items:center;gap:8px;margin:0 2px 4px;color:color-mix(in srgb,var(--p-petrol) 70%,var(--gran))}
  .planb-boks h3 .ik{width:19px;height:19px;flex-shrink:0;color:var(--p-petrol)}
  .planb-boks > p{margin:0 2px 12px;font-size:13.5px;color:var(--dæmpet)}
  .planb-boks .res-kort{background:var(--flade)}

/* Anmeldelsen med stjerner (KN 5/10). Afløser prikkerne (.prik-valg), som
   ikke længere bruges af anmeldelsen. Knappen er 32 px bred, så fem står
   ved siden af spørgsmålet også ved 320. */
.stjerne-valg{display:flex;gap:0;flex-shrink:0}
.stjerne-valg button{width:32px;height:36px;padding:0;border:none;background:none;cursor:pointer;
  font-size:24px;line-height:1;color:var(--p-sand-5);transition:color .15s, transform .15s}
.stjerne-valg button.valgt{color:var(--rav)}
.stjerne-valg button:active{transform:scale(1.15)}
.stjerne-valg button:focus-visible{outline:2px solid var(--rav);outline-offset:1px;border-radius:6px}
.anmeldt-stjerner{display:flex;gap:6px 14px;margin-top:10px;flex-wrap:wrap;font-size:12.5px;color:var(--dæmpet);align-items:center}
.anmeldt-stjerner > span{display:inline-flex;align-items:center;gap:5px}
.anmeldt-stjerner .stjerner{font-size:13px}
@media (max-width:359px){
  .stjerne-valg button{width:26px;font-size:20px}
}
/* Hjem før afgang på datotrinnet (KN 5/10). */
.tid-advarsel{margin:12px 4px 0;font-size:13.5px;line-height:1.45;color:var(--fare, #b4533a)}
.tid-advarsel[hidden]{display:none}
