/* Hallmark · genre: editorial · macrostructure: Marquee Hero
 * audience: 木津川市加茂町の保護者・生徒 · use: 無料体験・相談 · tone: quiet, local, studious
 * anchor: Gakujikan red · theme: warm paper + charcoal · nav: N6 · footer: Ft1
 * pre-emit critique: P5 H5 E5 S5 R5 V5 · contrast: pass (40–41) · slop: pass (42–45)
 * honest: pass (46) · chrome: pass (47) · tokens: pass (48) · responsive: pass (49) · icons: pass (30) · mobile: pass (34, 49, 50–57)
 */

@import url("tokens.css?ver=1.4.70");

/**
 * Gakujikan theme presentation layer.
 *
 * The site is intentionally built with core blocks. These classes provide
 * reusable art direction without locking content into custom blocks.
 */

@font-face {
	font-family: "Gakujikan Noto Serif";
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url("../fonts/noto-serif-jp-gakujikan.ttf") format("truetype");
	unicode-range: U+5B66, U+800C, U+9928;
}

:root {
	--gk-header-height: 5.75rem;
	--gk-mobile-cta-height: 4.625rem;
	--gk-gutter: clamp(1.125rem, 4vw, 2rem);
	--gk-section-space: clamp(4.5rem, 8vw, 7rem);
	--gk-card-shadow: var(--shadow-card);
	--gk-card-shadow-hover: var(--shadow-card-hover);
	--gk-action-icon-shadow: var(--shadow-icon);
	--gk-action-icon-size: 1.75rem;
	--gk-radius-small: var(--radius-input);
	--gk-radius: var(--radius-card);
	--gk-radius-large: var(--radius-media);
	--gk-surface-quiet: var(--color-paper-2);
	--gk-surface-card: var(--color-surface);
	--gk-text-main: var(--color-ink);
	--gk-text-muted: var(--color-muted);
	--gk-border: var(--color-rule);
	--gk-ease-out: var(--ease-out);
	--gk-transition: var(--dur-short) var(--gk-ease-out);
}

html {
	overflow-x: clip;
	scroll-padding-top: calc(var(--gk-header-height) + 1.25rem);
}

body {
	overflow-x: clip;
	background: var(--color-paper);
	color: var(--color-ink);
	font-family: var(--font-body);
	font-size: var(--text-base);
	line-height: 1.85;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

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

:where(main) {
	overflow: clip;
}

:where(main) :where(h1, h2, h3, h4, h5, h6) {
	min-width: 0;
	scroll-margin-top: calc(var(--gk-header-height) + 1.25rem);
	font-family: var(--font-display);
	font-style: normal;
	letter-spacing: -0.018em;
	overflow-wrap: anywhere;
	text-wrap: balance;
}

:where(main) p {
	color: var(--color-ink-2);
	text-wrap: pretty;
}

:where(a, button, input, select, textarea, summary):focus-visible {
	outline: 3px solid var(--wp--preset--color--cyan-dark);
	outline-offset: 3px;
}

:where(a) {
	text-decoration-thickness: 0.08em;
	text-underline-offset: 0.2em;
}

:where(img) {
	height: auto;
}

.screen-reader-text:focus {
	z-index: 100000;
	display: block;
	inset: 0 auto auto 0;
	width: auto;
	height: auto;
	padding: 0.75rem 1rem;
	clip: auto !important;
	clip-path: none;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	font-size: 0.875rem;
	font-weight: 700;
}

/* Header and navigation */

.gk-site-header {
	position: sticky;
	z-index: 1000;
	top: 0;
	border-bottom: 1px solid var(--color-rule);
	background: color-mix(in oklab, var(--color-surface) 94%, transparent);
	box-shadow: 0 0.25rem 1.25rem color-mix(in oklab, var(--color-ink) 6%, transparent);
	-webkit-backdrop-filter: blur(0.75rem);
	backdrop-filter: blur(0.75rem);
}

.admin-bar .gk-site-header {
	top: 32px;
}

.gk-header-inner {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	gap: clamp(1rem, 2.4vw, 2rem);
	align-items: center;
	min-height: var(--gk-header-height);
}

.gk-wordmark,
.gk-wordmark a {
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}

.gk-wordmark {
	display: inline-flex;
	flex: 0 0 auto;
	flex-direction: column;
	gap: 0;
	align-items: flex-start;
	line-height: 1;
	white-space: nowrap;
}

.gk-wordmark > * {
	margin: 0;
}

.gk-wordmark-kanji {
	font-family: var(--font-outlier);
	font-size: clamp(1.75rem, 2.8vw, 2.35rem);
	font-weight: 500;
	letter-spacing: 0.08em;
	line-height: 1.05;
}

.gk-wordmark-roman {
	margin-top: 0.2rem;
	color: var(--wp--preset--color--slate);
	font-family: var(--wp--preset--font-family--roman);
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.32em;
	line-height: 1;
}

.gk-site-header .gk-wordmark-kanji {
	font-size: clamp(2.6rem, 4.2vw, 3.5rem);
	letter-spacing: 0.055em;
	line-height: 1;
}

.gk-site-header .gk-wordmark-roman {
	font-size: 0.72rem;
	letter-spacing: 0.34em;
}

.gk-main-navigation {
	justify-self: end;
}

.gk-main-navigation .wp-block-navigation-item__content {
	position: relative;
	padding-block: 0.55rem;
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}

.gk-main-navigation .wp-block-navigation-item__content::after {
	position: absolute;
	right: 0;
	bottom: 0.15rem;
	left: 0;
	height: 2px;
	content: "";
	background: var(--wp--preset--color--brand-red);
	transform: scaleX(0);
	transform-origin: right;
	transition: transform var(--gk-transition);
}

.gk-main-navigation .current-menu-item > .wp-block-navigation-item__content,
.gk-main-navigation .wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--red-dark);
}

.gk-main-navigation .current-menu-item > .wp-block-navigation-item__content::after,
.gk-main-navigation .wp-block-navigation-item__content:hover::after {
	transform: scaleX(1);
	transform-origin: left;
}

.gk-main-navigation .wp-block-navigation__submenu-container {
	min-width: 14rem !important;
	padding: 0.65rem !important;
	border: 1px solid var(--wp--preset--color--line) !important;
	border-radius: var(--gk-radius-small);
	background: var(--wp--preset--color--white) !important;
	box-shadow: var(--gk-card-shadow);
}

.gk-main-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 0.65rem 0.75rem;
	border-radius: 0.35rem;
}

.gk-main-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
	background: var(--wp--preset--color--paper);
}

.gk-header-actions {
	display: flex;
	gap: 0.625rem;
	align-items: center;
}

.gk-header-cta,
.gk-header-cta .wp-block-button__link {
	white-space: nowrap;
}

.gk-header-cta .wp-block-button__link {
	min-height: 2.75rem;
	padding: 0.65rem 1rem;
	font-size: 0.8125rem;
}

.gk-header-cta--secondary .wp-block-button__link {
	border-color: var(--wp--preset--color--cyan-dark);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--cyan-dark);
}

.gk-header-cta--primary .wp-block-button__link {
	border-color: var(--wp--preset--color--red-dark);
	background: var(--wp--preset--color--red-dark);
	color: var(--wp--preset--color--white);
}

.wp-block-navigation__responsive-container-open,
.wp-block-navigation__responsive-container-close {
	min-width: 2.75rem;
	min-height: 2.75rem;
	justify-content: center;
	align-items: center;
	border: 2px solid var(--wp--preset--color--ink);
	border-radius: 999px;
	color: var(--wp--preset--color--ink);
}

/* Buttons */

.wp-element-button,
.wp-block-button__link {
	display: inline-flex;
	gap: 0.5rem;
	min-height: 3rem;
	justify-content: center;
	align-items: center;
	transition:
		background-color var(--gk-transition),
		border-color var(--gk-transition),
		color var(--gk-transition),
		transform var(--gk-transition),
		box-shadow var(--gk-transition);
}

.wp-element-button,
.wp-block-button__link {
	border-radius: var(--radius-button);
}

/* WordPress global styles may emit a zero-radius rule after theme.json.
 * Keep the shared 10px control shape across primary and outline CTAs. */
:root .wp-block-button .wp-block-button__link {
	border-radius: var(--radius-button);
}

/*
 * Use the supplied, app-style artwork as a quick visual cue. The text remains
 * the accessible name, so these images are intentionally decorative.
 */
.wp-block-button__link:is([href="/contact/"], [href$="/contact/"])::before,
.wp-block-button__link:is([href="/trial/"], [href$="/trial/"])::before {
	display: block;
	flex: 0 0 var(--gk-action-icon-size);
	width: var(--gk-action-icon-size);
	height: var(--gk-action-icon-size);
	border-radius: var(--gk-radius-small);
	content: "";
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
	box-shadow: var(--gk-action-icon-shadow);
}

.wp-block-button__link:is([href="/contact/"], [href$="/contact/"], [href="/trial/"], [href$="/trial/"]) {
	white-space: nowrap;
}

.wp-block-button__link:is([href="/contact/"], [href$="/contact/"])::before {
	background-image: url("../images/icon-contact-form.png");
}

.wp-block-button__link:is([href="/trial/"], [href$="/trial/"])::before {
	background-image: url("../images/icon-test-preparation.png");
}

.gk-header-cta .wp-block-button__link {
	--gk-action-icon-size: 1.5rem;
}

.wp-block-button__link:active {
	box-shadow: none;
	transform: translateY(0);
}

.wp-block-button__link[aria-disabled="true"] {
	cursor: not-allowed;
	opacity: 0.55;
	pointer-events: none;
}

.wp-block-button__link[aria-busy="true"]::before {
	opacity: 0.55;
}

.wp-block-button__link[data-state="error"] {
	border-color: var(--wp--preset--color--red-dark);
}

.wp-block-button__link[data-state="success"] {
	border-color: var(--wp--preset--color--cyan-dark);
}

.wp-element-button:hover,
.wp-block-button__link:hover {
	border-color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--white);
	box-shadow: var(--shadow-button);
	transform: translateY(-1px);
}

.wp-block-button.is-style-outline > .wp-block-button__link {
	border-color: currentColor;
	background: transparent;
	color: var(--wp--preset--color--cyan-dark);
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--cyan-dark);
	background: var(--wp--preset--color--cyan-dark);
	color: var(--wp--preset--color--white);
}

.wp-block-button.is-style-gk-cyan > .wp-block-button__link {
	border-color: var(--wp--preset--color--cyan-dark);
	background: var(--wp--preset--color--cyan-dark);
	color: var(--wp--preset--color--white);
}

.wp-block-button.is-style-gk-cyan > .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--ink);
}

.gk-button-row {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	align-items: center;
}

/* Hero areas */

.gk-hero,
.gk-page-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
}

.gk-hero {
	min-height: min(46rem, calc(100svh - var(--gk-header-height)));
	padding-block: clamp(4rem, 7vw, 7.5rem);
	background:
		linear-gradient(118deg, color-mix(in oklab, var(--color-accent) 7%, transparent) 0 20%, transparent 20% 100%),
		linear-gradient(145deg, transparent 0 79%, color-mix(in oklab, var(--color-action) 4%, transparent) 79% 100%),
		var(--color-surface);
}

.gk-hero::before,
.gk-page-hero::before {
	position: absolute;
	z-index: -1;
	top: -10rem;
	right: -11rem;
	width: clamp(18rem, 40vw, 38rem);
	height: clamp(18rem, 40vw, 38rem);
	content: "";
	background:
		linear-gradient(139deg, transparent 0 42%, var(--wp--preset--color--brand-red) 42% 51%, transparent 51%),
		linear-gradient(125deg, transparent 0 53%, var(--color-decoration-blue) 53% 61%, transparent 61%);
	opacity: 0.3;
	transform: rotate(4deg);
}

.gk-hero::after {
	position: absolute;
	z-index: -1;
	right: -8%;
	bottom: 1.75rem;
	width: 48%;
	height: 0.2rem;
	content: "";
	background: var(--color-rule-2);
	transform: rotate(-6deg);
	transform-origin: right;
}

.gk-hero__content {
	position: relative;
	z-index: 2;
	max-width: 42rem;
}

.gk-hero__inner {
	gap: clamp(2rem, 5vw, 4.5rem);
}

.gk-hero__content h1 {
	margin-block: 0.85rem 1.25rem;
}

.gk-hero__content h1 strong {
	color: var(--wp--preset--color--red-dark);
}

.gk-hero__visual {
	position: relative;
	z-index: 1;
}

.gk-hero__brand-image {
	margin: 0;
}

.gk-hero__photo {
	margin: 0;
}

.gk-hero__visual::after {
	position: absolute;
	z-index: -1;
	right: -1rem;
	bottom: -1rem;
	width: 72%;
	height: 55%;
	border-radius: var(--gk-radius-large);
	content: "";
	background: var(--color-paper-3);
	clip-path: polygon(18% 0, 100% 0, 100% 100%, 0 100%);
}

.gk-hero__visual :where(img, .wp-block-cover) {
	width: 100%;
	aspect-ratio: 4 / 3;
	border-radius: var(--radius-media);
	box-shadow: var(--gk-card-shadow-hover);
	object-fit: cover;
}

.gk-hero__message {
	position: absolute;
	z-index: 2;
	bottom: 1.25rem;
	left: -1.5rem;
	width: min(82%, 20rem);
	padding: 1.15rem 1.35rem;
	border: 1px solid var(--color-rule);
	border-radius: var(--gk-radius);
	background: color-mix(in oklab, var(--color-surface) 97%, transparent);
	box-shadow: var(--gk-card-shadow);
	-webkit-backdrop-filter: blur(0.5rem);
	backdrop-filter: blur(0.5rem);
}

.gk-hero__message > * {
	margin-block: 0;
}

.gk-hero__message h2 {
	margin-top: 0.35rem;
	font-size: clamp(1.45rem, 3vw, 2.15rem);
}

/* Photographic teaching imagery */

.gk-photo-frame {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	margin: 0;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--gk-radius);
	background: var(--wp--preset--color--mist);
	box-shadow: var(--gk-card-shadow);
}

.gk-photo-frame img {
	display: block;
	width: 100%;
	height: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.gk-photo-frame--hero {
	border: 1px solid var(--color-rule);
	border-radius: var(--radius-media);
	box-shadow: var(--gk-card-shadow-hover);
}

.gk-photo-frame--hero img {
	aspect-ratio: 4 / 3;
	border-radius: inherit;
	box-shadow: none;
}

.gk-photo-frame--group img {
	object-position: 55% center;
}

.gk-photo-frame--individual img {
	object-position: center 48%;
}

.gk-photo-frame--feature {
	margin-top: 1.5rem;
}

.gk-photo-frame--course {
	margin: calc(clamp(1.35rem, 3vw, 2rem) * -1);
	margin-bottom: 1.5rem;
	border: 0;
	border-radius: var(--gk-radius) var(--gk-radius) 0 0;
	box-shadow: none;
}

.gk-photo-frame--course img {
	aspect-ratio: 16 / 8;
	border-radius: 0;
}

.gk-media-caption {
	position: absolute;
	z-index: 2;
	top: 0.75rem;
	right: 0.75rem;
	margin: 0;
	padding: 0.35rem 0.65rem;
	border: 1px solid rgba(21, 25, 28, 0.12);
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.94);
	box-shadow: 0 0.35rem 1rem rgba(15, 31, 40, 0.12);
	color: var(--wp--preset--color--ink);
	font-size: 0.75rem;
	font-weight: 700;
	line-height: 1.3;
}

.gk-page-hero {
	padding-block: clamp(3.5rem, 7vw, 6rem);
	background:
		linear-gradient(110deg, var(--color-paper-2), var(--color-surface) 72%);
}

.gk-page-hero::after {
	position: absolute;
	z-index: -1;
	right: -4rem;
	bottom: -2rem;
	width: 45%;
	height: 0.16rem;
	content: "";
	background: var(--color-rule-2);
	transform: rotate(-5deg);
}

.gk-page-hero > * {
	position: relative;
	z-index: 1;
}

.gk-page-hero h1 {
	margin-block: 0.5rem 0;
}

.gk-eyebrow {
	display: inline-flex;
	gap: 0.55rem;
	align-items: center;
	margin: 0;
	color: var(--wp--preset--color--red-dark);
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	line-height: 1.5;
}

.gk-eyebrow::before {
	display: block;
	width: 1.65rem;
	height: 0.25rem;
	content: "";
	background: linear-gradient(
		90deg,
		var(--color-decoration-blue) 0 42%,
		transparent 42% 51%,
		var(--wp--preset--color--brand-red) 51% 100%
	);
	transform: skewX(-25deg);
}

.gk-badges {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-block: 1.25rem;
}

.gk-badge,
.gk-chip {
	display: inline-flex;
	min-height: 2rem;
	padding: 0.35rem 0.75rem;
	justify-content: center;
	align-items: center;
	border: 1px solid color-mix(in oklab, var(--color-accent) 24%, transparent);
	border-radius: 999px;
	background: var(--wp--preset--color--mist);
	color: var(--wp--preset--color--cyan-dark);
	font-size: 0.8125rem;
	font-weight: 700;
	line-height: 1.35;
}

/* Sections and layout utilities */

.gk-section,
.is-style-gk-section-soft,
.is-style-gk-section-dark {
	padding-block: var(--gk-section-space);
}

.gk-section--soft,
.is-style-gk-section-soft {
	background: var(--color-paper-2);
}

.gk-section:nth-of-type(even):not(.gk-section--soft):not(.gk-section--stats) {
	background: color-mix(in oklab, var(--color-paper) 76%, var(--color-paper-2));
}

.gk-flyer-section {
	overflow: hidden;
	background:
		linear-gradient(135deg, rgba(14, 166, 215, 0.09), transparent 36%),
		linear-gradient(315deg, rgba(254, 0, 0, 0.06), transparent 34%),
		var(--wp--preset--color--paper);
}

.gk-flyer-grid {
	gap: clamp(2rem, 6vw, 5rem);
	align-items: center;
}

.gk-flyer-preview {
	width: min(100%, 22rem);
	margin: 0 auto;
}

.gk-flyer-preview a {
	display: block;
	border-radius: 0.9rem;
}

.gk-flyer-preview img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 210 / 297;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 0.9rem;
	background: var(--wp--preset--color--white);
	box-shadow: var(--gk-card-shadow-hover);
	object-fit: cover;
}

.gk-flyer-preview figcaption {
	margin-top: 0.75rem;
	color: var(--wp--preset--color--slate);
	font-size: 0.75rem;
	text-align: center;
}

.gk-flyer-copy {
	max-width: 34rem;
}

.gk-flyer-copy .wp-block-list {
	margin-block: 1.5rem;
}

.gk-flyer-copy .wp-block-list li {
	margin-block: 0.5rem;
}

.gk-flyer-copy .wp-block-list li::marker {
	color: var(--wp--preset--color--cyan-dark);
}

.gk-flyer-copy .gk-button-row {
	margin-top: 1.75rem;
}

.gk-flyer-meta {
	margin-top: 1rem;
	color: var(--wp--preset--color--slate);
}

.gk-section--stats {
	position: relative;
	z-index: 3;
	margin-top: -2rem;
	padding-top: 0;
}

.gk-section--dark,
.is-style-gk-section-dark {
	border-block: 1px solid var(--gk-border);
	background: var(--gk-surface-quiet);
	color: var(--gk-text-main);
}

:where(.gk-section--dark, .is-style-gk-section-dark) :where(h1, h2, h3, h4, h5, h6) {
	color: var(--gk-text-main);
}

:where(.gk-section--dark, .is-style-gk-section-dark) a:not(.wp-element-button) {
	color: var(--gk-text-main);
}

:where(.gk-section--dark, .is-style-gk-section-dark) .gk-eyebrow {
	color: var(--wp--preset--color--red-dark);
}

:where(.gk-section--dark, .is-style-gk-section-dark) .wp-block-button.is-style-outline > .wp-block-button__link,
:where(.gk-cta, .gk-final-cta) .wp-block-button.is-style-outline > .wp-block-button__link {
	border-color: var(--wp--preset--color--cyan-dark);
	background: var(--gk-surface-card);
	color: var(--wp--preset--color--cyan-dark);
}

:where(.gk-section--dark, .is-style-gk-section-dark) .wp-block-button.is-style-outline > .wp-block-button__link:hover,
:where(.gk-cta, .gk-final-cta) .wp-block-button.is-style-outline > .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--cyan-dark);
	background: var(--wp--preset--color--cyan-dark);
	color: var(--wp--preset--color--white);
}

.gk-section__head {
	max-width: 52rem;
	margin-right: auto;
	margin-bottom: clamp(2rem, 5vw, 3.5rem);
	margin-left: 0;
	text-align: left;
}

.gk-section__head .gk-section-mark {
	margin-left: 0;
}

.gk-section__head > :last-child {
	margin-bottom: 0;
}

.wp-block-heading.is-style-gk-accent {
	position: relative;
	padding-left: 1rem;
}

.wp-block-heading.is-style-gk-accent::before {
	position: absolute;
	top: 0.12em;
	bottom: 0.12em;
	left: 0;
	width: 0.3rem;
	border-radius: 999px;
	content: "";
	background: linear-gradient(
		180deg,
		var(--color-decoration-blue) 0 45%,
		var(--wp--preset--color--brand-red) 45% 100%
	);
}

.gk-content-shell {
	padding-block: clamp(3rem, 7vw, 6rem);
}

.gk-content-shell > :first-child {
	margin-top: 0;
}

.gk-grid,
.gk-card-grid,
.gk-news-grid,
.gk-post-grid,
.gk-stats,
.gk-steps,
.gk-flow {
	display: grid;
	gap: clamp(1rem, 2.4vw, 1.75rem);
}

/*
 * Core Group blocks use a flow layout that adds block spacing to every child
 * after the first. These containers are CSS grids, so that extra margin makes
 * only the first card appear taller. Let grid gap own all sibling spacing.
 */
:root :is(
	.gk-grid,
	.gk-card-grid,
	.gk-news-grid,
	.gk-post-grid,
	.gk-stats,
	.gk-steps,
	.gk-flow
) > * {
	margin-block-start: 0;
}

.gk-grid--2,
.gk-access-grid {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.gk-grid--3,
.gk-card-grid,
.gk-news-grid,
.gk-post-grid {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gk-grid--4,
.gk-stats {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

.gk-steps,
.gk-flow {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	counter-reset: gk-step;
}

/* Cards and structured content */

.gk-card,
.is-style-gk-card,
.gk-course-card,
.gk-result-card,
.gk-person-card,
.gk-voice-card,
.gk-price-box,
.gk-post-card {
	position: relative;
	overflow: hidden;
	padding: clamp(1.5rem, 3vw, 2.15rem);
	border: 1px solid var(--color-rule);
	border-radius: var(--gk-radius);
	background: var(--color-surface);
	box-shadow: var(--gk-card-shadow);
	color: var(--wp--preset--color--ink);
}

:where(
	.gk-card,
	.is-style-gk-card,
	.gk-course-card,
	.gk-result-card,
	.gk-person-card,
	.gk-voice-card,
	.gk-price-box,
	.gk-post-card
) :where(h1, h2, h3, h4, h5, h6) {
	color: var(--wp--preset--color--ink);
}

:where(
	.gk-card,
	.is-style-gk-card,
	.gk-course-card,
	.gk-result-card,
	.gk-person-card,
	.gk-voice-card,
	.gk-price-box,
	.gk-post-card
) a:not(.wp-element-button) {
	color: var(--wp--preset--color--cyan-dark);
}

.gk-card::before,
.gk-card--accent::before,
.gk-course-card::before,
.gk-price-box::before {
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 0.15rem;
	content: "";
	background: var(--color-accent);
}

.gk-card > :first-child,
.gk-course-card > :first-child,
.gk-result-card > :first-child,
.gk-person-card > :first-child,
.gk-voice-card > :first-child,
.gk-price-box > :first-child,
.gk-post-card > :first-child {
	margin-top: 0;
}

.gk-card > :last-child,
.gk-course-card > :last-child,
.gk-result-card > :last-child,
.gk-person-card > :last-child,
.gk-voice-card > :last-child,
.gk-price-box > :last-child,
.gk-post-card > :last-child {
	margin-bottom: 0;
}

.gk-card :where(h3, h4),
.gk-course-card :where(h3, h4),
.gk-result-card :where(h3, h4),
.gk-price-box :where(h3, h4) {
	margin-top: 0.75rem;
}

.gk-card__number,
.gk-step__number {
	display: inline-flex;
	width: fit-content;
	min-height: 2rem;
	margin: 0 0 0.85rem;
	padding: 0.35rem 0.65rem;
	align-items: center;
	border-radius: 999px;
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--roman);
	font-size: 0.75rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	line-height: 1.2;
}

.gk-card__number {
	background: var(--wp--preset--color--cyan-dark);
}

.gk-course-card,
.gk-result-card,
.gk-post-card {
	transition:
		border-color var(--gk-transition),
		box-shadow var(--gk-transition),
		transform var(--gk-transition);
}

.gk-course-card:hover,
.gk-result-card:hover,
.gk-post-card:hover {
	border-color: var(--color-rule-2);
	box-shadow: var(--gk-card-shadow);
	transform: translateY(-0.125rem);
}

.gk-course-card .wp-block-image,
.gk-result-card .wp-block-image,
.gk-person-card .wp-block-image,
.gk-post-card .wp-block-post-featured-image {
	margin: calc(clamp(1.35rem, 3vw, 2rem) * -1);
	margin-bottom: 1.5rem;
}

.gk-course-card :where(img),
.gk-result-card :where(img),
.gk-person-card :where(img),
.gk-post-card .wp-block-post-featured-image img {
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover;
}

.gk-person-card :where(img) {
	aspect-ratio: 4 / 3;
	object-position: center 25%;
}

/* Curated learning icons */

.gk-section-mark {
	width: clamp(4.25rem, 7vw, 5.25rem);
	margin: 0 auto 0.9rem;
}

.gk-section-mark img,
.gk-card-icon img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	border: 1px solid rgba(21, 25, 28, 0.08);
	border-radius: 1.15rem;
	background: var(--wp--preset--color--white);
	box-shadow: 0 0.5rem 1.25rem rgba(15, 31, 40, 0.1);
	filter: saturate(0.86) contrast(0.98);
	object-fit: contain;
}

.gk-section-mark--light img {
	border-color: rgba(255, 255, 255, 0.7);
	box-shadow:
		0 0 0 0.3rem rgba(255, 255, 255, 0.1),
		0 0.5rem 1.25rem rgba(0, 0, 0, 0.22);
}

.gk-card-icon,
.gk-card > .wp-block-image.gk-card-icon,
.gk-course-card > .wp-block-image.gk-card-icon,
.gk-result-card > .wp-block-image.gk-card-icon,
.gk-person-card > .wp-block-image.gk-card-icon {
	width: clamp(4.5rem, 7vw, 5.5rem);
	margin: 0 0 1rem;
}

.gk-card-icon--compact,
.gk-card > .wp-block-image.gk-card-icon--compact {
	width: clamp(3.75rem, 6vw, 4.5rem);
}

.gk-course-card .gk-card-icon img,
.gk-result-card .gk-card-icon img,
.gk-person-card .gk-card-icon img {
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	object-fit: contain;
}

.gk-voice-card {
	border-top: 0.3rem solid var(--wp--preset--color--brand-cyan);
	background: linear-gradient(145deg, var(--wp--preset--color--white), var(--wp--preset--color--paper));
}

.gk-voice-card::after {
	position: absolute;
	z-index: 0;
	top: 0.25rem;
	right: 1rem;
	content: "“";
	color: rgba(14, 166, 215, 0.13);
	font-family: Georgia, serif;
	font-size: 7rem;
	font-weight: 700;
	line-height: 1;
}

.gk-voice-card > * {
	position: relative;
	z-index: 1;
}

.gk-price-box {
	border-width: 2px;
	border-color: rgba(201, 0, 0, 0.25);
}

.gk-price-box .has-heading-1-font-size,
.gk-price-box .has-heading-2-font-size,
.gk-price-box strong {
	color: var(--wp--preset--color--red-dark);
}

.gk-stats {
	gap: 1px;
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--gk-radius);
	background: var(--wp--preset--color--line);
	box-shadow: var(--gk-card-shadow);
}

.gk-stat {
	position: relative;
	min-width: 0;
	padding: clamp(1.25rem, 3vw, 2rem) 1rem;
	background: var(--wp--preset--color--white);
	text-align: center;
}

.gk-stat::before {
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 0.25rem;
	content: "";
	background: linear-gradient(
		90deg,
		var(--color-decoration-blue) 0 42%,
		var(--wp--preset--color--brand-red) 42% 100%
	);
}

.gk-stat :where(h3, strong, .gk-stat__number) {
	display: inline-block;
	margin-block: 0 0.35rem;
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--sans);
	font-size: clamp(1.75rem, 3vw, 2.5rem);
	font-variant-numeric: tabular-nums;
	font-weight: 900;
	letter-spacing: -0.025em;
	line-height: 1.2;
}

.gk-stat .gk-stat__label {
	font-size: clamp(1.75rem, 3vw, 2.5rem);
	letter-spacing: -0.025em;
	line-height: 1.2;
}

.gk-stat--exams :where(h3, strong, .gk-stat__number) {
	display: block;
	margin-bottom: 0.5rem;
	font-size: clamp(1.05rem, 1.55vw, 1.35rem);
	letter-spacing: 0.08em;
	line-height: 1.5;
}

.gk-stat--exams p {
	margin-top: 0;
	color: var(--wp--preset--color--cyan-dark);
	font-weight: 800;
	letter-spacing: 0.16em;
}

.gk-stat > :last-child {
	margin-bottom: 0;
}

.gk-step {
	position: relative;
	min-width: 0;
	padding: 1.65rem 1.5rem;
	border: 1px solid var(--color-rule);
	border-radius: var(--gk-radius);
	background: var(--wp--preset--color--white);
	box-shadow: var(--gk-card-shadow);
	counter-increment: gk-step;
}

.gk-step::before {
	display: none;
	content: "";
}

.gk-cycle {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 1rem;
	counter-reset: gk-cycle;
}

.gk-cycle > * {
	position: relative;
	min-width: 0;
	padding: 1.25rem 0.85rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--gk-radius-small);
	background: var(--wp--preset--color--white);
	text-align: center;
	counter-increment: gk-cycle;
}

.gk-cycle > *::before {
	display: block;
	margin-bottom: 0.5rem;
	content: counter(gk-cycle, decimal-leading-zero);
	color: var(--wp--preset--color--red-dark);
	font-family: var(--wp--preset--font-family--roman);
	font-size: 1.35rem;
	font-weight: 800;
}

.gk-cycle > *:not(:last-child)::after {
	position: absolute;
	z-index: 2;
	top: 50%;
	right: -0.72rem;
	width: 0.75rem;
	height: 0.75rem;
	border-top: 3px solid var(--wp--preset--color--brand-cyan);
	border-right: 3px solid var(--wp--preset--color--brand-cyan);
	content: "";
	transform: translateY(-50%) rotate(45deg);
}

.gk-notice {
	padding: 1rem 1.25rem;
	border-left: 0.3rem solid var(--wp--preset--color--brand-cyan);
	border-radius: 0 var(--gk-radius-small) var(--gk-radius-small) 0;
	background: var(--wp--preset--color--mist);
}

.gk-notice > :first-child {
	margin-top: 0;
}

.gk-notice > :last-child {
	margin-bottom: 0;
}

.gk-access-card > .gk-card {
	height: 100%;
}

.gk-map-card {
	height: 100%;
}

.gk-map-feature {
	max-width: 56rem;
	margin-inline: auto;
}

.gk-map-feature .gk-map-card {
	padding: clamp(1.5rem, 4vw, 2.5rem);
}

.gk-map-feature .wp-block-buttons {
	margin-top: var(--space-lg);
}

.gk-map-embed {
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--radius-media);
	background: var(--wp--preset--color--mist);
	aspect-ratio: 4 / 3;
}

.gk-map-embed iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}

.gk-access-route-map {
	max-width: min(100%, 46rem);
	margin: clamp(1.5rem, 4vw, 2.75rem) auto;
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--gk-radius);
	background: var(--wp--preset--color--white);
	box-shadow: var(--gk-card-shadow);
}

.gk-access-route-map img {
	display: block;
	width: 100%;
	height: auto;
}

.gk-button--primary .wp-block-button__link {
	border-color: var(--wp--preset--color--red-dark);
	background: var(--wp--preset--color--red-dark);
	color: var(--wp--preset--color--white);
}

.gk-button--secondary .wp-block-button__link {
	border-color: var(--wp--preset--color--cyan-dark);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--cyan-dark);
}

.gk-button--primary .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--white);
}

.gk-button--secondary .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--cyan-dark);
	background: var(--wp--preset--color--cyan-dark);
	color: var(--wp--preset--color--white);
}

/* Tables */

.gk-table {
	overflow-x: auto;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--gk-radius-small);
	background: var(--wp--preset--color--white);
	-webkit-overflow-scrolling: touch;
}

.gk-table table {
	width: 100%;
	min-width: 38rem;
	border-collapse: collapse;
}

.gk-table :where(th, td) {
	padding: 0.9rem 1rem;
	border-color: var(--wp--preset--color--line);
	vertical-align: top;
}

.gk-table thead th {
	border-color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--white);
	font-weight: 700;
}

.gk-table tbody th {
	background: var(--wp--preset--color--mist);
	color: var(--wp--preset--color--ink);
	font-weight: 700;
	text-align: left;
}

.gk-table tbody tr:nth-child(even) td {
	background: var(--wp--preset--color--paper);
}

/* FAQ */

.gk-faq,
.gk-faq-list {
	border-top: 1px solid var(--wp--preset--color--line);
}

:where(.gk-faq, .gk-faq-list) .wp-block-details {
	margin: 0;
	padding: 0;
	border-bottom: 1px solid var(--wp--preset--color--line);
}

:where(.gk-faq, .gk-faq-list) .wp-block-details summary {
	position: relative;
	padding: 1.35rem 3.5rem 1.35rem 2.8rem;
	cursor: pointer;
	color: var(--wp--preset--color--ink);
	font-size: clamp(1rem, 2vw, 1.125rem);
	font-weight: 700;
	line-height: 1.6;
	list-style: none;
}

:where(.gk-faq, .gk-faq-list) .wp-block-details summary::-webkit-details-marker {
	display: none;
}

:where(.gk-faq, .gk-faq-list) .wp-block-details summary::before {
	position: absolute;
	top: 1.3rem;
	left: 0.25rem;
	display: grid;
	width: 2rem;
	height: 2rem;
	content: "Q";
	place-items: center;
	border-radius: 50%;
	background: var(--wp--preset--color--cyan-dark);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--roman);
	font-size: 0.875rem;
	font-weight: 800;
}

:where(.gk-faq, .gk-faq-list) .wp-block-details summary::after {
	position: absolute;
	top: 50%;
	right: 0.5rem;
	width: 1rem;
	height: 1rem;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	content: "";
	transform: translateY(-70%) rotate(45deg);
	transition: transform var(--gk-transition);
}

:where(.gk-faq, .gk-faq-list) .wp-block-details[open] summary::after {
	transform: translateY(-30%) rotate(225deg);
}

:where(.gk-faq, .gk-faq-list) .wp-block-details > :not(summary) {
	margin-right: 1rem;
	margin-left: 2.8rem;
}

:where(.gk-faq, .gk-faq-list) .wp-block-details > :last-child {
	margin-bottom: 1.5rem;
}

/* Forms */

.gk-form-guide {
	padding: clamp(1.25rem, 3vw, 2rem);
	border-radius: var(--gk-radius);
	background: var(--wp--preset--color--paper);
}

.gk-form-guide :where(label, legend) {
	color: var(--wp--preset--color--ink);
	font-weight: 700;
}

.gk-form-guide :where(input:not([type="checkbox"], [type="radio"], [type="submit"]), select, textarea),
.wp-block-search__input {
	width: 100%;
	min-height: 3rem;
	padding: 0.75rem 0.875rem;
	border: 1px solid #AEBBC2;
	border-radius: var(--gk-radius-small);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	font: inherit;
	font-size: 1rem;
}

.gk-form-guide textarea {
	min-height: 9rem;
	resize: vertical;
}

.gk-form-guide :where(input, select, textarea):focus {
	border-color: var(--wp--preset--color--cyan-dark);
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--color-focus) 18%, transparent);
}

.gk-form-guide :where(input[type="checkbox"], input[type="radio"]) {
	width: 1.15rem;
	height: 1.15rem;
	margin-right: 0.4rem;
	accent-color: var(--wp--preset--color--cyan-dark);
}

.gk-form-guide :where(button, input[type="submit"]) {
	min-height: 3.25rem;
	padding: 0.8rem 1.75rem;
	border: 2px solid var(--wp--preset--color--red-dark);
	border-radius: var(--radius-button);
	background: var(--wp--preset--color--red-dark);
	color: var(--wp--preset--color--white);
	font: inherit;
	font-weight: 700;
	cursor: pointer;
}

.gk-form-guide :where(button, input[type="submit"]):hover {
	border-color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--ink);
}

/* Calls to action */

.gk-cta,
.gk-final-cta {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding: clamp(2.25rem, 6vw, 4.5rem);
	border: 1px solid var(--gk-border);
	border-radius: var(--gk-radius);
	background: var(--gk-surface-card);
	box-shadow: var(--gk-card-shadow);
	color: var(--gk-text-main);
	text-align: left;
}

.gk-cta::before,
.gk-final-cta::before {
	position: absolute;
	z-index: -1;
	top: -3.5rem;
	right: -5rem;
	width: 19rem;
	height: 12rem;
	content: "";
	background:
		linear-gradient(
			145deg,
			transparent 0 36%,
			var(--wp--preset--color--brand-red) 36% 48%,
			transparent 48% 62%,
			var(--color-decoration-blue) 62% 74%,
			transparent 74%
		);
	opacity: 0.16;
	transform: rotate(-5deg);
}

:where(.gk-cta, .gk-final-cta) :where(h2, h3, h4) {
	max-width: 18ch;
	color: var(--gk-text-main);
	overflow-wrap: anywhere;
}

:where(.gk-cta, .gk-final-cta) a:not(.wp-element-button) {
	color: var(--gk-text-main);
}

:where(.gk-cta, .gk-final-cta) > p {
	max-width: 60ch;
	color: var(--gk-text-muted);
}

:where(.gk-cta, .gk-final-cta) .gk-button-row {
	justify-content: flex-start;
}

.gk-cta__sub {
	margin-bottom: 0;
	color: var(--gk-text-muted);
	font-size: 0.875rem;
	text-align: left;
}

/* Posts */

.gk-post-card .wp-block-post-title a {
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}

.gk-post-card .wp-block-post-title a:hover {
	color: var(--wp--preset--color--red-dark);
}

.gk-news-grid,
.gk-post-grid {
	margin: 0;
	padding: 0;
	list-style: none;
}

.gk-news-card__date {
	margin-bottom: 0.5rem;
	color: var(--wp--preset--color--cyan-dark);
	font-family: var(--wp--preset--font-family--roman);
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.08em;
}

.gk-post-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1rem;
	align-items: center;
	color: var(--wp--preset--color--slate);
	font-size: 0.8125rem;
}

.gk-empty-state {
	padding: 2rem;
	border: 1px dashed #AEBBC2;
	border-radius: var(--gk-radius);
	background: var(--wp--preset--color--paper);
	text-align: center;
}

.gk-page-main > .gk-empty-state {
	margin-block: clamp(3rem, 8vw, 7rem);
}

.wp-block-query-pagination {
	gap: 0.5rem;
}

.wp-block-query-pagination-numbers {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
}

.wp-block-query-pagination-numbers .page-numbers,
.wp-block-query-pagination-previous,
.wp-block-query-pagination-next {
	display: inline-grid;
	min-width: 2.75rem;
	min-height: 2.75rem;
	padding: 0.45rem 0.7rem;
	place-items: center;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 999px;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}

.wp-block-query-pagination-numbers .current {
	border-color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--white);
}

/* Footer */

.gk-site-footer {
	position: relative;
	padding-block: clamp(3.5rem, 7vw, 5.5rem) 1.5rem;
	overflow: hidden;
	border-top: 1px solid var(--gk-border);
	background: var(--color-paper-2);
	color: var(--gk-text-main);
}

.gk-site-footer::before {
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 0.375rem;
	content: "";
	background: linear-gradient(
		90deg,
		var(--color-decoration-blue) 0 42%,
		var(--wp--preset--color--brand-red) 42% 100%
	);
}

.gk-site-footer :where(h2, h3, h4, h5, h6) {
	color: var(--gk-text-main);
}

.gk-site-footer a {
	color: var(--gk-text-main);
	text-decoration-color: var(--wp--preset--color--brand-cyan);
}

.gk-site-footer a:hover {
	color: var(--wp--preset--color--cyan-dark);
}

.gk-site-footer > .gk-footer-grid,
.gk-site-footer > .gk-footer-bottom {
	width: min(calc(100% - (2 * var(--gk-gutter))), 75rem);
	max-width: 75rem;
	margin-inline: auto;
}

.gk-site-footer > .gk-footer-grid {
	display: grid !important;
	grid-template-columns:
		minmax(16rem, 1.35fr)
		minmax(11rem, 0.85fr)
		minmax(13rem, 1fr)
		minmax(17rem, 1.35fr);
	gap: clamp(1.5rem, 3vw, 3rem);
	align-items: start;
}

.gk-footer-brand .gk-wordmark,
.gk-footer-brand .gk-wordmark a,
.gk-footer-brand .gk-wordmark-roman {
	color: var(--gk-text-main);
}

.gk-footer-message {
	max-width: 31rem;
	color: var(--gk-text-muted);
}

.gk-footer-nav .wp-block-navigation-item__content {
	padding-block: 0.25rem;
}

.gk-footer-contact {
	min-width: 0;
	padding: 1.5rem;
	border: 1px solid var(--gk-border);
	border-radius: var(--gk-radius);
	background: var(--gk-surface-card);
	box-shadow: var(--gk-card-shadow);
}

.gk-footer-contact :where(p, h2) {
	overflow-wrap: anywhere;
}

.gk-footer-contact .wp-block-buttons,
.gk-footer-contact .wp-block-button,
.gk-footer-contact .wp-block-button__link {
	width: 100%;
}

.gk-footer-bottom {
	margin-top: clamp(2.5rem, 5vw, 4rem);
	padding-top: 1.25rem;
	border-top: 1px solid var(--gk-border);
	color: var(--gk-text-muted);
	font-size: 0.75rem;
}

/* Mobile fixed conversion bar */

.gk-mobile-cta {
	display: none;
}

/* Editor clarity */

.editor-styles-wrapper .gk-site-header {
	position: relative;
	top: auto;
}

.editor-styles-wrapper .gk-mobile-cta {
	position: relative !important;
	inset: auto !important;
	display: grid;
}

/* Responsive behavior */

@media (max-width: 1180px) {
	.gk-header-actions {
		/* WordPress emits a later layout utility with display:flex. */
		display: none !important;
	}

	.gk-header-inner {
		grid-template-columns: auto minmax(0, 1fr);
	}
}

@media (max-width: 1100px) {
	.gk-main-navigation .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex !important;
	}

	.gk-main-navigation .wp-block-navigation__responsive-container:not(.is-menu-open) {
		display: none !important;
	}

	.gk-main-navigation .wp-block-navigation__responsive-container.is-menu-open {
		padding: var(--gk-gutter);
		background: var(--wp--preset--color--white);
		color: var(--wp--preset--color--ink);
	}

	.gk-main-navigation .wp-block-navigation__responsive-container-close {
		top: 1.2rem;
		right: var(--gk-gutter);
	}

	.gk-main-navigation .wp-block-navigation__responsive-container-content {
		padding-top: 4.5rem;
		align-items: stretch;
	}

	.gk-main-navigation .wp-block-navigation__container,
	.gk-main-navigation .wp-block-navigation__responsive-container-content {
		gap: 0;
	}

	.gk-main-navigation .wp-block-navigation__container {
		width: 100%;
		align-items: stretch;
	}

	.gk-main-navigation .wp-block-navigation-item {
		width: 100%;
		border-bottom: 1px solid var(--wp--preset--color--line);
	}

	.gk-main-navigation .wp-block-navigation-item__content {
		width: 100%;
		padding: 0.9rem 0.25rem;
		font-size: 1rem;
	}

	.gk-main-navigation .wp-block-navigation__submenu-container {
		position: static !important;
		width: 100% !important;
		min-width: 0 !important;
		padding: 0 0 0.75rem 1rem !important;
		border: 0 !important;
		box-shadow: none;
		opacity: 1 !important;
		visibility: visible !important;
	}

	.gk-main-navigation .wp-block-navigation__submenu-icon {
		display: none;
	}

	.gk-grid--4,
	.gk-stats,
	.gk-steps,
	.gk-flow {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gk-grid--3,
	.gk-card-grid,
	.gk-news-grid,
	.gk-post-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gk-cycle {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.gk-cycle > *::after {
		display: none;
	}

	.gk-site-footer > .gk-footer-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gk-footer-brand {
		grid-column: 1 / -1;
	}
}

@media (max-width: 782px) {
	:root {
		--gk-header-height: 5rem;
	}

	.admin-bar .gk-site-header {
		top: 46px;
	}

	body:not(.wp-admin) .wp-site-blocks {
		padding-bottom: calc(var(--gk-mobile-cta-height) + env(safe-area-inset-bottom));
	}

	.gk-header-inner {
		min-height: var(--gk-header-height);
	}

	.gk-site-header .gk-wordmark-kanji {
		font-size: 2.55rem;
	}

	.gk-site-header .gk-wordmark-roman {
		font-size: 0.62rem;
	}

	.gk-hero {
		min-height: 0;
		padding-block: 3.75rem;
		background-color: var(--wp--preset--color--white);
		background-image:
			linear-gradient(rgba(255, 255, 255, 0.55), rgba(255, 255, 255, 0.55)),
			url("../images/brand-background.jpg");
		background-repeat: no-repeat;
		background-position: center;
		background-size: cover;
	}

	.gk-hero::before,
	.gk-hero::after {
		display: none;
	}

	.gk-hero__visual {
		display: none;
	}

	.gk-grid--2,
	.gk-access-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.gk-mobile-cta {
		position: fixed;
		z-index: 1100;
		right: 0;
		bottom: 0;
		left: 0;
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0.5rem;
		min-height: var(--gk-mobile-cta-height);
		padding: 0.625rem var(--gk-gutter) calc(0.625rem + env(safe-area-inset-bottom));
		border-top: 1px solid var(--wp--preset--color--line);
		background: rgba(255, 255, 255, 0.97);
		box-shadow: 0 -0.5rem 1.5rem rgba(15, 31, 40, 0.13);
		-webkit-backdrop-filter: blur(0.75rem);
		backdrop-filter: blur(0.75rem);
	}

	.gk-mobile-cta .wp-block-buttons {
		display: contents;
	}

	.gk-mobile-cta .wp-block-button,
	.gk-mobile-cta .wp-block-button__link {
		width: 100%;
	}

	.gk-mobile-cta .wp-block-button__link {
		--gk-action-icon-size: 1.45rem;
		min-height: 3.25rem;
		padding: 0.65rem 0.5rem;
		font-size: 0.875rem;
	}

	.gk-mobile-cta .wp-block-button:first-child .wp-block-button__link {
		border-color: var(--wp--preset--color--cyan-dark);
		background: var(--wp--preset--color--white);
		color: var(--wp--preset--color--cyan-dark);
	}

	.gk-mobile-cta .wp-block-button:last-child .wp-block-button__link {
		border-color: var(--wp--preset--color--red-dark);
		background: var(--wp--preset--color--red-dark);
		color: var(--wp--preset--color--white);
	}

	.editor-styles-wrapper .gk-mobile-cta {
		padding: 0.625rem;
	}
}

@media (max-width: 640px) {
	.gk-hero .gk-eyebrow {
		font-size: 0.75rem;
		letter-spacing: 0.03em;
	}

	.gk-photo-frame {
		border-radius: 1rem;
	}

	.gk-media-caption {
		top: 0.6rem;
		right: 0.6rem;
		font-size: 0.6875rem;
	}

	.gk-section-mark {
		width: 4.25rem;
	}

	.gk-card-icon,
	.gk-card > .wp-block-image.gk-card-icon,
	.gk-course-card > .wp-block-image.gk-card-icon,
	.gk-result-card > .wp-block-image.gk-card-icon,
	.gk-person-card > .wp-block-image.gk-card-icon {
		width: 4.25rem;
	}

	.gk-card-icon--compact,
	.gk-card > .wp-block-image.gk-card-icon--compact {
		width: 3.75rem;
	}

	.gk-grid--3,
	.gk-grid--4,
	.gk-card-grid,
	.gk-news-grid,
	.gk-post-grid,
	.gk-steps,
	.gk-flow {
		grid-template-columns: minmax(0, 1fr);
	}

	.gk-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gk-stat {
		padding-inline: 0.65rem;
	}

	.gk-cycle {
		grid-template-columns: minmax(0, 1fr);
	}

	.gk-cycle > * {
		text-align: left;
	}

	.gk-cycle > *::before {
		display: inline-block;
		margin-right: 0.65rem;
		margin-bottom: 0;
	}

	.gk-site-footer > .gk-footer-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.gk-footer-brand {
		grid-column: auto;
	}

	.gk-button-row,
	.gk-button-row .wp-block-button,
	.gk-button-row .wp-block-button__link {
		width: 100%;
	}

	.gk-table {
		margin-right: calc(var(--gk-gutter) * -0.5);
		margin-left: calc(var(--gk-gutter) * -0.5);
		border-right: 0;
		border-left: 0;
		border-radius: 0;
	}

	.gk-table :where(th, td) {
		padding: 0.75rem;
	}
}

@media (max-width: 360px) {
	.gk-mobile-cta .wp-block-button__link {
		--gk-action-icon-size: 1.25rem;
		gap: 0.25rem;
		padding-inline: 0.25rem;
		font-size: 0.8125rem;
	}
}

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

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		scroll-behavior: auto !important;
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}

/* Homepage: a readable school guide rather than a sequence of product cards. */
.gk-home--story .gk-hero--story {
	padding-bottom: clamp(var(--space-2xl), 8vw, var(--space-4xl));
}

.gk-home--story .gk-hero__lead {
	max-width: 32rem;
	margin-bottom: var(--space-sm);
	font-weight: 700;
	line-height: 1.65;
}

.gk-hero__facts {
	gap: var(--space-xs);
	margin-top: var(--space-lg);
	margin-bottom: var(--space-xs);
}

.gk-hero__facts p {
	margin: 0;
	padding: var(--space-2xs) var(--space-xs);
	border-left: var(--rule-fine) solid var(--color-action);
	background: var(--color-paper-2);
	font-size: var(--text-sm);
	font-weight: 700;
}

.gk-hero__service-line {
	margin-top: var(--space-md);
	color: var(--color-ink-2);
	font-size: var(--text-sm);
	font-weight: 700;
	line-height: 1.8;
}

.gk-section--letter {
	padding-block: clamp(var(--space-2xl), 10vw, var(--space-4xl));
	background: var(--color-surface);
}

.gk-letter {
	gap: clamp(var(--space-xl), 8vw, var(--space-4xl));
	align-items: start;
}

.gk-letter h2,
.gk-note h2 {
	max-width: 14ch;
	font-size: clamp(var(--text-xl), 2.6vw, var(--text-2xl));
	line-height: 1.45;
}

.gk-letter__body {
	max-width: 42rem;
	padding-top: var(--space-2xs);
}

.gk-letter__body p + p {
	margin-top: var(--space-md);
}

.gk-section--photo-story {
	padding-block: clamp(var(--space-2xl), 9vw, var(--space-4xl));
}

.gk-photo-story,
.gk-note {
	gap: clamp(var(--space-lg), 6vw, var(--space-3xl));
}

.gk-photo-story__copy {
	max-width: 29rem;
}

.gk-photo-frame--story {
	margin: 0;
	border-radius: var(--radius-media);
	box-shadow: var(--shadow-card);
}

.gk-photo-frame--story img,
.gk-note__image img {
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.gk-section--teaching {
	padding-block: clamp(var(--space-2xl), 8vw, var(--space-3xl));
}

.gk-section__head--compact {
	margin-bottom: var(--space-xl);
}

.gk-teaching {
	gap: clamp(var(--space-xl), 7vw, var(--space-4xl));
	margin-bottom: var(--space-xl);
}

.gk-teaching > .wp-block-column {
	padding-top: var(--space-md);
	border-top: var(--rule-fine) solid var(--color-ink);
}

.gk-teaching > .wp-block-column + .wp-block-column {
	border-top-color: var(--color-action);
}

.gk-teaching h3,
.gk-grade-lines h3 {
	margin-bottom: var(--space-xs);
	font-size: var(--text-xl);
}

.gk-teaching__lead {
	margin-bottom: var(--space-sm);
	color: var(--color-ink-2);
	font-weight: 700;
}

.gk-section--grades {
	padding-block: clamp(var(--space-2xl), 8vw, var(--space-3xl));
}

.gk-grade-lines {
	gap: 0;
	border-top: var(--rule-hair) solid var(--color-rule-2);
	border-bottom: var(--rule-hair) solid var(--color-rule-2);
}

.gk-grade-lines > .wp-block-column {
	padding: var(--space-lg) var(--space-md);
}

.gk-grade-lines > .wp-block-column + .wp-block-column {
	border-left: var(--rule-hair) solid var(--color-rule-2);
}

.gk-grade-lines p {
	margin-bottom: 0;
}

.gk-section--note {
	padding-block: clamp(var(--space-2xl), 9vw, var(--space-4xl));
	background: var(--color-paper-2);
}

.gk-note__image {
	margin: 0;
}

.gk-note__image .gk-media-caption,
.gk-photo-frame--story .gk-media-caption {
	font-size: var(--text-xs);
}

.gk-section--access-story {
	padding-block: clamp(var(--space-2xl), 8vw, var(--space-3xl));
}

.gk-access-note {
	padding: clamp(var(--space-lg), 4vw, var(--space-2xl));
	border-left: var(--rule-fine) solid var(--color-action);
	border-radius: var(--radius-card);
	background: var(--color-paper-2);
}

.gk-access-note h3 {
	font-size: var(--text-xl);
}

.gk-home--story .gk-final-cta {
	background: var(--color-ink);
}

.gk-home--story .gk-final-cta .gk-eyebrow,
.gk-home--story .gk-final-cta h2,
.gk-home--story .gk-final-cta p {
	color: var(--color-action-ink);
}

@media (max-width: 781px) {
	.gk-home--story .gk-hero--story {
		padding-bottom: var(--space-2xl);
	}

	.gk-hero__facts {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr);
	}

	.gk-hero__service-line {
		font-size: var(--text-xs);
	}

	.gk-letter,
	.gk-photo-story,
	.gk-note,
	.gk-teaching,
	.gk-grade-lines {
		gap: var(--space-lg);
	}

	.gk-letter__body {
		padding-top: 0;
	}

	.gk-photo-story__copy {
		max-width: none;
	}

	.gk-grade-lines > .wp-block-column {
		padding: var(--space-md) 0;
	}

	.gk-grade-lines > .wp-block-column + .wp-block-column {
		border-top: var(--rule-hair) solid var(--color-rule-2);
		border-left: 0;
	}
}

@media print {
	.gk-site-header,
	.gk-mobile-cta,
	.gk-site-footer,
	.wp-block-navigation {
		display: none !important;
	}

	body,
	.gk-section--dark,
	.gk-cta,
	.gk-final-cta {
		background: #FFFFFF !important;
		color: #000000 !important;
	}

	a {
		color: #000000 !important;
		text-decoration: underline !important;
	}
}
/* Regional-school reset: paper, print-like rules, and photographs take priority
 * over decorative colour and repeated floating cards. */
.gk-home--school .gk-hero,
.gk-home--school .gk-hero::before,
.gk-home--school .gk-hero::after,
.gk-home--school .gk-final-cta::before { background-image: none; }

.gk-home--school .gk-hero { min-height: 0; padding-block: clamp(3.5rem, 7vw, 6.5rem); background-color: var(--color-paper); }
.gk-home--school .gk-hero__visual::after,
.gk-home--school .gk-hero__message { display: none; }
.gk-place-line, .gk-hero__photo-note, .gk-mentor-name { margin: 0; color: var(--wp--preset--color--red-dark) !important; font-size: var(--text-sm); font-weight: 700; letter-spacing: 0.04em; }
.gk-place-line { padding-left: 0.8rem; border-left: 0.2rem solid var(--wp--preset--color--red-dark); }
.gk-hero__promise { margin-block: 0 0.9rem; color: var(--color-ink) !important; font-size: var(--text-lg); font-weight: 700; line-height: 1.55; }
.gk-home--school .gk-hero__content h1 { margin-block: 1.35rem 0.7rem; }
.gk-home--school .gk-hero__photo { border-radius: var(--radius-media); box-shadow: none; }
.gk-home--school .gk-hero__photo img { aspect-ratio: 5 / 4; }
.gk-hero__photo-note { margin-top: 0.75rem; color: var(--color-muted) !important; font-weight: 600; letter-spacing: 0; }
.gk-home--school .gk-section:nth-of-type(even):not(.gk-section--soft) { background: var(--color-paper); }
.gk-home--school .gk-section--soft { background: var(--color-paper-2); }
.gk-home--school .gk-school-letter { border-block: 1px solid var(--color-rule); background: var(--color-surface); }
.gk-home--school .gk-letter { gap: clamp(2rem, 7vw, 7rem); }
.gk-home--school .gk-section__head { margin-bottom: clamp(2rem, 5vw, 3rem); }
.gk-home--school .gk-school-story { gap: clamp(2rem, 6vw, 5rem); margin-top: clamp(2.75rem, 7vw, 5.5rem); }
.gk-home--school .gk-school-story:first-of-type { margin-top: 0; }
.gk-school-story__copy { max-width: 34rem; }
.gk-story-lead { margin-top: 0; color: var(--color-ink) !important; font-size: var(--text-md); font-weight: 700; }
.gk-home--school .gk-photo-frame { border-color: var(--color-rule); border-radius: var(--radius-media); box-shadow: none; }
.gk-home--school .gk-photo-frame img { aspect-ratio: 4 / 3; }
.gk-home--school .gk-media-caption { top: auto; right: 0; bottom: 0; left: 0; padding: 0.6rem 0.8rem; border: 0; border-radius: 0; background: color-mix(in oklab, var(--color-surface) 94%, transparent); box-shadow: none; font-size: var(--text-xs); }
.gk-grade-list { border-top: 1px solid var(--color-rule); }
.gk-grade-list__item { display: grid !important; grid-template-columns: minmax(10rem, 0.38fr) minmax(0, 1fr); gap: var(--space-lg); padding-block: var(--space-lg); border-bottom: 1px solid var(--color-rule); }
.gk-grade-list__item > * { margin: 0; }
.gk-grade-list__item h3 { font-size: var(--text-lg); }
.gk-grade-list__item p { color: var(--color-ink-2); }
.gk-home--school .gk-note { gap: clamp(2rem, 6vw, 5rem); }
.gk-home--school .gk-note__image img { aspect-ratio: 4 / 5; }
.gk-mentor-name { margin-top: var(--space-lg) !important; padding-top: var(--space-sm); border-top: 1px solid var(--color-rule); color: var(--color-muted) !important; font-weight: 600; }
.gk-classroom-notes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1.5rem, 4vw, 3rem); }
.gk-classroom-note { border-top: 2px solid var(--wp--preset--color--red-dark); }
.gk-classroom-note__image { display: block; margin-top: var(--space-sm); overflow: hidden; border-radius: var(--radius-media); }
.gk-classroom-note__image img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.gk-classroom-note__body { padding-top: var(--space-sm); }
.gk-classroom-note time { color: var(--color-muted); font-size: var(--text-xs); }
.gk-classroom-note h3 { margin-block: 0.45rem 0.65rem; font-size: var(--text-md); }
.gk-classroom-note h3 a { color: var(--color-ink); text-decoration: none; }
.gk-classroom-empty { margin: 0; padding-block: var(--space-md); border-top: 1px solid var(--color-rule); border-bottom: 1px solid var(--color-rule); color: var(--color-muted) !important; }
.gk-home--school .gk-final-cta { padding: clamp(2.5rem, 6vw, 4.5rem); border: 1px solid var(--color-rule); border-radius: var(--radius-card); background-color: var(--color-paper-2); box-shadow: none; }
.gk-eyebrow::before, .wp-block-heading.is-style-gk-accent::before, .gk-stat::before { background: var(--wp--preset--color--brand-red); }
.gk-site-header { border-bottom: 3px double var(--color-rule); box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
.gk-site-header .gk-wordmark-kanji { font-size: clamp(2.3rem, 3.8vw, 3.15rem); }
.gk-header-inner { gap: clamp(0.75rem, 1.5vw, 1.5rem); }
@media (min-width: 64rem) {
	.gk-main-navigation .wp-block-navigation__container { flex-wrap: nowrap !important; gap: 0.85rem; }
	.gk-main-navigation .wp-block-navigation-item__content { font-size: 0.75rem; }
}
.gk-header-cta--secondary .wp-block-button__link, .gk-button--secondary .wp-block-button__link, .wp-block-button.is-style-outline > .wp-block-button__link { border-color: var(--color-neutral); background: var(--color-surface); color: var(--color-neutral); }
.gk-header-cta--secondary .wp-block-button__link:hover, .gk-button--secondary .wp-block-button__link:hover, .wp-block-button.is-style-outline > .wp-block-button__link:hover { border-color: var(--color-ink); background: var(--color-ink); color: var(--color-paper); }
.gk-site-footer { border-top: 3px double var(--color-rule); background: var(--color-paper-2); color: var(--color-ink); }
.gk-site-footer::before, .gk-site-footer::after { display: none; }
.gk-footer-grid { grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.8fr) minmax(0, 0.8fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3.5rem); }
.gk-page .gk-eyebrow { display: none; }
@media (max-width: 48rem) {
	.gk-home--school .gk-hero__inner, .gk-home--school .gk-letter, .gk-home--school .gk-school-story, .gk-home--school .gk-note { gap: var(--space-xl); }
	.gk-home--school .gk-school-story--reverse { flex-direction: column-reverse; }
	.gk-grade-list__item { grid-template-columns: minmax(0, 1fr); gap: var(--space-2xs); }
	.gk-classroom-notes { grid-template-columns: minmax(0, 1fr); gap: var(--space-xl); }
	.gk-home--school .gk-note__image img { aspect-ratio: 4 / 3; }
}

/* Hallmark · component: hero carousel · genre: editorial-soft · theme: 学而館
 * states: default · hover · focus · active · disabled · paused · reduced-motion
 * pre-emit critique: P5 H5 E4 S5 R5 V4 · contrast: pass
 */
.gk-hero-carousel {
	position: relative;
	min-height: clamp(36rem, 55vw, 46rem);
	overflow: clip;
	background: var(--color-ink);
	color: var(--color-action-ink);
	touch-action: pan-y;
}

.gk-hero-carousel__slides,
.gk-hero-carousel__slide {
	position: absolute;
	inset: 0;
}

.gk-hero-carousel__slide {
	display: grid;
	align-items: stretch;
	min-width: 0;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity var(--dur-long) var(--ease-in-out), visibility 0s linear var(--dur-long);
}

.gk-hero-carousel__slide.is-active {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transition-delay: 0s;
}

.gk-hero-carousel__image,
.gk-hero-carousel__shade {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}

.gk-hero-carousel__image {
	object-fit: cover;
	object-position: center;
}

.gk-hero-carousel__image--group {
	object-position: center 38%;
}

.gk-hero-carousel__image--individual {
	object-position: center 42%;
}

.gk-hero-carousel__slide--poster {
	background: #f8fbff;
}

.gk-hero-carousel__image--poster {
	height: calc(100% - 4.75rem);
	object-fit: contain;
	object-position: center top;
}

.gk-hero-carousel:has(.gk-hero-carousel__slide--poster.is-active) .gk-hero-carousel__dots button::after {
	border-color: var(--color-ink);
}

.gk-hero-carousel:has(.gk-hero-carousel__slide--poster.is-active) .gk-hero-carousel__dots button[aria-selected="true"]::after {
	background: var(--color-ink);
}

.gk-hero-carousel__shade {
	background: linear-gradient(
		90deg,
		color-mix(in oklab, var(--color-ink) 90%, transparent) 0%,
		color-mix(in oklab, var(--color-ink) 74%, transparent) 46%,
		color-mix(in oklab, var(--color-ink) 26%, transparent) 76%,
		color-mix(in oklab, var(--color-ink) 12%, transparent) 100%
	);
}

.gk-hero-carousel__content {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	justify-content: center;
	width: min(calc(100% - (var(--space-md) * 2)), 72rem);
	min-width: 0;
	margin-inline: auto;
	padding-block: clamp(var(--space-xl), 7vw, var(--space-3xl)) clamp(7rem, 12vw, 9rem);
}

.gk-hero-carousel__content > * {
	width: min(100%, 40rem);
}

.gk-hero-carousel__content :where(h1, h2) {
	margin: var(--space-sm) 0;
	color: var(--color-action-ink);
	font-family: var(--font-display);
	font-size: clamp(2.45rem, 4.8vw, 4.75rem);
	font-style: normal;
	font-weight: 800;
	letter-spacing: 0.01em;
	line-height: 1.14;
	overflow-wrap: anywhere;
	min-width: 0;
}

.gk-hero-carousel__place,
.gk-hero-carousel__label {
	margin: 0;
	padding-left: var(--space-sm);
	border-left: var(--rule-fine) solid var(--color-action);
	color: var(--color-action-ink);
	font-size: var(--text-sm);
	font-weight: 700;
	line-height: 1.7;
}

.gk-hero-carousel__place span + span::before {
	margin-inline: var(--space-xs);
	content: "｜";
}

.gk-hero-carousel__promise {
	display: flex;
	flex-wrap: wrap;
	gap: 0 var(--space-2xs);
	margin: 0 0 var(--space-xs);
	color: var(--color-action-ink);
	font-size: clamp(1.25rem, 2vw, 1.625rem);
	font-weight: 700;
	line-height: 1.55;
}

.gk-hero-carousel__lead {
	margin: 0;
	color: var(--color-action-ink);
	font-size: var(--text-reading);
	font-weight: 500;
	line-height: 1.85;
}

.gk-hero-carousel__actions {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--space-sm);
	margin-top: var(--space-lg);
}

.gk-hero-carousel__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 3rem;
	padding: var(--space-xs) var(--space-md);
	border: var(--rule-fine) solid var(--color-action-ink);
	border-radius: var(--radius-button);
	font-size: var(--text-sm);
	font-weight: 700;
	line-height: 1;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);
}

.gk-hero-carousel__button--primary {
	border-color: var(--color-action);
	background: var(--color-action);
	color: var(--color-action-ink);
}

.gk-hero-carousel__button--secondary {
	background: color-mix(in oklab, var(--color-ink) 48%, transparent);
	color: var(--color-action-ink);
}

.gk-hero-carousel__button:hover,
.gk-hero-carousel__button:focus-visible {
	background: var(--color-action-ink);
	color: var(--color-ink);
}

.gk-hero-carousel__button:focus-visible,
.gk-hero-carousel__controls button:focus-visible {
	outline: var(--rule-fine) solid var(--color-action-ink);
	outline-offset: var(--space-3xs);
}

.gk-hero-carousel__button:active,
.gk-hero-carousel__controls button:active {
	transform: translateY(1px);
}

.gk-hero-carousel__button[aria-disabled="true"],
.gk-hero-carousel__controls button:disabled {
	cursor: not-allowed;
	opacity: 0.55;
}

.gk-hero-carousel__controls {
	position: absolute;
	z-index: 2;
	right: max(var(--space-md), calc((100% - 72rem) / 2));
	bottom: var(--space-lg);
	display: flex;
	align-items: center;
	gap: var(--space-2xs);
}

.gk-hero-carousel__controls button {
	border: var(--rule-hair) solid color-mix(in oklab, var(--color-action-ink) 72%, transparent);
	background: color-mix(in oklab, var(--color-ink) 60%, transparent);
	color: var(--color-action-ink);
	cursor: pointer;
	transition: background-color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);
}

.gk-hero-carousel__controls button:hover {
	border-color: var(--color-action-ink);
	background: var(--color-ink);
}

.gk-hero-carousel__arrow {
	display: inline-grid;
	place-items: center;
	width: 3rem;
	height: 3rem;
	padding: 0;
	border-radius: var(--radius-pill);
}

.gk-hero-carousel__arrow svg {
	width: 1.25rem;
	height: 1.25rem;
	fill: none;
	stroke: currentColor;
	stroke-width: var(--rule-fine);
	stroke-linecap: round;
	stroke-linejoin: round;
}

.gk-hero-carousel__dots {
	display: flex;
	align-items: center;
	gap: 0;
}

.gk-hero-carousel__dots button {
	position: relative;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border-color: transparent;
	border-radius: var(--radius-pill);
	background: transparent;
}

.gk-hero-carousel__dots button::after {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 0.625rem;
	height: 0.625rem;
	border: var(--rule-hair) solid var(--color-action-ink);
	border-radius: var(--radius-pill);
	background: transparent;
	content: "";
	transform: translate(-50%, -50%);
}

.gk-hero-carousel__dots button[aria-selected="true"]::after {
	background: var(--color-action-ink);
}

@media (max-width: 48rem) {
	.gk-hero-carousel {
		min-height: clamp(36rem, calc(100vw * 1.413 + 5rem), 44rem);
	}

	.gk-hero-carousel__image {
		object-position: center;
	}

	.gk-hero-carousel__shade {
		background: linear-gradient(
			180deg,
			color-mix(in oklab, var(--color-ink) 28%, transparent) 0%,
			color-mix(in oklab, var(--color-ink) 76%, transparent) 45%,
			color-mix(in oklab, var(--color-ink) 92%, transparent) 100%
		);
	}

	.gk-hero-carousel__content {
		justify-content: flex-start;
		width: calc(100% - (var(--space-md) * 2));
		padding-block: var(--space-lg) calc(var(--space-3xl) + var(--space-md));
	}

	.gk-hero-carousel__content :where(h1, h2) {
		font-size: clamp(2rem, 9.3vw, 2.35rem);
		line-height: 1.16;
	}

	.gk-hero-carousel__promise {
		display: block;
	}

	.gk-hero-carousel__promise span {
		display: block;
	}

	.gk-hero-carousel__place span {
		display: block;
	}

	.gk-hero-carousel__place span + span::before {
		display: none;
	}

	.gk-hero-carousel__lead {
		font-size: 1rem;
		line-height: 1.75;
	}

	.gk-hero-carousel__actions {
		align-items: stretch;
		gap: var(--space-2xs);
		margin-top: var(--space-md);
	}

	.gk-hero-carousel__button {
		min-height: 2.75rem;
		padding-inline: var(--space-sm);
	}

	.gk-hero-carousel__controls {
		right: var(--space-md);
		bottom: var(--space-md);
		left: var(--space-md);
		justify-content: center;
	}

}

@media (max-width: 23.5rem) {
	.gk-hero-carousel__actions {
		flex-direction: column;
	}

	.gk-hero-carousel__button {
		width: 100%;
	}

}

@media (prefers-reduced-motion: reduce) {
	.gk-hero-carousel__slide,
	.gk-hero-carousel__button,
	.gk-hero-carousel__controls button {
		transition-duration: 0.01ms;
	}
}

/* Final polish: bright paper, calmer reading rhythm, and replaceable real-photo slots. */
:root { --gk-section-space: clamp(3.875rem, 6.8vw, 6rem); }

.gk-home--school { background: var(--color-surface); }
.gk-home--school .gk-section--soft { background: var(--color-paper-2); }
.gk-home--school :where(.gk-letter__body, .gk-school-story__copy, .gk-grade-list__item p, .gk-note > .wp-block-column:last-child > p, .gk-access-grid > .wp-block-column > p, .gk-access-note p, .gk-classroom-note p, .gk-faq .wp-block-details > p) {
	font-size: var(--text-reading);
	line-height: var(--leading-reading);
}

.gk-home--school .gk-section__head { margin-bottom: clamp(1.5rem, 3.8vw, 2.5rem); }
.gk-home--school .gk-school-story { align-items: center; gap: clamp(2rem, 5vw, 4.25rem); margin-top: clamp(2.25rem, 5.75vw, 4.5rem); }
.gk-home--school .gk-school-story__copy { max-width: 36rem; }
.gk-home--school .gk-school-story .wp-block-image { margin-bottom: 0; }
.gk-home--school .gk-school-story .wp-block-image img { aspect-ratio: 16 / 10; }

.gk-home--school .gk-grade-list { border-top: 0; }
.gk-home--school .gk-grade-list__item {
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: baseline;
	gap: 0.35rem clamp(1rem, 3vw, 2.25rem);
	padding-block: clamp(1.15rem, 2.2vw, 1.5rem);
	border-bottom-color: var(--color-rule);
}
.gk-home--school .gk-grade-list__item h3 { min-width: min(100%, 10rem); font-size: var(--text-lg); }
.gk-home--school .gk-grade-list__item p { flex: 1 1 30rem; max-width: 45rem; }

.gk-home--school .gk-note { gap: clamp(2rem, 5vw, 4rem); }
.gk-home--school .gk-note > .wp-block-column:first-child { max-width: 15rem; }
.gk-home--school .gk-note__image img { aspect-ratio: 9 / 11; object-fit: cover; }
.gk-home--school .gk-note h2 { max-width: 20ch; }
.gk-mentor-name { line-height: 1.75; }

.gk-photo-frame img[src$=".svg"] { object-fit: cover; }
.gk-classroom-note__placeholder {
	display: grid;
	min-height: 12rem;
	place-items: center;
	margin-top: var(--space-sm);
	border: 1px solid var(--color-rule);
	border-radius: var(--radius-media);
	background: var(--color-paper-2);
	color: var(--color-muted);
	font-size: var(--text-sm);
	font-weight: 600;
}
.gk-classroom-note__placeholder span { padding-inline: var(--space-sm); text-align: center; }
.gk-classroom-note__body > p { margin-top: 0; color: var(--color-ink-2); }

.gk-faq .wp-block-details { border-bottom-color: var(--color-rule); }
.gk-faq .wp-block-details summary { min-height: 3.75rem; padding-block: 1rem; font-size: var(--text-reading); line-height: 1.65; }
.gk-faq .wp-block-details > :not(summary) { padding-bottom: 1.25rem; }

.gk-access-card { align-self: center; }
.gk-access-card .gk-access-note { padding: clamp(1.25rem, 3vw, 1.75rem); border: 1px solid var(--color-rule); border-radius: var(--radius-card); background: var(--color-surface); box-shadow: none; }
.gk-access-card .gk-access-note h3 { margin-top: 0; font-size: var(--text-lg); }
.gk-access-cta-buttons { gap: var(--space-xs); }
.gk-access-cta-buttons .wp-block-button__link { padding: 0.65rem 1rem; font-size: var(--text-sm); }
.gk-site-footer .gk-footer-grid { grid-template-columns: minmax(0, 1.35fr) repeat(2, minmax(0, 1fr)); }

@media (max-width: 48rem) {
	.gk-home--school .gk-section { padding-block: clamp(3.25rem, 12vw, 4rem); }
	.gk-home--school .gk-school-story { gap: var(--space-lg); margin-top: var(--space-2xl); }
	.gk-home--school .gk-grade-list__item { align-items: flex-start; gap: var(--space-2xs); }
	.gk-home--school .gk-grade-list__item h3 { min-width: 0; }
	.gk-home--school .gk-note > .wp-block-column:first-child { max-width: 13rem; }
	.gk-home--school .gk-note h2 { max-width: none; }
	.gk-access-cta-buttons { flex-wrap: wrap !important; }
	.gk-access-cta-buttons .wp-block-button { width: auto; }
	.gk-site-footer .gk-footer-grid { grid-template-columns: minmax(0, 1fr); }
}

/* Colour restoration: retain the current school-guide layout and restore the
 * bright cyan / red visual identity from the approved reference. */
.gk-home--school .gk-hero,
.gk-home--school .gk-hero::before,
.gk-home--school .gk-hero::after,
.gk-home--school .gk-final-cta::before { background-image: none; }
.gk-home--school .gk-hero {
	position: relative;
	overflow: clip;
	background:
		linear-gradient(118deg, color-mix(in oklab, var(--color-accent) 12%, transparent) 0 20%, transparent 20% 100%),
		linear-gradient(145deg, transparent 0 77%, color-mix(in oklab, var(--color-action) 8%, transparent) 77% 100%),
		var(--color-surface);
}
.gk-home--school .gk-hero::after {
	display: block;
	position: absolute;
	inset: 0;
	z-index: 0;
	background:
		linear-gradient(139deg, transparent 0 43%, var(--wp--preset--color--brand-red) 43% 50%, transparent 50%),
		linear-gradient(125deg, transparent 0 54%, var(--color-decoration-blue) 54% 61%, transparent 61%);
	opacity: 0.22;
	pointer-events: none;
	content: "";
}
.gk-home--school .gk-hero__inner { position: relative; z-index: 1; }
.gk-home--school .gk-section--soft,
.gk-home--school .gk-final-cta { background-color: var(--color-paper-2); }
.gk-home--school .gk-school-letter { background-color: var(--color-surface); }
.gk-home--school .gk-place-line { border-left-color: var(--wp--preset--color--brand-cyan); }
.gk-home--school .gk-hero__facts p { border-color: var(--wp--preset--color--brand-cyan); }

/* Site-wide colour system: white remains the reading surface, while the
 * cyan / red identity now appears consistently on every page. */
body { background-color: var(--color-paper); }
.gk-page-main,
.gk-page-main > .wp-block-group,
.gk-section--soft,
.is-style-gk-section-soft { background-color: var(--color-paper-2); }
.gk-page-main > .gk-section:nth-of-type(even):not(.gk-section--soft),
.gk-page-main > .wp-block-group:nth-of-type(even):not(.gk-section--soft) {
	background-color: color-mix(in oklab, var(--color-paper) 72%, var(--color-paper-2));
}
.gk-page-main :where(.gk-card, .gk-course-card, .gk-result-card, .gk-access-route-map, .gk-form-guide) {
	border-color: var(--color-rule);
}
.gk-page-main :where(.gk-card__number, .gk-step__number) { background-color: var(--wp--preset--color--cyan-dark); }
.gk-page-main :where(.gk-section-mark, .gk-eyebrow)::before { background-color: var(--wp--preset--color--brand-cyan); }
.gk-site-header { border-bottom-color: var(--color-rule); }
.gk-site-footer { background-color: var(--color-paper-2); border-top-color: var(--wp--preset--color--brand-cyan); }
.gk-site-footer a:hover { color: var(--wp--preset--color--cyan-dark); }

.gk-home--school .gk-note--text-only { max-width: 54rem; }
.gk-home--school .gk-note--text-only h2 { max-width: 21ch; }
.gk-home--school .gk-note--text-only > p { max-width: 48rem; }

/* Keep the quiet cyan/red colour field without the small decorative hero lines. */
.gk-home--school .gk-hero::after { display: none; }

.gk-title-line { white-space: nowrap; }
.gk-letter .gk-title-line { display: block; }
@media (max-width: 48rem) {
	.gk-home--school .gk-school-letter h2,
	.gk-home--school .gk-section__head--compact h2 {
		font-size: clamp(1.65rem, 7vw, 1.9rem);
		line-height: 1.42;
		letter-spacing: 0;
	}
	.gk-home--school .gk-section__head--compact h2 .gk-title-line { display: block; }
	.gk-home--school .gk-final-cta h2 { font-size: clamp(1.55rem, 6.5vw, 1.85rem); line-height: 1.42; letter-spacing: 0; }
	.gk-home--school .gk-final-cta h2 .gk-title-line { display: block; }
}

/* The lesson names are the primary headings; the explanatory sentence stays secondary. */
.gk-home--school .gk-school-story__copy > h3 {
	margin: 0 0 var(--space-sm);
	color: var(--color-ink);
	font-size: clamp(1.7rem, 3vw, 2.25rem);
	line-height: 1.25;
	letter-spacing: 0.01em;
}

.gk-home--school .gk-school-story__copy > .gk-story-lead {
	margin-top: 0;
	font-size: clamp(1.08rem, 1.7vw, 1.22rem);
	line-height: 1.7;
}

@media (max-width: 48rem) {
	.gk-home--school .gk-school-story__copy > h3 {
		font-size: clamp(1.55rem, 7.2vw, 1.85rem);
	}

	/* This short section title reads naturally as one complete sentence on phones. */
	.gk-home--school .gk-school-grades .gk-section__head--compact h2 {
		font-size: clamp(1.25rem, 5.8vw, 1.55rem);
		line-height: 1.35;
	}

	.gk-home--school .gk-school-grades .gk-section__head--compact h2 .gk-title-line {
		display: inline;
	}
}

/* On small screens the site menu opens beneath the header instead of taking over a new screen. */
@media (max-width: 68.75rem) {
	.gk-header-inner {
		position: relative;
	}

	.gk-main-navigation {
		position: static;
	}

	.gk-main-navigation .wp-block-navigation__responsive-container.is-menu-open {
		display: block !important;
		position: absolute !important;
		top: 100%;
		right: calc(var(--gk-gutter) * -1);
		left: calc(var(--gk-gutter) * -1);
		z-index: 1;
		height: auto !important;
		min-height: 0;
		overflow: visible !important;
		padding: calc(var(--space-lg) + var(--space-2xs)) var(--gk-gutter) var(--space-lg);
		border-bottom: var(--rule-hair) solid var(--color-rule);
		background: var(--color-surface);
		box-shadow: 0 var(--space-sm) var(--space-lg) color-mix(in oklab, var(--color-ink) 10%, transparent);
		animation: gk-mobile-menu-open var(--dur-short) var(--ease-out) both;
	}

	.gk-main-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-close,
	.gk-main-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog {
		position: static !important;
		display: block !important;
		width: 100%;
		height: auto !important;
		min-height: 0 !important;
		transform: none !important;
	}

	.gk-main-navigation .wp-block-navigation__responsive-container-content {
		display: block !important;
		height: auto !important;
		padding-top: var(--space-xl);
	}

	.gk-main-navigation .wp-block-navigation__responsive-container-close {
		top: var(--space-xs);
		right: var(--gk-gutter);
	}

	/* Let the header grow into a second row: the menu remains part of the page flow. */
	.gk-header-inner:has(.wp-block-navigation__responsive-container.is-menu-open) {
		grid-template-rows: auto auto;
		row-gap: 0;
	}

	.gk-main-navigation:has(.wp-block-navigation__responsive-container.is-menu-open) {
		grid-column: 1 / -1;
		grid-row: 2;
		justify-self: stretch;
		width: 100%;
	}

	.gk-main-navigation .wp-block-navigation__responsive-container.is-menu-open {
		position: static !important;
		inset: auto !important;
		width: 100% !important;
		margin: 0;
		box-shadow: none;
	}

	.gk-main-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
		position: static !important;
		display: flex !important;
		margin: 0 0 var(--space-xs) auto;
	}
}

@keyframes gk-mobile-menu-open {
	from { opacity: 0; transform: translateY(calc(var(--space-sm) * -1)); }
	to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
	.gk-main-navigation .wp-block-navigation__responsive-container.is-menu-open {
		animation-duration: 1ms;
	}
}

/* Reintroduce the earlier photo-led first view while keeping the current copy and page structure. */
.gk-home--school .gk-hero {
	min-height: min(42rem, calc(100svh - var(--gk-header-height)));
	padding-block: clamp(3.75rem, 6.5vw, 6.5rem);
}

.gk-home--school .gk-hero__inner {
	gap: clamp(2rem, 5vw, 4rem);
}

.gk-home--school .gk-hero__visual::after {
	display: block;
	right: calc(var(--space-lg) * -1);
	bottom: calc(var(--space-lg) * -1);
	width: 68%;
	height: 58%;
	border-radius: 0;
	background: var(--color-decoration-blue);
	opacity: 0.92;
}

.gk-home--school .gk-hero__photo {
	position: relative;
	z-index: 1;
	border-color: var(--color-surface);
	border-radius: var(--radius-media);
	box-shadow: var(--shadow-card-hover);
}

.gk-home--school .gk-hero__photo img {
	aspect-ratio: 5 / 4;
}

.gk-home--school .gk-hero__message {
	display: block;
	bottom: calc(var(--space-lg) * -1);
	left: calc(var(--space-lg) * -1);
	width: min(78%, 21rem);
	padding: var(--space-md) var(--space-lg);
	border-color: var(--color-rule);
	border-radius: var(--radius-media);
	background: var(--color-surface);
	box-shadow: var(--shadow-card);
}

.gk-home--school .gk-hero__message-kicker {
	margin: 0;
	color: var(--wp--preset--color--red-dark);
	font-size: var(--text-xs);
	font-weight: 800;
	letter-spacing: 0.16em;
}

.gk-home--school .gk-hero__message h2 {
	margin-top: var(--space-2xs);
	font-size: clamp(1.6rem, 3.1vw, 2.3rem);
	line-height: 1.35;
}

@media (max-width: 48rem) {
	.gk-home--school .gk-hero {
		min-height: 0;
	}

	/* Keep the classroom photograph and message visible on phones as well. */
	.gk-home--school .gk-hero__visual {
		display: block;
		width: 100%;
		margin-top: var(--space-xl);
	}

	.gk-home--school .gk-hero__photo img {
		aspect-ratio: 16 / 10;
	}

	.gk-home--school .gk-hero__visual::after {
		right: calc(var(--space-sm) * -1);
		bottom: calc(var(--space-sm) * -1);
		width: 72%;
		height: 48%;
	}

	.gk-home--school .gk-hero__message {
		display: block;
		bottom: calc(var(--space-sm) * -1);
		left: var(--space-sm);
		width: min(82%, 18rem);
		padding: var(--space-sm) var(--space-md);
	}

	.gk-home--school .gk-hero__message h2 {
		font-size: clamp(1.35rem, 6.5vw, 1.75rem);
	}
}

/* Mobile navigation: a compact dropdown anchored to the menu button. */
.gk-mobile-menu {
	display: none;
}

@media (max-width: 68.75rem) {
	.gk-main-navigation {
		display: none !important;
	}

	.gk-mobile-menu {
		display: block;
		position: relative;
		z-index: 2;
	}

	.gk-mobile-menu > summary {
		display: grid;
		width: 2.75rem;
		height: 2.75rem;
		padding: 0;
		place-content: center;
		gap: 0.25rem;
		border: 2px solid var(--color-ink);
		border-radius: 999px;
		background: var(--color-surface);
		cursor: pointer;
		list-style: none;
	}

	.gk-mobile-menu > summary::-webkit-details-marker {
		display: none;
	}

	.gk-mobile-menu > summary span {
		display: block;
		width: 1rem;
		height: var(--rule-hair);
		background: var(--color-ink);
	}

	.gk-mobile-menu__panel {
		position: absolute;
		top: calc(100% + var(--space-xs));
		right: 0;
		width: min(18rem, calc(100vw - (var(--gk-gutter) * 2)));
		padding: var(--space-sm) var(--space-md);
		border: var(--rule-hair) solid var(--color-rule);
		border-radius: var(--radius-media);
		background: var(--color-surface);
		box-shadow: var(--shadow-card);
		animation: gk-mobile-menu-open var(--dur-short) var(--ease-out) both;
	}

	.gk-mobile-menu__panel a {
		display: block;
		padding: var(--space-xs) 0;
		border-bottom: var(--rule-hair) solid var(--color-rule);
		color: var(--color-ink);
		font-size: var(--text-sm);
		font-weight: 700;
		text-decoration: none;
	}

	.gk-mobile-menu__panel a:last-child {
		border-bottom: 0;
	}

	.gk-mobile-menu__panel a:hover,
	.gk-mobile-menu__panel a:focus-visible {
		color: var(--wp--preset--color--red-dark);
	}
}

/* 1.4.40 · Full-width classroom hero based on the approved brand reference.
 * The supplied photograph is the atmosphere; current copy and conversion paths remain intact. */
.gk-home--school .gk-hero--brand-photo {
	display: grid;
	min-height: min(48rem, calc(100svh - var(--gk-header-height)));
	padding-block: 0;
	isolation: isolate;
	background: var(--color-ink);
	color: var(--color-action-ink);
}

.gk-home--school .gk-hero--brand-photo::before {
	display: block;
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(90deg, color-mix(in oklab, var(--color-ink) 92%, transparent) 0%, color-mix(in oklab, var(--color-ink) 76%, transparent) 42%, color-mix(in oklab, var(--color-ink) 18%, transparent) 78%),
		linear-gradient(0deg, color-mix(in oklab, var(--color-ink) 45%, transparent), transparent 55%);
	content: "";
}

.gk-home--school .gk-hero--brand-photo::after {
	display: block;
	position: absolute;
	inset: auto 0 0;
	z-index: 2;
	width: 100%;
	height: var(--rule-fine);
	background: linear-gradient(90deg, var(--color-action) 0 18%, var(--color-action-ink) 18% 82%, var(--color-action) 82% 100%);
	content: "";
}

.gk-hero--brand-photo .gk-hero__backdrop {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	max-width: none;
	height: 100%;
	margin: 0;
}

.gk-hero--brand-photo .gk-hero__backdrop img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 58%;
}

.gk-hero--brand-photo .gk-hero__brand-content {
	display: flex;
	position: relative;
	z-index: 1;
	width: min(calc(100% - (var(--gk-gutter) * 2)), var(--wp--style--global--wide-size));
	min-height: min(48rem, calc(100svh - var(--gk-header-height)));
	margin-inline: auto;
	padding: clamp(1.5rem, 3vw, 2.25rem) 0 clamp(3.5rem, 6vw, 4.5rem);
	flex-direction: column;
	justify-content: flex-start;
	align-items: flex-start;
}

.gk-hero--brand-photo .gk-hero__brand-content > * {
	width: min(100%, 44rem);
	margin-right: auto;
	margin-left: 0;
}

.gk-hero--brand-photo .gk-place-line {
	padding-left: var(--space-sm);
	border-left-color: var(--color-action);
	color: var(--color-action-ink) !important;
	text-shadow: 0 var(--rule-hair) var(--space-2xs) color-mix(in oklab, var(--color-ink) 75%, transparent);
}

.gk-hero--brand-photo .gk-hero__brand-content h1 {
	margin-block: var(--space-sm) var(--space-xs);
	color: var(--color-action-ink);
	font-family: var(--font-outlier);
	font-size: clamp(2.75rem, 5vw, 4.3rem);
	font-weight: 800;
	line-height: 1.1;
	letter-spacing: -0.045em;
	text-shadow: 0 var(--rule-hair) var(--space-xs) color-mix(in oklab, var(--color-ink) 76%, transparent);
}

.gk-hero--brand-photo .gk-hero__promise {
	margin-block: 0 var(--space-sm);
	color: var(--color-action-ink) !important;
	font-size: clamp(1.25rem, 2vw, 1.65rem);
	text-shadow: 0 var(--rule-hair) var(--space-2xs) color-mix(in oklab, var(--color-ink) 75%, transparent);
}

.gk-hero--brand-photo :where(.gk-hero__lead, .gk-hero__description, .gk-hero__service-line) {
	color: color-mix(in oklab, var(--color-action-ink) 92%, transparent) !important;
	text-shadow: 0 var(--rule-hair) var(--space-2xs) color-mix(in oklab, var(--color-ink) 78%, transparent);
}

.gk-hero--brand-photo .gk-hero__lead {
	margin-bottom: var(--space-xs);
	font-size: clamp(1.05rem, 1.5vw, 1.25rem) !important;
}

.gk-hero--brand-photo .gk-hero__description {
	display: none;
	max-width: 40rem;
	margin-top: 0;
}

.gk-hero--brand-photo .gk-hero__facts {
	gap: var(--space-xs);
	margin-top: var(--space-sm);
}

.gk-hero--brand-photo .gk-hero__facts p {
	padding: 0.45rem 0.8rem;
	border: var(--rule-hair) solid color-mix(in oklab, var(--color-action-ink) 58%, transparent);
	background: color-mix(in oklab, var(--color-ink) 50%, transparent);
	color: var(--color-action-ink) !important;
}

.gk-hero--brand-photo .gk-hero__service-line {
	margin-block: var(--space-sm) var(--space-md);
}

.gk-hero--brand-photo .gk-button-row {
	gap: var(--space-sm);
}

.gk-hero--brand-photo .gk-button--secondary .wp-block-button__link,
.gk-hero--brand-photo .wp-block-button.is-style-outline > .wp-block-button__link {
	border-color: var(--color-action-ink);
	background: color-mix(in oklab, var(--color-ink) 38%, transparent);
	color: var(--color-action-ink);
}

.gk-hero--brand-photo .gk-button--secondary .wp-block-button__link:hover,
.gk-hero--brand-photo .wp-block-button.is-style-outline > .wp-block-button__link:hover {
	border-color: var(--color-action-ink);
	background: var(--color-action-ink);
	color: var(--color-ink);
}

.gk-hero--brand-photo .gk-hero__signature {
	position: absolute;
	right: 0;
	bottom: clamp(1.25rem, 3vw, 2rem);
	width: auto;
	margin: 0;
	color: var(--color-action-ink) !important;
	font-family: var(--font-body);
	font-size: clamp(1.1rem, 2vw, 1.45rem);
	font-weight: 500;
	letter-spacing: 0.08em;
	text-shadow: 0 var(--rule-hair) var(--space-xs) color-mix(in oklab, var(--color-ink) 80%, transparent);
}

@media (max-width: 48rem) {
	.gk-home--school .gk-hero--brand-photo,
	.gk-hero--brand-photo .gk-hero__brand-content {
		min-height: clamp(40rem, 105svh, 46rem);
	}

	.gk-home--school .gk-hero--brand-photo::before {
		background:
			linear-gradient(0deg, color-mix(in oklab, var(--color-ink) 94%, transparent) 0%, color-mix(in oklab, var(--color-ink) 78%, transparent) 62%, color-mix(in oklab, var(--color-ink) 28%, transparent) 100%);
	}

	.gk-hero--brand-photo .gk-hero__backdrop img {
		object-position: 60% center;
	}

	.gk-hero--brand-photo .gk-hero__brand-content {
		justify-content: flex-start;
		padding-block: clamp(3rem, 14vw, 4.5rem) calc(var(--gk-mobile-cta-height) + var(--space-lg));
	}

	.gk-hero--brand-photo .gk-hero__brand-content h1 {
		font-size: clamp(2.05rem, 9.5vw, 2.4rem);
		line-height: 1.12;
	}

	.gk-hero--brand-photo .gk-place-line {
		font-size: var(--text-xs);
		line-height: 1.75;
	}

	.gk-hero--brand-photo .gk-hero__description {
		display: none;
	}

	.gk-hero--brand-photo .gk-hero__service-line {
		font-size: var(--text-sm);
		line-height: 1.75;
	}

	.gk-hero--brand-photo .gk-button-row {
		width: 100%;
	}

	.gk-hero--brand-photo .gk-button-row .wp-block-button {
		flex: 1 1 9rem;
	}

	.gk-hero--brand-photo .gk-button-row .wp-block-button__link {
		width: 100%;
		padding-inline: var(--space-xs);
		font-size: var(--text-sm);
	}

	.gk-hero--brand-photo .gk-hero__signature {
		display: none;
	}
}

/* 1.4.45 · Hero lesson choices jump to their matching explanations. */
.gk-hero__facts p {
	transition: border-color 160ms ease, background-color 160ms ease, transform 160ms ease;
}

.gk-hero__fact-link {
	display: block;
	color: inherit;
	text-decoration: none;
}

.gk-hero__facts p:hover,
.gk-hero__facts p:focus-within {
	border-color: currentColor;
	background-color: color-mix(in oklab, var(--color-ink) 68%, transparent);
	transform: translateY(-1px);
}

.gk-hero__fact-link:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 4px;
}

#gk-small-group,
#gk-individual {
	scroll-margin-top: calc(var(--gk-header-height) + var(--space-md));
}

/* 1.4.47 · On phones, both lesson sections share one clear reading order:
 * lesson title, photograph, then explanatory copy. */
@media (max-width: 48rem) {
	.gk-home--school .gk-school-story,
	.gk-home--school .gk-school-story--reverse {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr);
		gap: var(--space-md);
	}

	.gk-home--school .gk-school-story > .wp-block-column {
		display: contents;
	}

	.gk-home--school .gk-school-story h3 {
		order: 1;
		margin-bottom: 0;
	}

	.gk-home--school .gk-school-story .wp-block-image {
		order: 2;
	}

	.gk-home--school .gk-school-story .gk-story-lead {
		order: 3;
		margin-bottom: 0;
	}

	.gk-home--school .gk-school-story .gk-school-story__copy > p:not(.gk-story-lead) {
		order: 4;
		margin-top: 0;
	}
}

/* 1.4.44 · User-supplied book-and-brush logo in the site header.
 * The unmodified source is cropped by its frame so the main mark stays exact. */
.gk-site-header .gk-header-inner {
	width: min(100%, 75rem);
	max-width: 75rem;
	margin-inline: auto;
}

.gk-site-header .gk-wordmark {
	display: block;
	position: relative;
	width: clamp(13.5rem, 20vw, 16rem);
	height: 4.5rem;
	overflow: hidden;
	background-image: url("../images/gakujikan-logo-header.png");
	background-repeat: no-repeat;
	background-position: 50% 35%;
	background-size: cover;
	mix-blend-mode: multiply;
}

.gk-site-header .gk-wordmark-kanji {
	position: absolute;
	inset: 0;
	margin: 0;
	font-size: 0;
}

.gk-site-header .gk-wordmark-kanji a {
	display: block;
	width: 100%;
	height: 100%;
	font-size: 0;
}

.gk-site-header .gk-wordmark-roman {
	display: none;
}

@media (max-width: 68.75rem) {
	.gk-site-header .gk-wordmark {
		width: clamp(11.25rem, 55vw, 14rem);
		height: 3.75rem;
		background-position: 50% 35%;
	}
}

@media (max-width: 22.5rem) {
	.gk-site-header .gk-wordmark {
		width: 10.5rem;
	}
}

/* 1.4.48 · Final brand alignment. Pale section surfaces stay unchanged;
 * interactive accents now use the logo navy, brand red, and white only. */
:root {
	--wp--preset--color--brand-cyan: var(--color-accent);
	--wp--preset--color--cyan-dark: var(--color-accent);
}

.gk-mobile-line {
	display: inline;
}

.gk-footer-brand .gk-wordmark {
	display: block;
	position: relative;
	width: clamp(11.5rem, 17vw, 13.5rem);
	height: 3.75rem;
	overflow: hidden;
	background-image: url("../images/gakujikan-logo-header.png");
	background-repeat: no-repeat;
	background-position: 50% 35%;
	background-size: cover;
	mix-blend-mode: multiply;
}

.gk-footer-brand .gk-wordmark-kanji {
	position: absolute;
	inset: 0;
	margin: 0;
	font-size: 0;
}

.gk-footer-brand .gk-wordmark-kanji a {
	display: block;
	width: 100%;
	height: 100%;
	font-size: 0;
}

.gk-footer-brand .gk-wordmark-roman {
	display: none;
}

.gk-access-map-button--mobile {
	display: block;
}

.gk-access-map-button--desktop,
.gk-access-card {
	display: none !important;
}

.gk-access-grid > .wp-block-column:first-child {
	flex-basis: 100% !important;
}

.gk-access-map-embed {
	width: 100%;
	height: clamp(20rem, 42vw, 30rem);
	overflow: clip;
	border: 1px solid var(--color-rule);
	border-radius: var(--radius-card);
	background: var(--color-surface-soft);
}

.gk-access-map-embed iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}

.gk-access-guide {
	width: min(100%, 40rem);
	margin: var(--space-xl) auto 0;
	overflow: clip;
	border: 1px solid var(--color-rule);
	border-radius: var(--radius-media);
	background: var(--color-surface);
}

.gk-access-guide img {
	display: block;
	width: 100%;
	height: auto;
}

.gk-footer-contact {
	display: none !important;
}

.gk-site-footer .gk-footer-grid {
	grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
}

.gk-results-growth .gk-grid--3 {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-items: stretch;
}

.gk-results-growth .gk-growth-card:first-child {
	grid-column: 1 / -1;
}

.gk-growth-card {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.gk-growth-timeline {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, auto));
	align-items: center;
	gap: clamp(0.45rem, 1.2vw, 0.9rem);
	margin-top: var(--space-sm);
}

.gk-growth-timeline--two {
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
}

.gk-growth-step {
	min-width: 0;
	padding: clamp(0.85rem, 2vw, 1.15rem);
	border-left: 3px solid var(--color-accent);
	background: var(--color-paper-3);
}

.gk-growth-step--latest {
	border-left-color: var(--color-action);
	background: color-mix(in srgb, var(--color-action) 8%, white);
}

.gk-growth-step__label,
.gk-growth-step__score {
	margin: 0;
}

.gk-growth-step__label {
	font-size: var(--text-xs);
	font-weight: 700;
	color: var(--color-accent);
}

.gk-growth-step__score {
	display: grid;
	gap: 0.2rem;
	margin-top: 0.35rem;
	line-height: 1.35;
}

.gk-growth-step__score strong {
	font-size: clamp(1.25rem, 2.5vw, 1.7rem);
	color: var(--color-ink);
}

.gk-growth-step__score span {
	font-weight: 700;
	white-space: nowrap;
}

.gk-growth-arrow {
	font-size: 1.45rem;
	font-weight: 700;
	color: var(--color-action);
}

.gk-growth-summary {
	margin-top: auto !important;
	padding-top: var(--space-md);
	border-top: 1px solid var(--color-rule);
	font-weight: 700;
}

@media (max-width: 48rem) {
	.gk-hero--brand-photo .gk-hero__promise .gk-mobile-line {
		display: block;
	}

	.gk-access-map-button--desktop,
	.gk-access-card {
		display: none !important;
	}

	.gk-access-map-button--mobile {
		display: none;
	}

	.gk-access-map-embed {
		height: 18rem;
	}

	.gk-site-footer .gk-footer-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.gk-footer-brand .gk-wordmark {
		width: 12rem;
		height: 3.375rem;
	}

	.gk-growth-timeline,
	.gk-growth-timeline--two {
		grid-template-columns: minmax(0, 1fr);
	}

	.gk-results-growth .gk-grid--3 {
		grid-template-columns: minmax(0, 1fr);
	}

	.gk-results-growth .gk-growth-card:first-child {
		grid-column: auto;
	}

	.gk-growth-arrow {
		transform: rotate(90deg);
		text-align: center;
		line-height: 1;
	}
}
