/*
Theme Name: Osteopathie de Singel
Template: twentytwentyfive
Description: Child theme of Twenty Twenty-Five. Rebuilds the 2025 look of osteopathiedesingel.nl (formerly Cardinal + Swift Page Builder) with core blocks only. Measurements taken from the live site on 23-10-2026.
Version: 1.0.0
Requires at least: 6.7
Requires PHP: 8.1
Text Domain: osteopathie-de-singel
*/

/* Measured values. Desktop = viewport 1440, mobile = below 768 (old Bootstrap breakpoint). */
:root {
	--os-header-h: 140px;
	--os-foto-h: calc(100vh - 140px);
	--os-band-kol-x: 46px;
	--os-band-kol-top: 76px;
	--os-band-kol-bottom: 76px;
	--os-band-pad-top: 20px;
	--os-band-pad-x: 10px;
	--os-band-pad-bottom: 0px;
}

html {
	scroll-behavior: smooth;
}

body {
	-webkit-font-smoothing: antialiased;
}

/* Reset core block spacing inside our sections; every gap below is set on purpose. */
.os-main :where(p, h1, h2, h3, h4, h5, h6, figure, .wp-block-buttons) {
	margin: 0;
}

.os-main .wp-block-image img {
	display: block;
}

.os-main strong,
.os-main b {
	font-weight: 700;
}

/* ---------- Header ---------- */
/* above the fixed booking button, so the opened mobile menu covers it */
.os-header-wrap {
	position: relative;
	z-index: 50;
}

.os-header {
	height: var(--os-header-h);
	margin-bottom: 1px;
	padding: 0 14px 0 25px;
	background: var(--wp--preset--color--wit);
	box-shadow: 1px 1px 7px 0 #e6e6e6;
	align-items: center;
}

.os-header .wp-block-site-logo img {
	width: 316px;
	height: auto;
}

.os-nav .wp-block-navigation__container,
.os-nav.wp-block-navigation {
	gap: 15px;
}

.os-nav .wp-block-navigation-item__content {
	color: var(--wp--preset--color--menu);
	line-height: 26px;
}

.os-nav .wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--oranje);
	text-decoration: none;
}

.os-nav .wp-block-navigation__responsive-container-open svg {
	width: 24px;
	height: 24px;
	fill: #222;
}

.os-nav .wp-block-navigation__responsive-container.is-menu-open {
	padding: 24px 30px;
}

.os-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.os-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	align-items: flex-start;
	gap: 22px;
	padding-top: 40px;
}

.os-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	padding-top: 0;
}

.os-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	color: var(--wp--preset--color--wit);
	font-size: 18px;
}

/* Logo a bit smaller on laptops, hamburger once the menu no longer fits next to the logo
   (core switches at 600px; the old site already did at 1200px). */
@media (max-width: 1199px) {
	.os-header .wp-block-site-logo img {
		width: 270px;
	}
}

@media (max-width: 859px) {
	.os-nav .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}

	.os-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}
}

/* ---------- Fixed booking button + back to top ---------- */
.os-afspraak {
	position: fixed;
	right: 135px;
	bottom: 5px;
	z-index: 40;
	width: 270px;
	margin: 0;
}

.os-afspraak img {
	display: block;
	width: 100%;
	height: auto;
}

.os-naar-boven {
	position: fixed;
	right: 10px;
	bottom: 10px;
	z-index: 39;
	width: 50px;
	height: 50px;
	background: rgba(20, 20, 20, 0.4);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.3s, visibility 0.3s;
}

.os-naar-boven.is-zichtbaar {
	opacity: 1;
	visibility: visible;
}

.os-naar-boven::before {
	content: "";
	position: absolute;
	inset: 0;
	background: #fff;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath d='M17 29l8-8 8 8' fill='none' stroke='black' stroke-width='2.5'/%3E%3C/svg%3E") center / 50px no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath d='M17 29l8-8 8 8' fill='none' stroke='black' stroke-width='2.5'/%3E%3C/svg%3E") center / 50px no-repeat;
}

/* ---------- Buttons ---------- */
.os-main .wp-block-button .wp-block-button__link {
	text-align: left;
	text-decoration: none;
}

.os-knop-groot {
	width: min(395px, 100%);
}

.os-knop-groot .wp-block-button__link {
	display: block;
	width: 100%;
	box-sizing: border-box;
}

.os-knop-groot .wp-block-button__link:hover {
	background: #ef6a2b;
}

.os-knop-rand .wp-block-button__link {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: center;
	padding: 13px 30px;
	border: 2px solid var(--wp--preset--color--wit);
	background: transparent;
	color: var(--wp--preset--color--wit);
	font-size: 12px;
	line-height: 18px;
	letter-spacing: 1px;
	transition: background 0.2s, color 0.2s;
}

.os-knop-rand .wp-block-button__link:hover,
.os-knop-rand .wp-block-button__link:focus {
	background: var(--wp--preset--color--wit);
	color: var(--wp--preset--color--taupe);
}

.os-knop-rand .wp-block-button__link::after {
	content: "";
	width: 16px;
	height: 19px;
	margin-left: 10px;
	background: currentColor;
}

.os-knop-locatie .wp-block-button__link::after {
	width: 19px;
}

.os-knop-pijl .wp-block-button__link::after {
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0zm.4 3.4L7.3 4.5l2.7 2.7H3.6v1.6H10l-2.7 2.7 1.1 1.1L13 8z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0zm.4 3.4L7.3 4.5l2.7 2.7H3.6v1.6H10l-2.7 2.7 1.1 1.1L13 8z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.os-knop-locatie .wp-block-button__link::after {
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 15s5-5.2 5-9A5 5 0 0 0 3 6c0 3.8 5 9 5 9z' fill='none' stroke='black' stroke-width='1.4'/%3E%3Ccircle cx='8' cy='6' r='1.7' fill='none' stroke='black' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 15s5-5.2 5-9A5 5 0 0 0 3 6c0 3.8 5 9 5 9z' fill='none' stroke='black' stroke-width='1.4'/%3E%3Ccircle cx='8' cy='6' r='1.7' fill='none' stroke='black' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* ---------- Columns: no gaps, side by side from 768px (core stacks at 782px) ---------- */
.os-main .wp-block-columns {
	gap: 0;
	margin: 0;
}

.os-main .wp-block-column {
	box-sizing: border-box;
}

@media (min-width: 768px) {
	.os-main .wp-block-columns:not(.is-not-stacked-on-mobile) {
		flex-wrap: nowrap !important;
	}

	.os-main .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column {
		flex-basis: 0 !important;
		flex-grow: 1;
	}
}

/* ---------- Intro (photo with big rounded corner) ---------- */
.os-intro {
	padding: 6px 3px;
}

@media (min-width: 768px) {
	.os-main .os-intro .os-intro__kolommen.wp-block-columns > .wp-block-column {
		flex: 0 0 50% !important;
	}
}

/* WordPress removes the top margin of a first child, so the 20px heading margin sits in the padding. */
.os-intro__tekst {
	padding: 70px 78px 10px;
}

.os-intro h1 {
	margin: 0 0 30px;
}

.os-intro p {
	margin-bottom: 24px;
}

.os-intro p:first-of-type {
	margin-bottom: 20px;
}

.os-intro .wp-block-buttons {
	margin: 30px 0 20px;
}

.os-intro__foto {
	padding: 20px 5px 50px;
}

.os-intro__foto img {
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: 150px 0 0 0;
}

/* Desktop and mobile intro differ in text, just like on the old site. */
@media (max-width: 767px) {
	.os-alleen-desktop {
		display: none !important;
	}
}

@media (min-width: 768px) {
	.os-alleen-mobiel {
		display: none !important;
	}
}

/* ---------- Coloured bands (treatment, contact) ---------- */
.os-band {
	margin-top: 10px;
	padding: var(--os-band-pad-top) var(--os-band-pad-x) var(--os-band-pad-bottom);
}

.os-band .wp-block-columns {
	align-items: center !important;
}

.os-band .wp-block-column {
	padding: var(--os-band-kol-top) var(--os-band-kol-x) var(--os-band-kol-bottom);
}

.os-band h3 {
	margin-bottom: 15px;
}

.os-band p + p {
	margin-top: 24px;
}

.os-kinderen .os-band--blauw {
	--os-band-kol-x: 49px;
	--os-band-kol-top: 79px;
	--os-band-kol-bottom: 79px;
	--os-band-pad-top: 8px;
	--os-band-pad-x: 8px;
	--os-band-pad-bottom: 8px;
	margin-top: 8px;
}

/* "Lees meer" on the children's page */
.os-lees-meer {
	margin-top: 24px;
}

.os-lees-meer summary {
	cursor: pointer;
	list-style: none;
	font-size: 16px;
	line-height: 24px;
	font-weight: 700;
}

.os-lees-meer summary::-webkit-details-marker {
	display: none;
}

.os-lees-meer[open] summary {
	margin-bottom: 15px;
}

.os-lees-meer p + p {
	margin-top: 24px;
}

/* Contact band */
.os-contact {
	--os-band-kol-top: 56px;
	--os-band-kol-bottom: 76px;
}

.os-contact,
.os-contact a {
	color: var(--wp--preset--color--wit);
}

.os-contact .wp-block-image img {
	width: 250px;
	height: auto;
}

.os-contact h5 {
	margin-top: 24px;
	color: inherit;
}

/* the old h5 kept a 15px bottom margin; WordPress drops it on a last child, so it goes in the padding */
.os-contact > .wp-block-column:first-child {
	padding-bottom: calc(var(--os-band-kol-bottom) + 15px);
}

.os-contact .wp-block-buttons {
	margin-top: 20px;
}

/* ---------- Full-width photos (were one-photo sliders) ---------- */
.os-foto img,
.os-slider img {
	width: 100%;
	height: var(--os-foto-h);
	object-fit: cover;
	object-position: center;
}

.os-foto-boven {
	margin-top: 80px;
}

.os-foto-duo {
	gap: 30px !important;
}

.os-band.os-voor-contact {
	margin-top: 100px;
}

/* ---------- Consult (sand box with rounded bottom-left corner) ---------- */
.os-consult {
	padding: 98px 63px;
}

.os-zand {
	padding: 74px 54px 134px;
	border-radius: 0 0 0 150px;
}

.os-zand .wp-block-columns {
	gap: 118px;
	align-items: flex-start;
}

.os-zand h3 {
	margin-bottom: 15px;
}

.os-zand p + p {
	margin-top: 24px;
}

.os-kinderen .os-zand {
	padding: 59px 39px 134px;
}

.os-kinderen .os-zand .wp-block-columns {
	gap: 87px;
}

/* ---------- Slider (children's page) ---------- */
.os-slider-wrap {
	position: relative;
}

.os-main .os-slider.wp-block-gallery {
	display: flex;
	flex-wrap: nowrap;
	gap: 0;
	margin: 0;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}

.os-main .os-slider.wp-block-gallery::-webkit-scrollbar {
	display: none;
}

.os-main .os-slider.wp-block-gallery > figure.wp-block-image {
	flex: 0 0 100%;
	width: 100% !important;
	height: var(--os-foto-h);
	margin: 0;
	scroll-snap-align: start;
}

.os-main .os-slider.wp-block-gallery > figure.wp-block-image img {
	height: 100%;
}

.os-slider-dots {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 40px;
	display: flex;
	justify-content: center;
	gap: 8px;
}

.os-slider-dots button {
	width: 8px;
	height: 8px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.5);
	cursor: pointer;
}

.os-slider-dots button[aria-current="true"] {
	background: #fff;
}

.os-slider-pijl {
	position: absolute;
	top: 50%;
	width: 50px;
	height: 50px;
	margin-top: -25px;
	padding: 0;
	border: 0;
	background: rgba(20, 20, 20, 0.4);
	cursor: pointer;
	opacity: 0;
	transition: opacity 0.3s;
}

.os-slider-pijl--vorige {
	left: 20px;
}

.os-slider-pijl--volgende {
	right: 20px;
}

.os-slider-wrap:hover .os-slider-pijl,
.os-slider-pijl:focus-visible {
	opacity: 1;
}

.os-slider-pijl::before {
	content: "";
	position: absolute;
	inset: 0;
	background: #fff;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath d='M29 17l-8 8 8 8' fill='none' stroke='black' stroke-width='2.5'/%3E%3C/svg%3E") center / 50px no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath d='M29 17l-8 8 8 8' fill='none' stroke='black' stroke-width='2.5'/%3E%3C/svg%3E") center / 50px no-repeat;
}

.os-slider-pijl--volgende::before {
	transform: scaleX(-1);
}

.os-main .os-slider.wp-block-gallery.os-slider-boven {
	margin-top: 30px;
}

.os-kinderen .os-band--blauw.os-na-slider {
	margin-top: 88px;
}

.os-foto-boven-kind {
	margin-top: 108px;
}

/* ---------- Children's page background ---------- */
.os-kinderen {
	background: url("assets/images/kinderen-achtergrond.png") repeat center top fixed;
}

/* ---------- Text page (privacy statement) ---------- */
.os-tekstpagina {
	width: 75%;
	margin-left: 16.6667%;
	padding: 50px 7px 30px 5px;
	box-sizing: border-box;
}

.os-tekstpagina p {
	margin: 0 0 24px;
}

.os-tekstpagina ul,
.os-tekstpagina ol {
	margin: 0 0 20px;
	padding-left: 22px;
	line-height: 25.6px;
}

/* ---------- Mobile (below 768px) ---------- */
@media (max-width: 767px) {
	:root {
		--os-header-h: 90px;
		--os-foto-h: calc(100vh - 70px);
	}

	.os-header {
		padding: 0 5px 0 20px;
	}

	.os-header .wp-block-site-logo img {
		width: 175px;
	}

	.os-afspraak {
		left: 25px;
		right: 25px;
		bottom: 15px;
		width: auto;
	}

	.os-intro {
		padding: 10px 0;
	}

	.os-intro__tekst {
		padding: 30px 20px 10px;
	}

	.os-intro h1 {
		margin: 0;
	}

	.os-intro h1 + h1 {
		margin-top: 20px;
	}

	.os-intro h1 + p {
		margin-top: 40px;
	}

	.os-intro p:first-of-type {
		margin-bottom: 24px;
	}

	.os-intro .wp-block-buttons {
		margin: 40px 0 20px;
	}

	.os-knop-groot {
		width: 100%;
	}

	.os-intro__foto {
		padding: 20px 15px 50px;
	}

	.os-band {
		--os-band-pad-top: 10px;
		--os-band-pad-bottom: 10px;
		--os-band-kol-bottom: 86px;
	}

	.os-kinderen .os-band--blauw {
		--os-band-kol-bottom: 86px;
	}

	.os-contact {
		--os-band-kol-top: 56px;
		--os-band-kol-bottom: 76px;
	}

	.os-contact > .wp-block-column:first-child {
		padding-bottom: 101px;
	}

	/* room below the last lines, so the fixed booking button never covers them */
	.os-band.os-voor-contact {
		padding-bottom: 100px;
	}

	.os-contact .wp-block-buttons {
		margin-top: 30px;
	}

	.os-foto-duo {
		gap: 1px !important;
	}

	.os-consult {
		padding: 76px 11px;
	}

	.os-zand,
	.os-kinderen .os-zand {
		padding: 54px 34px 160px;
	}

	.os-zand .wp-block-columns,
	.os-kinderen .os-zand .wp-block-columns {
		gap: 119px;
	}

	.os-tekstpagina {
		width: auto;
		margin-left: 0;
		padding: 86px 20px 30px;
	}
}

.os-main p.os-geen-witregel {
	margin-top: 0;
}
