:root{--bg:#050b1f;--bg2:#0a1636;--panel:#0c1738;--panel2:#142457;--line:#23408f;--text:#e8efff;--mut:#8ea2d4;
--red:#ff4d5a;--grn:#2be39a;--amb:#ffb83d;--blue:#2f8cff;--cyan:#27d3ff;
--f:'Barlow',system-ui,-apple-system,'Segoe UI',sans-serif;--fh:'Barlow Semi Condensed','Barlow',system-ui,sans-serif}
*{box-sizing:border-box}html{color-scheme:dark}
body{margin:0;color:var(--text);font:16px/1.5 var(--f);min-height:100vh;
background:radial-gradient(900px 500px at 85% -5%,#16308a55,transparent 60%),radial-gradient(700px 500px at 0% 100%,#1a2f8a40,transparent 60%),var(--bg)}
h1,h2,h3{font-family:var(--fh);margin:0;font-weight:600;line-height:1.15}h2{font-size:19px;margin-bottom:12px}
a{color:inherit}
/* ---- shell ---- */
.app{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:20px 14px;background:linear-gradient(180deg,#0a1544ee,#060d28ee);border-right:1px solid #1d3a9066;overflow:hidden}
.logo{display:flex;flex-direction:column;align-items:center;gap:6px;padding:4px 0 18px;text-decoration:none}
.logo b{font:600 22px var(--fh);letter-spacing:.02em}.logo small{color:var(--mut);font-size:12px}
.nav{display:grid;gap:6px}
.nav a{display:flex;gap:12px;align-items:center;padding:11px 14px;border-radius:10px;text-decoration:none;color:#b9c7ef;transition:background .15s}
.nav a svg{width:20px;height:20px;fill:currentColor;flex:none}
.nav a:hover{background:#16286a}
.nav a[aria-current]{background:linear-gradient(90deg,#1f6bff,#1a4fd0);color:#fff;box-shadow:0 0 18px #1f6bff66}
.sky{margin-top:auto;width:calc(100% + 28px);margin-left:-14px;display:block;opacity:.9}
.sidestat{margin:10px 0 0;padding:12px;border:1px solid #1d3a90;border-radius:12px;background:#0a1740;display:flex;gap:10px;align-items:center;font-size:14px}
.sidestat i{width:10px;height:10px;border-radius:50%;background:var(--mut);flex:none}.sidestat small{display:block;color:var(--mut);font-size:12px}
.sidestat[data-s=online] i{background:var(--grn);box-shadow:0 0 10px var(--grn)}.sidestat[data-s=offline] i{background:var(--red);box-shadow:0 0 10px var(--red)}
.main{min-width:0;display:flex;flex-direction:column}
.bar{display:flex;align-items:center;gap:18px;padding:14px 24px;border-bottom:1px solid #1d3a9066;flex-wrap:wrap;background:linear-gradient(90deg,#0b1a52aa,#060d28aa)}
.bar .ti{margin-right:auto}.bar h1{font-size:clamp(18px,2.2vw,26px)}.bar h1 em{font-style:normal;color:#5aa2ff}.bar p{margin:2px 0 0;color:var(--mut);font-size:14px}
.clock{text-align:right;line-height:1.2;padding-right:16px;border-right:1px solid #23408f}.clock b{font:600 22px var(--fh);display:block}.clock small{color:var(--mut)}
.usr{display:flex;align-items:center;gap:8px;color:var(--text)}.usr i{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#2f8cff,#7b5cff);display:grid;place-items:center;font:600 15px var(--fh);font-style:normal}
.content{padding:18px 24px;flex:1}
.banner{background:#4a1d28;color:#ffd7dc;padding:9px 24px;border-bottom:1px solid var(--red);font-size:14px}.banner[hidden]{display:none}
.badge{font:600 12px var(--fh);letter-spacing:.04em;padding:5px 12px;border-radius:999px;border:1px solid var(--line);color:var(--mut)}
.badge[data-s=online]{color:var(--grn);border-color:var(--grn);box-shadow:0 0 10px #2be39a44}
.badge[data-s=offline]{color:var(--red);border-color:var(--red)}
.badge[data-s=reconnecting],.badge[data-s=connecting]{color:var(--amb);border-color:var(--amb)}
/* ---- komponen ---- */
.btn{font:600 15px var(--f);padding:9px 18px;border-radius:8px;border:1px solid #2a4aa8;background:#122259;color:var(--text);cursor:pointer;text-decoration:none;display:inline-block;transition:box-shadow .15s}
.btn:hover{box-shadow:0 0 14px #2f8cff55}.btn:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.btn.go{background:linear-gradient(180deg,#14996a,#0e6f4d);border-color:var(--grn)}.btn.stop{background:linear-gradient(180deg,#b02a3b,#7c1b29);border-color:var(--red)}.btn.pri{background:linear-gradient(180deg,#2f8cff,#1f5fe0);border-color:#6fb0ff;color:#fff}
.panel{background:linear-gradient(160deg,#0f1f55dd,#09122f);border:1px solid #1f4fc4aa;border-radius:14px;padding:16px;box-shadow:inset 0 0 0 1px #0a1a4a,0 0 26px #1d5cff26}
.ph{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.ph h2{margin:0}
.live{font:600 13px var(--fh);padding:3px 12px;border-radius:999px;background:#0b3a2d;color:var(--grn);border:1px solid #1d7a5a}.live.off{background:#3a0f18;color:var(--red);border-color:#8a2434}
.lamp{display:inline-block;width:12px;height:12px;border-radius:50%;background:#26345f;vertical-align:middle}
.lamp.G{background:var(--grn);box-shadow:0 0 10px var(--grn)}.lamp.Y{background:var(--amb);box-shadow:0 0 10px var(--amb)}.lamp.R{background:var(--red);box-shadow:0 0 10px var(--red)}
.num{font-variant-numeric:tabular-nums}
@media(max-width:900px){.app{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;align-items:center;gap:10px;padding:10px;overflow-x:auto}
.logo{flex-direction:row;padding:0}.nav{display:flex}.sky,.sidestat{display:none}.nav a span{display:none}.nav a{padding:10px}.content{padding:14px}.bar{padding:12px 14px}.clock{display:none}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
