:root {
  --bg:#080514; --bg2:#120a2b; --panel:rgba(26,16,58,.72); --line:rgba(160,130,255,.22);
  --text:#ece8ff; --mute:#9c93c4; --pink:#ff3dcb; --cyan:#27e1ff; --gold:#ffc83d; --violet:#8a5cff;
  --ok:#41e08f; --warn:#ffb13d; --err:#ff5470;
  --grad:linear-gradient(110deg,var(--pink),var(--violet) 55%,var(--cyan));
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
html,body { overflow-x:hidden; }
body {
  margin:0; min-height:100vh; color:var(--text); background:var(--bg);
  font:16px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background-image:radial-gradient(900px 500px at 85% -5%,#3a1b7a55,transparent 70%),radial-gradient(700px 500px at 0% 30%,#0d3a6a44,transparent 70%);
  background-attachment:fixed;
}
a { color:var(--cyan); text-decoration:none; }
a:hover { text-decoration:underline; }
h1,h2,h3 { line-height:1.15; margin:0; font-weight:800; letter-spacing:.01em; }
h2 { font-size:clamp(26px,4vw,38px); }
p { margin:0; }
.wrap { width:min(1160px,100% - 32px); margin-inline:auto; }
.grad { background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }

/* header */
.top { position:sticky; top:0; z-index:20; backdrop-filter:blur(12px); background:rgba(8,5,20,.72); border-bottom:1px solid var(--line); }
.top .wrap { display:flex; align-items:center; gap:24px; height:64px; }
.logo { display:flex; align-items:center; gap:10px; color:var(--text); font-weight:900; letter-spacing:.14em; font-size:15px; text-transform:uppercase; }
.logo:hover { text-decoration:none; }
.logo svg { width:34px; height:34px; filter:drop-shadow(0 0 8px #8a5cffaa); }
.nav { display:flex; gap:22px; margin-left:auto; font-size:14px; }
.nav a { color:var(--mute); }
.nav a:hover { color:var(--text); text-decoration:none; }
@media (max-width:720px) { .nav { display:none; } .top .wrap { justify-content:space-between; } }

/* buttons */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:10px; cursor:pointer; border:0;
  padding:14px 28px; border-radius:12px; font:inherit; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:#fff;
  background:var(--grad); background-size:160% 100%; box-shadow:0 0 22px #ff3dcb66,0 0 48px #27e1ff33;
  transition:transform .15s,box-shadow .2s,background-position .4s;
}
.btn:hover { transform:translateY(-2px); background-position:100% 0; box-shadow:0 0 30px #ff3dcb99,0 0 64px #27e1ff55; text-decoration:none; }
.btn:disabled { opacity:.65; cursor:default; transform:none; }
.btn.ghost { background:transparent; border:1px solid var(--line); box-shadow:none; color:var(--text); }
.btn.ghost:hover { border-color:var(--cyan); box-shadow:0 0 18px #27e1ff44; }
.btn.sm { padding:9px 18px; font-size:13px; }

/* hero */
.hero { position:relative; overflow:hidden; padding:56px 0 72px; }
.hero .wrap { display:grid; grid-template-columns:1.15fr .85fr; gap:40px; align-items:center; position:relative; z-index:2; }
.eyebrow { color:var(--cyan); font-weight:700; letter-spacing:.24em; font-size:12px; text-transform:uppercase; }
.hero h1 { font-size:clamp(38px,7vw,74px); margin:14px 0 18px; text-transform:uppercase; }
.hero .lead { color:var(--mute); font-size:18px; max-width:540px; }
.cta { display:flex; flex-wrap:wrap; gap:14px; margin:30px 0 22px; }
.chips { display:flex; flex-wrap:wrap; gap:10px; }
.chip { padding:6px 14px; border:1px solid var(--line); border-radius:999px; font-size:13px; color:var(--mute); background:var(--panel); }
.chip b { color:var(--text); }
.scene { position:absolute; inset:0; z-index:1; pointer-events:none; opacity:.9; }
.scene svg { width:100%; height:100%; }
.scene::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,#080514d9 0,#08051466 48%,transparent 70%); }
.hero .wrap > * { min-width:0; }
.layer { transition:transform .25s ease-out; will-change:transform; }
@media (max-width:900px) { .hero .wrap { grid-template-columns:1fr; } .hero { padding-top:36px; } }

/* login card */
.card { background:var(--panel); border:1px solid var(--line); border-radius:18px; padding:26px; backdrop-filter:blur(10px); box-shadow:0 10px 50px #0008; }
.login h3 { font-size:22px; margin-bottom:4px; text-transform:uppercase; letter-spacing:.06em; }
.login .sub { color:var(--mute); font-size:14px; margin-bottom:18px; }
.login label { display:block; font-size:12px; color:var(--mute); letter-spacing:.1em; text-transform:uppercase; margin:12px 0 6px; }
.login input[type=text],.login input[type=password] {
  width:100%; padding:12px 14px; border-radius:10px; border:1px solid var(--line); background:#0c0720; color:var(--text); font:inherit;
}
.login input:focus { outline:none; border-color:var(--cyan); box-shadow:0 0 0 3px #27e1ff22; }
.row { display:flex; justify-content:space-between; align-items:center; gap:10px; margin:14px 0 18px; font-size:14px; }
.row label { margin:0; display:flex; gap:8px; align-items:center; text-transform:none; letter-spacing:0; font-size:14px; color:var(--mute); }
.login .btn { width:100%; }
.msg { min-height:22px; margin-top:12px; font-size:14px; color:var(--err); }
.alt { margin-top:14px; text-align:center; font-size:14px; color:var(--mute); }

/* sections */
section { padding:68px 0; }
.sec-head { margin-bottom:34px; max-width:680px; }
.sec-head p { color:var(--mute); margin-top:10px; }
.grid { display:grid; gap:20px; }
.g3 { grid-template-columns:repeat(3,1fr); }
.g4 { grid-template-columns:repeat(4,1fr); }
.g2 { grid-template-columns:repeat(2,1fr); }
@media (max-width:960px) { .g3,.g4 { grid-template-columns:repeat(2,1fr); } }
@media (max-width:620px) { .g3,.g4,.g2 { grid-template-columns:1fr; } }
.feat { transition:transform .2s,border-color .2s,box-shadow .2s; }
.feat:hover { transform:translateY(-4px); border-color:var(--violet); box-shadow:0 12px 40px #8a5cff33; }
.feat svg.ic { width:46px; height:46px; margin-bottom:14px; filter:drop-shadow(0 0 8px currentColor); }
.feat h3 { font-size:19px; margin-bottom:8px; }
.feat p { color:var(--mute); font-size:15px; }

/* classes */
.cls { text-align:center; padding:20px 16px 22px; }
.cls svg { width:100%; max-width:150px; height:auto; display:block; margin:0 auto 10px; }
.cls h3 { font-size:18px; }
.cls .role { color:var(--mute); font-size:13px; letter-spacing:.12em; text-transform:uppercase; }
.bob { animation:bob 5s ease-in-out infinite; }
.bob.d2 { animation-delay:-1.2s; } .bob.d3 { animation-delay:-2.4s; } .bob.d4 { animation-delay:-3.6s; }
@keyframes bob { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-9px); } }
.twinkle { animation:twinkle 3.2s ease-in-out infinite; }
.twinkle:nth-child(2n) { animation-delay:-1.1s; } .twinkle:nth-child(3n) { animation-delay:-2s; }
@keyframes twinkle { 0%,100% { opacity:.25; } 50% { opacity:1; } }
.pulse { animation:pulse 3s ease-in-out infinite; transform-origin:center; transform-box:fill-box; }
@keyframes pulse { 0%,100% { opacity:.55; transform:scale(1); } 50% { opacity:1; transform:scale(1.08); } }

/* news */
.news { display:grid; grid-template-columns:1.4fr 1fr; gap:20px; }
@media (max-width:900px) { .news { grid-template-columns:1fr; } }
.post { margin-bottom:16px; } .post:last-child { margin-bottom:0; }
.tag { display:inline-block; padding:2px 10px; border-radius:6px; font-size:11px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; background:#8a5cff33; color:#c8b4ff; }
.tag.ev { background:#ff3dcb2b; color:#ff9be6; } .tag.dev { background:#27e1ff22; color:#8cf0ff; }
.post h3 { margin:10px 0 6px; font-size:20px; }
.post p { color:var(--mute); font-size:15px; }
.date { color:var(--mute); font-size:12px; margin-left:8px; }
.patch h3 { font-size:20px; margin-bottom:4px; }
.patch ul { margin:12px 0 0; padding-left:18px; color:var(--mute); font-size:14px; }
.patch li { margin:6px 0; } .patch li b { color:var(--text); }

/* specs / status */
table { width:100%; border-collapse:collapse; font-size:15px; }
th,td { text-align:left; padding:11px 8px; border-bottom:1px solid var(--line); vertical-align:top; }
th { color:var(--mute); font-weight:600; width:32%; }
td.h,th.h { color:var(--cyan); letter-spacing:.14em; text-transform:uppercase; font-size:12px; }
.srv { display:flex; align-items:center; gap:12px; padding:12px 0; border-bottom:1px solid var(--line); font-size:15px; }
.srv:last-child { border-bottom:0; }
.srv .n { flex:1; } .srv .p { color:var(--mute); font-size:13px; }
.dot { width:10px; height:10px; border-radius:50%; background:var(--ok); box-shadow:0 0 10px var(--ok); }
.dot.busy { background:var(--warn); box-shadow:0 0 10px var(--warn); }
.dot.mnt { background:var(--err); box-shadow:0 0 10px var(--err); }

/* footer */
footer { border-top:1px solid var(--line); padding:34px 0 46px; color:var(--mute); font-size:13px; background:#06030f99; }
footer .cols { display:flex; flex-wrap:wrap; gap:24px; justify-content:space-between; margin-bottom:18px; }
footer nav { display:flex; gap:18px; flex-wrap:wrap; }
footer p { max-width:900px; margin-top:8px; }

/* simple centred page (beta, 404, key) */
.center { min-height:calc(100vh - 64px); display:grid; place-items:center; padding:40px 16px; }
.center .card { width:100%; max-width:520px; display:grid; gap:14px; }
.center h1 { font-size:28px; }
.center p,.center ol { color:var(--mute); }
.center ol { margin:0; padding-left:20px; } .center ol li { margin:5px 0; }
.hidden { display:none !important; }
textarea { width:100%; min-height:96px; background:#0c0720; border:1px solid var(--line); color:var(--text); border-radius:10px; padding:10px; font:12px/1.4 ui-monospace,Menlo,Consolas,monospace; resize:vertical; }
.status { min-height:20px; font-size:14px; } .status.ok { color:var(--ok); } .status.err { color:var(--err); }
details summary { cursor:pointer; color:var(--cyan); }

@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation:none !important; transition:none !important; }
}

@media (max-width:900px) {
  .scene { opacity:.4; }
  .scene::after { background:linear-gradient(180deg,#08051499,#080514cc); }
}
