/* ============================================================
   Aiyo Dark Theme — shared design system
   Include via: <link rel="stylesheet" href="/dark-theme.css">
   Companion JS: dark-opbar.js
   ============================================================ */

:root {
  --bg: #0A0E1A;
  --surface: #141926;
  --surface-mute: #0F1420;
  --border: #1F2937;
  --border-hi: #2A3548;
  --text: #F1F5F9;
  --text-2: #94A3B8;
  --text-3: #64748B;
  --teal: #14B5B3;
  --teal-glow: rgba(20, 181, 179, 0.35);
  --ok: #22D3B7;
  --warn: #F5A524;
  --down: #EF4444;
  --grid: rgba(148, 163, 184, 0.06);
}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body.dark {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size: 17px;
  line-height: 1.6;
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  background-image: radial-gradient(var(--grid) 1px, transparent 1px);
  background-size: 24px 24px;
  background-attachment: fixed;
}
body.dark a { color: var(--teal); text-decoration: none; transition: color 0.15s; }
body.dark a:hover { color: #38E5D9; text-decoration: underline; }

.container { max-width: 1040px; margin: 0 auto; position: relative; z-index: 1; }

/* ------------------------------------------------------------
   Operational status bar
   ------------------------------------------------------------ */
.opbar {
  background: rgba(10, 14, 26, 0.85);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
  color: var(--text-2);
  font-family: 'JetBrains Mono', 'Menlo', monospace;
  font-size: 0.78rem;
  letter-spacing: 0.02em;
  padding: 9px 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  position: sticky;
  top: 0;
  z-index: 50;
  transition: color 0.2s;
}
.opbar:hover { color: var(--text); }
.opbar a { color: inherit; text-decoration: none; display: flex; align-items: center; gap: 14px; }
.opbar a:hover { text-decoration: none; }
.opbar .sep { color: var(--text-3); opacity: 0.5; }
.opbar .state-word { font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; font-size: 0.72rem; }
.opbar .state-word.ok { color: var(--ok); text-shadow: 0 0 8px rgba(34, 211, 183, 0.4); }
.opbar .state-word.warn { color: var(--warn); text-shadow: 0 0 8px rgba(245, 165, 36, 0.4); }
.opbar .state-word.down { color: var(--down); text-shadow: 0 0 8px rgba(239, 68, 68, 0.4); }
.opbar .op-detail { color: var(--text-2); }
.opbar .op-checked { color: var(--text-3); font-size: 0.72rem; }
.opbar-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--text-3);
  flex: none;
  position: relative;
}
.opbar-dot.ok {
  background: var(--ok);
  box-shadow: 0 0 0 0 rgba(34, 211, 183, 0.7);
  animation: opbar-pulse 2.4s infinite;
}
.opbar-dot.warn { background: var(--warn); }
.opbar-dot.down { background: var(--down); }
@keyframes opbar-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(34, 211, 183, 0.55); }
  70%  { box-shadow: 0 0 0 8px rgba(34, 211, 183, 0); }
  100% { box-shadow: 0 0 0 0 rgba(34, 211, 183, 0); }
}
@media (max-width: 640px) { .opbar .op-detail { display: none; } }

/* ------------------------------------------------------------
   Logo glow (CSS-only, SVG untouched)
   ------------------------------------------------------------ */
.mark-glow {
  filter: drop-shadow(0 0 6px rgba(20, 181, 179, 0.35))
          drop-shadow(0 0 14px rgba(20, 181, 179, 0.15));
  transition: filter 0.25s;
}
.mark-glow:hover {
  filter: drop-shadow(0 0 10px rgba(20, 181, 179, 0.55))
          drop-shadow(0 0 22px rgba(20, 181, 179, 0.25));
}

/* ------------------------------------------------------------
   Shared header / nav / footer
   ------------------------------------------------------------ */
body.dark .nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: 56px; }
body.dark .nav .mark { height: 36px; width: auto; display: block; }
body.dark .nav-links { display: flex; gap: 30px; align-items: center; }
body.dark .nav-links a {
  color: var(--text-2); font-size: 0.92rem; font-weight: 500;
  text-decoration: none; transition: color 0.15s;
}
body.dark .nav-links a:hover { color: var(--text); text-decoration: none; }
body.dark .nav-links a.here, body.dark .nav-links a.active { color: var(--text); }
body.dark .nav-cta {
  padding: 8px 18px;
  background: rgba(20, 181, 179, 0.08);
  border: 1px solid rgba(20, 181, 179, 0.28);
  border-radius: 6px;
  color: var(--teal) !important;
  transition: all 0.15s;
}
body.dark .nav-cta:hover {
  background: rgba(20, 181, 179, 0.16);
  border-color: rgba(20, 181, 179, 0.5);
  box-shadow: 0 0 20px rgba(20, 181, 179, 0.2);
  color: var(--text) !important;
}

body.dark .eyebrow {
  font-family: 'JetBrains Mono', 'Menlo', monospace;
  font-size: 0.75rem; font-weight: 500;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--teal); margin-bottom: 14px;
}

body.dark .footer, body.dark footer {
  padding: 40px 24px;
  background: var(--bg);
  border-top: 1px solid var(--border);
}
body.dark .footer-row, body.dark footer .container {
  display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 24px;
}
body.dark .footer .mark, body.dark footer .mark { height: 22px; width: auto; opacity: 0.9; }
body.dark .footer .meta, body.dark footer .meta { font-size: 0.82rem; color: var(--text-3); }
body.dark .footer .meta a, body.dark footer .meta a { color: var(--text-2); margin-right: 18px; font-weight: 500; }
body.dark .footer .meta a:hover, body.dark footer .meta a:hover { color: var(--teal); text-decoration: none; }

@media (max-width: 820px) {
  body.dark .nav-links a:not(.nav-cta) { display: none; }
}
