/* AE5VG.com — component library */
:root{
  --paper:#ffffff; --text:#1f2328; --muted:#57606a; --accent:#0969da;
  --link:#0550ae; --panel:#f6f8fa; --line:#d0d7de; --callout:#ddf4ff;
  --warn-bg:#fff8c5; --warn-bar:#9a6700; --ok:#1a7f37; --danger:#cf222e;
  --sans:"Source Sans 3","Source Sans Pro","DejaVu Sans",system-ui,sans-serif;
  --cond:"Barlow Condensed","DejaVu Sans Condensed","Arial Narrow",sans-serif;
  --mono:"JetBrains Mono","DejaVu Sans Mono",ui-monospace,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:auto}
body{margin:0;background:var(--paper);color:var(--text);font:400 17px/1.6 var(--sans);text-rendering:optimizeLegibility}
a{color:var(--link);text-decoration-thickness:1px;text-underline-offset:2px}
a:hover{color:var(--accent)}
img,svg{max-width:100%;height:auto}
code,kbd{font-family:var(--mono);font-size:.88em}
code{background:var(--panel);padding:1px 5px;border-radius:3px;overflow-wrap:anywhere}
h1,h2,h3,h4{font-family:var(--cond);line-height:1.12;margin:0 0 .4em;font-weight:700;color:var(--text)}
h1{font-size:42px}
h2{font-size:29px;margin-top:2em}
h3{font-size:22px;margin-top:1.5em}
h4{font-size:18px;margin-top:1.2em}
h1::after,h2::after{content:"";display:block;width:56px;height:3px;background:var(--accent);margin-top:10px}
p,li{max-width:72ch}
p{margin:0 0 1em}
.wrap{max-width:1040px;margin:0 auto;padding:0 24px}
.skip{position:absolute;left:-9999px;top:0;background:var(--accent);color:#fff;padding:8px 14px;font-family:var(--mono);z-index:99}
.skip:focus{left:8px;top:8px}
/* mono label */
.label{font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:2px;color:var(--link);font-weight:500}
/* header */
.topbar{background:var(--panel);border-bottom:1px solid var(--line)}
.topbar-inner{max-width:1040px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.badge{font-family:var(--mono);font-weight:700;font-size:15px;letter-spacing:2px;background:var(--accent);color:#fff;padding:5px 11px;text-decoration:none;border-radius:3px}
.badge:hover{background:var(--link);color:#fff}
.nav-toggle{display:none;margin-left:auto;background:none;border:1px solid var(--accent);color:var(--link);font-family:var(--mono);font-size:12px;letter-spacing:2px;text-transform:uppercase;padding:7px 14px;cursor:pointer;border-radius:3px}
nav.site{margin-left:auto;display:flex;gap:2px;align-items:center;flex-wrap:wrap}
nav.site a{color:var(--text);text-decoration:none;font-family:var(--mono);font-size:12px;letter-spacing:1.4px;text-transform:uppercase;padding:8px 9px}
nav.site a:hover,nav.site a[aria-current]{color:var(--link)}
nav.site a[aria-current]{box-shadow:inset 0 -2px 0 var(--accent)}
/* page header */
.hero{padding:52px 0 6px}
.hero .lead{font-size:19px;color:var(--muted);max-width:64ch}
.btn-row{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0 4px}
/* buttons */
a.btn,.btn{display:inline-flex;align-items:center;height:36px;font-family:var(--mono);font-size:12.5px;letter-spacing:1.6px;text-transform:uppercase;text-decoration:none;padding:0 18px;border-radius:3px;background:var(--accent);color:#fff;font-weight:700;border:1px solid var(--accent);cursor:pointer}
a.btn:hover,.btn:hover{background:var(--link);border-color:var(--link);color:#fff}
a.btn.ghost,.btn.ghost{background:var(--paper);border:1px solid var(--line);color:var(--link);font-weight:500}
a.btn.ghost:hover,.btn.ghost:hover{border-color:var(--accent);color:var(--link);background:var(--panel)}
/* status strip */
.strip{display:flex;gap:28px;flex-wrap:wrap;margin:22px 0 0;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.strip div{display:flex;flex-direction:column;gap:1px}
.strip .label{font-size:10.5px}
.strip strong{font-family:var(--mono);font-weight:500;font-size:14.5px}
/* layout with sidebar */
.layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:44px;align-items:start}
.layout>*{min-width:0}
.toc{position:sticky;top:20px;font-family:var(--mono);font-size:12px;letter-spacing:.5px;padding:0;margin:0;list-style:none}
.toc a{display:block;color:var(--muted);text-decoration:none;padding:5px 10px;border-left:2px solid var(--line)}
.toc a:hover{color:var(--link)}
.toc a.current{color:var(--link);border-left-color:var(--accent);background:var(--panel)}
.toc .label{display:block;margin:0 0 8px;color:var(--muted)}
/* morse divider */
.morse{font-family:var(--mono);color:var(--accent);letter-spacing:4px;font-size:14px;text-align:center;margin:44px 0;user-select:none}
/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;margin:26px 0}
.cards.two{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.card{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);padding:20px 22px 18px;display:flex;flex-direction:column;gap:8px}
.card h3{margin-top:0;font-size:21px}
.card p{margin:0;font-size:15.5px}
.card .label{margin-bottom:2px}
.card a.more{font-family:var(--mono);font-size:13px;margin-top:auto;padding-top:10px}
.card .btn-row{margin:10px 0 0}
/* callouts */
.callout{background:var(--callout);border-left:4px solid var(--accent);padding:14px 20px;margin:26px 0}
.callout .label{display:block;margin-bottom:4px}
.callout p{margin:0}
.callout.warn{background:var(--warn-bg);border-left-color:var(--warn-bar)}
.callout.warn .label{color:var(--warn-bar)}
/* tables */
table{border-collapse:collapse;width:100%;font-size:15px;margin:18px 0}
th{font-family:var(--mono);font-size:11.5px;text-transform:uppercase;letter-spacing:1.5px;text-align:left;color:var(--link);padding:8px 14px 8px 0;border-bottom:2px solid var(--text)}
td{padding:8px 14px 8px 0;border-bottom:1px solid var(--line);vertical-align:top}
td:first-child,th:first-child{font-family:var(--mono);font-size:13.5px}
td:first-child code{white-space:nowrap}
.table-scroll{overflow-x:auto;margin:0}
.table-scroll td:first-child,.table-scroll th:first-child{position:sticky;left:0;background:var(--paper)}
/* code block */
pre{position:relative;background:var(--panel);border:1px solid var(--line);padding:14px 18px;overflow-x:auto;line-height:1.55;border-radius:3px;margin:18px 0}
pre code{font-size:13.5px;background:none;padding:0;font-family:var(--mono)}
.copy-btn{position:absolute;top:6px;right:6px;font-family:var(--mono);font-size:10.5px;letter-spacing:1px;text-transform:uppercase;background:var(--paper);border:1px solid var(--line);color:var(--muted);padding:3px 8px;border-radius:3px;cursor:pointer}
.copy-btn:hover{color:var(--link);border-color:var(--accent)}
/* transcript */
.exchange{background:var(--panel);border:1px solid var(--line);color:var(--ok);padding:18px 22px;font-family:var(--mono);font-size:14px;line-height:1.7;overflow-x:auto;border-radius:3px;white-space:pre;margin:18px 0}
.exchange .tx{color:var(--link)}
.exchange .note{color:var(--muted);font-style:italic}
/* steps */
ol.steps{counter-reset:step;list-style:none;padding:0;margin:22px 0}
ol.steps li{counter-increment:step;position:relative;padding:0 0 16px 52px}
ol.steps li::before{content:counter(step,decimal-leading-zero);position:absolute;left:0;top:2px;font-family:var(--mono);font-size:13px;color:var(--link);border:1px solid var(--accent);padding:3px 7px;border-radius:3px}
/* diagram */
figure.diagram{margin:24px 0;padding:0}
figure.diagram svg{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:3px;background:var(--paper)}
figure.diagram svg[viewBox^="0 0 380 "],figure.diagram svg[viewBox^="0 0 480 "]{max-width:560px}
figure.diagram figcaption{font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:8px}
/* release notes details */
details.relnotes{border:1px solid var(--line);border-radius:3px;margin:14px 0;background:var(--panel)}
details.relnotes summary{font-family:var(--mono);font-size:12.5px;letter-spacing:1.5px;text-transform:uppercase;color:var(--link);padding:10px 16px;cursor:pointer}
details.relnotes .body{padding:0 18px 14px;font-size:15px}
details.relnotes .body h3,details.relnotes .body h4{font-size:15.5px;font-family:var(--sans);letter-spacing:0}
.meta{font-family:var(--mono);font-size:13px;color:var(--muted)}
/* footer */
main{padding:34px 0 64px}
footer.site{background:var(--panel);border-top:1px solid var(--line);padding:38px 0 46px;font-size:14.5px}
footer.site .wrap{display:grid;grid-template-columns:1fr 1fr;gap:28px}
footer.site p{margin:6px 0;max-width:none}
.sk{font-family:var(--mono);color:var(--muted);margin-top:14px}
@media print{.topbar,.btn,a.btn,.btn-row,.nav-toggle,.toc,.copy-btn{display:none!important}.layout{grid-template-columns:1fr}body{font-size:12pt}pre,.card,.callout,.exchange,details.relnotes{border:1px solid #999}}
@media (max-width:900px){
  .layout{grid-template-columns:1fr}
  .toc{position:static;display:flex;flex-wrap:wrap;gap:2px 14px;border-bottom:1px solid var(--line);padding-bottom:12px}
  .toc a{border-left:none;padding:3px 0}
  .toc li{min-width:0}
  .toc li:first-child{flex-basis:100%}
}
@media (max-width:800px){
  h1{font-size:33px}
  .nav-toggle{display:block}
  nav.site{display:none;flex-direction:column;align-items:stretch;width:100%;margin:10px 0 4px}
  nav.site.open{display:flex}
  footer.site .wrap{grid-template-columns:1fr}
}
@media (max-width:600px){
  td:first-child{white-space:normal;min-width:7.5em;max-width:10.5em}
  td:first-child code{white-space:normal;overflow-wrap:anywhere}
  th,td{padding-right:10px}
}
