/* ============================================================
   SuffolkHam.co.uk – shared stylesheet
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* Light mode – default */
:root {
  --bg:         #f4f6f9;
  --bg2:        #ffffff;
  --bg3:        #eef0f5;
  --bg4:        #e4e8f0;
  --bg-nav:     rgba(244,246,249,0.93);
  --border:     rgba(0,0,0,0.08);
  --border2:    rgba(0,0,0,0.15);
  --text:       #1a1d27;
  --muted:      #4a5068;
  --faint:      #5c6475;
  --cyan:       #0369a1;
  --cyan-dim:   rgba(3,105,161,0.08);
  --cyan-bd:    rgba(3,105,161,0.2);
  --green:      #15803d;
  --green-dim:  rgba(21,128,61,0.1);
  --green-bd:   rgba(21,128,61,0.25);
  --amber:      #b45309;
  --amber-dim:  rgba(180,83,9,0.1);
  --amber-bd:   rgba(180,83,9,0.25);
  --red:        #dc2626;
  --red-dim:    rgba(220,38,38,0.08);
  --red-bd:     rgba(220,38,38,0.2);
  --purple:     #7c3aed;
  --purple-dim: rgba(124,58,237,0.08);
  --purple-bd:  rgba(124,58,237,0.25);
  --sans:       'Space Grotesk', system-ui, sans-serif;
  --mono:       'JetBrains Mono', 'Courier New', monospace;
}

/* Dark mode */
[data-theme="dark"] {
  --bg:         #0a0c0f;
  --bg2:        #111318;
  --bg3:        #181c23;
  --bg4:        #1f2430;
  --bg-nav:     rgba(10,12,15,0.93);
  --border:     rgba(255,255,255,0.07);
  --border2:    rgba(255,255,255,0.13);
  --text:       #e8eaf0;
  --muted:      #9da4bc;
  --faint:      #7f879e;
  --cyan:       #38bdf8;
  --cyan-dim:   rgba(56,189,248,0.12);
  --cyan-bd:    rgba(56,189,248,0.25);
  --green:      #4ade80;
  --green-dim:  rgba(74,222,128,0.1);
  --green-bd:   rgba(74,222,128,0.25);
  --amber:      #fbbf24;
  --amber-dim:  rgba(251,191,36,0.1);
  --amber-bd:   rgba(251,191,36,0.25);
  --red:        #f87171;
  --red-dim:    rgba(248,113,113,0.1);
  --red-bd:     rgba(248,113,113,0.25);
  --purple:     #a78bfa;
  --purple-dim: rgba(167,139,250,0.1);
  --purple-bd:  rgba(167,139,250,0.25);
}

/* ── GLOBAL LINK RESET ── */
a { color: var(--cyan); }
a:visited { color: var(--cyan); }

/* ensure card inner links don't go browser-blue */
.card a, .link-card a, .feature-card a, .net-card a,
.repeater-card a, .event-card a, .step-body a,
.codeplug-note a, .section-lead a, .page-header p a,
footer a { color: var(--cyan); }


html { scroll-behavior: smooth; }
body { background: var(--bg); color: var(--text); font-family: var(--sans); font-size: 17px; line-height: 1.7; }

/* SKIP */
.skip-link { position:absolute; left:-999px; top:4px; background:var(--cyan); color:var(--bg); padding:8px 16px; border-radius:4px; font-size:14px; text-decoration:none; z-index:999; }
.skip-link:focus { left:4px; }

/* ── NAV ── */
nav {
  position:sticky; top:0; z-index:100;
  background:var(--bg-nav); backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);
  padding:0 2rem;
  display:flex; align-items:center; justify-content:space-between;
  flex-wrap:wrap; gap:0.5rem; min-height:56px;
}
.nav-brand { font-family:var(--mono); font-size:14px; font-weight:500; color:var(--cyan); text-decoration:none; letter-spacing:0.04em; white-space:nowrap; display:flex; align-items:center; gap:9px; }
.nav-brand span { color:var(--muted); }
.nav-brand svg { flex-shrink:0; }
.nav-links { display:flex; flex-wrap:wrap; gap:0.1rem; list-style:none; }
.nav-links a { font-size:13px; color:var(--muted); text-decoration:none; padding:5px 10px; border-radius:4px; transition:color 0.15s,background 0.15s; display:block; white-space:nowrap; }
.nav-links a:hover, .nav-links a:focus { color:var(--text); background:var(--bg3); }
.nav-links a.active { color:var(--cyan); }

.nav-toggle {
  display:none;
  background:none;
  border:none;
  cursor:pointer;
  padding:8px;
  flex-direction:column;
  justify-content:center;
  gap:5px;
}
.nav-toggle span {
  display:block;
  width:22px;
  height:2px;
  background:var(--text);
  border-radius:2px;
  transition:transform 0.2s, opacity 0.2s;
}
.nav-open .nav-toggle span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
.nav-open .nav-toggle span:nth-child(2) { opacity:0; }
.nav-open .nav-toggle span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }

.nav-controls { display:flex; align-items:center; gap:4px; }
.nav-search-btn { display:flex; align-items:center; justify-content:center; width:32px; height:32px; border-radius:6px; color:var(--muted); background:none; border:none; cursor:pointer; transition:color 0.15s,background 0.15s; }
.nav-search-btn:hover, .nav-search-btn:focus-visible { color:var(--text); background:var(--bg3); }

/* QRZ Modal */
#qrz-modal { display:none; position:fixed; inset:0; z-index:200; align-items:flex-start; justify-content:center; padding-top:80px; }
#qrz-modal.qrz-modal-open { display:flex; }
.qrz-modal-backdrop { position:fixed; inset:0; background:rgba(0,0,0,0.5); backdrop-filter:blur(4px); }
.qrz-modal-box { position:relative; z-index:1; background:var(--bg2); border:1px solid var(--border2); border-radius:12px; padding:1.5rem; width:100%; max-width:420px; margin:0 1rem; box-shadow:0 20px 60px rgba(0,0,0,0.3); }
.qrz-modal-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:1rem; }
.qrz-modal-header span { font-family:var(--mono); font-size:11px; letter-spacing:0.12em; text-transform:uppercase; color:var(--cyan); }
.qrz-modal-close { background:none; border:none; cursor:pointer; color:var(--muted); font-size:16px; padding:2px 6px; border-radius:4px; line-height:1; transition:color 0.15s,background 0.15s; }
.qrz-modal-close:hover { color:var(--text); background:var(--bg3); }
.qrz-modal-form { display:flex; gap:8px; }
.qrz-modal-form input { flex:1; font-family:var(--mono); font-size:15px; padding:10px 14px; border-radius:6px; border:1px solid var(--border2); background:var(--bg3); color:var(--text); outline:none; transition:border-color 0.15s; }
.qrz-modal-form input:focus { border-color:var(--cyan-bd); }
.qrz-modal-hint { font-size:12px; color:var(--faint); margin-top:0.6rem; }
.nav-theme-toggle { background:none; border:none; cursor:pointer; padding:6px; color:var(--muted); border-radius:6px; display:flex; align-items:center; justify-content:center; transition:color 0.15s,background 0.15s; }
.nav-theme-toggle:hover, .nav-theme-toggle:focus-visible { color:var(--text); background:var(--bg3); }

/* ── PAGE HEADER ── */
.page-header { padding:4rem 2rem 2.5rem; max-width:1060px; margin:0 auto; }
.page-tag { font-family:var(--mono); font-size:11px; color:var(--cyan); letter-spacing:0.12em; text-transform:uppercase; margin-bottom:0.85rem; display:flex; align-items:center; gap:10px; }
.page-tag::before { content:''; display:block; width:24px; height:1px; background:var(--cyan); }
.page-header h1 { font-size:clamp(1.9rem,5vw,3rem); font-weight:600; line-height:1.1; letter-spacing:-0.03em; margin-bottom:0.85rem; }
.page-header p { font-size:1rem; color:var(--muted); max-width:580px; line-height:1.7; }
.page-header p a { color:var(--cyan); }

/* ── MAIN ── */
main { max-width:1060px; margin:0 auto; padding:0 2rem 5rem; }

.section-label { font-family:var(--mono); font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--cyan); margin-bottom:0.5rem; }
.section-title { font-size:clamp(1.3rem,3vw,1.8rem); font-weight:600; letter-spacing:-0.02em; margin-bottom:0.6rem; line-height:1.2; }
.section-lead { font-size:1rem; color:var(--muted); max-width:600px; margin-bottom:2rem; line-height:1.7; }
.section-lead a { color:var(--cyan); }

.divider { border:none; border-top:1px solid var(--border); margin:3rem 0; }

/* ── BUTTONS ── */
.btn { font-family:var(--sans); font-size:14px; font-weight:500; padding:10px 20px; border-radius:6px; text-decoration:none; border:1px solid transparent; display:inline-flex; align-items:center; gap:7px; transition:all 0.15s; cursor:pointer; }
.btn-primary { background:var(--cyan); color:var(--bg); border-color:var(--cyan); font-weight:600; }
.btn-primary:hover { background:#7dd3fc; }.btn-primary:visited { color:var(--bg); }
.btn-ghost { background:transparent; color:var(--text); border-color:var(--border2); }
.btn-ghost:hover { background:var(--bg3); }
.btn-purple { background:var(--purple-dim); color:var(--purple); border:1px solid var(--purple-bd); }
.btn-purple:hover { background:rgba(167,139,250,0.2); }
.btn-sm { padding:7px 14px; font-size:13px; }

/* ── GRIDS ── */
.grid-2 { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px; }
.grid-3 { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:16px; }
.grid-4 { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; }

/* ── GENERIC CARD ── */
.card { background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:1.5rem; }
.card h3 { font-size:1rem; font-weight:600; margin-bottom:0.5rem; }
.card p  { font-size:15px; color:var(--muted); line-height:1.7; }
.card a  { color:var(--cyan); }

/* ── REPEATER CARDS ── */
.legend { display:flex; flex-wrap:wrap; gap:12px; margin-bottom:1.5rem; font-size:13px; color:var(--muted); align-items:center; }
.legend-item { display:flex; align-items:center; gap:5px; }
.legend-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }

.repeater-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(290px,1fr)); gap:12px; }
.repeater-card { background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:1.4rem; border-top:3px solid var(--border2); transition:background 0.15s; }
.repeater-card:hover { background:var(--bg3); }
.repeater-card.live   { border-top-color:var(--green); }
.repeater-card.warn   { border-top-color:var(--amber); }
.repeater-card.offair { border-top-color:var(--red);   }

.card-header { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:0.35rem; gap:8px; }
.card-call-wrap { display:flex; align-items:center; gap:8px; }
.callsign { font-family:var(--mono); font-size:1.2rem; font-weight:500; color:var(--text); letter-spacing:0.03em; }
.status-badge { font-family:var(--mono); font-size:10px; font-weight:500; padding:3px 8px; border-radius:4px; letter-spacing:0.06em; text-transform:uppercase; white-space:nowrap; flex-shrink:0; }
.badge-live   { background:var(--green-dim); color:var(--green); border:1px solid var(--green-bd); }
.badge-warn   { background:var(--amber-dim); color:var(--amber); border:1px solid var(--amber-bd); }
.badge-offair { background:var(--red-dim);   color:var(--red);   border:1px solid var(--red-bd);   }

.card-mode { font-family:var(--mono); font-size:11px; color:var(--faint); letter-spacing:0.07em; margin-bottom:0.85rem; text-transform:uppercase; }
.freq-table { width:100%; border-collapse:collapse; margin-bottom:0.85rem; }
.freq-table tr { border-bottom:1px solid var(--border); }
.freq-table tr:last-child { border-bottom:none; }
.freq-table td { padding:5px 0; vertical-align:top; }
.freq-table td:first-child { font-family:var(--mono); font-size:10px; color:var(--faint); letter-spacing:0.08em; text-transform:uppercase; width:68px; padding-top:7px; }
.freq-table td:last-child  { font-family:var(--mono); font-size:14px; font-weight:500; color:var(--text); }
.card-location { font-size:14px; color:var(--muted); display:flex; align-items:center; gap:5px; margin-bottom:0.3rem; }
.card-group    { font-size:11px; color:var(--faint); font-family:var(--mono); margin-bottom:0.3rem; letter-spacing:0.04em; }
.keeper { font-size:12px; color:var(--muted); font-family:var(--mono); }
.keeper a { color:var(--cyan); text-decoration:none; }
.keeper a:hover { text-decoration:underline; }
.card-note { margin-top:0.75rem; padding:9px 11px; border-radius:5px; font-size:13px; line-height:1.55; border-left:2px solid; }
.note-warn { background:var(--amber-dim); border-left-color:var(--amber); color:var(--amber); }
.note-info { background:var(--cyan-dim);  border-left-color:var(--cyan);  color:var(--cyan);  }
.note-red  { background:var(--red-dim);   border-left-color:var(--red);   color:var(--red);   }

.copy-chip { font-family:var(--mono); font-size:10px; padding:2px 7px; border-radius:4px; border:1px solid var(--border); background:transparent; color:var(--faint); cursor:pointer; transition:all 0.15s; vertical-align:middle; margin-left:6px; opacity:0.5; }
.copy-chip:hover { border-color:var(--cyan-bd); color:var(--cyan); opacity:1; }

/* ── EVENT CARDS ── */
.event-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px; }
.event-card { background:var(--bg2); border:1px solid var(--border); border-radius:10px; overflow:hidden; display:flex; flex-direction:column; transition:border-color 0.15s; }
.event-card:hover { border-color:var(--border2); }
.event-card-date { background:var(--cyan-dim); border-bottom:1px solid var(--cyan-bd); padding:0.85rem 1.25rem; display:flex; align-items:center; gap:1rem; }
.event-day { font-family:var(--mono); font-size:2rem; font-weight:500; color:var(--cyan); line-height:1; }
.event-month-year { display:flex; flex-direction:column; }
.event-month { font-family:var(--mono); font-size:12px; color:var(--cyan); text-transform:uppercase; letter-spacing:0.08em; }
.event-year  { font-family:var(--mono); font-size:11px; color:var(--muted); }
.event-card-body { padding:1.25rem; flex:1; display:flex; flex-direction:column; gap:0.5rem; }
.event-title { font-size:1rem; font-weight:600; color:var(--text); }
.event-time  { font-family:var(--mono); font-size:12px; color:var(--cyan); }
.event-location { font-size:13px; color:var(--muted); display:flex; align-items:center; gap:5px; }
.event-desc  { font-size:14px; color:var(--muted); line-height:1.6; flex:1; }
.event-card-footer { padding:0.85rem 1.25rem; border-top:1px solid var(--border); }
.event-card-footer a { font-family:var(--mono); font-size:12px; color:var(--cyan); text-decoration:none; }
.event-card-footer a:hover { text-decoration:underline; }

/* ── NET CARDS ── */
.net-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(290px,1fr)); gap:16px; }
.net-card { background:var(--bg2); border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.net-card-header { background:var(--bg3); border-bottom:1px solid var(--border); padding:0.9rem 1.25rem; display:flex; justify-content:space-between; align-items:center; gap:8px; }
.net-name { font-size:15px; font-weight:600; color:var(--text); }
.net-mode-badge { font-family:var(--mono); font-size:10px; padding:3px 8px; border-radius:4px; background:var(--cyan-dim); color:var(--cyan); border:1px solid var(--cyan-bd); letter-spacing:0.05em; white-space:nowrap; }
.net-card-body { padding:1.1rem 1.25rem; }
.net-row { display:flex; justify-content:space-between; align-items:baseline; padding:5px 0; border-bottom:1px solid var(--border); font-size:14px; }
.net-row:last-child { border-bottom:none; }
.net-label { font-family:var(--mono); font-size:10px; color:var(--faint); letter-spacing:0.08em; text-transform:uppercase; }
.net-val   { font-family:var(--mono); font-size:13px; font-weight:500; color:var(--text); text-align:right; }
.net-val a { color:var(--cyan); text-decoration:none; }
.net-val a:hover { text-decoration:underline; }
.net-note  { font-size:13px; color:var(--muted); padding-top:0.75rem; line-height:1.55; }
.net-card-broadcast { border-style:dashed; opacity:0.85; }
.net-card-broadcast .net-card-header { background:transparent; }
.net-broadcast-badge { background:var(--amber-dim); color:var(--amber); border-color:var(--amber-bd); }

/* ── STEP LIST ── */
.steps-list { display:flex; flex-direction:column; gap:12px; }
.step-item { background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:1.4rem 1.75rem; display:grid; grid-template-columns:44px 1fr; gap:1.25rem; align-items:flex-start; transition:background 0.15s; }
.step-item:hover { background:var(--bg3); }
.step-n { font-family:var(--mono); font-size:1.3rem; font-weight:500; color:var(--cyan); opacity:0.4; line-height:1; padding-top:3px; }
.step-body h3 { font-size:1rem; font-weight:600; margin-bottom:0.35rem; }
.step-body p  { font-size:15px; color:var(--muted); line-height:1.7; }
.step-body a  { color:var(--cyan); text-decoration:underline; }
.step-tag { display:inline-block; margin-top:0.5rem; font-family:var(--mono); font-size:10px; padding:3px 8px; border-radius:4px; background:var(--cyan-dim); color:var(--cyan); border:1px solid var(--cyan-bd); letter-spacing:0.05em; }

/* ── CODEPLUG ── */
.codeplug-box { background:var(--bg2); border:1px solid var(--border); border-radius:12px; padding:1.75rem; margin-top:2rem; }
.codeplug-box h3 { font-size:1rem; font-weight:600; margin-bottom:0.4rem; }
.codeplug-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(155px,1fr)); gap:10px; margin:1rem 0; }
.cp-item { background:var(--bg3); border:1px solid var(--border); border-radius:8px; padding:0.85rem 1rem; }
.cp-label { font-family:var(--mono); font-size:10px; color:var(--faint); letter-spacing:0.08em; text-transform:uppercase; margin-bottom:4px; display:block; }
.cp-val   { font-family:var(--mono); font-size:14px; font-weight:500; color:var(--text); }
.codeplug-note { font-size:14px; color:var(--muted); line-height:1.65; padding-top:1rem; border-top:1px solid var(--border); }
.codeplug-note a { color:var(--cyan); }

/* ── LINKS ── */
.links-group-title { font-family:var(--mono); font-size:11px; color:var(--muted); letter-spacing:0.1em; text-transform:uppercase; margin:2.5rem 0 0.85rem; padding-bottom:0.5rem; border-bottom:1px solid var(--border); }
.links-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:10px; }
.link-card { background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:1.1rem 1.4rem; text-decoration:none; transition:background 0.15s,border-color 0.15s; display:block; }
.link-card:hover { background:var(--bg3); border-color:var(--border2); }
.link-title { font-size:15px; font-weight:600; color:var(--text); margin-bottom:3px; display:flex; align-items:center; gap:6px; }
.link-title .arrow { color:var(--cyan); font-size:13px; }
.link-desc { font-size:14px; color:var(--muted); line-height:1.6; }

/* ── GLOSSARY ── */
.glossary-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; }
.glossary-item { background:var(--bg2); border:1px solid var(--border); border-radius:8px; padding:1.1rem 1.25rem; }
.glossary-term { font-family:var(--mono); font-size:13px; font-weight:500; color:var(--cyan); margin-bottom:4px; }
.glossary-def  { font-size:14px; color:var(--muted); line-height:1.6; }

/* ── FOOTER ── */
footer { border-top:1px solid var(--border); padding:2.5rem 2rem; }
.footer-inner { max-width:1060px; margin:0 auto; display:grid; grid-template-columns:1fr 1fr; gap:2rem; }
.footer-brand { font-family:var(--mono); color:var(--cyan); font-size:14px; margin-bottom:0.4rem; }
.footer-tagline { font-size:13px; color:var(--muted); line-height:1.7; margin-bottom:0.75rem; }
.footer-meta { font-size:12px; color:var(--faint); }
.footer-meta a { color:var(--faint); text-decoration:underline; }
.footer-nav { display:grid; grid-template-columns:1fr 1fr; gap:0.25rem 1.5rem; }
.footer-nav a { font-size:13px; color:var(--muted); text-decoration:none; padding:3px 0; transition:color 0.15s; }
.footer-nav a:hover { color:var(--text); }
@media (max-width:640px) {
  .footer-inner { grid-template-columns:1fr; gap:1.5rem; }
  .footer-nav { grid-template-columns:1fr 1fr; }
}

/* ── BREADCRUMBS ── */
.breadcrumbs { font-size:12px; color:var(--faint); font-family:var(--mono); padding:0.6rem 2rem; max-width:1060px; margin:0 auto; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.breadcrumbs a { color:var(--faint); text-decoration:none; }
.breadcrumbs a:hover { color:var(--cyan); }
.breadcrumbs .sep { color:var(--border2); }

/* ── YOUTUBE FACADE ── */
.yt-facade { position:relative; cursor:pointer; background:#000; border-radius:10px; overflow:hidden; border:1px solid var(--border); aspect-ratio:16/9; }
.yt-facade img { width:100%; height:100%; object-fit:cover; display:block; transition:opacity 0.2s; }
.yt-facade:hover img { opacity:0.8; }
.yt-play { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:none; }
.yt-play svg { width:68px; height:68px; drop-shadow:0 2px 8px rgba(0,0,0,0.5); }
.yt-facade iframe { position:absolute; inset:0; width:100%; height:100%; border:0; border-radius:9px; }

/* ── BAND CONDITIONS WIDGET ── */
.band-cond-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); gap:8px; margin-top:1rem; }
.band-cond-cell { background:var(--bg2); border:1px solid var(--border); border-radius:8px; padding:0.75rem; text-align:center; }
.band-cond-name { font-family:var(--mono); font-size:10px; color:var(--faint); letter-spacing:0.08em; text-transform:uppercase; margin-bottom:4px; }
.band-cond-val { font-family:var(--mono); font-size:13px; font-weight:500; }
.band-cond-val.good { color:var(--green); }
.band-cond-val.fair { color:var(--amber); }
.band-cond-val.poor { color:var(--red); }
.band-cond-val.unknown { color:var(--faint); }

/* ── REPEATER MAP ── */
.view-toggle { display:flex; gap:8px; margin-bottom:1rem; }
.view-btn { font-family:var(--mono); font-size:12px; padding:6px 16px; border-radius:20px; border:1px solid var(--border2); background:var(--bg2); color:var(--muted); cursor:pointer; transition:all 0.15s; }
.view-btn:hover { background:var(--bg3); color:var(--text); }
.view-btn.active { background:var(--cyan-dim); color:var(--cyan); border-color:var(--cyan-bd); }
#repeater-map { height:420px; border-radius:10px; border:1px solid var(--border); overflow:hidden; margin-bottom:2rem; display:none; }
.leaflet-popup-content-wrapper { background:var(--bg2) !important; color:var(--text) !important; border:1px solid var(--border2) !important; box-shadow:0 4px 20px rgba(0,0,0,0.3) !important; }
.leaflet-popup-tip { background:var(--bg2) !important; }
.leaflet-popup-content { font-family:var(--sans); font-size:13px; line-height:1.5; }

/* ── PRINT ── */
.print-btn { font-family:var(--mono); font-size:10px; padding:3px 8px; border-radius:4px; border:1px solid var(--border); background:transparent; color:var(--faint); cursor:pointer; transition:all 0.15s; vertical-align:middle; margin-left:4px; opacity:0.5; }
.print-btn:hover { border-color:var(--cyan-bd); color:var(--cyan); opacity:1; }
@media print {
  nav, .band-picker, .view-toggle, #repeater-map, .copy-chip, .print-btn, footer, .page-header p, .divider, .grid-2, h2.section-title + p, .section-lead { display:none !important; }
  body { background:#fff; color:#000; font-size:10pt; }
  .page-header { padding:1rem 0; }
  .page-header h1 { font-size:16pt; }
  .repeater-grid { grid-template-columns:repeat(3,1fr) !important; gap:8px !important; }
  .repeater-card { break-inside:avoid; padding:0.75rem; }
  .callsign { font-size:14pt !important; }
  .freq-table td { padding:2px 0; }
}

:focus-visible { outline:2px solid var(--cyan); outline-offset:3px; border-radius:3px; }

@media (max-width:640px) {
  nav { padding:0.5rem 1rem; flex-wrap:wrap; align-items:center; }
  .nav-toggle { display:flex; }
  .nav-controls { margin-left:auto; }
  .nav-links { display:none; width:100%; flex-direction:column; padding:0.5rem 0 0.75rem; border-top:1px solid var(--border); gap:0; }
  .nav-open .nav-links { display:flex; }
  .nav-links a { padding:10px 0.5rem; font-size:15px; }
  .page-header { padding:2.5rem 1rem 2rem; }
  main { padding:0 1rem 4rem; }
  .step-item { grid-template-columns:32px 1fr; padding:1.1rem; }
}
