:root{--black:#030506;--panel:#101619;--ink:#d8dfe0;--muted:#78868a;--red:#c93636;--green:#75aa82;--phosphor:#9bc891;--line:#273034;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;--sans:Inter,system-ui,sans-serif}*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;background:var(--black);color:var(--ink);font-family:var(--mono);min-height:100vh}.grain{position:fixed;inset:0;pointer-events:none;opacity:.06;background:repeating-linear-gradient(90deg,#fff 0 1px,transparent 1px 7px);z-index:20}.skip{position:fixed;left:1rem;top:-5rem;background:#fff;color:#000;padding:.7rem;z-index:99}.skip:focus{top:1rem}.access{min-height:100vh;display:grid;place-items:center;padding:3vw;background:radial-gradient(circle at 50% 40%,#17201e 0,#070909 42%,#010202 76%)}.terminal-shell{width:min(880px,96vw);padding:1.2rem 1.6rem 2rem;border:1px solid #303a35;border-radius:20px 20px 38px 38px;background:linear-gradient(145deg,#171b18,#080a09);box-shadow:0 35px 100px #000,inset 0 0 25px #000}.terminal-top{display:flex;justify-content:space-between;color:#59655c;font-size:.65rem;letter-spacing:.12em;padding:.2rem .6rem 1rem}.crt{position:relative;min-height:640px;padding:clamp(1rem,4vw,3rem);overflow:hidden;border:2px solid #242d27;border-radius:22px;background:radial-gradient(ellipse,#0b1710,#020503 72%);color:var(--phosphor);text-shadow:0 0 8px #69a56b88;box-shadow:inset 0 0 70px #000}.scanlines{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,#0000 0 3px,#0007 4px);opacity:.42}.bbs-head{display:flex;align-items:center;gap:1rem;border-bottom:1px solid #47624b;padding-bottom:1rem}.logo{width:110px;height:68px;object-fit:cover;filter:grayscale(1) sepia(1) hue-rotate(65deg) brightness(.7);opacity:.8}.bbs-head div{display:grid;gap:.5rem;letter-spacing:.12em}.connected{font-size:.72rem;color:#6fbf7a}.status-lines{font:clamp(.68rem,2vw,.83rem)/1.8 var(--mono);color:#6d9671}.notice{min-height:2rem;margin:1.3rem 0;color:#b4deb1}.cursor{display:inline-block;width:.65em;height:1em;margin-left:.4em;background:currentColor;vertical-align:-.15em;animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.panel{display:grid;gap:.9rem;max-width:540px}.panel h1{font-size:1rem;letter-spacing:.15em}.panel label{display:grid;gap:.35rem;font-size:.75rem;letter-spacing:.12em}.panel input,.panel select{width:100%;border:1px solid #48624c;background:#020604;color:#c2e3be;padding:.72rem;font:1rem var(--mono)}.panel button,button{border:1px solid #637d68;background:#0b160e;color:#a9d5a8;padding:.7rem 1rem;font:.76rem var(--mono);letter-spacing:.08em;cursor:pointer}.panel button:hover,.panel button:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid #fff;outline-offset:3px}.actions{display:flex;gap:.6rem;flex-wrap:wrap}.warning{border-left:2px solid #be8f3d;padding:.6rem;color:#c7ad78;font-size:.72rem;line-height:1.6}.effects{position:relative;margin-top:1.5rem;border:1px solid #314035;color:#6d8e71;font-size:.65rem;display:flex;gap:1rem;flex-wrap:wrap}.transition{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:#000;color:#9cce9a;font-size:clamp(1rem,4vw,2rem);letter-spacing:.18em}.transition button{position:absolute;right:1.5rem;bottom:1.5rem}.transition.glitch{animation:tear .16s steps(2) 3}@keyframes tear{25%{transform:translateX(8px);filter:contrast(2)}75%{transform:translateX(-5px)}}.league{min-height:100vh;background:radial-gradient(circle at 75% 0,#142026 0,transparent 30%),#070a0c;padding-bottom:4rem}.league-head{min-height:72px;display:flex;align-items:center;gap:1.5rem;padding:1rem max(1rem,calc((100vw - 1180px)/2));border-bottom:1px solid var(--line);position:sticky;top:0;background:#070a0cef;z-index:10}.league-brand{color:#eee;text-decoration:none;letter-spacing:.13em}.league-head nav{display:flex;gap:.25rem;flex:1}.league-head button{border-color:transparent;background:transparent;color:var(--muted)}.operator,.view{width:min(1120px,calc(100% - 2rem));margin:auto}.operator{padding:2.5rem 0 1rem;color:var(--red);font-size:.75rem;letter-spacing:.18em}.case-head{border-top:1px solid var(--red);padding:1.5rem 0 2.5rem;display:grid;grid-template-columns:1fr auto;gap:1rem}.eyebrow{color:var(--muted);font-size:.7rem;letter-spacing:.17em}.case-head h1{font:clamp(2rem,6vw,4.5rem)/.95 var(--sans);letter-spacing:-.04em;margin:.7rem 0}.objective{color:#fff}.stats{min-width:210px;border-left:1px solid var(--line);padding-left:1rem;display:grid;align-content:start;gap:.7rem;font-size:.75rem}.briefing{max-width:800px;line-height:1.75;color:#aeb7ba;white-space:pre-line}.rounds{display:grid;gap:.8rem;margin-top:2rem}.round{border:1px solid var(--line);background:#0c1114}.round summary{cursor:pointer;padding:1rem;display:flex;gap:1rem}.round summary span:first-child{color:var(--red)}.round-body{padding:0 1rem 1.2rem;line-height:1.65;color:#aab4b7}.artifact{border-left:2px solid var(--red);padding:.6rem .8rem;background:#090c0e;margin:.8rem 0}.tools{color:#799385;font-size:.76rem}.submission{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem}.submission input{background:#06090a;border:1px solid var(--line);color:#eee;padding:.7rem;font:inherit}.feedback{min-height:1.5rem;color:var(--green);font-size:.75rem}.leader-table{width:100%;border-collapse:collapse}.leader-table th,.leader-table td{text-align:left;padding:.75rem;border-bottom:1px solid var(--line);font-size:.75rem}.leader-table th{color:var(--muted)}.tool-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.7rem}.tool-card{display:block;border:1px solid var(--line);padding:1rem;color:var(--ink);text-decoration:none}.tool-card span{display:block;color:var(--muted);font-size:.7rem;margin-top:.5rem}@media(max-width:720px){.terminal-shell{padding:.4rem;border-radius:12px}.terminal-top{display:none}.crt{min-height:96vh;border-radius:10px}.league-head{position:static;flex-wrap:wrap}.league-head nav{order:3;overflow:auto}.case-head{grid-template-columns:1fr}.stats{border-left:0;border-top:1px solid var(--line);padding:1rem 0}.submission{grid-template-columns:1fr}.logo{width:75px;height:52px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}.scanlines,.grain{display:none}}
[hidden]{display:none!important}
.auth-feedback{min-height:1.25rem;margin:0;color:#e2b66f;font-size:.75rem;line-height:1.5}
@media (max-width:720px){
  html{scroll-padding-bottom:8rem}
  body{min-height:100dvh;overflow-x:hidden}
  .panel button{min-height:48px;touch-action:manipulation}
  .audio-control{position:static;width:max-content;margin:1rem}
}
.audio-control{position:fixed;right:1rem;bottom:1rem;z-index:90;display:flex;align-items:center;gap:.45rem;padding:.35rem;border:1px solid #405449;background:#050908e8;box-shadow:0 0 22px #000;color:var(--phosphor)}.audio-control button{min-width:2.6rem;padding:.5rem}.audio-control label{display:flex;align-items:center;gap:.4rem;font-size:.58rem;letter-spacing:.12em}.audio-control input{width:110px;accent-color:var(--phosphor)}.round-tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.45rem;margin:.55rem 0}.round-tool{display:grid;gap:.2rem;border:1px solid var(--line);padding:.65rem;color:var(--ink);text-decoration:none;background:#070b0c}.round-tool span{color:var(--muted);font-size:.68rem}.round-tool em{color:var(--green);font-size:.65rem;font-style:normal}.round-tool.unavailable{opacity:.65}.feedback.accepted{animation:confirm-pulse .65s ease}@keyframes confirm-pulse{40%{color:#fff;text-shadow:0 0 16px var(--green)}}@media(max-width:560px){.audio-control label{display:none}.audio-control[data-open="true"] label,.audio-control:focus-within label{display:flex}.audio-control input{width:88px}}
/* CTF mobile access/login fixes */
@media (max-width:720px){
  .access{
    display:block;
    min-height:100dvh;
    padding:0;
  }

  .terminal-shell{
    width:100%;
    min-height:100dvh;
    padding:.4rem;
    border-radius:0;
  }

  .crt{
    min-height:calc(100dvh - .8rem);
    height:auto;
    overflow:visible;
    padding:1rem;
    border-radius:10px;
  }

  .panel{
    width:100%;
    max-width:none;
  }

  .panel input,
  .panel select{
    min-height:46px;
    font-size:16px;
  }

  .panel button{
    min-height:44px;
  }

  #register,
  #recover{
    padding-bottom:5rem;
  }

  .effects{
    margin-bottom:4rem;
  }
}

[hidden]{display:none!important}
@media (max-width:720px){
  .panel button{min-height:48px;touch-action:manipulation}
  .audio-control{position:static;width:max-content;margin:1rem}
}
