@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@500&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400&display=swap');

/* Avvik-fargetokens - lys modus (standard). Redeklareres i darkmode.css for mørk modus;
   alt som bruker var(--avvik-*-bg) - .AvvikFargeTG0/TG123/OK under og respStack-
   kortbakgrunnene i main-responsive.css - holder seg automatisk i sync uten å duplisere
   fargeverdiene flere steder. */
:root {
	--avvik-feil-bg: lightpink;
	--avvik-info-bg: lightyellow;
	--avvik-ok-bg: lightgreen;
}

/* Modulfarger, gruppert i fargefamilier. Brukes av .kp-* lenger ned. Fargekart, ledige
   farger og regler for nye moduler står i dokumentasjon/modulfarger.md */
:root {
	/* Brann */
	--modul-BA: #c0392b;
	--modul-SA: #8d5a3b;
	/* Rømning */
	--modul-LS: #27ae60;
	/* Sikkerhet */
	--modul-IA: #2980b9;
	--modul-AK: #8e44ad;
	--modul-TV: #5b6fd6;
	/* Elektro */
	--modul-EL: #f39c12;
	--modul-ET: #8a6d0b;
	--modul-EV: #d35400;
	/* IKT og drift */
	--modul-IT: #7f8c8d;
	--modul-UP: #2c3e50;
}

html, body {
	font-family: Roboto, Tahoma, Geneva, sans-serif;
	font-size: 14px;
	padding: 0;
	margin: 0;
	height: 100%;
	min-height: 100%;
	background: #f3f3f3;
}

/* 2026-08-21: overflow-x:hidden her (som sikkerhetsnett mot en usynlig .tooltiptext som ga
   horisontal scroll) ble forsøkt og reversert - ga en alvorlig regresjon der modaler kunne
   åpnes usynlig (se .tooltip-edge-right i .tooltiptext-reglene for den faktiske fiksen, og
   dokumentasjon/endringslogg-teknisk.md for full historikk). html/body sin overflow skal
   IKKE endres for å løse enkelt-element-overflow - fiks kilden (elementet), ikke symptomet
   (sidens scroll-container). */

* {
  box-sizing: border-box;
}

#container {

	position: relative;
	float: left;
	width: 100%;
	height: 100%;

}

#top {
	position: fixed;
	top: 0;
	/* left MÅ stå eksplisitt: uten den plasserer nettleseren en fixed boks der den ville
	   stått i normal flyt, og topNav.php inkluderes ETTER sideinnholdet i index.php. På en
	   side der #main er sentrert (margin: 0 auto) med et floatende .hovedskjema inni, ble
	   den statiske posisjonen ~844px, og hele toppmenyen la seg midt på siden. */
	left: 0;
	float: left;
	border: none;
	width:100%;
	height: 30px;
	text-align: right;
	color: #fff;
	background: #ffffff;
	z-index: 100;
}

#left {
	position: fixed;
	top: 50px;
	left: 0;
	width: 30px;
	background: linear-gradient(180deg, #15313e, transparent);
	min-height: calc(100vh - 50px);
	transition-duration: 0.2s;
	overflow: hidden;
}

#main {
	position: relative;
	top: 50px;
	min-height: calc(100vh - 50px);
	padding: 5px;
	width: fit-content;
	width: -moz-fit-content;
	margin: 0 auto;
}

.hovedskjema {
	float:left;
	clear:left;
	border: 1px solid #ddd;
	border-radius: 8px;
	background: #fff;
	width: 900px;
	max-width: 95vw;
	padding: 50px;
	margin-bottom: 20px;
	box-shadow: 0 5px 15px 0 rgba(0,0,0,0.1);
}

h1.certifire {
	text-transform: uppercase;
	border-bottom: 2px solid #888888;
}

h1.error {
	background: maroon;
	margin: 0;
	text-align: center;
	color: #cccccc;
	font-size: 3em;
	font-family: 'Open Sans',Roboto,sans-serif;
	font-weight: 100;
	white-space: nowrap;
}

h1.good {
	background: darkgreen;
	margin: 0;
	text-align: center;
	color: whitesmoke;
	font-size: 3em;
	font-family: 'Open Sans',Roboto,sans-serif;
	font-weight: 100;
	white-space: nowrap;
}

h2 {
	font-size: 1.5em;
}

h4 {
	font-size: 18px;
}

ul.navbar {
	list-style-type: none;
	color: #0a0a0a;
	margin: 0;
	padding: 0;
	display: flex;
	justify-content: flex-start;
	font-size: 1.5em;
	float: left
}

ul.search {
	list-style-type: none;
	padding-inline-start:0;
	margin-block-start:0;
	filter: drop-shadow(2px 4px 6px black);
}

ul.search li {
	font-size:18px;
	width:100%;
	border:1px solid #ccc;
	color:#000;
	cursor: context-menu;
	background: #fff;
	padding: 10px 8px;
}

/* Annenhver rad grå - PHP setter tableDarkRow/tableLightRow på radene. Lå tidligere som
   inline style='background:...', som darkmode.css ikke kunne overstyre. Må gjentas her
   fordi "ul.search li" over har høyere spesifisitet enn .tableDarkRow alene. */
ul.search li.tableDarkRow {
	background: #eee;
}

/* Markert rad: settes av markerSokValg() i certifire.js, både ved hover og piltaster */
ul.search li.aktivt-valg {
	background: #cfe8ff;
}

table.BAHovedskjema {

	vertical-align: middle;
	font-size:14px;
	table-layout: fixed;
	border-spacing: 0;
    border-collapse: collapse;	
}

td.utbedret, a.utbedret {

	color: #006600;
	font-weight: bold;
	font-size: 18px;

}

a.utbedret {
	margin-left: 3px;
}

td.feil, a.feil {

	color: #990000;
	font-weight: bold;
	font-size: 18px;
}

a.feil {
	margin-left: 3px;
}

.info {
	color: orange;
	font-weight: bold;
	font-size: 18px;
	margin-left: 3px;
}

table.BAUnderskjemaDel {

	float:left;
	width: 100%;
	border-spacing: 0;
    border-collapse: collapse;
    margin-top: 15px;
	table-layout: fixed;

}

table.BAUnderskjemaFrm {

	width: 100%;
	border-spacing: 0;
    border-collapse: collapse;
    margin-top: 15px;
    table-layout: fixed;

}

table.BrannobjektListe {
	table-layout: fixed;
	border-spacing: 0;
    border-collapse: collapse;
    margin-top: 15px;
    float: left;
	width: 100%;

}

.BrannobjektListe td {

	border-left: none;
	border-right: none;
	cursor: pointer;
	padding: 8px 2px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;

}

.tableDarkRow {
	background: whitesmoke;
}

.tableLightRow {
	background: #ffffff;
}

.tableRowHighlight {
	background: #005a9c;
	color: white;
}

/* !important + to klasser (spesifisitet 0,0,2,0): må vinne over .AvvikFargeTG0/TG123/OK
   sin !important (0,0,1,0) når musepeker er over en rad med prioritetsfarge - ellers
   forsvinner hover-highlighten på nøyaktig de radene som trenger den mest. JS legger alltid
   "tableRowHighlight" til på et element som allerede har "tabellFargeAlt", så kombinasjonen
   dekker alle reelle tilfeller (se inverio-jqeventcatcher.js). */
.tabellFargeAlt.tableRowHighlight {
	background: #005a9c !important;
}

.tableRowSelected {
	background: #ff8;
	color:#000;
	font-weight: bold;
}

table.avvikFrm {
	float: left;
	width: 100%;
	table-layout: fixed;
}

p.avvikFrm {
	border: 1px solid #cccccc;
	border-radius: 5px;
	padding: 5px;
	font-size: 1.2em;
}


/* !important: disse tre skal alltid vinne over rad-stripe-klassene (.tableLightRow/
   .tableDarkRow, samme spesifisitet - kun kildekode-rekkefølge avgjorde vinner før dette,
   skjørt). Brukes på både <tr> og <div> forskjellige steder (NotatFrm.php/Kontroll.class.php),
   så en tag-kvalifisert selektor (f.eks. tr.AvvikFargeTG123) kan ikke brukes i stedet. */
.AvvikFargeTG0 {
	background: var(--avvik-info-bg) !important;
}

.AvvikFargeTG123 {
	background: var(--avvik-feil-bg) !important;
}

.AvvikFargeOK {
	background: var(--avvik-ok-bg) !important;
}

th {
	text-align: left;
}

th.kontrollskjema {
	background: #eaeaea;
	border-bottom: 1px solid #777;
	font-size: 1.2em;
	margin: 0;
	padding: 5px;
	height: 20px;
	position: sticky;
	top: 50px;
	box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.4);
	z-index: 1;
	white-space: nowrap;
}

th.multiskjema {
	background: #eaeaea;
	border-bottom: 1px solid #777777;
	font-size: 1.2em;
	/*font-size: 14px;*/
	margin: 0;
	padding: 2px;
	height: 20px;
	position: sticky;
	top: -1px;

}

td.kontrollskjema {
	margin: 0;
	border: 1px solid #ccc;
	border-left: none;
	border-right: none;
	padding: 2px 0;
}

td.kontrollskjemafeil {
	margin: 0;
	border: 1px solid #ccc;
	color:#f00;
	font-weight: bold;
	text-align: center;

}

/* HovedskjemaFrm.php sin #hovedskjemaKontrollTabell (respStack-forsøk, se
   main-responsive.css) gjenbruker kontrollskjema/kontrollskjemafeil-klassene på
   Kontrollpunkt/Egenkontroll/Merknad/Skjema/OK/I.A./Avvik-cellene for å hekte seg på
   respStack-mekanikken (kun aktiv ≤800px). Disse cellene hadde imidlertid ALDRI de to
   reglene over fra før - Kontrollpunkt/Egenkontroll/Merknad/Skjema var uten klasse (ingen
   kant/midtstilling), og OK/I.A./Avvik brukte kun sine egne desktop-klasser (utbedret/feil,
   grønn/rød tekst uten kant/midtstilling). Nullstiller derfor de generiske reglene over kun
   for denne tabellen - id-selektoren gir nok spesifisitet til å vinne uansett kildeorden -
   slik at eksisterende desktop-utseende er upåvirket og kun mobilvisningen endres. */
#hovedskjemaKontrollTabell td.kontrollskjema,
#hovedskjemaKontrollTabell td.kontrollskjemafeil {
	border: none;
	text-align: left;
	font-weight: normal;
}

#hovedskjemaKontrollTabell td.utbedret.kontrollskjemafeil {
	color: #006600;
}

#hovedskjemaKontrollTabell td.feil.kontrollskjemafeil {
	color: #990000;
}

/* Summeringsraden i avviksoversikten (Kontroll::hentAvvikStatistikk()). Samme regler
   ligger i print.css for PDF-ene, og mørke motstykker i darkmode.css. */
.avvikSumRad {
	background: #ddd;
}

.avvikSumTall {
	color: darkred;
}

table.vedlikeholdsplan {

	vertical-align: top;
	font-size:14px;
	table-layout: fixed;
	/*border-spacing: 0 1mm;*/
	border-spacing: 0;
	border-collapse: separate;

}

td.avviksklassfiseringsgrad {
	font-size: 2em;
	vertical-align: middle;
	text-align: center;
	width: 130px;
}

td.avviksklassfiseringsbeskrivelse {
	font-size: 1.2em;
	vertical-align: top;
	text-align: left;
}

td.tittel {
	font-size:18px;
	width: 2.5cm;
	padding: 0 0.2cm;
	vertical-align: top;
}

.overflow {
	max-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

table.filarkiv td {
	padding: 5px;
}

p {
	font-size:16px;
}

label {
	font-weight: bold;
	font-size: 16px;
}


a.navbar {
	font-size:22px;
	font-weight:lighter;
	text-decoration:none;
/*	border:1px solid #000;*/
	color:#ccc;
	padding:2px;
/*	background-color:#ccc;*/
	display: block;
}

a.navbar:hover {
/*	background-color:royalblue;
/*	border:1px solid wheat;*/
	color: #0b7dda;
	filter: drop-shadow(2px 4px 6px #000000);
}

a {
	font-weight:bold;
	text-decoration:underline;
	color:inherit;
}

a:hover {
	text-decoration: none;
}

a.tablelink {
	font-size:12px;
	color:#000;

}

a.button {
	color: #444444;
}


i.large {
	font-size: 20px;
	color: #bbb;
	text-decoration: none;
	padding: 5px;
	transition-duration: 0.2s;
}

i.large:hover {
	color: #fff;
	transform: scale(1.5);
}

.tab {
  overflow: hidden;
  border: 1px solid #ccc;
  background-color: #f1f1f1;
}


.tabcontent {
  display: none;
  padding: 6px 12px;
  border: 1px solid #ccc;
  border-top: none;
}

.modal {
	display: none;
	position: fixed;
	z-index: 1;
	top: 50px;              /* under toppmenyen, som .modal-backdrop */
	left: 0;
	right: 0;
	bottom: 0;
	overflow: auto;
	overscroll-behavior: contain;
}

/* Scrollbaren på .modal skal se ut som sidens egen, som følger nettleserens tema (appen
   setter ikke color-scheme selv). .modal-content settes tilbake, så skjemafelter i
   vinduet tegnes som før. */
@media (prefers-color-scheme: dark) {
	.modal { color-scheme: dark; }
	.modal-content { color-scheme: normal; }
}

/* Siden bak skal ikke scrolle mens et vindu er åpent. Kun html (begge akser), ikke body -
   se endringslogg-teknisk.md 2026-08-21 om to uavhengige scroll-containere. */
html:has(.modal) {
	overflow: hidden;
	scrollbar-gutter: stable;   /* behold plassen til scrollbaren, så siden bak ikke flytter seg */
}

/* .modal er scroll-container: sticky-overskrifter skal klistre til toppen av den */
.modal th.kontrollskjema {
	top: 0;
}

.modal-content {
	/*min-width: 900px;*/
	width: fit-content;     /* bekreft/melding har ingen vindu-*-klasse */
	margin: 50px auto;
	padding: 20px;
	background-color: #fefefe;
	border: 1px solid #888;
	border-radius: 8px;
	filter: drop-shadow(2px 4px 6px black);
}



.modal-content:after {
	clear: both;
	display: block;
	height: 0;
	overflow: hidden;
	visibility: hidden;
	content: ".";
	font-size: 0;
}

.modal-backdrop {
	position: fixed;
	height: 100%;
	width: 100%;
	top: 50px;
	left: 0;
	background: #000000;
	/*opacity: 0;*/
	z-index: 1;
	opacity : 0;
	/*transition: opacity 0.5s ease;*/
}

/* Standard knapperad for AJAX-modal-skjemaer, se CLAUDE.md "Standardmønster for å åpne
   et vindu" - var tidligere kun definert inline i ArsplanFrm.php og virket derfor reelt
   sett bare når Arsplan sin egen <style>-blokk var lastet, selv om CLAUDE.md allerede
   dokumenterer nøyaktig denne HTML-en (samme klassenavn) som det generelle mønsteret for
   alle modal-skjemaer i appen. Flyttet hit 2026-08-28 for å faktisk gjøre den globalt
   tilgjengelig - navnet er beholdt uendret (ikke "modal-knapper") for å matche CLAUDE.md
   sitt eksempel ord for ord. */
.arsplan-modal-knapper {
	margin-top: 18px;
	display: flex;
	gap: 10px;
	justify-content: flex-end;
}
.arsplan-modal-knapper button { padding: 7px 20px; border-radius: 4px; cursor: pointer; font-size: .95em; }
.btn-lagre  { background: #1a5276; color: #fff; border: none; }
.btn-avbryt { background: #eee; border: 1px solid #ccc; }

.vindu-liten {
	width: 550px;
}

.vindu-normal {
	width: 880px;
}

.vindu-stor {
	width: 1280px;
}

.vindu-relative {
	position: relative;
}




/* The Close Button */
.close {
	position: absolute;
	top: 5px;
	right: 10px;
	color: #aaaaaa;
	font-size: 36px;
	font-weight: bold;
}

.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
}

.tooltip {
	position: relative;
	display: inline-block;
}

.tooltip .tooltiptext {
	font-family: Roboto,sans-serif;
	visibility: hidden;
	width: 120px;
	background-color: #222222;
	color: #fff;
	text-align: center;
	border-radius: 6px;
	padding: 5px 5px;
	position: absolute;
	z-index: 1;
	top: 150%;
	left: 50%;
	margin-left: -60px;
	filter: drop-shadow(2px 4px 6px black);
}

.tooltip .tooltiptext::after {
	content: "";
	position: absolute;
	bottom: 100%;
	left: 50%;
	margin-left: -5px;
	border-width: 5px;
	border-style: solid;
	border-color: transparent transparent black transparent;
}

.tooltip:hover .tooltiptext {
	visibility: visible;
}

/* Modifikator for .tooltip-ikoner som sitter nær høyre kant av sin container (typisk et
   varselikon plassert rett etter en tekstlinje, f.eks. "Rapport er gamlere enn siste
   revisjon" i Kontroll.class.php). Standard .tooltiptext sentreres alltid symmetrisk rundt
   ikonet (left:50%;margin-left:-60px) uansett hvor ikonet står - på smal skjerm kan da
   halve boksen stikke utenfor viewport til høyre, noe som gjør SIDEN scrollbar horisontalt
   selv om boksen er visibility:hidden (usynlig innhold teller likevel med i scrollWidth).
   Denne klassen forankrer boksen til ikonets HØYRE kant og lar den vokse venstre i stedet
   for å sentreres - løser overflowen for ikoner som sitter nær høyre kant, uten å røre
   noen andre .tooltip-forekomster i appen (default oppførsel er uendret). Legg til på flere
   ikoner etter behov hvis samme overflow oppstår andre steder. */
.tooltip.tooltip-edge-right .tooltiptext {
	left: auto;
	right: 0;
	margin-left: 0;
}

.tooltip.tooltip-edge-right .tooltiptext::after {
	left: auto;
	right: 8px;
	margin-left: 0;
}

.rotate{
	-moz-transition: all 0.5s linear;
	-webkit-transition: all 0.5s linear;
	transition: all 0.5s linear;
}

.rotate.down{
	-moz-transform:rotate(90deg);
	-webkit-transform:rotate(90deg);
	transform:rotate(90deg);
}

.fade-out {
	animation: fadeOut ease 1s;
}

@keyframes fadeOut {
	0% {
		opacity:1;
	}
	50% {
		opacity:1;
	}
	100% {
		opacity:0;
	}
}

/* EXPERIMENTAL */

th.rotate {
	/* Something you can count on */
	/*height: 140px;*/
	white-space: nowrap;
}

th.rotate > div {
	transform:
		/* Magic Numbers */
		/*	translate(25px, 51px)*/
				/* 45 is really 360 - 45 */
			rotate(-90deg);
	width: 35px;
}
th.rotate > div > span {
	/*border-bottom: 1px solid #ccc;*/
	padding: 5px 10px;
}

div.navbuttons {
	float:right;
	margin-top: 25px;
	font-size: 16px
}

.navbuttons {
	list-style: none;
	padding-inline-start: 0;
	margin: 0;
	/*background: #3b97ca;*/
	display: -webkit-box;
	display: -moz-box;
	display: -ms-flexbox;
	display: -webkit-flex;
	display: flex;
	-webkit-flex-flow: row wrap;
	justify-content: space-around;
	font-size: 2em;

}

.navbuttons button {
	margin: 5px;
}

.visliste {
	display: block;
}

.skjul {
	display:none;
}


.thumbcontainer {
	position: relative;
	float: left;
	max-width: 200px;
	margin: 10px;
	filter: drop-shadow(2px 4px 6px black);
}

.overlay {
	position: absolute;
	top: 0;
	left: 0;
	opacity: 0;
	width:100%;
	height:100%;
	vertical-align: middle;
	text-align: center;
	margin: auto;
	transition: .3s ease;
	overflow: hidden;
}

.thumbcontainer:hover .overlay{
	opacity:1;
	background:rgba(0,0,0,0.5) center no-repeat;
}

.image {
	display:block;
	height:auto;
}

/* Handlingsikonene i overlayet: slett oppe til høyre, zoom midt på (størst, siden det er
   hovedhandlingen), nedlasting nede på midten. Brukes av Kontroll::hentVedleggThumbs()
   og foretakslogoen i auth.class.php. */
.thumb-slett {
	position: absolute;
	top: 2px;
	right: 2px;
}

.thumb-zoom {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	cursor: pointer;
}

.thumb-zoom i.large {
	font-size: 28px;
}

.thumb-lastned {
	position: absolute;
	bottom: 2px;
	left: 50%;
	transform: translateX(-50%);
}
/**
Pagination
 */
.pagination {
	display: inline-block;
	padding-left: 0;
	margin: 20px 0;
	border-radius: 4px;
}

.pagination>li {
	display: inline;
}

.pagination>li:first-child>a, .pagination>li:first-child>span {
	margin-left: 0;
	border-top-left-radius: 4px;
	border-bottom-left-radius: 4px;
}
.pagination>li>a, .pagination>li>span {
	position: relative;
	float: left;
	padding: 6px 12px;
	margin-left: -1px;
	line-height: 1.42857143;
	color: #337ab7;
	text-decoration: none;
	background-color: #fff;
	border: 1px solid #ddd;
}

.pagination>.active>a, .pagination>.active>a:focus, .pagination>.active>a:hover, .pagination>.active>span, .pagination>.active>span:focus, .pagination>.active>span:hover {
	z-index: 3;
	color: #fff;
	cursor: default;
	background-color: #337ab7;
	border-color: #337ab7;
}

.pagination>li>a:focus, .pagination>li>a:hover, .pagination>li>span:focus, .pagination>li>span:hover {
	z-index: 2;
	color: #23527c;
	background-color: #eee;
	border-color: #ddd;
}

/**
Topp-navigering
 */

.topnav {
	overflow: hidden;
	width: 1000px;
	margin-left: auto;
	margin-right: auto;
}

.topnav a {
	float: left;
	display: block;
	text-align: center;
	text-decoration: none;
	font-size: 17px;
	font-weight: normal;
	padding: 0 20px;        /* ikke vw: vw endrer seg når html får scrollbar-gutter (åpent vindu) */
	cursor: pointer;
}

.menyicon {
	padding: 0;
	background: url('/img/inverio-logo-liten.png');
	height: 50px;
	width: 50px;
	background-size: cover;
}

/* Logo med "Inverio" som ekte tekst - for dem uten meny (ekstern og gjest).
   Tekst i stedet for bilde, slik at fargen kan følge mørk modus (se darkmode.css). */
.topnav a.menyicontekst {
	padding: 0 20px 0 58px;
	background: url('/img/inverio-logo-liten.png') no-repeat left center;
	background-size: 50px 50px;
	height: 50px;
	font-size: 35px;
	font-weight: 500;
	color: #555555;
	font-weight: bold;
}

/*
.active {
	background-color: #4c61af;
	color: white;
}
*/
.topnav .icon {
	display: none;
}

.btn-text {
	display: none;
}

.btnSlett  {
	background:#c0392b;
}

.dropdown {
	float: left;
	overflow: hidden;
}

.dropdown .dropbtn {
	font-size: 17px;
	border: none;
	outline: none;
	color: whitesmoke;
	padding: 14px 16px;
	background-color: inherit;
	font-family: inherit;
	margin: 0;
	height: 50px;
}


.dropdown-content {
	margin-top: 55px;
	display: none;
	position: absolute;
	background-color: #f9f9f9;
	border: 1px solid #cccccc;
	min-width: 200px;
	box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
	z-index: 1;
}


.submenu-content {
	display: none;
	position: absolute;
}

.dropdown-content a {
	float: none;
	color: black;
	padding: 8px 16px;
	text-decoration: none;
	display: block;
	text-align: left;
}


.topnav a:hover, .dropdown:hover .dropbtn {
/*	background: none;*/
	color: #4b33dd;
	border-bottom: 2px solid;
}

.topnav a.menyicon:hover, .topnav a.menyicontekst:hover {
	border: none;
}

/*
a.menuactive {
	background: none;
	color: #4b33dd;
	border-bottom: 2px solid;
}
*/

.dropbtn:hover .btn-text {
	display: block;
}

.dropdown-content a:hover {
	background-color: #ddd;
	border: none;
	color: black;
}

.dropdown:hover .dropdown-content {
	display: block;
}

.dropdown-submenu:hover .submenu-content {
	display: block;
}

.avatar {
	font-size:18px;
	color: #0a0a0a;
	float:right;
}

/* Div tables */

div.table-container {
	border-radius: 5px;
	padding: 20px;
}

div.table-col-10 {
	float: left;
	width: 10%;
	margin-top: 6px;
	text-align:left;
}

div.table-col-20 {
	float: left;
	width: 20%;
	margin-top: 6px;
	text-align:left;
}

div.table-col-25 {
	float: left;
	width: 25%;
	margin-top: 6px;
	text-align:left;
}

div.table-col-30 {
	float: left;
	width: 30%;
	margin-top: 6px;
	text-align:left;
}

div.table-col-40 {
	float: left;
	width: 40%;
	margin-top: 6px;
	text-align:left;
}

div.table-col-50 {
	float: left;
	width: 50%;
	margin-top: 6px;
	text-align:left;
}

div.table-col-60 {
	float: left;
	width: 60%;
	margin-top: 6px;
	text-align:left;
}

div.table-col-75 {
	float: left;
	width: 75%;
	margin-top: 6px;
}

/* Clear floats after the columns */
div.table-row:after {
	content: "";
	display: table;
	clear: both;
}

.responsiveOnly {
	display: none !important;
}

/* Merkelapper per modul. Fargene er variablene --modul-* i :root øverst i filen */
.kp-BA { background: var(--modul-BA); }
.kp-SA { background: var(--modul-SA); }
.kp-LS { background: var(--modul-LS); }
.kp-IA { background: var(--modul-IA); }
.kp-AK { background: var(--modul-AK); }
.kp-TV { background: var(--modul-TV); }
.kp-EL { background: var(--modul-EL); color: #333; }
.kp-ET { background: var(--modul-ET); }
.kp-EV { background: var(--modul-EV); }
.kp-IT { background: var(--modul-IT); }
.kp-UP { background: var(--modul-UP); }

.kp-badge {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 2px 7px;
	border-radius: 12px;
	font-size: 0.78em;
	color: #fff;
	cursor: pointer;
	white-space: nowrap;
	max-width: 160px;
	overflow: hidden;
	text-overflow: ellipsis;
}
.kp-badge:hover { opacity: .85; }
.kp-badge.utfort  { opacity: .5; text-decoration: line-through; }
.kp-badge.avlyst  { opacity: .35; }

/* Gjenbrukbare liste-/oversiktssideelementer - topbar, filterrad, statistikk-kort,
   datatabell (med valgfri sortering via th[data-sorter]) og status-piller. Flyttet ut
   av et inline <style>-blokk i ServiceAvtaleFrm.php 2026-08-28 og gitt generiske navn
   (ikke sa-*) for gjenbruk på andre oversiktssider. ArsplanFrm.php (samme dag) er nå
   den andre bruken av disse klassene - se "Årsplan"-seksjonen lenger ned for hva som
   fortsatt er sidespesifikt der. */

.list-topbar {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 12px;
}
/* Størrelse og marg som vanlig h1, likt overskriften på årsplanen og de andre sidene */
.list-topbar h1 { flex: 1 0 auto; }

.list-filter {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
	align-items: center;
	margin-bottom: 16px;
}

/* Stegindikator for veivisere (ny serviceavtale i ServiceAvtale.php): nummererte sirkler
   med en linje mellom, valgt verdi under hvert steg. .ferdig = fullført, .aktiv = steget
   som vises. Steg som kan nås, har .serviceavtaleBtn og er klikkbare */
ol.steg-indikator {
	display: flex;
	list-style: none;
	margin: 0 0 20px;
	padding: 0;
	counter-reset: steg;
}
ol.steg-indikator li {
	flex: 1;
	min-width: 0;
	position: relative;
	text-align: center;
	font-size: .85em;
	color: #999;
	counter-increment: steg;
}
ol.steg-indikator li::before {
	content: counter(steg);
	position: relative;
	z-index: 1;
	display: block;
	width: 28px;
	height: 28px;
	line-height: 28px;
	margin: 0 auto 4px;
	border-radius: 50%;
	background: #ddd;
	color: #fff;
	font-weight: bold;
}
ol.steg-indikator li::after {
	content: '';
	position: absolute;
	top: 13px;
	left: -50%;
	width: 100%;
	height: 2px;
	background: #ddd;
}
ol.steg-indikator li:first-child::after { display: none; }
ol.steg-indikator li.ferdig,
ol.steg-indikator li.aktiv { color: inherit; }
ol.steg-indikator li.aktiv { font-weight: bold; }
ol.steg-indikator li.ferdig::before,
ol.steg-indikator li.ferdig::after,
ol.steg-indikator li.aktiv::before,
ol.steg-indikator li.aktiv::after { background: #2980b9; }
ol.steg-indikator li.aktiv::before { box-shadow: 0 0 0 4px rgba(41, 128, 185, .25); }
ol.steg-indikator li.serviceavtaleBtn { cursor: pointer; }
ol.steg-indikator li.serviceavtaleBtn:hover { text-decoration: underline; }
ol.steg-indikator .steg-verdi {
	display: block;
	min-height: 1.2em;
	padding: 0 4px;
	font-size: .9em;
	font-weight: normal;
	color: #888;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.stat-cards {
	display: flex;
	gap: 20px;
	flex-wrap: wrap;
	margin-bottom: 18px;
}
.stat-card {
	background: #f5f8fa;
	border: 1px solid #dde;
	border-radius: 8px;
	padding: 10px 20px;
	text-align: center;
	flex: 1 1 70px;
	/* Ingen egen min-width her - en eksplisitt verdi overstyrer flexbox sin
	   automatiske min-width:auto, som ellers hindrer kortet i å krympe under
	   innholdets naturlige bredde og tvinge tall/tekst til å brekke over to linjer. */
}
.stat-card .tall  { font-size: 1.8em; font-weight: bold; color: #1a5276; white-space: nowrap; }
.stat-card .label { font-size: .8em;  color: #666; margin-top: 2px; }

.data-table { width: 100%; border-collapse: collapse; font-size: .95em; }
.data-table th {
	background: #1a5276;
	color: #fff;
	padding: 8px 10px;
	text-align: left;
	white-space: nowrap;
}
/* Kun kolonner med data-sorter (satt av byggSorterTh() i ServiceAvtale.class.php) skal
   se klikkbare ut - en evt. handlings-kolonne uten sortering skal ikke arve pekeren. */
.data-table th[data-sorter] { cursor: pointer; user-select: none; }
.data-table th[data-sorter]:hover { background: #154360; }
/* FontAwesome-ikon (fa-sort/fa-sort-up/fa-sort-down), ikke lenger en Unicode-pil-entitet -
   disse var vanskelige å se (tynne glyffer, lav kontrast) mot den mørke th-bakgrunnen. */
.data-table th .sort-pil { margin-left: 4px; font-size: .85em; opacity: .75; }
.data-table th.aktiv-sortering .sort-pil { opacity: 1; }
.data-table td { padding: 7px 10px; border-bottom: 1px solid #eee; vertical-align: middle; }
.data-table tr:hover td { background: #f5f8fa; }

.status-pill {
	padding: 2px 8px;
	border-radius: 10px;
	font-size: .78em;
	font-weight: bold;
	white-space: nowrap;
	display: inline-block;
}
/* Brønnøysund-oppslag på kundekortet (KundeData::kundeKort(), KundeArkiv.php).
   Trefflista er en vanlig ul.search og ser ut som kunde-/objekt-/kontrollsøket.
   Det eneste den har i tillegg er detaljlinjen, som skiller like firmanavn fra
   hverandre (poststed · organisasjonsform · orgnr). */
.brreg-treff-detalj { color: #777; font-size: .7em; margin-left: 8px; }
/* Én rad = én linje, som i de øvrige søkelistene. Detaljlinjen gjør radene lange,
   så det som ikke får plass kuttes med ... i stedet for å brekke til to linjer. */
#brregTreffListe li { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#brregStatus { margin-top: 6px; min-height: 1.4em; }
ul.search li .status-pill { margin-left: 8px; vertical-align: middle; }

.status-pill-info      { background: #d6eaf8; color: #1a5276; }
.status-pill-success   { background: #d5f5e3; color: #1e8449; }
.status-pill-warning   { background: var(--avvik-info-bg); color: #856404; }
.status-pill-cancelled { background: #fde8e8; color: #922b21; }
.status-pill-danger    { background: maroon;  color: #fff; }

/* Serviceavtaler (ServiceAvtaleFrm.php) - sidespesifikke rester som ikke passer noe
   generisk mønster over. */
#serviceavtaleSide { padding: 16px; max-width: 1400px; }
.sa-pris { font-variant-numeric: tabular-nums; white-space: nowrap; }
.sa-ingen-data { text-align: center; color: #888; font-style: italic; padding: 30px 0; }

/*
Årsplan (ArsplanFrm.php) - flyttet ut av et inline <style>-blokk 2026-08-28, samme
   behandling som Serviceavtaler-seksjonen over. Sidespesifikke rester som ikke passer
   noe generisk mønster - topbar/filterrad/tabell/status-piller/modal-knapper bruker nå
   de delte klassene lenger opp (.list-topbar/.list-filter/.data-table/.status-pill-
   .arsplan-modal-knapper) i stedet for egne varianter av det samme. NB: den opprinnelige
   ".arsplan-topbar"/".arsplan-topbar h1"-regelen ble IKKE flyttet - den var død CSS
   (siden var aldri en <div class='arsplan-topbar'> i markup-en), fjernet i samme slengen.
   */

#arsplanSide { padding: 16px; max-width: 1400px; }

.arsplan-kontroller {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	gap: 8px;
	flex-wrap: wrap;
	margin-bottom: 12px;
}
.arsplan-year-nav {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 1.5em;
	font-weight: bold;
}
.arsplan-year-btn {
	background: none;
	border: 1px solid #aaa;
	border-radius: 4px;
	padding: 2px 10px;
	cursor: pointer;
	font-size: 0.9em;
	text-decoration: none;
	color: inherit;
	line-height: 1.6;
}
.arsplan-year-btn:hover { background: #eee; }

/* Årshjul — 1 rad per måned, utvidbar */
#arsplan-kalender { display: flex; flex-direction: column; gap: 5px; }

.maned-rad {
	border: 1px solid #ddd;
	border-left: 4px solid #00000042;
	border-radius: 8px;
	overflow: hidden;
}
.maned-rad.har-hendelser { border-left-color: #1a5276; }
.maned-rad.idag {
	background: #ebf5fb;
	border-color: #aed6f1;
	border-left-color: #2980b9;
	box-shadow: 0 2px 8px rgba(41,128,185,.13);
}
.maned-rad.idag .maned-navn { color: #1a6fa8; }

.maned-topp {
	display: flex;
	align-items: center;
	padding: 8px 14px;
	min-height: 46px;
	gap: 14px;
	cursor: pointer;
}
.maned-topp:hover { background: rgba(0,0,0,.025); }

.maned-header {
	display: flex;
	align-items: center;
	gap: 8px;
	width: 130px;
	flex-shrink: 0;
}
.maned-toggle {
	color: #999;
	font-size: .8em;
	transition: transform .2s;
	width: 14px;
	flex-shrink: 0;
}
.maned-rad.utvidet .maned-toggle { transform: rotate(90deg); }
.maned-navn { font-weight: bold; font-size: 1em; }
.maned-antall { font-size: 0.75em; color: #888; white-space: nowrap; }
.maned-badges { display: flex; flex-wrap: wrap; gap: 4px; flex: 1; align-items: center; }
.maned-legg-til {
	font-size: 0.8em;
	color: #1a5276;
	cursor: pointer;
	white-space: nowrap;
	flex-shrink: 0;
}
.maned-legg-til:hover { text-decoration: underline; }

.maned-detaljer {
	display: none;
	border-top: 1px solid #eee;
	padding: 0 14px 10px;
}
.maned-rad.utvidet .maned-detaljer { display: block; }
.maned-detaljer table { width: 100%; border-collapse: collapse; font-size: .88em; }
.maned-detaljer thead th {
	background: #f4f7fa;
	padding: 5px 8px;
	text-align: left;
	font-weight: 600;
	color: #555;
	font-size: .85em;
}
.maned-detaljer tbody td { padding: 6px 8px; border-bottom: 1px solid #f0f0f0; vertical-align: middle; }
.maned-detaljer tbody tr:last-child td { border-bottom: none; }
.maned-detaljer tbody tr:hover td { background: #f9fbfd; }

/* NB: denne .maned-legg-til-regelen er en bevisst uendret duplikat av regelen over -
   fantes slik fra før i det inline blokken lå i ArsplanFrm.php (trolig lagt til for en
   annen bruk av samme klassenavn på et senere tidspunkt uten å rydde opp i den første).
   CSS-cascaden slår dem sammen til én effektiv stil uansett, så oppførselen er identisk
   med før flyttingen - ikke konsolidert her for å unngå å endre noe utover ren flytting. */
.maned-legg-til {
	margin-top: 6px;
	font-size: 0.8em;
	color: #1a5276;
	cursor: pointer;
	display: inline-block;
}
.maned-legg-til:hover { text-decoration: underline; }

.ap-skjema-kol { white-space: nowrap; font-size: .82em; }

.arsplan-vedlikehold {
	margin-top: 28px;
	padding: 14px 18px;
	background: #f7f9fb;
	border: 1px solid #dde3ea;
	border-radius: 6px;
	clear: left;
}
.arsplan-vedlikehold-tittel {
	font-size: .8em;
	font-weight: 600;
	color: #888;
	text-transform: uppercase;
	letter-spacing: .06em;
	margin-bottom: 10px;
}
.arsplan-vedlikehold-knapper { display: flex; gap: 10px; flex-wrap: wrap; }
.ap-skjema-kol a { text-decoration: none; }
.ap-skjema-ok   a { color: #1e8449; }
.ap-skjema-gaml a { color: #e67e22; }
.ap-skjema-lenke {
	margin-top: 8px;
	padding: 6px 10px;
	border-radius: 4px;
	font-size: .88em;
	background: #eaf4fb;
	color: #1a5276;
	min-height: 14px;
}
.ap-skjema-ingen { background: none; padding: 0; }
.ap-laster { padding: 20px; text-align: center; color: #888; font-style: italic; }
.ap-ingen-hendelser { padding: 12px 0; text-align: center; color: #888; font-style: italic; margin: 0; }
.ap-forfalt-badge {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 2px 8px;
	border-radius: 12px;
	font-size: 0.78em;
	font-weight: bold;
	color: #fff;
	background: maroon;
	white-space: nowrap;
	margin-left: auto;
}

/* ---------------------------------------------------------------------------
 * Flervalg - nedtrekksliste med avkryssingsbokser (flervalg.inc.php +
 * js/inverio-flervalg.js). Erstatter plugins/vanillaSelectBox-master/.
 *
 * Knappen bruker .select-css (css/input.css) og arver derfra bakgrunn, ramme,
 * pil og darkmode. Men .select-css er skrevet for <select>, og på en <button>
 * slår i tillegg den generiske button-regelen i input.css inn - den setter
 * color:white og en blå hover-bakgrunn med HØYERE spesifisitet enn .select-css
 * (button:hover = 0,1,1 mot .select-css = 0,1,0). De to reglene under
 * nøytraliserer dette. Det gamle biblioteket gjorde nøyaktig det samme i
 * .vsb-main button / .vsb-main button:hover.
 * ------------------------------------------------------------------------- */

.flervalg-knapp {
	color: #000000;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* background-shorthanden i button:hover nullstiller ALLE sub-egenskapene, ikke
   bare fargen - uten repeat/position her flislegges knappen med pil-ikonet. */
.flervalg-knapp:hover {
	background-color: #ffffff;
	background-image: url('../img/down-arrow.png'),
	linear-gradient(to bottom, #ffffff 0%, #e5e5e5 100%);
	background-repeat: no-repeat, repeat;
	background-position: right 2px top 50%, 0 0;
	filter: none;
}

.flervalg {
	position: relative;
}

/* De fire visuelle egenskapene er hentet fra .dropdown-content, men ikke
   klassen selv - den har margin-top:55px og min-width:200px bakt inn for
   topnav. */
.flervalg-meny {
	position: absolute;
	width: 100%;
	max-height: 400px;
	overflow-y: auto;
	background-color: #f9f9f9;
	border: 1px solid #cccccc;
	box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2);
	z-index: 10;
	box-sizing: border-box;
}

.flervalg-meny label {
	display: block;
	padding: 6px 10px;
	cursor: pointer;
	user-select: none;
}

.flervalg-meny label:hover {
	background: #eeeeee;
}

.flervalg-meny input[type=checkbox] {
	margin-right: 8px;
	vertical-align: middle;
}

.flervalg-alle {
	font-weight: 700;
	border-bottom: 1px solid #cccccc;
}

/* Fritekstrad nederst i menyen - avkryssingsboks pluss et skrivefelt, f.eks.
   "Annen e-postadresse" i mottakerlista. Feltet ligger utenfor <label>, så det
   må hente tilbake cursor/user-select som .flervalg-meny label setter. */
.flervalg-fri {
	border-top: 1px solid #cccccc;
	padding: 6px 10px 10px;
}

.flervalg-fri label {
	display: block;
	cursor: pointer;
	user-select: none;
	padding: 0 0 4px;
}

.flervalg-fri input[type=email] {
	width: 100%;
	box-sizing: border-box;
	cursor: text;
	user-select: text;
}

/* Rad som er sperret av en avgrensning (.printUavgrenset i rapportutvalget).
   Settes som klasse fra JS, ikke som inline farge - en fast farge ville vært
   lik enten teksten eller bakgrunnen i en av de to modusene. */
.flervalg-meny label.flervalg-sperret {
	color: #999999;
	cursor: default;
}

.flervalg-meny label.flervalg-sperret:hover {
	background: none;
}

/* Fokusmarkering - biblioteket hadde ingen tastaturnavigasjon i det hele tatt,
   så dette er ny funksjonalitet og trenger en synlig markering. */
.flervalg-meny input[type=checkbox]:focus {
	outline: 2px solid #0b7dda;
	outline-offset: 1px;
}

/* Dempet hjelpetekst under et felt. Samme uttrykk som .ap-laster/
   .ap-ingen-hendelser, som er mønsteret for dempet tekst ellers i appen. */
.merknad {
	color: #888;
	font-style: italic;
	font-size: 1em;
	margin: 4px 5px 0;
}

/* Eget ikon for slukkeanlegg (SA): sprinklerhode i tak. Egen tegning, siden sprinklerikonene
   i FontAwesome bare finnes i Pro. Brukes som <i class='ikon-slukkeanlegg'>, på linje med
   FontAwesome-ikonene: størrelsen følger skriften og fargen følger teksten (også i mørk modus). */
.ikon-slukkeanlegg {
	--ikon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Crect width='512' height='80' rx='16'/%3E%3Crect x='200' y='80' width='112' height='56'/%3E%3Cpath d='M112 136h288a20 20 0 0 1 18 30l-30 56a20 20 0 0 1-18 10H142a20 20 0 0 1-18-10l-30-56a20 20 0 0 1 18-30z'/%3E%3Ccircle cx='256' cy='324' r='44'/%3E%3Ccircle cx='256' cy='460' r='44'/%3E%3Ccircle cx='136' cy='340' r='44'/%3E%3Ccircle cx='376' cy='340' r='44'/%3E%3Ccircle cx='52' cy='452' r='44'/%3E%3Ccircle cx='460' cy='452' r='44'/%3E%3C/svg%3E");
	display: inline-block;
	width: 1em;
	height: 1em;
	vertical-align: -0.125em;
	background-color: currentColor;
	-webkit-mask: var(--ikon) center / contain no-repeat;
	mask: var(--ikon) center / contain no-repeat;
}

/* Framdriftssøyle mens rapporten genereres (genererRapport() i certifire.js) */
progress.rapportFramdrift {
	width: 100%;
	height: 14px;
	margin: 8px 0;
	accent-color: #005a9c;
}
