@import url('https://fonts.googleapis.com/css2?family=VT323&display=swap');

:root {
  --bg: #080808;
  --green: #c8f542;
  --red: #cc0000;
  --grey: #888888;
  --card-bg: #111111;
  --border: #1a1a1a;
  --cyan: #00ffff;
}

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

html {
  background: var(--bg);
  color: var(--green);
  font-family: 'VT323', 'Courier New', monospace;
  font-size: 18px;
  scroll-behavior: smooth;
}

body {
  min-height: 100vh;
  background: var(--bg);
  position: relative;
  overflow-x: hidden;
}

/* SCANLINES OVERLAY */
body::before {
  content: '';
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: repeating-linear-gradient(
    0deg,
    rgba(0, 0, 0, 0.18) 0px,
    rgba(0, 0, 0, 0.18) 1px,
    transparent 1px,
    transparent 3px
  );
  pointer-events: none;
  z-index: 9998;
}

/* STATIC NOISE OVERLAY */
body::after {
  content: '';
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
  pointer-events: none;
  z-index: 9997;
  opacity: 0.3;
}

/* ── ANIMATIONS ── */

@keyframes flicker {
  0%, 89%, 91%, 93%, 95%, 100% { opacity: 1; }
  90% { opacity: 0.3; }
  92% { opacity: 0.8; }
  94% { opacity: 0.2; }
  96% { opacity: 0.9; }
}

@keyframes glitch-title {
  0%, 100% {
    text-shadow: -3px 0 var(--red), 3px 0 var(--cyan);
    transform: translateX(0) skewX(0deg);
  }
  5% {
    text-shadow: 3px 0 var(--red), -3px 0 var(--cyan);
    transform: translateX(-3px) skewX(-1deg);
  }
  10% {
    text-shadow: -3px 0 var(--red), 3px 0 var(--cyan);
    transform: translateX(3px) skewX(1deg);
  }
  15%, 85% {
    text-shadow: -2px 0 var(--red), 2px 0 var(--cyan);
    transform: translateX(0) skewX(0deg);
  }
  90% {
    text-shadow: 4px 0 var(--red), -4px 0 var(--cyan);
    transform: translateX(-2px);
  }
  95% {
    text-shadow: -4px 0 var(--red), 4px 0 var(--cyan);
    transform: translateX(2px);
  }
}

@keyframes glitch-card {
  0%, 100% { transform: translateX(0); filter: none; }
  20% { transform: translateX(-4px); filter: hue-rotate(90deg); }
  40% { transform: translateX(4px); filter: hue-rotate(-90deg); }
  60% { transform: translateX(-2px); filter: hue-rotate(180deg); }
  80% { transform: translateX(2px); filter: none; }
}

@keyframes scanline-roll {
  0% { background-position: 0 0; }
  100% { background-position: 0 100%; }
}

@keyframes blink {
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: 0; }
}

@keyframes static-flash {
  0%, 100% { opacity: 0; }
  50% { opacity: 0.05; }
}

@keyframes pulse-red {
  0%, 100% { box-shadow: 0 0 4px rgba(204,0,0,0.3), inset 0 0 4px rgba(204,0,0,0.1); }
  50% { box-shadow: 0 0 16px rgba(204,0,0,0.7), inset 0 0 8px rgba(204,0,0,0.2); }
}

/* ── NAVIGATION ── */

nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  background: rgba(8, 8, 8, 0.95);
  border-bottom: 1px solid var(--red);
  padding: 8px 32px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  backdrop-filter: blur(2px);
}

nav .nav-logo {
  color: var(--red);
  font-size: 1.4rem;
  text-decoration: none;
  letter-spacing: 3px;
  animation: flicker 8s infinite;
}

nav .nav-links {
  display: flex;
  gap: 32px;
  list-style: none;
}

nav .nav-links a {
  color: var(--grey);
  text-decoration: none;
  font-size: 1.1rem;
  letter-spacing: 2px;
  transition: color 0.1s;
  text-transform: uppercase;
}

nav .nav-links a:hover {
  color: var(--green);
  text-shadow: 0 0 8px var(--green);
}

nav .nav-links a.active {
  color: var(--red);
  text-shadow: 0 0 6px var(--red);
}

/* ── HERO ── */

.hero {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 80px 20px 60px;
  position: relative;
  background:
    radial-gradient(ellipse at center, rgba(204,0,0,0.04) 0%, transparent 70%),
    var(--bg);
  overflow: hidden;
}

.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    90deg,
    transparent 0px,
    transparent 2px,
    rgba(204,0,0,0.015) 2px,
    rgba(204,0,0,0.015) 4px
  );
  pointer-events: none;
}

.hero-title {
  font-size: clamp(3rem, 10vw, 8rem);
  color: var(--red);
  letter-spacing: 8px;
  line-height: 1;
  animation: flicker 6s infinite, glitch-title 12s infinite;
  margin-bottom: 16px;
  text-transform: uppercase;
}

.hero-subtitle {
  font-size: clamp(1.2rem, 3vw, 1.8rem);
  color: var(--grey);
  letter-spacing: 4px;
  margin-bottom: 48px;
  font-family: 'Courier New', monospace;
}

.hero-meta {
  font-size: 0.9rem;
  color: #333;
  letter-spacing: 3px;
  font-family: 'Courier New', monospace;
  margin-top: 40px;
}

.hero-meta span {
  animation: blink 1.2s infinite;
}

.scroll-indicator {
  position: absolute;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%);
  color: var(--red);
  font-size: 1.2rem;
  letter-spacing: 3px;
  opacity: 0.6;
  animation: blink 2s infinite;
}

/* ── SECTIONS ── */

section {
  padding: 60px 32px;
  max-width: 1400px;
  margin: 0 auto;
}

.section-header {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 40px;
}

.section-title {
  font-size: clamp(1.8rem, 4vw, 2.8rem);
  color: var(--red);
  letter-spacing: 4px;
  text-transform: uppercase;
}

.section-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(to right, var(--red), transparent);
}

.section-count {
  color: var(--grey);
  font-size: 1rem;
  letter-spacing: 2px;
  font-family: 'Courier New', monospace;
}

/* ── CARDS ── */

.cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  gap: 24px;
}

.card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  position: relative;
  cursor: pointer;
  transition: border-color 0.2s, box-shadow 0.2s;
  overflow: hidden;
}

.card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    0deg,
    rgba(0,0,0,0.08) 0px,
    rgba(0,0,0,0.08) 1px,
    transparent 1px,
    transparent 4px
  );
  pointer-events: none;
  z-index: 2;
}

.card:hover {
  border-color: var(--red);
  box-shadow: 0 0 20px rgba(204,0,0,0.3), inset 0 0 20px rgba(204,0,0,0.05);
  animation: glitch-card 0.3s ease;
}

.card-image {
  width: 100%;
  height: 220px;
  object-fit: cover;
  display: block;
  filter: grayscale(60%) contrast(1.2);
}

.card-no-image {
  width: 100%;
  height: 220px;
  background: #0c0c0c;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 8px;
  border-bottom: 1px solid var(--border);
  position: relative;
  overflow: hidden;
}

.card-no-image::after {
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    45deg,
    rgba(204,0,0,0.03) 0px,
    rgba(204,0,0,0.03) 1px,
    transparent 1px,
    transparent 8px
  );
}

.card-no-image-text {
  color: #2a2a2a;
  font-size: 1.2rem;
  letter-spacing: 3px;
  text-align: center;
  font-family: 'Courier New', monospace;
  z-index: 1;
}

.card-no-image-icon {
  font-size: 3rem;
  color: #1a1a1a;
  z-index: 1;
}

/* Entity silhouettes */
.silhouette-siren {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
}

.silhouette-siren svg,
.silhouette-cone svg,
.silhouette-boiled svg {
  filter: drop-shadow(0 0 8px rgba(204,0,0,0.3));
}

.card-body {
  padding: 20px;
}

.card-category {
  display: inline-block;
  background: rgba(204,0,0,0.15);
  border: 1px solid rgba(204,0,0,0.3);
  color: var(--red);
  font-size: 0.75rem;
  letter-spacing: 3px;
  padding: 2px 10px;
  margin-bottom: 10px;
  text-transform: uppercase;
  font-family: 'Courier New', monospace;
}

.card-title {
  font-size: 1.6rem;
  color: var(--green);
  letter-spacing: 2px;
  margin-bottom: 6px;
  text-transform: uppercase;
}

.card-creator {
  color: var(--grey);
  font-size: 0.85rem;
  letter-spacing: 2px;
  margin-bottom: 12px;
  font-family: 'Courier New', monospace;
}

.card-creator::before {
  content: '// ';
  color: #333;
}

.card-desc {
  color: #999;
  font-size: 0.95rem;
  line-height: 1.5;
  font-family: 'Courier New', monospace;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.card-footer {
  padding: 12px 20px;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.card-footer-text {
  color: #333;
  font-size: 0.75rem;
  letter-spacing: 2px;
  font-family: 'Courier New', monospace;
}

.featured-badge {
  background: rgba(204,0,0,0.2);
  color: var(--red);
  font-size: 0.7rem;
  letter-spacing: 2px;
  padding: 2px 8px;
  border: 1px solid rgba(204,0,0,0.4);
  font-family: 'Courier New', monospace;
  animation: pulse-red 3s infinite;
}

/* ── FILTER BAR ── */

.filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 40px;
  align-items: center;
}

.filter-label {
  color: var(--grey);
  font-size: 0.9rem;
  letter-spacing: 2px;
  font-family: 'Courier New', monospace;
  margin-right: 4px;
}

.filter-btn {
  background: transparent;
  border: 1px solid #2a2a2a;
  color: var(--grey);
  font-family: 'VT323', 'Courier New', monospace;
  font-size: 1rem;
  letter-spacing: 2px;
  padding: 4px 16px;
  cursor: pointer;
  transition: all 0.15s;
  text-transform: uppercase;
}

.filter-btn:hover {
  border-color: var(--green);
  color: var(--green);
  text-shadow: 0 0 6px var(--green);
}

.filter-btn.active {
  border-color: var(--red);
  color: var(--red);
  background: rgba(204,0,0,0.1);
  text-shadow: 0 0 6px var(--red);
}

/* ── MODAL ── */

.modal-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.92);
  z-index: 2000;
  align-items: center;
  justify-content: center;
  padding: 24px;
  backdrop-filter: blur(4px);
}

.modal-overlay.open {
  display: flex;
}

.modal {
  background: var(--card-bg);
  border: 1px solid var(--red);
  max-width: 780px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  position: relative;
  box-shadow: 0 0 40px rgba(204,0,0,0.3);
}

.modal::before {
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    0deg,
    rgba(0,0,0,0.06) 0px,
    rgba(0,0,0,0.06) 1px,
    transparent 1px,
    transparent 4px
  );
  pointer-events: none;
  z-index: 0;
}

.modal-header {
  padding: 20px 24px 16px;
  border-bottom: 1px solid var(--border);
  position: relative;
  z-index: 1;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}

.modal-title {
  font-size: 2rem;
  color: var(--red);
  letter-spacing: 3px;
  text-transform: uppercase;
}

.modal-close {
  background: none;
  border: 1px solid #333;
  color: var(--grey);
  font-family: 'VT323', monospace;
  font-size: 1.4rem;
  cursor: pointer;
  padding: 2px 10px;
  transition: all 0.15s;
  letter-spacing: 1px;
}

.modal-close:hover {
  border-color: var(--red);
  color: var(--red);
}

.modal-image {
  width: 100%;
  max-height: 300px;
  object-fit: cover;
  display: block;
  filter: grayscale(50%) contrast(1.1);
  position: relative;
  z-index: 1;
}

.modal-no-image {
  width: 100%;
  height: 200px;
  background: #0c0c0c;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #222;
  font-family: 'Courier New', monospace;
  letter-spacing: 4px;
  font-size: 1.1rem;
  border-bottom: 1px solid var(--border);
  position: relative;
  z-index: 1;
}

.modal-body {
  padding: 24px;
  position: relative;
  z-index: 1;
}

.modal-meta {
  display: flex;
  gap: 16px;
  margin-bottom: 20px;
  flex-wrap: wrap;
  align-items: center;
}

.modal-category {
  background: rgba(204,0,0,0.15);
  border: 1px solid rgba(204,0,0,0.3);
  color: var(--red);
  font-size: 0.8rem;
  letter-spacing: 3px;
  padding: 3px 12px;
  text-transform: uppercase;
  font-family: 'Courier New', monospace;
}

.modal-creator {
  color: var(--grey);
  font-size: 0.9rem;
  letter-spacing: 2px;
  font-family: 'Courier New', monospace;
}

.modal-section-label {
  color: var(--red);
  font-size: 0.8rem;
  letter-spacing: 4px;
  text-transform: uppercase;
  font-family: 'Courier New', monospace;
  margin-bottom: 8px;
  margin-top: 20px;
  border-left: 2px solid var(--red);
  padding-left: 8px;
}

.modal-text {
  color: #aaa;
  font-size: 1rem;
  line-height: 1.7;
  font-family: 'Courier New', monospace;
}

.modal-encounter {
  color: var(--green);
  font-size: 1rem;
  line-height: 1.7;
  font-family: 'Courier New', monospace;
  background: rgba(200,245,66,0.03);
  border: 1px solid rgba(200,245,66,0.1);
  padding: 16px;
  margin-top: 8px;
}

/* ── FORMS ── */

.page-header {
  padding: 120px 32px 40px;
  text-align: center;
}

.page-title {
  font-size: clamp(2rem, 6vw, 4rem);
  color: var(--red);
  letter-spacing: 6px;
  text-transform: uppercase;
  animation: flicker 10s infinite;
}

.page-subtitle {
  color: var(--grey);
  letter-spacing: 3px;
  margin-top: 8px;
  font-family: 'Courier New', monospace;
  font-size: 0.9rem;
}

.form-container {
  max-width: 720px;
  margin: 0 auto;
  padding: 0 32px 80px;
}

.form-block {
  background: var(--card-bg);
  border: 1px solid var(--border);
  padding: 40px;
  position: relative;
}

.form-block::before {
  content: 'FORM_INIT :: STATUS_READY';
  position: absolute;
  top: -10px;
  left: 20px;
  background: var(--bg);
  color: #333;
  font-size: 0.7rem;
  letter-spacing: 2px;
  font-family: 'Courier New', monospace;
  padding: 0 8px;
}

.form-group {
  margin-bottom: 24px;
}

label {
  display: block;
  color: var(--red);
  font-size: 0.9rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  margin-bottom: 8px;
  font-family: 'Courier New', monospace;
}

label .optional {
  color: #444;
  font-size: 0.75rem;
  letter-spacing: 1px;
  text-transform: none;
}

input[type="text"],
input[type="url"],
input[type="password"],
select,
textarea {
  width: 100%;
  background: #0c0c0c;
  border: 1px solid #2a2a2a;
  color: var(--green);
  font-family: 'Courier New', monospace;
  font-size: 1rem;
  padding: 10px 14px;
  outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
  appearance: none;
  -webkit-appearance: none;
}

input[type="text"]:focus,
input[type="url"]:focus,
input[type="password"]:focus,
select:focus,
textarea:focus {
  border-color: var(--red);
  box-shadow: 0 0 8px rgba(204,0,0,0.2);
}

select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M6 8L0 0h12z' fill='%23cc0000'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 36px;
  cursor: pointer;
}

select option {
  background: #111;
  color: var(--green);
}

textarea {
  resize: vertical;
  min-height: 100px;
  line-height: 1.6;
}

.char-count {
  text-align: right;
  color: #333;
  font-size: 0.75rem;
  font-family: 'Courier New', monospace;
  margin-top: 4px;
}

.char-count.warn {
  color: var(--red);
}

.checkbox-group {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}

input[type="checkbox"] {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  accent-color: var(--red);
  margin-top: 2px;
  cursor: pointer;
}

.checkbox-label {
  color: var(--grey);
  font-family: 'Courier New', monospace;
  font-size: 0.9rem;
  line-height: 1.5;
  cursor: pointer;
}

.btn-transmit {
  display: block;
  width: 100%;
  background: rgba(204,0,0,0.15);
  border: 1px solid var(--red);
  color: var(--red);
  font-family: 'VT323', 'Courier New', monospace;
  font-size: 1.8rem;
  letter-spacing: 6px;
  padding: 16px;
  cursor: pointer;
  text-transform: uppercase;
  margin-top: 32px;
  transition: all 0.2s;
  position: relative;
  overflow: hidden;
}

.btn-transmit::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--red);
  opacity: 0;
  transition: opacity 0.2s;
}

.btn-transmit:hover {
  color: #fff;
  box-shadow: 0 0 20px rgba(204,0,0,0.5);
  animation: glitch-card 0.2s;
}

.btn-transmit:hover::before {
  opacity: 0.15;
}

.btn-transmit:disabled {
  opacity: 0.4;
  cursor: not-allowed;
  animation: none;
}

.confirmation {
  display: none;
  text-align: center;
  padding: 40px;
}

.confirmation.visible {
  display: block;
}

.confirmation-title {
  font-size: 2rem;
  color: var(--green);
  letter-spacing: 4px;
  margin-bottom: 16px;
  animation: flicker 4s infinite;
}

.confirmation-text {
  color: var(--grey);
  letter-spacing: 2px;
  font-family: 'Courier New', monospace;
  font-size: 0.9rem;
}

/* ── ADMIN ── */

.admin-header-bar {
  background: rgba(204,0,0,0.1);
  border: 1px solid rgba(204,0,0,0.3);
  padding: 16px 24px;
  margin-bottom: 32px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.admin-count {
  color: var(--red);
  font-size: 1.2rem;
  letter-spacing: 3px;
}

.admin-status {
  color: var(--grey);
  font-size: 0.85rem;
  letter-spacing: 2px;
  font-family: 'Courier New', monospace;
}

.pending-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.pending-card {
  background: var(--card-bg);
  border: 1px solid #1f1f1f;
  padding: 24px;
  position: relative;
}

.pending-card-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 16px;
  gap: 16px;
  flex-wrap: wrap;
}

.pending-card-title {
  font-size: 1.5rem;
  color: var(--green);
  letter-spacing: 2px;
  text-transform: uppercase;
}

.pending-card-meta {
  color: var(--grey);
  font-size: 0.85rem;
  font-family: 'Courier New', monospace;
  letter-spacing: 2px;
  margin-top: 4px;
}

.pending-card-actions {
  display: flex;
  gap: 12px;
  flex-shrink: 0;
}

.btn-approve,
.btn-reject {
  font-family: 'VT323', monospace;
  font-size: 1.1rem;
  letter-spacing: 2px;
  padding: 6px 20px;
  cursor: pointer;
  border: 1px solid;
  transition: all 0.15s;
  text-transform: uppercase;
}

.btn-approve {
  background: rgba(200,245,66,0.08);
  border-color: rgba(200,245,66,0.4);
  color: var(--green);
}

.btn-approve:hover {
  background: rgba(200,245,66,0.2);
  box-shadow: 0 0 12px rgba(200,245,66,0.3);
}

.btn-reject {
  background: rgba(204,0,0,0.08);
  border-color: rgba(204,0,0,0.4);
  color: var(--red);
}

.btn-reject:hover {
  background: rgba(204,0,0,0.2);
  box-shadow: 0 0 12px rgba(204,0,0,0.3);
}

.pending-card-field {
  margin-bottom: 12px;
}

.pending-field-label {
  color: #444;
  font-size: 0.75rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  font-family: 'Courier New', monospace;
  margin-bottom: 4px;
}

.pending-field-value {
  color: #888;
  font-size: 0.9rem;
  font-family: 'Courier New', monospace;
  line-height: 1.5;
}

.pending-image-url {
  color: var(--grey);
  font-family: 'Courier New', monospace;
  font-size: 0.85rem;
  word-break: break-all;
}

.empty-state {
  text-align: center;
  padding: 80px 32px;
}

.empty-state-title {
  font-size: 2rem;
  color: #2a2a2a;
  letter-spacing: 4px;
  margin-bottom: 12px;
}

.empty-state-text {
  color: #222;
  font-family: 'Courier New', monospace;
  letter-spacing: 2px;
  font-size: 0.9rem;
}

/* ── PASSWORD GATE ── */

.password-gate {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

.password-box {
  background: var(--card-bg);
  border: 1px solid var(--red);
  padding: 48px 40px;
  max-width: 440px;
  width: 100%;
  text-align: center;
  box-shadow: 0 0 40px rgba(204,0,0,0.15);
}

.password-box-title {
  font-size: 2rem;
  color: var(--red);
  letter-spacing: 4px;
  margin-bottom: 8px;
  text-transform: uppercase;
  animation: flicker 6s infinite;
}

.password-box-sub {
  color: #333;
  font-size: 0.8rem;
  letter-spacing: 3px;
  font-family: 'Courier New', monospace;
  margin-bottom: 32px;
}

.password-error {
  color: var(--red);
  font-size: 0.85rem;
  letter-spacing: 2px;
  font-family: 'Courier New', monospace;
  margin-top: 12px;
  min-height: 20px;
  animation: blink 0.5s 3;
}

/* ── GALLERY SPECIFIC ── */

.gallery-container {
  padding: 120px 32px 80px;
  max-width: 1400px;
  margin: 0 auto;
}

.gallery-title {
  font-size: clamp(2rem, 5vw, 3.5rem);
  color: var(--red);
  letter-spacing: 6px;
  margin-bottom: 8px;
  animation: flicker 9s infinite;
}

.gallery-subtitle {
  color: var(--grey);
  font-family: 'Courier New', monospace;
  letter-spacing: 3px;
  font-size: 0.85rem;
  margin-bottom: 40px;
}

/* ── FOOTER ── */

footer {
  border-top: 1px solid #111;
  padding: 32px;
  text-align: center;
}

footer p {
  color: #222;
  font-family: 'Courier New', monospace;
  font-size: 0.8rem;
  letter-spacing: 3px;
}

/* ── LOADING / ERROR ── */

.loading-text {
  color: var(--grey);
  font-family: 'Courier New', monospace;
  letter-spacing: 3px;
  font-size: 0.9rem;
  text-align: center;
  padding: 60px;
}

.loading-text::after {
  content: '...';
  animation: blink 1s infinite;
}

.error-text {
  color: var(--red);
  font-family: 'Courier New', monospace;
  letter-spacing: 2px;
  font-size: 0.9rem;
  text-align: center;
  padding: 40px;
  border: 1px solid rgba(204,0,0,0.2);
}

/* ── CLEARANCE LEVEL BADGES ── */

.clearance-badge {
  display: inline-block;
  font-family: 'Courier New', monospace;
  font-size: 0.65rem;
  letter-spacing: 2px;
  padding: 2px 8px;
  border: 1px solid;
  text-transform: uppercase;
  vertical-align: middle;
  font-weight: bold;
}

.clearance-UNCLASSIFIED  { color: #555; border-color: #333; background: rgba(80,80,80,0.08); }
.clearance-CONTAINED     { color: #1a8c1a; border-color: #1a5c1a; background: rgba(26,140,26,0.08); }
.clearance-ACTIVE        { color: #cc6600; border-color: #884400; background: rgba(204,102,0,0.08); }
.clearance-UNCONTAINED   { color: #cc0000; border-color: #880000; background: rgba(204,0,0,0.1); animation: pulse-red 2s infinite; }
.clearance-OMNIPRESENT   { color: #cc00cc; border-color: #880088; background: rgba(204,0,204,0.08); animation: pulse-omni 1.5s infinite; }

@keyframes pulse-omni {
  0%, 100% { box-shadow: 0 0 4px rgba(204,0,204,0.5); }
  50% { box-shadow: 0 0 14px rgba(204,0,204,0.9), 0 0 28px rgba(204,0,204,0.3); }
}

.clearance-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  margin-right: 5px;
  vertical-align: middle;
}
.clearance-dot-UNCLASSIFIED  { background: #555; }
.clearance-dot-CONTAINED     { background: #1a8c1a; box-shadow: 0 0 4px #1a8c1a; }
.clearance-dot-ACTIVE        { background: #cc6600; box-shadow: 0 0 4px #cc6600; animation: blink 1.5s infinite; }
.clearance-dot-UNCONTAINED   { background: #cc0000; box-shadow: 0 0 6px #cc0000; animation: blink 0.8s infinite; }
.clearance-dot-OMNIPRESENT   { background: #cc00cc; box-shadow: 0 0 8px #cc00cc; animation: blink 0.4s infinite; }

/* Clearance selector in admin */
.clearance-select {
  background: #0c0c0c;
  border: 1px solid #2a2a2a;
  color: var(--green);
  font-family: 'Courier New', monospace;
  font-size: 0.8rem;
  padding: 4px 28px 4px 8px;
  letter-spacing: 1px;
  cursor: pointer;
  outline: none;
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M5 6L0 0h10z' fill='%23cc0000'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 8px center;
}
.clearance-select:focus { border-color: var(--red); }

/* Approved entries management table */
.approved-table {
  width: 100%;
  border-collapse: collapse;
  font-family: 'Courier New', monospace;
  font-size: 0.85rem;
  margin-top: 16px;
}
.approved-table th {
  color: var(--red);
  text-align: left;
  font-size: 0.7rem;
  letter-spacing: 3px;
  padding: 8px 12px;
  border-bottom: 1px solid #1a1a1a;
  text-transform: uppercase;
}
.approved-table td {
  color: #888;
  padding: 10px 12px;
  border-bottom: 1px solid #111;
  vertical-align: middle;
}
.approved-table tr:hover td { background: rgba(204,0,0,0.03); }
.approved-table .entry-title { color: var(--green); letter-spacing: 1px; }

/* ── NOTIFICATION BADGE ── */

#archivist-badge {
  position: absolute;
  top: -8px;
  right: -14px;
  background: var(--red);
  color: #fff;
  font-family: 'Courier New', monospace;
  font-size: 0.6rem;
  font-weight: bold;
  min-width: 16px;
  height: 16px;
  border-radius: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 3px;
  letter-spacing: 0;
  animation: pulse-badge 1.5s infinite;
  pointer-events: none;
  box-shadow: 0 0 6px rgba(204,0,0,0.8);
}

@keyframes pulse-badge {
  0%, 100% { box-shadow: 0 0 4px rgba(204,0,0,0.8); transform: scale(1); }
  50% { box-shadow: 0 0 10px rgba(204,0,0,1), 0 0 20px rgba(204,0,0,0.4); transform: scale(1.1); }
}

/* ── SIGNAL INTERCEPTED TOAST ── */

#signal-toast {
  position: fixed;
  bottom: 32px;
  right: 32px;
  z-index: 9999;
  background: #0d0d0d;
  border: 1px solid var(--red);
  border-left: 3px solid var(--red);
  padding: 16px 20px;
  min-width: 280px;
  cursor: pointer;
  box-shadow: 0 0 24px rgba(204,0,0,0.3);
  transform: translateX(120%);
  opacity: 0;
  transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.4s ease;
}

#signal-toast.toast-show {
  transform: translateX(0);
  opacity: 1;
}

#signal-toast:hover {
  background: rgba(204,0,0,0.08);
  box-shadow: 0 0 32px rgba(204,0,0,0.5);
}

.toast-bar {
  height: 2px;
  background: var(--red);
  margin-bottom: 10px;
  animation: toast-scan 2s linear infinite;
  background: repeating-linear-gradient(90deg, var(--red) 0%, transparent 50%, var(--red) 100%);
  background-size: 200% 100%;
}

@keyframes toast-scan {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.toast-label {
  color: var(--red);
  font-family: 'VT323', monospace;
  font-size: 1.2rem;
  letter-spacing: 3px;
  margin-bottom: 4px;
  animation: flicker 3s infinite;
}

.toast-msg {
  color: var(--green);
  font-family: 'Courier New', monospace;
  font-size: 0.8rem;
  letter-spacing: 1px;
  margin-bottom: 6px;
}

.toast-sub {
  color: #333;
  font-family: 'Courier New', monospace;
  font-size: 0.7rem;
  letter-spacing: 3px;
}

/* ── UTILITY ── */

.hidden { display: none !important; }

.text-red { color: var(--red); }
.text-green { color: var(--green); }
.text-grey { color: var(--grey); }

::selection {
  background: var(--red);
  color: #fff;
}

::-webkit-scrollbar {
  width: 6px;
}

::-webkit-scrollbar-track {
  background: #0a0a0a;
}

::-webkit-scrollbar-thumb {
  background: #2a2a2a;
}

::-webkit-scrollbar-thumb:hover {
  background: var(--red);
}

/* ══════════════════════════════════════════
   MOBILE RESPONSIVE — SLIDABLE & STACKED
   ══════════════════════════════════════════ */

@media (max-width: 768px) {

  /* NAV — horizontal scroll instead of wrapping */
  nav {
    padding: 8px 16px;
    gap: 12px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    flex-wrap: nowrap;
    white-space: nowrap;
  }
  nav::-webkit-scrollbar { display: none; }

  nav .nav-logo {
    font-size: 1.1rem;
    letter-spacing: 2px;
    flex-shrink: 0;
  }

  nav .nav-links {
    gap: 20px;
    flex-shrink: 0;
  }

  nav .nav-links a {
    font-size: 0.95rem;
    letter-spacing: 1px;
  }

  /* HERO */
  .hero {
    padding: 90px 16px 60px;
  }

  .hero-title {
    letter-spacing: 4px;
  }

  .hero-subtitle {
    letter-spacing: 2px;
    margin-bottom: 32px;
  }

  .hero-meta {
    font-size: 0.75rem;
    letter-spacing: 1px;
    padding: 0 8px;
    text-align: center;
  }

  /* SECTIONS */
  section {
    padding: 40px 16px;
  }

  .section-header {
    flex-wrap: wrap;
    gap: 8px;
  }

  /* CARDS GRID — single column on mobile */
  .cards-grid {
    grid-template-columns: 1fr;
    gap: 16px;
  }

  .card-image,
  .card-no-image {
    height: 180px;
  }

  /* FILTER BAR — horizontal swipe */
  .filter-bar {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 8px;
    gap: 8px;
    margin-bottom: 24px;
  }
  .filter-bar::-webkit-scrollbar { display: none; }

  .filter-label {
    flex-shrink: 0;
    font-size: 0.8rem;
  }

  .filter-btn {
    flex-shrink: 0;
    padding: 4px 12px;
    font-size: 0.9rem;
  }

  /* GALLERY CONTAINER */
  .gallery-container {
    padding: 100px 16px 60px;
  }

  /* FORMS */
  .page-header {
    padding: 100px 16px 32px;
  }

  .form-container {
    padding: 0 16px 60px;
  }

  .form-block {
    padding: 24px 20px;
  }

  /* MODAL */
  .modal-overlay {
    padding: 12px;
    align-items: flex-end;
  }

  .modal {
    max-height: 92vh;
  }

  .modal-header {
    padding: 16px 16px 12px;
  }

  .modal-title {
    font-size: 1.4rem;
    letter-spacing: 2px;
  }

  .modal-body {
    padding: 16px;
  }

  .modal-meta {
    flex-wrap: wrap;
    gap: 8px;
  }

  /* ADMIN */
  #admin-panel > div {
    padding: 100px 16px 0 !important;
  }

  .admin-header-bar {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    padding: 12px 16px;
  }

  .admin-status {
    font-size: 0.75rem;
    letter-spacing: 1px;
  }

  .pending-card {
    padding: 16px;
  }

  .pending-card-header {
    flex-direction: column;
    gap: 12px;
  }

  .pending-card-actions {
    width: 100%;
    justify-content: flex-start;
  }

  .btn-approve,
  .btn-reject {
    flex: 1;
    text-align: center;
    padding: 8px 12px;
  }

  /* APPROVED TABLE — horizontal scroll */
  #approved-table-container {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    scrollbar-color: #2a2a2a #0a0a0a;
  }
  #approved-table-container::-webkit-scrollbar {
    height: 4px;
  }
  #approved-table-container::-webkit-scrollbar-track {
    background: #0a0a0a;
  }
  #approved-table-container::-webkit-scrollbar-thumb {
    background: #cc0000;
  }

  .approved-table {
    min-width: 640px;
  }

  /* PASSWORD BOX */
  .password-box {
    padding: 32px 20px;
  }

  /* TOAST */
  #signal-toast {
    bottom: 16px;
    right: 16px;
    left: 16px;
    min-width: unset;
  }

  /* FOOTER */
  footer {
    padding: 24px 16px;
  }

  footer p {
    letter-spacing: 1px;
    font-size: 0.72rem;
    word-break: break-word;
  }
}

@media (max-width: 400px) {
  nav .nav-logo {
    font-size: 0.95rem;
  }

  nav .nav-links a {
    font-size: 0.85rem;
  }

  .hero-title {
    letter-spacing: 2px;
  }

  .card-image,
  .card-no-image {
    height: 160px;
  }

  .btn-approve,
  .btn-reject {
    font-size: 1rem;
  }

  .pending-card-actions {
    flex-direction: column;
  }

  .btn-transmit {
    font-size: 1.4rem;
    letter-spacing: 3px;
  }
}
