:root{--bg:#04061a;--ink:#d9e2ff;--dim:#7d8bd0;--a:#ffb938;--c:#4df3ff;--m:#ff4fa3;--line:#1d2a7a}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;min-height:100vh;color:var(--ink);font:23px/1.4 "VT323","Courier New",monospace;
background:radial-gradient(ellipse at 70% 20%,#0d1a6b 0,transparent 55%),radial-gradient(ellipse at 10% 90%,#2a0f5c 0,transparent 50%),var(--bg);
text-shadow:0 0 6px rgba(120,160,255,.45);overflow-x:hidden}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:9;
background:repeating-linear-gradient(0deg,rgba(0,0,0,.22) 0 1px,transparent 1px 3px),radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.65) 100%)}
.top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px 24px;padding:14px 5vw;border-bottom:1px solid var(--line)}
.ps1{color:var(--dim)}.ps1 b{color:var(--c);font-weight:400}.ps1 i{color:var(--a);font-style:normal}
nav a{color:var(--ink);text-decoration:none;margin-left:20px;padding:0 6px}
nav a span{color:var(--m)}
nav a:hover,nav a:focus-visible,nav a[aria-current]{background:var(--a);color:#1a0f00;text-shadow:none;outline:0}
nav a:hover span,nav a[aria-current] span{color:#1a0f00}
main{padding:5vh 5vw 14vh;max-width:1180px;margin:0 auto}
.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:30px;align-items:center;min-height:68vh}
h1{margin:6px 0 8px;font-weight:400;font-size:clamp(64px,13vw,150px);line-height:.85;color:#fff;letter-spacing:2px;
text-shadow:-4px 0 var(--m),4px 0 var(--c),0 0 30px rgba(255,185,56,.5)}
h2{margin:34px 0 10px;font-weight:400;font-size:32px;color:var(--c)}
h2::before{content:"## ";color:var(--m)}
h3{margin:0;font-weight:400;font-size:26px;color:var(--a)}
p{margin:0 0 10px;max-width:60ch}
a{color:var(--c)}a:hover{color:var(--a)}
:focus-visible{outline:2px solid var(--a);outline-offset:3px}
.d{color:var(--dim)}.a{color:var(--a)}.ok{color:#6bff95}
.log p{margin:0;max-width:none}
.cur{display:inline-block;width:.55em;height:.85em;background:var(--a);vertical-align:-.1em;margin-left:4px;animation:b 1s steps(1) infinite}
@keyframes b{50%{opacity:0}}
.menu{display:flex;flex-wrap:wrap;gap:10px 14px;margin-top:26px}
.menu a{border:1px solid var(--line);background:rgba(13,26,107,.45);padding:2px 16px;text-decoration:none;color:var(--ink);box-shadow:0 0 0 0 var(--a);transition:box-shadow .15s,transform .15s}
.menu a:hover{box-shadow:4px 4px 0 var(--a);transform:translate(-2px,-2px);color:var(--ink)}
.menu a span{color:var(--m)}
.radar{position:relative;aspect-ratio:1;max-width:460px;width:100%;margin-left:auto;border:1px solid var(--line);border-radius:50%;box-shadow:0 0 60px rgba(77,243,255,.18),inset 0 0 60px rgba(77,243,255,.1)}
.radar canvas{width:100%;height:100%;display:block}
.cap{text-align:center;color:var(--dim);margin-top:10px;font-size:20px}
.tl{position:relative;margin:12px 0 0 10px;padding-left:30px;border-left:2px solid var(--line)}
.tl .it{position:relative;margin-bottom:22px}
.tl .it::before{content:"";position:absolute;left:-39px;top:9px;width:14px;height:14px;background:var(--a);box-shadow:0 0 14px var(--a)}
.tags{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px 10px}
.tags li{border:1px solid var(--c);color:var(--c);padding:0 12px;box-shadow:0 0 10px rgba(77,243,255,.25)}
.proj{border:1px solid var(--line);padding:18px 22px;background:rgba(13,26,107,.35);margin-bottom:18px;max-width:760px}
.proj .st{float:right;color:#6bff95}
.keys{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;justify-content:center;flex-wrap:wrap;gap:0 24px;padding:3px 10px;background:#0a1250;border-top:1px solid var(--line);color:var(--dim);font-size:20px}
.keys a{color:var(--dim);text-decoration:none}.keys a:hover{color:var(--a)}
@media(max-width:820px){.hero{grid-template-columns:1fr}.radar{margin:0 auto}nav a{margin:0 12px 0 0}body{font-size:20px}}
@media(prefers-reduced-motion:reduce){.cur{animation:none}.menu a{transition:none}}
