/**
 * Theme Name: Blocksy Child
 * Description: Blocksy Child theme
 * Author: Creative Themes
 * Template: blocksy
 * Text Domain: blocksy
 * Version: 1.0.0
 */

/* ==========================================================================
   NØAVH design tokens
   Accent sampled from the club logo (AVRC-Logo_2.png). Rust #D05830 is the
   logo's own sunset color; #B8471F is that hue darkened to clear WCAG AA
   (5.30:1 on white) for text-sized use. Teal #284048 is also from the logo.
   ========================================================================== */

:root {
	--n0-rust: #B8471F;
	--n0-rust-fill: #D05830;
	--n0-rust-wash: #FDF6F2;
	--n0-teal: #284048;
	--n0-tan: #E8B070;
	--n0-ink: #1C1C1E;
	--n0-muted: #5B6470;
	--n0-line: #E4E6E9;
	--n0-ok: #2E7D53;
	--n0-bar: #1C1C1E;
	--n0-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
}

/* ==========================================================================
   Shared components
   ========================================================================== */

.n0-mono { font-family: var(--n0-mono); }

.n0-status {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	font-size: .88rem;
	color: var(--n0-muted);
	white-space: nowrap;
}
.n0-dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--n0-ok);
	flex: 0 0 auto;
}

/* ==========================================================================
   Home — hero
   ========================================================================== */

/* ==========================================================================
   Header bar — DARK. Admin's call: black bar rather than white.

   This is still a stopgap over a customizer setting. The proper version is
   Customize -> Header -> middle row -> Transparent: off, Background: #1C1C1E,
   with the menu/socials/button colors set to white in the same panel. Do that
   and every rule here stops matching (they're all scoped to
   [data-transparent-row="yes"]) and disappears on its own.

   NOTE `body[data-header...]` with NO space: the data-header attribute lives ON
   the body element, so a descendant selector (`body [data-header]`) matches
   nothing at all. Qualifying body by its own attribute also raises specificity
   above Blocksy's inline <style>, which otherwise wins on source order.
   ========================================================================== */
/* Dark bar. Blocksy already paints transparent-row text white, so we only
   need to give it a dark surface to sit on — and lift the menu link opacity,
   since white at 55% on near-black is a weak 6:1 rather than the 15:1 it
   could be. */
body[data-header*="type-1"] .ct-header [data-transparent-row="yes"][data-row*="middle"] {
	background-color: var(--n0-bar) !important;
}
body[data-header*="type-1"] .ct-header [data-transparent-row="yes"] [data-id="menu"] > ul > li > a {
	--theme-link-initial-color: rgba(255,255,255,.92) !important;
	--theme-link-hover-color: #fff !important;
	color: rgba(255,255,255,.92) !important;
}
body[data-header*="type-1"] .ct-header [data-transparent-row="yes"] [data-id="menu"] > ul > li > a:hover {
	color: #fff !important;
}
body[data-header*="type-1"] .ct-header [data-transparent-row="yes"] [data-id="socials"] .ct-social-box a {
	--theme-icon-color: rgba(255,255,255,.92) !important;
	color: rgba(255,255,255,.92) !important;
}
body[data-header*="type-1"] .ct-header [data-transparent-row="yes"] [data-id="socials"] .ct-social-box a:hover {
	--theme-icon-color: #fff !important;
	color: #fff !important;
}
body[data-header*="type-1"] .ct-header [data-transparent-row="yes"] [data-id="button"] .ct-button-ghost {
	--theme-button-text-initial-color: rgba(255,255,255,.92) !important;
	--theme-button-border-color: rgba(255,255,255,.4) !important;
	color: rgba(255,255,255,.92) !important;
	border-color: rgba(255,255,255,.4) !important;
}
body[data-header*="type-1"] .ct-header [data-transparent-row="yes"] [data-id="button"] .ct-button-ghost:hover {
	color: #fff !important;
	border-color: #fff !important;
}
/* Sticky row uses a separate background rule and would flash white on scroll. */
body[data-header*="type-1"] .ct-header [data-sticky*="yes"] [data-row*="middle"] {
	background-color: var(--n0-bar) !important;
}

/* The transparent row overlays page content, so the hero must clear it.
   :has() scopes this to the transparent case only — once the row is switched
   off, the selector stops matching and the padding reverts on its own. */
body:has([data-transparent-row="yes"]) .n0-hero { padding-top: 9.5rem; }
@media (max-width: 999px) {
	body:has([data-transparent-row="yes"]) .n0-hero { padding-top: 7rem; }
}

.n0-hero {
	text-align: center;
	padding: 2.5rem 1.25rem 3rem;
	border-bottom: 1px solid var(--n0-line);
	margin: 0 0 3rem;
}
.n0-hero h1 {
	color: var(--n0-teal);
	margin: 0 0 .55rem;
	letter-spacing: -.02em;
}
.n0-hero .n0-tagline {
	color: var(--n0-muted);
	font-size: 1.1rem;
	line-height: 1.5;
	margin: 0 auto 1.6rem;
	max-width: 52ch;
}
.n0-pill {
	display: inline-flex;
	align-items: center;
	gap: .55rem;
	background: var(--n0-rust);
	color: #fff;
	border-radius: 999px;
	padding: .62rem 1.2rem;
	font-size: .95rem;
	font-weight: 600;
	text-decoration: none;
	line-height: 1.3;
	transition: background .15s, transform .15s;
}
.n0-pill:hover { background: #9F3D19; color: #fff; transform: translateY(-1px); }
.n0-pill svg { flex: 0 0 auto; }

@media (max-width: 600px) {
	.n0-hero { padding: 1.75rem 1rem 2.25rem; margin-bottom: 2rem; }
	.n0-hero .n0-tagline { font-size: 1rem; }
	.n0-pill { font-size: .87rem; padding: .55rem .95rem; }
}

/* ==========================================================================
   Home — repeater quick reference
   ========================================================================== */

.n0-qr {
	border: 1px solid var(--n0-line);
	border-radius: 10px;
	background: #fff;
	overflow: hidden;
	margin: 0 0 3rem;
}
.n0-qr-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: .9rem 1.15rem;
	border-bottom: 1px solid var(--n0-line);
	background: #FAFBFB;
}
.n0-qr-title {
	font-size: .78rem;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--n0-teal);
	margin: 0;
}
.n0-qr-more {
	font-size: .85rem;
	font-weight: 600;
	color: var(--n0-rust);
	text-decoration: none;
	white-space: nowrap;
}
.n0-qr-more:hover { text-decoration: underline; }

.n0-qr-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 0;
}
.n0-qr-cell {
	padding: 1.05rem 1.15rem;
	border-right: 1px solid var(--n0-line);
}
.n0-qr-cell:last-child { border-right: 0; }

.n0-qr-freq {
	font-family: var(--n0-mono);
	font-size: 1.32rem;
	font-weight: 600;
	letter-spacing: -.02em;
	color: var(--n0-ink);
	display: block;
	margin: 0 0 .3rem;
}
.n0-qr-meta {
	font-size: .82rem;
	color: var(--n0-muted);
	line-height: 1.45;
}
.n0-qr-tag {
	display: inline-block;
	font-size: .68rem;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--n0-rust);
	background: var(--n0-rust-wash);
	border-radius: 3px;
	padding: .1rem .4rem;
	margin: 0 0 .35rem;
}

@media (max-width: 781px) {
	.n0-qr-grid { grid-template-columns: 1fr; }
	.n0-qr-cell { border-right: 0; border-bottom: 1px solid var(--n0-line); }
	.n0-qr-cell:last-child { border-bottom: 0; }
}

/* ==========================================================================
   Home — recent activity (native query loop)
   ========================================================================== */

.n0-news .wp-block-post-template {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1.15rem;
	list-style: none;
	margin: 0;
	padding: 0;
}
.n0-news .wp-block-post-template > li {
	border: 1px solid var(--n0-line);
	border-radius: 10px;
	background: #fff;
	padding: 1.1rem 1.15rem;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: .45rem;
	transition: border-color .15s;
}
.n0-news .wp-block-post-template > li:hover { border-color: #CFD4D9; }

.n0-news .n0-card-meta {
	display: flex;
	align-items: center;
	gap: .5rem;
	flex-wrap: wrap;
	font-size: .75rem;
	color: var(--n0-muted);
}
.n0-news .n0-card-meta .wp-block-post-date,
.n0-news .n0-card-meta .wp-block-post-terms { font-size: .75rem; margin: 0; }
.n0-news .n0-card-meta .wp-block-post-terms a {
	color: var(--n0-rust);
	text-decoration: none;
	font-weight: 600;
}
.n0-news .n0-card-meta .wp-block-post-terms a:hover { text-decoration: underline; }

.n0-news .wp-block-post-title {
	font-size: 1.05rem;
	line-height: 1.35;
	margin: 0;
	letter-spacing: -.01em;
}
.n0-news .wp-block-post-title a {
	color: var(--n0-teal);
	text-decoration: none;
}
.n0-news .wp-block-post-title a:hover { color: var(--n0-rust); }

.n0-news .wp-block-post-excerpt {
	margin: 0;
	font-size: .88rem;
	line-height: 1.55;
	color: var(--n0-muted);
}
.n0-news .wp-block-post-excerpt__more-text { display: none; }

@media (max-width: 900px) {
	.n0-news .wp-block-post-template { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
	.n0-news .wp-block-post-template { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Repeaters page
   ========================================================================== */

.n0-rptr { font-size: 17px; line-height: 1.6; color: var(--n0-ink); }
.n0-rptr .n0-lede {
	font-size: 1.18rem;
	line-height: 1.55;
	color: var(--n0-muted);
	max-width: 62ch;
	margin: 0 0 1.75rem;
}
.n0-rptr .n0-alert {
	border-left: 4px solid var(--n0-rust-fill);
	background: var(--n0-rust-wash);
	padding: 1.1rem 1.25rem;
	border-radius: 0;
	margin: 0 0 2.25rem;
}
.n0-rptr .n0-alert h3 {
	margin: 0 0 .45rem;
	font-size: 1rem;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--n0-rust);
}
.n0-rptr .n0-alert p { margin: 0 0 .6rem; }
.n0-rptr .n0-alert p:last-child { margin-bottom: 0; }
.n0-rptr .n0-alert strong { color: var(--n0-ink); }

.n0-rptr h2.n0-h {
	font-size: 1.5rem;
	color: var(--n0-teal);
	margin: 2.5rem 0 .3rem;
	letter-spacing: -.01em;
}
.n0-rptr .n0-sub { color: var(--n0-muted); font-size: .95rem; margin: 0 0 1rem; }

.n0-rptr .n0-wrap {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	border: 1px solid var(--n0-line);
	border-radius: 8px;
}
.n0-rptr table {
	border-collapse: collapse;
	width: 100%;
	min-width: 660px;
	margin: 0;
	background: #fff;
}
.n0-rptr thead th {
	background: #F7F8F9;
	color: var(--n0-muted);
	font-size: .72rem;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	text-align: left;
	padding: .7rem .85rem;
	border-bottom: 1px solid var(--n0-line);
	white-space: nowrap;
}
.n0-rptr tbody td {
	padding: .85rem;
	border-bottom: 1px solid var(--n0-line);
	vertical-align: top;
}
.n0-rptr tbody tr:last-child td { border-bottom: 0; }

.n0-rptr .n0-freq {
	font-family: var(--n0-mono);
	font-size: 1.06rem;
	font-weight: 600;
	color: var(--n0-ink);
	white-space: nowrap;
	letter-spacing: -.02em;
}
.n0-rptr .n0-mono { font-size: .95rem; white-space: nowrap; }
.n0-rptr .n0-call { font-weight: 600; color: var(--n0-teal); white-space: nowrap; }
.n0-rptr .n0-note { font-size: .82rem; color: var(--n0-muted); margin-top: .2rem; line-height: 1.4; }
.n0-rptr .n0-tg { font-family: var(--n0-mono); font-size: .85rem; line-height: 1.5; }
.n0-rptr .n0-tg span { color: var(--n0-muted); }
.n0-rptr .n0-foot {
	margin: 2.5rem 0 0;
	padding-top: 1.25rem;
	border-top: 1px solid var(--n0-line);
	color: var(--n0-muted);
	font-size: .95rem;
}
.n0-rptr .n0-foot a { color: var(--n0-rust); font-weight: 600; }

@media (max-width: 781px) {
	.n0-rptr { font-size: 16px; }
	.n0-rptr .n0-wrap { border: 0; border-radius: 0; overflow: visible; }
	.n0-rptr table, .n0-rptr tbody, .n0-rptr tr, .n0-rptr td { display: block; width: 100%; min-width: 0; }
	.n0-rptr thead { display: none; }
	.n0-rptr tbody tr {
		border: 1px solid var(--n0-line);
		border-radius: 8px;
		padding: .35rem .9rem .6rem;
		margin: 0 0 .85rem;
		background: #fff;
	}
	.n0-rptr tbody td {
		border: 0;
		padding: .42rem 0;
		display: flex;
		justify-content: space-between;
		align-items: baseline;
		gap: 1rem;
	}
	.n0-rptr tbody td:before {
		content: attr(data-l);
		color: var(--n0-muted);
		font-size: .72rem;
		letter-spacing: .07em;
		text-transform: uppercase;
		font-weight: 600;
		flex: 0 0 auto;
	}
	.n0-rptr tbody td.n0-first {
		display: block;
		padding: .5rem 0 .55rem;
		border-bottom: 1px solid var(--n0-line);
		margin-bottom: .3rem;
	}
	.n0-rptr tbody td.n0-first:before { display: none; }
	.n0-rptr tbody td.n0-first .n0-freq { font-size: 1.4rem; }
	.n0-rptr .n0-note { text-align: right; }
	.n0-rptr td.n0-tgcell { display: block; }
	.n0-rptr td.n0-tgcell:before { display: block; margin-bottom: .3rem; }
}

/* ==========================================================================
   About page — officers & board
   ========================================================================== */

/* Blocksy's container is 1290px. A 64ch text column inside it left the right
   half empty while the cards below ran full width — which reads as a hole
   rather than as a margin. Give the whole page one centred measure instead:
   text lands at a readable ~82ch, and cards/gallery align to the same edges.
   If the global container is ever narrowed (Customize -> it's currently
   --theme-normal-container-max-width: 1290px), this can go. */
.page-id-38 .entry-content > * {
	max-width: 760px;
	margin-left: auto;
	margin-right: auto;
}

.n0-about .n0-lede {
	font-size: 1.1rem;
	line-height: 1.65;
	color: var(--n0-muted);
	margin: 0 0 1.15rem;
}
.n0-about .n0-sign {
	font-weight: 600;
	color: var(--n0-teal);
	margin: 1.5rem 0 0;
}

.n0-about h2.n0-h {
	font-size: 1.45rem;
	color: var(--n0-teal);
	margin: 2.75rem 0 .25rem;
	letter-spacing: -.01em;
}
.n0-about .n0-sub { color: var(--n0-muted); font-size: .93rem; margin: 0 0 1.1rem; }

.n0-people {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: .8rem;
	margin: 0 0 1rem;
}
.n0-person {
	border: 1px solid var(--n0-line);
	border-radius: 10px;
	background: #fff;
	padding: .95rem 1.1rem;
}
.n0-role {
	display: block;
	font-size: .68rem;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--n0-rust);
	margin: 0 0 .3rem;
}
.n0-name {
	display: block;
	font-size: 1.05rem;
	font-weight: 600;
	color: var(--n0-ink);
	line-height: 1.3;
}
.n0-callsign {
	font-family: var(--n0-mono);
	font-size: .92rem;
	font-weight: 600;
	color: var(--n0-teal);
	text-decoration: none;
	border-bottom: 1px solid rgba(40,64,72,.25);
}
.n0-callsign:hover { color: var(--n0-rust); border-bottom-color: var(--n0-rust); }
.n0-contact { display: block; margin-top: .3rem; font-size: .85rem; color: var(--n0-muted); }
.n0-contact a { color: var(--n0-muted); text-decoration: none; }
.n0-contact a:hover { color: var(--n0-rust); }

.n0-board { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* ARRL affiliation — sits at the top of the page, not buried at the bottom. */
.n0-affil {
	display: flex;
	align-items: center;
	gap: .9rem;
	background: var(--n0-rust-wash);
	border: 1px solid #F1DDD3;
	border-radius: 10px;
	margin: 0 0 1.75rem;
	padding: .85rem 1.1rem;
}
.n0-affil img { width: 52px; height: 52px; flex: 0 0 auto; }
.n0-affil p { margin: 0; font-size: .92rem; color: var(--n0-ink); line-height: 1.45; }
.n0-affil strong { color: var(--n0-teal); }

.n0-about .wp-block-gallery { margin: 1rem 0 0; }

@media (max-width: 900px) {
	.n0-board { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
	.n0-people, .n0-board { grid-template-columns: 1fr; }
	.n0-about .n0-lede { font-size: 1.05rem; }
	.n0-affil { flex-direction: column; align-items: flex-start; gap: .75rem; }
}

/* ==========================================================================
   Club meetings + Contact pages
   ========================================================================== */

.page-id-34 .entry-content > *,
.page-id-658 .entry-content > *,
.page-id-1160 .entry-content > * {
	max-width: 760px;
	margin-left: auto;
	margin-right: auto;
}

/* Contact — reuses the .n0-mtg card pattern */
.n0-mtg-v a.n0-mail {
	font-family: var(--n0-mono);
	font-size: 1.02rem;
	color: var(--n0-rust);
	text-decoration: none;
	border-bottom: 1px solid rgba(184,71,31,.3);
}
.n0-mtg-v a.n0-mail:hover { border-bottom-color: var(--n0-rust); }

.n0-mtg .n0-lede {
	font-size: 1.1rem;
	line-height: 1.65;
	color: var(--n0-muted);
	margin: 0 0 1.5rem;
}
.n0-mtg-card {
	border: 1px solid var(--n0-line);
	border-radius: 10px;
	background: #fff;
	overflow: hidden;
	margin: 0 0 1.5rem;
}
.n0-mtg-row {
	display: flex;
	align-items: flex-start;
	gap: 1rem;
	padding: 1.05rem 1.2rem;
	border-bottom: 1px solid var(--n0-line);
}
.n0-mtg-row:last-child { border-bottom: 0; }
.n0-mtg-ico {
	flex: 0 0 auto;
	width: 34px;
	height: 34px;
	border-radius: 8px;
	background: var(--n0-rust-wash);
	color: var(--n0-rust);
	display: flex;
	align-items: center;
	justify-content: center;
}
.n0-mtg-k {
	display: block;
	font-size: .68rem;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--n0-muted);
	margin: 0 0 .2rem;
}
.n0-mtg-v {
	display: block;
	font-size: 1.08rem;
	font-weight: 600;
	color: var(--n0-ink);
	line-height: 1.35;
}
.n0-mtg-note { display: block; font-size: .87rem; color: var(--n0-muted); margin-top: .25rem; line-height: 1.45; }
.n0-mtg-note a { color: var(--n0-rust); font-weight: 600; text-decoration: none; }
.n0-mtg-note a:hover { text-decoration: underline; }

/* OpenStreetMap embed rather than Google Maps: a Google iframe sets tracking
   cookies for every visitor who merely loads the page. The "Get directions"
   link still hands off to Google for anyone who wants turn-by-turn — but
   that's a click they choose to make. */
.n0-mtg-map {
	border: 1px solid var(--n0-line);
	border-radius: 10px;
	overflow: hidden;
	margin: 0 0 1.5rem;
	background: #F7F8F9;
}
.n0-mtg-map iframe {
	display: block;
	width: 100%;
	height: 300px;
	border: 0;
}
.n0-mtg-map-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: .7rem 1rem;
	border-top: 1px solid var(--n0-line);
	background: #fff;
	font-size: .87rem;
	color: var(--n0-muted);
}
.n0-mtg-map-foot a { color: var(--n0-rust); font-weight: 600; text-decoration: none; white-space: nowrap; }
.n0-mtg-map-foot a:hover { text-decoration: underline; }

@media (max-width: 600px) {
	.n0-mtg-map iframe { height: 220px; }
	.n0-mtg-map-foot { flex-direction: column; align-items: flex-start; gap: .35rem; }
}

.n0-mtg-photo { margin: 2rem 0 0; }
.n0-mtg-photo img {
	width: 100%;
	height: auto;
	max-height: 460px;
	object-fit: cover;
	object-position: 50% 30%;
	border-radius: 10px;
	display: block;
}
.n0-mtg-photo figcaption {
	font-size: .84rem;
	color: var(--n0-muted);
	margin-top: .55rem;
	text-align: center;
}

@media (max-width: 600px) {
	.n0-mtg .n0-lede { font-size: 1.02rem; }
	.n0-mtg-v { font-size: 1rem; }
	.n0-mtg-photo img { max-height: 320px; }
}

/* ==========================================================================
   Meeting minutes archive
   ========================================================================== */

.n0-min { color: var(--n0-ink); }
.n0-min .n0-m-lede {
	color: var(--n0-muted);
	font-size: 1.08rem;
	max-width: 60ch;
	margin: 0 0 1.6rem;
}
.n0-min ul.n0-m-list {
	list-style: none;
	margin: 0;
	padding: 0;
	border: 1px solid var(--n0-line);
	border-radius: 8px;
	overflow: hidden;
	background: #fff;
}
.n0-min li.n0-m-row { margin: 0; border-bottom: 1px solid var(--n0-line); }
.n0-min li.n0-m-row:last-child { border-bottom: 0; }
.n0-min li.n0-m-row a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1rem 1.15rem;
	text-decoration: none;
	color: var(--n0-ink);
	transition: background .12s;
}
.n0-min li.n0-m-row a:hover { background: var(--n0-rust-wash); }
.n0-min .n0-m-date { font-weight: 600; font-size: 1.02rem; color: var(--n0-teal); }
.n0-min .n0-m-go { color: var(--n0-rust); font-size: .88rem; font-weight: 600; white-space: nowrap; }

@media (max-width: 600px) {
	.n0-min li.n0-m-row a { flex-direction: column; align-items: flex-start; gap: .3rem; }
	.n0-min .n0-m-go { font-size: .82rem; }
}