:root{--bg:#05060a;--grid:#0b0c14;--neon-cyan:#00f0ff;--neon-magenta:#ff2a6d;--neon-yellow:#f9f871;--text:#e2e8f0;--dim:#6b7280;--card:#0a0b18;--border:#171926;--glow-cyan:0 0 18px #00f0ff,0 0 40px #00f0ff40;--glow-magenta:0 0 18px #ff2a6d,0 0 40px #ff2a6d40;--glow-yellow:0 0 14px #f9f871,0 0 30px #f9f87155}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background-color:var(--bg);color:var(--text);font-family:"Courier New",Courier,monospace;min-height:100vh;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:42px 42px;background-position:center center;overflow-x:hidden}
body::after{content:"";position:fixed;inset:0;background:repeating-linear-gradient(0deg,rgba(0,240,255,0.035) 0px,rgba(0,240,255,0.035) 1px,transparent 1px,transparent 4px);pointer-events:none;z-index:0;animation:scanMove 8s linear infinite}
@keyframes scanMove{0%{background-position:0 0}100%{background-position:0 100vh}}
::-webkit-scrollbar{width:10px}
::-webkit-scrollbar-track{background:#0a0b18;border-left:1px solid #1a1d2e}
::-webkit-scrollbar-thumb{background:#0f172a;border:1px solid #00f0ff55}
::-webkit-scrollbar-thumb:hover{background:#00f0ff22}
.container{position:relative;z-index:1;max-width:1100px;margin:0 auto;padding:0 22px 70px}
.header{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:22px;border-bottom:1px dashed #2a2f3a;padding-bottom:10px;gap:16px}
.header h1{font-size:clamp(2rem,6vw,3.6rem);margin:0;letter-spacing:6px;text-transform:uppercase;color:var(--neon-cyan);text-shadow:var(--glow-cyan);animation:flicker 4.2s infinite;position:relative;display:inline-flex;align-items:flex-start;line-height:.75;margin-top:-10px}
.header h1::before,.header h1::after{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;opacity:.55}
.header h1::before{color:#00f0ff;z-index:-1;animation:glitchL 2.8s infinite linear alternate-reverse}
.header h1::after{color:#ff2a6d;z-index:-2;animation:glitchR 2.2s infinite linear alternate-reverse}
@keyframes glitchL{0%,100%{clip-path:inset(0 0 95% 0);transform:translate(-2px) skewX(0deg)}25%{clip-path:inset(20% 0 60% 0);transform:translate(2px,1px) skewX(-12deg)}50%{clip-path:inset(60% 0 10% 0);transform:translate(-1px,-2px) skewX(8deg)}75%{clip-path:inset(40% 0 30% 0);transform:translate(1px,1px) skewX(-6deg)}}
@keyframes glitchR{0%,100%{clip-path:inset(95% 0 0 0);transform:translate(2px) skewX(0deg)}25%{clip-path:inset(60% 0 20% 0);transform:translate(-2px) skewX(14deg)}50%{clip-path:inset(10% 0 60% 0);transform:translate(1px) skewX(-10deg)}75%{clip-path:inset(30% 0 40% 0);transform:translate(-1px) skewX(7deg)}}
.header .tagline{color:var(--neon-magenta);font-size:0.85rem;letter-spacing:4px;text-shadow:var(--glow-magenta);margin-top:2px}
.marquee{overflow:hidden;white-space:nowrap;margin-bottom:28px;color:var(--neon-yellow);font-size:.7rem;letter-spacing:3px;border-top:1px solid #1e2230;border-bottom:1px solid #1e2230;padding:8px 0}
.marquee > span{display:inline-block;padding-left:100%;animation:marquee 28s linear infinite}
@keyframes marquee{0%{transform:translate(0,0)}100%{transform:translate(-100%,0)}}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px}
.card{position:relative;background:linear-gradient(180deg,#0d0f1d,#0a0b18);border:1px solid var(--border);padding:22px;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;clip-path:polygon(0 10px,10px 0,calc(100% - 10px) 0,100% 10px,100% calc(100% - 10px),calc(100% - 10px) 100%,10px 100%,0 calc(100% - 10px))}
.card:hover{transform:translateY(-4px);border-color:var(--neon-cyan);box-shadow:var(--glow-cyan)}
.card::before{content:attr(data-label);position:absolute;top:-1px;left:14px;background:var(--bg);padding:0 8px;font-size:.6rem;color:var(--neon-magenta);letter-spacing:3px}
.card h2{margin:14px 0 8px;font-size:1.05rem;color:var(--neon-cyan);letter-spacing:2px;text-shadow:var(--glow-cyan)}
.card p{margin:0 0 16px;color:var(--dim);font-size:.78rem;line-height:1.55}
.card a{display:inline-block;color:var(--neon-yellow);text-decoration:none;border:1px solid var(--neon-yellow);padding:7px 12px;font-size:.72rem;letter-spacing:3px;text-transform:uppercase;transition:background .2s ease,color .2s ease}
.card a:hover{background:var(--neon-yellow);color:#000;box-shadow:var(--glow-yellow)}
.card .meta{font-size:.65rem;color:var(--dim);margin-top:8px;letter-spacing:2px;opacity:.7}
.footer{margin-top:68px;border-top:1px dashed #2a2f3a;padding-top:18px;text-align:center;font-size:.68rem;color:#4b5563;letter-spacing:2px}
.topnav{display:flex;justify-content:center;gap:18px;margin-bottom:28px;flex-wrap:wrap}
.topnav a{color:var(--neon-cyan);text-decoration:none;border:1px solid #1f2a38;padding:7px 14px;font-size:.75rem;letter-spacing:3px;text-transform:uppercase;transition:all .2s ease}
.topnav a:hover,.topnav a.active{border-color:var(--neon-cyan);box-shadow:var(--glow-cyan)}
.status-row{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-bottom:32px;font-size:.75rem;color:var(--dim);letter-spacing:2px}
.status-row span{color:var(--neon-yellow)}
.section{margin-top:60px}
.section h3{color:var(--neon-magenta);letter-spacing:3px;font-size:.9rem;text-shadow:var(--glow-magenta);border-bottom:1px dashed #252a38;padding-bottom:10px}
@keyframes flicker{0%,19%,21%,23%,25%,54%,56%,100%{opacity:1}20%,24%,55%{opacity:.35}}
.welcome{max-width:760px;margin:0 auto 36px;color:#cbd5e1;font-size:.85rem;line-height:1.75}
.welcome strong{color:var(--neon-cyan)}

/* Boot sequence overlay */
.boot-overlay{position:fixed;inset:0;background:#05060a;z-index:9999;display:flex;flex-direction:column;justify-content:center;padding:48px;font-size:.78rem;line-height:1.8;color:#00f0ff;text-shadow:0 0 8px #00f0ff44;transition:opacity .9s ease}
.boot-overlay.hidden{opacity:0;pointer-events:none}
.boot-overlay .skip{position:absolute;top:18px;right:22px;border:1px solid #1f2a38;padding:6px 12px;color:#6b7280;font-size:.7rem;letter-spacing:2px;cursor:pointer;background:transparent}
.boot-overlay .skip:hover{border-color:#00f0ff;color:#00f0ff;box-shadow:0 0 14px #00f0ff44}

/* First-visit loading overlay */
.first-visit-overlay{position:fixed;inset:0;background:#05060a;z-index:10000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;transition:opacity .8s ease}
.first-visit-overlay.hidden{opacity:0;pointer-events:none}
.neon-ring{width:90px;height:90px;border:4px solid #1f2a38;border-top-color:var(--neon-cyan);border-radius:50%;animation:spin 1s linear infinite,neonPulseRing 2s ease-in-out infinite}
@keyframes neonPulseRing{0%,100%{box-shadow:0 0 14px #00f0ff44,0 0 28px #00f0ff22}50%{box-shadow:0 0 22px #00f0ff88,0 0 50px #00f0ff44}}
.first-visit-overlay .label{color:var(--neon-cyan);font-size:.82rem;letter-spacing:3px;text-shadow:0 0 8px #00f0ff44}

/* Search bar */
.search-bar{max-width:720px;margin:0 auto 18px;display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.search-bar input{flex:1 1 220px;background:#0a0b18;border:1px solid #1f2a38;padding:10px 12px;color:#e2e8f0;font-family:"Courier New",Courier,monospace;font-size:.82rem;letter-spacing:2px;outline:none;transition:border-color .2s,box-shadow .2s;clip-path:polygon(0 8px,8px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px))}
.search-bar input:focus{border-color:var(--neon-cyan);box-shadow:var(--glow-cyan)}
.filter-tabs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:22px}
.filter-tab{padding:6px 12px;border:1px solid #1f2a38;color:#6b7280;font-size:.68rem;letter-spacing:2px;text-transform:uppercase;cursor:pointer;background:transparent;font-family:"Courier New",Courier,monospace;transition:all .2s ease}
.filter-tab:hover,.filter-tab.active{border-color:var(--neon-cyan);color:var(--neon-cyan);box-shadow:var(--glow-cyan)}

/* Terminal enhancements */
.terminal{background:#05060a;border:1px solid #171926;padding:14px 18px;max-height:190px;overflow-y:auto;font-family:"Courier New",Courier,monospace;font-size:.63rem;color:var(--neon-cyan);letter-spacing:1px;line-height:1.6;margin-bottom:22px}
.terminal .log-line{opacity:.9}
.terminal .log-line .ts{color:var(--dim);margin-right:8px}
.terminal .log-line .ok{color:#10b981}
.terminal .log-line .err{color:#ef4444}
.terminal .log-line .info{color:var(--neon-yellow)}
.terminal .cursor::after{content:"█";animation:blink 1s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
.card a.dead{border-color:#4b5563;color:#4b5563;cursor:not-allowed;pointer-events:none}

/* Neon loading ring */
.neon-loader{display:inline-block;width:36px;height:36px;border:3px solid #1f2a38;border-top-color:var(--neon-cyan);border-radius:50%;animation:spin 1s linear infinite,neonPulse 2s ease-in-out infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes neonPulse{0%,100%{box-shadow:0 0 10px #00f0ff44,0 0 22px #00f0ff22}50%{box-shadow:0 0 22px #00f0ff88,0 0 44px #00f0ff44}}

/* Ping bar in metrics */
.ping-bar{display:flex;gap:6px;flex-wrap:wrap}
.ping-pill{background:#0a0b18;border:1px solid #1f2a38;padding:5px 10px;font-size:.62rem;color:var(--dim);letter-spacing:1px;transition:all .2s}
.ping-pill .dot{width:8px;height:8px;border-radius:50%;background:#374151;display:inline-block;margin-right:8px;transition:background .4s,box-shadow .4s}
.ping-pill .dot.live{background:#10b981;box-shadow:0 0 8px #10b981}
.ping-pill .dot.dead{background:#ef4444;box-shadow:0 0 6px #ef444480}
.ping-pill .ms{color:var(--neon-cyan);margin-left:6px}

/* Topology canvas */
.topo-wrap{margin-bottom:22px;border:1px solid var(--border);background:#0a0b18;padding:12px;clip-path:polygon(0 8px,8px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px));flex:1;display:flex;flex-direction:column;min-height:0}
.topo-wrap canvas{display:block;width:100%;flex:1;min-height:0}
.topo-title{font-size:.62rem;color:var(--neon-magenta);letter-spacing:3px;margin-bottom:10px;text-shadow:var(--glow-magenta)}

/* Metrics graphs */
.metrics-graphs{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-bottom:24px}
.graph-card{border:1px solid var(--border);background:var(--card);padding:12px;clip-path:polygon(0 8px,8px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px))}
.graph-card .m-label{font-size:.6rem;color:var(--dim);letter-spacing:2px}
.graph-card canvas{display:block;width:100%;height:90px;margin-top:8px}

/* Weather widget */
.weather-card{border:1px solid var(--border);background:var(--card);padding:14px;clip-path:polygon(0 8px,8px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px));color:var(--dim);font-size:.7rem;letter-spacing:2px;display:inline-flex;align-items:center;gap:12px}
.weather-card .w-label{color:var(--neon-yellow);font-size:.6rem;letter-spacing:2px}
.weather-card .w-icon{font-size:1.4rem}

/* Responsive tweaks */
@media (max-width:640px){.container{padding:38px 14px 80px}.header h1{letter-spacing:3px}.grid{grid-template-columns:1fr}}

/* Status pills */
@keyframes pulse {
  0%,100% { opacity: 1; }
  50%      { opacity: .35; }
}

.status-bar {
  display: flex;
  justify-content: center;
  gap: 22px;
  flex-wrap: wrap;
  margin-bottom: 26px;
}

.status-pill {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--border);
  background: var(--card);
  padding: 8px 14px;
  font-size: .68rem;
  letter-spacing: 2px;
  color: var(--dim);
  clip-path: polygon(0 6px,6px 0,calc(100% - 6px) 0,100% 6px,100% calc(100% - 6px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 6px));
}

.status-pill .dot {
  width: 9px; height: 9px;
  border-radius: 50%;
  background: #374151;
  flex-shrink: 0;
  transition: background .4s, box-shadow .4s;
}

.status-pill .dot.live   { background: #10b981; box-shadow: 0 0 10px #10b981; animation: pulse 2s infinite; }
.status-pill .dot.dead   { background: #ef4444; box-shadow: 0 0 8px #ef444480; }
.status-pill .dot.pending{ background: var(--neon-yellow); box-shadow: 0 0 10px var(--neon-yellow); animation: pulse 1.4s infinite; }

.status-pill .label { color: var(--text); }
.status-pill .port  { color: var(--neon-cyan); }

/* Services tiles */
.mission-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 18px;
  margin-bottom: 32px;
}

.svc-card {
  position: relative;
  background: linear-gradient(180deg,#0d0f1d,#0a0b18);
  border: 1px solid var(--border);
  padding: 18px 20px 16px;
  clip-path: polygon(0 10px,10px 0,calc(100% - 10px) 0,100% 10px,100% calc(100% - 10px),calc(100% - 10px) 100%,10px 100%,0 calc(100% - 10px));
  transition: transform .2s, border-color .2s, box-shadow .2s;
}

.svc-card:hover {
  transform: translateY(-3px);
  border-color: var(--neon-cyan);
  box-shadow: var(--glow-cyan);
}

.svc-card::before {
  content: attr(data-label);
  position: absolute; top: -1px; left: 14px;
  background: var(--bg); padding: 0 8px;
  font-size: .58rem; letter-spacing: 3px;
  color: var(--neon-magenta);
}

.svc-card h2 {
  margin: 10px 0 6px;
  font-size: .95rem;
  color: var(--neon-cyan);
  letter-spacing: 2px;
  text-shadow: var(--glow-cyan);
}

.svc-card p {
  margin: 0 0 12px;
  color: var(--dim);
  font-size: .73rem;
  line-height: 1.5;
}

.svc-card a {
  display: inline-block;
  color: var(--neon-yellow);
  text-decoration: none;
  border: 1px solid var(--neon-yellow);
  padding: 6px 12px;
  font-size: .68rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  transition: background .2s, color .2s;
}

.svc-card a:hover {
  background: var(--neon-yellow);
  color: #000;
  box-shadow: var(--glow-yellow);
}

.svc-card a.dead {
  border-color: #4b5563;
  color: #4b5563;
  cursor: not-allowed;
  pointer-events: none;
}

.svc-card .meta {
  margin-top: 10px;
  font-size: .6rem;
  color: var(--dim);
  letter-spacing: 2px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.svc-card .status-tag {
  font-size: .6rem;
  padding: 2px 8px;
  letter-spacing: 2px;
  border: 1px solid currentColor;
}

.svc-card .status-tag.online  { color: #10b981; border-color: #10b981; }
.svc-card .status-tag.offline { color: #ef4444; border-color: #ef444480; }
.svc-card .status-tag.pending { color: var(--neon-yellow); border-color: var(--neon-yellow); }

/* Quick metrics */
.metrix {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 14px;
  margin-bottom: 24px;
}

.metric-card {
  border: 1px solid var(--border);
  background: var(--card);
  padding: 14px;
  clip-path: polygon(0 8px,8px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px));
}

.metric-card .m-label { font-size: .6rem; color: var(--dim); letter-spacing: 2px; }
.metric-card .m-val   { font-size: 1.2rem; color: var(--neon-cyan); text-shadow: var(--glow-cyan); margin-top: 6px; }
.metric-card .m-sub   { font-size: .58rem; color: var(--dim); letter-spacing: 2px; margin-top: 4px; }

/* Top row layout */
.top-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
}
.top-row .section {
  display: flex;
  flex-direction: column;
  margin-top: 0;
}

@media (max-width: 860px) {
  .top-row {
    grid-template-columns: 1fr;
  }
}
