/* ==========================================================================
   The Register  |  shared styles (assets/css/register.css)
   Owns: tokens, reset, type, utilities, verdict, buttons, header, mobile
   panel, footer, chip, filter bar, register table, photo strip, facts,
   review body (rail, booking card, figures, location, value table,
   disclosure, adjacent, related), archive head, tabs, term ledger, forms.
   Page files (home.css, single.css, archive.css) only ADD scoped rules.
   Breakpoints: 1100 (drop tier), 900 (header collapse), 720 (cards, gutter-m).
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Tokens (SPEC section 2)
   -------------------------------------------------------------------------- */
:root {
	--ink: #14161a;
	--ink-2: #1a1d22;
	--ink-3: #1e2126;
	--rule: #2a2d33;
	--rule-strong: #ece6d8;

	--cream: #ece6d8;
	--cream-2: #d6d0c3;
	--stone: #bfb8aa;
	--stone-2: #9a948a;
	--stone-3: #8a847a;

	--brass: #c9a96e;
	--skip: #8a6f6a;

	--font-serif: 'Newsreader', Georgia, 'Times New Roman', serif;
	--font-mono: 'IBM Plex Mono', 'SF Mono', Menlo, Consolas, monospace;

	--page-max: 1440px;
	--gutter: 64px;
	--gutter-m: 20px;
	--measure: 720px;
	--col-gap: 32px;

	color-scheme: dark;
}

/* --------------------------------------------------------------------------
   2. Reset and base (SPEC section 5: no radius, no shadow, hairlines, links, focus)
   -------------------------------------------------------------------------- */
*,
*::before,
*::after {
	box-sizing: border-box;
	border-radius: 0;
	box-shadow: none;
}

html {
	background: var(--ink);
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body {
	margin: 0;
	background: var(--ink);
	color: var(--cream-2);
	font-family: var(--font-serif);
	font-size: 19px;
	line-height: 1.65;
	font-weight: 300;
	font-optical-sizing: auto;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd, ul, ol { margin: 0; }
h1, h2, h3, h4, h5, h6 { font-weight: 400; color: var(--cream); }
ul, ol { padding: 0; }

img, svg, video, iframe { display: block; max-width: 100%; }
img { height: auto; object-fit: cover; filter: saturate(0.9); }
iframe { border: 0; }

a { color: var(--cream); text-decoration: none; transition: color .15s ease, border-color .15s ease; }
a:hover { color: var(--brass); }

button { font: inherit; color: inherit; background: none; border: 0; padding: 0; margin: 0; cursor: pointer; }
button:disabled { cursor: default; }

table { border-collapse: collapse; border-spacing: 0; }
hr { border: 0; border-top: 1px solid var(--rule); margin: 40px 0; }

::selection { background: var(--brass); color: var(--ink); }

:focus { outline: 1px solid var(--brass); outline-offset: 3px; }
:focus:not(:focus-visible) { outline: none; }
:focus-visible { outline: 1px solid var(--brass); outline-offset: 3px; }

/* --------------------------------------------------------------------------
   3. Typography (SPEC section 3) and utilities (CONTRACT section 4)
   -------------------------------------------------------------------------- */
.display,
.h1 {
	font-weight: 300;
	line-height: .98;
	letter-spacing: -.01em;
	text-wrap: balance;
	color: var(--cream);
}
.display { font-size: 66px; }
.h1 { font-size: 72px; }

.dek {
	font-style: italic;
	font-size: 24px;
	line-height: 1.4;
	font-weight: 300;
	color: var(--stone);
}

.body {
	font-size: 19px;
	line-height: 1.65;
	font-weight: 300;
	color: var(--cream-2);
	max-width: var(--measure);
}

.body-small {
	font-size: 14px;
	line-height: 1.6;
	font-weight: 300;
	color: var(--stone-3);
}

.mono {
	font-family: var(--font-mono);
	font-size: 12px;
	line-height: 1.4;
	font-weight: 400;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--stone-2);
}
.mono--strong { font-weight: 500; color: var(--cream); }
.brass { color: var(--brass); }

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

.skip-link {
	position: absolute;
	top: -200px;
	left: var(--gutter);
	z-index: 300;
	padding: 12px 18px;
	background: var(--brass);
	color: var(--ink);
	font-weight: 500;
}
.skip-link:focus { top: 12px; color: var(--ink); }

.rule-top { border-top: 1px solid var(--rule); }
.rule-top--strong { border-top: 1px solid var(--rule-strong); }

.wrap {
	max-width: var(--page-max);
	margin: 0 auto;
	padding: 0 var(--gutter);
}

.grid12 {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: var(--col-gap);
}

.no-thumb { background: var(--ink-3); width: 100%; min-height: 220px; }

/* Landmark wrapper for <main id="content"> (skip-link target). */
.site-main { display: block; }

/* --------------------------------------------------------------------------
   4. Verdict (SPEC section 4)
   -------------------------------------------------------------------------- */
.verdict { font-family: var(--font-serif); font-style: italic; font-weight: 300; }
.verdict--return { color: var(--brass); }
.verdict--once { color: var(--stone); }
.verdict--skip { color: var(--skip); }
.verdict--large { font-size: 40px; line-height: 1.1; }
.verdict--inline { font-size: 26px; line-height: 1.2; }

/* --------------------------------------------------------------------------
   5. Buttons
   -------------------------------------------------------------------------- */
.btn {
	display: inline-block;
	font-family: var(--font-mono);
	font-size: 12px;
	line-height: 1;
	font-weight: 500;
	letter-spacing: .06em;
	text-transform: uppercase;
	padding: 12px 18px;
	background: var(--brass);
	color: var(--ink);
	border: 1px solid var(--brass);
	white-space: nowrap;
	cursor: pointer;
}
.btn:hover { background: var(--cream); border-color: var(--cream); color: var(--ink); }
.btn--ghost { background: transparent; border-color: var(--cream); color: var(--cream); }
.btn--ghost:hover { background: transparent; border-color: var(--brass); color: var(--brass); }

/* --------------------------------------------------------------------------
   6. Header (SPEC section 5.1)
   -------------------------------------------------------------------------- */
.site-header { border-bottom: 1px solid var(--rule); }

.site-header__inner {
	max-width: var(--page-max);
	margin: 0 auto;
	padding: 30px var(--gutter);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 36px;
}

.site-header__brand {
	display: flex;
	align-items: baseline;
	gap: 14px;
	color: var(--cream);
	flex: 0 0 auto;
}
.site-header__brand:hover { color: var(--cream); }
.site-header__wordmark { font-size: 26px; line-height: 1; font-weight: 500; }
.site-header__tag { white-space: nowrap; }

.site-header__nav { margin-left: auto; }
.site-header__menu { display: flex; align-items: center; gap: 36px; list-style: none; }
.site-header__link { color: var(--stone-2); }
.site-header__link:hover { color: var(--brass); }
.site-header__link[aria-current="page"] { color: var(--cream); }

.site-header__cta { flex: 0 0 auto; }

.menu-toggle {
	display: none;
	color: var(--cream);
	padding: 8px 0;
	border-bottom: 1px solid transparent;
}
.menu-toggle:hover { color: var(--brass); }
.menu-toggle[aria-expanded="true"] { border-bottom-color: var(--cream); }

/* Mobile panel */
.mobile-panel {
	position: fixed;
	inset: 0;
	z-index: 200;
	background: var(--ink);
	overflow-y: auto;
}
.mobile-panel[hidden] { display: none; }
.mobile-panel__inner { padding: 30px var(--gutter) 48px; }
.mobile-panel__head { display: flex; align-items: center; justify-content: space-between; }
.mobile-panel__close { color: var(--cream); padding: 8px 0; }
.mobile-panel__close:hover { color: var(--brass); }
.mobile-panel__tag { white-space: nowrap; }
.mobile-panel__list { list-style: none; display: grid; gap: 22px; margin-top: 56px; }
.mobile-panel__link { font-size: 28px; line-height: 1.1; color: var(--cream); }
.mobile-panel__link[aria-current="page"] { color: var(--brass); }
.mobile-panel__cta { margin-top: 48px; }
body.menu-open { overflow: hidden; }

/* --------------------------------------------------------------------------
   7. Footer (SPEC section 5.2)
   -------------------------------------------------------------------------- */
.site-footer { border-top: 1px solid var(--rule); margin-top: 64px; }
.site-footer__inner {
	max-width: var(--page-max);
	margin: 0 auto;
	padding: 28px var(--gutter) 48px;
	display: flex;
	justify-content: space-between;
	gap: 24px;
}
.site-footer__left, .site-footer__right { margin: 0; }

/* --------------------------------------------------------------------------
   8. Caption chip (home hero, photo strip)
   -------------------------------------------------------------------------- */
.chip {
	position: absolute;
	left: 16px;
	bottom: 16px;
	z-index: 1;
	max-width: calc(100% - 32px);
	padding: 12px 16px;
	background: var(--ink);
	font-family: var(--font-mono);
	font-size: 12px;
	line-height: 1.4;
	font-weight: 400;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--stone-2);
}

/* --------------------------------------------------------------------------
   9. Filter bar (SPEC section 6.2)
   -------------------------------------------------------------------------- */
.filter-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding-top: 80px;
}
.filter-bar__chips { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.filter-chip__group { position: relative; }

.filter-chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 14px;
	border: 1px solid var(--rule);
	background: transparent;
	font-family: var(--font-mono);
	font-size: 12px;
	line-height: 1.4;
	font-weight: 400;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--stone-2);
	cursor: pointer;
	list-style: none;
	white-space: nowrap;
	user-select: none;
}
.filter-chip::-webkit-details-marker { display: none; }
.filter-chip::marker { content: ''; }
.filter-chip:hover { color: var(--cream); border-color: var(--stone-2); }
.filter-chip.is-active,
.filter-chip[data-active],
.filter-chip.is-open,
details[open] > .filter-chip { border-color: var(--cream); color: var(--cream); }
.filter-chip[aria-disabled="true"] { cursor: default; }
.filter-chip[aria-disabled="true"]:hover { border-color: var(--cream); }
.filter-chip.is-locked { border-color: var(--cream); color: var(--cream); }
.filter-chip__label { display: inline-block; min-width: 0; }

.filter-chip__menu {
	position: absolute;
	top: calc(100% + 8px);
	left: 0;
	z-index: 20;
	min-width: 240px;
	margin: 0;
	padding: 8px 0;
	list-style: none;
	background: var(--ink-2);
	border: 1px solid var(--rule);
}
.filter-chip__menu[hidden] { display: none; }
.filter-chip__option {
	display: block;
	width: 100%;
	padding: 10px 16px;
	text-align: left;
	font-family: var(--font-serif);
	font-size: 17px;
	line-height: 1.3;
	font-weight: 300;
	text-transform: none;
	letter-spacing: 0;
	color: var(--cream-2);
	white-space: nowrap;
}
.filter-chip__option:hover { color: var(--brass); background: var(--ink-3); }
.filter-chip__option.is-active { color: var(--cream); font-weight: 400; }

.filter-bar__sort { margin: 0; white-space: nowrap; }

/* --------------------------------------------------------------------------
   10. The Register table (SPEC section 6.3)
   -------------------------------------------------------------------------- */
table.register { display: block; width: 100%; }
.register__head, .register__body { display: block; }

tr.reg-row {
	position: relative;
	display: grid;
	grid-template-columns: 60px 4fr 2fr 2fr 1.4fr 1.2fr 1fr;
	gap: 24px;
	align-items: center;
	padding: 22px 0;
	border-bottom: 1px solid var(--rule);
}
.register--no-tier tr.reg-row { grid-template-columns: 60px 4fr 2fr 2fr 1.2fr 1fr; }
tr.reg-row:not(.reg-row--head):hover { background: var(--ink-2); }
tr.reg-row.is-hidden, tr.reg-row.is-filtered { display: none; }

tr.reg-row--head { padding: 12px 0; border-bottom: 1px solid var(--rule-strong); }
/* Head labels are mono (SPEC 6.3); declared after .reg-cell--* so they win on every type property. */
tr.reg-row--head .reg-cell {
	font-family: var(--font-mono);
	font-size: 12px;
	line-height: 1.4;
	font-weight: 400;
	font-style: normal;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--stone-2);
}

.reg-cell {
	display: block;
	min-width: 0;
	padding: 0;
	text-align: left;
	font-family: var(--font-serif);
	font-size: 17px;
	line-height: 1.3;
	font-weight: 300;
	color: var(--stone);
}
.reg-cell--no { font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; color: var(--stone-2); }
.reg-cell--property { font-size: 26px; line-height: 1.1; font-weight: 400; color: var(--cream); }
.reg-cell--verdict { font-style: italic; }
.reg-cell--verdict .verdict { font-size: 17px; }
.reg-cell--date { font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; text-align: right; color: var(--stone-2); }
.register--compact tr.reg-row { padding: 16px 0; }
.register--compact .reg-cell--property { font-size: 22px; }

a.reg-link { color: var(--cream); }
a.reg-link::after { content: ''; position: absolute; inset: 0; }
tr.reg-row:hover a.reg-link { color: var(--brass); }
a.reg-link:focus { outline: none; }
a.reg-link:focus-visible::after { outline: 1px solid var(--brass); outline-offset: 3px; }

button.reg-sort {
	font: inherit;
	letter-spacing: inherit;
	text-transform: inherit;
	color: inherit;
	position: relative;
	z-index: 2;
}
button.reg-sort:hover { color: var(--cream); }
[aria-sort="ascending"] button.reg-sort,
[aria-sort="descending"] button.reg-sort { color: var(--cream); }
[aria-sort="ascending"] button.reg-sort::after { content: ' \2191'; }
[aria-sort="descending"] button.reg-sort::after { content: ' \2193'; }

.register__more { text-align: center; padding: 28px 0 0; }
.register__more[hidden] { display: none; }
.register__more-btn {
	display: inline-block;
	color: var(--cream);
	padding: 0 0 4px;
	border-bottom: 1px solid var(--rule-strong);
}
.register__more-btn:hover { color: var(--brass); border-bottom-color: var(--brass); }

/* --------------------------------------------------------------------------
   11. Photo strip (SPEC section 6.4)
   -------------------------------------------------------------------------- */
.photo-strip {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 16px;
	padding-top: 40px;
}
.photo-strip__item { position: relative; display: block; height: 220px; overflow: hidden; background: var(--ink-3); }
.photo-strip__img { width: 100%; height: 100%; min-height: 100%; }
.photo-strip__item:hover .photo-strip__img { filter: saturate(1); }
.photo-strip__chip { pointer-events: none; }

/* --------------------------------------------------------------------------
   12. Facts block (SPEC section 7.1)
   -------------------------------------------------------------------------- */
.facts { border-top: 1px solid var(--rule-strong); }
.facts__row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 16px;
	padding: 12px 0;
	border-bottom: 1px solid var(--rule);
}
.facts__row:last-child { border-bottom: 0; }
.facts__label { flex: 0 0 auto; }
.facts__value { font-size: 17px; line-height: 1.3; font-weight: 300; color: var(--cream); text-align: right; }
.facts__value .verdict { font-size: 26px; line-height: 1.1; }

/* --------------------------------------------------------------------------
   13. Review body (SPEC section 7.3): grid, rail, disclosure, sections, figures
   -------------------------------------------------------------------------- */
.review {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: var(--col-gap);
	padding-top: 64px;
}
.review__rail { grid-column: 1 / span 3; position: sticky; top: 32px; align-self: start; }
.review__main { grid-column: 5 / -1; min-width: 0; }

.rail-sections { display: block; }
.rail-sections__label { margin: 0 0 16px; }
.rail-sections__list { list-style: none; display: grid; gap: 10px; }
.rail-sections__link { display: inline-block; color: var(--stone-2); }
.rail-sections__link:hover { color: var(--brass); }
.rail-sections__link.is-current { color: var(--cream); }
.review__rail .booking-card { margin-top: 40px; }

/* Booking card (SPEC 7.3 vertical in the rail, 7.4 horizontal at the end of the body) */
.booking-card {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 20px;
	border: 1px solid var(--brass);
	padding: 24px;
	background: transparent;
}
.booking-card__text { display: grid; gap: 10px; min-width: 0; }
.booking-card__eyebrow { margin: 0; }
.booking-card__title { margin: 0; font-size: 20px; line-height: 1.25; font-weight: 400; color: var(--cream); }
.booking-card__benefit { margin: 0; font-size: 14px; line-height: 1.5; font-weight: 300; color: var(--stone); }
.booking-card__cta { flex: 0 0 auto; }
.booking-card--horizontal {
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
	margin-top: 48px;
}

.disclosure {
	font-size: 14px;
	line-height: 1.6;
	font-weight: 300;
	color: var(--stone-3);
	max-width: var(--measure);
	margin: 0 0 40px;
}
.disclosure a { color: var(--stone); border-bottom: 1px solid var(--rule); }
.disclosure a:hover { color: var(--brass); }

.reg-body { counter-reset: fig var(--fig-start, 1); }
.reg-body--no-hero { --fig-start: 0; }

.reg-h2 {
	font-size: 36px;
	line-height: 1.1;
	font-weight: 400;
	color: var(--cream);
	margin: 64px 0 24px;
	scroll-margin-top: 32px;
}
.reg-body > .reg-h2:first-child { margin-top: 0; }
.reg-h2__no { display: inline-block; margin-right: 16px; vertical-align: baseline; }
.reg-h3 { font-size: 24px; line-height: 1.2; font-weight: 400; color: var(--cream); margin: 40px 0 16px; }

figure.reg-fig { margin: 32px 0; }
.reg-fig__img { width: 100%; height: auto; max-height: 640px; }
.reg-fig-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin: 32px 0; }
.reg-fig-pair figure.reg-fig { margin: 0; }
.reg-fig-pair .reg-fig__img { height: 260px; }

.fig-caption {
	display: block;
	margin-top: 10px;
	font-family: var(--font-mono);
	font-size: 12px;
	line-height: 1.4;
	font-weight: 400;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--stone-2);
}
.fig-caption::before { counter-increment: fig; content: "Fig. " counter(fig) " — "; }

/* Location block (section 01) */
.location-block {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--col-gap);
	border-top: 1px solid var(--rule);
	padding-top: 16px;
	margin: 32px 0;
}
.location-block__facts { display: grid; gap: 14px; align-content: start; }
.reg-body .location-block__facts p, .location-block__facts p { margin: 0; font-size: 17px; line-height: 1.4; font-weight: 300; color: var(--cream-2); }
.reg-body .location-block__facts .mono, .location-block__facts .mono { display: block; margin-bottom: 4px; }
.location-block__map { background: var(--ink-3); min-height: 200px; }
.map-embed {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 200px;
	border: 0;
	filter: invert(0.92) hue-rotate(180deg) saturate(0.6);
}

/* Bottom Line verdict */
.verdict-block { display: flex; align-items: baseline; gap: 16px; margin: 0 0 24px; }

/* Value table (section 07) */
.value-table { width: 100%; max-width: var(--measure); margin: 0 0 32px; }
.value-table th, .value-table td { text-align: left; padding: 12px 24px 12px 0; border-bottom: 1px solid var(--rule); vertical-align: baseline; }
.value-table th { font-weight: 400; color: var(--stone-2); }
.value-table td { color: var(--cream); }
.value-table tr:first-child th, .value-table tr:first-child td { border-top: 1px solid var(--rule-strong); }
.value-table td:last-child, .value-table th:last-child { padding-right: 0; }

/* Body copy element defaults (.body and .reg-body) */
.reg-body > p, .reg-body > ul, .reg-body > ol, .reg-body > blockquote { max-width: var(--measure); }
.reg-body p, .body p { margin: 0 0 1.3em; font-size: 19px; line-height: 1.65; font-weight: 300; color: var(--cream-2); }
.reg-body p a, .reg-body li a, .reg-body td a, .body p a, .body li a { color: var(--cream); border-bottom: 1px solid var(--rule-strong); }
.reg-body p a:hover, .reg-body li a:hover, .reg-body td a:hover, .body p a:hover, .body li a:hover { color: var(--brass); border-bottom-color: var(--brass); }
.reg-body a.brass, .body a.brass { color: var(--brass); border-bottom-color: var(--brass); }
.reg-body a.mono, .reg-body .mono a, .body a.mono { border-bottom: 0; }
.reg-body ul, .reg-body ol, .body ul, .body ol { padding-left: 1.25em; margin: 0 0 1.3em; }
.reg-body li, .body li { margin: 0 0 .4em; font-size: 19px; line-height: 1.65; font-weight: 300; color: var(--cream-2); }
.reg-body blockquote, .body blockquote { border-left: 1px solid var(--rule-strong); padding-left: 24px; margin: 0 0 1.3em; font-style: italic; color: var(--stone); }
.reg-body strong, .body strong { font-weight: 500; color: var(--cream); }
.reg-body em, .body em { font-style: italic; }
.reg-body h2:not(.reg-h2), .body h2 { font-size: 36px; line-height: 1.1; font-weight: 400; color: var(--cream); margin: 64px 0 24px; }
.reg-body h3:not(.reg-h3), .body h3 { font-size: 24px; line-height: 1.2; font-weight: 400; color: var(--cream); margin: 40px 0 16px; }
.reg-body h4, .body h4 { font-size: 19px; font-weight: 500; color: var(--cream); margin: 32px 0 12px; }
.reg-body table:not(.value-table), .body table { width: 100%; max-width: var(--measure); margin: 0 0 1.3em; font-size: 17px; font-weight: 300; }
.reg-body table:not(.value-table) th, .reg-body table:not(.value-table) td, .body th, .body td { text-align: left; padding: 10px 16px 10px 0; border-bottom: 1px solid var(--rule); vertical-align: top; }
.reg-body table:not(.value-table) th, .body th { font-weight: 400; color: var(--cream); border-bottom-color: var(--rule-strong); }
.reg-body img:not(.reg-fig__img), .body img { max-width: 100%; height: auto; margin: 32px 0; }
.reg-body iframe:not(.map-embed) { width: 100%; max-width: 100%; background: var(--ink-3); }

/* --------------------------------------------------------------------------
   14. Adjacent entries (7.5) and related (7.6)
   -------------------------------------------------------------------------- */
.adjacent {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--col-gap);
	border-top: 1px solid var(--rule);
	padding-top: 64px;
	margin-top: 64px;
}
.adjacent__prev, .adjacent__next {
	display: block;
	font-size: 26px;
	line-height: 1.1;
	font-weight: 400;
	color: var(--cream);
}
.adjacent__next { text-align: right; grid-column: 2; }
.adjacent__prev .mono, .adjacent__next .mono { display: block; margin-bottom: 10px; }

.related { margin-top: 64px; }
.related__title { margin: 0 0 8px; }

/* --------------------------------------------------------------------------
   15. Archive head, tabs, term ledger (SPEC section 8), page, 404
   -------------------------------------------------------------------------- */
.archive-head { padding-top: 64px; }
.archive-head__eyebrow { margin: 0 0 16px; }
.archive-head__title {
	font-size: 66px;
	line-height: .98;
	font-weight: 300;
	letter-spacing: -.01em;
	text-wrap: balance;
	color: var(--cream);
}
.archive-head__count { margin: 20px 0 0; }

.tabs { margin-top: 48px; border-bottom: 1px solid var(--rule); }
.tabs__list { display: flex; gap: 28px; list-style: none; overflow-x: auto; scrollbar-width: none; }
.tabs__list::-webkit-scrollbar { display: none; }
.tabs__link {
	display: inline-block;
	padding: 0 0 12px;
	margin-bottom: -1px;
	border-bottom: 1px solid transparent;
	color: var(--stone-2);
	white-space: nowrap;
}
.tabs__link:hover { color: var(--cream); }
.tabs__link.is-current { color: var(--cream); border-bottom-color: var(--cream); }

.term-ledger { border-top: 1px solid var(--rule-strong); }
.term-row {
	position: relative;
	display: grid;
	grid-template-columns: 4fr 1fr 3fr;
	gap: 24px;
	align-items: baseline;
	padding: 22px 0;
	border-bottom: 1px solid var(--rule);
}
.term-row:hover { background: var(--ink-2); }
.term-row__name { font-size: 26px; line-height: 1.1; font-weight: 400; color: var(--cream); }
.term-row__name::after { content: ''; position: absolute; inset: 0; }
.term-row:hover .term-row__name { color: var(--brass); }
.term-row__count { text-align: left; }
.term-row__latest { font-size: 17px; line-height: 1.3; font-weight: 300; color: var(--stone); text-align: right; }

.page-body { padding-top: 64px; max-width: var(--measure); }
.notfound { padding: 120px 0 80px; max-width: var(--measure); }

/* --------------------------------------------------------------------------
   16. Forms (dark controls)
   -------------------------------------------------------------------------- */
input, textarea, select {
	font: inherit;
	font-size: 17px;
	font-weight: 300;
	color: var(--cream);
	background: var(--ink-2);
	border: 1px solid var(--rule);
	padding: 12px 14px;
	width: 100%;
	max-width: var(--measure);
	color-scheme: dark;
}
input:hover, textarea:hover, select:hover { border-color: var(--stone-2); }
input:focus, textarea:focus, select:focus { border-color: var(--cream); }
::placeholder { color: var(--stone-3); opacity: 1; }
input[type="checkbox"], input[type="radio"] { width: auto; accent-color: var(--brass); }
input[type="submit"], button[type="submit"] {
	width: auto;
	font-family: var(--font-mono);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: .06em;
	text-transform: uppercase;
	padding: 12px 18px;
	background: var(--brass);
	color: var(--ink);
	border: 1px solid var(--brass);
	cursor: pointer;
}
input[type="submit"]:hover, button[type="submit"]:hover { background: var(--cream); border-color: var(--cream); }
.search-form { display: flex; gap: 12px; align-items: stretch; max-width: var(--measure); }
.search-form label { flex: 1 1 auto; }
.search-form .search-field { max-width: none; }
.search-form .search-submit { flex: 0 0 auto; }

/* --------------------------------------------------------------------------
   17. Breakpoints
   -------------------------------------------------------------------------- */
@media (max-width: 1099.98px) {
	/* Full nav must fit between 900 and 1100: tighten gaps and stack the brand early. */
	.site-header__inner { gap: 24px; }
	.site-header__menu { gap: 24px; }
	.site-header__brand { flex-direction: column; align-items: flex-start; gap: 6px; }

	tr.reg-row { grid-template-columns: 60px 4fr 2fr 2fr 1.2fr 1fr; }
	.reg-cell--tier { display: none; }
	.review__rail { grid-column: 1 / span 4; }
	.review__main { grid-column: 5 / -1; }
}

@media (max-width: 899.98px) {
	.site-header__inner { padding: 20px var(--gutter); gap: 20px; }
	.site-header__brand { flex-direction: column; align-items: flex-start; gap: 6px; }
	.site-header__wordmark { font-size: 22px; }
	.site-header__nav { display: none; }
	.site-header__cta { margin-left: auto; }
	.menu-toggle { display: inline-block; }

	.review { display: block; }
	.review__rail { display: none; }

	.filter-bar { flex-wrap: wrap; }
}

@media (max-width: 719.98px) {
	.wrap { padding: 0 var(--gutter-m); }
	.skip-link { left: var(--gutter-m); }
	.h1 { font-size: 44px; line-height: 1; }
	.display, .archive-head__title { font-size: 44px; line-height: 1; }
	.dek { font-size: 20px; }

	.site-footer__inner { flex-direction: column; gap: 12px; padding: 28px var(--gutter-m) 48px; }
	.site-header__inner, .mobile-panel__inner { padding-left: var(--gutter-m); padding-right: var(--gutter-m); }

	.filter-bar { flex-direction: column; align-items: flex-start; gap: 16px; padding-top: 48px; }
	.filter-chip__menu { min-width: 200px; }

	/* Register rows become stacked cards; same markup */
	.register__head { display: none; }
	tr.reg-row {
		grid-template-columns: auto auto 1fr auto;
		grid-template-areas:
			"property property property no"
			"location brand tier tier"
			"verdict verdict verdict date";
		gap: 8px 6px;
		align-items: baseline;
		padding: 20px 0;
	}
	.register--no-tier tr.reg-row {
		grid-template-columns: auto 1fr auto;
		grid-template-areas:
			"property property no"
			"location brand brand"
			"verdict verdict date";
	}
	.reg-cell--no { grid-area: no; text-align: right; }
	.reg-cell--property { grid-area: property; font-size: 22px; }
	.reg-cell--location, .reg-cell--brand, .reg-cell--tier {
		display: block;
		font-family: var(--font-mono);
		font-size: 12px;
		line-height: 1.4;
		font-weight: 400;
		letter-spacing: .06em;
		text-transform: uppercase;
		color: var(--stone-2);
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}
	.reg-cell--location { grid-area: location; }
	.reg-cell--brand { grid-area: brand; }
	.reg-cell--tier { grid-area: tier; }
	.reg-cell--brand:not(:empty)::before, .reg-cell--tier:not(:empty)::before { content: '\00b7\00a0'; }
	.reg-cell--location:empty + .reg-cell--brand::before { content: none; }
	.reg-cell--location:empty, .reg-cell--brand:empty, .reg-cell--tier:empty { display: none; }
	.reg-cell--verdict { grid-area: verdict; }
	.reg-cell--date { grid-area: date; }
	.register--compact .reg-cell--property { font-size: 20px; }

	.photo-strip {
		display: flex;
		gap: 12px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: var(--gutter-m);
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		margin: 0 calc(-1 * var(--gutter-m));
		padding: 40px var(--gutter-m) 0;
	}
	.photo-strip::-webkit-scrollbar { display: none; }
	.photo-strip__item { flex: 0 0 78vw; scroll-snap-align: start; }

	.facts { margin-top: 32px; }

	.reg-h2 { font-size: 30px; margin-top: 48px; }
	.reg-fig-pair { grid-template-columns: 1fr; }
	.reg-fig-pair .reg-fig__img { height: auto; }
	.location-block { grid-template-columns: 1fr; }

	.booking-card--horizontal { flex-direction: column; align-items: flex-start; gap: 20px; }

	.adjacent { grid-template-columns: 1fr; padding-top: 48px; margin-top: 48px; }
	.adjacent__next { text-align: left; grid-column: auto; }

	.archive-head { padding-top: 48px; }
	.tabs { margin-top: 32px; }
	.term-row { grid-template-columns: 1fr auto; }
	.term-row__latest { grid-column: 1 / -1; text-align: left; }

	.reg-body p, .body p, .reg-body li, .body li { font-size: 18px; }
}
