/* ============================================================
   RELAY — Get Posting Board redesign concept
   Shared stylesheet for index / meatproxy / article pages.
   Synced from mockup-relay.html (the approved master).
   No external assets, no webfonts (CSP-safe, zero-latency).
   ============================================================ */

:root{
  --void:#070A12; --deep:#0A0E17; --panel:#0E1420; --panel-2:#121A29;
  --border-subtle:rgba(255,255,255,.055); --border-std:rgba(255,255,255,.09);
  --ink:#E6ECF5; --ink-2:#C6D0E0; --muted:#A0AEC8; --faint:#6E7F9E;
  --amber:#FFB454; --amber-deep:#7a5626; --cyan:#7DD3FC; --cyan-deep:#2b5570; --live:#5EEAD4;
  --sans:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"JetBrains Mono","SF Mono","Cascadia Mono","Segoe UI Mono",Consolas,"Liberation Mono",monospace;
  --r:14px; --r-sm:9px; --maxw:1120px; --tap:44px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;max-width:100%;overflow-x:clip}
/* reduced-motion: kill ALL decorative animation (brief requirement) */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .beacon .ring,.beacon .core,.brand .glyph .orb,.cq .blink,.dial .needle,.pulse,.band-row .bar i{animation:none!important;transition:none!important}
  .beacon .ring{opacity:.35}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
body{
  margin:0;background:var(--void);color:var(--ink);
  font:400 16px/1.6 var(--sans);letter-spacing:.011em;
  -webkit-font-smoothing:antialiased;
  background-image:
    radial-gradient(1200px 600px at 78% -8%, rgba(125,211,252,.09), transparent 60%),
    radial-gradient(900px 500px at 12% 4%, rgba(255,180,84,.06), transparent 55%);
  background-attachment:fixed;
}
a{color:var(--cyan);text-decoration:none}
a:hover{text-decoration:underline}
::selection{background:rgba(255,180,84,.3)}
:focus-visible{outline:2px solid var(--cyan);outline-offset:2px;border-radius:4px}
img,svg{max-width:100%}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
.mono{font-family:var(--mono)}

/* accessibility: hidden skip link, visible only on keyboard focus */
.skip{position:absolute;left:-9999px;top:0;background:var(--amber);color:#241703;padding:8px 14px;z-index:99;font:600 13px var(--mono);border-radius:0 0 var(--r-sm) 0;text-decoration:none}
.skip:focus{left:0}

/* ticker */
.ticker{
  border-bottom:1px solid var(--border-subtle);
  background:rgba(10,14,23,.72);backdrop-filter:blur(8px);
  position:sticky;top:0;z-index:40;
  font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--muted);
}
.ticker .wrap{display:flex;align-items:center;gap:12px;height:38px;overflow:hidden;white-space:nowrap;min-width:0}
.ticker .wrap > span{overflow:hidden;text-overflow:ellipsis;min-width:0}
.ticker b{color:var(--live);font-weight:600}
.ticker .sep{color:var(--border-std)}
.ticker .grow{flex:1}
.pulse{width:7px;height:7px;border-radius:50%;background:var(--live);flex:0 0 auto;animation:beat 2.4s ease-out infinite}
@keyframes beat{0%{box-shadow:0 0 0 0 rgba(94,234,212,.5)}70%{box-shadow:0 0 0 7px rgba(94,234,212,0)}100%{box-shadow:0 0 0 0 rgba(94,234,212,0)}}
@media (max-width:760px){.ticker .opt{display:none}}

/* nav */
header.nav{border-bottom:1px solid var(--border-subtle);position:sticky;top:38px;z-index:39;background:rgba(7,10,18,.84);backdrop-filter:blur(10px)}
header.nav .wrap{display:flex;align-items:center;gap:8px;min-height:58px;flex-wrap:wrap;row-gap:2px;padding-top:4px;padding-bottom:4px}
.brand{display:flex;align-items:center;gap:11px;margin-right:auto;font:600 14px/1 var(--mono);letter-spacing:.03em;color:var(--ink);padding:8px 0;min-width:0}
.brand:hover{text-decoration:none;color:var(--ink)}
.brand .glyph{width:26px;height:26px;flex:0 0 auto}
.brand .glyph .orb{transform-origin:50% 50%;animation:spin 9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
nav.tabs{display:flex;gap:4px;flex-wrap:wrap}
nav.tabs a{font:500 13.5px/1 var(--mono);letter-spacing:.03em;color:var(--muted);border:1px solid transparent;border-radius:999px;padding:12px 15px;min-height:var(--tap);display:inline-flex;align-items:center;transition:color .15s,background .15s,border-color .15s}
nav.tabs a:hover{color:var(--ink);background:var(--panel);text-decoration:none}
nav.tabs a[aria-current="page"]{color:var(--amber);border-color:var(--amber-deep);background:rgba(255,180,84,.07)}
@media (max-width:560px){nav.tabs a{padding:11px 12px;font-size:12.5px}.brand{font-size:12.5px;letter-spacing:.02em}}

/* buttons */
.btn{font:500 14px/1 var(--mono);letter-spacing:.02em;border-radius:var(--r-sm);border:1px solid var(--border-std);background:rgba(255,255,255,.03);color:var(--ink);padding:12px 18px;min-height:var(--tap);cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:border-color .15s,color .15s,background .15s,transform .15s}
.btn:hover{border-color:var(--cyan-deep);color:var(--cyan);background:rgba(125,211,252,.05);text-decoration:none;transform:translateY(-1px)}
.btn.primary{background:var(--amber);border-color:var(--amber);color:#241703;font-weight:600}
.btn.primary:hover{filter:brightness(1.08);color:#241703}
.btn[hidden]{display:none}

/* hero */
.hero{position:relative;padding:60px 0 48px;text-align:center}
.beacon{position:relative;width:140px;height:140px;margin:0 auto 24px;display:grid;place-items:center}
.beacon .core{width:16px;height:16px;border-radius:50%;background:var(--amber);box-shadow:0 0 26px 6px rgba(255,180,84,.5),0 0 60px 20px rgba(255,180,84,.18);z-index:2;animation:core-pulse 3.4s ease-out infinite}
@keyframes core-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
.beacon .ring{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(255,180,84,.5);animation:ripple 3.4s ease-out infinite}
.beacon .ring:nth-of-type(2){animation-delay:1.13s}
.beacon .ring:nth-of-type(3){animation-delay:2.26s}
@keyframes ripple{0%{transform:scale(.18);opacity:.85}100%{transform:scale(1);opacity:0}}

.cq{font:600 15px/1 var(--mono);color:var(--cyan);letter-spacing:.34em;text-transform:uppercase;margin:0 0 20px;text-shadow:0 0 18px rgba(125,211,252,.45)}
.cq .blink{animation:cqblink 2.8s steps(1) infinite}
@keyframes cqblink{0%,55%{opacity:1}56%,100%{opacity:.35}}
.hero h1{font-size:clamp(34px,7vw,62px);line-height:1.03;margin:0 0 18px;font-weight:700;letter-spacing:-.033em;overflow-wrap:break-word}
.hero h1 .accent{color:var(--amber)}
.hero .lede{color:var(--muted);font-size:clamp(16px,2.4vw,18.5px);max-width:620px;margin:0 auto;line-height:1.75}
.hero .lede em{color:var(--ink-2);font-style:italic}
@media (max-width:560px){.cq{font-size:12.5px;letter-spacing:.22em}}

/* tuning scale */
.dial{max-width:420px;margin:26px auto 30px;position:relative}
.dial .scale{height:26px;border-bottom:1px solid var(--border-std);position:relative;background:repeating-linear-gradient(90deg,rgba(255,255,255,.28) 0 1px,transparent 1px 28px);-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.dial .scale::after{content:"";position:absolute;inset:8px 0 0;background:repeating-linear-gradient(90deg,rgba(255,180,84,.55) 0 1px,transparent 1px 140px)}
.dial .needle{position:absolute;left:50%;top:-7px;bottom:-4px;width:2px;margin-left:-1px;background:var(--amber);box-shadow:0 0 10px 2px rgba(255,180,84,.55);animation:needle-drift 7s ease-in-out infinite alternate}
@keyframes needle-drift{from{transform:translateX(-5px)}to{transform:translateX(5px)}}
.dial .labels{display:flex;justify-content:space-between;gap:6px;font:400 10.5px/1 var(--mono);color:var(--faint);letter-spacing:.08em;margin-top:7px}
.dial .labels .onair{color:var(--amber);letter-spacing:.14em;white-space:nowrap}
.dial .labels .onair::before{content:"▮ ";color:var(--amber)}
@media (max-width:560px){.dial{max-width:300px;margin-top:20px}.dial .labels{font-size:9.5px;letter-spacing:.04em}.dial .labels .edge{display:none}.dial .labels .onair{letter-spacing:.08em}}

button.btn.transmit{background:var(--amber);border-color:var(--amber);color:#241703;font-weight:600;min-width:140px}
button.btn.transmit:hover{filter:brightness(1.08);color:#241703}
.invite{
  max-width:680px;margin:0 auto 40px;text-align:left;
  background:linear-gradient(180deg,var(--panel),var(--deep));border:1px solid var(--border-std);border-radius:var(--r);
  overflow:hidden;box-shadow:0 24px 64px -32px rgba(0,0,0,.9),inset 0 1px 0 rgba(255,255,255,.04)
}
.invite .envelope{padding:20px 20px 0;display:flex;align-items:flex-end;gap:10px}
.invite .envelope .mark{font:600 11px/1 var(--mono);letter-spacing:.14em;color:var(--cyan);text-transform:uppercase;white-space:nowrap;text-shadow:0 0 14px rgba(125,211,252,.3)}
.invite .envelope .grow{flex:1;border-bottom:1px dashed var(--border-std)}
.invite .envelope .stamp{font:600 11px/1 var(--mono);color:var(--amber);padding:4px 7px;border:1px solid var(--amber-deep);letter-spacing:.1em;text-shadow:0 0 12px rgba(255,180,84,.3)}
.invite pre{margin:0;padding:20px 20px 18px;font:400 13.5px/1.7 var(--mono);color:var(--ink);white-space:pre-wrap;word-break:break-word;background:var(--deep)}
.invite .cta{padding:0 20px 20px;display:flex;align-items:center;gap:12px;background:var(--deep)}
.invite .status{font:400 12.5px/1 var(--mono);color:var(--live);min-height:22px;margin-left:auto}
.invite .noscript{font:400 12.5px/1.5 var(--mono);color:var(--muted);padding:0 20px 18px;background:var(--deep)}
@media (max-width:560px){
  .invite .envelope .stamp,.invite .envelope .mark{font-size:10px}
  .invite .cta{flex-direction:column;align-items:stretch}
  .invite .cta .transmit{justify-content:center}
  .invite .status{margin-left:0;text-align:center}
}

.cta-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:30px}

.docs{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1px;background:var(--border-subtle);border:1px solid var(--border-std);border-radius:var(--r);overflow:hidden;margin-top:46px}
.docs a{background:var(--deep);padding:16px 18px;display:flex;flex-direction:column;gap:4px;min-height:88px;transition:background .15s}
.docs a:hover{background:var(--panel-2);text-decoration:none}
.docs .k{font:600 11px/1 var(--mono);letter-spacing:.12em;color:var(--faint);text-transform:uppercase}
.docs .v{font-size:15px;color:var(--ink);font-weight:550}
.docs .v small{display:block;color:var(--muted);font-size:12.5px;font-weight:400;margin-top:3px}

/* sections */
section.band{padding:52px 0;border-top:1px solid var(--border-subtle)}
.sec-head{display:flex;align-items:baseline;gap:14px;margin-bottom:10px;flex-wrap:wrap}
.sec-head h2{font-size:23px;margin:0;letter-spacing:-.02em;font-weight:650}
.sec-head .meta{font:400 12px/1 var(--mono);color:var(--faint);letter-spacing:.05em;margin-left:auto}
.sec-sub{color:var(--muted);max-width:660px;margin:0 0 26px;font-size:15.5px}

/* band telemetry */
.bands{border:1px solid var(--border-std);border-radius:var(--r);overflow:hidden;background:var(--deep)}
.band-row{display:grid;grid-template-columns:180px 1fr 96px;gap:16px;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border-subtle)}
.band-row:last-child{border-bottom:0}
.band-row:hover{background:var(--panel)}
.band-row .f{font:500 13.5px/1.3 var(--mono);color:var(--amber)}
.band-row .bar{height:7px;background:rgba(255,255,255,.045);border-radius:99px;overflow:hidden}
.band-row .bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cyan-deep),var(--cyan));border-radius:99px;transition:width 1.1s cubic-bezier(.22,.8,.3,1)}
.band-row .n{font:400 12.5px/1 var(--mono);color:var(--muted);text-align:right}
.band-note{font:400 12.5px/1.7 var(--mono);color:var(--faint);margin-top:14px}
@media (max-width:640px){.band-row{grid-template-columns:1fr 70px;gap:6px 12px}.band-row .f{grid-column:1}.band-row .n{grid-column:2;grid-row:1}.band-row .bar{grid-column:1/-1}}

/* feed */
.feed-head{display:flex;align-items:center;gap:12px;margin:0 0 18px;flex-wrap:wrap}
.feed-head .count{font:400 12.5px/1 var(--mono);color:var(--faint)}
.sort-toggle{display:flex;border:1px solid var(--border-std);border-radius:999px;overflow:hidden;margin-left:auto}
.sort-toggle a,.sort-toggle button{font:500 12.5px/1 var(--mono);background:var(--deep);border:0;color:var(--muted);padding:12px 18px;min-height:var(--tap);cursor:pointer;transition:color .15s,background .15s}
.sort-toggle a[aria-current="true"],.sort-toggle button[aria-pressed="true"]{background:var(--panel-2);color:var(--amber)}
.sort-toggle a:hover,.sort-toggle button:hover{color:var(--ink);text-decoration:none}
.dispatch{display:grid;gap:1px;background:var(--border-subtle);border:1px solid var(--border-std);border-radius:var(--r);overflow:hidden}
.card{background:var(--deep);padding:20px 22px;transition:background .15s;display:block;color:inherit;position:relative;overflow:hidden}
/* signature element: the dispatch number as a huge ghost numeral — a logbook entry, not a list item */
.card .no{position:absolute;right:14px;top:-18px;font:700 96px/1 var(--sans);letter-spacing:-.05em;color:transparent;-webkit-text-stroke:1px rgba(255,180,84,.16);pointer-events:none;user-select:none}
.card:hover .no{-webkit-text-stroke-color:rgba(255,180,84,.3)}
.card .freq{font:400 11px/1 var(--mono);color:var(--faint);letter-spacing:.06em}
@media (max-width:560px){.card .no{font-size:64px;top:-8px;right:10px}}
.card:hover{background:var(--panel);text-decoration:none}
.card .top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font:400 11.5px/1.4 var(--mono);color:var(--faint);margin-bottom:10px;letter-spacing:.03em}
.card .top .pub{color:var(--live)}
.card .top .wait{color:var(--amber)}
.card h3{margin:0 0 8px;font-size:18.5px;line-height:1.32;letter-spacing:-.015em;font-weight:600}
.card h3 a{color:var(--ink)}
.card h3 a:hover{color:var(--cyan);text-decoration:none}
.card p{margin:0;color:var(--muted);font-size:14.5px;line-height:1.6}
.card .foot{display:flex;gap:16px;flex-wrap:wrap;margin-top:13px;font:400 12px/1.4 var(--mono);color:var(--faint)}
.card .foot .by{color:var(--cyan)}
.pager{display:flex;gap:12px;justify-content:center;margin-top:22px;flex-wrap:wrap}
.cursor-note{font:400 12.5px/1.6 var(--mono);color:var(--faint);text-align:center;margin-top:14px}

/* article */
article.piece{max-width:720px;margin:0 auto}
.piece .kicker{font:600 12px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--amber);margin:0 0 16px}
.piece h1{font-size:clamp(27px,4.6vw,40px);line-height:1.14;letter-spacing:-.03em;margin:0 0 18px;font-weight:700}
.piece .byline{font:400 13px/1.5 var(--mono);color:var(--muted);padding-bottom:22px;margin-bottom:28px;border-bottom:1px solid var(--border-subtle);display:flex;gap:8px 18px;flex-wrap:wrap;align-items:center}
.piece .byline .ctl{margin-left:auto;display:flex;gap:8px}
.piece .byline .ctl .btn{padding:9px 14px;min-height:40px;font-size:12px;color:var(--muted);border-color:var(--border-std)}
.piece .byline .ctl .btn:hover{color:var(--ink)}
.piece p{font-size:17.5px;line-height:1.75;color:var(--ink-2);margin:0 0 20px;letter-spacing:.014em}
.piece h2{font-size:22px;margin:36px 0 14px;letter-spacing:-.02em;font-weight:650}
.piece ul{padding-left:22px;color:var(--ink-2);font-size:17px;line-height:1.7}
.piece li{margin-bottom:8px}
.piece blockquote{margin:24px 0;padding:14px 20px;border-left:2px solid var(--amber);background:var(--panel);border-radius:0 var(--r-sm) var(--r-sm) 0;color:var(--ink-2);font-size:16.5px;font-style:italic}
.piece svg.poster{width:100%;max-width:560px;height:auto;display:block;margin:32px auto;border:1px solid var(--border-std);border-radius:var(--r);background:var(--deep)}
.poster-cap{font:400 12.5px/1.5 var(--mono);color:var(--faint);text-align:center;margin:-20px 0 28px}
.lie{display:flex;gap:14px;align-items:flex-start;padding:16px 18px;background:var(--panel);border:1px solid var(--border-subtle);border-left:2px solid var(--amber);border-radius:0 var(--r-sm) var(--r-sm) 0;margin:0 0 12px}
.lie .n{font:600 12.5px/1.5 var(--mono);color:var(--amber);flex:0 0 auto;letter-spacing:.06em;padding-top:2px}
.lie p{margin:0;font-size:16px;color:var(--ink-2)}
.lie .fix{display:block;color:var(--live);font:400 13.5px/1.5 var(--mono);margin-top:6px}
.comments{margin-top:44px;border-top:1px solid var(--border-subtle);padding-top:28px}
.comments h2{font:600 14px/1 var(--mono);letter-spacing:.08em;color:var(--muted);text-transform:uppercase;margin:0 0 18px}
.comment{padding:16px 18px;background:var(--panel);border:1px solid var(--border-subtle);border-radius:var(--r-sm);margin-bottom:12px}
.comment .c-head{font:500 12.5px/1.4 var(--mono);color:var(--cyan);margin-bottom:8px;display:flex;gap:10px;flex-wrap:wrap}
.comment .c-head time{color:var(--faint);font-weight:400}
.comment .c-head .rec{color:var(--live)}
.comment p{margin:0;font-size:15px;color:var(--ink-2);line-height:1.65}
.replybox{margin-top:20px}
.replybox textarea{width:100%;background:var(--deep);border:1px solid var(--border-std);border-radius:var(--r-sm);color:var(--ink);font:400 15px/1.6 var(--sans);padding:14px;min-height:84px;resize:vertical}
.replybox textarea:focus{outline:none;border-color:var(--cyan-deep);box-shadow:0 0 0 3px rgba(125,211,252,.12)}
.replybox .row{display:flex;align-items:center;gap:12px;margin-top:10px;flex-wrap:wrap}
.replybox .note{font:400 11.5px/1.4 var(--mono);color:var(--faint)}

footer{border-top:1px solid var(--border-subtle);padding:32px 0 56px;margin-top:24px}
footer .wrap{display:flex;gap:8px 20px;flex-wrap:wrap;align-items:center;font:400 12.5px/1.6 var(--mono);color:var(--faint)}
footer a{color:var(--muted);padding:6px 0;min-height:32px;display:inline-flex;align-items:center}
footer .grow{flex:1}

.view[hidden]{display:none}
.mock-banner{font:500 11.5px/1.4 var(--mono);color:var(--amber);text-align:center;padding:9px 14px;border-bottom:1px solid var(--border-subtle);background:rgba(255,180,84,.06);letter-spacing:.04em}
@media (max-width:560px){.hero{padding:52px 0 40px}.cta-row .btn{flex:1 1 auto;justify-content:center}.sec-head .meta{margin-left:0;width:100%}}
