@font-face {
  font-family: "Orbitron";
  src: url("../assets/fonts/orbitron/orbitron-v35-latin-800.woff2") format("woff2");
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Chakra Petch";
  src: url("../assets/fonts/chakra-petch/chakra-petch-v13-latin-600.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Chakra Petch";
  src: url("../assets/fonts/chakra-petch/chakra-petch-v13-latin-700.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

:root {
  color-scheme: dark;
  --bg: #000000;
  --accent: #00ff8c;
  --accent-soft: rgba(0, 255, 140, 0.25);
  --text: #f5fff6;
  --muted: rgba(240, 255, 245, 0.65);
  --scoreboard-green: #00ff41;
  --scoreboard-green-soft: rgba(0, 255, 97, 0.18);
  --scoreboard-green-glow: rgba(0, 255, 150, 0.35);
  --matte-panel: rgba(5, 5, 5, 0.92);
  --panel-outline: rgba(255, 255, 255, 0.08);
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html,
body {
  height: 100%;
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: "Orbitron", system-ui, sans-serif;
  min-height: 100vh;
  overflow-x: hidden;
  cursor: crosshair;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

body::selection {
  background: var(--accent);
  color: #000;
}

#vanta-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
}

main,
nav,
section {
  position: relative;
  z-index: 2;
}

.site-nav {
  position: fixed;
  inset: 0 auto auto 0;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.2rem 2.5rem;
  z-index: 3;
  background: rgba(5, 5, 5, 0.96);
  border-bottom: 1px solid rgba(0, 255, 140, 0.18);
  letter-spacing: 0.24em;
  font-size: 1rem;
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.6);
}

.logo {
  display: inline-flex;
  align-items: center;
  gap: 1.25rem;
  flex-wrap: wrap;
  font-family: "Chakra Petch", "Orbitron", sans-serif;
  font-size: 1.15rem;
  color: var(--text);
  letter-spacing: 0.55em;
  -webkit-text-stroke: 1.2px rgba(255, 255, 255, 0.7);
}

.logo a {
  color: inherit;
  text-decoration: none;
}

.nav-admin-link {
  font-size: 0.62rem;
  letter-spacing: 0.35rem;
  padding: 0.35rem 0.9rem;
  border-radius: 999px;
  border: 1px solid rgba(0, 255, 160, 0.45);
  background: rgba(0, 0, 0, 0.4);
  color: #caffec;
  text-transform: uppercase;
  box-shadow:
    0 0 18px rgba(0, 255, 153, 0.18),
    inset 0 0 18px rgba(0, 255, 140, 0.1);
  transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
}

.nav-admin-link:hover,
.nav-admin-link:focus-visible {
  border-color: rgba(255, 255, 255, 0.75);
  box-shadow:
    0 0 25px rgba(0, 255, 200, 0.4),
    inset 0 0 25px rgba(0, 255, 200, 0.2);
  transform: translateY(-1px);
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  flex-wrap: wrap;
}

.nav-notification {
  display: inline-flex;
  align-items: center;
  gap: 0.65rem;
  padding: 0.45rem 1.1rem;
  border-radius: 999px;
  border: 1px solid rgba(0, 255, 140, 0.35);
  background:
    linear-gradient(135deg, rgba(0, 12, 6, 0.95), rgba(0, 40, 22, 0.8));
  box-shadow:
    0 0 22px rgba(0, 255, 160, 0.2),
    inset 0 0 18px rgba(0, 255, 140, 0.08);
  letter-spacing: 0.32rem;
  font-size: 0.68rem;
  text-transform: uppercase;
  color: rgba(229, 255, 240, 0.95);
  position: relative;
  overflow: visible;
  cursor: pointer;
}

.nav-notification-label {
  color: rgba(0, 255, 153, 0.85);
}

.nav-notification-status {
  font-weight: 600;
  color: #ffffff;
  text-shadow: 0 0 10px rgba(0, 255, 210, 0.55);
}

.nav-notification-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #65ffb1;
  box-shadow: 0 0 15px rgba(101, 255, 177, 0.9);
  animation: navBeacon 2.6s ease-in-out infinite;
}

.nav-notification::after {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: 999px;
  border: 1px solid rgba(0, 255, 180, 0.25);
  opacity: 0;
  animation: navNotificationGlow 3.2s ease-in-out infinite;
}

.nav-notification-popover {
  position: absolute;
  top: calc(100% + 0.65rem);
  right: 0;
  width: min(320px, 80vw);
  border-radius: 18px;
  border: 1px solid rgba(0, 255, 153, 0.35);
  background:
    linear-gradient(145deg, rgba(0, 6, 3, 0.98), rgba(0, 28, 17, 0.94));
  box-shadow: 0 25px 55px rgba(0, 0, 0, 0.75);
  padding: 0.95rem;
  opacity: 0;
  transform: translateY(-8px);
  pointer-events: none;
  transition: opacity 200ms ease, transform 200ms ease;
  z-index: 10;
}

.nav-notification.is-open .nav-notification-popover {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.nav-notification-heading {
  font-size: 0.62rem;
  letter-spacing: 0.4rem;
  color: rgba(0, 255, 190, 0.9);
  text-transform: uppercase;
  margin-bottom: 0.6rem;
}

.nav-notification-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  max-height: 240px;
  overflow-y: auto;
}

.nav-notification-item {
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 12px;
  padding: 0.55rem 0.7rem;
  background: rgba(0, 0, 0, 0.55);
  letter-spacing: 0.15rem;
}

.nav-notification-item[data-variant='danger'] {
  border-color: rgba(255, 90, 110, 0.45);
  background: rgba(45, 0, 5, 0.6);
  color: #ffced5;
}

.nav-notification-item[data-variant='success'] {
  border-color: rgba(0, 255, 180, 0.45);
  background: rgba(0, 30, 20, 0.65);
}

.nav-notification-item-message {
  font-size: 0.7rem;
  margin-bottom: 0.25rem;
  text-transform: uppercase;
}

.nav-notification-item-meta {
  font-size: 0.6rem;
  letter-spacing: 0.35rem;
  color: rgba(220, 255, 237, 0.75);
}

.nav-notification-empty {
  text-transform: uppercase;
  letter-spacing: 0.3rem;
  font-size: 0.58rem;
  color: rgba(255, 255, 255, 0.55);
}

.nav-links a,
.ctf-nav-link {
  color: #ffffff;
  text-decoration: none;
  transition: color 150ms ease;
  font-size: 0.95rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  background: transparent;
  border: none;
  cursor: pointer;
  font-family: "Orbitron", system-ui, sans-serif;
}

@keyframes navBeacon {
  0% {
    transform: scale(0.8);
    opacity: 0.4;
  }
  50% {
    transform: scale(1.25);
    opacity: 1;
  }
  100% {
    transform: scale(0.8);
    opacity: 0.35;
  }
}

@keyframes navNotificationGlow {
  0% {
    opacity: 0;
    transform: scale(0.9);
  }
  60% {
    opacity: 0.4;
  }
  100% {
    opacity: 0;
    transform: scale(1.1);
  }
}

.nav-links a:hover,
.nav-links a:focus-visible,
.ctf-nav-link:hover,
.ctf-nav-link:focus-visible {
  color: var(--accent);
}

.ctf-nav .nav-links {
  gap: 1rem;
}

.ctf-broadcast[hidden] {
  display: none;
}

.ctf-broadcast {
  width: min(960px, 92vw);
  margin: 1.25rem auto 0;
  padding: 1rem 1.5rem;
  border-radius: 20px;
  border: 1px solid rgba(0, 255, 140, 0.25);
  background:
    linear-gradient(135deg, rgba(0, 0, 0, 0.92), rgba(0, 28, 16, 0.85));
  box-shadow: 0 25px 60px rgba(0, 0, 0, 0.55);
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.ctf-broadcast[data-variant='success'] {
  border-color: rgba(141, 255, 193, 0.6);
  box-shadow: 0 25px 70px rgba(97, 255, 185, 0.25);
}

.ctf-broadcast[data-variant='warning'] {
  border-color: rgba(255, 220, 141, 0.6);
  box-shadow: 0 25px 70px rgba(255, 206, 120, 0.25);
}

.ctf-broadcast[data-variant='danger'] {
  border-color: rgba(255, 120, 120, 0.6);
  box-shadow: 0 25px 70px rgba(255, 102, 102, 0.3);
}

.ctf-broadcast-label {
  font-size: 0.75rem;
  letter-spacing: 0.45rem;
  text-transform: uppercase;
  color: rgba(140, 255, 193, 0.8);
  display: inline-flex;
  gap: 0.75rem;
}

.ctf-broadcast[data-variant='warning'] .ctf-broadcast-label {
  color: rgba(255, 220, 160, 0.85);
}

.ctf-broadcast[data-variant='danger'] .ctf-broadcast-label {
  color: rgba(255, 170, 170, 0.9);
}

.ctf-broadcast-message {
  font-size: 0.95rem;
  letter-spacing: 0.18rem;
  text-transform: uppercase;
  color: #f2fff8;
}

.ctf-broadcast-updated {
  font-size: 0.7rem;
  letter-spacing: 0.2rem;
  color: rgba(255, 255, 255, 0.5);
  text-transform: uppercase;
}

.hero {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 8rem 1.5rem 3rem;
}

.hero h1 {
  font-size: clamp(4.5rem, 18vw, 14rem);
  letter-spacing: 1.2rem;
  color: #ffffff;
  position: relative;
  mix-blend-mode: screen;
  padding: 0 1rem;
  font-family: "Chakra Petch", "Orbitron", sans-serif;
}

.single-line-title {
  letter-spacing: 1rem;
  white-space: nowrap;
}

.hero h1 .text {
  display: inline-block;
  position: relative;
  letter-spacing: 1.2rem;
  text-shadow: 0 8px 25px rgba(0, 0, 0, 0.8);
  -webkit-text-stroke: 1.2px rgba(255, 255, 255, 0.7);
}

.hero h1 .fragment {
  position: absolute;
  inset: 0;
  color: rgba(255, 255, 255, 0.2);
  mix-blend-mode: screen;
  opacity: 0.5;
  filter: blur(0.75px);
  clip-path: inset(0 0 0 0);
  -webkit-text-stroke: 1.3px rgba(255, 255, 255, 0.85);
}

.hero h1 .fragment-a {
  animation: glitchSweepA 6.2s ease-in-out infinite;
}

.hero h1 .fragment-b {
  opacity: 0.34;
  filter: blur(0.8px);
  animation: glitchSweepB 6.8s ease-in-out infinite;
  animation-delay: 0.6s;
}

.hero h1 .fragment-c {
  opacity: 0.28;
  filter: blur(0.95px);
  animation: glitchSweepC 7.4s ease-in-out infinite;
  animation-delay: 1s;
}

.smoke-field {
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  height: 280px;
  pointer-events: none;
  transform: translateY(-50%);
  --smoke-lean: 0;
}

.smoke-field span {
  position: absolute;
  width: 180px;
  height: 180px;
  border-radius: 50%;
  top: 70px;
  left: calc(50% + var(--x, 0px));
  background: radial-gradient(circle, rgba(255, 255, 255, 0.35) 0%, rgba(200, 200, 200, 0.18) 45%, rgba(0, 0, 0, 0) 78%);
  filter: blur(28px);
  opacity: 0;
  transform: translateX(-50%) scale(var(--scale, 1));
  animation: smokeRise 6s ease-out infinite;
  animation-play-state: paused;
}

.letter-smoke[data-letter="H"] {
  --x: -360px;
  --scale: 0.8;
  --drift: -12px;
  animation-duration: 5.4s;
  animation-delay: 0.1s;
}

.letter-smoke[data-letter="E"] {
  --x: -240px;
  --scale: 0.85;
  --drift: -6px;
  animation-duration: 5.8s;
  animation-delay: 0.4s;
}

.letter-smoke[data-letter="X"] {
  --x: -120px;
  --scale: 0.9;
  --drift: -2px;
  animation-duration: 6.1s;
  animation-delay: 0.8s;
}

.letter-smoke[data-letter="C"] {
  --x: -10px;
  --scale: 0.95;
  --drift: 1px;
  animation-duration: 6.4s;
  animation-delay: 1.2s;
}

.letter-smoke[data-letter="O"] {
  --x: 90px;
  --scale: 1;
  --drift: 3px;
  animation-duration: 5.9s;
  animation-delay: 1.6s;
}

.letter-smoke[data-letter="R"] {
  --x: 190px;
  --scale: 1.05;
  --drift: 8px;
  animation-duration: 5.6s;
  animation-delay: 2s;
}

.letter-smoke[data-letter="P"] {
  --x: 340px;
  --scale: 1.1;
  --drift: 12px;
  animation-duration: 5.2s;
  animation-delay: 2.4s;
}

body.smoke-ready .smoke-field span {
  animation-play-state: running;
}

.auth-wrapper {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8rem 1.5rem 4rem;
}

.auth-card {
  width: min(560px, 100%);
  padding: 3rem 2rem;
  border: 1px solid rgba(0, 255, 90, 0.25);
  border-radius: 24px;
  background: rgba(0, 0, 0, 0.75);
  box-shadow: 0 25px 60px rgba(0, 0, 0, 0.55);
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.card-eyebrow {
  letter-spacing: 0.55rem;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.6);
}

.card-subtitle {
  font-size: 1rem;
  letter-spacing: 0.3rem;
  color: var(--muted);
}

.card-footnote {
  font-size: 0.85rem;
  letter-spacing: 0.25rem;
  color: rgba(255, 255, 255, 0.75);
}

.card-footnote a {
  color: var(--accent);
  text-decoration: none;
}

.card-message {
  min-height: 1.5rem;
  font-size: 0.9rem;
  letter-spacing: 0.25rem;
  color: rgba(255, 255, 255, 0.7);
}

.card-message[data-variant="error"] {
  color: #ff5a5a;
}

.card-message[data-variant="success"] {
  color: var(--accent);
}

.card-message[data-variant="info"] {
  color: rgba(255, 255, 255, 0.85);
}

.auth-form {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  text-align: left;
}

.auth-form label {
  letter-spacing: 0.35rem;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.75);
}

.auth-form input {
  width: 100%;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  background: rgba(0, 0, 0, 0.65);
  color: #fff;
  font-size: 1rem;
  letter-spacing: 0.1rem;
}

.auth-form input:focus-visible {
  outline: 2px solid var(--accent);
  border-color: var(--accent);
}

button,
a.buttonlike {
  font-family: "Orbitron", system-ui, sans-serif;
  letter-spacing: 0.4rem;
  text-transform: uppercase;
  border-radius: 999px;
  padding: 0.95rem 1.75rem;
  border: 1px solid rgba(0, 255, 90, 0.4);
  background: rgba(0, 255, 90, 0.08);
  color: var(--accent);
  cursor: pointer;
  transition: transform 120ms ease, box-shadow 120ms ease;
}

button:hover,
button:focus-visible,
a.buttonlike:hover,
a.buttonlike:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 10px 30px rgba(0, 255, 90, 0.25);
}

.accent-btn {
  background: var(--accent);
  color: #000;
  border-color: var(--accent);
}


.terminal-page {
  overflow: hidden;
}

#ctf-terminal {
  position: relative;
  min-height: 100vh;
}

.terminal-layout {
  min-height: 100vh;
  padding: 6rem 1.5rem 3rem;
  display: flex;
  align-items: center;
  justify-content: center;
}

.terminal-shell {
  width: min(960px, calc(100% - 1.5rem));
  height: min(820px, calc(100vh - 1.5rem));
  min-height: 700px;
  border-radius: 0;
  padding: 0.65rem;
  position: relative;
  display: flex;
  flex-direction: column;
  backdrop-filter: blur(10px);
  background: #040404;
  box-shadow:
    0 25px 60px rgba(0, 0, 0, 0.85),
    inset 0 0 45px rgba(0, 255, 90, 0.12);
  overflow: hidden;
  font-family: "Chakra Petch", "Orbitron", sans-serif;
  transition: transform 400ms ease, padding-bottom 400ms ease;
}

.terminal-shell--collapsed {
  transform: translateY(-30px);
  padding-bottom: 0;
}

.terminal-shell p,
.terminal-shell span,
.terminal-shell h1,
.terminal-shell code,
.terminal-cli input {
  font-family: "Chakra Petch", "Orbitron", sans-serif;
}

.terminal-shell::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 0;
  border: 1px solid rgba(0, 255, 90, 0.4);
  pointer-events: none;
}

.terminal-shell::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 0;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0.65) 100%);
  pointer-events: none;
}

.terminal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1.5rem;
  border-bottom: 1px solid rgba(0, 255, 90, 0.25);
  letter-spacing: 0.35rem;
  font-size: 0.75rem;
}

.terminal-header--single {
  justify-content: center;
}

.terminal-title-glitch {
  position: relative;
  font-weight: 700;
  letter-spacing: 0.55rem;
  font-size: 1rem;
  text-transform: uppercase;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-width: 0;
}

.terminal-title-glitch .text,
.terminal-title-glitch .fragment {
  display: inline-block;
  color: #ffffff;
}

.terminal-title-glitch .text {
  position: relative;
  -webkit-text-stroke: 1px rgba(255, 255, 255, 0.6);
}

.terminal-title-glitch .fragment {
  position: absolute;
  inset: 0;
  color: rgba(255, 255, 255, 0.4);
  mix-blend-mode: screen;
  opacity: 0.5;
  filter: blur(0.5px);
  clip-path: inset(0 0 0 0);
  -webkit-text-stroke: 1px rgba(255, 255, 255, 0.6);
}

.terminal-title-glitch .fragment.fragment-a {
  animation: glitchSweepA 5.5s ease-in-out infinite;
}

.terminal-title-glitch .fragment.fragment-b {
  animation: glitchSweepB 6.1s ease-in-out infinite;
  animation-delay: 0.3s;
}

.terminal-title-glitch .fragment.fragment-c {
  animation: glitchSweepC 6.6s ease-in-out infinite;
  animation-delay: 0.6s;
}

.terminal-lights {
  display: flex;
  gap: 0.4rem;
}

.terminal-lights .dot {
  width: 0.75rem;
  height: 0.75rem;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.3);
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.4) inset;
}

.dot-red {
  background: #ff5a5a;
}

.dot-yellow {
  background: #f5c542;
}

.dot-green {
  background: #00ff5a;
}

.terminal-status {
  font-size: 0.65rem;
  letter-spacing: 0.4rem;
  border-radius: 999px;
  padding: 0.2rem 0.9rem;
  border: 1px solid rgba(255, 255, 255, 0.35);
}

.terminal-status.live {
  border-color: var(--accent);
  color: var(--accent);
}

.terminal-screen {
  position: relative;
  z-index: 1;
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 1.5rem 1.8rem 1.8rem;
  gap: 1.25rem;
  min-height: 0;
}

.terminal-log {
  flex: 1;
  background: rgba(0, 0, 0, 0.92);
  border-radius: 0;
  padding: 1.25rem 1.1rem;
  overflow-y: auto;
  font-family: "Chakra Petch", "Orbitron", monospace;
  font-size: 0.92rem;
  letter-spacing: 0.22rem;
  border: 1px solid rgba(0, 255, 90, 0.2);
  box-shadow:
    inset 0 0 35px rgba(0, 255, 90, 0.08),
    inset 0 0 0 1px rgba(0, 0, 0, 0.6);
  position: relative;
  min-height: 0;
}

.terminal-log::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 0;
  background: repeating-linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 0,
    rgba(0, 0, 0, 0) 6px,
    rgba(0, 255, 90, 0.04) 7px
  );
  pointer-events: none;
  opacity: 0.7;
}

.terminal-log code {
  color: var(--accent);
}

.terminal-line {
  margin-bottom: 0.35rem;
  color: #00ff41;
  text-shadow: 0 0 6px rgba(0, 255, 90, 0.4);
  white-space: normal;
  word-break: break-word;
  position: relative;
  overflow: visible;
}

.terminal-line--spacer {
  color: transparent;
  text-shadow: none;
  pointer-events: none;
  margin-bottom: 0.9rem;
  line-height: 0.9rem;
  user-select: none;
}

.terminal-footer {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  overflow: hidden;
  max-height: 260px;
  opacity: 1;
  transition: max-height 450ms ease, opacity 350ms ease;
}

.terminal-footer--collapsed {
  max-height: 0;
  opacity: 0;
}

.terminal-line-input {
  color: rgba(255, 255, 255, 0.9);
}

.terminal-line-error {
  color: #ff5a5a;
}

.terminal-line-success {
  color: #00ff41;
}

.terminal-line-system {
  color: #00ff41;
  text-shadow: 0 0 12px rgba(0, 255, 65, 0.55);
}

.terminal-line-matrix {
  color: #00ff5a;
  opacity: 0.9;
  font-family: "Chakra Petch", monospace;
  animation: matrixTrail 0.8s linear infinite alternate;
}

.terminal-line-h3x {
  color: #00ff41;
  text-shadow: 0 0 12px rgba(0, 255, 65, 0.55);
}

.terminal-cli {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  font-family: "Orbitron", monospace;
  opacity: 1;
  transform: translateY(0);
  transition: opacity 250ms ease, transform 250ms ease;
  position: relative;
  clip-path: inset(0 0 0 0);
  z-index: 1;
}

.terminal-cli--hidden {
  opacity: 0;
  pointer-events: none;
  transform: translateY(15px);
}

.terminal-cli--revealed {
  animation: promptSweep 420ms cubic-bezier(0.5, 0, 0.2, 1) forwards;
}


.terminal-prompt-wrapper {
  position: relative;
  overflow: visible;
}

.terminal-skip-hint {
  position: absolute;
  left: 50%;
  bottom: 0.45rem;
  transform: translate(-50%, 0);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  font-size: 0.85rem;
  letter-spacing: 0.2rem;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.95);
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.3s ease;
  text-shadow: 0 0 18px rgba(0, 255, 140, 0.55);
  background: rgba(0, 0, 0, 0.88);
  border-radius: 999px;
  border: 1px dashed rgba(0, 255, 140, 0.65);
  padding: 0.4rem 1.75rem;
  z-index: 3;
}

.terminal-skip-hint--visible {
  opacity: 1;
}

.prompt-particles {
  position: absolute;
  inset: -40px;
  pointer-events: none;
  overflow: visible;
}

.prompt-particle {
  position: absolute;
  width: 12px;
  height: 12px;
  background: var(--accent);
  filter: drop-shadow(0 0 8px rgba(0, 255, 90, 0.9));
  opacity: 0.95;
  animation: blockParticle 750ms ease-out forwards;
}

.terminal-caret {
  color: var(--accent);
  letter-spacing: 0.35rem;
}

.terminal-cli input {
  flex: 1;
  border: none;
  background: transparent;
  color: #fff;
  font-size: 1rem;
  letter-spacing: 0.25rem;
  padding: 0.4rem 0;
  border-bottom: 1px solid rgba(0, 255, 90, 0.3);
}

.terminal-cli input:focus-visible {
  outline: none;
  border-color: var(--accent);
}

.terminal-footnote {
  font-size: 0.75rem;
  letter-spacing: 0.25rem;
  color: rgba(255, 255, 255, 0.6);
}

.card-footnote a,
.terminal-footnote a {
  color: var(--accent);
  text-decoration: none;
}

.terminal-footnote--center {
  text-align: center;
  width: 100%;
  letter-spacing: 0.4rem;
}

.terminal-slogan-shine {
  font-weight: 700;
  letter-spacing: 0.35rem;
  font-size: 0.9rem;
  text-transform: uppercase;
  background: linear-gradient(120deg, rgba(255, 255, 255, 0.25), var(--accent), rgba(255, 255, 255, 0.25));
  background-size: 250% 100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: sloganShimmer 2.8s linear infinite;
  text-shadow: 0 0 10px rgba(0, 255, 90, 0.2);
}

.terminal-slogan--hidden {
  opacity: 0;
  transform: translateY(-10px);
}

.terminal-slogan--intro {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 500ms ease, transform 500ms ease;
}

.terminal-slogan--settled {
  opacity: 1;
  transform: translateY(8px);
  transition: transform 400ms ease;
}

.terminal-page .card-footnote {
  letter-spacing: 0.35rem;
}

.terminal-page .card-subtitle {
  letter-spacing: 0.35rem;
}

.ctf-view {
  padding-bottom: 4rem;
}

.terminal-page.ctf-view {
  padding-bottom: 0;
}

.ctf-main {
  width: min(1200px, 100%);
  margin: 0 auto;
  padding: 8rem clamp(1rem, 4vw, 3rem) 4rem;
  display: flex;
  flex-direction: column;
  gap: 2rem;
  align-items: center;
  justify-content: center;
  min-height: calc(100vh - 6rem);

  background:
    radial-gradient(circle at 10% 0%, rgba(0, 255, 120, 0.06), transparent 45%),
    radial-gradient(circle at 90% 10%, rgba(0, 255, 90, 0.05), transparent 40%),
    rgba(0, 0, 0, 0.75);
  border-radius: 32px;
  border: 1px solid rgba(255, 255, 255, 0.06);
  box-shadow: 0 60px 120px rgba(0, 0, 0, 0.65);
}

.ctf-view[data-view='dashboard'] .ctf-main,
.ctf-view[data-view='profile'] .ctf-main {
  width: 100%;
  margin: 0;
  padding: 6rem 0 3rem;
  background: transparent;
  border: none;
  box-shadow: none;
  border-radius: 0;
}

.ctf-hero {
  min-height: auto;
  display: flex;
  justify-content: center;
  text-align: center;
}

.ctf-section {
  width: min(900px, 100%);
  margin: 0 auto;
  text-align: center;
  padding: clamp(1.5rem, 4vw, 2.75rem);
  border: 1px solid var(--panel-outline);
  background: var(--matte-panel);
  border-radius: 24px;
  box-shadow:
    0 35px 120px rgba(0, 0, 0, 0.65),
    inset 0 0 55px rgba(0, 255, 120, 0.03);
}

.ctf-view[data-view='challenges'] .ctf-main,
.ctf-view[data-view='challenges'] .ctf-section,
.ctf-view[data-view='scoreboard'] .ctf-main,
.ctf-view[data-view='scoreboard'] .ctf-section,
.ctf-view[data-view='admin'] .ctf-main,
.ctf-view[data-view='admin'] .ctf-section {
  width: 100%;
  max-width: none;
}

.ctf-view[data-view='challenges'] .ctf-main {
  padding-inline: clamp(1rem, 4vw, 3rem);
  min-height: calc(100vh - 80px);
  display: flex;
  align-items: stretch;
  padding-bottom: 3rem;
  background: transparent;
  border: none;
  box-shadow: none;
  border-radius: 0;
}

.ctf-view[data-view='scoreboard'] .ctf-main {
  padding: clamp(1rem, 3vh, 2.5rem) clamp(1.5rem, 4vw, 3rem);
  min-height: 100vh;
  display: flex;
  align-items: stretch;
  justify-content: center;
  overflow: hidden;
  margin-top: clamp(2rem, 6vh, 4.5rem);
  background: transparent;
  border: none;
  box-shadow: none;
  border-radius: 0;
}

.scoreboard-panel {
  text-align: left;
  padding: clamp(1rem, 2.5vh, 1.75rem) clamp(1rem, 3vw, 2.5rem);
  width: min(1180px, 100%);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  flex: 1;
  align-items: center;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 28px;
  background:
    linear-gradient(150deg, rgba(4, 18, 12, 0.68), rgba(3, 3, 3, 0.35));
  box-shadow: 0 35px 100px rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}

.ctf-view[data-view='admin'] .ctf-main {
  padding-inline: clamp(1rem, 4vw, 3rem);
  min-height: calc(100vh - 80px);
  display: flex;
  flex-direction: column;
  gap: 2rem;
  padding-bottom: 3rem;
}

.ctf-section h2 {
  letter-spacing: 0.6rem;
  margin-bottom: 1rem;
}

.ctf-admin {
  text-align: left;
}

.admin-panel-subtitle {
  margin-top: 0.35rem;
  letter-spacing: 0.3rem;
  text-transform: uppercase;
  font-size: 0.7rem;
  color: rgba(255, 255, 255, 0.7);
}

.admin-header-actions {
  display: flex;
  gap: 0.75rem;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.challenge-board {
  text-align: left;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.challenge-board-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}

.challenge-board-header h2 {
  margin-bottom: 0.35rem;
}

.challenge-board-header .challenge-search {
  margin-left: auto;
}

.challenge-search input {
  padding: 0.6rem 0.85rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.4);
  background: rgba(0, 0, 0, 0.3);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: #fff;
  letter-spacing: 0.15rem;
  min-width: min(360px, 60vw);
}

.challenge-search-bar {
  margin: 1rem auto;
  display: flex;
  justify-content: center;
}

.challenge-search input {
  padding: 0.6rem 0.85rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.4);
  background: rgba(0, 0, 0, 0.3);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: #fff;
  letter-spacing: 0.15rem;
  min-width: min(420px, 80vw);
}

.challenge-board-status {
  font-size: 0.8rem;
  letter-spacing: 0.35rem;
  text-transform: uppercase;
  margin: 1.25rem 0;
}

.challenge-board-status[data-variant='error'] {
  color: #ff3043;
}

.challenge-board-status[data-variant='success'] {
  color: #2effa9;
}

.challenge-category-container {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  flex: 1;
}

.challenge-category-card {
  border: 1px solid rgba(0, 255, 90, 0.25);
  border-radius: 14px;
  padding: 1.5rem;
  background: rgba(0, 0, 0, 0.28);
  box-shadow: 0 0 30px rgba(0, 255, 153, 0.1);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  display: flex;
  flex-direction: column;
}

.challenge-category-card header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.4rem;
  font-size: 0.8rem;
}

.challenge-count-pill {
  padding: 0.25rem 0.75rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.3);
  font-size: 0.65rem;
  letter-spacing: 0.25rem;
}

.challenge-card-grid {
  margin-top: 1.25rem;
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: flex-start;
  align-content: flex-start;
}

.challenge-card {
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 18px;
  padding: 1.2rem;
  background:
    radial-gradient(circle at 30% 20%, rgba(0, 255, 140, 0.12), transparent 60%),
    rgba(8, 8, 8, 0.32);
  display: flex;
  flex-direction: column;
  gap: 0.8rem;
  position: relative;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
  min-height: 240px;
  flex: 1 1 calc(25% - 1rem);
  max-width: calc(25% - 1rem);
  min-width: 220px;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}

.challenge-card-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.challenge-card::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  border: 1px solid transparent;
  pointer-events: none;
  transition: border-color 0.2s ease;
}


.challenge-card:hover,
.challenge-card:focus-visible {
  transform: translateY(-6px) scale(1.015);
  box-shadow: 0 20px 45px rgba(0, 255, 153, 0.18);
  border-color: rgba(0, 255, 153, 0.4);
}

.challenge-card:hover::after,
.challenge-card:focus-visible::after {
  border-color: rgba(255, 255, 255, 0.25);
}


.challenge-card h3 {
  font-size: 1rem;
  letter-spacing: 0.25rem;
  margin: 0;
  color: var(--text);
}

.challenge-card p {
  margin: 0;
  font-size: 0.85rem;
  line-height: 1.4;
  color: rgba(235, 245, 240, 0.85);
}

.challenge-meta-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.75rem;
  letter-spacing: 0.2rem;
  text-transform: uppercase;
}

.challenge-meta-row strong {
  letter-spacing: 0.3rem;
}

.challenge-difficulty {
  border-radius: 999px;
  padding: 0.1rem 0.6rem;
  font-size: 0.65rem;
  letter-spacing: 0.2rem;
  border: 1px solid rgba(255, 255, 255, 0.25);
}

.challenge-difficulty--easy {
  color: #8cffc1;
  border-color: rgba(140, 255, 193, 0.7);
}

.challenge-difficulty--medium {
  color: #f2ff7a;
  border-color: rgba(242, 255, 122, 0.7);
}

.challenge-difficulty--hard {
  color: #ffae5f;
  border-color: rgba(255, 174, 95, 0.7);
}

.challenge-difficulty--insane {
  color: #ff5f7a;
  border-color: rgba(255, 95, 122, 0.7);
}

.challenge-badge {
  border-radius: 999px;
  padding: 0.15rem 0.75rem;
  font-size: 0.65rem;
  letter-spacing: 0.25rem;
  border: 1px solid rgba(255, 255, 255, 0.3);
}

.challenge-badge[data-variant='solved'] {
  background: rgba(0, 217, 102, 0.15);
  border-color: rgba(0, 217, 102, 0.6);
  color: #2effa9;
}

.challenge-badge[data-variant='unsolved'] {
  background: rgba(255, 178, 48, 0.12);
  border-color: rgba(255, 178, 48, 0.5);
  color: #ffce8a;
}

.challenge-card footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.75rem;
  letter-spacing: 0.25rem;
  text-transform: uppercase;
}

.challenge-card footer span:last-child {
  letter-spacing: 0.3rem;
}

.challenge-card footer span {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}

.challenge-card footer svg {
  width: 14px;
  height: 14px;
  fill: currentColor;
}

.challenge-empty {
  text-align: center;
  padding: 2rem 1rem;
  letter-spacing: 0.3rem;
  text-transform: uppercase;
  border: 1px dashed rgba(255, 255, 255, 0.2);
  border-radius: 12px;
}


.challenge-modal[hidden] {
  display: none;
}

.challenge-modal {
  position: fixed;
  inset: 0;
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
}

.challenge-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.75);
  backdrop-filter: blur(8px);
  opacity: 0;
}

.challenge-modal-content {
  position: relative;
  width: min(760px, 95vw);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 20px;
  background: linear-gradient(140deg, rgba(0, 0, 0, 0.98), rgba(10, 10, 10, 0.95));
  padding: clamp(1.5rem, 4vw, 2.5rem);
  box-shadow: 0 35px 90px rgba(0, 0, 0, 0.75);
  overflow: hidden;
  opacity: 0;
  transform: scale(0.9);
}

.challenge-modal.is-active .challenge-modal-backdrop {
  animation: backdropFade 0.35s ease forwards;
}

.challenge-modal.is-active .challenge-modal-content {
  animation: challengeZoom 0.4s ease forwards;
}

.challenge-modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  border: none;
  background: rgba(0, 0, 0, 0.4);
  color: #fff;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  font-size: 1.35rem;
  cursor: pointer;
  transition: transform 0.2s ease, background 0.2s ease;
}

.challenge-modal-close:hover,
.challenge-modal-close:focus-visible {
  transform: scale(1.1);
  background: rgba(0, 0, 0, 0.7);
}

.challenge-modal-header {
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.35rem;
}

.challenge-modal-category {
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.7);
}

.challenge-modal-header h3 {
  margin: 0.5rem 0;
  font-size: clamp(1.4rem, 4vw, 2.1rem);
  letter-spacing: 0.4rem;
  color: #f2f2f2;
}

.challenge-modal-points {
  font-size: 0.9rem;
  letter-spacing: 0.3rem;
  color: rgba(255, 255, 255, 0.75);
}

.challenge-modal-difficulty {
  font-size: 0.85rem;
  letter-spacing: 0.3rem;
  color: rgba(255, 255, 255, 0.65);
  margin-top: 0.35rem;
}

.challenge-modal-description {
  margin: 1.5rem 0;
  font-size: 0.95rem;
  line-height: 1.6;
  color: rgba(240, 240, 240, 0.85);
  white-space: pre-line;
}

.challenge-modal-attachment {
  margin-bottom: 1.5rem;
  padding: 0.75rem 1rem;
  border: 1px dashed rgba(255, 255, 255, 0.18);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.challenge-modal-attachment a {
  color: rgba(255, 255, 255, 0.85);
  text-decoration: none;
  letter-spacing: 0.2rem;
  text-transform: uppercase;
}

.challenge-modal-attachment a:hover,
.challenge-modal-attachment a:focus-visible {
  text-decoration: underline;
  color: #ffffff;
}

.solve-overlay {
  position: fixed;
  inset: 0;
  z-index: 2500;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s ease;
}

.solve-overlay.is-active {
  opacity: 1;
}

.solve-overlay.is-fading {
  opacity: 0;
}


.solve-overlay::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.82);
  backdrop-filter: blur(6px);
}

.solve-overlay-matrix {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(180deg, rgba(0, 255, 85, 0.15) 0, transparent 60%),
    repeating-linear-gradient(90deg, rgba(0, 255, 110, 0.07) 0, rgba(0, 255, 110, 0.07) 3px, transparent 3px, transparent 6px);
  opacity: 0.5;
  animation: matrixFlow 0.55s linear infinite;
}

.solve-overlay-content {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: 2rem 3rem;
  border-radius: 22px;
  border: 1px solid rgba(0, 255, 145, 0.4);
  background:
    radial-gradient(circle at top, rgba(0, 255, 110, 0.18), transparent 60%),
    rgba(0, 0, 0, 0.88);
  box-shadow:
    0 0 60px rgba(0, 255, 145, 0.3),
    inset 0 0 45px rgba(0, 120, 65, 0.45);
}

.solve-overlay-label {
  font-size: clamp(1.2rem, 4vw, 2rem);
  letter-spacing: 0.8rem;
  text-transform: uppercase;
  color: #baffd9;
  text-shadow: 0 0 30px rgba(0, 255, 110, 0.8);
  position: relative;
  overflow: hidden;
  mask-image: linear-gradient(to right, rgba(0, 0, 0, 0), #000 25%, #000 75%, rgba(0, 0, 0, 0));
}

.solve-overlay-points {
  margin-top: 0.5rem;
  font-size: clamp(1rem, 3vw, 1.5rem);
  letter-spacing: 0.5rem;
  color: rgba(255, 255, 255, 0.9);
}

.solve-overlay-label::before,
.solve-overlay-label::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  color: #00ff8c;
  mix-blend-mode: screen;
  opacity: 0.6;
  animation: glitchShift 0.45s steps(2, end) infinite;
}

.solve-overlay-label::before {
  transform: translate(-2px, -2px);
  clip-path: polygon(0 0, 100% 0, 100% 35%, 0 35%);
}

.solve-overlay-label::after {
  transform: translate(2px, 2px);
  clip-path: polygon(0 65%, 100% 65%, 100% 100%, 0 100%);
  animation-duration: 0.35s;
}

body.challenge-solved .ctf-nav,
body.challenge-solved .ctf-main,
body.challenge-solved .terminal-layout,
body.challenge-solved .terminal-shell,
body.challenge-solved .challenge-modal,
body.challenge-solved .profile-main {
  filter: blur(6px) brightness(0.9);
  transition: filter 0.2s ease;
}

@keyframes matrixFlow {
  0% {
    transform: translateY(-100%);
  }
  100% {
    transform: translateY(100%);
  }
}

.profile-avatar-viewer[hidden] {
  display: none;
}

.profile-avatar-viewer {
  position: fixed;
  inset: 0;
  z-index: 2100;
  display: flex;
  align-items: center;
  justify-content: center;
}

.profile-avatar-viewer-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.82);
  backdrop-filter: blur(6px);
}


.profile-avatar-viewer-dialog {
  position: relative;
  z-index: 1;
  max-width: min(480px, 92vw);
  width: 100%;
  border-radius: 24px;
  padding: 1.5rem;
  background: rgba(0, 0, 0, 0.92);
  border: 1px solid rgba(255, 255, 255, 0.15);
  box-shadow:
    0 40px 120px rgba(0, 0, 0, 0.65),
    inset 0 0 45px rgba(0, 255, 166, 0.05);
  text-align: center;
}

.profile-avatar-viewer-img {
  width: 100%;
  border-radius: 18px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}

.profile-avatar-viewer-empty {
  margin: 0;
  padding: 3rem 1rem;
  letter-spacing: 0.4rem;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.7);
}

.challenge-flag-form {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-bottom: 1rem;
}

.challenge-flag-form input {
  flex: 1 1 220px;
  min-width: 0;
  padding: 0.75rem 1rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  background: rgba(0, 0, 0, 0.65);
  color: #fff;
  letter-spacing: 0.1rem;
}

.challenge-flag-form button {
  letter-spacing: 0.3rem;
  padding-inline: 1.5rem;
}

.challenge-flag-status {
  min-height: 1.2rem;
  font-size: 0.75rem;
  letter-spacing: 0.25rem;
  text-transform: uppercase;
}

.challenge-flag-status[data-variant='error'] {
  color: #ff3043;
}

.challenge-flag-status[data-variant='success'] {
  color: #2effa9;
}

.challenge-modal-footer {
  display: flex;
  justify-content: center;
  letter-spacing: 0.25rem;
  font-size: 0.75rem;
}

.scoreboard-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}

.scoreboard-title,
.leaderboard-title {
  font-family: "Orbitron", system-ui, sans-serif;
  letter-spacing: 0.65rem;
}

.leaderboard-header {
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 1.5rem;
  margin-bottom: 1.25rem;
}

.leaderboard-header h2 {
  min-width: 220px;
}

.leaderboard-header .scoreboard-search {
  margin-left: auto;
}

.scoreboard-header h2 {
  margin: 0;
  color: var(--scoreboard-green);
  letter-spacing: 0.65rem;
  text-shadow:
    0 0 25px var(--scoreboard-green-glow),
    0 0 10px rgba(0, 0, 0, 0.35);
}

.scoreboard-search {
  display: flex;
  align-items: center;
}

/* status text removed */

.scoreboard-layout {
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
  width: 100%;
  max-width: 1200px;
  flex: 1 1 auto;
  margin: 0 auto;
  align-items: stretch;
  justify-content: flex-start;
  min-height: 0;
  height: 100%;
}

.scoreboard-node-panel,
.leaderboard-table-panel {
  width: 100%;
  display: flex;
  flex-direction: column;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 20px;
  padding: 1.5rem;
  background: rgba(2, 8, 5, 0.45);
  box-shadow: inset 0 0 35px rgba(0, 0, 0, 0.45);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  min-height: 0;
}

.scoreboard-node-panel {
  position: relative;
  min-height: 520px;
}

.leaderboard-table-panel {
  min-height: 0;
  overflow: hidden;
}

.scoreboard-nodes {
  position: relative;
  min-height: 420px;
  width: 100%;
}

.scoreboard-table-wrapper {
  flex: 1;
  min-height: 0;
  overflow-x: auto;
  overflow-y: auto;
}

.scoreboard-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9rem;
  color: #f6fff8;
  background: rgba(3, 10, 6, 0.35);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.scoreboard-table th,
.scoreboard-table td {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  letter-spacing: 0.2rem;
}

.scoreboard-table th {
  text-align: left;
  background: rgba(255, 255, 255, 0.06);
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.78);
}

.scoreboard-table td {
  text-transform: none;
  letter-spacing: 0.05rem;
  color: rgba(245, 255, 248, 0.92);
}

.scoreboard-table td a {
  color: #ffffff;
  text-decoration: none;
  font-weight: 600;
  letter-spacing: 0.08rem;
  text-shadow: 0 0 6px rgba(140, 255, 193, 0.4);
  transition: color 0.2s ease, text-shadow 0.2s ease;
}

.scoreboard-table td a:hover,
.scoreboard-table td a:focus-visible {
  color: #b2ffe0;
  text-shadow: 0 0 12px rgba(178, 255, 224, 0.7);
}

.scoreboard-table th:nth-child(3),
.scoreboard-table td:nth-child(3),
.scoreboard-table th:nth-child(4),
.scoreboard-table td:nth-child(4) {
  text-align: right;
}

.scoreboard-table tbody tr:nth-child(odd) {
  background: rgba(255, 255, 255, 0.05);
}

.scoreboard-table tbody tr:hover {
  background: rgba(255, 255, 255, 0.12);
}

.scoreboard-nodes-empty {
  text-align: center;
  letter-spacing: 0.35rem;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.7);
  padding: 2rem 1rem;
}

.scoreboard-node {
  position: absolute;
  inset: auto;
  left: var(--node-x, 50%);
  top: var(--node-y, 50%);
  transform: translate(-50%, -50%);
  appearance: none;
  -webkit-appearance: none;
  font: inherit;
  width: var(--node-size, 110px);
  height: var(--node-size, 110px);
  border-radius: 50%;
  border: 1px solid rgba(19, 255, 134, 0.65);
  background:
    radial-gradient(circle at 35% 30%, rgba(56, 255, 140, 0.28), transparent 55%),
    rgba(0, 5, 2, 0.92);
  box-shadow:
    0 16px 35px rgba(0, 0, 0, 0.75),
    inset 0 0 35px rgba(39, 255, 133, 0.25);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  text-transform: uppercase;
  letter-spacing: 0.25rem;
  color: #ebfff1;
  cursor: pointer;
  animation: scoreboardNodeFloat var(--node-float-duration, 2.8s) ease-in-out infinite;
  animation-delay: var(--node-float-delay, 0s);
  transition:
    transform 320ms ease,
    box-shadow 320ms ease,
    border-color 320ms ease,
    background 320ms ease;
  padding: 0.75rem;
  text-align: center;
  outline: none;
  overflow: visible;
  isolation: isolate;
  position: absolute;
}

.scoreboard-node::before,
.scoreboard-node::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 50%;
  pointer-events: none;
}

.scoreboard-node::before {
  inset: -22px;
  background: radial-gradient(circle, rgba(0, 255, 140, 0.32), transparent 65%);
  filter: blur(16px);
  opacity: 0.9;
  z-index: -2;
}

.scoreboard-node::after {
  inset: -6px;
  border: 2px solid rgba(0, 255, 153, 0.35);
  box-shadow: 0 0 25px rgba(0, 255, 220, 0.4);
  opacity: 0.8;
  z-index: -1;
}

.scoreboard-node:focus-visible,
.scoreboard-node:hover {
  animation: none;
  border-color: rgba(255, 255, 255, 0.85);
  box-shadow:
    0 22px 60px rgba(0, 0, 0, 0.75),
    inset 0 0 55px rgba(0, 255, 200, 0.3);
  transform: translate(-50%, -50%) scale(1.07);
}

.scoreboard-node-rank {
  font-size: 0.8rem;
  letter-spacing: 0.4rem;
  color: rgba(255, 255, 255, 0.9);
}

.scoreboard-node-name {
  font-size: 0.95rem;
  letter-spacing: 0.3rem;
}

.scoreboard-node-score {
  font-size: 0.75rem;
  letter-spacing: 0.25rem;
  color: rgba(0, 255, 180, 0.9);
}

.scoreboard-node-tooltip {
  position: absolute;
  padding: 0.65rem 1rem;
  background: rgba(0, 0, 0, 0.85);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 12px;
  font-size: 0.75rem;
  letter-spacing: 0.2rem;
  text-transform: uppercase;
  color: #e8fff3;
  box-shadow: 0 20px 45px rgba(0, 0, 0, 0.55);
  pointer-events: none;
  z-index: 5;
  min-width: 220px;
}

.scoreboard-node-tooltip[hidden] {
  display: none;
}

.scoreboard-node-tooltip strong,
.scoreboard-node-tooltip span {
  display: block;
  margin-bottom: 0.2rem;
}

.scoreboard-node-tooltip strong {
  font-size: 0.85rem;
  letter-spacing: 0.3rem;
  color: #ffffff;
}

.scoreboard-node-tooltip span:last-child {
  margin-bottom: 0;
  color: rgba(255, 255, 255, 0.75);
}

@keyframes scoreboardNodeFloat {
  0% {
    transform: translate(-50%, -50%) rotate(0deg) scale(1);
  }
  50% {
    transform: translate(-50%, calc(-50% - 26px)) rotate(-4deg) scale(1.04);
  }
  100% {
    transform: translate(-50%, -50%) rotate(0deg) scale(1);
  }
}

@media (max-width: 960px) {
  .leaderboard-header {
    align-items: flex-start;
  }
  .leaderboard-header .scoreboard-search {
    width: 100%;
    justify-content: flex-start;
  }
  .leaderboard-header .scoreboard-search input {
    width: 100%;
    min-width: 0;
  }
}

@media (max-width: 640px) {
  .scoreboard-node-panel {
    min-height: 420px;
  }
  .scoreboard-nodes {
    min-height: 360px;
  }
  .scoreboard-node {
    letter-spacing: 0.18rem;
  }
}

/* PROFILE VIEW */


.ctf-view[data-view='profile'] .ctf-main {
  width: 100%;
  padding: clamp(2rem, 5vh, 3.5rem) clamp(1rem, 4vw, 3rem) clamp(2rem, 5vh, 4rem);
  min-height: calc(100vh - 80px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.profile-panel {
  width: min(960px, 100%);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.75rem;
}

.profile-solves-panel {
  width: min(900px, 100%);
  background: rgba(0, 0, 0, 0.78);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 24px;
  padding: 1.5rem;
  box-shadow:
    0 30px 80px rgba(0, 0, 0, 0.65),
    inset 0 0 40px rgba(255, 255, 255, 0.03);
}

.profile-solves-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  margin-bottom: 1.25rem;
}

.profile-solves-header h3 {
  margin: 0;
  letter-spacing: 0.45rem;
  font-size: 1rem;
}

.profile-solves-header p {
  margin: 0;
  letter-spacing: 0.25rem;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.65);
}

.profile-solves-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
}

.profile-solves-card {
  position: relative;
  padding: 1rem 1.25rem;
  border-radius: 16px;
  background: rgba(0, 0, 0, 0.85);
  border: 1px solid rgba(255, 255, 255, 0.08);
  overflow: hidden;
  transition: transform 180ms ease, border-color 180ms ease;
}

.profile-solves-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, transparent 20%, rgba(255, 255, 255, 0.08), transparent 80%);
  opacity: 0;
  transition: opacity 180ms ease;
}

.profile-solves-card:hover {
  transform: translateY(-6px);
  border-color: rgba(255, 255, 255, 0.2);
}

.profile-solves-card:hover::after {
  opacity: 1;
}

.profile-solves-card h4 {
  margin: 0 0 0.35rem;
  font-size: 1rem;
  letter-spacing: 0.1rem;
}

.profile-solves-meta-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  letter-spacing: 0.25rem;
  font-size: 0.7rem;
  color: rgba(255, 255, 255, 0.65);
}

.profile-solves-points {
  font-weight: 700;
  color: var(--accent);
}

.profile-solves-date {
  margin-top: 0.4rem;
  font-size: 0.75rem;
  letter-spacing: 0.15rem;
  color: rgba(255, 255, 255, 0.6);
}

.profile-solves-empty {
  margin: 0;
  letter-spacing: 0.3rem;
  font-size: 0.8rem;
  color: rgba(255, 255, 255, 0.55);
}

.profile-avatar-modal {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 30;
}

.profile-avatar-modal[hidden] {
  display: none;
}

.profile-avatar-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.75);
  backdrop-filter: blur(4px);
}

.profile-avatar-dialog {
  position: relative;
  z-index: 2;
  width: min(420px, calc(100% - 2rem));
  border-radius: 20px;
  padding: 1.5rem;
  background: rgba(0, 0, 0, 0.9);
  border: 1px solid rgba(255, 255, 255, 0.15);
  box-shadow: 0 35px 80px rgba(0, 0, 0, 0.5);
  display: flex;
  flex-direction: column;
  gap: 1rem;
  text-align: center;
}

.profile-avatar-dialog h3 {
  margin: 0;
  letter-spacing: 0.4rem;
}

.profile-avatar-dialog p {
  margin: 0;
  font-size: 0.85rem;
  letter-spacing: 0.15rem;
  color: rgba(255, 255, 255, 0.75);
}

.profile-avatar-cropper {
  width: 100%;
  aspect-ratio: 1 / 1;
  border-radius: 16px;
  border: 1px solid rgba(255, 255, 255, 0.15);
  overflow: hidden;
  background: #000;
}

.profile-avatar-cropper canvas {
  width: 100%;
  height: 100%;
  display: block;
  cursor: grab;
}

.profile-avatar-cropper canvas:active {
  cursor: grabbing;
}

.profile-avatar-zoom {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  letter-spacing: 0.3rem;
  font-size: 0.7rem;
}

.profile-avatar-zoom input[type='range'] {
  flex: 1;
}

.profile-avatar-modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 0.75rem;
}

.profile-card {
  --profile-card-padding: clamp(1.5rem, 3vw, 2.5rem);
  position: relative;
  width: min(900px, 100%);
  border-radius: 24px;
  margin-top: clamp(1.5rem, 4vh, 3rem);
  padding: var(--profile-card-padding);
  padding-top: calc(var(--profile-card-padding) + 1.25rem);
  background: linear-gradient(140deg, #010101, #050a0c 45%, #060607 100%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow:
    0 40px 120px rgba(0, 0, 0, 0.8),
    inset 0 0 120px rgba(0, 255, 196, 0.05);
  overflow: hidden;
  transition: transform 200ms ease, box-shadow 200ms ease;
}

.profile-card::before,
.profile-card::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.profile-card::before {
  background:
    repeating-linear-gradient(
      0deg,
      rgba(255, 255, 255, 0.015) 0,
      rgba(255, 255, 255, 0.015) 1px,
      transparent 1px,
      transparent 12px
    ),
    linear-gradient(120deg, transparent 0%, rgba(255, 255, 255, 0.2) 50%, transparent 100%);
  background-size: 140% 300%, 200% 200%;
  animation: profileFlow 14s ease-in-out infinite;
  mix-blend-mode: screen;
  opacity: 0.8;
}

.profile-card::after {
  inset: 8px;
  border-radius: 18px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow:
    inset 0 0 35px rgba(0, 255, 163, 0.08),
    0 0 45px rgba(0, 255, 163, 0.12);
}

.profile-card:hover {
  transform: translateY(-8px);
  box-shadow:
    0 60px 160px rgba(0, 0, 0, 0.88),
    inset 0 0 160px rgba(0, 255, 210, 0.08);
}

.profile-card[data-editing='true']::after {
  border-color: rgba(255, 215, 0, 0.35);
  box-shadow:
    inset 0 0 45px rgba(255, 196, 0, 0.25),
    0 0 55px rgba(255, 196, 0, 0.18);
}

@keyframes profileFlow {
  0% {
    background-position: 0% 0%, -180% -120%;
    transform: rotate(-10deg) scale(1.02);
    opacity: 0.25;
  }
  30% {
    background-position: 40% -20%, 30% -30%;
    transform: rotate(5deg) scale(1.05);
    opacity: 0.45;
  }
  60% {
    background-position: 80% 30%, 80% 50%;
    transform: rotate(-8deg) scale(1.03);
    opacity: 0.4;
  }
  85% {
    background-position: 20% 80%, 10% 70%;
    transform: rotate(6deg) scale(1.06);
    opacity: 0.5;
  }
  100% {
    background-position: 0% 0%, -180% -120%;
    transform: rotate(-10deg) scale(1.02);
    opacity: 0.25;
  }
}

.profile-edit-btn {
  position: absolute;
  top: 1.25rem;
  right: 1.25rem;
  z-index: 2;
  width: 44px;
  height: 44px;
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  background: rgba(0, 0, 0, 0.35);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}

.profile-edit-btn svg {
  width: 20px;
  height: 20px;
  fill: rgba(255, 255, 255, 0.8);
}

.profile-card-top {
  position: relative;
  display: flex;
  gap: clamp(1.5rem, 3vw, 3rem);
  align-items: center;
  flex-wrap: wrap;
}

.profile-avatar-frame {
  position: relative;
  width: 200px;
  flex: 0 0 auto;
  aspect-ratio: 1 / 1;
  border-radius: 24px;
  background: rgba(0, 0, 0, 0.78);
  border: 1px solid rgba(255, 255, 255, 0.12);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  cursor: pointer;
  transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

.profile-avatar-frame:hover,
.profile-avatar-frame:focus-visible {
  border-color: rgba(255, 255, 255, 0.35);
  box-shadow: 0 0 45px rgba(255, 255, 255, 0.25);
  transform: translateY(-4px) scale(1.02);
  outline: none;
}

.profile-avatar {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.profile-avatar-placeholder {
  font-size: 4rem;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.32);
  letter-spacing: 0.2rem;
}


.profile-ident {
  flex: 1;
  min-width: 220px;
}

.profile-label {
  letter-spacing: 0.35rem;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.65);
}

.profile-ident h2 {
  font-size: clamp(1.8rem, 4vw, 2.4rem);
  letter-spacing: 0.3rem;
  margin-bottom: 0.5rem;
}

.profile-role {
  color: var(--accent);
  letter-spacing: 0.35rem;
  margin-bottom: 0.75rem;
}

.profile-joined {
  letter-spacing: 0.25rem;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.65);
}

.profile-card-body {
  margin-top: 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.profile-description-card {
  background: rgba(0, 0, 0, 0.78);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 18px;
  padding: 1.25rem;
  min-height: 120px;
  box-shadow: inset 0 0 35px rgba(255, 255, 255, 0.03);
}

.profile-description-text {
  margin-top: 0.6rem;
  letter-spacing: 0.1rem;
  color: rgba(255, 255, 255, 0.85);
  line-height: 1.6;
}

.profile-stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 1rem;
}

.profile-stat {
  background: rgba(0, 0, 0, 0.82);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  padding: 1rem 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  position: relative;
  overflow: hidden;
}

.profile-stat span {
  letter-spacing: 0.3rem;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.55);
}

.profile-stat strong {
  font-size: 1.6rem;
  letter-spacing: 0.2rem;
}

.profile-stat::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(125deg, transparent 15%, rgba(255, 255, 255, 0.1), transparent 85%);
  opacity: 0;
  transition: opacity 220ms ease;
}

.profile-stat:hover::after {
  opacity: 1;
}

.profile-edit-panel {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.5rem;
}

.profile-form-card {
  background: rgba(0, 0, 0, 0.78);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 20px;
  padding: 1.5rem;
  box-shadow:
    inset 0 0 25px rgba(255, 255, 255, 0.03),
    0 15px 45px rgba(0, 0, 0, 0.55);
  }

.profile-form-header p {
  margin: 0 0 1rem;
  letter-spacing: 0.35rem;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.8);
}

.profile-form-group {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-bottom: 1rem;
}

.profile-form-group label {
  letter-spacing: 0.3rem;
  font-size: 0.75rem;
}

.profile-form-group input,
.profile-form-group textarea {
  width: 100%;
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  padding: 0.85rem 1rem;
  font-family: "Space Mono", "Chakra Petch", monospace;
  letter-spacing: 0.1rem;
}

.profile-form-group textarea {
  resize: vertical;
  min-height: 120px;
}

.profile-form-group input:focus-visible,
.profile-form-group textarea:focus-visible {
  outline: 2px solid var(--accent);
  border-color: var(--accent);
}

.profile-form-meta {
  display: flex;
  justify-content: flex-end;
  font-size: 0.7rem;
  letter-spacing: 0.2rem;
  color: rgba(255, 255, 255, 0.55);
}

.profile-form-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 0.5rem;
}

.ghost-btn {
  background: transparent;
  color: rgba(255, 255, 255, 0.8);
  border-color: rgba(255, 255, 255, 0.4);
}

.profile-status {
  text-align: center;
  letter-spacing: 0.3rem;
  font-size: 0.75rem;
  min-height: 1.5rem;
}

.profile-status[data-variant='success'] {
  color: #8cffc1;
}

.profile-status[data-variant='error'] {
  color: #ff4d6d;
}

@media (max-width: 720px) {
  .profile-card {
    padding: 1.5rem;
  }
  .profile-avatar-trigger {
    font-size: 0.55rem;
  }
  .profile-form-actions {
    flex-direction: column;
    align-items: stretch;
  }
}

@keyframes challengeZoom {
  0% {
    transform: scale(0.85) translateZ(-80px);
    opacity: 0;
  }
  100% {
    transform: scale(1) translateZ(0);
    opacity: 1;
  }
}

@keyframes backdropFade {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.admin-orb-overlay {
  display: none;
  min-height: 100vh;
  padding: 4rem 1.5rem;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 1.5rem;
}

.admin-orb-intro,
.admin-orb-hint {
  letter-spacing: 0.35rem;
  text-transform: uppercase;
  font-size: 0.7rem;
}

body.admin-orb-only .ctf-nav,
body.admin-orb-only .ctf-main {
  display: none;
}

body.admin-orb-only .admin-orb-overlay {
  display: flex;
}

body.challenge-modal-open {
  overflow: hidden;
}

body.admin-modal-open {
  overflow: hidden;
}

.admin-orb-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 2rem;
  margin: 1.5rem auto 2rem;
}
.admin-orb {
  position: relative;
  width: clamp(180px, 22vw, 260px);
  max-width: 80vw;
  aspect-ratio: 1;
  border-radius: 50%;
  border: 2px solid rgba(0, 255, 100, 0.45);
  background:
    radial-gradient(circle at 35% 30%, rgba(0, 255, 120, 0.35), rgba(0, 10, 5, 0.98)),
    linear-gradient(135deg, rgba(0, 0, 0, 0.95), rgba(0, 40, 25, 0.9));
  background-origin: border-box;
  background-clip: padding-box, border-box;
  color: #f8fff8;
  font: inherit;
  padding: 0;
  text-transform: uppercase;
  letter-spacing: 0.4rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  cursor: pointer;
  box-shadow:
    0 0 30px rgba(0, 255, 153, 0.35),
    inset 0 0 60px rgba(0, 255, 140, 0.08),
    inset 0 0 35px rgba(0, 0, 0, 0.7);
  transition: transform 0.35s ease, box-shadow 0.35s ease, filter 0.35s ease;
  animation: orbFloat 1.9s ease-in-out infinite;
  overflow: hidden;
}

.admin-orb::before {
  content: '';
  position: absolute;
  inset: 18%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(0, 255, 153, 0.35), transparent 70%);
  opacity: 0.8;
  filter: blur(2px);
  pointer-events: none;
}

.admin-orb::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.15);
  box-shadow: 0 0 25px rgba(0, 255, 247, 0.25);
  animation: orbPulse 4s linear infinite;
  pointer-events: none;
}

.admin-orb:hover,
.admin-orb:focus-visible {
  transform: translateY(-12px) scale(1.04) rotate(-1deg);
  border-color: rgba(0, 255, 180, 0.95);
  outline: 2px solid rgba(0, 255, 180, 0.6);
  outline-offset: 4px;
  filter: drop-shadow(0 10px 25px rgba(0, 255, 247, 0.45));
}

.admin-orb-label {
  font-size: 0.75rem;
  letter-spacing: 0.55rem;
  text-indent: 0.55rem;
  z-index: 1;
  font-weight: 700;
  color: #cbffd1;
  text-shadow: 0 0 12px rgba(0, 255, 128, 0.8);
}

.admin-orb-note {
  font-size: 0.6rem;
  letter-spacing: 0.3rem;
  opacity: 0.8;
  z-index: 1;
  font-weight: 600;
  color: #8cffca;
}

.admin-section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}

.admin-section-header--split {
  flex-wrap: wrap;
}

.admin-section-header h2 {
  margin-bottom: 0;
}

.admin-switch-btn {
  letter-spacing: 0.2rem;
}

.admin-placeholder {
  text-align: center;
  min-height: 200px;
}

@keyframes orbFloat {
  0% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  }
  50% {
    transform: translate3d(0, -28px, 0) rotate(-4deg) scale(1.03);
  }
  100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  }
}

@keyframes orbPulse {
  0% {
    transform: scale(0.9);
    opacity: 0.6;
  }
  50% {
    transform: scale(1.05);
    opacity: 1;
  }
  100% {
    transform: scale(0.9);
    opacity: 0.6;
  }
}


.admin-orb:nth-child(1) {
  animation: orbFloatA 3.5s ease-in-out infinite;
}

.admin-orb:nth-child(2) {
  animation: orbFloatB 3.9s ease-in-out infinite;
}

.admin-orb:nth-child(3) {
  animation: orbFloatC 3.2s ease-in-out infinite;
}

.admin-orb:nth-child(4) {
  animation: orbFloatD 4s ease-in-out infinite;
}

@keyframes orbFloatA {
  0% { transform: translate(0, 0); }
  25% { transform: translate(6px, -8px); }
  50% { transform: translate(-4px, -14px); }
  75% { transform: translate(-8px, 4px); }
  100% { transform: translate(0, 0); }
}

@keyframes orbFloatB {
  0% { transform: translate(0, 0); }
  30% { transform: translate(-10px, -6px); }
  55% { transform: translate(8px, -12px); }
  80% { transform: translate(4px, 6px); }
  100% { transform: translate(0, 0); }
}

@keyframes orbFloatC {
  0% { transform: translate(0, 0); }
  20% { transform: translate(8px, -10px); }
  50% { transform: translate(-6px, -4px); }
  85% { transform: translate(-4px, 10px); }
  100% { transform: translate(0, 0); }
}

@keyframes orbFloatD {
  0% { transform: translate(0, 0); }
  15% { transform: translate(-5px, -12px); }
  45% { transform: translate(10px, -6px); }
  70% { transform: translate(6px, 12px); }
  100% { transform: translate(0, 0); }
}

.admin-form label span {
  display: block;
  font-size: 0.8rem;
  letter-spacing: 0.3rem;
  margin-bottom: 0.3rem;
}

.admin-form input,
.admin-form textarea,
.admin-form select {
  width: 100%;
  padding: 0.65rem 0.75rem;
  background: rgba(0, 0, 0, 0.6);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff;
  border-radius: 8px;
}

.admin-attachment {
  margin-top: 1rem;
  padding: 1rem;
  border: 1px dashed rgba(255, 255, 255, 0.2);
  border-radius: 12px;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.admin-attachment-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}

.admin-attachment-meta p {
  margin: 0;
  font-size: 0.8rem;
  letter-spacing: 0.2rem;
}

.admin-attachment-tag {
  border-radius: 999px;
  padding: 0.1rem 0.65rem;
  font-size: 0.6rem;
  letter-spacing: 0.25rem;
  border: 1px solid rgba(255, 255, 255, 0.3);
}

.admin-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
}

.admin-description {
  display: block;
  margin-top: 1rem;
}

.admin-actions {
  display: flex;
  gap: 1rem;
  margin-top: 1rem;
}

.admin-status {
  margin-top: 1rem;
  font-size: 0.85rem;
  letter-spacing: 0.2rem;
}

.admin-status-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.admin-search input {
  padding: 0.5rem 0.85rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  letter-spacing: 0.15rem;
}

.admin-search-bar {
  display: flex;
  justify-content: center;
  margin-top: 1rem;
}

.admin-search input {
  min-width: min(360px, 80vw);
}

.admin-status[data-variant='error'] {
  color: #ff3043;
}

.admin-status[data-variant='success'] {
  color: #00ff41;
}

.admin-settings-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
  margin-top: 1.5rem;
}

.admin-settings-card {
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 24px;
  padding: 1.5rem;
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(6px);
  display: flex;
  flex-direction: column;
  gap: 1rem;
  box-shadow: inset 0 0 45px rgba(0, 255, 166, 0.05);
}

.admin-settings-card header {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  text-transform: uppercase;
  letter-spacing: 0.35rem;
}

.admin-settings-card header strong {
  font-size: 1.8rem;
  letter-spacing: 0.5rem;
}

.admin-settings-card header span {
  font-size: 0.75rem;
  letter-spacing: 0.25rem;
  color: rgba(255, 255, 255, 0.55);
}

.admin-announcement-card header span {
  color: rgba(255, 255, 255, 0.7);
}

.admin-settings-note-label {
  font-size: 0.75rem;
  letter-spacing: 0.25rem;
  text-transform: uppercase;
  color: rgba(140, 255, 193, 0.85);
}

.admin-settings-note,
.admin-settings-form textarea {
  width: 100%;
  border-radius: 16px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  background: rgba(0, 0, 0, 0.4);
  color: #fff;
  padding: 0.85rem 1rem;
  font-family: 'Space Mono', monospace;
  letter-spacing: 0.1rem;
  resize: vertical;
}

.admin-settings-form label {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  text-transform: uppercase;
  letter-spacing: 0.25rem;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.65);
}

.admin-settings-form select {
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  padding: 0.65rem 1rem;
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  letter-spacing: 0.2rem;
}

.admin-settings-input {
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  padding: 0.65rem 1rem;
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  letter-spacing: 0.2rem;
}

.admin-settings-hint {
  font-size: 0.65rem;
  letter-spacing: 0.2rem;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.6);
}

.admin-settings-actions {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.admin-settings-actions [data-active='true'] {
  border-color: rgba(140, 255, 193, 0.8);
  color: rgba(140, 255, 193, 0.9);
  box-shadow: 0 0 25px rgba(140, 255, 193, 0.35);
  cursor: default;
}

.ghost-btn--danger {
  border-color: rgba(255, 120, 120, 0.6);
  color: rgba(255, 160, 160, 0.85);
}

.ghost-btn--danger:hover,
.ghost-btn--danger:focus-visible {
  border-color: rgba(255, 120, 120, 0.85);
  color: #ffe0e0;
}

.admin-challenge-list {
  list-style: none;
  margin: 1.5rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.admin-challenge-item {
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 10px;
  padding: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.admin-challenge-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  font-size: 0.8rem;
  letter-spacing: 0.35rem;
}

.admin-visibility-badge {
  border-radius: 999px;
  padding: 0.15rem 0.75rem;
  font-size: 0.65rem;
  letter-spacing: 0.25rem;
  border: 1px solid rgba(255, 255, 255, 0.3);
  text-transform: uppercase;
}

.admin-visibility-badge[data-visible='true'] {
  background: rgba(0, 217, 102, 0.15);
  border-color: rgba(0, 217, 102, 0.6);
  color: #2effa9;
}

.admin-visibility-badge[data-visible='false'] {
  background: rgba(255, 48, 67, 0.15);
  border-color: rgba(255, 48, 67, 0.6);
  color: #ff7b8a;
}

.admin-difficulty-badge {
  border-radius: 999px;
  padding: 0.15rem 0.6rem;
  font-size: 0.65rem;
  letter-spacing: 0.25rem;
  border: 1px solid rgba(255, 255, 255, 0.3);
  text-transform: uppercase;
}

.admin-difficulty-badge--easy {
  border-color: rgba(148, 255, 194, 0.7);
  color: #94ffc2;
}

.admin-difficulty-badge--medium {
  border-color: rgba(255, 233, 120, 0.7);
  color: #ffe978;
}

.admin-difficulty-badge--hard {
  border-color: rgba(255, 165, 102, 0.7);
  color: #ffa566;
}

.admin-difficulty-badge--insane {
  border-color: rgba(255, 93, 125, 0.7);
  color: #ff5d7d;
}

.admin-difficulty-badge {
  border-radius: 999px;
  padding: 0.15rem 0.6rem;
  font-size: 0.65rem;
  letter-spacing: 0.25rem;
  border: 1px solid rgba(255, 255, 255, 0.3);
  text-transform: uppercase;
}

.admin-difficulty-badge--easy {
  border-color: rgba(148, 255, 194, 0.7);
  color: #94ffc2;
}

.admin-difficulty-badge--medium {
  border-color: rgba(255, 233, 120, 0.7);
  color: #ffe978;
}

.admin-difficulty-badge--hard {
  border-color: rgba(255, 165, 102, 0.7);
  color: #ffa566;
}

.admin-difficulty-badge--insane {
  border-color: rgba(255, 93, 125, 0.7);
  color: #ff5d7d;
}

.admin-challenge-description {
  margin: 0.25rem 0 0.75rem;
  white-space: pre-line;
  color: rgba(255, 255, 255, 0.78);
  line-height: 1.4;
}

.admin-challenge-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.admin-users {
  margin-top: 2rem;
}

.admin-user-list {
  list-style: none;
  margin: 1.5rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.admin-user-item {
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 12px;
  padding: 1rem;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.75rem;
  align-items: center;
}

.admin-user-item strong {
  letter-spacing: 0.3rem;
}

.admin-user-actions {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.admin-user-modal[hidden] {
  display: none;
}

.admin-user-modal {
  position: fixed;
  inset: 0;
  z-index: 1001;
  display: flex;
  align-items: stretch;
  justify-content: flex-end;
  background: rgba(0, 0, 0, 0.8);
}

.admin-user-modal-content {
  position: relative;
  flex: 1;
  max-width: 600px;
  background: rgba(3, 10, 18, 0.95);
  border-left: 1px solid rgba(0, 255, 180, 0.25);
  padding: clamp(1.5rem, 4vw, 3rem);
  overflow-y: auto;
  z-index: 1;
}

.admin-user-modal-header {
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.35rem;
  margin-bottom: 1rem;
}

.admin-user-meta,
.admin-user-password,
.admin-user-add,
.admin-user-solves {
  margin-bottom: 1.5rem;
}

.admin-user-meta {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  letter-spacing: 0.2rem;
}

.admin-user-password {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding: 1rem;
  border: 1px solid rgba(0, 255, 150, 0.2);
  border-radius: 14px;
  background: rgba(0, 0, 0, 0.35);
}

.admin-user-password-label {
  letter-spacing: 0.35rem;
  text-transform: uppercase;
  font-size: 0.75rem;
  color: #c9ffe7;
}

.admin-user-password-hint {
  font-size: 0.65rem;
  letter-spacing: 0.2rem;
  color: rgba(255, 255, 255, 0.65);
  margin-top: 0.25rem;
}

.admin-user-password-form {
  display: flex;
  gap: 0.8rem;
  flex-wrap: wrap;
}

.admin-user-password-form input {
  flex: 1 1 220px;
  padding: 0.55rem 0.8rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
}

.admin-user-solve-form {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.admin-user-solve-form select {
  flex: 1 1 220px;
  padding: 0.6rem 0.75rem;
  background: rgba(0, 0, 0, 0.5);
  border-radius: 8px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff;
}

.admin-user-solves-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.admin-user-solves-item {
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 10px;
  padding: 0.75rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.75rem;
}

.admin-user-solves-item button {
  white-space: nowrap;
}

.admin-user-solves-item strong {
  letter-spacing: 0.25rem;
}

.admin-user-solves-item p {
  margin: 0.25rem 0 0;
  font-size: 0.8rem;
  letter-spacing: 0.2rem;
}

.admin-modal[hidden] {
  display: none;
}

.admin-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
}

.admin-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(5, 5, 5, 0.85);
  backdrop-filter: blur(10px);
  opacity: 0;
  z-index: 0;
}

.admin-modal-content {
  position: relative;
  width: min(900px, 95vw);
  max-height: 95vh;
  overflow-y: auto;
  border-radius: 24px;
  border: 1px solid rgba(0, 255, 230, 0.35);
  background: linear-gradient(135deg, rgba(0, 0, 0, 0.92), rgba(0, 30, 30, 0.85));
  padding: clamp(1.5rem, 3vw, 2.5rem);
  opacity: 0;
  transform: translateY(30px) scale(0.96);
  box-shadow: 0 40px 90px rgba(0, 0, 0, 0.65);
  z-index: 1;
}

.admin-modal.is-active .admin-modal-backdrop {
  animation: backdropFade 0.35s ease forwards;
}

.admin-modal.is-active .admin-modal-content {
  animation: adminModalZoom 0.35s ease forwards;
}

.admin-modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  border: none;
  background: rgba(0, 0, 0, 0.4);
  color: #fff;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  font-size: 1.5rem;
  cursor: pointer;
  transition: transform 0.2s ease, background 0.2s ease;
}

.admin-modal-close:hover,
.admin-modal-close:focus-visible {
  transform: scale(1.08);
  background: rgba(255, 255, 255, 0.15);
}

.admin-modal-header {
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.3rem;
  margin-bottom: 1.5rem;
}

.admin-modal-header p {
  color: #6bffe0;
  margin-bottom: 0.35rem;
}

.admin-modal-header h3 {
  margin: 0;
  font-size: clamp(1.4rem, 4vw, 2.2rem);
}

.admin-form {
  margin-top: 0;
}

.admin-actions {
  justify-content: flex-end;
}

@keyframes adminModalZoom {
  0% {
    transform: translateY(40px) scale(0.9);
    opacity: 0;
  }
  100% {
    transform: translateY(0) scale(1);
    opacity: 1;
  }
}

.ctf-panels {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
}

.ctf-card {
  border: 1px solid rgba(0, 255, 90, 0.2);
  border-radius: 20px;
  padding: 1.8rem;
  background: rgba(0, 0, 0, 0.7);
  display: flex;
  flex-direction: column;
  gap: 1rem;
  min-height: 220px;
}

.ctf-card header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.85rem;
  letter-spacing: 0.45rem;
}

.ctf-card h2 {
  font-size: 1rem;
  letter-spacing: 0.45rem;
}

.status-pill {
  padding: 0.2rem 0.8rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.35);
  font-size: 0.7rem;
  letter-spacing: 0.3rem;
}

.status-pill.live {
  border-color: var(--accent);
  color: var(--accent);
}

.placeholder-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  color: var(--muted);
  letter-spacing: 0.25rem;
}

.placeholder-block {
  border: 1px dashed rgba(255, 255, 255, 0.2);
  border-radius: 16px;
  padding: 1.5rem;
  letter-spacing: 0.25rem;
  color: rgba(255, 255, 255, 0.75);
}

.profile-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 1rem;
}

.profile-grid p {
  letter-spacing: 0.3rem;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.7);
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}

.profile-grid strong {
  font-size: 1rem;
  color: #fff;
}

.route-screen {
  padding-top: 6rem;
}

.route-screen .card-footnote a {
  color: var(--accent);
}

[hidden] {
  display: none !important;
}

@keyframes glitchSweepA {
  0% {
    clip-path: inset(0% 0% 0% 0%);
    transform: translate3d(0, 0, 0);
    opacity: 0.55;
  }
  22% {
    clip-path: inset(0% 0% 50% 0%);
    transform: translate3d(-4px, -8px, 0);
    opacity: 0.65;
  }
  44% {
    clip-path: inset(45% 0% 0% 0%);
    transform: translate3d(-4px, 8px, 0);
    opacity: 0.4;
  }
  68% {
    clip-path: inset(0% 40% 0% 0%);
    transform: translate3d(5px, -3px, 0);
    opacity: 0.38;
  }
  86% {
    clip-path: inset(0% 0% 0% 35%);
    transform: translate3d(-5px, 3px, 0);
    opacity: 0.3;
  }
  100% {
    clip-path: inset(0% 0% 0% 0%);
    transform: translate3d(0, 0, 0);
    opacity: 0.55;
  }
}

@keyframes glitchSweepB {
  0% {
    clip-path: inset(0% 0% 0% 0%);
    transform: translate3d(0, 0, 0);
    opacity: 0.45;
  }
  24% {
    clip-path: inset(0% 55% 0% 0%);
    transform: translate3d(8px, -5px, 0);
    opacity: 0.58;
  }
  48% {
    clip-path: inset(55% 0% 0% 8%);
    transform: translate3d(9px, 5px, 0);
    opacity: 0.32;
  }
  70% {
    clip-path: inset(0% 0% 45% 0%);
    transform: translate3d(-7px, -3px, 0);
    opacity: 0.34;
  }
  88% {
    clip-path: inset(35% 0% 0% 0%);
    transform: translate3d(-4px, 6px, 0);
    opacity: 0.26;
  }
  100% {
    clip-path: inset(0% 0% 0% 0%);
    transform: translate3d(0, 0, 0);
    opacity: 0.45;
  }
}

@keyframes glitchSweepC {
  0% {
    clip-path: inset(10% 0% 10% 0%);
    transform: translate3d(0, -6px, 0);
    opacity: 0.4;
  }
  28% {
    clip-path: inset(0% 30% 35% 0%);
    transform: translate3d(-6px, 7px, 0);
    opacity: 0.5;
  }
  50% {
    clip-path: inset(40% 0% 0% 25%);
    transform: translate3d(7px, -5px, 0);
    opacity: 0.28;
  }
  72% {
    clip-path: inset(0% 0% 50% 25%);
    transform: translate3d(-9px, 3px, 0);
    opacity: 0.3;
  }
  90% {
    clip-path: inset(15% 8% 0% 0%);
    transform: translate3d(6px, -5px, 0);
    opacity: 0.24;
  }
  100% {
    clip-path: inset(10% 0% 10% 0%);
    transform: translate3d(0, -6px, 0);
    opacity: 0.4;
  }
}

@keyframes smokeRise {
  0% {
    opacity: 0;
    transform: translate3d(
        calc(-50% + var(--smoke-lean, 0) * 12px + var(--drift, 0px)),
        35px,
        0
      )
      scale(calc(var(--scale, 1) * 0.75));
  }
  15% {
    opacity: 0.4;
  }
  60% {
    opacity: 0.25;
  }
  100% {
    opacity: 0;
    transform: translate3d(
        calc(-50% + var(--smoke-lean, 0) * 30px + var(--drift, 0px)),
        -140px,
        0
      )
      scale(calc(var(--scale, 1) * 1.2));
  }
}

@keyframes sloganShimmer {
  0% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
  100% {
    background-position: 0% 50%;
  }
}

@keyframes promptSweep {
  0% {
    clip-path: inset(0 100% 0 0);
    opacity: 0;
    transform: translateX(-20px);
  }
  100% {
    clip-path: inset(0 0 0 0);
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes particleBurst {
  0% {
    opacity: 0.6;
    transform: scale(0.85);
  }
  70% {
    opacity: 0.2;
    transform: scale(1.15);
  }
  100% {
    opacity: 0;
    transform: scale(1.4);
  }
}

@keyframes blockParticle {
  0% {
    opacity: 0.9;
    transform: translate(0, 0) scale(1);
  }
  60% {
    opacity: 0.6;
  }
  100% {
    opacity: 0;
    transform: translate(var(--particle-x, 0), var(--particle-y, -20px)) scale(0.2);
  }
}

@keyframes typeParticle {
  0% {
    opacity: 0.9;
    transform: translateY(0) scale(1);
  }
  70% {
    opacity: 0.5;
  }
  100% {
    opacity: 0;
    transform: translate(var(--particle-x, 0), var(--particle-y, -15px)) scale(0.3);
  }
}

@keyframes matrixTrail {
  from {
    opacity: 0.2;
    filter: blur(0.2px);
  }
  to {
    opacity: 1;
    text-shadow: 0 0 12px rgba(0, 255, 90, 0.7);
  }
}

@media (max-width: 720px) {
  .site-nav {
    flex-direction: column;
    gap: 1rem;
  }

  .hero {
    padding-top: 7rem;
  }

  .hero h1 {
    letter-spacing: 0.6rem;
  }

  .nav-links {
    justify-content: center;
  }

  .logo {
    justify-content: center;
  }

  .nav-notification {
    width: 100%;
    justify-content: center;
  }

  .nav-notification-popover {
    right: 50%;
    left: auto;
    transform: translate(50%, -8px);
  }

  .nav-notification.is-open .nav-notification-popover {
    transform: translate(50%, 0);
  }

  button,
  .nav-links a,
  .ctf-nav-link {
    letter-spacing: 0.25rem;
  }

  .terminal-layout {
    min-height: auto;
    padding: 5rem 1rem 2rem;
  }

  .terminal-shell {
    min-height: initial;
  }
}
.ctf-view[data-view='admin'] .ctf-section {
  flex: 1;
  display: flex;
  flex-direction: column;
}
.scoreboard-header .scoreboard-search input {
  padding: 0.5rem 0.85rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.35);
  background: rgba(0, 0, 0, 0.3);
  color: #d8ffe4;
  letter-spacing: 0.15rem;
  min-width: min(320px, 70vw);
  box-shadow: inset 0 0 18px rgba(0, 255, 120, 0.15);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.scoreboard-header .scoreboard-search input::placeholder {
  color: rgba(0, 255, 140, 0.55);
}
.body.challenge-solved .solve-overlay-label::before,
.body.challenge-solved .solve-overlay-label::after {
  animation-duration: 0.35s;
}

@keyframes glitchShift {
  0% { clip-path: inset(0 0 60% 0); transform: translate(-2px, -1px); }
  25% { clip-path: inset(20% 0 40% 0); transform: translate(2px, -2px); }
  50% { clip-path: inset(40% 0 20% 0); transform: translate(-1px, 1px); }
  75% { clip-path: inset(60% 0 0 0); transform: translate(3px, -1px); }
  100% { clip-path: inset(0 0 60% 0); transform: translate(-2px, -1px); }
}
