/* Bostjärnan – the one shared stylesheet for every page.
   Breakpoints: header collapses at max-width 1199px, phone rules at max-width 639px.
   Sections 1–14 are shared components. 15–19 hold page-specific rules, scoped by
   the page's body class (page-omraden, page-hyresgast, page-om-oss, page-kontakt,
   page-integritetspolicy). 20 is the phone layout, 21 print. The homepage's
   body class, page-home, is used only in 20. */

/* ==========================================================================
   1. Fonts (self-hosted, latin subset)
   ========================================================================== */

@font-face {
	font-family: "Mukta";
	src: url("/fonts/mukta-400.woff2") format("woff2");
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: "Mukta";
	src: url("/fonts/mukta-500.woff2") format("woff2");
	font-weight: 500;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: "Mukta";
	src: url("/fonts/mukta-600.woff2") format("woff2");
	font-weight: 600;
	font-style: normal;
	font-display: swap;
}

/* Variable font with one axis, optical size, which follows the font size
   automatically. The weight is fixed at 600 (the only weight we use). */
@font-face {
	font-family: "Source Serif 4";
	src: url("/fonts/source-serif-4-var.woff2") format("woff2");
	font-weight: 600;
	font-style: normal;
	font-display: swap;
}

/* Local fallbacks sized like the web fonts, so the swap doesn't reflow text.
   Overrides = the web font's ascent/descent (per 1000 units) divided by size-adjust. */
@font-face {
	font-family: "Mukta fallback";
	src: local("Arial"), local("ArialMT");
	size-adjust: 92.6%;
	ascent-override: 122%;
	descent-override: 57.5%;
	line-gap-override: 0%;
}

@font-face {
	font-family: "Source Serif 4 fallback";
	src: local("Georgia Bold"), local("Georgia-Bold");
	font-weight: 600;
	size-adjust: 83.5%;
	ascent-override: 124.1%;
	descent-override: 40.1%;
	line-gap-override: 0%;
}

/* ==========================================================================
   2. Tokens
   ========================================================================== */

:root {
	/* UI colours. Never sample them from the logo PNGs: the logo is #880428,
	   the UI burgundy is #862633 (the old site had the same difference). */
	--burgundy: #862633;
	--burgundy-dark: #5e1a24;
	--burgundy-tint: #f3e6e7;
	--ink: #2a2421;
	--muted: #65594f;
	--bg: #f6f3ef;
	--bg-sunken: #efeae4;
	--surface: #fff;
	--line: #e6dfd8;
	--on-dark: #fff;
	/* Emergency (akut) colours */
	--warn: #8a3b00;
	--warn-tint: #fbf3ec;
	/* Footer colours, taken from the old site's sky, cloud and hill images */
	--sky: #a8ccff;
	--navy: #12366a;
	--grass: #849c52;
	--grass-ink: #1e2614;
	--footer-rule: rgb(18 54 106 / 0.25);

	--shadow-hover: 0 6px 24px rgb(42 36 33 / 0.1);

	--sans: Mukta, "Mukta fallback", system-ui, sans-serif;
	--serif: "Source Serif 4", "Source Serif 4 fallback", Georgia, "Times New Roman", serif;

	/* Type scale; every clamp keeps a rem term so browser text size still works */
	--fs-h1: clamp(2.125rem, 1.25rem + 3vw, 3.25rem);
	--fs-h2: clamp(1.875rem, 1.25rem + 2vw, 2.5rem);
	--fs-h3: clamp(1.375rem, 1.2rem + 0.6vw, 1.625rem);
	--fs-lead: 1.25rem;
	--fs-small: 1rem;
	--fs-meta: 0.9375rem;

	--radius-sm: 14px;
	--radius: 20px;
	--radius-lg: 28px;

	--content: 1200px;
	--gutter: 24px;
	--space-section: clamp(40px, 8vw, 88px);
}

/* ==========================================================================
   3. Base
   ========================================================================== */

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

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	color-scheme: only light;
}

@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}

body {
	margin: 0;
	background: var(--bg);
	color: var(--ink);
	font: 400 1.125rem/1.6 var(--sans);
}

img,
svg {
	max-width: 100%;
}

img {
	height: auto;
}

picture {
	display: contents;
}

/* Otherwise the empty <source> becomes a flex or grid item and adds a gap.
   Image selection does not depend on CSS. */
source {
	display: none;
}

a {
	color: var(--burgundy);
	text-underline-offset: 0.15em;
}

a:hover {
	color: var(--burgundy-dark);
	text-decoration-thickness: 2px;
}

/* Phone numbers and marked time ranges never break across lines */
a[href^="tel:"],
.nowrap {
	white-space: nowrap;
}

a[href^="mailto:"] {
	overflow-wrap: anywhere;
}

h1,
h2,
h3 {
	margin: 0;
	font-family: var(--serif);
	font-weight: 600;
	line-height: 1.15;
	text-wrap: balance;
}

h1 {
	font-size: var(--fs-h1);
	letter-spacing: -0.01em;
}

h2 {
	font-size: var(--fs-h2);
}

h3 {
	font-size: var(--fs-h3);
}

h4 {
	margin: 0;
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.3;
}

p {
	margin: 0;
	text-wrap: pretty;
}

ul[role="list"],
ol[role="list"] {
	margin: 0;
	padding: 0;
	list-style: none;
}

[id] {
	scroll-margin-top: 16px;
}

/* Keyboard focus: ink on light surfaces, white on burgundy, navy on the sky */
:focus-visible {
	outline: 3px solid var(--ink);
	outline-offset: 3px;
}

.band :focus-visible,
.site-footer__bridge :focus-visible {
	outline-color: var(--on-dark);
}

.site-footer__sky :focus-visible {
	outline-color: var(--navy);
}

/* ==========================================================================
   4. Utilities
   ========================================================================== */

.visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	position: absolute;
	top: -200px;
	left: 16px;
	z-index: 10;
	padding: 12px 20px;
	border-radius: var(--radius-sm);
	background: var(--ink);
	color: var(--on-dark);
	font-weight: 600;
	text-decoration: none;
}

.skip-link:focus {
	top: 12px;
	color: var(--on-dark);
}

.container {
	max-width: calc(var(--content) + 2 * var(--gutter));
	margin-inline: auto;
	padding-inline: var(--gutter);
}

.muted {
	color: var(--muted);
}

.stack > * + * {
	margin-top: var(--stack-space, 1em);
}

/* Lists too: at (0,1,1) this beats the margin: 0 of list resets such as ol[role="list"], .download-list and .om-oss__points */
.stack > * + :is(ul, ol) {
	margin-top: var(--stack-space, 1em);
}

.icon {
	flex: none;
	width: 18px;
	height: 18px;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	vertical-align: -0.15em;
}

/* The small "↗" on links that leave the site */
.icon--ext {
	width: 0.85em;
	height: 0.85em;
	stroke-width: 2.25;
}

/* ==========================================================================
   5. Buttons and links (two sizes only: .button 52px, .button--small 44px)
   ========================================================================== */

.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 52px;
	padding: 0 28px;
	border: 1.5px solid transparent;
	border-radius: 999px;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
}

.button--small {
	min-height: 44px;
	padding: 0 20px;
	gap: 8px;
	font-size: 1.0625rem;
}

.button--primary {
	background: var(--burgundy);
	color: var(--on-dark);
}

.button--primary:hover {
	background: var(--burgundy-dark);
	color: var(--on-dark);
}

.button--outline {
	border-color: var(--ink);
	color: var(--ink);
}

.button--outline:hover {
	background: var(--ink);
	color: var(--on-dark);
}

.button-row {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.arrow-link {
	display: inline-flex;
	align-self: flex-start;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	font-weight: 600;
}

/* Pill jump links ("På den här sidan") */
.pill-nav ul {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pill-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0 18px;
	border: 1px solid var(--line);
	border-radius: 999px;
	background: var(--surface);
	color: var(--ink);
	font-weight: 500;
	line-height: 1.25;
	text-align: center;
	text-decoration: none;
}

.pill-link:hover {
	border-color: var(--ink);
	color: var(--ink);
}

/* ==========================================================================
   6. Header
   ========================================================================== */

.site-header {
	background: var(--surface);
	border-bottom: 1px solid var(--line);
}

.site-header__inner {
	max-width: calc(var(--content) + 2 * var(--gutter));
	margin: 0 auto;
	padding: 20px var(--gutter);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	/* With 20px gaps, logo, six menu links and Mina sidor fit on one row from
	   1158px (1175px with a 17px scrollbar). The header collapses below 1200px. */
	gap: 16px 20px;
}

.logo {
	display: block;
	margin-right: auto;
}

.logo img {
	display: block;
	width: auto;
	height: 48px;
}

.main-nav ul {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0 20px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.main-nav a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 44px;
	color: var(--ink);
	font-size: 1.0625rem;
	font-weight: 500;
	text-decoration: none;
}

.main-nav a:hover,
.main-nav a[aria-current="page"] {
	color: var(--burgundy);
}

.main-nav a[aria-current="page"] {
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 6px;
}

/* Phone-only first menu row */
.main-nav__mina {
	display: none;
}

.nav-toggle {
	display: none;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 18px;
	border: 1.5px solid var(--ink);
	border-radius: 999px;
	background: var(--surface);
	color: var(--ink);
	font: inherit;
	font-size: 1.0625rem;
	font-weight: 600;
	cursor: pointer;
}

.nav-toggle:hover {
	background: var(--ink);
	color: var(--on-dark);
}

.nav-toggle__close,
.nav-toggle[aria-expanded="true"] .nav-toggle__open {
	display: none;
}

.nav-toggle[aria-expanded="true"] .nav-toggle__close {
	display: block;
}

/* Hang the logo's sun rays into the margin, so the house lines up with the content.
   The house starts 40/118 of the logo's height in: 16px at 48px. */
@media (min-width: 1200px) {
	.logo {
		margin-left: -16px;
	}
}

@media (max-width: 1199px) {
	.site-header__inner {
		padding-block: 16px;
		gap: 12px 16px;
	}

	.nav-toggle {
		display: inline-flex;
		order: 3;
	}

	.site-header__mina {
		order: 2;
	}

	.main-nav {
		order: 4;
		width: 100%;
	}

	.main-nav ul {
		flex-direction: column;
		align-items: stretch;
	}

	.main-nav a {
		display: flex;
		min-height: 52px;
		border-top: 1px solid var(--line);
	}

	/* Without JavaScript the menu simply stays open */
	.js .site-header:not(.is-open) .main-nav {
		display: none;
	}
}

/* Below 768px the menu button shows only its icon; "Meny" stays its accessible name */
@media (max-width: 767px) {
	.nav-toggle {
		width: 44px;
		padding: 0;
	}

	.nav-toggle__label {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
		white-space: nowrap;
	}
}

/* No JavaScript, no dead button */
html:not(.js) .nav-toggle {
	display: none;
}

/* ==========================================================================
   7. Page sections and headers
   ========================================================================== */

.eyebrow {
	color: var(--burgundy);
	font-size: var(--fs-meta);
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.lead {
	max-width: 34em;
	color: var(--muted);
	font-size: var(--fs-lead);
}

.section {
	padding-top: var(--space-section);
	padding-bottom: var(--space-section);
}

.section--white {
	background: var(--surface);
	border-top: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
}

.section-head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 40px;
}

.section-head .arrow-link {
	align-self: auto;
}

.section-head__text {
	display: flex;
	flex-direction: column;
	gap: 12px;
	max-width: 640px;
}

/* Subpage header: breadcrumb, eyebrow, h1, lead */
.page-header {
	padding-top: 64px;
	padding-bottom: 40px;
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.page-header__split {
	display: grid;
	gap: 32px 48px;
	align-items: center;
}

.page-header__text {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.page-header__media img {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover;
	border-radius: var(--radius-lg);
}

/* "Senast uppdaterad: …" under the lead */
.page-header__updated {
	font-size: var(--fs-meta);
}

/* Stacked photo (review F24): keep it short so the jump links stay near the top */
@media (max-width: 983px) {
	.page-header__media {
		max-width: 560px;
	}
}

@media (min-width: 984px) {
	.page-header__split {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	}
}

.breadcrumb ol {
	display: flex;
	flex-wrap: wrap;
	margin: 0;
	padding: 0;
	list-style: none;
	color: var(--muted);
	font-size: var(--fs-meta);
}

.breadcrumb li + li::before {
	content: "/";
	content: "/" / "";
	margin: 0 0.5em;
}

/* The padding gives a 44px tap height without changing the line height */
.breadcrumb a {
	padding-block: 11px;
	color: var(--muted);
}

.breadcrumb a:hover {
	color: var(--ink);
}

/* A section that follows the page header directly (Integritetspolicy, 404) starts
   right under it; otherwise there is up to 128px of empty space under the lead */
.page-header + .section {
	padding-top: 0;
}

/* A heading on the left, content on the right (Om oss style). Same split, h2 size and
   text width as the För hyresgästen topics, so long one-word headings fit their column. */
.side-section {
	padding-block: 56px;
	display: grid;
	gap: 16px 48px;
}

.side-section + .side-section {
	border-top: 1px solid var(--line);
}

.side-section > h2 {
	font-size: clamp(1.75rem, 1.375rem + 1vw, 2.25rem);
}

.side-section > :not(h2) {
	min-width: 0;
	max-width: 46rem;
}

@media (min-width: 1100px) {
	.side-section {
		grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
	}
}

.columns {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
	gap: 24px;
}

.panel {
	padding: clamp(24px, 4vw, 40px);
	border: 1px solid var(--line);
	border-radius: var(--radius-lg);
	background: var(--surface);
}

/* Muted note, e.g. Västerås Centrum or "kommer snart" */
.notice {
	padding: 16px 20px;
	border-radius: var(--radius-sm);
	background: var(--bg-sunken);
	color: var(--muted);
	font-size: var(--fs-small);
}

.notice strong {
	color: var(--ink);
}

/* Label/value rows, e.g. phone numbers and hours on Kontakt */
.contact-list {
	display: grid;
	gap: 4px;
	margin: 0;
}

.contact-list dt {
	color: var(--muted);
	font-size: var(--fs-meta);
}

.contact-list dd {
	margin: 0 0 10px;
	font-weight: 600;
}

/* A number or address on its own line: bigger tap area without changing the layout */
.contact-list dd a {
	padding-block: 10px;
}

/* ==========================================================================
   8. Homepage hero
   ========================================================================== */

.hero {
	padding-top: 72px;
	padding-bottom: 56px;
	display: grid;
	gap: 40px;
	align-items: center;
}

.hero__text {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

.hero h1 {
	font-size: clamp(2.25rem, 1.5rem + 3vw, 3.5rem);
	line-height: 1.1;
}

.hero .button-row {
	padding-top: 8px;
}

/* Slideshow (js/site.js): every slide (main photo + inset) sits in the same grid
   cell, so slide 1 alone sets the size and the later slides change nothing in the
   layout. Slide 1 carries .is-active in the markup; without it, it is invisible.
   The incoming slide fades in on top (.is-active) while the outgoing one stays
   opaque underneath (.is-prev), so the background never shows through. */
.hero__media {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	isolation: isolate;
}

.hero__slide {
	grid-area: 1 / 1;
	opacity: 0;
}

.hero__slide.is-active,
.hero__slide.is-prev {
	opacity: 1;
}

.hero__slide.is-active {
	z-index: 1;
}

@media (prefers-reduced-motion: no-preference) {
	.hero__slide.is-active {
		transition: opacity 1.2s ease;
	}
}

.hero__media img {
	display: block;
	object-fit: cover;
}

.hero__photo {
	width: 100%;
	aspect-ratio: 16 / 9;
	border-radius: var(--radius);
}

.hero__media .hero__inset {
	display: none;
}

/* Pause/play button in the main photo's bottom-right corner. Shown by the script. */
.hero__toggle {
	grid-area: 1 / 1;
	align-self: end;
	justify-self: end;
	position: relative;
	z-index: 2;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	margin: 12px;
	padding: 0;
	border: 2px solid transparent; /* drawn as a ring in Windows high-contrast mode */
	border-radius: 50%;
	background: var(--ink);
	background: color-mix(in srgb, var(--ink) 75%, transparent);
	color: var(--on-dark);
	cursor: pointer;
}

.hero__toggle[hidden] {
	display: none;
}

.hero__toggle:hover {
	background: var(--ink);
}

/* A white ring inside the ink one, so the focus shows on light and dark photos alike */
.hero__toggle:focus-visible {
	outline-offset: 2px;
	box-shadow: 0 0 0 2px var(--surface);
}

.hero__toggle .icon {
	width: 20px;
	height: 20px;
}

.hero__toggle-pause {
	stroke-width: 3;
}

.hero__toggle-play,
.hero__toggle.is-paused .hero__toggle-pause {
	display: none;
}

.hero__toggle.is-paused .hero__toggle-play {
	display: block;
	fill: currentColor;
}

/* Stacked tablet hero: keep the photo short so the shortcut cards stay near the top */
@media (min-width: 640px) and (max-width: 983px) {
	.hero__photo {
		max-height: 360px;
	}
}

@media (min-width: 984px) {
	.hero {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: 56px;
	}

	.hero__media {
		padding: 0 0 40px 40px;
	}

	.hero__photo {
		aspect-ratio: 5 / 4;
		border-radius: var(--radius-lg);
	}

	.hero__toggle {
		margin: 16px;
	}

	.hero__media .hero__inset {
		display: block;
		position: absolute;
		left: 0;
		bottom: 0;
		width: 34%;
		aspect-ratio: 3 / 4;
		border: 6px solid var(--bg);
		border-radius: var(--radius);
	}
}

/* ==========================================================================
   9. Cards
   ========================================================================== */

/* Homepage: shortcut cards plus the akut strip under them */
.home-quick {
	padding-bottom: var(--space-section);
}

.shortcuts {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
}

.shortcuts > li {
	display: flex;
}

.shortcuts .card {
	flex: 1;
}

@media (min-width: 1100px) {
	.shortcuts {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 28px;
	border: 1px solid var(--line);
	border-radius: var(--radius);
	background: var(--surface);
	color: inherit;
	text-decoration: none;
}

a.card:hover,
a.card:focus-visible {
	color: inherit;
	box-shadow: var(--shadow-hover);
}

.card__icon {
	display: flex;
	width: 48px;
	height: 48px;
	align-items: center;
	justify-content: center;
	margin-bottom: 8px;
	border-radius: var(--radius-sm);
	background: var(--burgundy-tint);
	color: var(--burgundy);
}

.card__icon .icon {
	width: 24px;
	height: 24px;
}

.card__title {
	margin: 0;
	font-family: var(--sans);
	font-size: 1.25rem;
	font-weight: 600;
	line-height: 1.3;
}

a.card:hover .card__title {
	color: var(--burgundy);
}

.card__title .icon--ext {
	margin-left: 0.3em;
	color: var(--burgundy);
}

.card__text {
	color: var(--muted);
	font-size: var(--fs-small);
	line-height: 1.5;
}

/* Grid of cards (a <ul role="list">) */
.card-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* Jump-index card: h3 with a link stretched over the whole card, a visible
   arrow, an optional city tag on top and document info at the bottom */
.card--jump:hover,
.card--jump:focus-within {
	box-shadow: var(--shadow-hover);
}

.card__link {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 12px;
	color: var(--ink);
	text-decoration: none;
}

.card__link::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: var(--radius);
}

.card__link:hover,
.card--jump:hover .card__link {
	color: var(--burgundy);
}

.card__link:focus-visible {
	outline: none;
}

.card__link:focus-visible::after {
	outline: 3px solid var(--ink);
	outline-offset: 3px;
}

.card__link .icon {
	width: 20px;
	height: 20px;
	margin-top: 0.2em;
	color: var(--burgundy);
}

/* Put the tag after the h3 in the markup; it is drawn on top */
.card__tag {
	order: -1;
	align-self: flex-start;
	padding: 2px 12px;
	border-radius: 999px;
	background: var(--burgundy-tint);
	color: var(--burgundy-dark);
	font-size: var(--fs-meta);
	font-weight: 600;
}

.card__meta {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: auto;
	padding-top: 8px;
	color: var(--muted);
	font-size: var(--fs-meta);
	font-weight: 500;
}

.card__meta .icon {
	color: var(--burgundy);
}

/* ==========================================================================
   10. Emergency numbers (.akut) – full block and the homepage strip
   ========================================================================== */

.akut {
	display: grid;
	gap: 16px;
}

.akut__title {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
	color: var(--warn);
	font-family: var(--sans);
	font-size: 1.125rem;
	font-weight: 600;
	line-height: 1.3;
}

.akut__title .icon {
	width: 22px;
	height: 22px;
}

.akut__desc {
	color: var(--muted);
	font-size: var(--fs-small);
}

.akut__cities {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
	gap: 12px;
}

.akut__city {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding: 20px;
	border-radius: var(--radius-sm);
	background: var(--warn-tint);
}

.akut__city > h3,
.akut__city > h4 {
	font-family: var(--sans);
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.3;
}

.akut__group {
	display: grid;
	gap: 6px;
}

.akut__label {
	color: var(--muted);
	font-size: var(--fs-meta);
	font-weight: 600;
}

.akut__rows {
	display: grid;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* One tap-to-call row, at least 48px high: icon, then who on top and the number below */
.akut__call {
	display: flex;
	align-items: center;
	gap: 12px;
	min-height: 48px;
	padding: 8px 14px;
	border: 1px solid #ead8c8;
	border-radius: 12px;
	background: var(--surface);
	color: var(--ink);
	line-height: 1.35;
	text-decoration: none;
}

/* The row may wrap; only the number itself stays on one line */
a.akut__call {
	white-space: normal;
}

.akut__call .icon {
	color: var(--warn);
}

.akut__call:hover {
	border-color: var(--warn);
	color: var(--ink);
}

.akut__call:hover .akut__number {
	text-decoration: underline;
}

.akut__text {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0 6px;
	min-width: 0;
}

.akut__who {
	flex-basis: 100%;
	color: var(--muted);
	font-size: var(--fs-meta);
}

.akut__number {
	color: var(--warn);
	font-size: 1.0625rem;
	font-weight: 600;
	white-space: nowrap;
}

.akut__note {
	color: var(--muted);
	font-size: var(--fs-meta);
}

/* The jour row carries at least as much weight as the daytime rows */
.akut__group--jour .akut__call {
	border-color: var(--warn);
	background: var(--warn);
	color: var(--on-dark);
}

.akut__group--jour .akut__call .icon,
.akut__group--jour .akut__who,
.akut__group--jour .akut__number,
.akut__group--jour .akut__note {
	color: var(--on-dark);
}

/* Homepage strip: slim, full container width, directly under the shortcut cards */
.akut--strip {
	margin-top: 16px;
	padding: 16px 20px;
	border-radius: var(--radius);
	background: var(--warn-tint);
}

.akut--strip .akut__rows {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
	gap: 8px 12px;
}

@media (min-width: 1100px) {
	.akut--strip {
		grid-template-columns: minmax(0, 1fr) minmax(0, 2.4fr);
		align-items: center;
		gap: 24px;
		padding: 14px 16px 14px 28px;
	}
}

/* ==========================================================================
   11. Downloads, disclosure, how to rent, text page
   ========================================================================== */

/* Download: file icon, name, "PDF · 762 kB" */
.download {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 12px;
	min-height: 52px;
	padding: 8px 20px;
	border: 1px solid var(--line);
	border-radius: var(--radius-sm);
	background: var(--surface);
	color: var(--ink);
	font-size: var(--fs-small);
	font-weight: 600;
	line-height: 1.35;
	text-decoration: none;
}

.download .icon {
	width: 20px;
	height: 20px;
	color: var(--burgundy);
}

.download:hover {
	border-color: var(--ink);
	color: var(--ink);
}

.download:hover .download__name {
	text-decoration: underline;
}

.download__meta {
	color: var(--muted);
	font-weight: 400;
	white-space: nowrap;
}

/* As list rows: <ul class="download-list" role="list"><li><a class="download">… */
.download-list {
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--line);
}

.download-list li {
	border-bottom: 1px solid var(--line);
}

.download-list .download {
	display: flex;
	width: 100%;
	padding: 10px 0;
	border: 0;
	border-radius: 0;
	background: none;
}

.download-list .download__name {
	flex: 1 1 12em;
}

/* When the meta wraps to its own line it stays right-aligned, like the other rows */
.download-list .download__meta {
	margin-left: auto;
}

/* <details class="disclosure"><summary>…</summary><div class="disclosure__body">… */
.disclosure {
	border: 1px solid var(--line);
	border-radius: var(--radius);
	background: var(--surface);
}

.disclosure > summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: 56px;
	padding: 12px 24px;
	border-radius: var(--radius);
	font-weight: 600;
	list-style: none;
	cursor: pointer;
}

.disclosure > summary::-webkit-details-marker {
	display: none;
}

.disclosure > summary::after {
	content: "";
	flex: none;
	width: 10px;
	height: 10px;
	margin-top: -4px;
	border-right: 2px solid var(--burgundy);
	border-bottom: 2px solid var(--burgundy);
	transform: rotate(45deg);
}

.disclosure[open] > summary::after {
	margin-top: 4px;
	transform: rotate(-135deg);
}

.disclosure > summary:hover {
	color: var(--burgundy);
}

.disclosure__body {
	padding: 0 24px 24px;
}

/* "Så söker du" box on Våra områden (id="soka") */
.how-to-rent {
	display: grid;
	gap: 16px;
	padding: clamp(24px, 4vw, 40px);
	border: 1px solid var(--line);
	border-left: 6px solid var(--burgundy);
	border-radius: var(--radius);
	background: var(--surface);
}

.how-to-rent h2 {
	font-size: clamp(1.5rem, 1.25rem + 1vw, 1.875rem);
}

.how-to-rent ul,
.how-to-rent ol {
	display: grid;
	gap: 8px;
	margin: 0;
	padding-left: 1.25em;
}

.how-to-rent li::marker {
	color: var(--burgundy);
}

/* Reading column for long text (Integritetspolicy) */
.text-page {
	max-width: 68ch;
}

.text-page > * + * {
	margin-top: 1em;
}

.text-page h2 {
	margin-top: 2em;
	font-size: clamp(1.5rem, 1.25rem + 1vw, 1.875rem);
}

.text-page h3 {
	margin-top: 1.6em;
	font-size: 1.25rem;
}

.text-page h2 + *,
.text-page h3 + * {
	margin-top: 0.5em;
}

.text-page ul,
.text-page ol {
	margin-bottom: 0;
	padding-left: 1.25em;
}

.text-page li + li {
	margin-top: 0.4em;
}

/* In-page links at the top of a long text page */
.toc {
	padding: 20px 24px;
	border-radius: var(--radius-sm);
	background: var(--bg-sunken);
}

.toc ol {
	margin: 8px 0 0;
	padding-left: 1.25em;
}

/* Block links: a wrapped entry keeps its number on the first line, and the whole row is tappable */
.toc a {
	display: block;
	padding-block: 8px;
}

/* ==========================================================================
   12. Areas: city sections and area cards (Våra områden)
   ========================================================================== */

.city-section {
	padding-top: var(--space-section);
	padding-bottom: var(--space-section);
}

/* Hairline between cities, inset by the gutter like the content (the section is also the .container) */
.city-section + .city-section {
	background: linear-gradient(var(--line), var(--line)) center top / calc(100% - 2 * var(--gutter)) 1px no-repeat;
}

.city-section__head {
	display: grid;
	gap: 24px 48px;
	align-items: center;
	margin-bottom: 32px;
}

.city-section__text {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.city-section__office {
	color: var(--muted);
	font-size: var(--fs-small);
}

.city-section__office a {
	padding-block: 10px;
}

/* Photo next to the city heading, never wider than about 600px */
.city-section__photo {
	max-width: 560px;
}

.city-section__photo img {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: var(--radius-lg);
}

@media (min-width: 900px) {
	.city-section__head {
		grid-template-columns: minmax(0, 1fr) minmax(0, 560px);
	}
}

.area-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

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

.area-card img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.area-card__body {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 24px 28px 28px;
}

.area-card__text {
	color: var(--muted);
}

.area-card__streets {
	color: var(--muted);
	font-size: var(--fs-small);
}

.area-card__streets strong {
	color: var(--ink);
	font-weight: 600;
}

.area-card .arrow-link {
	margin-top: auto;
}

/* ==========================================================================
   13. Homepage sections
   ========================================================================== */

/* City cards: the h3 link is stretched over the card */
.city-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
	gap: 24px;
}

.city-card {
	position: relative;
	display: flex;
	flex-direction: column;
	border-radius: var(--radius-lg);
	background: var(--bg);
	container-type: inline-size;
}

.city-card:hover,
.city-card:focus-within {
	box-shadow: var(--shadow-hover);
}

.city-card img {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}

.city-card__body {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 28px 32px 32px;
}

.city-card__title {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 4px 12px;
}

.city-card h3 {
	font-size: 1.875rem;
}

.city-card__link {
	color: var(--ink);
	text-decoration: none;
}

.city-card__link::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: var(--radius-lg);
}

.city-card:hover .city-card__link {
	color: var(--burgundy);
	text-decoration: underline;
	text-decoration-thickness: 2px;
}

.city-card__link:focus-visible {
	outline: none;
}

.city-card__link:focus-visible::after {
	outline: 3px solid var(--ink);
	outline-offset: 3px;
}

.city-card__count {
	color: var(--muted);
	font-size: var(--fs-small);
}

@container (max-width: 440px) {
	.city-card__title {
		flex-direction: column;
		align-items: flex-start;
		gap: 2px;
	}
}

/* Plain text list with dots between the items; the dots are not read aloud */
/* Breaks fall only between items, and the lines are balanced (no lone last item) */
.inline-list {
	margin: 0;
	padding: 0;
	list-style: none;
	color: var(--muted);
	font-size: var(--fs-small);
	text-wrap: balance;
}

.inline-list li {
	display: inline;
	white-space: nowrap;
}

.inline-list li:not(:last-child)::after {
	content: "\a0·";
	content: "\a0·" / "";
}

/* "För dig som bor hos oss" */
.split {
	display: grid;
	gap: 24px 48px;
}

.split__intro {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

@media (min-width: 1000px) {
	.split {
		grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
	}

	.split .link-list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.link-list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
	gap: 0 32px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.link-list li {
	border-top: 1px solid var(--line);
}

.link-list a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: 64px;
	color: var(--ink);
	font-weight: 500;
	text-decoration: none;
}

.link-list a:hover {
	color: var(--burgundy);
	text-decoration: underline;
}

.link-list .icon {
	color: var(--burgundy);
}

/* Burgundy band above the homepage footer, with the old site's curved top edge */
.band {
	background: var(--burgundy);
	color: var(--on-dark);
}

.band a,
.band a:hover {
	color: var(--on-dark);
}

.band--curved::before {
	content: "";
	display: block;
	height: clamp(48px, 9vw, 130px);
	background: var(--bg) url("/img/band-kurva.png") left bottom / 100% 100% no-repeat;
	transform: scaleX(-1);
}

.about {
	padding-top: clamp(24px, 4vw, 48px);
	padding-bottom: 48px;
	display: grid;
	gap: 20px 56px;
}

.about__text {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.about__text p {
	max-width: 36em;
	color: var(--burgundy-tint);
}

@media (min-width: 900px) {
	.about {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr);
		align-items: start;
	}
}

/* ==========================================================================
   14. Footer
   Homepage: clouds → sky content → kids → green strip with the company line.
   Subpages: burgundy bridge → mirrored clouds → sky content with © → mirrored hill.
   ========================================================================== */

.site-footer {
	background: var(--sky);
	color: var(--navy);
}

/* The art layers (clouds, kids, hill), each in a <picture> with a WebP source */
.site-footer > picture > img {
	display: block;
	width: 100%;
	height: auto;
}

.site-footer a,
.site-footer a:hover {
	color: var(--navy);
}

.site-footer__flip {
	transform: scaleX(-1);
}

/* On phones keep the clouds at about half size instead of a thin strip */
.site-footer__clouds {
	min-height: 96px;
	object-fit: cover;
	object-position: right top;
}

.site-footer__content {
	padding-top: 40px;
	padding-bottom: 32px;
	display: grid;
	gap: 28px 32px;
	font-size: var(--fs-small);
}

.site-footer h2 {
	margin-bottom: 8px;
	font-family: var(--sans);
	font-size: 1.125rem;
	line-height: 1.3;
}

.site-footer__office p,
.site-footer__office ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-footer__office ul {
	margin-top: 6px;
}

/* Inline-block, so each link's 44px+ tap area takes up room and can't cover the link above */
.site-footer__office a {
	display: inline-block;
	padding-block: 10px;
}

/* From 640px the two offices sit side by side, centred as one block,
   so the sky shows the same margin on the left and the right */
@media (min-width: 640px) {
	.site-footer__content {
		grid-template-columns: repeat(2, minmax(0, max-content));
		justify-content: center;
		column-gap: clamp(32px, 8vw, 120px);
	}

	.site-footer__copy,
	.site-footer__legal p {
		text-align: center;
	}
}

.site-footer__company {
	display: inline-block;
}

.site-footer__copy a,
.site-footer__legal a {
	display: inline-block;
	padding-block: 12px;
}

/* Homepage: the kids on the hill, cropped from the right on small screens */
.site-footer__kids {
	aspect-ratio: 8 / 1;
	min-height: 110px;
	object-fit: cover;
	object-position: left bottom;
}

/* Above its real width the art is not enlarged; a 4px grass line continues the hill */
@media (min-width: 1201px) {
	.site-footer .site-footer__kids {
		height: 150px;
		aspect-ratio: auto;
		min-height: 0;
		object-fit: none;
		object-position: left bottom;
		background: linear-gradient(var(--grass), var(--grass)) right bottom / calc(100% - 1200px) 4px no-repeat;
	}
}

.site-footer__legal {
	background: var(--grass);
	color: var(--grass-ink);
	font-size: var(--fs-meta);
}

.site-footer__legal p {
	padding-top: 4px;
	padding-bottom: 28px;
}

/* Subpages. The bridge sits above the mirrored clouds (a transform paints on top),
   so the link's focus ring isn't cut off at the bottom. */
.site-footer__bridge {
	position: relative;
	z-index: 1;
	background: var(--burgundy);
	color: var(--on-dark);
	text-align: center;
}

.site-footer__bridge p {
	padding-top: 40px;
	font-family: var(--serif);
	font-size: clamp(1.25rem, 1rem + 1vw, 1.625rem);
	font-weight: 600;
	line-height: 1.3;
}

.site-footer__bridge a,
.site-footer__bridge a:hover {
	color: var(--on-dark);
}

.site-footer__bridge a {
	padding-block: 6px;
}

.site-footer__bridge .icon--ext {
	width: 0.7em;
	height: 0.7em;
	margin-left: 0.3em;
}

.site-footer__copy {
	padding-top: 20px;
	padding-bottom: 8px;
	border-top: 1px solid var(--footer-rule);
	font-size: var(--fs-meta);
}

.site-footer--sub .site-footer__content {
	padding-bottom: 24px;
}

.site-footer__hill {
	min-height: 56px;
	object-fit: cover;
	object-position: right bottom;
}

/* ==========================================================================
   15. Våra områden (body.page-omraden)
   ========================================================================== */

/* Space between the jump links and the "Så söker du" box */
.page-omraden .how-to-rent {
	margin-top: 32px;
}

/* From 900px: intro and button on the left, requirements on the right, so lines stay readable */
@media (min-width: 900px) {
	.page-omraden .how-to-rent {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
		gap: 24px 56px;
		align-items: start;
	}
}

/* Area cards: two columns from 640px, three from 1040px. A last card left
   alone in a two-column row spans the row, with the photo beside the text. */
@media (min-width: 640px) {
	.page-omraden .area-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.page-omraden .area-card:last-child:nth-child(odd) {
		grid-column: 1 / -1;
		flex-direction: row;
	}

	.page-omraden .area-card:last-child:nth-child(odd) img {
		width: calc(50% - 8px);
		aspect-ratio: 16 / 10;
	}

	.page-omraden .area-card:last-child:nth-child(odd) .area-card__body {
		justify-content: center;
	}
}

/* Mid widths: equal columns, so the city link fits on one line beside the photo */
@media (min-width: 900px) and (max-width: 1199px) {
	.page-omraden .city-section__head {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* From 1040px: six tracks, two per card, so three cards a row. When two cards
   are left for the last row (5 = 3 + 2), they take half the row each. */
@media (min-width: 1040px) {
	.page-omraden .area-grid {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}

	.page-omraden .area-card,
	.page-omraden .area-card:last-child:nth-child(odd) {
		grid-column: span 2;
		flex-direction: column;
	}

	.page-omraden .area-card:last-child:nth-child(odd) img {
		width: 100%;
		aspect-ratio: 4 / 3;
	}

	.page-omraden .area-card:last-child:nth-child(odd) .area-card__body {
		justify-content: flex-start;
	}

	.page-omraden .area-card:nth-child(3n+1):nth-last-child(2),
	.page-omraden .area-card:nth-child(3n+2):last-child {
		grid-column: span 3;
	}

	.page-omraden .area-card:nth-child(3n+1):nth-last-child(2) img,
	.page-omraden .area-card:nth-child(3n+2):last-child img {
		aspect-ratio: 16 / 9;
	}
}

/* ==========================================================================
   16. För hyresgästen (body.page-hyresgast)
   ========================================================================== */

/* Felanmälan: intro and the akut block side by side from 1100px */
.page-hyresgast .felanmalan {
	display: grid;
	gap: 32px 48px;
}

.page-hyresgast .felanmalan__intro {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
}

.page-hyresgast .felanmalan__intro .muted {
	font-size: var(--fs-small);
}

.page-hyresgast .felanmalan__intro .download-list {
	align-self: stretch;
}

@media (min-width: 1100px) {
	.page-hyresgast .felanmalan {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.75fr);
		align-items: start;
	}
}

/* Small print inside an akut city card: area help and Trygghetsjouren */
.page-hyresgast .akut__help {
	color: var(--muted);
	font-size: var(--fs-meta);
	line-height: 1.5;
}

.page-hyresgast .akut__help strong {
	color: var(--ink);
}

/* Jump index: three columns from 1040px, so the Sälen card can span the last row with its photo.
   The photo sits in a wrapper div so it can be hidden below 1040px. */
.page-hyresgast .card__body {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.page-hyresgast .card__media {
	display: none;
}

@media (min-width: 1040px) {
	.page-hyresgast .topic-index {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.page-hyresgast .card--feature {
		grid-column: 1 / -1;
		flex-direction: row;
		align-items: center;
		gap: 28px;
	}

	.page-hyresgast .card__media {
		display: block;
		flex: none;
		width: 200px;
	}

	.page-hyresgast .card__media img {
		display: block;
		width: 100%;
		aspect-ratio: 4 / 3;
		object-fit: cover;
		border-radius: var(--radius-sm);
	}
}

/* One anchored section per topic: heading left, content right from 1100px
   (the same split as .side-section), with a head column that can hold a tag and photo */
.page-hyresgast .topic {
	display: grid;
	gap: 20px 48px;
	padding-block: 56px;
}

.page-hyresgast .topic + .topic {
	border-top: 1px solid var(--line);
}

@media (min-width: 1100px) {
	.page-hyresgast .topic {
		grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
	}
}

.page-hyresgast .topic__head {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
}

.page-hyresgast .topic__head h2 {
	font-size: clamp(1.75rem, 1.375rem + 1vw, 2.25rem);
}

.page-hyresgast .topic__media {
	align-self: stretch;
	max-width: 480px;
	margin-top: 8px;
}

.page-hyresgast .topic__media img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--radius);
}

.page-hyresgast .topic__body {
	display: flex;
	flex-direction: column;
	gap: 16px;
	min-width: 0;
	max-width: 46rem;
}

.page-hyresgast .topic__body h3 {
	margin-top: 12px;
	font-size: 1.25rem;
}

.page-hyresgast .topic__body > h3:first-child {
	margin-top: 0;
}

.page-hyresgast .topic__body ul:not([role]) {
	display: grid;
	gap: 6px;
	margin: 0;
	padding-left: 1.25em;
}

.page-hyresgast .topic__body li::marker {
	color: var(--burgundy);
}

/* Short lists such as the nine waste fractions run in columns */
.page-hyresgast .topic__body ul.topic__cols {
	display: block;
	columns: 3 8em;
	column-gap: 32px;
}

.page-hyresgast .topic__cols li {
	padding-bottom: 6px;
	break-inside: avoid;
}

/* Processing time, e.g. "Handläggningstid: ca 4 veckor" */
.page-hyresgast .topic__time {
	display: inline-flex;
	align-self: flex-start;
	align-items: center;
	gap: 8px;
	padding: 6px 16px;
	border-radius: 999px;
	background: var(--burgundy-tint);
	color: var(--burgundy-dark);
	font-size: var(--fs-small);
	font-weight: 600;
}

/* Downloads grouped by city ("Göteborg" / "Västerås") */
.page-hyresgast .topic__groups {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
	gap: 20px 32px;
}

.page-hyresgast .topic__group > h3,
.page-hyresgast .topic__group > h4 {
	margin: 0 0 6px;
}

/* City names over the download groups and in the city boxes, sized like .akut__city headings */
.page-hyresgast .topic__group > h3,
.page-hyresgast .topic__body .topic__city h3 {
	margin-top: 0;
	font-family: var(--sans);
	font-size: 1.0625rem;
	line-height: 1.3;
}

/* One box per city: pest-control contacts and "Skicka ansökan till" */
.page-hyresgast .topic__send {
	display: grid;
	gap: 12px;
}

.page-hyresgast .topic__cities {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
	gap: 12px;
}

.page-hyresgast .topic__city {
	padding: 20px;
	border-radius: var(--radius-sm);
	background: var(--bg);
	font-size: var(--fs-small);
}

.page-hyresgast .topic__city > * + * {
	margin-top: 8px;
}

.page-hyresgast .topic__city .contact-list dd {
	margin-bottom: 6px;
}

/* E-mail addresses and numbers on their own line: bigger tap area without changing the layout */
.page-hyresgast .topic__city a {
	padding-block: 10px;
}

@media (max-width: 639px) {
	/* Panel, city card and call row are nested here: give the phone numbers the width */
	.page-hyresgast .felanmalan {
		padding: 24px 16px;
	}

	.page-hyresgast .felanmalan .akut__city {
		padding: 16px 12px;
	}

	.page-hyresgast .topic {
		padding-block: 40px;
	}
}

/* ==========================================================================
   17. Om oss (body.page-om-oss)
   ========================================================================== */

/* Space between the jump links and the white band below them */
.page-om-oss .pill-nav {
	padding-bottom: 40px;
}

/* Affärsidé: one statement at lead size, in ink */
.om-oss__statement {
	max-width: 34em;
	font-size: var(--fs-lead);
	line-height: 1.5;
}

/* Organisation: one panel per company */
.om-oss__company {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.om-oss__company .muted {
	font-size: var(--fs-small);
}

.om-oss__roles {
	margin: 4px 0 0;
	padding-left: 1.25em;
}

.om-oss__roles li + li {
	margin-top: 4px;
}

.om-oss__roles li::marker {
	color: var(--burgundy);
}

/* Uthyrningspolicy summary: three numbered points */
.om-oss__points {
	display: grid;
	gap: 12px;
	counter-reset: punkt;
}

.om-oss__points li {
	position: relative;
	padding: 20px 24px 20px 72px;
	border-radius: var(--radius);
	background: var(--bg);
	color: var(--muted);
	font-size: var(--fs-small);
	line-height: 1.5;
	counter-increment: punkt;
}

.om-oss__points li::before {
	content: counter(punkt);
	position: absolute;
	top: 18px;
	left: 24px;
	display: grid;
	place-items: center;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: var(--burgundy);
	color: var(--on-dark);
	font-weight: 600;
	line-height: 1;
}

.om-oss__points strong {
	display: block;
	margin-bottom: 4px;
	color: var(--ink);
	font-size: 1.125rem;
	font-weight: 600;
	line-height: 1.35;
}

/* Kvalitet och miljö: a 2×2 grid of cards (.columns), with the .card-grid gap, kept on phones too */
.om-oss__quality {
	gap: 16px;
}

/* The Svanen card is the strongest trust signal (review F43), so it gets the burgundy tint */
.om-oss__svanen {
	border-color: transparent;
	background: var(--burgundy-tint);
}

.om-oss__svanen .card__text {
	color: var(--ink);
}

.om-oss__card-link {
	margin-top: auto;
}

@media (max-width: 639px) {
	.page-om-oss .pill-nav {
		padding-bottom: 28px;
	}

	.om-oss__points li {
		padding: 16px 16px 16px 56px;
		border-radius: var(--radius-sm);
	}

	.om-oss__points li::before {
		top: 15px;
		left: 14px;
		width: 28px;
		height: 28px;
	}
}

/* ==========================================================================
   18. Kontakt (body.page-kontakt): one full-width row per office.
   Phones and tablets: one column. From 900px: office details beside the
   contact block. From 1100px: contact block, details and jour side by side.
   ========================================================================== */

.page-kontakt .lead a {
	padding-block: 8px;
}

.page-kontakt .lead .icon {
	margin-left: 0.25em;
}

.page-kontakt .offices {
	display: grid;
	gap: 24px;
	padding-bottom: var(--space-section);
}

.page-kontakt .office {
	display: grid;
	gap: 28px 48px;
	align-items: start;
}

.page-kontakt .office__main {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
}

.page-kontakt .office__main h2 {
	margin-bottom: 8px;
}

.page-kontakt .office__company {
	font-weight: 600;
}

.page-kontakt .office__address {
	color: var(--muted);
}

.page-kontakt .office__main .button-row {
	margin-top: 12px;
}

/* Second line of a value, e.g. the Västerås first/last-weekday visiting hours */
.page-kontakt .office__extra {
	display: block;
	margin-top: 4px;
	color: var(--muted);
	font-size: var(--fs-small);
	font-weight: 400;
}

.page-kontakt .office__details dd:last-child {
	margin-bottom: 0;
}

.page-kontakt .office__list li + li {
	margin-top: 0;
}

/* Stacked numbers and addresses: inline-block, so each tap area takes up room and
   can't cover the link above it */
.page-kontakt .office__details a {
	display: inline-block;
	padding-block: 8px;
}

/* A number in running text: bigger tap area without changing the layout */
.page-kontakt .office__jour p a {
	padding-block: 10px;
}

/* Phones: full-width white bands, so the e-mail buttons keep to one line at 320px */
@media (max-width: 639px) {
	.page-kontakt .offices {
		gap: 12px;
		padding-inline: 0;
	}

	.page-kontakt .office {
		padding: 28px var(--gutter) 32px;
		border-inline: 0;
		border-radius: 0;
	}

	.page-kontakt .office__main .button-row .button {
		flex: 1 1 auto;
		padding-inline: 20px;
	}

	.page-kontakt .office__jour {
		padding: 16px;
	}
}

@media (min-width: 900px) {
	.page-kontakt .office {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	}

	.page-kontakt .office__main {
		grid-row: span 2;
	}
}

@media (min-width: 1100px) {
	.page-kontakt .office {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr) minmax(0, 1fr);
	}

	.page-kontakt .office__main {
		grid-row: auto;
	}
}

/* ==========================================================================
   19. Integritetspolicy (body.page-integritetspolicy)
   ========================================================================== */

/* No rules of its own: the gap under the page header is handled by
   .page-header + .section in section 7, which the 404 page shares. */

/* ==========================================================================
   20. Phones (follows the Mobil artboard)
   ========================================================================== */

@media (max-width: 639px) {
	:root {
		--gutter: 16px;
		--fs-lead: 1.0625rem;
		--fs-meta: 0.875rem;
	}

	/* Header */
	.site-header__inner {
		padding-block: 12px;
		gap: 12px 8px;
	}

	/* The image is shorter than 44px here, so the link keeps the tap height itself */
	.logo {
		display: flex;
		align-items: center;
		min-height: 44px;
	}

	.logo img {
		height: auto;
		width: min(240px, 100vw - 136px);
	}

	.site-header__mina {
		width: 44px;
		padding: 0;
	}

	.site-header__mina .button__label {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
		white-space: nowrap;
	}

	.main-nav__mina {
		display: block;
	}

	.main-nav__mina a {
		color: var(--burgundy);
		font-weight: 600;
	}

	.eyebrow {
		font-size: 0.8125rem;
	}

	/* Hero: compact, one 4:3 photo */
	.hero {
		padding-top: 28px;
		padding-bottom: 28px;
		gap: 24px;
	}

	.hero__text {
		gap: 16px;
	}

	.hero .button-row {
		flex-direction: column;
		gap: 4px;
		padding-top: 4px;
	}

	.hero .button-row .button--outline {
		min-height: 44px;
		border-color: transparent;
		color: var(--burgundy);
		text-decoration: underline;
	}

	.hero .button-row .button--outline:hover {
		background: none;
		color: var(--burgundy-dark);
	}

	.hero__photo {
		aspect-ratio: 4 / 3;
	}

	/* Shortcut cards: two per row, icon and title only */
	.shortcuts {
		gap: 12px;
	}

	.card {
		padding: 18px;
		gap: 10px;
		border-radius: var(--radius-sm);
	}

	.card__icon {
		width: 40px;
		height: 40px;
		margin-bottom: 0;
	}

	.card__title {
		font-size: 1.0625rem;
	}

	.shortcuts .card__text {
		display: none;
	}

	.akut--strip {
		margin-top: 12px;
		padding: 16px;
		border-radius: var(--radius-sm);
	}

	/* Jump-index cards become plain divider rows */
	.card-grid {
		gap: 0;
	}

	.card-grid .card--jump {
		padding: 14px 0;
		border: 0;
		border-top: 1px solid var(--line);
		border-radius: 0;
		background: none;
		box-shadow: none;
	}

	.card-grid .card--jump .card__link::after {
		border-radius: 0;
	}

	/* Rows of pills that fill the width, each label on one line */
	.pill-nav ul {
		gap: 8px;
	}

	.pill-nav li {
		flex: 1 1 auto;
	}

	.pill-link {
		width: 100%;
		padding: 0 12px;
		font-size: var(--fs-small);
	}

	/* Sections */
	.section-head {
		margin-bottom: 20px;
	}

	/* Homepage only (Mobil artboard): "Här finns vi" without its intro */
	.page-home .section-head .muted {
		display: none;
	}

	.page-header {
		padding-top: 32px;
		padding-bottom: 28px;
		gap: 14px;
	}

	.side-section {
		padding-block: 40px;
	}

	.city-grid {
		gap: 16px;
	}

	.city-card__body {
		padding: 18px 20px 20px;
		gap: 8px;
	}

	.city-card h3 {
		font-size: 1.5rem;
	}

	.area-card__body {
		padding: 20px;
	}

	.area-card h3 {
		font-size: 1.375rem;
	}

	.split {
		gap: 20px;
	}

	.link-list a {
		min-height: 52px;
	}

	.disclosure > summary {
		padding-inline: 16px;
	}

	.disclosure__body {
		padding: 0 16px 20px;
	}

	.site-footer__content {
		padding-top: 24px;
	}
}

/* ==========================================================================
   21. Print
   ========================================================================== */

@page {
	margin: 15mm;
}

@media print {
	body {
		background: none;
		color: #000;
		font-size: 12pt;
	}

	.skip-link,
	.main-nav,
	.nav-toggle,
	.site-header__mina,
	.hero__media,
	.city-card img,
	.area-card img,
	.city-section__photo,
	.page-header__media,
	.card__media,
	.topic__media,
	.band--curved::before,
	.site-footer > picture > img,
	.site-footer__bridge {
		display: none !important;
	}

	.site-header {
		border: 0;
	}

	.hero,
	.about,
	.section,
	.city-section,
	.page-header {
		padding-top: 24px;
		padding-bottom: 24px;
	}

	.band,
	.site-footer,
	.site-footer__legal,
	.section--white,
	.card,
	.city-card,
	.area-card,
	.panel,
	.akut__city,
	.akut--strip,
	.akut__call,
	.notice,
	.toc {
		background: none !important;
		color: #000 !important;
		box-shadow: none !important;
	}

	.band a,
	.site-footer a,
	.about__text p,
	.akut__group--jour .akut__call,
	.akut__group--jour .akut__who,
	.akut__group--jour .akut__number,
	.akut__group--jour .akut__note {
		color: #000 !important;
	}

	.button {
		border: 1px solid #000;
		background: none;
		color: #000 !important;
	}

	.card,
	.city-card,
	.area-card,
	.akut,
	.download,
	.how-to-rent,
	.disclosure {
		break-inside: avoid;
	}

	/* Print the portal address once, in the footer */
	.site-footer a[href^="http"]::after {
		content: " (" attr(href) ")";
		font-size: 0.85em;
	}
}
