/* Porthole — Aperture design system */

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

html, body, #root {
  width: 100%; height: 100%;
  background: #0a0a0d;
  color: #f0e8db;
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
/* Allow vertical scroll when viewport is too short to show full portal */
html { overflow-y: hidden; }
body { overflow-y: auto; }
#root { overflow-y: auto; min-height: 520px; }

/* ── Keyframes ─────────────────────────────────────────────── */

@keyframes porthole-fadein {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes porthole-pop {
  0%   { transform: scale(0.94); opacity: 0; }
  55%  { transform: scale(1.02); opacity: 1; }
  100% { transform: scale(1.00); opacity: 1; }
}
@keyframes porthole-slideup {
  from { transform: translateY(24px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}
@keyframes porthole-shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position:  200% 0; }
}

/* Drift column — JS sets --speed and --dir per column */
@keyframes drift-up   { from { transform: translateY(0);    } to { transform: translateY(-50%); } }
@keyframes drift-down { from { transform: translateY(-50%); } to { transform: translateY(0);    } }

.drift-track {
  display: flex;
  flex-direction: column;
  gap: 12px;
  will-change: transform;
}
.drift-track.up   { animation: drift-up   var(--drift-speed, 80s) linear infinite; }
.drift-track.down { animation: drift-down var(--drift-speed, 80s) linear infinite; }
.drift-col:hover .drift-track { animation-play-state: paused; }

/* ── Ad slots ──────────────────────────────────────────────── */

.ph-zone {
  background: repeating-linear-gradient(
    135deg, #1c1c25 0 8px, #13131a 8px 16px
  );
  border: 1px solid rgba(245,238,228,0.06);
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 9px;
  letter-spacing: 0.18em;
  color: #5e564b;
  text-transform: uppercase;
}

/* ── Spotlight search ──────────────────────────────────────── */

[data-name] { transition: opacity 200ms ease, filter 200ms ease; }

/* Matching columns speed up (JS sets --drift-speed directly); non-matching columns paused via JS */
/* setB tiles invisible during search — opacity:0 keeps layout height so the loop doesn't snap */
.ph-search-active [data-set="b"] {
  opacity: 0;
  pointer-events: none;
}
.ph-search-active [data-set="b"].ph-match {
  opacity: 1;
  pointer-events: auto;
}

.ph-search-active [data-name] {
  opacity: 0.12;
  filter: grayscale(1);
  pointer-events: none;
}
.ph-search-active [data-name].ph-match {
  opacity: 1;
  filter: none;
  pointer-events: auto;
}
.ph-search-active [data-name][data-affiliate="true"] {
  opacity: 1;
  filter: none;
  pointer-events: auto;
}

/* ── Status filter pills ───────────────────────────────────── */

[data-status] { transition: opacity 200ms ease, filter 200ms ease; }
.ph-filter-active [data-status] { opacity: 0.12; filter: grayscale(1); pointer-events: none; }
.ph-filter-active [data-status].ph-status-match { opacity: 1; filter: none; pointer-events: auto; }

/* ── Utility ───────────────────────────────────────────────── */

button { cursor: pointer; font-family: inherit; }
button:disabled { cursor: not-allowed; }
