/**
 * Iowa Cob Weather Bureau — public styles.
 * Typography inherits from the theme. All visual tokens are CSS custom
 * properties (overridable from Appearance settings via inline :root rules).
 * Palette: white page background; Deep News Green structure; Iowa Green
 * secondary text; Corn Gold accents; Ink Black body; News Cream used only
 * as a restrained accent.
 */

.icwb {
	color: var(--icwb-ink, #171A18);
	line-height: 1.45;
	background: transparent; /* Page background stays white; panels carry color. */
}

/* ---------- Card base ---------- */
.icwb-card {
	background: var(--icwb-card, #FFFFFF);
	border: 1px solid var(--icwb-line, #DCD8CC);
	border-top: 3px solid var(--icwb-deep-green, #0D3325);
	border-radius: var(--icwb-radius, 12px);
	box-shadow: 0 1px 2px rgba(27, 26, 24, 0.05);
	padding: 1.25rem 1.4rem;
	margin: 0 0 1.25rem;
}

.icwb-notice {
	font-size: 0.82rem;
	color: var(--icwb-green, #558A47);
	background: var(--icwb-cream, #F4F0E5);
	border-radius: calc(var(--icwb-radius, 12px) / 2);
	padding: 0.4rem 0.6rem;
	margin: 0 0 0.75rem;
}

/* ---------- Sidebar card ---------- */
.icwb-sidebar__header {
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--icwb-deep-green, #0D3325);
	border-bottom: 2px solid var(--icwb-gold, #E5B72B);
	padding-bottom: 0.45rem;
	margin: 0 0 0.9rem;
}

.icwb-sidebar__now {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
}

.icwb-sidebar__temp {
	font-size: clamp(2.9rem, 9vw, 3.6rem);
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.02em;
	color: var(--icwb-deep-green, #0D3325);
	font-variant-numeric: tabular-nums;
}

.icwb-sidebar__icon { width: 5.4rem; height: 5.4rem; flex: none; filter: drop-shadow(0 4px 9px rgba(27,26,24,.18)); }
.icwb-sidebar__condition { margin: 0.35rem 0 0.1rem; font-weight: 600; }
.icwb-sidebar__wind { margin: 0; font-size: 0.85rem; color: var(--icwb-green, #558A47); }
.icwb-sidebar__commentary { margin: 0.8rem 0 0; font-size: 1rem; color: var(--icwb-gold, #E5B72B); }
.icwb-sidebar__link { margin: 0.8rem 0 0; font-size: 0.85rem; }
.icwb-sidebar__link a { color: var(--icwb-deep-green, #0D3325); text-decoration: none; font-weight: 600; }
.icwb-sidebar__link a:hover, .icwb-sidebar__link a:focus { text-decoration: underline; }
.icwb-updated { margin: 0.5rem 0 0; font-size: 0.72rem; color: var(--icwb-green, #558A47); }
.icwb-sidebar--compact .icwb-sidebar__temp { font-size: 2.4rem; }
.icwb-sidebar--compact .icwb-sidebar__icon { width: 4.2rem; height: 4.2rem; }

/* ---------- Meters ---------- */
.icwb-meter {
	margin-top: 1rem;
	padding-top: 0.9rem;
	border-top: 1px dashed var(--icwb-line, #DCD8CC);
	text-align: center;
}

.icwb-meter__name {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--icwb-green, #558A47);
	margin: 0 0 0.4rem;
}

.icwb-meter__dial { max-width: 190px; margin: 0 auto; }
.icwb-meter--compact .icwb-meter__dial { width: 75%; max-width: 75%; margin: 0 auto; }
.icwb-meter--compact .icwb-meter__value { font-size: 1.7rem; }
.icwb-meter--compact .icwb-meter__label { font-size: 1.02rem; }
.icwb-meter__arc { fill: none; stroke: var(--icwb-line, #DCD8CC); stroke-width: 5; stroke-linecap: round; }
.icwb-meter__tick { stroke: var(--icwb-deep-green, #0D3325); stroke-width: 1.4; }
.icwb-meter__needle { stroke: var(--icwb-gold, #E5B72B); stroke-width: 2.6; stroke-linecap: round; }
.icwb-meter__hub { fill: var(--icwb-ink, #171A18); }
.icwb-meter__needle-group { transform-origin: 50px 50px; }
.icwb-meter__value { font-size: 1.4rem; font-weight: 800; margin: 0.15rem 0 0; font-variant-numeric: tabular-nums; }
.icwb-meter__label { margin: 0; font-weight: 600; color: var(--icwb-deep-green, #0D3325); }
.icwb-meter__sublabel { margin: 0; font-size: 0.85rem; color: var(--icwb-green, #558A47); }
.icwb-meter__commentary { margin: 0.4rem 0 0; font-size: 0.88rem; }
.icwb-meter__methodology { margin: 0.5rem 0 0; font-size: 0.72rem; color: var(--icwb-green, #558A47); font-style: italic; }

.icwb-meter.is-overflow .icwb-meter__label { color: var(--icwb-gold, #E5B72B); letter-spacing: 0.05em; }

/* One-time entrance sweep (JS sets final transform; base state below is
   the final server-rendered position so no-JS users see the real value). */
@media (prefers-reduced-motion: no-preference) {
	.icwb-meter[data-icwb-meter].icwb-anim .icwb-meter__needle-group {
		transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
	}
	.icwb-meter.is-overflow.icwb-settled .icwb-meter__needle-group {
		animation: icwb-overflow-sway 3.4s ease-in-out infinite alternate;
	}
	@keyframes icwb-overflow-sway {
		0%   { rotate: -1.4deg; }
		37%  { rotate: 0.8deg; }
		63%  { rotate: -0.6deg; }
		100% { rotate: 1.6deg; }
	}
}

/* ---------- Full center ---------- */
.icwb-center__title {
	color: var(--icwb-deep-green, #0D3325);
	border-bottom: 3px solid var(--icwb-gold, #E5B72B);
	padding-bottom: 0.4rem;
}

.icwb-hourly > h3,
.icwb-daily > h3,
.icwb-stories > h3,
.icwb-discussion > h3 {
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--icwb-deep-green, #0D3325);
	border-bottom: 2px solid var(--icwb-gold, #E5B72B);
	padding-bottom: 0.45rem;
	margin: 0 0 0.9rem;
}

.icwb-current { background: linear-gradient(180deg, var(--icwb-cream, #F4F0E5) 0%, var(--icwb-card, #FFFFFF) 55%); }

.icwb-current__hero { display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap; }
.icwb-current__temp {
	font-size: clamp(3.4rem, 10vw, 4.6rem);
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.02em;
	font-variant-numeric: tabular-nums;
	color: var(--icwb-deep-green, #0D3325);
}
.icwb-current__icon { width: 3.6rem; height: 3.6rem; color: var(--icwb-deep-green, #0D3325); }
.icwb-current__condition { margin: 0.2rem 0 0; font-weight: 700; font-size: 1.1rem; }
.icwb-current__commentary { font-size: 1.15rem; color: var(--icwb-gold, #E5B72B); margin: 0.9rem 0 0.2rem; }
.icwb-current__summary { margin: 0.2rem 0 0; color: var(--icwb-green, #558A47); }

.icwb-facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
	gap: 0.6rem 1rem;
	margin: 1.1rem 0 0;
}
.icwb-facts__item { border-left: 3px solid var(--icwb-gold, #E5B72B); padding-left: 0.6rem; background: var(--icwb-card, #FFFFFF); }
.icwb-facts dt { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.07em; color: var(--icwb-green, #558A47); margin: 0; }
.icwb-facts dd { margin: 0; font-weight: 700; font-variant-numeric: tabular-nums; }

/* Focus row: discussion beside the active meter, under current conditions. */
.icwb-focus {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(230px, 290px);
	gap: 1.25rem;
	align-items: stretch;
	margin: 0 0 1.25rem;
}
.icwb-focus > .icwb-card { margin: 0; }
.icwb-focus--solo { grid-template-columns: minmax(0, 1fr); }
.icwb-focus__meter { display: flex; align-items: center; justify-content: center; }
.icwb-focus__meter .icwb-meter { border-top: 0; margin-top: 0; padding-top: 0; width: 100%; }
@media (max-width: 700px) {
	.icwb-focus { grid-template-columns: minmax(0, 1fr); }
}

/* Hourly strip: horizontal scroll on mobile, natural row on desktop. */
.icwb-hourly__strip {
	display: flex;
	gap: 0.35rem;
	overflow-x: auto;
	padding: 0.25rem 0 0.5rem;
	margin: 0.5rem 0 0;
	list-style: none;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: thin;
}
.icwb-hourly__item {
	flex: 0 0 3.6rem;
	border: 1px solid var(--icwb-line, #DCD8CC);
	border-top: 2px solid var(--icwb-deep-green, #0D3325);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.2rem;
	padding: 0.45rem 0.2rem;
	border-radius: calc(var(--icwb-radius, 12px) / 1.5);
	background: var(--icwb-cream, #F4F0E5);
}
.icwb-hourly__time { font-size: 0.72rem; color: var(--icwb-green, #558A47); }
.icwb-hourly__icon { width: 1.5rem; height: 1.5rem; color: var(--icwb-deep-green, #0D3325); }
.icwb-hourly__temp { font-weight: 700; font-variant-numeric: tabular-nums; }
.icwb-hourly__pop { font-size: 0.7rem; font-weight: 700; color: var(--icwb-gold, #E5B72B); min-height: 1em; }

/* Daily periods as accessible disclosure rows. */
.icwb-daily__period { border-bottom: 1px solid var(--icwb-cream, #F4F0E5); }
.icwb-daily__summary {
	display: grid;
	grid-template-columns: minmax(6.5rem, 1fr) 1.8rem minmax(0, 2fr) 3rem 2.6rem;
	gap: 0.6rem;
	align-items: center;
	padding: 0.55rem 0.2rem;
	cursor: pointer;
	list-style: none;
}
.icwb-daily__summary::-webkit-details-marker { display: none; }
.icwb-daily__summary:focus-visible { outline: 2px solid var(--icwb-deep-green, #0D3325); outline-offset: 2px; }
.icwb-daily__name { font-weight: 700; }
.icwb-daily__icon { width: 1.5rem; height: 1.5rem; color: var(--icwb-deep-green, #0D3325); }
.icwb-daily__short { font-size: 0.86rem; color: var(--icwb-green, #558A47); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.icwb-daily__temp { font-weight: 800; text-align: right; font-variant-numeric: tabular-nums; color: var(--icwb-deep-green, #0D3325); }
.icwb-daily__pop { font-size: 0.78rem; font-weight: 700; color: var(--icwb-gold, #E5B72B); text-align: right; }
.icwb-daily__detail {
	margin: 0 0.2rem 0.9rem;
	padding-left: 0.6rem;
	border-left: 3px solid var(--icwb-cream, #F4F0E5);
	font-size: 0.92rem;
	color: var(--icwb-green, #558A47);
}
.icwb-daily__period.is-night .icwb-daily__name { font-weight: 500; color: var(--icwb-green, #558A47); }

@media (max-width: 480px) {
	.icwb-daily__summary { grid-template-columns: minmax(5rem, 1fr) 1.6rem 3rem 2.4rem; }
	.icwb-daily__short { display: none; }
}

.icwb-discussion {
	background: var(--icwb-deep-green, #0D3325);
	color: var(--icwb-cream, #F4F0E5);
	border-color: var(--icwb-deep-green, #0D3325);
	border-top-color: var(--icwb-gold, #E5B72B);
}
.icwb-discussion > h3 { color: var(--icwb-cream, #F4F0E5); }
.icwb-discussion p { margin: 0 0 0.7rem; font-size: 1.02rem; }
.icwb-discussion p:first-of-type { font-size: 1.12rem; }
.icwb-discussion__note { font-size: 0.72rem; color: var(--icwb-line, #DCD8CC); font-style: italic; }
.icwb-stories__list { list-style: none; margin: 0.5rem 0 0; padding: 0; }
.icwb-stories__list li { padding: 0.35rem 0; border-bottom: 1px solid var(--icwb-cream, #F4F0E5); }
.icwb-stories__date { font-size: 0.78rem; color: var(--icwb-green, #558A47); }

.icwb-center__attribution { font-size: 0.78rem; color: var(--icwb-green, #558A47); margin-top: 1rem; }
.icwb-center__attribution p { margin: 0.2rem 0; }

/* ---------- Alert banner ---------- */
.icwb-alert {
	position: relative;
	width: 100%;
	color: #fff;
	padding: 0;
}
.icwb-alert__inner { max-width: 68rem; margin: 0 auto; padding: 0.8rem 3rem 0.8rem 1.2rem; }
.icwb-alert--advisory { background: var(--icwb-green, #558A47); }
.icwb-alert--watch { background: var(--icwb-deep-green, #0D3325); }
.icwb-alert--warning { background: var(--icwb-gold, #E5B72B); }
.icwb-alert--emergency {
	background: var(--icwb-gold, #E5B72B);
	border-top: 5px solid var(--icwb-ink, #171A18);
	border-bottom: 5px solid var(--icwb-ink, #171A18);
}
.icwb-alert__event { margin: 0; font-size: 1.05rem; text-transform: uppercase; letter-spacing: 0.03em; }
.icwb-alert--emergency .icwb-alert__event { font-size: 1.25rem; }
.icwb-alert__test { font-size: 0.75rem; background: var(--icwb-ink, #171A18); padding: 0.1rem 0.4rem; border-radius: 3px; }
.icwb-alert__safety { margin: 0.25rem 0 0; font-weight: 700; }
.icwb-alert__area, .icwb-alert__expires, .icwb-alert__source { margin: 0.2rem 0 0; font-size: 0.82rem; opacity: 0.92; }
.icwb-alert__details, .icwb-alert__more { margin-top: 0.4rem; font-size: 0.88rem; }
.icwb-alert__details summary, .icwb-alert__more summary { cursor: pointer; text-decoration: underline; }
.icwb-alert__details summary:focus-visible, .icwb-alert__more summary:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.icwb-alert__more ul { margin: 0.3rem 0 0 1.1rem; padding: 0; }
.icwb-alert__dismiss {
	position: absolute;
	top: 0.55rem;
	right: 0.7rem;
	background: transparent;
	border: 1px solid rgba(255, 255, 255, 0.6);
	border-radius: 50%;
	color: #fff;
	width: 2rem;
	height: 2rem;
	font-size: 1.1rem;
	line-height: 1;
	cursor: pointer;
}
.icwb-alert__dismiss:hover, .icwb-alert__dismiss:focus-visible { background: rgba(255, 255, 255, 0.15); outline: 2px solid #fff; outline-offset: 1px; }

/* Screen reader text (if theme doesn't provide it). */
.icwb .screen-reader-text {
	position: absolute;
	clip-path: inset(50%);
	width: 1px;
	height: 1px;
	overflow: hidden;
	white-space: nowrap;
}

/* ==========================================================================
   WEATHER CENTER PAGE (v1.3.0)
   Typography references Bitter / Roboto Condensed by name only. The plugin
   loads no font files; if the theme does not provide them, the fallback
   stacks below keep the design intact.
   ========================================================================== */

.icwb-wc {
	--icwb-font-head: 'Bitter', Georgia, 'Times New Roman', serif;
	--icwb-font-ui: 'Roboto Condensed', 'Arial Narrow', 'Helvetica Neue', Arial, sans-serif;
	--icwb-gap: clamp(1rem, 1.6vw, 1.5rem);
	--icwb-section-gap: clamp(1.5rem, 2.8vw, 2.4rem);
	font-family: var(--icwb-font-ui);
	color: var(--icwb-ink, #171A18);
}

.icwb-wc h2, .icwb-wc h3, .icwb-wc h4 { font-family: var(--icwb-font-head); }

/* ---------- 12-column grid ---------- */
.icwb-grid {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: var(--icwb-gap);
	margin: 0 0 var(--icwb-gap);
}
.icwb-col-4 { grid-column: span 4; }
.icwb-col-8 { grid-column: span 8; }
.icwb-col-12 { grid-column: span 12; }

@media (max-width: 960px) {
	.icwb-col-4, .icwb-col-8 { grid-column: span 12; }
}

/* ---------- Panels ---------- */
.icwb-wc > .icwb-panel,
.icwb-wc > .icwb-grid,
.icwb-wc > .icwb-outlook,
.icwb-wc > .icwb-aom { margin-bottom: var(--icwb-section-gap); }

.icwb-panel {
	position: relative;
	background: var(--icwb-card, #FFFFFF);
	border: 1px solid var(--icwb-line, #DCD8CC);
	border-top: 3px solid var(--icwb-deep-green, #0D3325);
	border-radius: var(--icwb-radius, 12px);
	box-shadow: 0 1px 2px rgba(27,26,24,.06), 0 8px 24px -18px rgba(27,26,24,.5);
	padding: clamp(1rem, 2vw, 1.5rem);
	overflow: hidden;
}

.icwb-section-title,
.icwb-wc .icwb-hourly > h3,
.icwb-wc .icwb-daily > h3,
.icwb-wc .icwb-stories > h3 {
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: .11em;
	text-transform: uppercase;
	font-family: var(--icwb-font-ui);
	color: var(--icwb-deep-green, #0D3325);
	border-bottom: 2px solid var(--icwb-gold, #E5B72B);
	padding-bottom: .4rem;
	margin: 0 0 .9rem;
}

/* ---------- Masthead ---------- */
.icwb-masthead {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: .5rem 1rem;
	border-bottom: 3px solid var(--icwb-deep-green, #0D3325);
	padding-bottom: .5rem;
	margin-bottom: var(--icwb-gap);
}
.icwb-masthead__title {
	margin: 0;
	font-size: clamp(1.35rem, 2.6vw, 1.9rem);
	line-height: 1.1;
	color: var(--icwb-deep-green, #0D3325);
	letter-spacing: -0.01em;
}
.icwb-masthead__place {
	margin: .15rem 0 0;
	font-size: .82rem;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--icwb-green, #558A47);
}
.icwb-masthead__status { margin: 0; font-size: .78rem; color: var(--icwb-green, #558A47); }
.icwb-masthead__status .icwb-dot {
	display: inline-block; width: .55rem; height: .55rem; border-radius: 50%;
	background: var(--icwb-green, #558A47); margin-right: .35rem; vertical-align: baseline;
}
.icwb-masthead__status.is-stale { color: #8D2C25; font-weight: 600; }
.icwb-masthead__status.is-stale .icwb-dot { background: #8D2C25; }
.icwb-masthead__status.is-empty .icwb-dot { background: var(--icwb-line, #DCD8CC); }

/* ---------- Hero: solid Deep News Green editorial panel ---------- */
.icwb-hero {
	padding: 0;
	background: var(--icwb-deep-green, #0D3325);
	border-color: var(--icwb-deep-green, #0D3325);
	border-top-color: var(--icwb-gold, #E5B72B);
	color: #fff;
}
.icwb-hero__top {
	display: flex; align-items: center; justify-content: space-between;
	gap: 1rem; flex-wrap: wrap;
	padding: clamp(1.1rem, 2.2vw, 1.75rem) clamp(1rem, 2vw, 1.5rem) 0;
}
.icwb-hero__reading { display: flex; align-items: center; gap: clamp(.6rem, 1.5vw, 1.25rem); }
.icwb-hero__temp {
	font-family: var(--icwb-font-head);
	font-size: clamp(4rem, 11vw, 6.75rem);
	font-weight: 800; line-height: .88; letter-spacing: -.035em;
	color: #fff;
	font-variant-numeric: tabular-nums;
}
.icwb-hero__condition {
	margin: 0; font-size: clamp(1.05rem, 2.2vw, 1.45rem); font-weight: 700; line-height: 1.15;
	font-family: var(--icwb-font-head); color: var(--icwb-cream, #F4F0E5);
}
.icwb-hero__place {
	margin: .25rem 0 0; font-size: .76rem; letter-spacing: .08em;
	text-transform: uppercase; color: var(--icwb-gold, #E5B72B);
}
.icwb-hero__graphic {
	width: clamp(150px, 24vw, 260px); height: auto; flex: none;
	filter: drop-shadow(0 10px 22px rgba(0, 0, 0, .35));
}
.icwb-hero__commentary {
	margin: 1rem 0 0;
	padding: .7rem clamp(1rem, 2vw, 1.5rem);
	border-top: 3px solid var(--icwb-gold, #E5B72B);
	background: var(--icwb-dark-green, #184B35);
	font-family: var(--icwb-font-head);
	font-size: clamp(1.02rem, 1.9vw, 1.2rem); font-weight: 700; line-height: 1.35;
	color: var(--icwb-gold, #E5B72B);
}

/* Stat groupings: distinct blocks on the green field. */
.icwb-hero__groups {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 1px;
	margin-top: clamp(1rem, 2vw, 1.4rem);
	background: var(--icwb-dark-green, #184B35);
	border-top: 1px solid var(--icwb-dark-green, #184B35);
}
.icwb-statgroup { background: var(--icwb-deep-green, #0D3325); padding: .8rem clamp(1rem, 2vw, 1.2rem) .9rem; }
.icwb-statgroup__title {
	margin: 0 0 .5rem; font-family: var(--icwb-font-ui);
	font-size: .68rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
	color: var(--icwb-ink, #171A18); background: var(--icwb-gold, #E5B72B);
	display: inline-block; padding: .15rem .45rem; border-radius: 2px;
}
.icwb-statgroup dl { margin: 0; display: grid; gap: .3rem; }
.icwb-statgroup dl > div { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; }
.icwb-statgroup dt { margin: 0; font-size: .78rem; color: #BFD3B9; }
.icwb-statgroup dd {
	margin: 0; font-weight: 700; font-variant-numeric: tabular-nums;
	font-size: .95rem; color: #fff; text-align: right;
}
.icwb-statgroup dd.is-lead { font-size: 1.25rem; color: var(--icwb-gold, #E5B72B); }

/* ---------- "What Ralph Thinks" panel ---------- */
.icwb-ralph {
	background: var(--icwb-dark-green, #184B35);
	border-color: var(--icwb-dark-green, #184B35);
	border-top-color: var(--icwb-gold, #E5B72B);
	color: var(--icwb-cream, #F4F0E5);
	display: flex; flex-direction: column;
}
.icwb-ralph__heading {
	margin: 0 0 .9rem; font-size: .84rem; font-family: var(--icwb-font-ui);
	font-weight: 700; letter-spacing: .13em; text-transform: uppercase;
	color: #fff;
	border-bottom: 2px solid var(--icwb-gold, #E5B72B); padding-bottom: .4rem;
}
.icwb-ralph__byline { display: flex; align-items: center; gap: .85rem; margin-bottom: .85rem; }
.icwb-ralph__portrait {
	flex: none; width: 132px; height: 132px; border-radius: 50%;
	background: var(--icwb-deep-green, #0D3325);
	border: 3px solid var(--icwb-gold, #E5B72B);
	box-shadow: 0 4px 14px rgba(0, 0, 0, .28);
	overflow: hidden;
}
.icwb-ralph__portrait img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 18%; display: block; }
.icwb-ralph__name {
	margin: 0; font-family: var(--icwb-font-head); font-weight: 800; font-size: 1.15rem; color: #fff;
}
.icwb-ralph__title {
	margin: .1rem 0 0; font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; color: var(--icwb-gold, #E5B72B);
}
.icwb-ralph__commentary { flex: 1; }
.icwb-ralph__commentary p { margin: 0; font-size: .98rem; line-height: 1.6; }
@media (max-width: 700px) {
	.icwb-ralph__portrait { width: 96px; height: 96px; }
}

/* ---------- Location bar ---------- */
.icwb-locbar { flex-basis: 100%; }
.icwb-locbar__form { margin: 0; }
.icwb-locbar__label {
	display: block; margin: 0 0 .3rem; font-size: .72rem; font-weight: 700;
	letter-spacing: .08em; text-transform: uppercase; color: var(--icwb-dark-green, #184B35);
}
.icwb-locbar__row { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; }
.icwb-locbar__input {
	flex: 1 1 200px; min-width: 0; padding: .5rem .65rem;
	border: 1px solid var(--icwb-line, #DCD8CC); border-radius: 6px;
	font: inherit; font-size: .92rem; color: var(--icwb-ink, #171A18); background: #fff;
}
.icwb-locbar__input:focus-visible {
	outline: 2px solid var(--icwb-green, #558A47); outline-offset: 1px;
	border-color: var(--icwb-green, #558A47);
}
.icwb-locbar__btn {
	padding: .5rem .85rem; border: 1px solid var(--icwb-deep-green, #0D3325); border-radius: 6px;
	background: var(--icwb-deep-green, #0D3325); color: #fff;
	font: inherit; font-size: .85rem; font-weight: 700; cursor: pointer;
}
.icwb-locbar__btn:hover { background: var(--icwb-dark-green, #184B35); }
.icwb-locbar__btn:focus-visible { outline: 2px solid var(--icwb-gold, #E5B72B); outline-offset: 2px; }
.icwb-locbar__btn--ghost {
	background: #fff; color: var(--icwb-deep-green, #0D3325);
}
.icwb-locbar__btn--ghost:hover { background: var(--icwb-cream, #F4F0E5); }
.icwb-locbar__reset {
	padding: .35rem .2rem; border: 0; background: none; cursor: pointer;
	font: inherit; font-size: .8rem; color: var(--icwb-dark-green, #184B35);
	text-decoration: underline; text-underline-offset: 2px;
}
.icwb-locbar__reset:focus-visible { outline: 2px solid var(--icwb-green, #558A47); outline-offset: 2px; }
.icwb-locbar__status { margin: .35rem 0 0; min-height: 1em; font-size: .82rem; color: var(--icwb-dark-green, #184B35); }
.icwb-locbar__status.is-error { color: #8D2C25; font-weight: 600; }

/* Quiet updating state: a subtle fade on the swappable modules, never a
   spinner takeover. Removed entirely under prefers-reduced-motion. */
.icwb-wc .icwb-hero-row,
.icwb-wc .icwb-timeline,
.icwb-wc .icwb-outlook { transition: opacity .18s ease; }
.icwb-wc.is-updating .icwb-hero-row,
.icwb-wc.is-updating .icwb-timeline,
.icwb-wc.is-updating .icwb-outlook,
.icwb-wc.is-swapping .icwb-hero-row,
.icwb-wc.is-swapping .icwb-timeline,
.icwb-wc.is-swapping .icwb-outlook { opacity: .55; }
@media (prefers-reduced-motion: reduce) {
	.icwb-wc .icwb-hero-row,
	.icwb-wc .icwb-timeline,
	.icwb-wc .icwb-outlook { transition: none; }
	.icwb-wc.is-updating .icwb-hero-row,
	.icwb-wc.is-updating .icwb-timeline,
	.icwb-wc.is-updating .icwb-outlook,
	.icwb-wc.is-swapping .icwb-hero-row,
	.icwb-wc.is-swapping .icwb-timeline,
	.icwb-wc.is-swapping .icwb-outlook { opacity: 1; }
}

/* ---------- Instrumentation bay ---------- */
.icwb-meterbay { text-align: center; }
.icwb-meterbay .icwb-meter { border-top: 0; margin-top: 0; padding-top: 0; }

/* ---------- Attribution ---------- */
.icwb-attrib {
	border-top: 3px double var(--icwb-deep-green, #0D3325);
	padding-top: .7rem; margin-top: var(--icwb-gap);
	font-size: .78rem; color: var(--icwb-green, #558A47);
}
.icwb-attrib p { margin: .25rem 0; }
.icwb-attrib__primary { font-weight: 600; color: var(--icwb-ink, #171A18); }
.icwb-attrib__warn { color: var(--icwb-gold, #E5B72B); font-weight: 600; }
.icwb-attrib__method { font-size: .72rem; font-style: italic; }

/* ---------- Motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.icwb-wc * { animation: none !important; transition: none !important; }
}

/* ==========================================================================
   PHASE 3–5: timeline, forecast cards, instrument meters, radar, operations
   ========================================================================== */

/* ---------- Hour-by-hour timeline ---------- */
.icwb-timeline__scroll {
	position: relative; overflow-x: auto; overflow-y: hidden;
	-webkit-overflow-scrolling: touch; scrollbar-width: thin;
	border: 1px solid var(--icwb-line, #DCD8CC); border-radius: 6px;
	background: linear-gradient(180deg, #fbfaf7 0%, var(--icwb-cream, #F4F0E5) 100%);
}
.icwb-timeline__scroll:focus-visible { outline: 3px solid var(--icwb-deep-green, #0D3325); outline-offset: 2px; }
.icwb-timeline__svg { display: block; }
.icwb-timeline__overlay { position: absolute; inset: 0; pointer-events: none; }

.icwb-tl__night { fill: rgba(30,58,74,.13); }
.icwb-tl__bar { fill: rgba(53,86,107,.42); }
.icwb-tl__area { fill: rgba(141,44,37,.10); }
.icwb-tl__line { fill: none; stroke: var(--icwb-gold, #E5B72B); stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.icwb-tl__dot { fill: var(--icwb-gold, #E5B72B); }
.icwb-tl__temp {
	fill: var(--icwb-ink, #171A18); font-size: 17px; font-weight: 800; text-anchor: middle;
	font-family: var(--icwb-font-ui); paint-order: stroke; stroke: rgba(255,255,255,.85); stroke-width: 3px;
}
.icwb-tl__eventline { stroke: var(--icwb-deep-green, #0D3325); stroke-width: 1.2; stroke-dasharray: 3 3; opacity: .6; }
.icwb-tl__eventline--storm, .icwb-tl__eventline--rain { stroke: var(--icwb-gold, #E5B72B); opacity: .8; }
.icwb-tl__eventlabel {
	fill: var(--icwb-deep-green, #0D3325); font-size: 11px; font-weight: 700; letter-spacing: .09em;
	font-family: var(--icwb-font-ui);
}
.icwb-tl-hour {
	position: absolute; display: flex; flex-direction: column;
	align-items: center; gap: .12rem; text-align: center;
}
.icwb-tl-hour__time { font-size: .88rem; color: var(--icwb-ink, #171A18); font-weight: 700; letter-spacing: .01em; }
.icwb-tl-hour.is-night .icwb-tl-hour__time { color: var(--icwb-deep-green, #0D3325); }
.icwb-tl-hour__icon { display: block; width: 100%; max-width: 54px; height: auto; filter: drop-shadow(0 2px 4px rgba(27,26,24,.12)); }
.icwb-tl-hour__pop { font-size: .84rem; font-weight: 800; color: #2b5570; min-height: 1em; }
.icwb-tl-hour__pop:empty { min-height: 1em; }
.icwb-tl-hour { top: auto; bottom: 10px; }
.icwb-tl-hour__icon { order: -1; }
.icwb-timeline__hint { margin: .4rem 0 0; font-size: .72rem; color: var(--icwb-green, #558A47); text-align: right; }
@media (min-width: 1100px) { .icwb-timeline__hint { display: none; } }

/* Timeline layout: chart plus a fixed advertising rail. */
.icwb-timeline__layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 1.25rem; align-items: start; }
@media (max-width: 1080px) { .icwb-timeline__layout { grid-template-columns: minmax(0, 1fr); } }
.icwb-timeline__chart { min-width: 0; }
.icwb-timeline__rail { display: flex; justify-content: center; }
.icwb-timeline__rail { flex-direction: column; align-items: center; }
.icwb-adslot__label {
	margin: 0 0 .3rem; font-size: .62rem; letter-spacing: .16em; font-weight: 700;
	text-transform: uppercase; color: #a49d8d; text-align: center;
}
.icwb-adslot--300x300 {
	width: 300px; height: 300px; display: flex; align-items: center; justify-content: center;
	background: var(--icwb-cream, #F4F0E5); border: 1px solid var(--icwb-line, #DCD8CC);
	border-radius: 4px; overflow: hidden;
}
.icwb-adslot--300x300 > *, .icwb-adslot--300x300 img { max-width: 100%; height: auto; display: block; }
.icwb-adslot__placeholder { margin: 0; font-size: .82rem; letter-spacing: .12em; color: #b3ad9e; }

/* ---------- Outlook: forecast beside radar and instrument ---------- */
.icwb-outlook {
	display: grid;
	grid-template-columns: minmax(0, 1.35fr) minmax(320px, 1fr);
	gap: var(--icwb-gap);
	align-items: start;
}
@media (max-width: 1000px) { .icwb-outlook { grid-template-columns: minmax(0, 1fr); } }
.icwb-outlook__main, .icwb-outlook__side { min-width: 0; }
.icwb-outlook__side { display: flex; flex-direction: column; gap: var(--icwb-gap); }
.icwb-outlook .icwb-panel { margin-bottom: 0; }

/* Forecast runs one to two columns inside the narrower left side. */
.icwb-outlook .icwb-fc__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 1320px) { .icwb-outlook .icwb-fc__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px)  { .icwb-outlook .icwb-fc__grid { grid-template-columns: minmax(0, 1fr); } }

/* Radar stacks its support column when it sits in the narrow rail. */
.icwb-outlook .icwb-radar-grid { grid-template-columns: minmax(0, 1fr); }
.icwb-outlook .icwb-radar__map { aspect-ratio: 4 / 3; min-height: 240px; }

/* ---------- Extended forecast cards ---------- */
.icwb-fc__grid {
	list-style: none; margin: 0; padding: 0;
	display: grid; gap: .8rem;
	grid-template-columns: repeat(4, minmax(0, 1fr));
}
@media (max-width: 1100px) { .icwb-fc__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 820px)  { .icwb-fc__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 430px)  { .icwb-fc__grid { grid-template-columns: minmax(0, 1fr); } }

.icwb-fc__card {
	display: flex; flex-direction: column; align-items: center; text-align: center;
	padding: .85rem .7rem 1rem; border-radius: 10px;
	border: 1px solid var(--icwb-line, #DCD8CC);
	border-top: 4px solid var(--icwb-deep-green, #0D3325);
	/* One consistent surface across every card: the weather graphics carry
	   pale clouds, which disappear against a tinted wash. */
	background: #fff;
}
.icwb-fc__card--day { border-top-color: #1E3A4A; }
.icwb-fc__card--night { border-top-color: #35566b; }
.icwb-fc__card--rain { border-top-color: #2f6a8c; }
.icwb-fc__card--storm { border-top-color: #8D2C25; }
.icwb-fc__card--snow { border-top-color: #7d97a8; }
.icwb-fc__card--heat { border-top-color: #c07a33; }
.icwb-fc__card--cold { border-top-color: #4a6d86; }
.icwb-fc__card.is-night .icwb-fc__name { color: var(--icwb-green, #558A47); font-weight: 600; }

.icwb-fc__name {
	margin: 0 0 .35rem; font-family: var(--icwb-font-head); font-weight: 700;
	font-size: .95rem; color: var(--icwb-deep-green, #0D3325);
}
.icwb-fc__icon { display: block; margin: .1rem auto .25rem; width: clamp(58px, 22%, 78px); height: auto; filter: drop-shadow(0 3px 6px rgba(27,26,24,.14)); }
.icwb-fc__temp { margin: 0; display: flex; align-items: baseline; gap: .3rem; }
.icwb-fc__degree {
	font-family: var(--icwb-font-head); font-size: 1.85rem; font-weight: 800; line-height: 1;
	color: var(--icwb-ink, #171A18); font-variant-numeric: tabular-nums;
}
.icwb-fc__degree-label { font-size: .68rem; text-transform: uppercase; letter-spacing: .08em; color: var(--icwb-green, #558A47); }
.icwb-fc__short { margin: .35rem 0 0; font-size: .82rem; line-height: 1.25; color: var(--icwb-ink, #171A18); }
.icwb-fc__pop { margin: .3rem 0 0; font-size: .74rem; font-weight: 700; color: var(--icwb-green, #558A47); min-height: 1em; }
.icwb-fc__pop.is-wet { color: var(--icwb-gold, #E5B72B); }
.icwb-fc__practical {
	margin: .45rem 0 0; font-size: .76rem; font-style: italic; color: var(--icwb-green, #558A47);
	border-top: 1px dashed var(--icwb-line, #DCD8CC); padding-top: .4rem; width: 100%;
}
.icwb-fc__detail { margin-top: .4rem; width: 100%; font-size: .78rem; }
.icwb-fc__detail summary { cursor: pointer; color: var(--icwb-deep-green, #0D3325); font-weight: 600; }
.icwb-fc__detail summary:focus-visible { outline: 2px solid var(--icwb-deep-green, #0D3325); outline-offset: 2px; }
.icwb-fc__detail p { margin: .35rem 0 0; text-align: left; color: var(--icwb-ink, #171A18); }

/* ---------- Instrument meter: needle over a colour-coded dial ---------- */
.icwb-meter__face { max-width: 300px; margin: 0 auto; }
.icwb-meter--compact .icwb-meter__face { width: 88%; max-width: 88%; margin: 0 auto; }
.icwb-meter__svg { display: block; width: 100%; height: auto; overflow: visible; }
.icwb-meter__zone { fill: none; stroke-width: 20; stroke-linecap: butt; }
.icwb-meter__zone--z0 { stroke: #4a7a5c; }
.icwb-meter__zone--z1 { stroke: #a6a83f; }
.icwb-meter__zone--z2 { stroke: #cf8a2c; }
.icwb-meter__zone--z3 { stroke: #a8342a; }
.icwb-meter__tick { stroke: rgba(27,26,24,.45); stroke-width: 2; stroke-linecap: round; }
.icwb-meter__needle {
	stroke: var(--icwb-ink, #171A18); stroke-width: 4.5; stroke-linecap: round;
	filter: drop-shadow(0 1px 2px rgba(0,0,0,.35));
}
.icwb-meter.is-overflow .icwb-meter__needle { stroke: var(--icwb-gold, #E5B72B); }
.icwb-meter__hub { fill: var(--icwb-ink, #171A18); }
.icwb-meter__hub-inner { fill: var(--icwb-cream, #F4F0E5); }
.icwb-meter__value {
	font-family: var(--icwb-font-head); font-size: 2.4rem; font-weight: 800;
	margin: -.2rem 0 0; color: var(--icwb-deep-green, #0D3325); font-variant-numeric: tabular-nums; line-height: 1;
}
.icwb-meter--compact .icwb-meter__value { font-size: 2rem; }
.icwb-meter.is-overflow .icwb-meter__value { color: var(--icwb-gold, #E5B72B); }
.icwb-meter__label { font-size: 1.05rem; }
.icwb-meter--compact .icwb-meter__label { font-size: 1rem; }
.icwb-meter__inputs {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr));
	gap: .3rem .8rem; margin: .7rem auto 0; max-width: 440px;
	border-top: 1px dashed var(--icwb-line, #DCD8CC); padding-top: .55rem;
}
.icwb-meter__inputs > div { display: flex; flex-direction: column; align-items: center; }
.icwb-meter__inputs dt { font-size: .66rem; text-transform: uppercase; letter-spacing: .07em; color: var(--icwb-green, #558A47); }
.icwb-meter__inputs dd { margin: 0; font-weight: 700; font-size: .95rem; font-variant-numeric: tabular-nums; }

/* One-time needle sweep, then stillness. Overflow alone earns the sway. */
@media (prefers-reduced-motion: no-preference) {
	.icwb-meter[data-icwb-meter].icwb-anim .icwb-meter__needle-group { transition: transform .9s cubic-bezier(.22,1,.36,1); }
	.icwb-meter.is-overflow.icwb-settled .icwb-meter__needle-group {
		animation: icwb-overflow-sway 3.4s ease-in-out infinite alternate;
	}
}

/* ---------- Radar ---------- */
.icwb-radar-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(210px, 260px); gap: 1rem; }
@media (max-width: 900px) { .icwb-radar-grid { grid-template-columns: minmax(0, 1fr); } }
.icwb-radar__map {
	position: relative; width: 100%; aspect-ratio: 16 / 11; min-height: 280px;
	background: var(--icwb-cream, #F4F0E5);
	border: 1px solid var(--icwb-line, #DCD8CC); border-radius: 8px; overflow: hidden;
}
.icwb-radar__state {
	position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
	margin: 0; padding: 1rem; text-align: center; font-size: .86rem; color: var(--icwb-green, #558A47);
}
.icwb-radar__state--error { position: static; min-height: 160px; color: var(--icwb-gold, #E5B72B); font-weight: 600; }
.icwb-radar__controls { display: flex; align-items: center; gap: .7rem; margin-top: .55rem; flex-wrap: wrap; }
.icwb-radar__play {
	background: var(--icwb-deep-green, #0D3325); color: #fff; border: 0; border-radius: 4px;
	padding: .4rem .9rem; font: 700 .8rem/1 var(--icwb-font-ui); cursor: pointer; min-height: 34px;
}
.icwb-radar__play:focus-visible { outline: 3px solid var(--icwb-gold, #E5B72B); outline-offset: 2px; }
.icwb-radar__scrub { flex: 1; min-width: 120px; display: flex; }
.icwb-radar__scrub input { width: 100%; }
.icwb-radar__stamp { margin: 0; font-size: .8rem; font-weight: 700; color: var(--icwb-deep-green, #0D3325); font-variant-numeric: tabular-nums; }
.icwb-radar__legend { list-style: none; display: flex; flex-wrap: wrap; gap: .1rem .9rem; margin: .5rem 0 0; padding: 0; font-size: .72rem; color: var(--icwb-green, #558A47); }
.icwb-radar__legend li { display: flex; align-items: center; gap: .3rem; }
.icwb-swatch { width: 14px; height: 10px; border-radius: 2px; display: inline-block; }
.icwb-swatch--light { background: #2e8b57; }
.icwb-swatch--mod { background: #d8c221; }
.icwb-swatch--heavy { background: #d4741f; }
.icwb-swatch--severe { background: #a3231b; }
.icwb-radar__meta { margin: .45rem 0 0; font-size: .72rem; color: var(--icwb-green, #558A47); }
.icwb-radar__support { display: flex; flex-direction: column; gap: .55rem; }
.icwb-radar__item { border-left: 3px solid var(--icwb-deep-green, #0D3325); padding: .35rem .6rem; background: var(--icwb-cream, #F4F0E5); border-radius: 0 4px 4px 0; }
.icwb-radar__item.is-urgent { border-left-color: var(--icwb-gold, #E5B72B); background: #f6e9e7; }
.icwb-radar__item-title { margin: 0; font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; color: var(--icwb-deep-green, #0D3325); }
.icwb-radar__item.is-urgent .icwb-radar__item-title { color: var(--icwb-gold, #E5B72B); }
.icwb-radar__item-body { margin: .15rem 0 0; font-size: .82rem; line-height: 1.35; }

/* ---------- Atmospheric Operations Monitor ---------- */
.icwb-aom {
	background: #0f171d; color: #cfdbe3; border-radius: var(--icwb-radius, 12px);
	padding: clamp(1rem, 2vw, 1.5rem); margin: 0 0 var(--icwb-gap);
	border: 1px solid #223039;
}
.icwb-aom__title {
	margin: 0 0 .9rem; font-family: var(--icwb-font-ui); font-size: .82rem; font-weight: 700;
	letter-spacing: .18em; color: #e6eef3; border-bottom: 1px solid #2b3d49; padding-bottom: .5rem;
}
.icwb-aom__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 400px); gap: 1.2rem; }
@media (max-width: 900px) { .icwb-aom__grid { grid-template-columns: minmax(0, 1fr); } }
.icwb-aom__stage { position: relative; }
.icwb-aom__canvas {
	display: block; width: 100%; height: auto; aspect-ratio: 1200 / 620;
	border-radius: 6px; background: #141d24; border: 1px solid #24333d;
}
.icwb-aom__stamp {
	position: absolute; left: .6rem; bottom: .5rem; margin: 0;
	font: 600 .68rem/1 var(--icwb-font-ui); letter-spacing: .12em; color: rgba(190,212,226,.6);
}
.icwb-aom__panels { display: flex; flex-direction: column; gap: .8rem; }
.icwb-aom__gauge { background: #16212a; border: 1px solid #26363f; border-radius: 6px; padding: .7rem .85rem; }
.icwb-aom__gauge-label { margin: 0; font-size: .82rem; letter-spacing: .14em; text-transform: uppercase; color: #9db6c5; }
.icwb-aom__gauge-value { margin: .15rem 0 .5rem; font-family: var(--icwb-font-head); font-size: 3rem; font-weight: 800; color: #eef4f8; line-height: 1; }
.icwb-aom__gauge-value span { font-size: 1.1rem; font-weight: 600; color: #8aa5b5; }
.icwb-aom__bar { height: 12px; background: #223039; border-radius: 4px; overflow: hidden; }
.icwb-aom__bar-fill { display: block; height: 100%; background: linear-gradient(90deg, #3f7a54 0%, #b5952c 55%, #b4372a 100%); }
.icwb-aom__band { margin: .5rem 0 0; font-weight: 700; font-size: 1.25rem; letter-spacing: .03em; color: #e8f0f5; font-family: var(--icwb-font-head); }
.icwb-aom__commentary {
	margin: 0; font-family: var(--icwb-font-head); font-size: 1.16rem; line-height: 1.5; color: #eef4f8;
	border-left: 4px solid #b4372a; padding-left: .85rem;
}
.icwb-aom__tracking { background: #16212a; border: 1px solid #26363f; border-radius: 6px; padding: .7rem .85rem; }
.icwb-aom__tracking h4 { margin: 0 0 .5rem; font-family: var(--icwb-font-ui); font-size: .82rem; letter-spacing: .14em; color: #9db6c5; }
.icwb-aom__tracking p { margin: 0 0 .7rem; font-size: .95rem; line-height: 1.62; color: #c6d5e0; }
.icwb-aom__tracking p:last-child { margin-bottom: 0; }
.icwb-aom__debug { background: #101a21; border: 1px dashed #38505e; border-radius: 6px; padding: .6rem .8rem; font-size: .74rem; color: #9db4c2; }
.icwb-aom__debug ul { margin: .3rem 0 0; padding-left: 1.1rem; }
.icwb-aom__note { margin: .8rem 0 0; font-size: .72rem; color: #8296a3; border-top: 1px solid #223039; padding-top: .5rem; }
