/* glass-term blog styles — shared across blog index + all articles */
:root {
  --bg:#0c0e14; --bg2:#0e1018; --panel:rgba(20,24,34,0.6); --panel-s:rgba(20,24,34,0.85);
  --green:#5ef38c; --yellow:#ffd479; --magenta:#ff7ed4; --cyan:#7ee0ff;
  --fg:#d8def0; --fg-dim:#8890aa; --fg-dim2:#4a5068;
  --border:rgba(94,243,140,0.18); --border-m:rgba(126,224,255,0.22); --border-y:rgba(255,212,121,0.20);
}
*, *::before, *::after { font-family:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { background:var(--bg); color:var(--fg); min-height:100vh; -webkit-font-smoothing:antialiased; overflow-x:hidden; position:relative; margin:0; }
body::before {
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(ellipse 70% 50% at 15% 20%, rgba(126,224,255,0.055) 0%, transparent 70%),
    radial-gradient(ellipse 60% 45% at 85% 75%, rgba(255,126,212,0.045) 0%, transparent 70%);
}
.scanlines {
  position:fixed; inset:0; z-index:9999; pointer-events:none;
  background:repeating-linear-gradient(to bottom, rgba(0,0,0,0) 0px, rgba(0,0,0,0) 2px, rgba(0,0,0,0.07) 3px, rgba(0,0,0,0.07) 3px);
}
.glass { background:var(--panel); backdrop-filter:blur(16px) saturate(1.4); -webkit-backdrop-filter:blur(16px) saturate(1.4); border:1px solid var(--border); }
.glass-s { background:var(--panel-s); backdrop-filter:blur(20px) saturate(1.5); -webkit-backdrop-filter:blur(20px) saturate(1.5); border:1px solid var(--border); }
.tbar { border-bottom:1px solid var(--border); background:rgba(14,16,24,0.5); padding:0.45rem 0.85rem; display:flex; align-items:center; gap:0.5rem; font-size:0.69rem; color:var(--fg-dim); }
.dot-r{width:10px;height:10px;background:#ff5f57;display:inline-block;flex-shrink:0;}
.dot-y{width:10px;height:10px;background:#febc2e;display:inline-block;flex-shrink:0;}
.dot-g{width:10px;height:10px;background:#28c840;display:inline-block;flex-shrink:0;}
.glow-g{text-shadow:0 0 5px rgba(94,243,140,0.5);}
.glow-c{text-shadow:0 0 5px rgba(126,224,255,0.5);}
.glow-m{text-shadow:0 0 5px rgba(255,126,212,0.5);}
.glow-y{text-shadow:0 0 5px rgba(255,212,121,0.45);}
.glow-fg{text-shadow:0 0 6px rgba(216,222,240,0.3);}
.cursor { display:inline-block; width:0.58em; height:1em; background:var(--green); vertical-align:-0.14em; margin-left:0.1em; animation:blink 1.1s steps(1) infinite; box-shadow:0 0 7px rgba(94,243,140,0.7); }
@keyframes blink { 0%,49%{opacity:1}50%,100%{opacity:0} }
.btn { display:inline-block; border:1px solid var(--green); color:var(--green); background:transparent; transition:background .1s,color .1s,box-shadow .12s; text-decoration:none; text-align:center; white-space:nowrap; }
.btn:hover,.btn:focus-visible { background:var(--green); color:var(--bg); box-shadow:0 0 12px rgba(94,243,140,0.5); outline:none; }
.btn-solid { display:inline-block; border:1px solid var(--green); background:var(--green); color:var(--bg); transition:filter .1s,box-shadow .12s; text-decoration:none; text-align:center; white-space:nowrap; }
.btn-solid:hover,.btn-solid:focus-visible { filter:brightness(1.1); box-shadow:0 0 16px rgba(94,243,140,0.55); outline:none; }
.navlink { color:var(--fg-dim); text-decoration:none; transition:color .1s,text-shadow .1s; }
.navlink:hover { color:var(--cyan); text-shadow:0 0 6px rgba(126,224,255,0.5); }
.card-hover { transition:border-color .15s,box-shadow .15s; }
.card-hover:hover { border-color:rgba(126,224,255,0.35); box-shadow:0 0 0 1px rgba(126,224,255,0.12),0 0 24px rgba(126,224,255,0.06); }
a:focus-visible,button:focus-visible { outline:2px solid var(--cyan); outline-offset:2px; }
::-webkit-scrollbar{width:8px;height:8px;} ::-webkit-scrollbar-track{background:var(--bg2);} ::-webkit-scrollbar-thumb{background:rgba(94,243,140,0.25);} ::-webkit-scrollbar-thumb:hover{background:rgba(94,243,140,0.5);}
::selection { background:rgba(94,243,140,0.25); color:var(--fg); }
.rel { position:relative; z-index:1; }
.sep { color:var(--fg-dim2); font-size:0.7rem; overflow:hidden; white-space:nowrap; }

/* ── Article prose — terminal style ── */
.prose { color:#b8c0d8; font-size:0.92rem; line-height:1.85; }
.prose p { margin:1.25em 0; }
.prose h2 { color:var(--green); font-size:1.05rem; margin:2.5em 0 0.8em; text-transform:uppercase; letter-spacing:0.03em; text-shadow:0 0 5px rgba(94,243,140,0.4); }
.prose h2::before { content:"// "; color:var(--fg-dim2); }
.prose strong { color:var(--fg); font-weight:600; }
.prose em { color:var(--cyan); font-style:normal; }
.prose ul { margin:1.25em 0; padding-left:1.5em; list-style:none; }
.prose li { margin:0.55em 0; position:relative; }
.prose li::before { content:"▸"; color:var(--green); position:absolute; left:-1.4em; }
.prose blockquote { margin:1.6em 0; padding:0.85em 1.1em; border-left:2px solid var(--green); background:rgba(94,243,140,0.05); color:var(--fg-dim); }
.prose code { color:var(--yellow); background:rgba(0,0,0,0.3); padding:0.1em 0.4em; border:1px solid var(--border-y); font-size:0.85em; }
.prose a { color:var(--cyan); text-decoration:underline; text-underline-offset:2px; }
.prose a:hover { text-shadow:0 0 6px rgba(126,224,255,0.5); }

@media (prefers-reduced-motion: reduce) { html{scroll-behavior:auto;} .cursor{animation:none;opacity:1;} }
