/* nyan{c4sc4d1ng_s3cr3ts} */
:root{
  --bg:#0b0e14; --panel:#141924; --panel2:#1b2230; --line:#263041;
  --ink:#e6edf3; --muted:#8a97a8; --accent:#3ddc97; --accent2:#ff6ac1;
  --warn:#ffb454; --err:#ff6b6b; --ok:#3ddc97;
  --radius:12px; --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
code{font-family:var(--mono);background:#0006;padding:.1em .35em;border-radius:5px;color:var(--accent)}

.topbar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
  padding:.8rem 1.2rem;background:var(--panel);border-bottom:1px solid var(--line)}
.brand{font-weight:700;font-size:1.15rem;color:var(--ink)}
.brand .cat{color:var(--accent2);font-family:var(--mono)}
.topbar nav{display:flex;align-items:center;gap:1.1rem;margin-left:auto;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:.95rem}
.topbar nav a:hover{color:var(--ink);text-decoration:none}
.who{color:var(--accent);font-weight:600}

main{max-width:980px;margin:1.5rem auto;padding:0 1rem}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:1.3rem 1.5rem;margin-bottom:1.2rem}
.card.narrow{max-width:420px;margin:3rem auto}
h1{margin:.2rem 0 .6rem;font-size:1.6rem}
h2.cathead{margin:1.6rem .2rem .7rem;font-size:1.15rem;color:var(--accent2);
  text-transform:uppercase;letter-spacing:.08em}
/* ---------- the Cursed tier: blood-lit boss block ---------- */
.cursedwrap{position:relative;margin-top:2.2rem;padding:1.1rem 1.1rem 1.4rem;
  border:1px solid #6a0d16;border-radius:14px;overflow:hidden;
  background:
    radial-gradient(120% 90% at 50% -10%, rgba(255,22,46,.16), transparent 60%),
    linear-gradient(180deg,#120406,#0a0305);
  box-shadow:0 0 0 1px rgba(255,22,46,.08), 0 0 34px rgba(255,22,46,.10) inset;
  animation:curse-breathe 4.5s ease-in-out infinite}
@keyframes curse-breathe{
  0%,100%{box-shadow:0 0 0 1px rgba(255,22,46,.10),0 0 28px rgba(255,22,46,.10) inset,0 0 18px rgba(255,22,46,.06)}
  50%    {box-shadow:0 0 0 1px rgba(255,22,46,.22),0 0 46px rgba(255,22,46,.20) inset,0 0 34px rgba(255,22,46,.14)}}
/* faint scanline veil for dread */
.cursed-veil{position:absolute;inset:0;pointer-events:none;opacity:.5;mix-blend-mode:overlay;
  background:repeating-linear-gradient(0deg,rgba(255,0,0,.06) 0 1px,transparent 1px 3px)}
h2.cathead.cursed{position:relative;z-index:1;color:#ff2436;letter-spacing:.14em;
  text-shadow:0 0 10px rgba(255,36,54,.75),0 0 26px rgba(255,36,54,.45);
  animation:curse-flicker 6s infinite}
h2.cathead.cursed .curse-sub{font-size:.62em;letter-spacing:.25em;color:#8a2b32;
  text-shadow:none;margin-left:.5rem;opacity:.85}
@keyframes curse-flicker{0%,97%,100%{opacity:1}97.5%{opacity:.55}98.5%{opacity:.85}}
.cursedwrap .grid{position:relative;z-index:1}
.chal.cursed{border-color:#5c0d14;
  background:linear-gradient(180deg,#160609,#0c0406);
  box-shadow:0 0 14px rgba(0,0,0,.5) inset}
.chal.cursed .ctitle{color:#ffd9dc}
.chal.cursed .pts{color:#ff2436;text-shadow:0 0 8px rgba(255,36,54,.6)}
.chal.cursed:hover{border-color:#ff2436;transform:translateY(-1px);
  box-shadow:0 0 0 1px rgba(255,36,54,.5),0 0 22px rgba(255,36,54,.28)}
.chal.cursed.solved{opacity:.6;filter:grayscale(.3)}
/* ===== Nightmare tier — like Cursed, but purple ===== */
.nightmarewrap{position:relative;margin-top:2.2rem;padding:1.1rem 1.1rem 1.4rem;
  border:1px solid #4a1178;border-radius:14px;overflow:hidden;
  background:
    radial-gradient(120% 90% at 50% -10%, rgba(168,85,247,.18), transparent 60%),
    linear-gradient(180deg,#0e0518,#070310);
  box-shadow:0 0 0 1px rgba(168,85,247,.08), 0 0 34px rgba(168,85,247,.12) inset;
  animation:nm-breathe 4.5s ease-in-out infinite}
@keyframes nm-breathe{
  0%,100%{box-shadow:0 0 0 1px rgba(168,85,247,.10),0 0 28px rgba(168,85,247,.12) inset,0 0 18px rgba(168,85,247,.07)}
  50%    {box-shadow:0 0 0 1px rgba(168,85,247,.24),0 0 46px rgba(168,85,247,.24) inset,0 0 34px rgba(168,85,247,.16)}}
.nightmare-veil{position:absolute;inset:0;pointer-events:none;opacity:.5;mix-blend-mode:overlay;
  background:repeating-linear-gradient(0deg,rgba(150,80,255,.06) 0 1px,transparent 1px 3px)}
h2.cathead.nightmare{position:relative;z-index:1;color:#b26bff;letter-spacing:.14em;
  text-shadow:0 0 10px rgba(178,107,255,.75),0 0 26px rgba(168,85,247,.45);
  animation:nm-flicker 6s infinite}
h2.cathead.nightmare .nm-sub{font-size:.62em;letter-spacing:.25em;color:#7a4bb0;
  text-shadow:none;margin-left:.5rem;opacity:.85}
@keyframes nm-flicker{0%,97%,100%{opacity:1}97.5%{opacity:.55}98.5%{opacity:.85}}
.nightmarewrap .grid{position:relative;z-index:1}
.chal.nightmare{border-color:#3a0d5e;
  background:linear-gradient(180deg,#140722,#0a0414);
  box-shadow:0 0 14px rgba(0,0,0,.5) inset}
.chal.nightmare .ctitle{color:#ead9ff}
.chal.nightmare .pts{color:#b26bff;text-shadow:0 0 8px rgba(178,107,255,.6)}
.chal.nightmare:hover{border-color:#b26bff;transform:translateY(-1px);
  box-shadow:0 0 0 1px rgba(178,107,255,.5),0 0 22px rgba(168,85,247,.3)}
.chal.nightmare.solved{opacity:.6;filter:grayscale(.3)}
.muted{color:var(--muted)}
.banner{background:var(--panel2);border:1px solid var(--warn);color:var(--warn);
  padding:.7rem 1rem;border-radius:var(--radius);margin-bottom:1rem}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.9rem}
.chal{display:flex;flex-direction:column;gap:.35rem;background:var(--panel2);
  border:1px solid var(--line);border-radius:var(--radius);padding:1rem;color:var(--ink);
  transition:border-color .15s,transform .05s}
.chal:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-1px)}
.chal.solved{border-color:var(--accent);opacity:.75}
.chal .pts{font-family:var(--mono);color:var(--accent);font-size:.85rem}
.chal .ctitle{font-weight:600;font-size:1.05rem}
.chal .meta{color:var(--muted);font-size:.8rem}

.chalhead{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}
.chalhead h1{margin:0}
.tag{font-family:var(--mono);font-size:.75rem;color:var(--accent2);border:1px solid var(--line);
  padding:.15rem .5rem;border-radius:999px;text-transform:uppercase}
.pts.big{margin-left:auto;font-family:var(--mono);color:var(--accent)}
.desc{margin:1rem 0;color:#cdd7e3}
.desc p{margin:.5rem 0}
.files ul{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.files a{background:var(--panel2);border:1px solid var(--line);padding:.4rem .8rem;border-radius:8px;font-family:var(--mono);font-size:.85rem}

form label{display:block;margin:.7rem 0}
form input,form select,form textarea{width:100%;margin-top:.25rem;padding:.6rem .7rem;
  background:var(--bg);border:1px solid var(--line);border-radius:8px;color:var(--ink);font:inherit}
form input:focus,form textarea:focus{outline:none;border-color:var(--accent)}
button,.btn{display:inline-block;cursor:pointer;background:var(--accent);color:#06251a;border:0;
  padding:.6rem 1.1rem;border-radius:8px;font-weight:700;font:inherit}
button:hover,.btn:hover{text-decoration:none;filter:brightness(1.08)}
button.ghost,.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
.flagform{display:flex;gap:.6rem;margin-top:1rem}
.flagform input{margin:0;font-family:var(--mono)}
form.inline{display:inline}

.hints{margin-top:1.4rem;border-top:1px solid var(--line);padding-top:1rem}
.hint{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:.7rem .9rem;margin:.5rem 0}
.hint p{margin:.4rem 0 0;color:#cdd7e3}

.ok{color:var(--ok)} .err{color:var(--err)}
p.ok,p.err{font-weight:600}

table.board{width:100%;border-collapse:collapse;margin-top:.5rem}
table.board th,table.board td{text-align:left;padding:.55rem .6rem;border-bottom:1px solid var(--line)}
table.board th{color:var(--muted);font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}
.board .rank{font-family:var(--mono);color:var(--accent2)}
.board .score{font-family:var(--mono);color:var(--accent);font-weight:700}

footer{max-width:980px;margin:2rem auto;padding:1rem;color:var(--muted);font-size:.85rem;text-align:center}

/* admin */
.adminwrap table{width:100%;border-collapse:collapse}
.adminwrap td,.adminwrap th{padding:.5rem .6rem;border-bottom:1px solid var(--line);text-align:left;font-size:.92rem}
.stat{display:inline-block;background:var(--panel2);border:1px solid var(--line);border-radius:8px;
  padding:.6rem 1rem;margin:.3rem .4rem .3rem 0}
.stat b{display:block;font-size:1.4rem;color:var(--accent);font-family:var(--mono)}

/* ===== animated cyber backdrop (site-wide, behind everything) ===== */
body{position:relative;isolation:isolate}
body::before,body::after{content:"";position:fixed;inset:-25%;z-index:-1;pointer-events:none}
/* drifting neon grid */
body::before{
  background:
    linear-gradient(transparent 0 44px, rgba(61,220,151,.09) 45px),
    linear-gradient(90deg, transparent 0 44px, rgba(61,220,151,.09) 45px);
  background-size:45px 45px;
  -webkit-mask-image:radial-gradient(135% 105% at 50% -5%, #000 52%, transparent 100%);
          mask-image:radial-gradient(135% 105% at 50% -5%, #000 52%, transparent 100%);
  animation:grid-drift 24s linear infinite;opacity:.65}
@keyframes grid-drift{from{transform:translateY(0)}to{transform:translateY(45px)}}
/* slow aurora glow */
body::after{
  background:
    radial-gradient(42vw 42vw at 14% 8%,  rgba(61,220,151,.10), transparent 60%),
    radial-gradient(46vw 46vw at 86% 18%, rgba(255,106,193,.10), transparent 60%),
    radial-gradient(52vw 52vw at 50% 102%,rgba(93,124,255,.09),  transparent 60%);
  filter:blur(10px);
  animation:bg-aurora 28s ease-in-out infinite alternate}
@keyframes bg-aurora{
  0%  {transform:translate3d(-3%,-2%,0) scale(1)}
  50% {transform:translate3d(3%,2%,0)   scale(1.08)}
  100%{transform:translate3d(-2%,3%,0)  scale(1.03)}}
@media (prefers-reduced-motion:reduce){body::before,body::after{animation:none}}
