/* StackRatings — Nerd Protocols 1D P31 CRT design system (tokens from the brand kit). */
@import url('/fonts/fonts.css');
:root{
  --np-bg-void:#030604; --np-bg-crt:#050806; --np-bg-panel:#0A100C; --np-bg-panel-hover:#0F1913; --np-bg-elevated:#121E16;
  --np-green-primary:#00FF66; --np-green-core:#D8FFE8; --np-green-mid:#00C853; --np-green-dim:#006629; --np-green-subtle:rgba(0,255,102,.08);
  --np-white:#F0FFF4; --np-text-body:#C2D6C8; --np-text-muted:#8AA494; --np-text-inverse:#050806;
  --np-status-ok:#00FF66; --np-status-warn:#FFB000; --np-status-crit:#FF5C6F; --np-grey:#A7B5AC;
  --np-border-c:#193322; --np-border:1px solid #193322; --np-glow-sm:0 0 8px rgba(0,255,102,.35); --np-glow-text:0 0 10px rgba(0,255,102,.45);
  --np-font-display:'JetBrains Mono',ui-monospace,monospace; --np-font-pixel:'VT323',ui-monospace,monospace;
  --np-font-mono:'IBM Plex Mono',ui-monospace,monospace; --np-font-sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}
/* --np-text-muted lightened from the kit value #6E8C78 to #8AA494 for comfortable small-text contrast (about 7:1 on panels; WCAG AA needs 4.5:1). */
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background-color:var(--np-bg-crt);color:var(--np-text-body);font-family:var(--np-font-sans);line-height:1.6;font-size:16px;
  background-image:radial-gradient(circle at 50% 0%,rgba(0,255,102,.06) 0%,transparent 60%),linear-gradient(rgba(0,255,102,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(0,255,102,.02) 1px,transparent 1px);
  background-size:100% 100%,24px 24px,24px 24px;min-height:100vh;display:flex;flex-direction:column}
main{flex:1}
a{color:var(--np-green-primary)}
a:hover{color:var(--np-white)}
:focus-visible{outline:2px solid var(--np-status-warn);outline-offset:2px}
.container{max-width:1180px;margin:0 auto;padding:0 20px}
.skip{position:absolute;left:-9999px}.skip:focus{left:12px;top:12px;z-index:999;background:var(--np-green-primary);color:#050806;padding:6px 10px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
h1,h2,h3{font-family:var(--np-font-display);color:var(--np-white);line-height:1.15;letter-spacing:-.01em}
h1{font-size:clamp(1.9rem,4.2vw,3rem);font-weight:800;margin-bottom:14px}
h2{font-size:1.35rem;font-weight:800;margin-bottom:14px}
h2::before{content:">_ ";color:var(--np-green-primary)}
h3{font-size:1.02rem;font-weight:700;margin-bottom:8px}
p{margin-bottom:12px}
.mono{font-family:var(--np-font-mono)}
.muted{color:var(--np-text-muted)}
.small{font-size:.85rem}
.phosphor{color:var(--np-green-primary);text-shadow:var(--np-glow-text)}
.np-cursor{display:inline-block;width:.55em;height:1em;background:var(--np-green-primary);vertical-align:-.1em;margin-left:6px;box-shadow:var(--np-glow-sm);animation:np-blink 1.05s steps(1) infinite}
@keyframes np-blink{0%,49%{opacity:1}50%,100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.np-cursor{animation:none}}
/* header */
.site-header{position:sticky;top:0;z-index:100;background:rgba(5,8,6,.94);border-bottom:var(--np-border)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;min-height:64px;gap:16px;flex-wrap:wrap}
.brand-lockup{display:flex;align-items:center;gap:12px;text-decoration:none}
.brand-lockup img{height:30px;width:auto}
.brand-wordmark{font-family:var(--np-font-display);font-weight:800;font-size:1.08rem;letter-spacing:.06em;color:var(--np-white)}
.brand-wordmark span{color:var(--np-green-primary)}
.brand-by{display:block;font-family:var(--np-font-mono);font-size:.68rem;letter-spacing:.08em;color:var(--np-text-muted);font-weight:400}
.nav-links{display:flex;gap:20px;list-style:none;font-family:var(--np-font-mono);font-size:.86rem;align-items:center;flex-wrap:wrap}
.nav-links a{color:var(--np-text-body);text-decoration:none}
.nav-links a:hover,.nav-links a[aria-current=page]{color:var(--np-green-primary)}
/* buttons */
.btn-crt{display:inline-flex;align-items:center;gap:8px;font-family:var(--np-font-display);font-size:.9rem;font-weight:800;letter-spacing:.04em;padding:10px 18px;border:2px solid var(--np-green-primary);background:var(--np-green-primary);color:var(--np-text-inverse);cursor:pointer;text-decoration:none;box-shadow:var(--np-glow-sm)}
.btn-crt:hover{background:var(--np-white);border-color:var(--np-white);color:var(--np-text-inverse)}
.btn-crt[disabled]{opacity:.55;cursor:wait}
.btn-ghost{display:inline-flex;align-items:center;gap:8px;font-family:var(--np-font-mono);font-size:.86rem;font-weight:600;padding:8px 14px;border:1px solid #2B5A3C;background:#0A120D;color:var(--np-green-primary);cursor:pointer;text-decoration:none}
.btn-ghost:hover,.btn-ghost[aria-pressed=true]{border-color:var(--np-green-primary);background:rgba(0,255,102,.1);color:var(--np-white)}
/* tags */
.tag{display:inline-flex;align-items:center;font-family:var(--np-font-mono);font-weight:600;font-size:.74rem;padding:1px 8px;letter-spacing:.03em;border:1px solid #2B5A3C;color:var(--np-text-body);background:rgba(0,255,102,.04);text-decoration:none;white-space:nowrap}
.tag-inverse{background:var(--np-green-primary);color:var(--np-text-inverse);border-color:var(--np-green-primary);font-family:var(--np-font-display);font-weight:800}
.tag-ok{border-color:var(--np-green-mid);color:var(--np-green-primary)}
.tag-grey{border-color:#5B6B61;color:var(--np-grey);background:rgba(167,181,172,.06)}
.tag-warn{border-color:var(--np-status-warn);color:var(--np-status-warn);background:rgba(255,176,0,.07)}
.tag-crit{border-color:var(--np-status-crit);color:var(--np-status-crit);background:rgba(255,92,111,.07)}
.tag-none{border-style:dashed;color:var(--np-text-muted)}
/* window / panel */
.np-window{position:relative;background:var(--np-bg-panel);border:1px solid #1C3B27;padding:20px}
.np-window::before,.np-window::after{content:"";position:absolute;width:10px;height:10px;pointer-events:none}
.np-window::before{top:-1px;left:-1px;border-top:2px solid var(--np-green-primary);border-left:2px solid var(--np-green-primary)}
.np-window::after{bottom:-1px;right:-1px;border-bottom:2px solid var(--np-green-primary);border-right:2px solid var(--np-green-primary)}
.np-bar{display:flex;justify-content:space-between;gap:10px;margin:-20px -20px 16px;padding:7px 14px;background:#0D1811;border-bottom:1px solid #1C3B27;font-family:var(--np-font-mono);font-size:.76rem;color:var(--np-text-muted)}
.np-bar b{color:var(--np-white);font-weight:600;letter-spacing:.04em}
.section{padding-top:36px;padding-bottom:36px;border-bottom:1px solid #12251A}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media (max-width:900px){.grid-2,.grid-4{grid-template-columns:1fr}}
/* hero */
.hero{padding-top:40px;padding-bottom:22px}
.eyebrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px;font-family:var(--np-font-mono);font-size:.8rem;color:var(--np-text-muted)}
.lead{font-size:1.08rem;max-width:720px}
.cta-row{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0 6px}
/* leaderboard */
.controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:8px 0 14px}
.chips{display:flex;gap:8px;flex-wrap:wrap;list-style:none}
.search{background:var(--np-bg-void);border:1px solid #2B5A3C;color:var(--np-white);font-family:var(--np-font-mono);padding:8px 12px;min-width:220px;font-size:.9rem}
.table-wrap{overflow-x:auto;border:1px solid #1C3B27;background:var(--np-bg-panel)}
table{border-collapse:collapse;width:100%;font-family:var(--np-font-mono);font-size:.9rem}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid #142A1C;vertical-align:top}
th{color:var(--np-text-muted);font-weight:600;font-size:.76rem;text-transform:uppercase;letter-spacing:.06em;background:#0C150F;white-space:nowrap}
th button{all:unset;cursor:pointer}
th button:focus-visible{outline:2px solid var(--np-status-warn)}
th[aria-sort=descending] button::after{content:" ▼";color:var(--np-green-primary)}
th[aria-sort=ascending] button::after{content:" ▲";color:var(--np-green-primary)}
td.num{white-space:nowrap}
tbody tr:hover{background:var(--np-bg-panel-hover)}
tr.below td{color:var(--np-text-muted)}
tr.below td a{color:var(--np-text-body)}
.supp-link{color:var(--np-white);font-weight:600;text-decoration:none}
.supp-link:hover{color:var(--np-green-primary);text-decoration:underline}
.score{color:var(--np-green-primary);font-weight:600}
.se{color:var(--np-status-warn)}
.disclaimer{font-size:.85rem;color:var(--np-text-muted);margin-top:10px}
/* progress */
.progress{height:10px;background:#0C1A11;border:1px solid #2B5A3C;margin:8px 0;max-width:340px}
.progress>span{display:block;height:100%;background:var(--np-green-primary)}
/* histogram */
.hist{display:grid;grid-template-columns:repeat(11,1fr);gap:3px;align-items:end;height:110px;border-bottom:1px solid #2B5A3C;padding-top:6px}
.hist .bar{background:var(--np-green-mid);min-height:0;position:relative}
.hist.se-hist .bar{background:var(--np-status-warn)}
.hist-labels{display:grid;grid-template-columns:repeat(11,1fr);gap:3px;font-family:var(--np-font-mono);font-size:.7rem;color:var(--np-text-muted);text-align:center}
.bignum{font-family:var(--np-font-display);font-weight:800;font-size:2.4rem;color:var(--np-green-primary);line-height:1;text-shadow:var(--np-glow-text)}
.bignum small{font-size:1rem;color:var(--np-text-muted);text-shadow:none}
.stat-row{display:flex;gap:24px;flex-wrap:wrap;margin:10px 0 14px;font-family:var(--np-font-mono)}
.stat-row div b{display:block;color:var(--np-white);font-size:1.2rem}
.kv{list-style:none;font-family:var(--np-font-mono);font-size:.86rem}
.kv li{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px dashed #173021}
.pills{display:flex;flex-direction:column;gap:8px;margin:10px 0 14px}
.pill{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:8px 12px;border:1px solid #2B5A3C;font-family:var(--np-font-mono);font-size:.86rem;text-decoration:none;color:var(--np-text-body)}
.pill.ok{border-color:var(--np-green-mid)}
.pill.ok .lvl{color:var(--np-green-primary)}
.pill.grey{border-color:#5B6B61}
.pill.grey .lvl{color:var(--np-grey)}
.pill.warn{border-color:var(--np-status-warn)}
.pill.warn .lvl{color:var(--np-status-warn)}
.pill.none{border-style:dashed;color:var(--np-text-muted)}
.pill.active{box-shadow:0 0 0 2px var(--np-white) inset}
.reality{border-left:3px solid var(--np-status-warn);padding:8px 12px;background:rgba(255,176,0,.05);color:var(--np-white)}
.tile{background:var(--np-bg-elevated);border:1px solid #1F3D29;padding:14px}
.tile .k{font-family:var(--np-font-mono);font-size:.72rem;color:var(--np-text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
.tile .v{color:var(--np-white)}
.redflags{border:2px solid var(--np-status-crit);background:rgba(255,92,111,.06);padding:18px}
.redflags h2::before{content:"!! ";color:var(--np-status-crit)}
.callout{border:1px dashed #2B5A3C;padding:14px;color:var(--np-text-muted);font-family:var(--np-font-mono);font-size:.88rem}
.sources{list-style:none;counter-reset:s}
.sources li{padding:10px 0;border-bottom:1px dashed #173021}
.comment{border-left:2px solid #2B5A3C;padding:6px 12px;margin-bottom:10px}
/* forms */
form .field{margin-bottom:16px}
label,legend{display:block;font-family:var(--np-font-mono);font-size:.86rem;color:var(--np-white);margin-bottom:6px;font-weight:600}
fieldset{border:1px solid #1C3B27;padding:12px 14px;margin-bottom:16px}
input[type=text],input[type=email],input[type=number],input[type=search],select,textarea{width:100%;background:var(--np-bg-void);border:1px solid #2B5A3C;color:var(--np-white);font-family:var(--np-font-mono);font-size:.95rem;padding:9px 11px}
textarea{min-height:80px}
input[type=range]{width:100%;accent-color:var(--np-green-primary)}
.inline{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.inline > *{flex:1 1 140px}
.radio-row{display:flex;gap:14px;flex-wrap:wrap}
.radio-row label,.check label{display:inline-flex;gap:8px;align-items:center;font-weight:400;color:var(--np-text-body)}
.check{display:flex;gap:8px;align-items:flex-start}
.check input{margin-top:5px}
.scale{font-size:.8rem;color:var(--np-text-muted);font-family:var(--np-font-mono)}
.out{font-family:var(--np-font-display);font-weight:800;color:var(--np-green-primary);font-size:1.2rem}
.msg{padding:10px 12px;margin:10px 0;font-family:var(--np-font-mono);font-size:.88rem}
.msg.ok{border:1px solid var(--np-green-mid);color:var(--np-green-primary)}
.msg.err{border:1px solid var(--np-status-crit);color:var(--np-status-crit)}
.msg.warn{border:1px solid var(--np-status-warn);color:var(--np-status-warn)}
.devbanner{background:var(--np-status-warn);color:#050806;font-family:var(--np-font-mono);font-size:.8rem;text-align:center;padding:4px 8px;font-weight:600}
.newsletter{max-width:640px}
/* check your bottle */
.bottle-out{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:14px}
@media (max-width:700px){.bottle-out{grid-template-columns:1fr}}
.rangebar{position:relative;height:22px;background:#0C1A11;border:1px solid #2B5A3C;margin:8px 0 4px}
.rangebar .studied{position:absolute;top:0;bottom:0;background:rgba(0,200,83,.35);border-left:1px solid var(--np-green-primary);border-right:1px solid var(--np-green-primary)}
.rangebar .ul{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--np-status-crit)}
.rangebar .dose{position:absolute;top:-6px;bottom:-6px;width:4px;background:var(--np-white);box-shadow:0 0 6px var(--np-white)}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.74rem;font-family:var(--np-font-mono);color:var(--np-text-muted)}
/* footer */
.site-footer{border-top:var(--np-border);padding:22px 0;margin-top:30px;font-family:var(--np-font-mono);font-size:.8rem;color:var(--np-text-muted)}
.site-footer .container{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.site-footer strong{color:var(--np-white)}
.prose{max-width:780px}
.prose h2{margin-top:30px}
.prose ul,.prose ol{margin:0 0 12px 22px}
.prose li{margin-bottom:6px}
/* blog */
.post-list{display:grid;gap:18px}
.post-title{margin-bottom:8px}
.post-title::before{content:none}
.post-title a{color:var(--np-white);text-decoration:none}
.post-title a:hover{color:var(--np-green-primary);text-decoration:underline}
.post .hero{padding-bottom:10px}
.post-body{max-width:760px;font-size:1.04rem}
.post-body h2{margin-top:28px}
.post-body h3,.post-body h4{margin-top:20px}
.post-body blockquote{border-left:3px solid var(--np-green-mid);padding:6px 14px;margin:0 0 14px;color:var(--np-white);background:rgba(0,255,102,.04)}
.post-body code{font-family:var(--np-font-mono);background:var(--np-bg-elevated);padding:1px 5px;font-size:.9em}
.post-body pre{background:var(--np-bg-void);border:1px solid #1C3B27;padding:12px 14px;overflow-x:auto;margin-bottom:14px}
.post-body pre code{background:none;padding:0}
.post-body hr{border:0;border-top:1px dashed #2B5A3C;margin:22px 0}
.post-body .table-wrap{margin-bottom:14px}
.rel-card{display:block;text-decoration:none;color:var(--np-text-body)}
.rel-card:hover{border-color:var(--np-green-primary)}
.rel-card h3{color:var(--np-white)}
@media (max-width:600px){.nav-inner{padding-top:8px;padding-bottom:8px}.nav-links{gap:12px 16px;font-size:.82rem}}
/* Rate my stack */
.stack-list{list-style:none;margin:8px 0;padding:0;display:grid;gap:6px}
.stack-item{border:1px solid #1F3D29;padding:8px 10px;background:var(--np-bg-elevated)}
.stack-item.on{border-color:var(--np-green-primary)}
.stack-pick{display:flex;gap:10px;align-items:center;font-weight:600;cursor:pointer}
.stack-detail{margin-top:8px}
.stack-detail .field{margin-bottom:0}
#stacks td .tag-warn{padding:0 5px;text-decoration:none}
@media (max-width:720px){.stack-grid{grid-template-columns:1fr}}
.stack-detail[hidden]{display:none}
