/*
 * Page structure: page heads, the prose column with wide/full breakouts, sections, empty states, footer.
 */
/* Page heads */
.tz-page-head {
	width: 100%;
	max-width: calc(var(--tz-measure) + 2 * var(--tz-gutter));
	margin-inline: auto;
	padding: var(--tz-space-2xl) var(--tz-gutter) var(--tz-space-l);
}

.tz-page-head--archive {
	max-width: calc(var(--tz-wide) + 2 * var(--tz-gutter));
}

.tz-page-title {
	font-size: var(--tz-step-4);
}

.tz-page-lead {
	max-width: var(--tz-measure);
	margin-top: var(--tz-space-s);
	color: var(--tz-text-soft);
	font-size: var(--tz-step-1);
	line-height: 1.6;
}

.tz-article__meta {
	margin-bottom: var(--tz-space-xs);
	color: var(--tz-text-muted);
	font-size: var(--tz-step--1);
}

.tz-article__media {
	max-width: var(--tz-wide);
	margin: 0 auto var(--tz-space-xl);
}

.tz-article__media img {
	display: block;
	width: 100%;
}

/* Prose column: measure-limited children with wide and full breakouts. */
.tz-prose {
	padding-inline: var(--tz-gutter);
	padding-bottom: var(--tz-space-2xl);
}

.tz-prose > * {
	max-width: var(--tz-measure);
	margin-block: 0;
	margin-inline: auto;
}

.tz-prose > * + * {
	margin-top: var(--tz-space-m);
}

.tz-prose > :is(h2, h3, h4) {
	margin-top: var(--tz-space-xl);
}

.tz-prose > :is(h2, h3, h4) + * {
	margin-top: var(--tz-space-s);
}

.tz-prose > .alignwide {
	max-width: var(--tz-wide);
}

.tz-prose > .alignfull {
	max-width: none;
	margin-inline: calc(-1 * var(--tz-gutter));
}

.tz-prose > .alignleft,
.tz-prose > .alignright {
	max-width: min(50%, 20rem);
	margin-top: 0.4em;
}

.tz-prose > .alignleft {
	float: left;
	margin-inline: max(0px, (100% - var(--tz-measure)) / 2) var(--tz-space-m);
}

.tz-prose > .alignright {
	float: right;
	margin-inline: var(--tz-space-m) max(0px, (100% - var(--tz-measure)) / 2);
}

.tz-prose > .aligncenter {
	text-align: center;
}

.tz-prose::after {
	content: "";
	display: table;
	clear: both;
}

.tz-prose--inset {
	padding: 0;
}

.tz-prose--inset > *,
.tz-prose--inset > .alignwide,
.tz-prose--inset > .alignfull {
	max-width: var(--tz-measure);
	margin-inline: 0;
}

/* The front page hero is always full-bleed and flush under the header. */
.tz-front-content {
	padding-bottom: 0;
}

body .tz-front-content > .wp-block-cover:first-child {
	max-width: none;
	min-height: min(88svh, 52rem);
	margin-inline: calc(-1 * var(--tz-gutter));
	align-items: flex-end;
}

/* The hero sits on the curtain: a band of the jōshiki-maku closes its lower edge. */
.tz-front-content > .wp-block-cover:first-child::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 2;
	height: 10px;
	background: var(--tz-maku);
}

.tz-front-content > .wp-block-cover:first-child .wp-block-cover__inner-container > p:first-child {
	font-size: var(--tz-step--1);
	letter-spacing: 0.04em;
	opacity: 0.86;
}

.tz-front-content > .wp-block-cover:first-child .wp-block-cover__inner-container > :is(h1, h2) {
	max-width: 16em;
	margin-block: var(--tz-space-s) var(--tz-space-m);
}

.tz-front-content > :last-child:not(.alignfull, .wp-block-cover) {
	margin-bottom: var(--tz-space-2xl);
}

.tz-front-content + .tz-section {
	border-top: 0;
}

/* Sections */
.tz-section {
	padding-block: var(--tz-space-2xl);
	border-top: 1px solid var(--tz-line);
}

.tz-section__head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--tz-space-xs) var(--tz-space-l);
	margin-bottom: var(--tz-space-xl);
}

.tz-section__title {
	font-size: var(--tz-step-3);
}

.tz-archive {
	padding-bottom: var(--tz-space-2xl);
}

.tz-empty {
	max-width: var(--tz-measure);
	padding-block: var(--tz-space-l);
	color: var(--tz-text-soft);
}

.tz-empty__title {
	margin-bottom: var(--tz-space-xs);
	color: var(--tz-text);
	font-size: var(--tz-step-2);
}

.tz-empty .tz-button {
	margin-top: var(--tz-space-m);
}

.tz-notfound {
	max-width: calc(var(--tz-measure) + 2 * var(--tz-gutter));
	margin-inline: auto;
	padding: var(--tz-space-3xl) var(--tz-gutter);
}

.tz-notfound .tz-maku-rule {
	margin-bottom: var(--tz-space-l);
}

.tz-notfound__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--tz-space-xs);
	margin-top: var(--tz-space-l);
}

/* Footer: the dark "stage" band. Role tokens are re-pointed so shared components adapt. */
.tz-footer {
	--tz-bg: var(--tz-stage-bg);
	--tz-text: var(--tz-stage-text);
	--tz-text-muted: var(--tz-stage-muted);
	--tz-line: var(--tz-stage-line);
	--tz-line-strong: rgb(230 226 211 / 0.32);
	--tz-link-underline: var(--tz-stage-accent);
	--tz-focus: var(--tz-stage-text);

	background: var(--tz-bg);
	color: var(--tz-text);
	font-size: var(--tz-step--1);
}

.tz-footer__grid {
	display: grid;
	gap: var(--tz-space-xl);
	max-width: calc(var(--tz-wide) + 2 * var(--tz-gutter));
	margin-inline: auto;
	padding: var(--tz-space-2xl) var(--tz-gutter) var(--tz-space-xl);
}

.tz-footer__brand {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.625rem;
	font-family: var(--tz-font-display);
}

.tz-footer__brand-name {
	font-size: var(--tz-step-3);
	font-weight: 800;
	line-height: 1.1;
}

.tz-footer__brand-kanji {
	color: var(--tz-text-muted);
	font-size: var(--tz-step-0);
	letter-spacing: 0.12em;
}

.tz-footer__society {
	margin-top: var(--tz-space-xs);
	color: var(--tz-text-muted);
}

.tz-footer__address {
	margin-top: var(--tz-space-m);
	margin-bottom: var(--tz-space-2xs);
}

.tz-footer__label {
	margin-bottom: var(--tz-space-xs);
	color: var(--tz-text-muted);
	font-family: var(--tz-font-body);
	font-size: var(--tz-step--1);
	font-weight: 500;
	letter-spacing: 0.02em;
}

.tz-footer__menu li + li {
	margin-top: var(--tz-space-2xs);
}

.tz-footer__menu a {
	text-decoration: none;
}

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

.tz-footer__base {
	width: min(var(--tz-wide), 100% - 2 * var(--tz-gutter));
	margin-inline: auto;
	padding-block: var(--tz-space-s) var(--tz-space-l);
	border-top: 1px solid var(--tz-line);
	color: var(--tz-text-muted);
}

@media (min-width: 48em) {
	.tz-footer__grid {
		grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr);
	}
}

/* A short status line under a list page's lead, e.g. "Bookings are not open yet. Ask us a question". */
.tz-page-note {
	margin-top: var(--tz-space-s);
	font-weight: 700;
}
