/* sunctf.css - page-specific: glitch logo, alert atmosphere */

/* ---- sweep stripes behind hero ---- */
.ctf-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(-45deg, rgba(255, 51, 85, 0.05) 0 18px, transparent 18px 36px);
  pointer-events: none;
}

/* ---- real SunCTF 2026 mark (image) with glitch layers ---- */
.ctf-mark {
  position: relative;
  width: min(92vw, 820px);
  margin: 0 auto;
  user-select: none;
  animation: markflicker 7s steps(1) infinite;
}
.ctf-mark img {
  width: 100%;
  display: block;
  filter: drop-shadow(0 0 34px rgba(255, 51, 85, 0.35));
}
.ctf-mark img.gr,
.ctf-mark img.gc {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
}
.ctf-mark img.gr {
  filter: sepia(1) saturate(14) hue-rotate(-45deg) brightness(0.9);
  animation: split-r 3.1s steps(1) infinite;
}
.ctf-mark img.gc {
  filter: sepia(1) saturate(14) hue-rotate(150deg) brightness(0.9);
  animation: split-c 3.1s steps(1) infinite;
}
.yr-line {
  font-family: var(--pix);
  font-size: clamp(40px, 7vw, 74px);
  color: var(--ink);
  letter-spacing: 0.12em;
  margin-top: 2px;
}
.yr-line .brc { color: var(--grn); }
@media (prefers-reduced-motion: reduce) {
  .ctf-mark { animation: none; }
  .ctf-mark img.gr, .ctf-mark img.gc { display: none; }
}

/* ---- briefing: live feed + poster ---- */
.briefing-grid {
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  gap: 22px;
  align-items: start;
}
.feed-shell {
  border: 1px solid var(--line);
  background: var(--bg-2);
  padding: 20px 22px;
  min-height: 340px;
}
.feed-head {
  color: var(--dim);
  font-size: 13px;
  padding-bottom: 12px;
  border-bottom: 1px dashed var(--faint);
  margin-bottom: 12px;
}
.feed-head .sim { color: var(--faint); font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; margin-left: 10px; }
.feed { font-size: 12.5px; line-height: 2; }
.feed .ln { opacity: 0; animation: feedin 0.25s forwards; }
@keyframes feedin { to { opacity: 1; } }
.feed .ts { color: var(--faint); }
.feed .team { color: var(--ink); }
.feed .cat { color: var(--amb); }
.feed .pts { color: var(--grn); }
.feed .first { color: var(--grn); font-weight: 700; }

.poster-frame {
  border: 1px solid var(--faint);
  background: var(--bg-2);
}
.poster-frame .bar {
  display: flex;
  justify-content: space-between;
  padding: 6px 12px;
  font-size: 11px;
  color: var(--dim);
  border-bottom: 1px solid var(--line);
  letter-spacing: 0.1em;
}
.poster-frame img { width: 100%; display: block; }
.poster-frame a { cursor: zoom-in; }

@media (max-width: 960px) {
  .briefing-grid { grid-template-columns: 1fr; }
}

/* ---- konami payload ---- */
body.konami { animation: konami-glitch 1.6s steps(2); }
@keyframes konami-glitch {
  0%, 100% { filter: none; }
  20% { filter: invert(1) hue-rotate(90deg); }
  40% { filter: none; }
  60% { filter: invert(1) hue-rotate(220deg); }
  80% { filter: saturate(4); }
}
.konami-flag {
  position: fixed;
  left: 50%;
  bottom: 30px;
  transform: translateX(-50%);
  background: var(--bg);
  border: 1px solid var(--grn);
  color: var(--grn);
  font-family: var(--mono);
  font-size: 13px;
  padding: 12px 22px;
  z-index: 10001;
  box-shadow: 0 0 40px rgba(255, 51, 85, 0.4);
}

/* ---- glitch wordmark ---- */
.ctf-logo {
  position: relative;
  display: inline-block;
  font-family: var(--disp);
  font-weight: 800;
  font-size: clamp(64px, 13vw, 190px);
  line-height: 0.9;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  color: var(--ink);
  user-select: none;
}
.ctf-logo .brace { color: var(--grn); }
.ctf-logo .flagtxt {
  color: var(--grn);
  text-shadow: 0 0 30px rgba(255, 51, 85, 0.55);
}

/* RGB-split ghost layers */
.ctf-logo .layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.75;
}
.ctf-logo .layer.r { color: #ff2233; z-index: -1; animation: split-r 3.1s steps(1) infinite; }
.ctf-logo .layer.c { color: #22e5ff; z-index: -2; animation: split-c 3.1s steps(1) infinite; }
.ctf-logo .layer .brace, .ctf-logo .layer .flagtxt { color: inherit; text-shadow: none; }

@keyframes split-r {
  0%, 86%, 100% { transform: translate(0, 0); opacity: 0; }
  87% { transform: translate(-6px, 2px); opacity: 0.7; }
  90% { transform: translate(4px, -1px); opacity: 0.5; }
  93% { transform: translate(-2px, 1px); opacity: 0.6; }
  96% { transform: translate(0, 0); opacity: 0; }
}
@keyframes split-c {
  0%, 86%, 100% { transform: translate(0, 0); opacity: 0; }
  88% { transform: translate(6px, -2px); opacity: 0.6; }
  91% { transform: translate(-4px, 2px); opacity: 0.5; }
  94% { transform: translate(2px, -1px); opacity: 0.55; }
  97% { transform: translate(0, 0); opacity: 0; }
}

/* slice glitch on the top layer */
.ctf-logo .layer.slice {
  color: var(--ink);
  z-index: 1;
  opacity: 1;
  animation: slice 3.1s steps(1) infinite;
  clip-path: inset(100% 0 0 0);
}
.ctf-logo .layer.slice .brace { color: var(--grn); }
.ctf-logo .layer.slice .flagtxt { color: var(--grn); }
@keyframes slice {
  0%, 84%, 100% { clip-path: inset(100% 0 0 0); transform: none; }
  85% { clip-path: inset(12% 0 74% 0); transform: translateX(-10px); }
  88% { clip-path: inset(58% 0 22% 0); transform: translateX(8px); }
  91% { clip-path: inset(30% 0 52% 0); transform: translateX(-6px); }
  94% { clip-path: inset(76% 0 8% 0); transform: translateX(10px); }
  97% { clip-path: inset(100% 0 0 0); transform: none; }
}

/* whole-mark flicker */
.ctf-logo { animation: markflicker 7s steps(1) infinite; }
@keyframes markflicker {
  0%, 41%, 44%, 100% { opacity: 1; }
  42% { opacity: 0.55; }
  43% { opacity: 0.9; }
}

@media (prefers-reduced-motion: reduce) {
  .ctf-logo, .ctf-logo .layer { animation: none !important; }
  .ctf-logo .layer { display: none; }
}

/* scan sweep across hero */
.ctf-hero .sweep {
  position: absolute;
  left: 0; right: 0;
  height: 90px;
  top: -90px;
  background: linear-gradient(to bottom, transparent, rgba(255, 51, 85, 0.08), transparent);
  animation: sweep 5.5s linear infinite;
  pointer-events: none;
}

/* ---- big centered countdown ---- */
.cd-row {
  display: flex;
  justify-content: center;
  align-items: flex-start;
  gap: clamp(8px, 2vw, 20px);
  margin: 34px auto 6px;
}
.cd-cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  border: 1px solid var(--faint);
  background: var(--bg-2);
  padding: 10px clamp(12px, 3vw, 30px) 12px;
  min-width: clamp(70px, 16vw, 130px);
  position: relative;
}
.cd-cell::after {
  /* notch */
  content: "";
  position: absolute;
  top: -1px; left: -1px;
  width: 8px; height: 8px;
  border-top: 2px solid var(--grn);
  border-left: 2px solid var(--grn);
}
.cd-num {
  font-family: var(--pix);
  font-size: clamp(52px, 9vw, 96px);
  line-height: 0.9;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.cd-lab {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--grn);
  margin-top: 6px;
}
.cd-sep {
  font-family: var(--pix);
  font-size: clamp(40px, 7vw, 72px);
  line-height: 1;
  color: var(--grn);
  margin-top: clamp(10px, 2vw, 22px);
  animation: blink 1.1s steps(2) infinite;
}
.cd-row .gameon {
  font-family: var(--pix);
  font-size: clamp(48px, 9vw, 90px);
  color: var(--grn);
  letter-spacing: 0.06em;
}
@media (prefers-reduced-motion: reduce) { .cd-sep { animation: none; } }

/* red alert accents */
.theme-ctf .flag-line b { color: var(--term); }
.theme-ctf .flag-format code { color: var(--term); }
.theme-ctf #countdown { color: var(--term); }
.theme-ctf .btn-solid {
  background: var(--term);
  border-color: var(--term);
  color: #fff;
}
.theme-ctf .btn-solid:hover { background: var(--ink); border-color: var(--ink); color: var(--bg); }
.feed .pts { color: var(--term); }
.feed .first { color: var(--term); font-weight: 700; }
.konami-flag { border-color: var(--term); color: var(--term); box-shadow: 0 0 40px rgba(255, 51, 85, 0.3); }
@keyframes sweep { to { top: 110%; } }

/* countdown / status chips */
.ctf-chips {
  display: flex;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 30px;
}
.ctf-chip {
  border: 1px solid var(--faint);
  background: var(--bg-2);
  padding: 10px 18px;
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--dim);
}
.ctf-chip b { color: var(--grn); font-weight: 400; }

/* categories marquee-ish row */
.cat-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin-top: 34px;
}
.cat-row span {
  font-size: 12px;
  padding: 6px 14px;
  border: 1px dashed var(--faint);
  color: var(--dim);
  letter-spacing: 0.1em;
}
.cat-row span::before { content: "# "; color: var(--grn); }

/* entry fees */
.fees-table {
  margin-top: 26px;
  border: 1px dashed var(--faint);
  background: var(--bg-2);
  padding: 22px 26px;
  font-size: 13px;
}
.fees-head { color: var(--dim); margin-bottom: 14px; }
.fees-row {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 6px 0;
}
.fees-row .who { color: var(--ink); white-space: nowrap; }
.fees-row .dots {
  flex: 1;
  border-bottom: 1px dotted var(--faint);
  transform: translateY(-4px);
}
.fees-row .amt { color: var(--grn); white-space: nowrap; }
.fees-row .amt i { color: var(--dim); font-style: normal; font-size: 11px; }
