@font-face { font-family: "Schibsted Grotesk"; src: url("/assets/schibsted-grotesk-latin.4c8b93f4.woff2") format("woff2"); font-display: swap; font-weight: 400 700; }
.calendar-toolbar button, #navnedager-toggle { min-height: 2.75rem; min-width: 2.75rem; }
@media (max-width: 760px) { .calendar-toolbar { flex-direction: column; } .calendar-toolbar > div { width: 100%; justify-content: space-between; } .calendar-toolbar strong { min-width: 0; flex: 1; text-align: center; } .calendar-toolbar #year-view-toggle { min-width: 0; } }
.ad-slot { min-height: 8.75rem; margin: 1.5rem 0; display: grid; place-items: center; color: var(--color-muted); background: var(--color-surface); border: 1px dashed var(--color-line); font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; }
header>a.brand { display:inline-flex; align-items:center; gap:.55rem; }
.brand img { display:block; flex:none; }
.calendar-intro { display:flex; align-items:end; justify-content:space-between; gap:1rem; padding:1.5rem 0 .75rem; border-bottom:2px solid var(--color-text); }
.calendar-intro h1 { margin:0; font-size:clamp(1.7rem,3.4vw,3rem); }
.calendar-intro p { margin:.25rem 0 0; color:var(--color-text-secondary); }
.today.today-compact { padding:.8rem 0; border-bottom:1px solid var(--color-line); }
.today.today-compact p { margin:0; }
.month-card-link { display:block; color:var(--color-text); text-decoration:none; }
.month-card-link[hidden] { display:none; }
.month-card-link:focus-visible { outline:2px solid var(--color-focus); outline-offset:4px; }
.year-grid-half { display:contents; }
.year-navigation { align-items:center; flex-wrap:nowrap; gap:.75rem; font-variant-numeric:tabular-nums; }
.year-navigation a { display:grid; place-items:center; min-width:2.75rem; min-height:2.75rem; border:1px solid var(--color-line); text-decoration:none; }
.year-navigation[hidden],.month-navigation[hidden] { display:none; }
.month-navigation { align-items:center; flex-wrap:nowrap; gap:.75rem; }
.month-navigation a { display:grid; place-items:center; min-width:2.75rem; min-height:2.75rem; border:1px solid var(--color-line); text-decoration:none; }
.month-navigation a:nth-child(2) { padding:0 .75rem; }
.calendar-month-layout.is-month-view { display:grid; grid-template-columns:minmax(0,1fr) 15rem; gap:1.5rem; align-items:start; }
.calendar-month-layout.is-month-view .year-grid { display:block; }
.calendar-month-layout.is-month-view .year-grid .month-card { padding-top:0; }
.calendar-month-layout.is-month-view .year-grid .month-card h2 { font-size:2rem; }
.calendar-month-layout.is-month-view .year-grid .month-card h2[hidden] { display:none; }
.calendar-month-layout.is-month-view .year-grid .calendar th,.calendar-month-layout.is-month-view .year-grid .calendar td { padding:.7rem .3rem; font-size:1rem; }
.next-months { display:grid; gap:1.25rem; } .week-months .next-months { grid-template-columns:repeat(auto-fit,minmax(0,16rem)); justify-content:start; align-items:start; }
.next-months[hidden],.next-month-set[hidden] { display:none; }
.next-month-set { display:grid; gap:1.25rem; }
.next-month-link { display:block; color:var(--color-text); text-decoration:none; }
.next-months .month-card { padding:0; }
.next-months .month-card h2 { font-size:1rem; }
.next-months .calendar th,.next-months .calendar td { padding:.22rem .05rem; font-size:.72rem; }
.next-months .mini-calendar td:nth-child(6),.next-months .mini-calendar td:nth-child(7) { background:var(--color-surface); }
.quick-tools { margin:1rem 0 1.5rem; gap:.6rem; }
.quick-tools a, .quick-tools button { min-height:2.5rem; display:inline-flex; align-items:center; padding:0 .7rem; border:1px solid var(--color-line); background:var(--color-background); color:var(--color-text); text-decoration:none; }
.print-control { position:relative; }
.print-control > button { min-width:2.5rem; justify-content:center; }
.print-options { position:absolute; z-index:5; top:calc(100% + .4rem); left:0; display:grid; min-width:13rem; padding:.35rem; border:1px solid var(--color-line); background:var(--color-background); }
.print-options[hidden] { display:none; }
.print-options button { justify-content:flex-start; border:0; }
.calendar td.outside,.calendar td.outside.holiday { color:transparent; }
.calendar td.outside .calendar-marker { visibility:hidden; }
.calendar-flag-details { color:var(--color-muted); font-size:.75rem; line-height:1.45; }
.calendar-flag-details h3 { margin:.6rem 0 .2rem; font-size:.75rem; font-weight:500; }
.calendar-flag-details ul { margin:0; padding-left:1rem; }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
body > footer { max-width:none; margin:3rem 0 0; padding:0; border:0; background:var(--color-text); color:var(--color-today); }
.footer-inner { max-width:1120px; margin:0 auto; padding:3rem 2rem 1rem; }
.footer-grid { display:grid; grid-template-columns:1.5fr repeat(3,1fr); gap:2rem; }
.footer-grid section { display:grid; align-content:start; gap:.5rem; }
.footer-brand { color:var(--color-background); font-size:1.45rem; font-weight:700; text-decoration:none; }
.footer-grid h2 { margin:0; color:var(--color-background); font-size:.9rem; }
.footer-grid p { margin:0; color:var(--color-line); font-size:.85rem; line-height:1.55; }
.footer-grid a:not(.footer-brand) { color:var(--color-today); font-size:.85rem; }
.footer-bottom { margin-top:2rem; padding-top:1rem; border-top:1px solid var(--color-text-secondary); color:var(--color-line); font-size:.75rem; }
@media(max-width:760px){ body > footer { padding:0; } .footer-inner { padding:2rem 1rem 1rem; } .footer-grid { grid-template-columns:1fr 1fr; } .calendar-intro { align-items:start; flex-direction:column; } }
@media(max-width:760px){ .calendar-month-layout.is-month-view { grid-template-columns:1fr; } }
@media(max-width:460px){ .footer-grid { grid-template-columns:1fr; } }
@media print { .today,.quick-tools,.year-navigation,#show-full-year,.ad-slot,.calendar-flag-details,.section-links { display:none; } }
@media print { main { max-width:none; padding:0; } .breadcrumb,.calendar-navigation { display:none; } .calendar-intro { display:block; padding:0 0 3mm; border-bottom:1.5pt solid var(--color-text); } .calendar-intro h1 { margin:0; font-size:20pt; } .year-grid { gap:4mm; } .year-grid .month-card { padding:0; break-inside:avoid; } .year-grid .month-card h2 { margin:0 0 2mm; font-size:10pt; } .year-grid .calendar th,.year-grid .calendar td { padding:1mm .4mm; font-size:7pt; } html[data-print-layout="a3"] .year-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:5mm; } html[data-print-layout="a3"] .year-grid .month-card h2 { margin:0 0 2mm; font-size:14pt; } html[data-print-layout="a3"] .year-grid .calendar th,html[data-print-layout="a3"] .year-grid .calendar td { padding:2.1mm .8mm; font-size:11pt; } html[data-print-layout="a3"] .year-grid-half { display:contents; } html[data-print-layout="a4"] .year-grid { display:block; } html[data-print-layout="a4"] .year-grid-half { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:4mm; } html[data-print-layout="a4"] .year-grid-half:first-child { break-after:page; } }
:root { --color-background: #FBFAF8; --color-surface: #F6F4F0; --color-current-week: #F2F1EC; --color-today: #E9E7E1; --color-text: #1B2430; --color-text-secondary: #454F5C; --color-muted: #68707C; --color-line: #E4E3DE; --color-line-strong: #867F74; --color-accent: #B4122E; --color-brand: #21409A; --color-focus: #1B2430; color-scheme: light; font-family: "Schibsted Grotesk", sans-serif; color: var(--color-text); background: var(--color-background); }
* { box-sizing: border-box; } body { margin: 0; background: var(--color-background); } header, main, footer { max-width: 1120px; margin: 0 auto; padding: 1.25rem 2rem; } header { display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid var(--color-line); } header>a { color:var(--color-text); text-decoration:none; font-size:1.45rem; font-weight:700; } nav { display:flex; gap:1rem; flex-wrap:wrap; } a { color:var(--color-text-secondary); } .today { padding:1.25rem 0; border-bottom:2px solid var(--color-text); } .today h1 { margin:.2rem 0; font-size:clamp(1.7rem,3.4vw,3rem); } .today-meta { color:var(--color-text-secondary); font-weight:500; } .content-layout { display:grid; grid-template-columns:minmax(0,1fr) 19rem; gap:2rem; } .month-card { padding:1.25rem 0; } .month-card h2 { margin:0 0 .75rem; font-size:2rem; font-weight:600; } .calendar { width:100%; border-collapse:collapse; text-align:center; font-variant-numeric:tabular-nums; } .calendar caption { position:absolute; left:-9999px; } .calendar th,.calendar td { border-bottom:1px solid var(--color-line); padding:.7rem .3rem; } .calendar td.holiday { color:var(--color-accent); } .calendar td.is-today { border-top:2px solid var(--color-text); background:var(--color-today); font-weight:700; } .calendar td:nth-child(7),.calendar td:nth-child(8) { background:var(--color-surface); } .calendar-markers { display:flex; justify-content:center; gap:.2rem; min-height:.75rem; } .flag-marker { width:.3rem; height:.3rem; background:var(--color-accent); display:block; } .tools { display:grid; align-content:start; gap:1.25rem; } .tools form,.tools section { border-top:2px solid var(--color-text); padding-top:.75rem; } .tools h2 { font-size:1.1rem; } input,button { font:inherit; } input { min-height:2.75rem; border:1px solid var(--color-line); background:var(--color-background); padding:.4rem; } label { display:grid; gap:.25rem; margin:.5rem 0; } output { display:block; margin-top:.5rem; padding:.6rem; background:var(--color-current-week); } .calendar-toolbar { display:flex; justify-content:space-between; gap:.75rem; margin:1rem 0; } .calendar-toolbar>div { display:flex; gap:.4rem; align-items:center; } .calendar-toolbar button,#navnedager-toggle { min-height:2.75rem; min-width:2.75rem; border:1px solid var(--color-line); background:var(--color-background); color:var(--color-text); } .year-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.25rem; } .year-grid .month-card h2 { font-size:1.1rem; }.year-grid .calendar th,.year-grid .calendar td { padding:.3rem .12rem; font-size:.8rem; } footer { border-top:1px solid var(--color-line); color:var(--color-text-secondary); } .breadcrumb { padding:0; font-size:.9rem; } .breadcrumb span { margin:0 .4rem; } @media(max-width:760px){ header,main,footer { padding:1rem; } header { align-items:flex-start; flex-direction:column; } nav { gap:.65rem; font-size:.9rem; } .content-layout { grid-template-columns:1fr; } .tools { margin-top:1rem; } .calendar th,.calendar td { padding:.55rem .1rem; } .year-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } } @media(max-width:460px){ .year-grid { grid-template-columns:1fr; } } @media print { header,.calendar-toolbar,#navnedager-toggle,.tools,footer { display:none; } main { max-width:none; padding:0; } .year-grid { grid-template-columns:repeat(3,1fr); } }

/* Toppmeny, overskriftsrad og merkefarge. Lagt til sist i fila med vilje:
   reglene over kommer før grunnstilarket, så alt nytt må stå her for å gjelde. */
header { gap:1.5rem; padding:.9rem 2rem; }
.brand-initial { color:var(--color-brand); }
.site-nav { display:flex; gap:1.4rem; font-size:.95rem; flex-wrap:wrap; }
.site-nav a { color:var(--color-text-secondary); text-decoration:none; padding:.3rem 0; border-bottom:2px solid transparent; white-space:nowrap; }
.site-nav a:hover { color:var(--color-brand); border-bottom-color:var(--color-brand); }
.calendar-intro { display:block; border:0; padding:0; }
.calendar-intro h1 { margin:0; font-size:1.85rem; font-weight:650; letter-spacing:-.01em; }
.title-row { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; padding-top:1.1rem; }
.title-left { display:flex; align-items:center; gap:1rem; flex-wrap:wrap; }
.year-navigation { gap:0; border:1px solid var(--color-line); }
.year-navigation a { min-width:2.2rem; min-height:2.2rem; color:var(--color-brand); }
.legend { display:flex; gap:1rem; margin:0; font-size:.78rem; color:var(--color-text-secondary); align-items:center; }
.legend-sun { color:var(--color-accent); font-weight:600; }
.legend-flag::before { content:""; display:inline-block; width:.45rem; height:.45rem; background:var(--color-accent); margin-right:.35rem; vertical-align:middle; }
.kal-bar { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; padding:.55rem 0 .75rem; border-bottom:2px solid var(--color-text); margin-bottom:1.3rem; }
.kal-bar .today { margin:0; padding:0; border:0; font-size:.9rem; color:var(--color-text-secondary); }
.print-control > button { display:inline-flex; align-items:center; justify-content:center; min-width:2.3rem; min-height:2.3rem; }
.month-card { padding:1rem; border:1px solid var(--color-line); }
.month-card-link:hover .month-card { border-color:var(--color-brand); }
.month-head { display:flex; align-items:baseline; justify-content:space-between; gap:.5rem; }
.month-head h2 { margin:0; }
.month-count { font-size:.72rem; color:var(--color-text-secondary); }
.month-flag { display:block; margin-bottom:.2rem; font-size:.68rem; letter-spacing:.09em; text-transform:uppercase; color:var(--color-brand); font-weight:600; }
.month-card.is-current-month { border-color:var(--color-text); border-left:3px solid var(--color-brand); }
.year-grid { gap:1rem; }
.article-list { list-style:none; margin:1rem 0 0; padding:0; display:grid; gap:1.25rem; }
.article-list a { color:var(--color-text); font-size:1.15rem; font-weight:600; }
.article-list p { margin:.25rem 0 0; color:var(--color-text-secondary); font-size:.9rem; }
@media(max-width:760px){
  header { flex-direction:row; flex-wrap:wrap; align-items:center; padding:1rem; }
  .site-nav { width:100%; gap:.5rem 1rem; font-size:.9rem; }
  .kal-bar { gap:.6rem; }
}
@media print { .site-nav,.legend,.kal-bar { display:none; } .month-card { border:0; padding:0; } .month-flag,.month-count { display:none; } }
.consent-banner { position:fixed; left:0; right:0; bottom:0; z-index:20; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.75rem 1.5rem; padding:1rem 2rem calc(1rem + env(safe-area-inset-bottom, 0px)); background:var(--color-text); color:var(--color-background); }
.consent-tekst { max-width:60ch; display:grid; gap:.3rem; }
.consent-tittel { font-size:.95rem; font-weight:650; }
.consent-banner p { margin:0; font-size:.88rem; line-height:1.5; }
.consent-banner a { color:var(--color-today); }
.consent-valg { display:flex; align-items:center; gap:.75rem; flex-wrap:wrap; }
.consent-valg button { min-height:2.6rem; padding:0 1.1rem; border:1px solid var(--color-background); background:transparent; color:var(--color-background); font-weight:500; }
.consent-valg button.consent-ja { background:transparent; color:var(--color-background); font-weight:500; }
.consent-valg button:focus-visible, .consent-valg a:focus-visible { outline:2px solid var(--color-background); outline-offset:3px; }
@media(max-width:760px){ .consent-banner { padding:1rem 1rem calc(1rem + env(safe-area-inset-bottom, 0px)); } }
@media print { .consent-banner { display:none; } }

/* Navnedagsøket var det eneste verktøyet med en knapp, og knappen hadde ingen
   regel i stilarket. Den sto igjen med nettleserens standardutseende blant
   felter som ellers er formet. Den følger nå samme form som knappene ellers. */
.tools button { min-height:2.75rem; padding:0 1rem; border:1px solid var(--color-line); background:var(--color-background); color:var(--color-text); }
.tools button:hover { border-color:var(--color-brand); }

/* Et tomt <output> tegnet en grå stripe før noen hadde søkt eller regnet ut
   noe. Stripen skal først finnes når det står noe i den. */
output:empty { display:none; }

/* Månedssiden hadde rundt 150 piksler tomrom under kalenderen, fordi spalten
   med de neste månedene var høyere enn kalenderen selv. Kalenderen fyller nå
   høyden ved siden av spalten, og radene blir samtidig romsligere å lese. */
.calendar-month-layout.is-month-view { align-items:stretch; }
.calendar-month-layout.is-month-view .next-months { align-self:start; }
.calendar-month-layout.is-month-view .year-grid,
.calendar-month-layout.is-month-view .year-grid .month-card,
.calendar-month-layout.is-month-view .year-grid .calendar { height:100%; }

/* Utskriftsknappen på månedssiden står i samme rad som månedspilene og skal
   ha samme form som dem. Raden var tidligere en blokk med bare én navigasjon
   i seg, så knappen falt ned på egen linje. */
.calendar-navigation { display:flex; align-items:center; gap:.75rem; flex-wrap:wrap; }
.calendar-navigation .print-control > button { min-width:2.75rem; min-height:2.75rem; border:1px solid var(--color-line); background:var(--color-background); color:var(--color-text); }
.calendar-navigation .print-control > button:hover { border-color:var(--color-brand); }

@media print {
  /* Utskriftsreglene over er laget for hele året i smått. En enkelt måned
     skal fylle arket og være lesbar på avstand. */
  .calendar-month-layout.is-month-view { display:block; }
  .calendar-month-layout.is-month-view .next-months { display:none; }
  /* Navigasjonsraden skjules ved utskrift. Regelen over som gjør raden til en
     flex-rad står senere i filen enn den opprinnelige print-regelen, og ville
     ellers vinne også på papir. */
  .calendar-navigation { display:none; }
  /* Måneden skal fylle arket, ikke ligge som en stripe øverst. */
  .calendar-month-layout.is-month-view .year-grid .calendar { height:calc(100vh - 34mm); }
  .calendar-month-layout.is-month-view .year-grid .month-card { border:0; padding:0; }
  .calendar-month-layout.is-month-view .year-grid .calendar th,
  .calendar-month-layout.is-month-view .year-grid .calendar td { padding:3.5mm 1mm; font-size:12pt; }
}


/* Rammene rundt knapper og skrivefelt hadde kontrast 1,23 mot bakgrunnen.
   WCAG 2.1 krever minst 3 mot 1 for kanten på et betjeningselement, og
   universell utforming står som kritisk krav i AGENTS.md. Knappene var så
   vidt synlige. --color-line-strong har kontrast 3,8 mot bakgrunnen og 3,2
   mot fargen på dagens dato, og er fortsatt en varm grå som hører til
   paletten. --color-line beholdes til skillelinjer, som ikke betjenes. */
.quick-tools a, .quick-tools button,
.month-navigation a,
.print-options,
.calendar-toolbar button, #navnedager-toggle,
.calendar-navigation .print-control > button,
.tools button,
input { border-color: var(--color-line-strong); }

/* Tabelloverskriften på ukesidene er for skjermlesere, som for kalenderne. */
.week-days caption { position:absolute; left:-9999px; }

/* Merknaden som bare vises når JavaScript er av. Den skal opplyse, ikke rope. */
.static-note { margin:.6rem 0 0; color:var(--color-text-secondary); font-size:.9rem; max-width:44rem; }


/* Datatilsynet krever at det å avslå ikke skal være mer tungvint enn å godta.
   «Godta» var fylt og fetere, «Avslå» bare en ramme. Nå er de like i form, og
   bare teksten skiller dem. Regelen over beholdes fordi klassen finnes i
   skriptet; den sier nå det samme som den andre. */
