﻿/* Shared town-guide styles (extracted from St Ives v3). Per-town skins override --tg-* tokens. */
.duchy-territory-os--guide {
	--tg-ink: #102f38;
	--tg-sea: #0c8294;
	--tg-foam: #effcf8;
	--tg-sand: #fff2cf;
	--tg-blue: #80d9ef;
	--tg-line: 3px solid #102f38;
	background: #fffdf7;
	color: var(--tg-ink);
}

.duchy-territory-os--guide .territory-hero {
	min-height: min(650px, calc(100vh - 170px));
	margin: 0;
	display: flex;
	align-items: flex-end;
	border: 0;
	border-bottom: 5px solid var(--tg-ink);
	border-radius: 0;
	box-shadow: none;
	/* The photograph is supplied by .territory-hero__lcp-img. Do not also
	   render --img-hero here or the same scene appears twice. */
	background: #12343c;
}

.duchy-territory-os--guide .territory-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(90deg, rgba(4,35,44,.88) 0%, rgba(4,35,44,.63) 45%, rgba(4,35,44,.12) 78%);
}

.duchy-territory-os--guide .territory-hero__lcp-img {
	opacity: 1;
	mix-blend-mode: normal;
	object-position: center 48%;
}

.duchy-territory-os--guide .territory-hero__inner {
	width: min(1180px, calc(100% - 48px));
	margin: 0 auto;
	padding: clamp(90px, 13vw, 170px) 0 52px;
}

.duchy-territory-os--guide .territory-hero h1 {
	max-width: 12ch;
	/* Shared size for every guided town (Newquay reference). */
	font-size: clamp(2.75rem, 8vw, 5rem);
	font-weight: 800;
	line-height: 0.95;
	letter-spacing: normal;
	text-transform: none;
	overflow-wrap: normal;
	word-break: normal;
}

.duchy-territory-os--guide .territory-hero__sub {
	font-size: clamp(1rem, 2vw, 1.35rem);
	letter-spacing: .04em;
	text-transform: none;
}

.duchy-territory-os--guide .hero-stats {
	gap: 10px;
	/* Locator is absolute inside .territory-hero__inner â€” reserve its width + right inset. */
	max-width: calc(100% - min(360px, 34vw) - max(24px, (100vw - 1180px) / 2) - 24px);
}
.duchy-territory-os--guide .hero-stat {
	border: 2px solid #fff;
	border-radius: 999px;
	background: rgba(255,255,255,.14);
	backdrop-filter: blur(8px);
	box-shadow: none;
	color: #fff;
}
.duchy-territory-os--guide .hero-stat:hover { background: #fff; color: var(--tg-ink); }
.duchy-territory-os--guide .hero-quickbar-wrap { display: none; }

.town-guide-locator {
	position: absolute;
	right: max(24px, calc((100vw - 1180px) / 2));
	bottom: 50px;
	z-index: 3;
	width: min(360px, 34vw);
	overflow: hidden;
	display: grid;
	grid-template-columns: 1fr 1.25fr;
	border: 3px solid #fff;
	border-radius: 22px;
	background: #fffdf7;
	box-shadow: 8px 9px 0 rgba(16,47,56,.85);
	color: var(--tg-ink);
	text-decoration: none;
	transition: transform .18s ease, box-shadow .18s ease;
}

.town-guide-locator:hover,
.town-guide-locator:focus-visible {
	transform: translate(-3px,-4px);
	box-shadow: 11px 13px 0 rgba(16,47,56,.92);
}

.town-guide-locator:focus-visible { outline: 4px solid #ffd500; outline-offset: 4px; }
.town-guide-locator__copy { display: flex; flex-direction: column; padding: 17px 12px 14px 16px; }
.town-guide-locator__eyebrow { color: var(--tg-sea); font-size: .69rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.town-guide-locator__copy strong { margin-top: 8px; font-size: 1rem; line-height: 1.16; }
.town-guide-locator__cta { margin-top: auto; padding-top: 10px; font-size: .75rem; font-weight: 800; }
.town-guide-locator__map { position: relative; width: 100%; min-height: 0; aspect-ratio: 960 / 706; align-self: center; overflow: hidden; background: #acd9f4; }
.town-guide-locator__map picture { display: block; width: 100%; height: 100%; }
.town-guide-locator__map img { width: 100%; height: 100%; display: block; object-fit: cover; object-position: center; }
.town-guide-locator__pin { position: absolute; left: var(--tg-pin-left, 36%); top: var(--tg-pin-top, 62%); width: 18px; height: 18px; border: 4px solid #fff; border-radius: 50% 50% 50% 0; background: #ed2450; box-shadow: 0 2px 5px rgba(16,47,56,.5); transform: rotate(-45deg) translate(-50%,-50%); }
.town-guide-locator__pin span { position: absolute; left: 20px; top: -17px; padding: 4px 7px; border: 2px solid var(--tg-ink); border-radius: 8px; background: #ffd500; color: var(--tg-ink); font-size: .65rem; font-weight: 800; line-height: 1; white-space: nowrap; transform: rotate(45deg); }
.town-guide-locator small { grid-column: 1 / -1; padding: 5px 10px; background: #fff; color: #42616a; font-size: .52rem; line-height: 1.2; }

.town-guide-journey-nav {
	position: sticky;
	/* Match site header pin (header-root.css) — not a hard-coded 88px. */
	top: var(--duchy-sticky-subheader, 70px);
	z-index: 40;
	display: flex;
	justify-content: center;
	gap: 4px;
	padding: 10px 18px;
	border-bottom: var(--tg-line);
	background: rgba(255,253,247,.94);
	backdrop-filter: blur(12px);
}
.town-guide-journey-nav a {
	padding: 10px 14px;
	border-radius: 999px;
	color: var(--tg-ink);
	font-size: .86rem;
	font-weight: 800;
	text-decoration: none;
}
.town-guide-journey-nav a:hover,
.town-guide-journey-nav a:focus-visible {
	background: var(--tg-sand);
	outline: 2px solid var(--tg-ink);
	outline-offset: -2px;
}

.town-guide-guide {
	display: block;
	max-width: 1280px;
	margin: 0 auto;
	padding: 34px 28px 20px;
}
.town-guide-welcome {
	display: grid;
	grid-template-columns: minmax(0,1.05fr) minmax(360px,.95fr);
	gap: clamp(28px,6vw,84px);
	align-items: center;
	padding: clamp(34px,6vw,82px) 0;
}
.town-guide-kicker {
	margin: 0 0 12px;
	color: var(--tg-sea);
	font-size: .8rem;
	font-weight: 800;
	letter-spacing: .12em;
	text-transform: uppercase;
}
.town-guide-welcome h2,
.town-guide-section h2 {
	margin: 0;
	color: var(--tg-ink);
	font-size: clamp(2.35rem,5vw,5.4rem);
	font-weight: 800;
	line-height: .96;
	letter-spacing: -.05em;
	text-transform: none;
}
.town-guide-welcome__copy > p:last-child {
	max-width: 620px;
	margin: 24px 0 0;
	font-size: clamp(1.08rem,1.5vw,1.3rem);
	line-height: 1.65;
}
.town-guide-day-picker {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
}
.town-guide-day-picker a {
	min-height: 138px;
	padding: 20px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	border: var(--tg-line);
	border-radius: 22px;
	background: #fff;
	box-shadow: 5px 5px 0 var(--tg-ink);
	color: var(--tg-ink);
	text-decoration: none;
	transition: transform .18s ease, box-shadow .18s ease;
}
.town-guide-day-picker a:nth-child(2) { background: var(--tg-blue); }
.town-guide-day-picker a:nth-child(3) { background: #ff9fc4; }
.town-guide-day-picker a:nth-child(4) { background: var(--tg-sand); }
.town-guide-day-picker a:hover,
.town-guide-day-picker a:focus-visible { transform: translate(-2px,-2px); box-shadow: 8px 8px 0 var(--tg-ink); }
.town-guide-day-picker span { font-size: .74rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.town-guide-day-picker strong { font-size: 1.05rem; line-height: 1.25; }

.town-guide-section {
	scroll-margin-top: 150px;
	padding: clamp(54px,8vw,105px) 0;
	border-top: 2px solid rgba(16,47,56,.2);
	content-visibility: auto;
	contain-intrinsic-size: auto 760px;
}

/* Outdoors sits below the fold on most viewports — defer paint. */
.duchy-territory-os--guide .town-guide-outdoors {
	content-visibility: auto;
	contain-intrinsic-size: auto 640px;
}

/*
 * Mobile dock: keep Grid/Map + actions, hide the search field when collapsed.
 * Search returns when the dock is expanded (Filters / chevron).
 */
@media (max-width: 900px) {
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed {
		--ch-sd-dock-bar-height: 2.25rem;
	}
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-filter-dock__search-wrap {
		display: none;
	}
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-filter-dock__bar {
		padding: 0.35rem 0.5rem;
		gap: 0.35rem;
		justify-content: center;
		align-items: center;
	}
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-filter-dock__actions {
		flex: 1 1 auto;
		justify-content: center;
		align-items: center;
		gap: 0.3rem;
	}
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-bar-action-label,
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-segment-label,
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-sort-label {
		display: none;
	}
	/* Icon-only action chips (Near / Sort / Filters / chevron) — not the Grid/Map pill. */
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-bar-action,
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-toggle {
		min-width: 2.25rem;
		width: 2.25rem;
		height: 2.25rem;
		padding: 0;
	}
	/* Grid/Map: two icon chips matching Near/Sort/Filters (no nested pill). */
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-segment {
		flex: 0 0 auto;
		width: auto;
		min-width: 0;
		height: auto;
		padding: 0;
		gap: 0.3rem;
		display: flex;
		flex-direction: row;
		align-items: center;
		align-self: center;
		background: transparent;
		border: none;
		border-radius: 0;
		box-shadow: none;
		overflow: visible;
	}
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-segment-btn {
		flex: 0 0 2.25rem;
		width: 2.25rem;
		min-width: 2.25rem;
		height: 2.25rem;
		padding: 0 !important;
		border-radius: 0.75rem !important;
		border: 1px solid rgba(0, 0, 0, 0.1) !important;
		border-left: 1px solid rgba(0, 0, 0, 0.1) !important;
		box-sizing: border-box;
		background: #fff !important;
		color: #475569 !important;
		box-shadow: none !important;
	}
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-segment-btn:first-child,
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-segment-btn:last-child {
		border-radius: 0.75rem !important;
	}
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-segment-btn:hover:not(.active) {
		background: #f8fafc !important;
		color: #0f172a !important;
	}
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-segment-btn.active {
		background: var(--ch-sd-dock-accent, #2eb8ad) !important;
		border-color: var(--ch-sd-dock-accent, #2eb8ad) !important;
		color: var(--ch-sd-dock-accent-fg, #fff) !important;
	}
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-segment-icon-wrap {
		width: 1.05rem;
		height: 1.05rem;
	}
	body.duchy-territory-os .ch-sd-filter-dock.is-collapsed .ch-sd-dock-segment-icon {
		width: 0.95rem;
		height: 0.95rem;
	}
	body.duchy-sd-inner:has(.duchy-territory-os .ch-sd-filter-dock.is-collapsed) {
		padding-bottom: calc(3.25rem + env(safe-area-inset-bottom, 0px));
	}
	body.duchy-sd-inner:has(.duchy-territory-os .ch-sd-filter-dock.is-collapsed) #back-to-top.visible {
		bottom: calc(3.75rem + env(safe-area-inset-bottom, 0px));
	}
}
.town-guide-section__head {
	display: grid;
	grid-template-columns: minmax(0,1fr) minmax(280px,430px);
	gap: 36px;
	align-items: end;
	margin-bottom: 34px;
}
.town-guide-section__head > p { margin: 0; font-size: 1.05rem; line-height: 1.6; }
.town-guide-subject-grid { display: grid; grid-template-columns: repeat(12,1fr); gap: 16px; }
.town-guide-subject {
	grid-column: span 4;
	min-height: 290px;
	padding: 22px;
	display: flex;
	flex-direction: column;
	border: var(--tg-line);
	border-radius: 24px;
	box-shadow: 6px 6px 0 var(--tg-ink);
	color: var(--tg-ink);
	text-decoration: none;
	transition: transform .18s ease, box-shadow .18s ease;
}
.town-guide-subject:nth-child(1),
.town-guide-subject:nth-child(2) { grid-column: span 6; }
.town-guide-subject:hover,
.town-guide-subject:focus-visible { transform: translate(-3px,-3px); box-shadow: 10px 10px 0 var(--tg-ink); }
.town-guide-subject--stay { background: #ffe17b; }
.town-guide-subject--food { background: #ff9fc4; }
.town-guide-subject--fun { background: #8ff0ae; }
.town-guide-subject--shop { background: #d9b8ff; }
.town-guide-subject--coast { background: #8dddf0; }
.town-guide-subject--walks { background: #8ee1cf; }
.town-guide-subject--services { background: #ffc27e; }
.town-guide-subject__number { align-self: flex-end; font-size: 1rem; font-weight: 800; }
.town-guide-subject__label { margin-top: auto; font-size: .76rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.town-guide-subject strong { margin-top: 7px; font-size: clamp(1.45rem,2.2vw,2.1rem); line-height: 1.05; }
.town-guide-subject__copy { margin-top: 12px; font-size: .96rem; line-height: 1.48; }
.town-guide-subject__go { margin-top: 22px; font-weight: 800; }

/* Image-led category mosaic: a visual discovery break without changing the rest of the page. */
.town-guide-subject-grid { grid-auto-rows: 185px; }
.town-guide-subject,
.town-guide-subject:nth-child(1),
.town-guide-subject:nth-child(2) {
	position: relative;
	isolation: isolate;
	grid-column: span 4;
	min-height: 0;
	padding: 22px;
	overflow: hidden;
	justify-content: flex-end;
	color: #fff;
	background: var(--tg-ink);
}
.town-guide-subject:nth-child(1) { grid-column: span 7; grid-row: span 2; }
.town-guide-subject:nth-child(2) { grid-column: span 5; }
.town-guide-subject:nth-child(3) { grid-column: span 5; }
.town-guide-subject:nth-child(4) { grid-column: span 7; }
.town-guide-subject__image,
.town-guide-subject__shade { position: absolute; inset: 0; width: 100%; height: 100%; }
.town-guide-subject__image { z-index: -2; object-fit: cover; transition: transform .35s ease; }
.town-guide-subject__shade { z-index: -1; background: linear-gradient(180deg,rgba(8,28,35,.05) 15%,rgba(8,28,35,.9) 100%); }
.town-guide-subject:hover .town-guide-subject__image { transform: scale(1.035); }
.town-guide-subject__number { position: absolute; top: 18px; right: 18px; padding: 5px 8px; border-radius: 999px; background: rgba(255,255,255,.9); color: var(--tg-ink); }
.town-guide-subject__label { margin-top: 0; }
.town-guide-subject strong { max-width: 18ch; font-size: clamp(1.35rem,2vw,1.9rem); }
.town-guide-subject__copy { max-width: 46ch; margin-top: 8px; color: rgba(255,255,255,.9); }
.town-guide-subject__go { display: none; }

.town-guide-signatures {
	margin-inline: calc(50% - 50vw);
	padding-inline: max(28px,calc((100vw - 1224px) / 2));
	background: var(--tg-ink);
	color: #fff;
}
.town-guide-signatures .town-guide-kicker { color: #8ee1cf; }
.town-guide-signatures h2 { color: #fff; }
.town-guide-signatures .town-guide-section__head > p { color: #d8edf0; }
.town-guide-signature-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 16px; }
.town-guide-signature-grid article {
	position: relative;
	padding: 28px;
	border: 2px solid #fff;
	border-radius: 22px;
	background: rgba(255,255,255,.06);
	transition: transform .18s ease, background-color .18s ease, box-shadow .18s ease;
}
.town-guide-signature-grid article:hover,
.town-guide-signature-grid article:focus-within { transform: translateY(-5px); background: rgba(255,255,255,.1); box-shadow: 0 12px 28px rgba(0,0,0,.2); }
.town-guide-signature-grid span {
	display: inline-block;
	padding: 6px 11px;
	border-radius: 999px;
	background: #fff;
	color: var(--tg-ink);
	font-size: .75rem;
	font-weight: 800;
	text-transform: uppercase;
}
.town-guide-signature-grid h3 { margin: 25px 0 12px; color: #fff; font-size: 1.65rem; font-weight: 800; line-height: 1.1; text-transform: none; }
.town-guide-signature-grid p { color: #d8edf0; line-height: 1.6; }
.town-guide-signature-grid a { display: inline-block; margin-top: 14px; color: #fff; font-weight: 800; }
.town-guide-signature-grid a::after { content: ""; position: absolute; inset: 0; border-radius: 22px; }
.town-guide-signature-grid article:focus-within { outline: 3px solid #fff; outline-offset: 5px; }

.town-guide-plan {
	display: grid;
	grid-template-columns: minmax(0,.72fr) minmax(0,1.28fr);
	gap: clamp(36px,7vw,90px);
}
.town-guide-plan__intro > p:last-child { margin-top: 24px; font-size: 1.08rem; line-height: 1.65; }
.town-guide-plan-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.town-guide-plan-grid article { padding: 23px; border: var(--tg-line); border-radius: 20px; background: #fff; }
.town-guide-plan-grid article:nth-child(1) { background: var(--tg-sand); }
.town-guide-plan-grid article:nth-child(3) { background: var(--tg-foam); }
.town-guide-plan-grid span { color: var(--tg-sea); font-size: .8rem; font-weight: 800; }
.town-guide-plan-grid h3 { margin: 16px 0 8px; font-size: 1.2rem; font-weight: 800; text-transform: none; }
.town-guide-plan-grid p { margin: 0; line-height: 1.52; }

.town-guide-area-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; }
.town-guide-area-grid a {
	min-height: 190px;
	padding: 22px;
	display: flex;
	flex-direction: column;
	border: var(--tg-line);
	border-radius: 20px;
	background: #fff;
	color: var(--tg-ink);
	text-decoration: none;
	transition: transform .18s ease, box-shadow .18s ease;
}
.town-guide-area-grid a:hover,
.town-guide-area-grid a:focus-visible { transform: translate(-3px,-3px); box-shadow: 7px 8px 0 var(--tg-ink); }
.town-guide-area-grid a:nth-child(3n + 1) { background: #e6f9ef; }
.town-guide-area-grid a:nth-child(3n + 2) { background: #e4f4ff; }
.town-guide-area-grid a:nth-child(3n) { background: #f3eaff; }
.town-guide-area-grid strong { font-size: 1.45rem; font-weight: 800; }
.town-guide-area-grid span { margin-top: 10px; line-height: 1.5; }
.town-guide-area-grid em { margin-top: auto; padding-top: 20px; font-style: normal; font-weight: 800; }

.duchy-territory-os--guide #territory-map,
.duchy-territory-os--guide #walks { scroll-margin-top: 150px; }

.town-guide-outdoors { padding: clamp(60px,8vw,105px) 0; background: #f7f4ed; }
.town-guide-outdoors__head { display: grid; grid-template-columns: minmax(0,1.15fr) minmax(260px,.6fr); gap: 32px; align-items: end; margin-bottom: 30px; }
.town-guide-outdoors__head > p { margin: 0; color: #40535a; font-size: 1.05rem; line-height: 1.6; }
.town-guide-outdoors__grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; }
.town-guide-outdoor-card { min-height: 330px; padding: 25px; display: flex; flex-direction: column; border: var(--tg-line); border-radius: 22px; box-shadow: 5px 6px 0 var(--tg-ink); color: var(--tg-ink); text-decoration: none; transition: transform .18s ease, box-shadow .18s ease; }
.town-guide-outdoor-card:hover,
.town-guide-outdoor-card:focus-visible { transform: translate(-2px,-3px); box-shadow: 8px 10px 0 var(--tg-ink); }
.town-guide-outdoor-card--walk { background: #dff6e9; }
.town-guide-outdoor-card--beach { background: #dff3fb; }
.town-guide-outdoor-card__type { align-self: flex-start; padding: 6px 10px; border: 2px solid currentColor; border-radius: 999px; font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.town-guide-outdoor-card h3 { margin: 25px 0 8px; font-size: 1.55rem; font-weight: 800; line-height: 1.12; text-transform: none; }
.town-guide-outdoor-card > strong { color: var(--tg-sea); font-size: .9rem; font-weight: 800; }
.town-guide-outdoor-card p { margin: 18px 0; line-height: 1.58; }
.town-guide-outdoor-card__cta { margin-top: auto; padding-top: 16px; border-top: 1px solid rgba(14,45,54,.22); font-weight: 800; }

.town-guide-today { padding: clamp(38px,5vw,64px); border: var(--tg-line); border-radius: 28px; background: var(--tg-ink); color: #fff; }
.town-guide-today__intro { display: grid; grid-template-columns: minmax(250px,.75fr) minmax(0,1.25fr); gap: 24px 52px; align-items: end; }
.town-guide-today__intro .town-guide-kicker { grid-column: 1 / -1; color: #8ee1cf; }
.town-guide-today__intro h2 { margin: 0; color: #fff; }
.town-guide-today__intro > p:last-child { margin: 0; color: #d8edf0; line-height: 1.6; }
.town-guide-today__grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 12px; margin-top: 30px; }
.town-guide-today__grid a { min-height: 175px; padding: 19px; display: flex; flex-direction: column; border: 2px solid rgba(255,255,255,.75); border-radius: 18px; background: rgba(255,255,255,.07); color: #fff; text-decoration: none; transition: transform .18s ease, background-color .18s ease; }
.town-guide-today__grid a:hover,.town-guide-today__grid a:focus-visible { transform: translateY(-5px); background: rgba(255,255,255,.13); }
.town-guide-today__grid span { color: #8ee1cf; font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.town-guide-today__grid strong { margin-top: 20px; font-size: 1.12rem; line-height: 1.2; }
.town-guide-today__grid em { margin-top: auto; padding-top: 18px; font-size: .86rem; font-style: normal; font-weight: 800; }
.town-guide-conditions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin-top:30px; }
.town-guide-condition { min-width:0; padding:22px; border:2px solid rgba(255,255,255,.78); border-radius:20px; background:rgba(255,255,255,.08); }
.town-guide-condition__label { display:block; color:#8ee1cf; font-size:.72rem; font-weight:800; letter-spacing:.075em; text-transform:uppercase; }
.town-guide-condition__primary { display:flex; align-items:center; gap:12px; margin:16px 0 8px; }
.town-guide-condition__primary b { display:grid; place-items:center; width:45px; height:45px; flex:0 0 45px; border-radius:50%; background:#ffd447; color:#102f38; font-size:1.45rem; }
.town-guide-condition__primary strong { color:#fff; font-size:clamp(1.35rem,2.4vw,2rem); line-height:1.05; }
.town-guide-condition > p { min-height:3em; margin:0 0 18px; color:#d8edf0; line-height:1.5; }
.town-guide-condition dl { display:grid; gap:9px; margin:0; }
.town-guide-condition dl div { display:flex; justify-content:space-between; gap:12px; padding-top:9px; border-top:1px solid rgba(255,255,255,.24); }
.town-guide-condition dt { color:#a9c6cc; font-size:.78rem; }
.town-guide-condition dd { margin:0; color:#fff; font-size:.82rem; font-weight:850; text-align:right; }
.town-guide-condition small { display:block; margin-top:16px; color:#a9c6cc; line-height:1.4; }
.town-guide-condition.is-unavailable { opacity:.8; }
.town-guide-today__actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }
.town-guide-today__actions a { display:inline-flex; padding:11px 15px; border-radius:999px; background:#fff; color:#12343c; font-size:.82rem; font-weight:800; text-decoration:none; transition:transform .18s ease,background-color .18s ease; }
.town-guide-today__actions a:hover,.town-guide-today__actions a:focus-visible { transform:translateY(-3px); background:#ffd447; }
.town-guide-conditions__credit { margin:12px 0 0; color:#a9c6cc; font-size:.72rem; line-height:1.45; }
.town-guide-conditions__credit a { color:#fff; }

.town-guide-day-type-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; }
.town-guide-day-type-grid a { min-height: 170px; padding: 22px; display: flex; flex-direction: column; border: var(--tg-line); border-radius: 20px; background: #fff; color: var(--tg-ink); text-decoration: none; transition: transform .18s ease, box-shadow .18s ease; }
.town-guide-day-type-grid a:nth-child(3n+1) { background: #fff1bd; }
.town-guide-day-type-grid a:nth-child(3n+2) { background: #dff3fb; }
.town-guide-day-type-grid a:nth-child(3n) { background: #e4f8ed; }
.town-guide-day-type-grid a:hover,.town-guide-day-type-grid a:focus-visible { transform: translate(-3px,-3px); box-shadow: 7px 8px 0 var(--tg-ink); }
.town-guide-day-type-grid strong { font-size: 1.2rem; font-weight: 800; }
.town-guide-day-type-grid span { margin-top: 10px; line-height: 1.45; }
.town-guide-day-type-grid em { margin-top: auto; padding-top: 15px; font-style: normal; font-weight: 800; }

.town-guide-audience-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.town-guide-audience-grid article { padding: clamp(26px,4vw,45px); border: var(--tg-line); border-radius: 26px; }
.town-guide-audience-grid article:first-child { background: #dff3fb; }
.town-guide-audience-grid article:last-child { background: #e4f8ed; }
.town-guide-audience-grid article > span { font-size: .75rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.town-guide-audience-grid h3 { margin: 18px 0 10px; font-size: clamp(1.6rem,3vw,2.4rem); font-weight: 800; text-transform: none; }
.town-guide-audience-grid p { max-width: 52ch; line-height: 1.55; }
.town-guide-audience-grid article > div { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 25px; }
.town-guide-audience-grid a { padding: 10px 13px; border: 2px solid var(--tg-ink); border-radius: 999px; color: var(--tg-ink); font-size: .82rem; font-weight: 800; text-decoration: none; transition: transform .18s ease, background-color .18s ease; }
.town-guide-audience-grid a:hover,.town-guide-audience-grid a:focus-visible { transform: translateY(-3px); background: #fff; }

.town-guide-facts { margin-inline: calc(50% - 50vw); padding-inline: max(28px,calc((100vw - 1224px) / 2)); background: #fff1bd; }
.town-guide-fact-strip { display: grid; grid-template-columns: repeat(4,1fr); border-block: var(--tg-line); }
.town-guide-fact-strip article { padding: 24px; border-right: var(--tg-line); }
.town-guide-fact-strip article:last-child { border-right: 0; }
.town-guide-fact-strip span { color: var(--tg-sea); font-size: .72rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.town-guide-fact-strip strong { display: block; margin-top: 10px; font-size: 1.35rem; font-weight: 800; }
.town-guide-fact-strip p { margin: 9px 0 0; line-height: 1.45; }

.town-guide-nearby-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; }
.town-guide-nearby-grid a { min-height: 190px; padding: 24px; display: flex; flex-direction: column; border: var(--tg-line); border-radius: 22px; background: #f3eaff; color: var(--tg-ink); text-decoration: none; transition: transform .18s ease, box-shadow .18s ease; }
.town-guide-nearby-grid a:nth-child(2) { background: #dff3fb; }
.town-guide-nearby-grid a:nth-child(3) { background: #e4f8ed; }
.town-guide-nearby-grid a:hover,.town-guide-nearby-grid a:focus-visible { transform: translate(-3px,-3px); box-shadow: 7px 8px 0 var(--tg-ink); }
.town-guide-nearby-grid strong { font-size: 1.5rem; font-weight: 800; }
.town-guide-nearby-grid span { margin-top: 10px; line-height: 1.5; }
.town-guide-nearby-grid em { margin-top: auto; font-style: normal; font-weight: 800; }

.town-guide-faq { padding-bottom: clamp(90px,10vw,140px); }
.town-guide-faq-list { border-top: var(--tg-line); }
.town-guide-faq-list details { border-bottom: var(--tg-line); }
.town-guide-faq-list summary { padding: 22px 45px 22px 4px; cursor: pointer; font-size: 1.12rem; font-weight: 800; }
.town-guide-faq-list details[open] summary { color: var(--tg-sea); }
.town-guide-faq-list p { max-width: 76ch; margin: 0; padding: 0 4px 24px; line-height: 1.65; }

@media (max-width: 1100px) {
	/* Mid widths: stack locator in flow so subject pills never sit under it. */
	.duchy-territory-os--guide .hero-stats { max-width: 100%; }
	.town-guide-locator {
		position: relative;
		right: auto;
		bottom: auto;
		width: min(420px, 100%);
		margin: 18px 0 28px;
		grid-template-columns: 1fr 1.15fr;
		box-shadow: 6px 7px 0 rgba(16,47,56,.85);
	}
}

@media (max-width: 900px) {
	.town-guide-welcome,
	.town-guide-plan,
	.town-guide-section__head { grid-template-columns: 1fr; }
	.town-guide-subject,
	.town-guide-subject:nth-child(1),
	.town-guide-subject:nth-child(2),
	.town-guide-subject:nth-child(3),
	.town-guide-subject:nth-child(4) { grid-column: span 6; grid-row: span 1; }
	.town-guide-signature-grid,
	.town-guide-area-grid,
	.town-guide-outdoors__grid { grid-template-columns: 1fr 1fr; }
	.town-guide-outdoors__head { grid-template-columns: 1fr; }
	.town-guide-today__intro { grid-template-columns: 1fr; }
	.town-guide-today__intro .town-guide-kicker { grid-column: auto; }
	.town-guide-today__grid,.town-guide-fact-strip { grid-template-columns: 1fr 1fr; }
	.town-guide-conditions { grid-template-columns:1fr 1fr; }
	.town-guide-condition--tide { grid-column:1 / -1; }
	.town-guide-day-type-grid { grid-template-columns: 1fr 1fr; }
	.town-guide-fact-strip article:nth-child(2) { border-right: 0; }
	.town-guide-fact-strip article:nth-child(-n+2) { border-bottom: var(--tg-line); }
}

@media (max-width: 900px) {
	/* Journey nav: scroll with the page (not sticky under the site header).
	   Single compact row instead of a 2×4 grid that ate ~25% of the viewport. */
	.town-guide-journey-nav {
		position: static;
		top: auto;
		z-index: auto;
		display: flex;
		flex-wrap: nowrap;
		justify-content: flex-start;
		align-items: center;
		gap: 2px;
		padding: 6px 10px;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		backdrop-filter: none;
		background: #fffdf7;
	}
	.town-guide-journey-nav::-webkit-scrollbar {
		display: none;
	}
	.town-guide-journey-nav a {
		flex: 0 0 auto;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		min-width: 0;
		min-height: 30px;
		padding: 4px 10px;
		border-radius: 999px;
		font-size: .72rem;
		line-height: 1.1;
		white-space: nowrap;
		text-align: center;
	}
	.town-guide-section {
		scroll-margin-top: calc(var(--duchy-sticky-subheader, 70px) + 8px);
	}
}

@media (max-width: 640px) {
	.duchy-territory-os--guide .territory-hero { min-height: auto; }
	.duchy-territory-os--guide .territory-hero__inner { width: calc(100% - 32px); padding: 72px 0 24px; min-height: 0; }
	.duchy-territory-os--guide .territory-hero h1 { font-size: clamp(2.5rem, 12vw, 3.25rem); max-width: none; }
	.duchy-territory-os--guide .hero-stats { display: grid; grid-template-columns: 1fr 1fr; max-width: 100%; }
	.town-guide-locator { width: 100%; margin: 14px 0 24px; grid-template-columns: 1fr; box-shadow: 5px 6px 0 rgba(16,47,56,.85); }
	.town-guide-locator__map { width: 100%; min-height: 0; }
	.town-guide-guide { padding-inline: 16px; }
	.town-guide-welcome { padding-top: 45px; }
	.town-guide-day-picker,
	.town-guide-plan-grid,
	.town-guide-signature-grid,
	.town-guide-area-grid { grid-template-columns: 1fr; }
	.town-guide-day-picker a { min-height: 108px; }
	.town-guide-subject,
	.town-guide-subject:nth-child(1),
	.town-guide-subject:nth-child(2),
	.town-guide-subject:nth-child(3),
	.town-guide-subject:nth-child(4) { grid-column: 1 / -1; grid-row: span 1; min-height: 245px; }
	.town-guide-signatures { padding-inline: 16px; }
	.town-guide-outdoors { padding-inline: 16px; }
	.town-guide-outdoors__grid { grid-template-columns: 1fr; }
	.town-guide-outdoor-card { min-height: 280px; }
	.town-guide-today { margin-inline: 0; padding-inline: 20px; }
	.town-guide-today__grid,.town-guide-day-type-grid,.town-guide-audience-grid,.town-guide-fact-strip,.town-guide-nearby-grid { grid-template-columns: 1fr; }
	.town-guide-conditions { grid-template-columns:1fr; }
	.town-guide-condition--tide { grid-column:auto; }
	.town-guide-fact-strip article { border-right: 0; border-bottom: var(--tg-line); }
	.town-guide-fact-strip article:last-child { border-bottom: 0; }
}

@media (prefers-reduced-motion: reduce) {
	.town-guide-day-picker a,
	.town-guide-subject,
	.town-guide-signature-grid article,
	.town-guide-area-grid a,
	.town-guide-outdoor-card,
	.town-guide-today__grid a,
	.town-guide-day-type-grid a,
	.town-guide-audience-grid a,
	.town-guide-nearby-grid a { transition: none; }
}

