/**
 * LUW Dashboard front-end stylesheet - v7.3 rewrite.
 * Editorial, exhibition-catalog aesthetic aligned with Twenty Twenty-Five:
 * typography and white space over chrome; near-monochrome; hairline rules;
 * one accent (#008080) reserved for deltas; SCORED solid, MODELED italic.
 * Body text 16px, micro-labels 12px, quiet cluster tags 11px, line-height 1.5.
 */
:root {
	--luwd-ink: #1a1a1a;
	--luwd-grey-700: #3d3d3d;
	--luwd-grey-500: #6e6e6e;
	--luwd-grey-400: #9a9a9a;
	--luwd-grey-300: #b9b9b9;
	--luwd-hairline: #e4e4e4;
	--luwd-paper: #ffffff;
	--luwd-accent: #008080; /* used ONLY for deltas */
	--luwd-font: inherit;
	--luwd-sec: 72rem;
	--luwd-measure: 44rem;
}

/* ---------- shell ---------- */
.luwd-dashboard,
.luwd-login,
.luwd-selector,
.luwd-selector-root {
	font-family: var(--luwd-font);
	color: var(--luwd-ink);
	background: var(--luwd-paper);
	border: none;
	padding: 0;
	margin: 0 auto;
	max-width: var(--luwd-sec);
	font-size: 16px;
	line-height: 1.5;
}
.luwd-dashboard img,
.luwd-dashboard iframe { max-width: 100%; }

/* every numbered section: generous white space, hairline separator */
.luwd-project-header,
.luwd-section,
.luwd-method,
.luwd-privacy-footer {
	max-width: var(--luwd-sec);
	margin: 0 auto;
	padding: 2.2rem 1.5rem 2.6rem;
}
.luwd-dashboard > .luwd-project-header:first-child { border-top: none; padding-top: 1.2rem; }

/* ---------- numbered section heads ---------- */
.luwd-section-head {
	display: flex;
	align-items: baseline;
	gap: 1rem;
	margin: 0 0 1.4rem;
}
.luwd-section-num {
	font-size: 12px;
	letter-spacing: 0.22em;
	color: var(--luwd-grey-400);
	font-variant-numeric: tabular-nums;
}
.luwd-section-title {
	font-size: 1.15rem;
	font-weight: normal;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	margin: 0;
	color: var(--luwd-ink);
}
.luwd-h3 {
	font-size: 1rem;
	font-weight: 600;
	margin: 1.6rem 0 0.5rem;
}
.luwd-h4 {
	font-size: 0.85rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	margin: 1.4rem 0 0.5rem;
	color: var(--luwd-grey-700);
}

/* ---------- 01 project header ---------- */
.luwd-title {
	font-size: 2.6rem;
	min-height: 40px;
	font-weight: normal;
	letter-spacing: -0.01em;
	line-height: 1.15;
	margin: 0 0 0.8rem;
}
.luwd-site-desc {
	font-size: 16px;
	line-height: 1.5;
	max-width: var(--luwd-measure);
	margin: 0.4rem 0 1rem;
}
.luwd-factline,
.luwd-dateline {
	font-size: 12px;
	color: var(--luwd-grey-500);
	margin: 0.3rem 0;
	font-variant-numeric: tabular-nums;
	letter-spacing: 0.02em;
}
.luwd-headline {
	font-size: 1.25rem;
	line-height: 1.45;
	max-width: var(--luwd-measure);
	margin: 1.4rem 0 0.8rem;
	padding-left: 1rem;
	border-left: 2px solid var(--luwd-ink);
}
.luwd-findings { margin-top: 1.6rem; }
.luwd-findings-list { margin: 0.4rem 0 0; padding-left: 1.1rem; }
.luwd-findings-list li { margin: 0.4rem 0; max-width: var(--luwd-measure); }


/* ---------- 02 sticky tabs ---------- */
.luwd-tabs {
	position: sticky;
	top: 0;
	z-index: 30;
	background: var(--luwd-paper);
	border-bottom: 1px solid var(--luwd-ink);
	max-width: var(--luwd-sec);
	margin: 0 auto;
	padding: 0 1.5rem;
	display: flex;
	gap: 1.8rem;
}
.luwd-tab {
	font-family: inherit;
	font-size: 16px;
	background: transparent;
	border: none;
	border-bottom: 3px solid transparent;
	margin-bottom: -1px;
	padding: 0.7rem 0;
	cursor: pointer;
	display: inline-flex;
	align-items: baseline;
	gap: 0.5rem;
	color: var(--luwd-grey-700);
}
.luwd-tab.is-active {
	border-bottom-color: var(--luwd-ink);
	color: var(--luwd-ink);
	font-weight: 600;
}
.luwd-tab:focus-visible { outline: 2px solid var(--luwd-ink); outline-offset: 4px; }
.luwd-tab .luwd-badge { font-size: 11px; letter-spacing: 0.08em; }
/* evidence states: solid SCORED, italic MODELED - typographic, never color */
.luwd-badge {
	font-family: inherit;
	font-size: 11px;
	letter-spacing: 0.08em;
	padding: 0.08rem 0.35rem;
	border: 1px solid var(--luwd-grey-400);
	color: var(--luwd-grey-700);
	background: transparent;
	border-radius: 0;
	font-style: italic;
}
.luwd-badge-measured,
.luwd-badge-scored { font-style: normal; color: var(--luwd-ink); border-color: var(--luwd-ink); }
.luwd-badge-modeled,
.luwd-badge-modelled { font-style: italic; background: transparent; color: var(--luwd-grey-500); border-style: dashed; }
.luwd-badge-missing { color: var(--luwd-grey-400); }

/* ---------- 03 site ---------- */
.luwd-layout-inner {
	display: grid;
	grid-template-columns: minmax(380px, 1.5fr) minmax(280px, 1fr);
	gap: 2.5rem;
}
@media (max-width: 900px) { .luwd-layout-inner { grid-template-columns: 1fr; } }
.luwd-map {
	height: 24rem;
	border: 1px solid var(--luwd-grey-300);
	background: #eeeeee;
	position: relative;
	z-index: 1;
}
.luwd-tiles-grayscale { filter: grayscale(1); }
.luwd-map-listen { display: flex; align-items: center; gap: 0.8rem; margin: 0.5rem 0; }
.luwd-map-lp { font-size: 12px; letter-spacing: 0.14em; color: var(--luwd-grey-500); }
.luwd-listen-btn {
	font-family: inherit;
	font-size: 12px;
	border: 1px solid var(--luwd-ink);
	background: transparent;
	padding: 0.15rem 0.7rem;
	cursor: pointer;
	letter-spacing: 0.06em;
}
.luwd-listen-btn:hover { background: var(--luwd-ink); color: var(--luwd-paper); }
.luwd-map-label {
	font-size: 11px;
	font-family: inherit;
	background: rgba(255,255,255,0.85);
	padding: 0 3px;
}

/* ---------- 04 synthesis (mosaic series) ---------- */
.luwd-mosaic-series { margin-bottom: 2.6rem; }
.luwd-mosaic-series:last-child { margin-bottom: 0; }
.luwd-mosaic-series-head {
		display: flex;
		align-items: baseline;
		gap: 0.7rem;
		margin-bottom: 0.7rem;
}
.luwd-mosaic-series-title {
		font-size: 13px;
		letter-spacing: 0.18em;
		text-transform: uppercase;
		color: var(--luwd-ink);
		margin: 0;
}
.luwd-mosaic-series-note { margin-top: 0.6rem; }
.luwd-source-legend {
	margin-bottom: 1.2rem;
}
.luwd-source-legend-k {
	display: block;
	font-size: 11px;
	letter-spacing: 0.14em;
	color: var(--luwd-grey-400);
	margin: 0 0 0.55rem;
}
.luwd-source-legend-items {
	display: grid;
	grid-template-columns: repeat(4, auto);
	gap: 0.45rem 1.6rem;
	justify-content: start;
}
@media (max-width: 700px) {
	.luwd-source-legend-items { grid-template-columns: repeat(2, auto); }
}
.luwd-source-legend-item { display: inline-flex; align-items: center; gap: 0.45rem; font-size: 12px; letter-spacing: 0.1em; color: var(--luwd-grey-700); }
.luwd-source-legend-swatch {
	display: inline-block;
	width: 0.7rem;
	height: 0.7rem;
	border: 1px solid var(--luwd-ink);
}
.luwd-mosaic-strip {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1.2rem;
}
@media (max-width: 700px) { .luwd-mosaic-strip { grid-template-columns: repeat(2, 1fr); gap: 0.9rem; } }
.luwd-tile {
	border: none;
	padding: 0;
	background: var(--luwd-paper);
	cursor: pointer;
	position: relative;
	transition: transform 0.14s ease;
}
.luwd-tile:hover { transform: translateY(-2px); }
.luwd-tile:focus-visible,
.luwd-tile.luwd-sonify-active { outline: 2px solid var(--luwd-ink); outline-offset: 4px; }
.luwd-tile.luwd-sonify-active .luwd-mosaic-lp { color: var(--luwd-ink); font-weight: 600; }
.luwd-sonify-hint {
	font-size: 11px;
	letter-spacing: 0.14em;
	color: var(--luwd-grey-400);
	margin: 0.9rem 0 0;
	text-transform: uppercase;
}
.luwd-mosaic-lp {
	font-size: 12px;
	letter-spacing: 0.18em;
	color: var(--luwd-grey-500);
	margin: 0 0 0.45rem;
}
.luwd-mosaic-frame { position: relative; aspect-ratio: 1 / 1; background: var(--luwd-paper); border: none; }
.luwd-mosaic-canvas { display: block; width: 100%; height: 100%; }

.luwd-tile-caption {
	font-size: 12px;
	color: var(--luwd-grey-500);
	margin: 0.5rem 0 0;
	line-height: 1.4;
}

/* ---------- 05 listening points ---------- */
.luwd-point-nav { display: flex; gap: 0.4rem; margin: 0 0 1.4rem; flex-wrap: wrap; }
.luwd-point-btn {
	font-family: inherit;
	font-size: 16px;
	background: transparent;
	border: 1px solid transparent;
	border-bottom: 3px solid transparent;
	padding: 0.3rem 0.8rem;
	cursor: pointer;
	color: var(--luwd-grey-500);
	letter-spacing: 0.08em;
}
.luwd-point-btn.is-active { border-bottom-color: var(--luwd-ink); color: var(--luwd-ink); font-weight: 600; }
.luwd-point-btn:focus-visible { outline: 2px solid var(--luwd-ink); outline-offset: 2px; }
.luwd-point-title { margin-top: 0; }
/* three-layer unit: question / name / cluster tag */
.luwd-score-row {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin: 0.45rem 0;
	padding: 0.25rem 0;
	border-bottom: 1px solid var(--luwd-hairline);
}
.luwd-score-row:last-of-type { border-bottom: none; }
.luwd-score-label { flex: 0 0 13.5rem; font-size: 16px; }
.luwd-cluster-tag { font-size: 11px; color: var(--luwd-grey-400); }
.luwd-score-bar {
	flex: 1;
	height: 0.35rem;
	background: var(--luwd-grey-100, #eeeeee);
	position: relative;
	box-sizing: border-box;
	min-width: 6rem;
}
.luwd-score-fill { height: 100%; background: var(--luwd-ink); box-sizing: border-box; }
.luwd-score-marker {
	position: absolute; top: -0.25rem; width: 2px; height: 0.85rem;
	background: var(--luwd-ink); transform: translateX(-1px);
}
.luwd-score-value {
	flex: 0 0 2.4rem;
	text-align: right;
	font-variant-numeric: tabular-nums;
	font-size: 16px;
}
.luwd-mix-bar .luwd-score-marker { background: var(--luwd-grey-700); }

/* ---------- 06 comparison ---------- */
.luwd-dear {
	width: 100%;
	border-collapse: collapse;
	font-size: 16px;
}
.luwd-dear th, .luwd-dear td {
	border: none;
	border-bottom: 1px solid var(--luwd-hairline);
	padding: 0.55rem 0.7rem 0.55rem 0;
	text-align: left;
	vertical-align: baseline;
}
.luwd-dear thead th {
	font-size: 12px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--luwd-grey-500);
	font-weight: normal;
	border-bottom: 1px solid var(--luwd-ink);
}
.luwd-num { font-variant-numeric: tabular-nums; }
.luwd-delta { font-variant-numeric: tabular-nums; color: var(--luwd-grey-500); font-size: 16px; }
.luwd-delta.is-up, .luwd-delta.is-down { color: var(--luwd-accent); font-weight: 600; }
.luwd-target-row th, .luwd-target-row td { font-style: italic; color: var(--luwd-grey-500); }

/* ---------- 07 claims ---------- */
.luwd-claim-block { margin: 0 0 2rem; }
.luwd-claim {
	font-size: 1.1rem;
	line-height: 1.5;
	max-width: var(--luwd-measure);
	margin: 0.3rem 0 0.6rem;
}
.luwd-muted {
	font-size: 0.9rem;
	color: var(--luwd-grey-500);
	line-height: 1.45;
	margin: 0.25rem 0;
	max-width: var(--luwd-measure);
}
.luwd-note { font-size: 16px; line-height: 1.5; margin: 0.4rem 0; max-width: var(--luwd-measure); }
.luwd-standing {
	font-size: 12px;
	color: var(--luwd-grey-500);
	margin-top: 1.6rem;
	font-style: italic;
}
.luwd-value { margin-top: 1rem; padding-left: 1rem; border-left: 2px solid var(--luwd-hairline); }

/* ---------- 08 method footer ---------- */
.luwd-method summary {
	font-size: 12px;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	cursor: pointer;
	color: var(--luwd-grey-700);
}
.luwd-method summary:focus-visible { outline: 2px solid var(--luwd-ink); outline-offset: 3px; }
.luwd-method-body p { font-size: 16px; line-height: 1.55; max-width: var(--luwd-measure); margin: 0.7rem 0; }
.luwd-method-body a { color: var(--luwd-ink); text-decoration: underline; }

/* ---------- layer 2 login ---------- */
.luwd-button {
	display: inline-block;
	font-family: inherit;
	font-size: 16px;
	border: 1px solid var(--luwd-ink);
	background: transparent;
	color: var(--luwd-ink);
	padding: 0.5rem 1.4rem;
	cursor: pointer;
	letter-spacing: 0.04em;
	text-decoration: none;
}
.luwd-button:hover { background: var(--luwd-ink); color: var(--luwd-paper); }
.luwd-login {
	max-width: 26rem;
	margin: 2rem auto;
	padding: 1.5rem 1.5rem;
	border-top: 2px solid var(--luwd-ink);
	text-align: center;
}
.luwd-login label { display: block; text-align: left; font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--luwd-grey-500); margin-top: 0.9rem; }
.luwd-login input,
.luwd-login button {
	box-sizing: border-box;
	width: 100%;
}
.luwd-login input {
	display: block; margin-top: 0.3rem;
	padding: 0.5rem 0.6rem;
	border: 1px solid var(--luwd-grey-300);
	background: var(--luwd-paper);
	font-size: 16px;
	font-family: inherit;
}
.luwd-login input:focus-visible { outline: 2px solid var(--luwd-ink); outline-offset: 1px; }
.luwd-login button { margin-top: 1.2rem; width: 100%; }
.luwd-login-msg { color: var(--luwd-grey-500); font-size: 14px; }

/* ---------- misc ---------- */
.luwd-unavailable, .luwd-missing {
	font-size: 16px;
	color: var(--luwd-grey-500);
	font-style: italic;
}
.luwd-privacy-footer { padding: 1.2rem 1rem 1.6rem; text-align: center; }
.luwd-privacy-note { margin: 0; font-size: 11px; color: var(--luwd-grey-400); }
.luwd-privacy-note a { color: var(--luwd-grey-700); text-decoration: underline; }
.luwd-privacy-note a:hover, .luwd-privacy-note a:focus-visible { color: var(--luwd-accent); }
.luwd-qgis-note, .luwd-qgis { margin-top: 1.2rem; }
.luwd-qgis-toggle {
	font-family: inherit; font-size: 16px;
	background: transparent; border: 1px solid var(--luwd-ink);
	padding: 0.4rem 1rem; cursor: pointer; margin-bottom: 0.6rem;
}
.luwd-qgis-frame { height: 30rem; border: 1px solid var(--luwd-grey-300); }
.luwd-qgis-iframe { width: 100%; height: 100%; border: none; }
.luwd-report { text-align: left; }
.luwd-excerpt { font-style: italic; }
.luwd-assumptions { font-size: 0.9rem; color: var(--luwd-grey-500); }
.luwd-motifs { list-style: none; margin: 0.5rem 0; padding: 0; }
.luwd-motif { padding: 0.5rem 0; border-bottom: 1px solid var(--luwd-hairline); }
.luwd-motif.is-dominant .luwd-motif-head strong { border-bottom: 2px solid var(--luwd-ink); }
.luwd-motif-head { margin: 0; }
.luwd-motif-head strong { font-weight: 600; }
.luwd-map-fallback { padding: 1rem; color: var(--luwd-grey-500); }
.luwd-scenario-image { margin: 1rem 0; }
.luwd-scenario-text { font-size: 16px; line-height: 1.5; max-width: var(--luwd-measure); }

/* main-page selector header */
.luwd-selector-header { max-width: var(--luwd-sec); margin: 0 auto 0.6rem; padding: 0 1.5rem; }
.luwd-selector-header .luwd-selector-label { display: inline-flex; align-items: center; gap: 1.2rem; }
.luwd-selector-title { font-size: 12px; letter-spacing: 0.16em; color: var(--luwd-grey-500); }
.luwd-selector select,
#luwd-project-select {
	font-family: inherit;
	font-size: 16px;
	appearance: none;
	-webkit-appearance: none;
	background: var(--luwd-paper);
	color: var(--luwd-ink);
	border: none;
	border-bottom: 1px solid var(--luwd-ink);
	padding: 0.35rem 0.2rem;
	min-width: 14rem;
	cursor: pointer;
}

/* reduced motion */
@media (prefers-reduced-motion: reduce) {
	.luwd-tile, .luwd-tab, .luwd-point-btn, .luwd-listen-btn, .luwd-button { transition: none; transform: none !important; }
	* { scroll-behavior: auto !important; }
}

/* Synthesis meta line + SOUND SOURCE legend title (Scoreboard style) */
.luwd-synth-meta {
	font-size: 12px;
	letter-spacing: 0.12em;
	color: #6e6e6e;
	margin: 0 0 0.7rem;
	font-variant-numeric: tabular-nums;
}
.luwd-source-legend-k {
	font-size: 11px;
	letter-spacing: 0.14em;
	color: #9a9a9a;
	margin-right: 0.6rem;
}
