/*
Theme Name: Permafrost 2026
Description: Tema for Permafrost Design, bygget etter designforslaget «Permafrost 2026». Sandfarget bunn, salviegrønne aksenter, Montserrat i overskrifter og Work Sans i brødtekst.
Version: 2.16.9
Requires at least: 6.5
Requires PHP: 8.1
Author: Permafrost Design
Text Domain: permafrost-2026
*/

/* ---------- Fargetokener ----------
 *
 * Lys er utgangspunktet. Mørk modus settes enten av leserens systemvalg eller
 * av knappen i toppen, som stempler data-theme på <html>. Begge veier må stå
 * eksplisitt, ellers vinner systemvalget over et bevisst valg fra brukeren.
 */

:root {
	--bg: #f7f5f0;
	--ink: #232220;
	--ink-soft: #5b594f;
	--sage: #6e9a72;
	--sage-dark: #527457;
	--sage-tint: #e7eee4;
	--line: #e4e0d6;
	--card: #ffffff;
	--footer-bg: #232220;
	--footer-ink: #d8d6ce;
	--footer-svak: #8b897e;
	--header-bg: rgba(247, 245, 240, 0.92);
	--skygge: rgba(20, 20, 19, 0.08);

	/* Skjemafelt og dempede merkelapper. Disse sto med faste lyse verdier, og
	 * i mork modus ble lys tekst staende pa nesten hvit bunn - uleselig. */
	--felt-bg: #fcfbf8;
	--felt-linje: #e4e0d6;
	--dempet-bg: #efebdd;
	--dempet-ink: #8a7f5c;

	--wrap: 1360px;
	color-scheme: light;
}

/* Mørke verdier, definert én gang og brukt begge steder. */
@media (prefers-color-scheme: dark) {
	:root:not([data-theme="light"]) {
		--bg: #1b1a18;
		--ink: #edeae1;
		--ink-soft: #a8a499;
		--sage: #7fae84;
		--sage-dark: #93c098;
		--sage-tint: #2a3329;
		--line: #34322d;
		--card: #232220;
		--footer-bg: #141311;
		--footer-ink: #c7c4b9;
		--footer-svak: #7d7b71;
		--header-bg: rgba(27, 26, 24, 0.92);
		--skygge: rgba(0, 0, 0, 0.4);
		--felt-bg: #151412;
		--felt-linje: #403d37;
		--dempet-bg: #33302a;
		--dempet-ink: #bdb497;
		color-scheme: dark;
	}
}

:root[data-theme="dark"] {
	--bg: #1b1a18;
	--ink: #edeae1;
	--ink-soft: #a8a499;
	--sage: #7fae84;
	--sage-dark: #93c098;
	--sage-tint: #2a3329;
	--line: #34322d;
	--card: #232220;
	--footer-bg: #141311;
	--footer-ink: #c7c4b9;
	--footer-svak: #7d7b71;
	--header-bg: rgba(27, 26, 24, 0.92);
	--skygge: rgba(0, 0, 0, 0.4);
	--felt-bg: #151412;
	--felt-linje: #403d37;
	--dempet-bg: #33302a;
	--dempet-ink: #bdb497;
	color-scheme: dark;
}

*,
*::before,
*::after {
	box-sizing: border-box;
}

body {
	margin: 0;
	background: var(--bg);
	color: var(--ink);
	font-family: 'Work Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}

a {
	color: inherit;
	text-decoration: none;
}

img {
	max-width: 100%;
	height: auto;
	display: block;
}

h1,
h2,
h3,
h4 {
	font-family: 'Montserrat', system-ui, -apple-system, sans-serif;
	margin: 0 0 0.5em;
	letter-spacing: -0.01em;
	line-height: 1.15;
}

p {
	margin: 0 0 1em;
}

.wrap {
	max-width: var(--wrap);
	margin: 0 auto;
	padding: 0 40px;
}

.skip-link {
	position: absolute;
	left: -9999px;
}

.skip-link:focus {
	left: 12px;
	top: 12px;
	z-index: 100;
	background: var(--ink);
	color: #fff;
	padding: 10px 16px;
	border-radius: 6px;
}

.kicker {
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--sage-dark);
	font-weight: 700;
	margin-bottom: 10px;
}

/* ---------- Topp ---------- */

.pf-header {
	position: sticky;
	top: 0;
	z-index: 20;
	background: var(--header-bg);
	backdrop-filter: blur(6px);
	border-bottom: 1px solid var(--line);
}

.pf-nav {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding: 20px 40px;
	max-width: var(--wrap);
	margin: 0 auto;
}

.pf-logo {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 20px;
	letter-spacing: -0.01em;
}

.pf-menu {
	display: flex;
	gap: 36px;
	align-items: center;
	list-style: none;
	margin: 0;
	padding: 0;
}

.pf-menu a {
	font-size: 14px;
	font-weight: 500;
	color: var(--ink-soft);
}

.pf-menu a:hover,
.pf-menu .current-menu-item > a {
	color: var(--ink);
}

.pf-login {
	border: 1px solid var(--ink);
	border-radius: 999px;
	height: 32px;
	padding: 0 15px;
	font-size: 12.5px;
	font-weight: 600;
	display: inline-flex;
	align-items: center;
	gap: 7px;
	white-space: nowrap;
}

.pf-login:hover {
	background: var(--ink);
	color: #fff;
}

.pf-login svg {
	width: 12px;
	height: 12px;
}


.pf-burger {
	display: none;
	background: none;
	border: 1.5px solid var(--ink);
	border-radius: 999px;
	padding: 8px 14px;
	font: inherit;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
}

/* ---------- Hero ---------- */

.pf-hero {
	position: relative;
	height: 600px;
	overflow: hidden;
	display: flex;
	align-items: flex-end;
}

.pf-hero__bilde {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pf-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(35, 34, 32, 0.15) 0%, rgba(35, 34, 32, 0.75) 100%);
}

.pf-hero__inner {
	position: relative;
	z-index: 2;
	padding: 0 40px 56px;
	max-width: var(--wrap);
	margin: 0 auto;
	width: 100%;
	color: #fff;
}

.pf-hero__eyebrow {
	font-size: 12px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	font-weight: 600;
	color: #cfe0ce;
	margin-bottom: 16px;
}

.pf-hero h1 {
	font-size: 52px;
	line-height: 1.08;
	font-weight: 700;
	max-width: 720px;
	color: #fff;
	margin: 0;
}

.pf-hero p {
	font-size: 17px;
	color: #e6e3dc;
	max-width: 480px;
	margin: 18px 0 0;
	line-height: 1.5;
}

.pf-badges {
	display: flex;
	gap: 10px;
	margin-top: 28px;
	flex-wrap: wrap;
}

.pf-badge {
	border: 1px solid rgba(255, 255, 255, 0.35);
	border-radius: 999px;
	padding: 7px 14px;
	font-size: 12px;
	font-weight: 500;
	color: #fff;
}

/* ---------- Seksjon ---------- */

.pf-seksjon {
	padding: 88px 0 100px;
}

.pf-seksjon__hode {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 24px;
	margin-bottom: 36px;
	flex-wrap: wrap;
}

.pf-seksjon__hode h2 {
	font-size: 34px;
	font-weight: 700;
	margin: 0;
}

.pf-lenke-strek {
	font-size: 14px;
	font-weight: 600;
	border-bottom: 1.5px solid var(--ink);
	padding-bottom: 2px;
}

.pf-lenke-strek:hover {
	color: var(--sage-dark);
	border-color: var(--sage-dark);
}

/* ---------- Prosjektrutenett på forsiden ---------- */

.pf-rutenett {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	grid-auto-rows: 180px;
	gap: 18px;
}

.pf-rute {
	position: relative;
	overflow: hidden;
	border-radius: 6px;
	background: var(--dempet-bg);
}

.pf-rute img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s cubic-bezier(0.2, 0.7, 0.2, 1);
}

.pf-rute:hover img {
	transform: scale(1.07);
}

.pf-rute__overlegg {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(35, 34, 32, 0) 35%, rgba(24, 23, 21, 0.94) 100%);
	opacity: 0;
	transform: translateY(10px);
	transition: opacity 0.3s ease, transform 0.3s ease;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding: 22px;
}

.pf-rute:hover .pf-rute__overlegg,
.pf-rute:focus-within .pf-rute__overlegg {
	opacity: 1;
	transform: translateY(0);
}

.pf-rute__cat {
	color: #b9d6b7;
	font-size: 11px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	font-weight: 700;
	margin-bottom: 6px;
}

.pf-rute__overlegg h3 {
	color: #fff;
	font-size: 19px;
	font-weight: 600;
	margin: 0 0 6px;
}

.pf-rute__overlegg p {
	color: #d8d6ce;
	font-size: 12.5px;
	margin: 0 0 10px;
	line-height: 1.4;
}

.pf-rute__lenke {
	color: #fff;
	font-size: 12.5px;
	font-weight: 600;
}

.pf-rute--stor { grid-column: span 2; grid-row: span 2; }
.pf-rute--hoy { grid-column: span 1; grid-row: span 2; }
.pf-rute--liten { grid-column: span 1; grid-row: span 1; }
.pf-rute--bred { grid-column: span 2; grid-row: span 1; }

/*
 * Fyllflisen.
 *
 * Rytmen i rutenettet gar ikke opp i hele rader for ethvert antall prosjekter.
 * Cellene som blir til overs far et vindu med logoen i stedet for a sta tomme.
 *
 * Plasseringen er eksplisitt. Det er med vilje: CSS plasserer elementer med
 * bestemt posisjon for de som flyter fritt, sa flisen reserverer cellene sine
 * og prosjektene legger seg rundt. Cellene den tar er nettopp de ingen
 * prosjekter ville brukt, sa rutenettet blir nøyaktig som for.
 *
 * Hver skjermbredde har sin egen plass, siden hullene havner ulike steder nar
 * antall kolonner endres.
 */
.pf-fyllrute {
	grid-column: var(--ks) / span var(--bs);
	grid-row: var(--rs);
	border-radius: 6px;
	border: 1px solid var(--line);
	background: var(--sage-tint);
	display: grid;
	place-items: center;
	padding: 24px;
}

.pf-fyllrute--av-s {
	display: none;
}

.pf-fyllrute__merke {
	width: 150px;
	max-width: 60%;
	height: auto;
	color: var(--ink-soft);
	fill: currentColor;
	opacity: 0.28;
}

.pf-tellerute {
	grid-column: span 2;
	grid-row: span 1;
	border-radius: 6px;
	background: var(--ink);
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 28px;
	color: #fff;
}

.pf-tellerute__n {
	font-family: 'Montserrat', sans-serif;
	font-size: 38px;
	font-weight: 700;
	color: var(--sage-tint);
	line-height: 1;
}

.pf-tellerute p {
	font-size: 13.5px;
	color: #c9c7be;
	margin: 8px 0 16px;
	line-height: 1.4;
}

.pf-tellerute a {
	font-size: 13px;
	font-weight: 600;
	color: #fff;
	border-bottom: 1.5px solid var(--sage);
	padding-bottom: 2px;
	width: fit-content;
}

/* ---------- Studiostripe ---------- */

.pf-studio {
	background: var(--sage-tint);
	padding: 64px 0;
}

/*
 * Studiostripen.
 *
 * Teksten star midtstilt for seg selv, med veien videre under. Den er en
 * kort presentasjon, ikke en spalte - da leses den bedre sentrert enn
 * venstrestilt mot en bred, tom hoyreside.
 *
 * Bredden er bundet: en linje som gar over hele skjermen er tung a folge
 * uansett hvor pent den star.
 */
.pf-studio__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 22px;
	text-align: center;
}

.pf-studio__inner p {
	font-size: 19px;
	line-height: 1.55;
	max-width: 620px;
	margin: 0;
}

.pf-studio__vei {
	margin: 0;
	font-size: 15px;
}

/* ---------- Vanlige sider og innlegg ---------- */

.pf-side {
	padding: 56px 0 88px;
}

.pf-sidehode {
	margin-bottom: 32px;
}

.pf-sidehode h1 {
	font-size: 40px;
	font-weight: 700;
	margin: 0;
}

.pf-innhold {
	max-width: 760px;
	font-size: 17px;
	line-height: 1.7;
}

.pf-innhold h2 { font-size: 26px; margin-top: 1.6em; }
.pf-innhold h3 { font-size: 20px; margin-top: 1.4em; }
.pf-innhold img { border-radius: 6px; margin: 1.4em 0; }

.pf-innhold a:not(.button) {
	border-bottom: 1.5px solid var(--sage);
}

.pf-innhold blockquote {
	border-left: 3px solid var(--sage);
	margin: 1.6em 0;
	padding-left: 22px;
	color: var(--ink-soft);
}

/* Elementor-sider har sin egen layout og skal ikke tvinges inn i tekstbredden. */
.pf-innhold--full {
	max-width: none;
}

.pf-innleggsliste {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 28px;
}

.pf-kort {
	background: var(--card);
	border: 1px solid var(--line);
	border-radius: 8px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
}

.pf-kort__bilde {
	height: 190px;
	background: var(--sage-tint);
}

.pf-kort__bilde img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pf-kort__tekst {
	padding: 22px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	flex: 1;
}

.pf-kort__dato {
	font-size: 11px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--sage-dark);
	font-weight: 700;
}

.pf-kort h2 {
	font-size: 19px;
	font-weight: 600;
	margin: 0;
	line-height: 1.25;
}

.pf-kort p {
	font-size: 14px;
	color: var(--ink-soft);
	margin: 0;
}

.pf-paginering {
	margin-top: 44px;
	display: flex;
	gap: 8px;
	font-size: 14px;
	font-weight: 600;
	flex-wrap: wrap;
}

.pf-paginering .page-numbers {
	border: 1px solid var(--line);
	border-radius: 999px;
	padding: 6px 14px;
	background: var(--card);
}

.pf-paginering .page-numbers.current {
	background: var(--ink);
	border-color: var(--ink);
	color: #fff;
}

/* ---------- Knapper og skjema ---------- */

.button,
button,
input[type="submit"],
.wp-element-button {
	font-family: inherit;
}

.pf-knapp {
	display: inline-block;
	background: var(--sage-dark);
	color: #fff;
	border: none;
	border-radius: 6px;
	padding: 13px 22px;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
}

.pf-knapp:hover {
	background: var(--sage);
	color: #fff;
}

input[type="text"],
input[type="email"],
input[type="search"],
input[type="password"],
input[type="tel"],
input[type="number"],
textarea,
select {
	border: 1.5px solid var(--felt-linje);
	border-radius: 6px;
	padding: 11px 13px;
	font: inherit;
	color: var(--ink);
	background: var(--felt-bg);
	max-width: 100%;
}

input:focus,
textarea:focus,
select:focus {
	outline: none;
	border-color: var(--sage);
}

/* ---------- Bunn ---------- */

.pf-footer {
	background: var(--footer-bg);
	color: var(--footer-ink);
	padding: 64px 0 32px;
}

.pf-footer__topp {
	display: flex;
	justify-content: space-between;
	gap: 48px;
	padding-bottom: 48px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.12);
	flex-wrap: wrap;
}

.pf-footer__merke .pf-logo {
	color: #fff;
	margin-bottom: 14px;
}

.pf-footer__merke p {
	font-size: 13.5px;
	max-width: 280px;
	line-height: 1.6;
	color: var(--footer-svak);
	margin: 0;
}

.pf-footer__kolonner {
	display: flex;
	gap: 64px;
	flex-wrap: wrap;
}

.pf-footer__kol h2 {
	font-size: 12px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--footer-svak);
	margin: 0 0 16px;
	font-weight: 600;
}

.pf-footer__kol ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.pf-footer__kol a {
	display: block;
	font-size: 14px;
	margin-bottom: 10px;
	color: var(--footer-ink);
}

.pf-footer__kol a:hover {
	color: #fff;
}

.pf-footer__bunn {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	padding-top: 24px;
	font-size: 12.5px;
	color: var(--footer-svak);
	flex-wrap: wrap;
}

/* ---------- Dashbord for ansatte ---------- */

.pf-dash {
	display: grid;
	grid-template-columns: 240px 1fr;
	min-height: 80vh;
}

.pf-dash__side {
	background: #1b1a18;
	color: #c7c4b9;
	padding: 28px 22px;
	display: flex;
	flex-direction: column;
}

.pf-dash__side .pf-logo {
	color: #fff;
	margin-bottom: 40px;
	padding-left: 4px;
}

.pf-dash__nav {
	display: flex;
	flex-direction: column;
	gap: 4px;
	flex: 1;
}

.pf-dash__nav a {
	font-size: 14px;
	font-weight: 500;
	padding: 11px 14px;
	border-radius: 7px;
}

.pf-dash__nav a.er-valgt {
	background: var(--sage-dark);
	color: #fff;
	font-weight: 600;
}

.pf-dash__nav a:not(.er-valgt):hover {
	background: #2a2925;
}

.pf-dash__bruker {
	border-top: 1px solid #34322d;
	padding-top: 16px;
	margin-top: 16px;
	font-size: 13px;
	display: flex;
	align-items: center;
	gap: 10px;
}

.pf-avatar {
	width: 30px;
	height: 30px;
	border-radius: 999px;
	background: var(--sage);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 12px;
	font-weight: 700;
	flex-shrink: 0;
}

.pf-dash__hoved {
	padding: 36px 44px;
}

.pf-dash__topp {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 24px;
	margin-bottom: 32px;
	flex-wrap: wrap;
}

.pf-dash__topp h1 {
	font-size: 26px;
	font-weight: 700;
	margin: 0;
}

.pf-dash__topp p {
	margin: 4px 0 0;
	font-size: 13.5px;
	color: var(--ink-soft);
}

.pf-dash__tall {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	margin-bottom: 32px;
}

.pf-dash__boks {
	background: var(--card);
	border: 1px solid var(--line);
	border-radius: 8px;
	padding: 18px 20px;
}

.pf-dash__boks .n {
	font-size: 26px;
	font-weight: 700;
	font-family: 'Montserrat', sans-serif;
	line-height: 1;
}

.pf-dash__boks .l {
	font-size: 12.5px;
	color: var(--ink-soft);
	margin-top: 4px;
}

.pf-panel {
	background: var(--card);
	border: 1px solid var(--line);
	border-radius: 8px;
	overflow: hidden;
}

.pf-panel__hode {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 18px 22px;
	border-bottom: 1px solid var(--line);
}

.pf-panel__hode h2 {
	font-size: 15px;
	font-weight: 700;
	margin: 0;
}

.pf-tabell {
	width: 100%;
	border-collapse: collapse;
}

.pf-tabell thead th {
	text-align: left;
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--ink-soft);
	font-weight: 700;
	padding: 12px 22px;
	border-bottom: 1px solid var(--line);
}

.pf-tabell tbody td {
	padding: 14px 22px;
	border-bottom: 1px solid var(--line);
	font-size: 13.5px;
	vertical-align: middle;
}

.pf-tabell tbody tr:last-child td {
	border-bottom: none;
}

.pf-navn {
	display: flex;
	align-items: center;
	gap: 12px;
}

.pf-miniatyr {
	width: 44px;
	height: 32px;
	border-radius: 5px;
	object-fit: cover;
	background: var(--dempet-bg);
	flex-shrink: 0;
}

.pf-merke {
	display: inline-block;
	font-size: 11px;
	font-weight: 700;
	padding: 4px 10px;
	border-radius: 999px;
}

.pf-merke--pub { background: var(--sage-tint); color: var(--sage-dark); }
.pf-merke--kladd { background: var(--dempet-bg); color: var(--dempet-ink); }

/* ---------- WooCommerce ---------- */

.woocommerce .pf-side {
	padding-top: 40px;
}

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-family: 'Montserrat', sans-serif;
	font-size: 16px;
	font-weight: 600;
}

.woocommerce .price {
	color: var(--ink);
}

.pfp-omregnet-pris {
	color: var(--ink-soft);
	font-size: 0.86em;
	white-space: nowrap;
}

.pfp-valutavelger {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--ink-soft);
	margin-bottom: 20px;
	flex-wrap: wrap;
}

.pfp-valutavelger__valg {
	border: 1px solid var(--line);
	border-radius: 999px;
	padding: 4px 12px;
	font-weight: 600;
	background: var(--card);
}

.pfp-valutavelger__valg.er-valgt {
	background: var(--ink);
	border-color: var(--ink);
	color: #fff;
}

.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button {
	background: var(--sage-dark);
	color: #fff;
	border-radius: 6px;
	font-weight: 700;
}

.woocommerce #respond input#submit:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover {
	background: var(--sage);
	color: #fff;
}

/* ---------- Mindre skjermer ---------- */

@media (max-width: 1024px) {
	.pf-rutenett {
		grid-template-columns: repeat(2, 1fr);
	}

	.pf-rute--stor,
	.pf-rute--bred,
	.pf-tellerute {
		grid-column: span 2;
	}

	.pf-fyllrute {
		display: grid;
		grid-column: var(--km) / span var(--bm);
		grid-row: var(--rm);
	}

	.pf-fyllrute--av-m {
		display: none;
	}

	.pf-hero {
		height: 460px;
	}

	.pf-hero h1 {
		font-size: 38px;
	}

	.pf-innleggsliste {
		grid-template-columns: repeat(2, 1fr);
	}

	.pf-dash {
		grid-template-columns: 1fr;
	}

	.pf-dash__side {
		flex-direction: row;
		align-items: center;
		gap: 20px;
		flex-wrap: wrap;
	}

	.pf-dash__side .pf-logo {
		margin-bottom: 0;
	}

	.pf-dash__nav {
		flex-direction: row;
		flex-wrap: wrap;
	}

	.pf-dash__bruker {
		border-top: none;
		margin-top: 0;
		padding-top: 0;
	}
}

/*
 * 960px, ikke 780px, for selve verktøylinjen og menyknappen: hele raden
 * (meny, språk, tema, kurv, logg inn) trengte faktisk opp mot 910px for å få
 * plass uten å brekke om - målt direkte, norsk tekst er lengre enn engelsk.
 * Ved 780px brøt raden ut av skjermen på bredder som verken var «mobil»
 * eller trygt «desktop» (en bærbar med et smalt vindu, blant annet).
 *
 * Resten av det som endrer seg på mobil (rutenettet, heltebildet, osv.)
 * beholder sin egen 780px-grense lenger ned - den handler om touch og
 * skjermstørrelse, ikke om denne raden.
 */
@media (max-width: 960px) {
	.wrap,
	.pf-nav,
	.pf-hero__inner {
		padding-left: 20px;
		padding-right: 20px;
	}

	.pf-burger {
		display: inline-block;
	}

	/*
	 * Full tekst pluss ikon i en pille med fast padding ga knappen en bredde
	 * som ikke krympet - sammen med sprakvelger, temaknapp og handlekurv i
	 * samme rad ble raden bredere enn skjermen, og hele siden fikk vannrett
	 * scroll pa smale mobiler. Bare ikonet igjen her.
	 */
	.pf-login {
		width: 32px;
		height: 32px;
		padding: 0;
		justify-content: center;
		gap: 0;
	}

	.pf-login__tekst {
		display: none;
	}

	/*
	 * Samme feil som pa-login: sa snart kurven ikke var tom, vokste knappen
	 * seg bred nok til a dytte raden utenfor skjermen igjen. Sirkelen holder
	 * seg na fast 32px pa mobil uansett, og antallet flyttes til en liten
	 * merkelapp i hjornet i stedet for a sta ved siden av ikonet.
	 */
	.pf-kurv {
		position: relative;
		width: 32px;
		padding: 0;
		gap: 0;
	}

	.pf-kurv__antall {
		position: absolute;
		top: -4px;
		right: -6px;
		min-width: 15px;
		height: 15px;
		padding: 0 3px;
		border-radius: 999px;
		background: var(--sage-dark);
		color: #fff;
		font-size: 10px;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.pf-menu {
		display: none;
		position: absolute;
		left: 0;
		right: 0;
		top: 100%;
		background: var(--bg);
		border-bottom: 1px solid var(--line);
		flex-direction: column;
		gap: 0;
		padding: 12px 20px 20px;
	}

	.pf-menu.er-apen {
		display: flex;
	}

	.pf-menu li {
		padding: 10px 0;
		border-bottom: 1px solid var(--line);
	}
}

@media (max-width: 780px) {
	.pf-rutenett {
		grid-template-columns: 1fr;
		grid-auto-rows: 220px;
	}

	.pf-rute--stor,
	.pf-rute--bred,
	.pf-rute--hoy,
	.pf-rute--liten,
	.pf-tellerute {
		grid-column: span 1;
		grid-row: span 1;
	}

	/*
	 * En kolonne med like store fliser kan ikke ha hull. Fyllflisene har
	 * ingenting a gjore her, og en flis plassert etter hullene i et bredere
	 * rutenett ville stat et vilkarlig sted i rekken.
	 */
	.pf-fyllrute {
		display: none;
	}

	/*
	 * Teksten flyttes ut av bildet.
	 *
	 * Uten mus finnes det ingen hover, så overlegget måtte stå permanent på —
	 * og da lå tittelen oppå motivet på hvert eneste kort. Her blir kortet en
	 * vanlig kolonne i stedet: bilde øverst, tekst under, på kortflaten. Det
	 * er lesbart uansett hva bildet inneholder.
	 */
	.pf-rutenett {
		grid-auto-rows: auto;
	}

	.pf-rute {
		display: flex;
		flex-direction: column;
		background: var(--card);
		border: 1px solid var(--line);
	}

	.pf-rute img {
		height: 200px;
		flex-shrink: 0;
	}

	.pf-rute:hover img {
		transform: none;
	}

	.pf-rute__overlegg {
		position: static;
		inset: auto;
		background: none;
		opacity: 1;
		transform: none;
		padding: 16px 18px 18px;
	}

	.pf-rute__cat {
		color: var(--sage-dark);
	}

	.pf-rute__overlegg h3 {
		color: var(--ink);
	}

	.pf-rute__overlegg p {
		color: var(--ink-soft);
	}

	.pf-rute__lenke {
		color: var(--ink);
	}

	.pf-hero {
		height: 380px;
	}

	.pf-hero h1 {
		font-size: 30px;
	}

	.pf-seksjon {
		padding: 56px 0 64px;
	}

	.pf-innleggsliste {
		grid-template-columns: 1fr;
	}

	.pf-studio__inner {
		gap: 24px;
	}

	.pf-dash__hoved {
		padding: 24px 20px;
	}

	.pf-dash__tall {
		grid-template-columns: 1fr;
	}
}

/* ---------- Logo ---------- */

.pf-logo {
	display: inline-flex;
	align-items: center;
	color: var(--ink);
}

.pf-logo__merke {
	display: block;
	height: 22px;
	width: auto;
}

.pf-footer .pf-logo,
.pf-dash__side .pf-logo {
	color: #fff;
}

.pf-footer .pf-logo__merke,
.pf-dash__side .pf-logo__merke {
	height: 20px;
}

/* ---------- Kornoverlegg på heltebildet ----------
 *
 * En animert støy-GIF lagt over bildet med lav dekkevne. Den gir den samme
 * uroen som en filmrull uten å laste en video: filen er 76 KB og går i loop.
 * Laget ligger under teksten, over bildet, og tar ikke imot museklikk.
 */

.pf-hero__korn {
	position: absolute;
	inset: -50%;
	z-index: 1;
	pointer-events: none;
	background-image: url(assets/bg_noise.gif);
	background-repeat: repeat;
	background-size: 300px 300px;
	opacity: 0.16;
	mix-blend-mode: overlay;
	will-change: transform;
	animation: pf-korn 8s steps(1) infinite;
}

/* Små, ujevne forskyvninger gjør at mønsteret ikke leses som en flis. */
@keyframes pf-korn {
	0%   { transform: translate(0, 0); }
	10%  { transform: translate(-5%, -10%); }
	20%  { transform: translate(-15%, 5%); }
	30%  { transform: translate(7%, -25%); }
	40%  { transform: translate(-5%, 25%); }
	50%  { transform: translate(-15%, 10%); }
	60%  { transform: translate(15%, 0); }
	70%  { transform: translate(0, 15%); }
	80%  { transform: translate(3%, 35%); }
	90%  { transform: translate(-10%, 10%); }
	100% { transform: translate(0, 0); }
}

/* Gradienten skal ligge mellom bildet og kornet. */
.pf-hero::after {
	z-index: 1;
}

.pf-hero__inner {
	z-index: 3;
}

/* Kornet skal ikke bevege seg for den som har bedt om mindre bevegelse. */
@media (prefers-reduced-motion: reduce) {
	.pf-hero__korn {
		animation: none;
		inset: 0;
	}

	.pf-rute img,
	.pf-rute__overlegg {
		transition: none;
	}
}

/* ---------- Lys/mørk-knapp ---------- */

.pf-tema-knapp {
	background: none;
	border: 1px solid var(--line);
	border-radius: 999px;
	width: 32px;
	height: 32px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	color: var(--ink-soft);
	flex-shrink: 0;
	padding: 0;
	transition: border-color 0.2s ease, color 0.2s ease;
}

.pf-tema-knapp:hover {
	border-color: var(--sage);
	color: var(--sage-dark);
}

.pf-tema-knapp svg {
	width: 15px;
	height: 15px;
}

/* Sol i mørk modus, måne i lys — knappen viser hva den bytter til. */
.pf-tema-knapp .pf-ikon-sol {
	display: none;
}

:root[data-theme="dark"] .pf-tema-knapp .pf-ikon-sol {
	display: block;
}

:root[data-theme="dark"] .pf-tema-knapp .pf-ikon-mane {
	display: none;
}

@media (prefers-color-scheme: dark) {
	:root:not([data-theme="light"]) .pf-tema-knapp .pf-ikon-sol {
		display: block;
	}

	:root:not([data-theme="light"]) .pf-tema-knapp .pf-ikon-mane {
		display: none;
	}
}

/* ---------- Mørk modus: småjusteringer ---------- */

:root[data-theme="dark"] .pf-rute,
:root[data-theme="dark"] .pf-kort__bilde {
	background: #2a2925;
}

:root[data-theme="dark"] .pf-login:hover {
	background: var(--ink);
	color: var(--bg);
}

:root[data-theme="dark"] .pf-innhold img {
	opacity: 0.94;
}

@media (prefers-color-scheme: dark) {
	:root:not([data-theme="light"]) .pf-rute,
	:root:not([data-theme="light"]) .pf-kort__bilde {
		background: #2a2925;
	}

	:root:not([data-theme="light"]) .pf-login:hover {
		background: var(--ink);
		color: var(--bg);
	}
}

/* ---------- Klientliste ----------
 *
 * Logoene bærer ingen egen farge. De arver tekstfargen — mørkegrå på lys
 * bakgrunn, lysegrå på mørk — slik at rekken leses som én flate og ikke som
 * tjue ulike merkevarer som slåss om oppmerksomheten.
 */

/*
 * Rutenettet skal ikke låses til tekstbredden.
 *
 * Klientsiden rendres av page.php, som legger innholdet i en spalte på 760 px —
 * riktig for brødtekst, altfor smalt for tjue logoer. `:has()` løfter taket for
 * den ene spalten som faktisk inneholder rutenettet, og lar resten av teksten
 * være. Uten støtte for `:has()` blir rutenettet stående i tekstbredden, som er
 * en smalere visning og ikke en ødelagt en.
 */
.pf-innhold:has(> .pf-klienter) {
	max-width: none;
}

.pf-klienter {
	--klient-blekk: #6b6960;
	display: grid;
	/*
	 * 200 px som minstebredde gir fem spalter på det bredeste — 1080 / 200
	 * går opp i 5,4 — og trapper selv ned til fire, tre og to på smalere
	 * skjermer.
	 */
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 1px;
	background: var(--line);
	border: 1px solid var(--line);
	border-radius: 8px;
	overflow: hidden;
	max-width: 1080px;
	margin: 32px auto;
}

:root[data-theme="dark"] .pf-klienter {
	--klient-blekk: #a8a49a;
}

@media (prefers-color-scheme: dark) {
	:root:not([data-theme="light"]) .pf-klienter {
		--klient-blekk: #a8a49a;
	}
}

.pf-klient {
	background: var(--card);
	color: var(--klient-blekk);
	min-height: 108px;
	padding: 24px;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 12px;
	text-align: center;
	transition: color 0.2s ease;
}

/*
 * Logoen legges på som maske, ikke som bilde.
 *
 * Filene er silhuetter med gjennomsiktig bakgrunn — noen lyse, noen mørke. Som
 * maske er det alfakanalen som gir formen, og fargen kommer fra `currentColor`.
 * Da blir samme fil mørkegrå på lyst tema og lysegrå på mørkt, uten to filsett,
 * og uten at en svart logo forsvinner i mørk modus.
 *
 * Høyden er liten med vilje: logoen er et gjenkjenningstegn ved siden av
 * navnet, ikke en utstilling.
 */
.pf-klient__logo {
	display: block;
	width: 100%;
	max-width: 96px;
	height: 20px;
	background-color: currentColor;
	-webkit-mask-image: var(--klient-logo);
	mask-image: var(--klient-logo);
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
	flex-shrink: 0;
}

/*
 * Navnet skjules for øyet når logoen står der, men blir liggende i koden.
 * En skjermleser leser fortsatt «Stokke»; uten dette ville kortet vært tomt
 * for alle som ikke ser logoen.
 */
.pf-klient--logo .pf-klient__navn {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.pf-klient:hover {
	color: var(--ink);
}

.pf-klient__navn {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: 16px;
	letter-spacing: -0.01em;
	line-height: 1.25;
}

.pf-klient__logo {
	display: block;
	width: 100%;
}

.pf-klient__logo svg {
	display: block;
	width: 100%;
	height: auto;
	max-height: 46px;
	margin: 0 auto;
	fill: currentColor;
}

@media (max-width: 600px) {
	.pf-klienter {
		grid-template-columns: repeat(2, 1fr);
	}

	.pf-klient {
		min-height: 88px;
		padding: 18px;
	}

	.pf-klient__navn {
		font-size: 14px;
	}
}

.pf-kontaktkort {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 18px;
	margin: 32px 0;
}

.pf-kontaktkort > div {
	background: var(--card);
	border: 1px solid var(--line);
	border-radius: 8px;
	padding: 24px;
}

.pf-kontaktkort h2 {
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--sage-dark);
	font-weight: 700;
	margin-bottom: 14px;
}

.pf-kontaktkort p {
	margin: 0 0 6px;
	font-size: 15px;
}


/* ---------- Verktøyene til høyre i toppen ---------- */

/*
 * Tema-knapp, handlekurv og innlogging ligger i én gruppe. Da holder de
 * samme linje uansett hvor bred menyen blir, i stedet for å være tre
 * selvstendige flex-barn som kan skyves fra hverandre.
 */
.pf-nav__verktoy {
	display: flex;
	align-items: center;
	gap: 7px;
	flex-shrink: 0;
}

/* ---------- Språkvelger ----------
 *
 * To bokstaver ved siden av hverandre i samme pille som resten av verktøyene.
 * Formen er valgt framfor en nedtrekksmeny fordi det bare finnes to språk: da
 * holder det med ett klikk, og hvilket språk man står i er synlig uten å måtte
 * åpne noe.
 */

.pf-sprak {
	display: inline-flex;
	align-items: center;
	height: 32px;
	border: 1px solid var(--line);
	border-radius: 999px;
	overflow: hidden;
	flex-shrink: 0;
}

.pf-sprak__valg {
	font-family: 'Montserrat', sans-serif;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.06em;
	color: var(--ink-soft);
	text-decoration: none;
	padding: 0 9px;
	height: 100%;
	display: inline-flex;
	align-items: center;
	transition: color 0.2s ease, background 0.2s ease;
}

.pf-sprak__valg + .pf-sprak__valg {
	border-left: 1px solid var(--line);
}

.pf-sprak__valg:hover {
	color: var(--sage-dark);
}

.pf-sprak__valg.er-valgt {
	background: var(--ink);
	color: var(--bg);
}

@media (max-width: 560px) {
	.pf-sprak {
		height: 30px;
	}

	.pf-sprak__valg {
		padding: 0 8px;
		font-size: 10px;
	}
}

/* ---------- Handlekurv ---------- */

/*
 * Tallet står inline til høyre for ikonet, ikke som et flytende merke oppå.
 * Et absolutt plassert merke stikker utenfor knappen og faller lett ut av
 * linjen med de andre kontrollene.
 */
.pf-kurv {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	height: 32px;
	padding: 0 12px;
	border: 1px solid var(--line);
	border-radius: 999px;
	color: var(--ink-soft);
	flex-shrink: 0;
	line-height: 1;
	transition: border-color 0.2s ease, color 0.2s ease;
}

.pf-kurv:hover {
	border-color: var(--sage);
	color: var(--sage-dark);
}

.pf-kurv svg {
	width: 15px;
	height: 15px;
	flex-shrink: 0;
}

.pf-kurv__antall {
	font-size: 12px;
	font-weight: 700;
	color: var(--ink);
	font-variant-numeric: tabular-nums;
	line-height: 1;
}

/* Tom kurv: bare ikonet, og knappen strammes inn til samme sirkel som tema-knappen. */
.pf-kurv:has(.pf-kurv__antall.er-tom) {
	width: 32px;
	padding: 0;
}

.pf-kurv__antall.er-tom {
	display: none;
}

/* ---------- Tekstseksjoner på forsiden ---------- */

.pf-seksjon--tekst {
	padding: 72px 0;
	border-top: 1px solid var(--line);
}

.pf-innhold--bred {
	max-width: 900px;
}

.pf-innhold--bred > p:first-child,
.pf-ingress {
	font-size: 19px;
	line-height: 1.6;
	color: var(--ink);
}

.pf-innhold--bred h2 {
	font-size: 22px;
	margin-top: 1.8em;
}

/*
 * Kontaktkortene skal bruke full bredde inne i seksjonen.
 *
 * Klientrutenettet sto her også, fra den gang det var tekstspalten som satte
 * bredden. Nå har det sin egen maksbredde på 1080 px og skal beholde den —
 * `max-width: none` her opphevet den i det stille, og rutenettet strakte seg
 * ut til hele seksjonen på forsiden mens det lå riktig på klientsiden.
 */
.pf-seksjon--tekst .pf-kontaktkort {
	max-width: none;
}

@media (max-width: 780px) {
	.pf-seksjon--tekst {
		padding: 48px 0;
	}

	.pf-innhold--bred > p:first-child,
	.pf-ingress {
		font-size: 17px;
	}
}


/* ---------- Færre prosjekter på smale skjermer ----------
 *
 * Grensen settes i Prosjekter → Innstillinger og merkes på flisene i PHP,
 * men selve skjulingen skjer her. Siden leveres fra mellomlageret til alle
 * enheter fra samme fil, så valget kan ikke tas på serveren.
 */

.pf-flere-prosjekter {
	display: none;
	margin: 32px 0 0;
}

@media (max-width: 780px) {
	.pf-rute--over-grensen {
		display: none;
	}

	.pf-flere-prosjekter {
		display: block;
		text-align: center;
		margin-top: 28px;
	}
}


/* ---------- Sosiale medier i bunnen ---------- */

.pf-sosialt {
	list-style: none;
	display: flex;
	gap: 12px;
	margin: 20px 0 0;
	padding: 0;
}

.pf-sosialt a {
	display: grid;
	place-items: center;
	width: 36px;
	height: 36px;
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: 50%;
	color: var(--footer-svak);
	transition: color 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}

.pf-sosialt a:hover,
.pf-sosialt a:focus-visible {
	color: var(--footer-bg);
	background: var(--footer-ink);
	border-color: var(--footer-ink);
}

.pf-sosialt svg {
	width: 18px;
	height: 18px;
	display: block;
}

/* Ordmerket trenger litt mer plass enn de tegnede ikonene. */
.pf-sosialt__behance svg {
	width: 21px;
	height: 21px;
}

/* ---------- Kontrollpanelet ---------- */

.pf-dash__nav a {
	color: inherit;
}

.pf-dash__utlogg {
	color: #8b8879;
	font-size: 12px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}

.pf-dash__melding {
	background: var(--sage-tint);
	color: var(--sage-dark);
	border-radius: 6px;
	padding: 14px 18px;
	font-size: 14px;
	font-weight: 600;
	margin: 0 0 24px;
}

.pf-dash__bulk {
	display: flex;
	gap: 8px;
}

.pf-dash__knapp {
	background: none;
	border: 1.5px solid var(--line);
	border-radius: 999px;
	padding: 7px 15px;
	font: inherit;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--ink-soft);
	cursor: pointer;
}

.pf-dash__knapp:hover {
	border-color: var(--sage);
	color: var(--sage-dark);
}

.pf-dash__kunde {
	font-size: 12px;
	color: var(--ink-soft);
}

/*
 * Handlingene i siste kolonne.
 *
 * Flexen ligger pa en div inni cellen, ikke pa cellen selv. En `<td>` med
 * `display: flex` er ikke lenger en tabellcelle: den slutter a strekke seg til
 * radhoyden, og nederkanten - og dermed streken under raden - havnet noen
 * piksler feil i forhold til cellene ved siden av. Det sa ut som om streken
 * brakk mellom Status og av/pa-bryteren.
 */
.pf-dash__handlingcelle {
	white-space: nowrap;
}

.pf-dash__handling {
	display: flex;
	align-items: center;
	gap: 16px;
	white-space: nowrap;
}

.pf-dash__handling form {
	display: flex;
	align-items: center;
}

/*
 * Stjernen som merker et prosjekt for forsiden.
 *
 * Den er en knapp som virker der man ser den. Fylt nar prosjektet er merket,
 * bare omriss ellers - forskjellen skal vaere tydelig pa en rad man skanner
 * nedover, ikke noe man ma se etter.
 */
.pf-stjerne {
	background: none;
	border: 0;
	padding: 2px 4px;
	font-size: 19px;
	line-height: 1;
	cursor: pointer;
	color: var(--line);
	transition: color 0.15s ease, transform 0.15s ease;
}

.pf-stjerne.er-paa {
	color: var(--sage-dark);
}

.pf-stjerne:hover {
	color: var(--sage);
	transform: scale(1.15);
}

/* Redigeringsruten folger fargemodus i kantene sine, ikke bare i feltene. */
.pf-dash__tospraak .wp-editor-container,
.pf-dash__tospraak .wp-switch-editor,
.pf-dash__tospraak .mce-toolbar-grp,
.pf-dash__tospraak .quicktags-toolbar {
	background: var(--card);
	border-color: var(--felt-linje);
	color: var(--ink);
}

.pf-dash__tospraak .wp-editor-tabs .wp-switch-editor {
	color: var(--ink-soft);
}

/* Av/på-bryteren, tegnet i CSS så den følger fargemodus. */
.pf-bryter {
	appearance: none;
	border: none;
	width: 40px;
	height: 22px;
	border-radius: 999px;
	background: var(--line);
	position: relative;
	cursor: pointer;
	padding: 0;
	transition: background 0.2s ease;
	flex-shrink: 0;
}

.pf-bryter::after {
	content: "";
	position: absolute;
	top: 3px;
	left: 3px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--card);
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
	transition: transform 0.2s ease;
}

.pf-bryter.er-paa {
	background: var(--sage-dark);
}

.pf-bryter.er-paa::after {
	transform: translateX(18px);
}

.pf-dash__skjema .pf-panel {
	margin-bottom: 20px;
}

.pf-dash__innhold {
	padding: 22px;
}

.pf-dash__innhold--to {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 22px;
}

.pf-dash__felt {
	display: flex;
	flex-direction: column;
	gap: 6px;
	margin: 0 0 18px;
}

.pf-dash__innhold--to .pf-dash__felt {
	margin: 0;
}

/* ---------- Bildelisten i prosjektredigeringen ---------- */

.pf-bilder__liste {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap: 14px;
	margin-bottom: 18px;
}

.pf-bilde {
	position: relative;
	border: 1px solid var(--line);
	border-radius: 6px;
	overflow: hidden;
	background: var(--bg);
	display: flex;
	flex-direction: column;
}

/* Hovedbildet er det første. Rammen sier hvilket det er uten å måtte telle. */
.pf-bilde.er-hoved {
	border-color: var(--sage);
	box-shadow: 0 0 0 1px var(--sage);
}

.pf-bilde img {
	width: 100%;
	height: 110px;
	object-fit: cover;
	display: block;
}

.pf-bilde__merke {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--sage-dark);
	padding: 8px 10px 0;
}

.pf-bilde__knapp {
	background: none;
	border: 0;
	border-top: 1px solid var(--line);
	padding: 8px 10px;
	font: inherit;
	font-size: 12px;
	color: var(--ink-soft);
	text-align: left;
	cursor: pointer;
}

.pf-bilde__knapp:hover {
	color: var(--ink);
	background: var(--sage-tint);
}

.pf-bilde__fjern:hover {
	color: #b4463c;
	background: none;
}

.pf-dash__avbryt {
	margin-left: 18px;
	font-size: 13px;
	color: var(--ink-soft);
	border-color: var(--ink-soft);
}

/* Editoren skal ikke ligge klemt inntil feltene over. */
.pf-dash__tospraak .wp-editor-wrap {
	margin-bottom: 18px;
}

/* ---------- Oversikten ---------- */

/*
 * To spalter: det man gjor noe med til venstre, det som har skjedd til hoyre.
 *
 * Loggen far en smal, fast spalte og ikke hele bredden. Den skal kunne skumles
 * - man ser etter om det har skjedd noe, ikke hva som skjedde den 4. mars - og
 * en liste som vokser nedover siden for hver hendelse blir fort det storste
 * elementet pa skjermen uten a vaere det viktigste.
 */
.pf-oversikt {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 320px;
	gap: 20px;
	align-items: start;
}

.pf-oversikt__hoved > .pf-panel + .pf-panel {
	margin-top: 20px;
}

/*
 * Skjermen.
 *
 * Fast hoyde med rulling. Hoyden er satt slik at det sjette elementet sa vidt
 * er avskaret: da ser man at det er mer under uten at det trengs en tekst som
 * sier det.
 */
.pf-oversikt__logg .pf-logg {
	max-height: 340px;
	overflow-y: auto;
	overscroll-behavior: contain;
}

.pf-logg {
	list-style: none;
	margin: 0;
	padding: 0;
}

/*
 * En hendelse er tre linjer i en smal spalte: hva slags hendelse og nar, sa
 * hva som skjedde, sa hvem. Merkelappen star forst fordi det er den man
 * skanner etter - er dette noe jeg gjorde, eller noe som skjedde i bakgrunnen.
 */
.pf-logg__rad {
	display: flex;
	flex-direction: column;
	gap: 3px;
	padding: 12px 18px;
	border-bottom: 1px solid var(--line);
	font-size: 13px;
}

.pf-logg__rad:last-child {
	border-bottom: none;
}

.pf-logg__meta {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 10px;
}

.pf-logg__merke {
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--ink-soft);
}

/* Vedlikehold er det som skjer uten at noen her har gjort noe. Det skal vaere
   synlig at det er en annen slags hendelse enn ens eget arbeid. */
.pf-logg__rad--oppdatering .pf-logg__merke {
	color: var(--sage-dark);
}

.pf-logg__tekst {
	color: var(--ink);
	line-height: 1.4;
}

.pf-logg__tid {
	color: var(--ink-soft);
	font-size: 11.5px;
	white-space: nowrap;
}

.pf-logg__hvem {
	color: var(--ink-soft);
	font-size: 11.5px;
}

.pf-snarveier {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.pf-snarveier a {
	text-decoration: none;
}

/* Under 1100px er det ikke plass til to spalter ved siden av sidemenyen. */
@media (max-width: 1100px) {
	.pf-oversikt {
		grid-template-columns: 1fr;
	}

	.pf-oversikt__logg {
		margin-top: 20px;
	}

	.pf-oversikt__logg .pf-logg {
		max-height: 260px;
	}
}

/* ---------- Kunder i panelet ---------- */

/* Logoen i tabellen bruker samme maskegrep som rutenettet på nettstedet. */
.pf-dash__logo {
	max-width: 84px;
	height: 18px;
	color: var(--ink-soft);
}

.pf-dash__nykunde {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 20px;
}

.pf-dash__nykunde .pf-dash__felt {
	margin: 0;
	min-width: 220px;
	flex: 1 1 220px;
}

.pf-dash__nykunde > p {
	margin: 0;
}

.pf-bildevelger--liten .pf-bildevelger__bilde {
	min-height: 52px;
	min-width: 150px;
	font-size: 12px;
}

/*
 * Logovalget i tabellraden er et helt skjema, men skal se ut som en lenke —
 * det er ingen lagre-knapp der, skjemaet sendes når bildet er valgt.
 */
.pf-bildevelger--rad {
	display: inline;
}

.pf-bildevelger--rad button {
	background: none;
	border: 0;
	border-bottom: 1.5px solid var(--ink);
	padding: 0 0 2px;
	font: inherit;
	font-size: 13px;
	font-weight: 600;
	color: var(--ink);
	cursor: pointer;
}

.pf-bildevelger--rad button:hover {
	color: var(--sage-dark);
	border-color: var(--sage-dark);
}

/* En avkrysningsboks står på linje med etiketten sin, ikke over den. */
.pf-dash__felt--av label {
	display: flex;
	align-items: center;
	gap: 10px;
	text-transform: none;
	letter-spacing: 0;
	font-size: 14px;
	font-weight: 500;
	color: var(--ink);
	cursor: pointer;
}

.pf-dash__felt--av input {
	width: 16px;
	height: 16px;
	accent-color: var(--sage-dark);
	margin: 0;
}

/*
 * Ett tekstfelt i to språk.
 *
 * De to utgavene står side om side og ikke i hver sin fane, slik at man ser
 * hva den norske skal si mens man skriver den — og med én gang oppdager en
 * norsk tekst som har blitt hengende igjen etter at den engelske ble endret.
 */
.pf-dash__tospraak {
	border-top: 1px solid var(--line);
	padding-top: 18px;
	margin-bottom: 18px;
}

.pf-dash__tospraak:first-child {
	border-top: none;
	padding-top: 0;
}

.pf-dash__tospraak-tittel {
	display: block;
	font-family: 'Montserrat', sans-serif;
	font-size: 13px;
	font-weight: 700;
	color: var(--ink);
	margin-bottom: 12px;
}

.pf-dash__felt label {
	font-size: 12px;
	font-weight: 600;
	color: var(--ink-soft);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

.pf-dash__felt input,
.pf-dash__felt textarea {
	width: 100%;
	font: inherit;
	font-size: 15px;
}

.pf-dash__hjelp {
	font-size: 12.5px;
	color: var(--ink-soft);
}

.pf-bildevelger__bilde {
	width: 320px;
	max-width: 100%;
	height: 160px;
	border: 1px solid var(--line);
	border-radius: 6px;
	background: var(--sage-tint);
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
	text-align: center;
	font-size: 12.5px;
	color: var(--ink-soft);
	padding: 12px;
}

.pf-bildevelger__bilde img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	padding: 0;
}

.pf-bildevelger p {
	margin: 12px 0 0;
	display: flex;
	gap: 8px;
}

@media (max-width: 780px) {
	.pf-dash__handling {
		gap: 10px;
	}

	.pf-panel__hode {
		flex-wrap: wrap;
		gap: 10px;
	}
}

/* ---------- Bildet og kartet pa kontaktsiden ----------
 *
 * To like store flater ved siden av hverandre, som pa den gamle siden. Under
 * 860px legger de seg over hverandre - to halve kart ved siden av hverandre pa
 * en telefon er verken bilde eller kart.
 */

/*
 * Bildet oyerst pa en vanlig side.
 *
 * Hoyden er begrenset. Et gruppebilde i full bredde blir over 800 piksler
 * hoyt pa en stor skjerm, og da er halve skjermen brukt opp for teksten
 * begynner. `cover` med midtstilt utsnitt beholder ansiktene.
 */
.pf-sidebilde img {
	width: 100%;
	max-height: 520px;
	object-fit: cover;
	object-position: center;
	display: block;
	border-radius: 8px;
}

/*
 * Bandet skal ha hele innholdsbredden, ikke tekstbredden. `.pf-innhold` er
 * satt smalt fordi lopende tekst leses best slik; to bilder side om side
 * trenger plassen.
 */
.pf-innhold:has(> .pf-kontaktband) {
	max-width: none;
}

/*
 * Villaen er kvadratisk (1616x1630), kartutsnittet bredt (2606x1404 = 1,86).
 * Sporene folger de proporsjonene, sa begge bildene vises hele i samme hoyde
 * i stedet for a bli beskaret for a passe en felles form. Et kart som
 * beskjaeres mister stedsnavn i kantene.
 */
.pf-kontaktband {
	display: grid;
	grid-template-columns: 1fr 1.86fr;
	gap: 18px;
	margin: 0 0 48px;
}

.pf-kontaktband--ett {
	grid-template-columns: 1fr;
}

.pf-kontaktband__bilde,
.pf-kontaktband__kart {
	position: relative;
	border-radius: 8px;
	overflow: hidden;
	background: var(--dempet-bg);
}

.pf-kontaktband__bilde {
	aspect-ratio: 1 / 1;
}

.pf-kontaktband__kart {
	aspect-ratio: 1.86 / 1;
}

.pf-kontaktband img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* Lenken videre til Maps, lagt over kartet som i forslaget. */
.pf-kontaktband__lenke {
	position: absolute;
	top: 14px;
	left: 14px;
	background: var(--card);
	color: var(--ink);
	border: 1px solid var(--line);
	border-radius: 6px;
	padding: 8px 13px;
	font-size: 13px;
	font-weight: 600;
	text-decoration: none;
	box-shadow: 0 2px 10px var(--skygge);
}

.pf-kontaktband__lenke:hover {
	border-color: var(--sage);
	color: var(--sage-dark);
}

@media (max-width: 860px) {
	.pf-kontaktband {
		grid-template-columns: 1fr;
	}

	/* Stablet beholder hvert bilde sin egen form. */
	.pf-kontaktband__bilde {
		aspect-ratio: 4 / 3;
	}
}


/* ---------- Nyhetsbrevet ----------
 *
 * Star mellom innholdet og bunnen. Teksten til venstre, skjemaet til hoyre -
 * samme todeling som studiostripen, slik at det leses som en del av nettstedet
 * og ikke som en innlimt boks.
 */

.pf-nyhetsbrev {
	background: var(--sage-tint);
	border-top: 1px solid var(--line);
	padding: 52px 0;
}

.pf-nyhetsbrev__inner {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 48px;
	align-items: start;
}

.pf-nyhetsbrev__tekst h2 {
	margin: 0 0 10px;
	font-size: clamp(22px, 2.4vw, 30px);
	line-height: 1.15;
}

.pf-nyhetsbrev__tekst p {
	margin: 0;
	color: var(--ink-soft);
	font-size: 15.5px;
	line-height: 1.6;
	max-width: 44ch;
}

.pf-nyhetsbrev__rad {
	display: flex;
	gap: 10px;
}

.pf-nyhetsbrev__rad input[type="email"] {
	flex: 1 1 auto;
	min-width: 0;
}

.pf-nyhetsbrev__rad .pf-knapp {
	flex-shrink: 0;
	border-radius: 6px;
}

.pf-nyhetsbrev__samtykke {
	margin: 12px 0 0;
}

.pf-nyhetsbrev__samtykke label {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	font-size: 13px;
	line-height: 1.5;
	color: var(--ink-soft);
	cursor: pointer;
}

.pf-nyhetsbrev__samtykke input {
	margin: 2px 0 0;
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	accent-color: var(--sage-dark);
}

/* Honningkrukken skal vaere borte for oynene, men ikke for nettleseren:
   `display: none` far enkelte utfyllere til a hoppe over den. */
.pf-nyhetsbrev__krukke {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.pf-nyhetsbrev__svar {
	margin: 14px 0 0;
	font-size: 14px;
	font-weight: 600;
}

.pf-nyhetsbrev__svar--ok {
	color: var(--sage-dark);
}

.pf-nyhetsbrev__svar--feil {
	color: #b4463c;
}

@media (max-width: 780px) {
	.pf-nyhetsbrev {
		padding: 40px 0;
	}

	.pf-nyhetsbrev__inner {
		grid-template-columns: 1fr;
		gap: 24px;
	}

	/* Knappen under feltet: to elementer pa en linje blir for trangt til at
	   e-postadressen far plass a leses. */
	.pf-nyhetsbrev__rad {
		flex-direction: column;
	}
}

/* ---------- Kontaktskjemaet ----------
 *
 * Star pa kontaktsiden, ved siden av adressen og e-posten - ikke i et eget
 * lag oppa siden. Samme felt-stil som resten av nettstedet bruker.
 */

.pf-kontaktskjema {
	margin-top: 32px;
	max-width: 560px;
}

.pf-kontaktskjema__rad {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 18px;
}

/* Samme skjulingsteknikk som nyhetsbrevets honningkrukke. */
.pf-kontaktskjema__krukke {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

@media (max-width: 560px) {
	.pf-kontaktskjema__rad {
		grid-template-columns: 1fr;
	}
}

/* ---------- Paginering i panelets tabeller ---------- */

.pf-lenke-strek.er-valgt {
	color: var(--sage-dark);
	border-color: var(--sage-dark);
	font-weight: 700;
}

/* ---------- Varsel om informasjonskapsler ----------
 *
 * En smal stripe i bunnen, ikke et lag som dekker siden. Skjult til
 * skriptet slår den på - `hidden` uten JavaScript betyr at den aldri vises
 * i stedet for at den blir stående fast.
 */

.pf-infokapsel {
	position: fixed;
	left: 16px;
	right: 16px;
	bottom: 16px;
	z-index: 200;
	display: flex;
	align-items: center;
	gap: 16px;
	max-width: 480px;
	margin: 0 auto;
	padding: 14px 16px;
	background: var(--footer-bg);
	color: var(--footer-ink);
	border-radius: 10px;
	box-shadow: 0 8px 24px var(--skygge);
	opacity: 0;
	transform: translateY(12px);
	transition: opacity 0.3s ease, transform 0.3s ease;
}

.pf-infokapsel.er-vist {
	opacity: 1;
	transform: translateY(0);
}

.pf-infokapsel p {
	margin: 0;
	font-size: 0.85rem;
	line-height: 1.5;
}

.pf-infokapsel__lukk {
	flex: none;
	border: 0;
	background: none;
	color: var(--footer-ink);
	font-size: 1.3rem;
	line-height: 1;
	cursor: pointer;
	padding: 4px;
}

.pf-infokapsel__lukk:hover {
	color: var(--sage);
}

@media (max-width: 560px) {
	.pf-infokapsel {
		left: 12px;
		right: 12px;
		bottom: 12px;
		max-width: none;
	}
}
