/* W2ZB theme: dark mode, conventions, and components that theme.json can't express. */

/* ---------- dark mode: swap the palette presets (":root body" outranks core's preset declarations) ---------- */
@media (prefers-color-scheme: dark) {
	:root body {
		--wp--preset--color--paper: #24211D;
		--wp--preset--color--paper-2: #2D2924;
		--wp--preset--color--ink: #F2ECDD;
		--wp--preset--color--muted: #B5AC9C;
		--wp--preset--color--accent: #C25450;
		--wp--preset--color--line: #4A453D;
		color-scheme: dark;
	}
}

/* ---------- conventions ---------- */
.cs { font-family: var(--wp--preset--font-family--mono); font-size: .92em; letter-spacing: .01em; }
a { text-underline-offset: .18em; }
:where(.wp-site-blocks) :focus-visible { outline: 2px solid var(--wp--preset--color--accent); outline-offset: 2px; }

.has-drop-cap:not(:focus)::first-letter {
	font-family: var(--wp--preset--font-family--slab); font-weight: 700; color: var(--wp--preset--color--accent);
	font-size: 3.4em; line-height: .8; margin: .08em .1em 0 0;
}

.w2zb-kicker {
	font-family: var(--wp--preset--font-family--mono); font-size: .75rem; line-height: 1;
	letter-spacing: .35em; text-transform: uppercase; color: var(--wp--preset--color--muted);
}

/* ---------- headers ---------- */
.w2zb-header { border-bottom: 1px solid var(--wp--preset--color--ink); }
.w2zb-call-sm, .w2zb-call-sm a {
	font-family: var(--wp--preset--font-family--slab); font-weight: 700; font-size: 2rem; line-height: 1;
	color: var(--wp--preset--color--ink); text-decoration: none;
	text-shadow: 1px 1px 0 color-mix(in srgb, var(--wp--preset--color--accent) 55%, transparent);
}
.w2zb-mast { text-align: center; border-bottom: 1px solid var(--wp--preset--color--ink); }
.w2zb-call-xl {
	font-family: var(--wp--preset--font-family--slab); font-weight: 700; line-height: .85;
	font-size: clamp(4.5rem, 20vw, 9.5rem); margin-block: .7rem .45rem !important;
	text-shadow: 1px 1px 0 color-mix(in srgb, var(--wp--preset--color--accent) 55%, transparent);
}
.w2zb-byline { display: flex; align-items: center; justify-content: center; gap: .75rem;
	font-family: var(--wp--preset--font-family--slab); font-weight: 500; font-size: 1.1rem; }
.w2zb-byline::before, .w2zb-byline::after { content: ""; flex: 1; max-width: 6rem; border-top: 3px double var(--wp--preset--color--accent); }

.wp-block-navigation .wp-block-navigation__container { row-gap: .35rem; }
.wp-block-navigation a { text-decoration: none; border-bottom: 1px solid transparent; padding-bottom: 2px; }
.wp-block-navigation a:hover,
.wp-block-navigation .current-menu-item > a,
.wp-block-navigation a[aria-current="page"] { color: var(--wp--preset--color--accent); border-bottom-color: var(--wp--preset--color--accent); }

/* ---------- page head ---------- */
.w2zb-page-head { text-align: center; }
.w2zb-page-head .wp-block-post-excerpt { max-width: 52ch; margin-inline: auto; color: var(--wp--preset--color--muted); font-size: 1.1rem; }
.w2zb-page-head .wp-block-post-excerpt__more-link { display: none; }
.w2zb-page-head.has-rule::after { content: ""; display: block; width: min(16rem, 60%); margin: 1.5rem auto 0;
	border-top: 3px double var(--wp--preset--color--accent); }

/* ---------- block styles ---------- */
.wp-block-heading.is-style-section {
	display: flex; align-items: center; gap: .75rem; margin-top: 3rem;
	font-family: var(--wp--preset--font-family--mono); font-size: .8rem; font-weight: 700; line-height: 1;
	letter-spacing: .25em; text-transform: uppercase; color: var(--wp--preset--color--muted);
}
.wp-block-heading.is-style-section::after { content: ""; flex: 1; border-top: 1px solid var(--wp--preset--color--line); }

.wp-block-group.is-style-framed {
	border: 2px solid var(--wp--preset--color--ink); outline: 1px solid var(--wp--preset--color--ink); outline-offset: 4px;
	padding: 1.25rem 1.5rem; margin-inline: 5px;
}
a.w2zb-feature, .w2zb-feature a { text-decoration: none; }

.w2zb-meta {
	font-family: var(--wp--preset--font-family--mono); font-size: .72rem; line-height: 1.4;
	letter-spacing: .1em; text-transform: uppercase; color: var(--wp--preset--color--muted);
}

/* ---------- The Call: timeline ---------- */
.w2zb-timeline { position: relative; }
.w2zb-timeline::before { content: ""; position: absolute; left: 7.25rem; top: .5rem; bottom: .5rem; border-left: 2px solid var(--wp--preset--color--accent); }
.w2zb-era { display: grid !important; grid-template-columns: 6.5rem 1fr; gap: 0 1.75rem !important; position: relative; padding-bottom: 2.25rem; margin-block: 0 !important; }
.w2zb-era::before { content: ""; position: absolute; left: calc(7.25rem - 6px); top: .45rem; width: 10px; height: 10px;
	background: var(--wp--preset--color--paper); border: 2px solid var(--wp--preset--color--accent); border-radius: 50%; }
.w2zb-era.is-held::before { background: var(--wp--preset--color--accent); }
.w2zb-era.is-gap::before { border-style: dashed; border-color: var(--wp--preset--color--muted); }
.w2zb-era.is-now::before { width: 16px; height: 16px; left: calc(7.25rem - 9px); top: .3rem; background: var(--wp--preset--color--accent);
	box-shadow: 0 0 0 4px var(--wp--preset--color--paper), 0 0 0 5px var(--wp--preset--color--accent); }
.w2zb-when { text-align: right; font-family: var(--wp--preset--font-family--mono); font-size: .85rem; font-weight: 600; line-height: 1.35;
	color: var(--wp--preset--color--muted); margin: 0 !important; padding: .2rem .4rem 0 0; }
.w2zb-when strong { display: block; font-family: var(--wp--preset--font-family--slab); font-size: 1.35rem; line-height: 1.1; color: var(--wp--preset--color--ink); }
.w2zb-what > * { margin-block: 0 .4rem !important; }
.w2zb-what h3 { font-size: 1.25rem; }
.w2zb-who { font-family: var(--wp--preset--font-family--mono); font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.w2zb-src { font-family: var(--wp--preset--font-family--mono); font-size: .75rem; color: var(--wp--preset--color--muted); }
.w2zb-src a { color: inherit; }
.w2zb-era.is-gap h3 { font-weight: 500; font-style: italic; color: var(--wp--preset--color--muted); }
.w2zb-era.is-gap .w2zb-what p { color: var(--wp--preset--color--muted); }
.w2zb-exhibit { background: var(--wp--preset--color--paper-2); padding: .75rem !important; }
@media (max-width: 34rem) {
	.w2zb-timeline::before { left: 5px; }
	.w2zb-era { grid-template-columns: 1fr; padding-left: 1.75rem; }
	.w2zb-era::before { left: 0; }
	.w2zb-era.is-now::before { left: -3px; }
	.w2zb-when { text-align: left; margin-bottom: .3rem !important; }
	.w2zb-when strong { display: inline; margin-right: .5rem; }
}

/* ---------- Station: spec sheets & log ---------- */
.w2zb-bay-head { border-bottom: 2px solid var(--wp--preset--color--ink); padding-bottom: .35rem; }
.w2zb-bay-head h3 { margin: 0; font-size: 1.5rem; }
.w2zb-status { font-family: var(--wp--preset--font-family--mono); font-size: .65rem; font-weight: 600; line-height: 1;
	letter-spacing: .1em; text-transform: uppercase; padding: .3rem .45rem; border: 1px solid currentColor; white-space: nowrap; margin: 0; }
.w2zb-status.is-on { color: var(--wp--preset--color--accent); }
.w2zb-status.is-build { color: var(--wp--preset--color--muted); border-style: dashed; }
.wp-block-table.w2zb-spec table { border-collapse: collapse; width: 100%; font-size: .95rem; }
.wp-block-table.w2zb-spec td { border: 0; padding: .5rem 0; vertical-align: top; }
.wp-block-table.w2zb-spec tr + tr td { border-top: 1px solid var(--wp--preset--color--line); }
.wp-block-table.w2zb-spec td:first-child { width: 8.5rem; padding-right: 1rem; font-family: var(--wp--preset--font-family--mono);
	font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--wp--preset--color--muted); line-height: 1.9; }
.w2zb-log { list-style: none; padding: 0; }
.w2zb-log li { padding: .5rem 0; border-bottom: 1px dotted var(--wp--preset--color--line); }
.w2zb-log li code, .w2zb-log li .cs { display: inline-block; min-width: 7rem; color: var(--wp--preset--color--muted); background: none; padding: 0; }

/* ---------- About: license card ---------- */
.w2zb-license { background: var(--wp--preset--color--paper-2); }
.w2zb-license > * { margin-block: 0 !important; }
.w2zb-license .w2zb-call-sm { text-align: center; font-size: 2.4rem; }
.w2zb-phon { font-family: var(--wp--preset--font-family--mono); font-size: .65rem; letter-spacing: .25em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.w2zb-license .w2zb-phon { text-align: center; font-size: .58rem; letter-spacing: .12em; white-space: nowrap;
	padding-bottom: .7rem; border-bottom: 1px solid var(--wp--preset--color--ink); }
.w2zb-dt { font-family: var(--wp--preset--font-family--mono); font-size: .65rem; font-weight: 600; letter-spacing: .1em;
	text-transform: uppercase; color: var(--wp--preset--color--muted); margin-top: .8rem !important; }

/* ---------- QSL: ranked methods ---------- */
ol.w2zb-methods { list-style: none; padding: 0; counter-reset: m; }
ol.w2zb-methods > li { counter-increment: m; position: relative; padding: .9rem 0 .9rem 3.5rem; border-bottom: 1px solid var(--wp--preset--color--line); }
ol.w2zb-methods > li::before { content: counter(m); position: absolute; left: 0; top: .95rem; font: 700 1.6rem/1 var(--wp--preset--font-family--slab); color: var(--wp--preset--color--accent); }
ol.w2zb-methods strong { font-family: var(--wp--preset--font-family--slab); font-size: 1.15rem; }

/* ---------- post index (home.html / archive.html / front page) ---------- */
.w2zb-entries .wp-block-post { display: grid; grid-template-columns: 5.5rem 1fr; gap: 0 1.25rem; padding: 1.1rem 0; border-top: 1px solid var(--wp--preset--color--line); }
.w2zb-entries .wp-block-post > .wp-block-post-date { grid-row: span 4; padding-top: .3rem; }
.w2zb-entries .wp-block-post > * { margin-block: 0 .35rem; }
.w2zb-entries .wp-block-post-title a { color: var(--wp--preset--color--ink); text-decoration: none; }
.w2zb-entries .wp-block-post-title a:hover { color: var(--wp--preset--color--accent); }
.w2zb-entries .wp-block-post-excerpt { color: var(--wp--preset--color--muted); }
.w2zb-entries .wp-block-post-excerpt__more-text { display: none; }
.w2zb-entries .wp-block-post-terms a { text-decoration: none; }
@media (max-width: 30rem) { .w2zb-entries .wp-block-post { grid-template-columns: 1fr; } .w2zb-entries .wp-block-post > .wp-block-post-date { grid-row: auto; } }

.w2zb-cats.wp-block-categories { list-style: none; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: .4rem;
	font-family: var(--wp--preset--font-family--mono); font-size: .78rem; }
.w2zb-cats li a { display: inline-block; color: var(--wp--preset--color--ink); text-decoration: none; border: 1px solid var(--wp--preset--color--line); padding: .4rem .6rem; }
.w2zb-cats .cat-item-none { display: none; }
.w2zb-cats li a:hover { border-color: var(--wp--preset--color--accent); color: var(--wp--preset--color--accent); }

/* ---------- single post ---------- */
.w2zb-post-head { text-align: center; border-bottom: 1px solid var(--wp--preset--color--line); }
.w2zb-post-head .wp-block-post-excerpt { color: var(--wp--preset--color--muted); font-size: 1.15rem; max-width: 52ch; margin-inline: auto; }
.w2zb-post-head .wp-block-post-excerpt__more-text { display: none; }
.w2zb-post-head .wp-block-post-terms a { color: var(--wp--preset--color--muted); text-decoration: none; letter-spacing: .3em; text-transform: uppercase; }
.wp-block-post-content :not(pre) > code { font-family: var(--wp--preset--font-family--mono); font-size: .88em; background: var(--wp--preset--color--paper-2); padding: .1em .3em; }
.w2zb-post-nav { border-top: 3px double var(--wp--preset--color--ink); padding-top: 1rem; font-family: var(--wp--preset--font-family--mono); font-size: .8rem; }
.w2zb-post-nav a { color: var(--wp--preset--color--ink); text-decoration: none; }

/* code blocks: horizontal scroll, copy button, token colors for a highlighter that emits Prism-style classes */
pre.wp-block-code { position: relative; overflow-x: auto; tab-size: 4; }
.w2zb-copy { position: absolute; top: .4rem; right: .4rem; font: .7rem/1 var(--wp--preset--font-family--mono); letter-spacing: .1em; text-transform: uppercase;
	color: var(--wp--preset--color--muted); background: var(--wp--preset--color--paper-2); border: 1px solid var(--wp--preset--color--line); padding: .3rem .5rem; cursor: pointer; }
.w2zb-copy:hover { color: var(--wp--preset--color--accent); border-color: var(--wp--preset--color--accent); }
/* Token colors for the "Syntax-highlighting Code Block" plugin (highlight.js classes); its own theme colors are neutralized. */
pre.wp-block-code .hljs, pre.wp-block-code code.hljs { background: transparent; color: inherit; padding: 0; }
.hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-type { color: var(--wp--preset--color--accent); }
.hljs-string, .hljs-regexp { color: #3F6B3A; }
.hljs-comment, .hljs-quote { color: var(--wp--preset--color--muted); font-style: italic; }
.hljs-number, .hljs-symbol { color: #8A5A12; }
.hljs-title, .hljs-built_in, .hljs-function .hljs-title { color: #2F4F7A; }
@media (prefers-color-scheme: dark) {
	.hljs-string, .hljs-regexp { color: #9CC98F; } .hljs-number, .hljs-symbol { color: #E0B060; }
	.hljs-title, .hljs-built_in, .hljs-function .hljs-title { color: #8FB3E0; }
}

/* ---------- contact form (Contact Form 7, markup from the QSL page form template) ---------- */
.w2zb-form { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; margin-top: 1rem; }
.w2zb-form .full { grid-column: 1 / -1; }
.w2zb-form label { display: grid; gap: .3rem; font-family: var(--wp--preset--font-family--mono); font-size: .7rem; font-weight: 600;
	line-height: 1; letter-spacing: .1em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.w2zb-form .wpcf7-form-control-wrap { display: block; }
.w2zb-form input[type="text"], .w2zb-form input[type="email"], .w2zb-form textarea {
	width: 100%; box-sizing: border-box; font: 1rem/1.4 var(--wp--preset--font-family--serif); letter-spacing: normal; text-transform: none;
	color: var(--wp--preset--color--ink); background: var(--wp--preset--color--paper);
	border: 1px solid var(--wp--preset--color--ink); border-radius: 0; padding: .55rem .65rem; }
.w2zb-form textarea { min-height: 8rem; resize: vertical; }
.w2zb-form input.w2zb-cs { font-family: var(--wp--preset--font-family--mono); text-transform: uppercase; }
.w2zb-form input:focus, .w2zb-form textarea:focus { outline: 2px solid var(--wp--preset--color--accent); outline-offset: 1px; }
.w2zb-form .wpcf7-submit { font: 600 .85rem/1 var(--wp--preset--font-family--mono); letter-spacing: .12em; text-transform: uppercase;
	color: var(--wp--preset--color--paper); background: var(--wp--preset--color--accent); border: 0; border-radius: 0; padding: .85rem 1.4rem; cursor: pointer; }
.w2zb-form .wpcf7-submit:disabled { opacity: .6; cursor: progress; }
.w2zb-form .wpcf7-not-valid { border-color: var(--wp--preset--color--accent) !important; }
.wpcf7 .wpcf7-not-valid-tip { color: var(--wp--preset--color--accent); font: .75rem/1.4 var(--wp--preset--font-family--mono); margin-top: .25rem; text-transform: none; letter-spacing: 0; }
.wpcf7 form .wpcf7-response-output { margin: 1rem 0 0; padding: .6rem .8rem; border: 1px solid var(--wp--preset--color--line);
	font: .85rem/1.5 var(--wp--preset--font-family--mono); }
.wpcf7 form.sent .wpcf7-response-output { border-color: #3F6B3A; }
.wpcf7 form.invalid .wpcf7-response-output, .wpcf7 form.failed .wpcf7-response-output, .wpcf7 form.spam .wpcf7-response-output { border-color: var(--wp--preset--color--accent); }
@media (max-width: 34rem) { .w2zb-form { grid-template-columns: 1fr; } }

/* ---------- footer ---------- */
.w2zb-footer { border-top: 3px double var(--wp--preset--color--ink); text-align: center; font-family: var(--wp--preset--font-family--mono);
	font-size: .8rem; line-height: 1.8; color: var(--wp--preset--color--muted); }
.w2zb-footer > * { margin-block: 0 !important; }
.w2zb-footer a { color: inherit; }
