/*
Theme Name: Multistarter
Theme URI: https://coursde.org
Author: The Lab XL
Author URI: https://coursde.org
Description: A lightweight, GDPR-compliant block theme for WordPress multisite. Zero JavaScript, bundled fonts, WooCommerce support, and 6 style variations. Built for blogs, shops, portfolios, and business sites.
Version: 1.0.8
Requires at least: 6.7
Tested up to: 6.7
Requires PHP: 8.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: multistarter
Tags: block-patterns, block-styles, custom-colors, custom-logo, custom-menu, editor-style, featured-images, full-site-editing, one-column, two-columns, three-columns, wide-blocks, translation-ready
*/

/* Progressive enhancement — only things theme.json can't handle */

/* Smooth scrolling for anchor links */
html {
	scroll-behavior: smooth;
}

/* Better image defaults */
img {
	height: auto;
	max-width: 100%;
}

/* Selection color using theme palette */
::selection {
	background-color: var(--wp--preset--color--accent-3);
	color: var(--wp--preset--color--contrast);
}

/* Table styling */
.wp-block-table table {
	border-collapse: collapse;
	width: 100%;
}

.wp-block-table td,
.wp-block-table th {
	border: 1px solid var(--wp--preset--color--contrast-3);
	padding: 0.5em 0.75em;
}

.wp-block-table thead {
	border-bottom: 2px solid var(--wp--preset--color--contrast);
}

/* Mobile hamburger menu button — bigger and easier to tap */
.wp-block-navigation__responsive-container-open {
	padding: 0.5em;
}

.wp-block-navigation__responsive-container-open svg {
	width: 32px;
	height: 32px;
}

/* Responsive navigation overlay */
.wp-block-navigation__responsive-container.is-menu-open {
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

/* Details/accordion block — used for FAQ pattern */
.wp-block-details summary {
	cursor: pointer;
	font-weight: 600;
	padding: 0.75em 0;
	list-style: none;
}

.wp-block-details summary::before {
	content: "+";
	display: inline-block;
	width: 1.5em;
	font-weight: 400;
	transition: transform 0.2s ease;
}

.wp-block-details[open] summary::before {
	content: "−";
}

.wp-block-details > :not(summary) {
	padding-bottom: 0.75em;
}

/* Separator with text */
.wp-block-separator.is-style-wide {
	border-bottom-width: 1px;
}

/* Cover block text readability */
.wp-block-cover .wp-block-cover__inner-container {
	max-width: var(--wp--style--global--wide-size);
}

/* Comment form */
.comment-respond .comment-form label {
	display: block;
	margin-bottom: 0.25em;
	font-weight: 500;
}

.comment-respond .comment-form input[type="text"],
.comment-respond .comment-form input[type="email"],
.comment-respond .comment-form input[type="url"],
.comment-respond .comment-form textarea {
	width: 100%;
	padding: 0.5em 0.75em;
	border: 1px solid var(--wp--preset--color--contrast-3);
	border-radius: 4px;
	font-family: inherit;
	font-size: inherit;
}

.comment-respond .comment-form input:focus,
.comment-respond .comment-form textarea:focus {
	border-color: var(--wp--preset--color--accent);
	outline: 2px solid var(--wp--preset--color--accent);
	outline-offset: -2px;
}

/* ── Hover effects ── */

/* Buttons — filled: strong brightness shift + lift */
.wp-block-button:not(.is-style-outline) .wp-block-button__link {
	transition: transform 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease;
}

.wp-block-button:not(.is-style-outline) .wp-block-button__link:hover {
	transform: translateY(-3px);
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
	filter: brightness(1.2);
}

/* Outline buttons — fill on hover */
.wp-block-button.is-style-outline .wp-block-button__link {
	transition: background-color 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.wp-block-button.is-style-outline .wp-block-button__link:hover {
	transform: translateY(-3px);
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
}

/* Navigation links — color transition + underline slides in on hover */
.wp-block-navigation a.wp-block-navigation-item__content {
	transition: color 0.2s ease;
	position: relative;
	text-decoration: none;
}

.wp-block-navigation a.wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	bottom: -4px;
	left: 50%;
	width: 0;
	height: 3px;
	background-color: var(--wp--preset--color--accent);
	border-radius: 2px;
	transition: width 0.2s ease, left 0.2s ease;
}

.wp-block-navigation a.wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--accent);
}

.wp-block-navigation a.wp-block-navigation-item__content:hover::after {
	width: 100%;
	left: 0;
}

/* Active/current page navigation link */
.wp-block-navigation .current-menu-item > a.wp-block-navigation-item__content,
.wp-block-navigation .current_page_item > a.wp-block-navigation-item__content {
	color: var(--wp--preset--color--accent);
	font-weight: 600;
}

.wp-block-navigation .current-menu-item > a.wp-block-navigation-item__content::after,
.wp-block-navigation .current_page_item > a.wp-block-navigation-item__content::after {
	width: 100%;
	left: 0;
}

/* Headings with links — accent color on hover */
.wp-block-heading a {
	transition: color 0.2s ease;
}

.wp-block-heading a:hover {
	color: var(--wp--preset--color--accent);
}

/* Social links — scale + opacity */
.wp-block-social-link {
	transition: transform 0.2s ease, opacity 0.2s ease;
}

.wp-block-social-link:hover {
	transform: scale(1.15);
	opacity: 0.75;
}

/* ── Mobile responsive fixes ── */
/* Logo sizing — height-driven so portrait & landscape logos look consistent */
.wp-block-site-logo img.custom-logo {
	width: auto;
	height: auto;
	min-height: 80px;
	max-height: 100px;
	max-width: 250px;
	object-fit: contain;
}

/* Mobile: columns always stack vertically */
@media (max-width: 781px) {
	.wp-block-columns,
	.wp-block-columns.is-not-stacked-on-mobile {
		flex-direction: column;
	}
	.wp-block-columns > .wp-block-column,
	.wp-block-columns.is-not-stacked-on-mobile > .wp-block-column {
		flex-basis: auto;
		flex-grow: 0;
	}
}

@media (max-width: 600px) {
	/* Mobile logo — capped both ways so all ratios look balanced */
	.wp-block-site-logo img.custom-logo {
		max-height: 120px;
		max-width: 45vw;
		width: auto;
	}

	/* Center the header flex row on mobile instead of space-between */
	.is-content-justification-space-between.is-layout-flex {
		justify-content: center;
		gap: 1.5rem;
	}

	/* Center the right-side nav group too */
	.is-content-justification-right.is-layout-flex {
		justify-content: center;
	}
}

/* Mobile menu overlay — centered, bigger, more readable links */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item a {
	font-size: 1.5rem;
	padding: 0.6em 0;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	padding-top: 2rem;
	gap: 0.25rem;
	--navigation-layout-justification-setting: center;
	justify-content: flex-start;
}

/* Override right-justification inside the overlay */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item {
	justify-content: center;
	text-align: center;
}

/* Buttons — always centered per theme design */
.wp-block-buttons {
	justify-content: center;
}

/* ── Portfolio page ── */

/* Hero nav pills */
.work-nav-pill {
	margin: 0;
}

.work-nav-pill a {
	display: inline-block;
	padding: 0.5em 1.4em;
	border: 1px solid rgba(255, 255, 255, 0.25);
	border-radius: 999px;
	color: rgba(255, 255, 255, 0.8);
	text-decoration: none;
	font-size: 0.85rem;
	font-weight: 500;
	letter-spacing: 0.02em;
	transition: all 0.25s ease;
}

.work-nav-pill a:hover {
	background: var(--wp--preset--color--accent);
	border-color: var(--wp--preset--color--accent);
	color: #fff;
}

/* Card base */
.portfolio-card {
	transition: transform 0.35s ease, box-shadow 0.35s ease;
	overflow: hidden;
}

.portfolio-card:hover {
	transform: translateY(-8px);
	box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.15);
}

/* Image container — hover zoom + gradient overlay */
.portfolio-card__image {
	position: relative;
	overflow: hidden;
}

.portfolio-card__image .wp-block-post-featured-image {
	overflow: hidden;
	display: block;
	line-height: 0;
}

.portfolio-card__image .wp-block-post-featured-image img {
	transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	display: block;
	width: 100%;
}

.portfolio-card:hover .portfolio-card__image .wp-block-post-featured-image img {
	transform: scale(1.06);
}

/* Gradient overlay on hover */
.portfolio-card__image::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.4) 0%, transparent 50%);
	opacity: 0;
	transition: opacity 0.35s ease;
	pointer-events: none;
	z-index: 1;
	border-radius: 12px 12px 0 0;
}

.portfolio-card:hover .portfolio-card__image::after {
	opacity: 1;
}

/* Title link — no underline */
.portfolio-card .wp-block-post-title a {
	text-decoration: none;
	color: var(--wp--preset--color--contrast);
	transition: color 0.2s ease;
}

.portfolio-card:hover .wp-block-post-title a {
	color: var(--wp--preset--color--accent);
}


/* Query grid gaps */
.wp-block-post-template.is-layout-grid {
	gap: 2rem !important;
}

/* Responsive — 2 cols on tablet, 1 on mobile for website grid */
@media (max-width: 781px) {
	.portfolio-card--grid .wp-block-post-featured-image img {
		aspect-ratio: 16/10;
		object-fit: cover;
	}
}

/* ── Case Study / Work Single ── */

/* Deliverables grid cards */
.case-study__deliverables .wp-block-column {
	background: var(--wp--preset--color--base-2);
	border-radius: 12px;
	padding: 1.5rem;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.case-study__deliverables .wp-block-column:hover {
	transform: translateY(-4px);
	box-shadow: 0 12px 24px -8px rgba(0, 0, 0, 0.1);
}

/* Emoji icon in deliverable cards */
.case-study__deliverables .wp-block-column .deliverable-icon {
	font-size: 2rem;
	line-height: 1;
	margin-bottom: 0.5rem;
}

/* Tech stack styled table */
.case-study .case-study__stack table {
	border: none;
	border-collapse: separate;
	border-spacing: 0;
	border-radius: 12px;
	overflow: hidden;
	box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.07);
}

.case-study .case-study__stack td {
	border: none;
	border-bottom: 1px solid var(--wp--preset--color--accent-3);
	padding: 0.85em 1.25em;
}

.case-study .case-study__stack tr:last-child td {
	border-bottom: none;
}

.case-study .case-study__stack tr:nth-child(even) td {
	background-color: var(--wp--preset--color--base-2);
}

.case-study .case-study__stack td:first-child {
	font-weight: 600;
	white-space: nowrap;
	width: 180px;
	color: var(--wp--preset--color--contrast);
}

/* Visit website button — prominent */
.case-study .wp-block-buttons .wp-block-button__link {
	font-size: 1rem;
	padding: 1em 2.5em;
}

/* Section dividers within case study */
.case-study__section-label {
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--contrast-3);
}

/* Stats row inside case study */
.case-study__stats .wp-block-column {
	text-align: center;
	padding: 1.5rem 1rem;
}

.case-study__stats .stat-number {
	font-size: 2.5rem;
	font-weight: 700;
	line-height: 1;
	color: var(--wp--preset--color--contrast);
}

/* Highlight box for key info */
.case-study__highlight {
	border-left: 4px solid var(--wp--preset--color--contrast);
	padding-left: 1.5rem;
}

/* Print styles */
/* Map fills remaining column space */
.wp-block-column:has(> iframe) {
	display: flex;
	flex-direction: column;
}
.wp-block-column > iframe {
	flex: 1;
	width: calc(100% - 1rem);
	margin: 0.5rem;
	min-height: 200px;
	border-radius: 8px;
}

@media print {
	.wp-block-navigation,
	.wp-block-template-part[data-area="header"],
	.wp-block-template-part[data-area="footer"] {
		display: none !important;
	}
}

/* ── Modern AI/Tech Design Refresh ── */


/* Glassmorphism service cards */
.has-base-2-background-color .wp-block-column,
.wp-block-group[style*="background-color:#f1f5f9"] .wp-block-column {
	background: rgba(255, 255, 255, 0.65);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	border: 1px solid rgba(255, 255, 255, 0.4);
	border-radius: 16px;
	padding: 2rem;
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.has-base-2-background-color .wp-block-column:hover,
.wp-block-group[style*="background-color:#f1f5f9"] .wp-block-column:hover {
	transform: translateY(-4px);
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.1);
}

/* Scroll-triggered fade-in animations (modern CSS) */
@keyframes fadeInUp {
	from {
		opacity: 0;
		transform: translateY(30px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@supports (animation-timeline: view()) {
	.wp-block-group.alignfull,
	.wp-block-cover.alignfull,
	.wp-block-media-text {
		animation: fadeInUp ease both;
		animation-timeline: view();
		animation-range: entry 0% entry 30%;
	}
}

/* Heading letter-spacing for tech feel */
.wp-block-heading,
h1, h2, h3 {
	letter-spacing: -0.02em;
}

h4, h5, h6 {
	letter-spacing: -0.01em;
}

/* Headings on dark/contrast backgrounds — theme.json sets every heading
   to color:contrast, which renders blue-on-blue inside a group with
   has-contrast-background-color. Inherit instead so the parent's
   text color (e.g. has-base-color = white) wins. */
.has-contrast-background-color :is(h1, h2, h3, h4, h5, h6),
.has-contrast-background-color :is(h1, h2, h3, h4, h5, h6).wp-block-heading {
	color: inherit;
}



/* Modern focus ring on interactive elements */
a:focus-visible,
button:focus-visible,
.wp-block-button__link:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent);
	outline-offset: 3px;
	border-radius: 4px;
}

/* =====================================================
   Button enhancements (transform/shine/glow) — lives
   here so it loads on frontend AND in the block editor
   via add_editor_style('style.css').
   ===================================================== */
.wp-block-button .wp-block-button__link{position:relative;overflow:hidden;transition:transform .28s cubic-bezier(.22,.9,.3,1.2),box-shadow .28s ease,background .28s ease,border-color .28s ease,color .28s ease,letter-spacing .28s ease;box-shadow:0 10px 28px rgba(12,22,60,.28),0 2px 6px rgba(12,22,60,.14),inset 0 1px 0 rgba(255,255,255,.9)}
.wp-block-button .wp-block-button__link::before{content:"";position:absolute;top:0;left:-120%;width:60%;height:100%;background:linear-gradient(115deg,transparent 0%,rgba(255,255,255,.55) 50%,transparent 100%);transform:skewX(-18deg);transition:left .7s cubic-bezier(.2,.7,.2,1);pointer-events:none;z-index:1}
.wp-block-button .wp-block-button__link:hover::before{left:140%}
.wp-block-button .wp-block-button__link:hover{transform:translateY(-4px) scale(1.035);letter-spacing:.03em;box-shadow:0 22px 50px rgba(12,22,60,.4),0 8px 18px rgba(12,22,60,.22),0 0 0 3px rgba(255,255,255,.25),0 0 40px rgba(6,182,212,.55),inset 0 1px 0 rgba(255,255,255,1)}
.wp-block-button .wp-block-button__link:active{transform:translateY(-1px) scale(1.01);transition-duration:.08s}

/* White-background buttons: text turns cyan on hover (readable on white) */
.wp-block-button__link.has-base-background-color:hover{color:var(--wp--preset--color--accent)}

/* Cyan CTA variant keeps its color on hover */
.wp-block-button__link.has-vivid-cyan-blue-background-color{box-shadow:0 6px 18px rgba(6,147,227,.3)}
.wp-block-button__link.has-vivid-cyan-blue-background-color:hover{box-shadow:0 14px 36px rgba(6,147,227,.5),0 0 24px rgba(6,147,227,.4)}

/* Cyan filled buttons: always keep text white (at rest AND on hover) */
.wp-block-button__link.has-vivid-cyan-blue-background-color,
.wp-block-button__link.has-vivid-cyan-blue-background-color:hover{color:#fff}

/* Outline variant — LIGHT context (default: on white/light cards) */
.wp-block-button.is-style-outline .wp-block-button__link{background:transparent;color:var(--wp--preset--color--accent);border:1.5px solid var(--wp--preset--color--accent);box-shadow:none}
.wp-block-button.is-style-outline .wp-block-button__link:hover{background:var(--wp--preset--color--accent);color:#fff;border-color:var(--wp--preset--color--accent);box-shadow:0 14px 36px rgba(8,145,178,.35),0 0 24px rgba(8,145,178,.3)}

/* Outline variant — DARK context (hero cover, dark CTA section) uses glass/white */
.wp-block-cover .wp-block-button.is-style-outline .wp-block-button__link,
.wp-block-group[style*="1e293b"] .wp-block-button.is-style-outline .wp-block-button__link{background:rgba(255,255,255,.12);color:#fff;border:1.5px solid rgba(255,255,255,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:inset 0 1px 0 rgba(255,255,255,.2)}
.wp-block-cover .wp-block-button.is-style-outline .wp-block-button__link:hover,
.wp-block-group[style*="1e293b"] .wp-block-button.is-style-outline .wp-block-button__link:hover{background:rgba(255,255,255,.22);border-color:#fff;color:#fff;box-shadow:0 22px 50px rgba(0,0,0,.3),0 0 0 3px rgba(255,255,255,.18),0 0 40px rgba(255,255,255,.35),inset 0 1px 0 rgba(255,255,255,.5)}

/* Equal-height cards with button aligned at the bottom */
.wp-block-columns .wp-block-column:has(.wp-block-group.is-style-card){display:flex;align-items:stretch}
.wp-block-columns .wp-block-column > .wp-block-group.is-style-card{flex:1}
.wp-block-group.is-style-card{display:flex;flex-direction:column}
.wp-block-group.is-style-card > .wp-block-buttons:last-child,
.wp-block-group.is-style-card > *:last-child.wp-block-buttons{margin-top:auto}

/* Work nav pills inside the hero gradient card — readable on cyan/purple bg */
.wp-block-cover .work-nav{margin-top:1.25rem}
.wp-block-cover .work-nav-pill{margin:0}
.wp-block-cover .work-nav-pill a{display:inline-block;color:#fff;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.4);padding:.4em 1em;border-radius:9999px;font-size:.85rem;font-weight:500;text-decoration:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .2s ease,border-color .2s ease,transform .2s ease}
.wp-block-cover .work-nav-pill a:hover{background:rgba(255,255,255,.28);border-color:#fff;color:#fff;transform:translateY(-1px)}

/* Contact Form 7 submit button — match the Gutenberg button design */
.wpcf7 input[type="submit"]{
  position:relative;overflow:hidden;
  background:var(--wp--preset--color--accent);
  color:var(--wp--preset--color--base);
  border:1px solid var(--wp--preset--color--accent);
  border-radius:8px;
  font-weight:600;letter-spacing:0.02em;
  padding:0.9em 2em;
  box-shadow:0 10px 28px rgba(12,22,60,.28),0 2px 6px rgba(12,22,60,.14),inset 0 1px 0 rgba(255,255,255,.9);
  transition:transform .28s cubic-bezier(.22,.9,.3,1.2),box-shadow .28s ease,color .28s ease,letter-spacing .28s ease;
}
.wpcf7 input[type="submit"]:hover{
  background:var(--wp--preset--color--accent-2);
  color:var(--wp--preset--color--base);
  transform:translateY(-4px) scale(1.035);
  letter-spacing:0.03em;
  box-shadow:0 22px 50px rgba(12,22,60,.4),0 8px 18px rgba(12,22,60,.22),0 0 0 3px rgba(255,255,255,.25),0 0 40px rgba(6,182,212,.55),inset 0 1px 0 rgba(255,255,255,1);
}
.wpcf7 input[type="submit"]:active{transform:translateY(-1px) scale(1.01);transition-duration:.08s}

/* Mobile overlay menu — submenu items must stay readable on the dark overlay.
   Overrides the desktop white-dropdown treatment when the menu is open. */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.has-background{
  background-color:transparent !important;
  color:var(--wp--preset--color--base) !important;
  border:0 !important;
  box-shadow:none !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover{
  color:var(--wp--preset--color--base) !important;
}

/* Header layout — let the nav fill the remaining space so its items sit centered in that space */
.site-header > .wp-block-navigation{flex:1;justify-content:center}
/* Small right-side counterbalance so nav centers optically relative to the full header, not offset by the logo */
.site-header::after{content:"";flex-basis:100px;flex-shrink:0}
@media (max-width:781px){.site-header::after{display:none}}

/* ===== Mobile overlay menu polish (applies to all sites using this theme) ===== */

/* Slightly transparent frosted backdrop */
.wp-block-navigation__responsive-container.is-menu-open{
  background-color:rgba(14,20,33,.92) !important;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}

/* Center every menu item horizontally */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container{
  align-items:center !important;
  justify-content:flex-start !important;
  text-align:center;
  width:100% !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item{
  width:auto;display:flex;flex-direction:column;align-items:center
}

/* Close (X) button — bigger, better-placed */
.wp-block-navigation__responsive-container-close{
  top:.5rem !important;
  right:.75rem !important;
  padding:.75rem !important;
}
.wp-block-navigation__responsive-container-close svg{
  width:34px !important;height:34px !important;
}

/* Submenu items smaller than top-level */
.wp-block-navigation__responsive-container.is-menu-open .has-child .wp-block-navigation__submenu-container{
  padding:.25rem 0 !important;
  gap:.35rem !important;
}
.wp-block-navigation__responsive-container.is-menu-open .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content{
  font-size:.9rem !important;
  font-weight:400 !important;
  opacity:.85;
}

/* ===== Mobile overlay menu — tighter polish ===== */

/* Generous breathing room around the whole menu */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{
  padding:4rem 1.5rem 3rem !important;
  gap:1.5rem;
  min-height:100vh;
  justify-content:center !important;
}

/* Top-level nav list: column stack, each item centered */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container{
  flex-direction:column !important;
  gap:1.25rem !important;
  width:100%;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item{
  width:100%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
}

/* Top-level link: bigger + bolder */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content{
  font-size:1.35rem !important;
  font-weight:600 !important;
  letter-spacing:-.01em;
  padding:.3em .6em;
}

/* Submenu container — force center alignment, stack column, smaller gap */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container{
  position:static !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  width:100% !important;
  min-width:0 !important;
  gap:.6rem !important;
  padding:.5rem 0 0 !important;
  margin:0 !important;
  text-align:center !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item{
  width:auto !important;
  padding:0 !important;
  display:flex;justify-content:center;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content{
  font-size:1rem !important;
  font-weight:400 !important;
  padding:.2em .5em !important;
  opacity:.85;
  text-align:center;
}

/* Hide submenu open/close toggles (unnecessary on overlay since everything's visible) */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-icon{display:none !important}

/* Overlay menu typography — readable sizes, proper hierarchy */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content{
  font-size:2rem !important;
  font-weight:700 !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content{
  font-size:1.35rem !important;
  font-weight:500 !important;
  opacity:.9;
}

/* Force submenu item size — target the anchor tag directly with full specificity */
.wp-block-navigation__responsive-container.is-menu-open ul.wp-block-navigation__submenu-container li.wp-block-navigation-item a.wp-block-navigation-item__content,
.wp-block-navigation__responsive-container.is-menu-open ul.wp-block-navigation__submenu-container li.wp-block-navigation-item span.wp-block-navigation-item__content,
.wp-block-navigation__responsive-container.is-menu-open .has-child ul.wp-block-navigation__submenu-container a,
.wp-block-navigation__responsive-container.is-menu-open .has-child ul.wp-block-navigation__submenu-container span{
  font-size:1.35rem !important;
  font-weight:500 !important;
  line-height:1.4 !important;
  opacity:.9 !important;
}

/* ===== Mobile overlay menu — FILLS the screen + adapts to item count (fleet-wide, pure CSS, no JS) =====
   Items are distributed across the FULL height (space-evenly) so the menu always fills the screen
   instead of clustering with empty space. The link size stays large by default and only shrinks for
   very long menus, so everything fits without scrolling whatever the page count. */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{
  display:flex !important;
  flex-direction:column !important;
  justify-content:flex-start !important;
  align-items:center !important;
  padding:3rem 1.25rem 2.25rem !important;
  gap:0 !important;
  min-height:100svh !important;
  max-height:100svh;
  overflow-y:auto;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container{
  flex:1 1 auto !important;
  display:flex !important;
  flex-direction:column !important;
  justify-content:space-evenly !important;
  align-items:center !important;
  gap:0 !important;
  width:100%;
}
/* Top-level link size: large by default; only shrinks for long menus. */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content{
  font-size:clamp(1.6rem,5.5vh,2.3rem) !important;
  padding:.12em .5em !important;
  line-height:1.1 !important;
}
/* 9+ top-level items → a notch smaller. */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:first-child:nth-last-child(n+9) > .wp-block-navigation-item__content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:first-child:nth-last-child(n+9) ~ .wp-block-navigation-item > .wp-block-navigation-item__content{
  font-size:clamp(1.35rem,4.4vh,1.95rem) !important;
}
/* 12+ items → smaller. */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:first-child:nth-last-child(n+12) > .wp-block-navigation-item__content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:first-child:nth-last-child(n+12) ~ .wp-block-navigation-item > .wp-block-navigation-item__content{
  font-size:clamp(1.15rem,3.6vh,1.6rem) !important;
}
/* 15+ items → tightest. */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:first-child:nth-last-child(n+15) > .wp-block-navigation-item__content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:first-child:nth-last-child(n+15) ~ .wp-block-navigation-item > .wp-block-navigation-item__content{
  font-size:clamp(1rem,2.9vh,1.35rem) !important;
}

/* Header side padding — more breathing room on edges (desktop and mobile) */
.site-header{padding-left:var(--wp--preset--spacing--50) !important;padding-right:var(--wp--preset--spacing--50) !important}
@media (max-width:600px){.site-header{padding-left:var(--wp--preset--spacing--40) !important;padding-right:var(--wp--preset--spacing--40) !important}}


/* Site logo — ensure a sensible minimum so it's always visible regardless of intrinsic image size */
.wp-block-site-logo img.custom-logo{min-width:110px;min-height:40px}
@media (max-width:600px){.wp-block-site-logo img.custom-logo{min-width:100px;min-height:36px}}

/* Buttons default to centered unless the block explicitly sets left/right/space-between */
.wp-block-buttons:not(.is-content-justification-left):not(.is-content-justification-right):not(.is-content-justification-space-between){
  justify-content:center
}

/* ===== SCROLL-REVEAL ANIMATIONS =====
   Paired with assets/js/reveal.js. Reduce-motion users get a gentle
   opacity fade only; everyone else gets translate/scale/blur variants.

   All rules are scoped under html.js-ready (set by an inline script in
   <head> via wp_head priority 1). Without that class, content stays
   visible — no-JS / pre-JS users never see hidden content.

   Pre-hide of likely-revealed top-level blocks prevents the FOUC where
   content paints visible, JS tags it, CSS hides it, then animates it back.
*/
/* Pre-hide rules removed — they hid more than reveal.js could un-hide,
   leaving content stranded at opacity:0. Brief FOUC on reveal-eligible
   elements is preferred over invisible content. The .js-ready-scoped
   [data-reveal] rules below still gate visibility on JS being live. */


html.js-ready [data-reveal]{opacity:0;transition:opacity .65s ease;will-change:opacity}
html.js-ready [data-reveal].is-in{opacity:1}

@media (prefers-reduced-motion: no-preference){
  html.js-ready [data-reveal]{transform:translate3d(0,28px,0);transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1),filter .85s ease;will-change:opacity,transform}
  html.js-ready [data-reveal="left"]{transform:translate3d(-36px,0,0)}
  html.js-ready [data-reveal="right"]{transform:translate3d(36px,0,0)}
  html.js-ready [data-reveal="scale"]{transform:scale(.94);transform-origin:center}
  html.js-ready [data-reveal="blur"]{transform:translate3d(0,20px,0);filter:blur(8px)}
  html.js-ready [data-reveal].is-in{transform:none;filter:none}
}
/* Latest Posts block — featured image should fill its grid cell, not be capped at the medium thumbnail width (300px) */
.wp-block-latest-posts__featured-image a,
.wp-block-latest-posts__featured-image img {
  display: block;
  width: 100%;
  height: auto;
}

/* Latest Posts block — center title and excerpt to match centered featured image */
.wp-block-latest-posts__list li {
  text-align: center;
}
.wp-block-latest-posts__post-title {
  display: block;
}

/* Latest Posts block — make post titles actually look like titles */
.wp-block-latest-posts__post-title {
  font-size: 1.35rem;
  font-weight: 700;
  line-height: 1.3;
  margin: 1rem 0 0.5rem;
  text-decoration: none;
  color: inherit;
}
.wp-block-latest-posts__post-title:hover {
  text-decoration: underline;
}
.wp-block-latest-posts__post-excerpt {
  margin-top: 0.25rem;
}
