:root{
  /* ── Dark holo palette ── */
  --bg:         #05090F;
  --bg-2:       #0A1525;
  --bg-3:       #0F1E35;
  /* legacy aliases kept so RSM & any old refs still compile */
  --navy:       #101C3D;
  --navy-2:     #1E3A5F;
  --navy-3:     #2A4F7A;
  --red:        #A4162C;
  --red-dark:   #7B1021;
  --paper:      #05090F;
  --panel:      #0F1E35;
  --blue:       #3B8BD5;
  --blue-dim:   rgba(59,139,213,.18);
  --blue-glow:  rgba(59,139,213,.35);
  --text:       #C8D8EC;
  --text-soft:  #4E6A8A;
  --ink:        #C8D8EC;
  --ink-soft:   #4E6A8A;
  --line:       #1A2F4A;
  --line-strong:#2A4F7A;
  --tan:        #4E6A8A;
}

/* ── Keyframes ── */
@keyframes holo-pulse{
  0%,100%{ box-shadow:0 0 8px rgba(59,139,213,.25), 0 0 0 1px rgba(59,139,213,.15); }
  50%     { box-shadow:0 0 20px rgba(59,139,213,.55), 0 0 0 1px rgba(59,139,213,.4); }
}
@keyframes fade-up{
  from{ opacity:0; transform:translateY(10px); }
  to  { opacity:1; transform:translateY(0); }
}
@keyframes dot-pulse{
  0%,100%{ transform:scale(1);   opacity:1; }
  50%     { transform:scale(1.4); opacity:.7; }
}
@keyframes radar-sweep{
  from{ transform:rotate(0deg); }
  to  { transform:rotate(360deg); }
}
@keyframes scroll-left{
  from{ transform:translateX(0); }
  to  { transform:translateX(-50%); }
}
@keyframes logo-pulse{
  0%,100%{
    opacity:.8;
    filter:drop-shadow(0 0 6px rgba(59,139,213,.7)) drop-shadow(0 0 14px rgba(59,139,213,.25));
  }
  50%{
    opacity:1;
    filter:drop-shadow(0 0 10px rgba(59,139,213,.9)) drop-shadow(0 0 22px rgba(59,139,213,.45));
  }
}
@keyframes holo-scan{
  0%,42%,58%,100%{ color:var(--text); text-shadow:none; }
  50%{ color:#E8F6FF; text-shadow:0 0 10px rgba(59,139,213,1),0 0 24px rgba(59,139,213,.55); }
}

/* ── Reset ── */
*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  background:var(--bg);
  color:var(--text);
  -webkit-font-smoothing:antialiased;
}

/* Global CRT scanline overlay */
body::before{
  content:'';
  position:fixed; inset:0; z-index:9999; pointer-events:none;
  background:repeating-linear-gradient(
    0deg,
    transparent,
    transparent 3px,
    rgba(0,0,0,.06) 3px,
    rgba(0,0,0,.06) 4px
  );
}
a{ color:var(--blue); }
.serif{ font-family:Georgia,"Times New Roman",serif; }

/* Custom accent font — decorative only */
@font-face{
  font-family:"DPSDbeyond";
  src:url("/DPSDbeyond.otf") format("opentype");
  font-weight:normal;
  font-style:normal;
  font-display:swap;
}

/* Terminal mono — applied broadly for consistent code-terminal feel */
h1,h2,h3{
  font-family:monospace;
  letter-spacing:.03em;
}

/* Accent class — DPSDbeyond for badges, codes, short decorative labels */
.accent{ font-family:"DPSDbeyond",monospace; letter-spacing:.06em; }

/* ── Topbar ── */
#topbar{
  position:sticky; top:0; z-index:50;
  background:var(--bg); color:#fff;
  display:flex; align-items:center; gap:14px;
  padding:0 24px; height:64px;
  border-bottom:2px solid var(--red);
  box-shadow:0 1px 24px rgba(0,0,0,.6);
}
#topbar .brand{ display:flex; align-items:center; gap:12px; text-decoration:none; color:#fff; }
  #topbar .brand img{
    height:34px; width:auto; display:block;
    animation:logo-pulse 8s ease-in-out infinite;
  }
  #topbar .brand b{
    font-size:13px; letter-spacing:.07em; color:var(--text);
    font-family:monospace; text-transform:uppercase;
    animation:holo-scan 6s ease-in-out infinite;
  }
#topbar nav{ margin-left:auto; display:flex; gap:22px; align-items:center; }
  #topbar nav a{
    color:var(--text-soft); text-decoration:none; font-size:12.5px;
    font-weight:600; letter-spacing:.06em; margin-left:22px;
    font-family:monospace; text-transform:uppercase;
    transition:color .15s ease;
  }
#topbar nav a:first-child{ margin-left:0; }
#topbar nav a:hover{ color:var(--text); }
#topbar nav a.cta{
  color:#fff; background:var(--red); padding:8px 16px; border-radius:7px;
  transition:background .15s ease, box-shadow .15s ease;
}
#topbar nav a.cta:hover{
  background:var(--red-dark);
  box-shadow:0 0 14px rgba(164,22,44,.5);
}

/* ── Buttons ── */
.btn{
  display:inline-block; padding:11px 22px; border-radius:8px; text-decoration:none;
  font-weight:700; font-size:14.5px; border:1px solid transparent; cursor:pointer;
  font-family:monospace; letter-spacing:.06em; text-transform:uppercase;
  transition:background .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.btn-primary{
  background:var(--red); color:#fff;
}
.btn-primary:hover{
  background:var(--red-dark);
  box-shadow:0 0 18px rgba(164,22,44,.5);
}
.btn-ghost{
  background:transparent; color:var(--text);
  border-color:var(--blue);
}
.btn-ghost:hover{
  border-color:var(--text);
  box-shadow:0 0 14px var(--blue-dim);
  color:#fff;
}

/* ── Cards ── */
.card{
  background:var(--bg-3);
  border:1px solid var(--line);
  border-radius:12px;
  transition:border-color .2s ease, box-shadow .2s ease;
}
a.card:hover, button.card:hover{
  border-color:var(--blue);
  box-shadow:0 0 18px var(--blue-dim);
}

@keyframes spin{
  to{ transform:rotate(360deg); }
}
.spin{
  display:inline-block;
  border:2px solid rgba(200,216,236,.25);
  border-top-color:var(--blue);
  border-radius:50%;
  animation:spin .7s linear infinite;
  flex:none;
}
.btn.busy, .btn:disabled{
  opacity:.75;
  cursor:wait;
}
.btn.busy{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
}
.signout-btn.busy{
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.page-loading{
  min-height:50vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:16px;
  color:var(--text-soft);
  font-family:monospace;
  letter-spacing:.12em;
  font-size:12px;
}
