@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Lab Glyphs;src:url(/fonts/lab-glyphs.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+327F,U+FF61-FF9F}:root{--bg: #050806;--bg-2: #0a120c;--fg: #b8f7c4;--green: #00ff66;--dim: #3d7a4e;--cyan: #5ce1e6;--amber: #ffb000;--red: #ff4d4d;--flag: #fff36b;--ok: #7be3ad;--mission: #f2c46b;--vuln: #ff7a72;--name: #ffffff;--mute: #8b9099;--c-comment: #6f9a7a;--arg: #8fb59a;--text: #cfd6cf;--cat-puzzle: #9fb4ff;--cat-scripting: #f2c46b;--cat-firewall: #ff9f6b;--cat-defense: #7be3ad;--cat-operations: #c9a7ff;--cat-purple: #e08cff;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--fg)}body{min-height:var(--vvh, 100dvh);margin-top:var(--vvtop, 0px);height:var(--vvh, 100dvh);display:flex;flex-direction:column;overflow:hidden;font-family:JetBrains Mono,Lab Glyphs,ui-monospace,monospace;font-size:15px;line-height:1.45;font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0}.glow{text-shadow:0 0 4px rgba(0,255,102,.35)}html.crt-off .glow{text-shadow:none}html.crt-off .scanlines,html.crt-off .vignette{display:none}.scanlines{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:80;background:repeating-linear-gradient(to bottom,rgba(0,0,0,.035) 0 1px,transparent 1px 3px)}.vignette{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:70;background:radial-gradient(ellipse at center,transparent 62%,rgba(0,0,0,.38) 100%)}.topbar{height:28px;flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--bg-2);border-bottom:1px solid rgba(61,122,78,.55);font-size:12px;line-height:1;z-index:20}.dots{display:flex;gap:6px;flex:none}.dots i{width:8px;height:8px;border-radius:50%;display:block}.dots i:nth-child(1){background:#6b3030}.dots i:nth-child(2){background:#6b5318}.dots i:nth-child(3){background:#1f5a32}#identity{color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.spacer{flex:1}#clock,#flags{color:var(--dim);flex:none}#flags.has{color:var(--flag)}#flags.pulse{animation:flagpulse .65s ease-out 1}@keyframes flagpulse{0%{text-shadow:0 0 0 transparent;transform:scale(1)}30%{text-shadow:0 0 10px var(--flag),0 0 2px var(--flag);transform:scale(1.12)}to{text-shadow:0 0 0 transparent;transform:scale(1)}}.stage{position:relative;flex:1;min-height:0;width:100%;display:grid;grid-template-columns:minmax(0,calc(110ch + 48px)) minmax(240px,320px);justify-content:center}.term-col{min-width:0;min-height:0;height:100%;padding:24px;display:flex;flex-direction:column;position:relative}#log{flex:1;min-height:0;overflow:auto;scrollbar-color:var(--dim) var(--bg)}.prompt{flex:none;padding-top:2px}.line{min-height:1.45em;white-space:pre-wrap;overflow-wrap:anywhere}.line.out,.line.echo{color:var(--text)}.line.dim{color:var(--mute)}.line.err{color:var(--vuln)}.line.cyan{color:var(--cyan)}.line.amber{color:var(--mission)}.line.flag,.line.mark,.t-ok{color:var(--ok)}.t-mission{color:var(--mission)}.t-vuln{color:var(--vuln)}.t-name{color:var(--name)}.t-mute{color:var(--mute)}.line.hang{padding-left:6ch;text-indent:-6ch}.t-head{color:var(--mission);font-weight:700;letter-spacing:.04em}.t-group{color:var(--cyan)}.t-arg{color:var(--arg)}.t-desc{color:var(--mute)}.t-cat-puzzle{color:var(--cat-puzzle)}.t-cat-scripting{color:var(--cat-scripting)}.t-cat-firewall{color:var(--cat-firewall)}.t-cat-defense{color:var(--cat-defense)}.t-cat-operations{color:var(--cat-operations)}.t-cat-purple{color:var(--cat-purple)}.line.banner{min-height:0;white-space:pre;overflow-wrap:normal;overflow-x:auto;line-height:1.05;color:var(--green);font-size:12px}.line.art{min-height:0;white-space:pre;overflow-wrap:normal;word-break:normal;overflow-x:auto;line-height:1.25;color:var(--text);margin:.4em 0}.line a{color:var(--cyan);text-underline-offset:2px}.line a:hover{color:var(--fg)}.prompt-host,.prompt-line{white-space:pre-wrap;overflow-wrap:anywhere}.ps,.cursor{color:var(--green)}.pf{color:var(--mute)}.pu,.ph,.kmark{color:var(--ok)}.pc{color:var(--name)}.typed{color:var(--text)}.kmark{font-family:Lab Glyphs,JetBrains Mono,sans-serif}.cursor{display:inline-block;width:.62ch;height:1em;background:var(--green);box-shadow:0 0 6px #00ff66d9;vertical-align:text-bottom;animation:blink 1.06s linear infinite}.cursor.paused{animation:none;opacity:1}html.crt-off .cursor{box-shadow:none}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}.line.flag{animation:flagblink .36s linear 1}@keyframes flagblink{0%{color:var(--ok)}25%{color:transparent}50%{color:var(--ok)}75%{color:transparent}to{color:var(--ok)}}.term-col.glitch{animation:glitch .15s steps(2,end) 1}@keyframes glitch{0%{transform:translate(0)}50%{transform:translate(-1px)}to{transform:translate(1px)}}.ghost-input{position:absolute;left:24px;right:24px;bottom:24px;height:3.2em;opacity:0;border:0;padding:0;margin:0;background:transparent;color:transparent;caret-color:transparent;font-size:16px}.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mission{min-height:0;overflow:auto;background:var(--bg-2);border-left:1px solid rgba(61,122,78,.55);padding:24px 16px}.kicker{margin:0 0 8px;color:var(--dim);font-size:11px;letter-spacing:.14em;text-transform:uppercase}.mission .net{margin:0 0 8px;color:var(--fg)}.mission .elapsed{margin:0 0 14px;color:var(--cyan);font-size:13px}.hosts{display:flex;flex-direction:column;gap:6px}.host{display:grid;grid-template-columns:8px 11ch 6ch 1fr;gap:8px;align-items:center;color:var(--dim);font-size:13px}.host.up{color:var(--fg)}.host.done .role{color:var(--flag)}.pip{width:6px;height:6px;background:var(--dim)}.host.up .pip{background:var(--green)}.hint-btn,.mobile-bar button{font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--dim);padding:6px 10px}.hint-btn{margin-top:16px;cursor:pointer}.hint-btn:hover,.mobile-bar button:hover{border-color:var(--fg)}.hint{color:var(--amber);font-size:13px;margin:12px 0 0}.mobile-bar{display:none;gap:6px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:var(--bg-2);border-top:1px solid rgba(61,122,78,.55);overflow-x:auto;flex:none;z-index:20}.mobile-bar button{flex:0 0 auto;font-size:12px}.mobile-bar .chip{color:var(--cyan)}#toast{position:fixed;right:16px;bottom:16px;z-index:90;color:var(--flag);border:1px solid var(--flag);background:#050806eb;padding:6px 10px;font-size:13px;opacity:0;pointer-events:none}#toast.show{animation:toast-in 1.6s ease forwards}@keyframes toast-in{0%{opacity:0;transform:translateY(4px)}12%{opacity:1;transform:none}75%{opacity:1}to{opacity:0}}#intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--bg);opacity:1;transition:opacity .8s linear}#intro.out{opacity:0}#intro .rain{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.intro-copy{position:relative;z-index:1;height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.intro-lines{width:min(110ch,100%);font-size:15px;line-height:1.45;text-shadow:0 0 4px rgba(0,255,102,.35)}html.crt-off .intro-lines{text-shadow:none}.skip-hint{position:absolute;left:0;right:0;bottom:24px;background:none;border:0;color:var(--dim);font:inherit;font-size:13px;text-align:center;cursor:pointer}.hof-body{overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}.hof{flex-shrink:0;width:100%;max-width:70ch;margin:0 auto;padding:24px}.hof h1{font-size:15px;font-weight:400;margin:12px 0;color:var(--green)}.hof h2{font-size:14px;font-weight:400;margin:22px 0 8px;color:var(--fg)}.hof .cidr{color:var(--dim);margin:0 0 8px}.hof .lead,.hof .empty,.hof .back{color:var(--dim)}.hof .progress{color:var(--fg)}.hof ol{padding-left:1.2em}.hof li{margin:0 0 12px}.hof .alias{display:block;color:var(--flag)}.hof .meta{color:var(--dim);font-size:13px}.hof a{color:var(--cyan)}.noscript{padding:24px;color:var(--amber)}::selection{background:#14331d;color:var(--fg)}body.web .stage{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(240px,320px)}.shop{min-width:0;min-height:0;overflow:auto;background:var(--bg-2);border-right:1px solid rgba(61,122,78,.55);padding:20px 16px;font-size:13px}.shop[hidden]{display:none}.shop-bar,.shop-cookie{display:flex;gap:6px;align-items:center;margin:0 0 8px;flex-wrap:wrap}.shop-url{flex:1;min-width:0}.shop input,.shop textarea{font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--dim);padding:4px 6px}.shop textarea{min-height:5em;resize:vertical;width:100%}.shop-cookie-value{width:12ch}.shop-flags{color:var(--amber);font-size:12px}.shop-nav,.shop-items,.shop-row{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.shop-link,.shop-submit,.pane-toggle{font:inherit;color:var(--cyan);background:var(--bg);border:1px solid var(--dim);padding:4px 8px;cursor:pointer}.shop-submit{color:var(--fg)}.shop-link:hover,.shop-submit:hover{border-color:var(--fg)}.shop-title{font-size:15px;margin:12px 0 6px;color:var(--fg)}.shop-status{color:var(--dim);font-size:12px}.shop-who{color:var(--dim);margin:0 0 6px}.shop-note{margin:4px 0}.shop-note.err{color:var(--red)}.shop-note.amber{color:var(--amber)}.shop-note.dim{color:var(--dim)}.shop-text{margin:4px 0;white-space:pre-wrap;overflow-wrap:anywhere}.shop-pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--fg);margin:8px 0}.shop-form{display:flex;flex-direction:column;gap:6px;margin-top:10px}.shop-field{display:flex;flex-direction:column;gap:2px;color:var(--dim)}.pane-toggle.ping{animation:ping .6s ease-out 2}@keyframes ping{50%{border-color:var(--flag);color:var(--flag)}}@media(max-width:1439px){body.web .mission{display:none}body.web .stage{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}@media(max-width:800px){body.web .stage{grid-template-columns:minmax(0,1fr)}body.web.pane-shop .term-col,body.web.pane-term .shop{display:none}body.web .shop{border-right:0}}.editor{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:var(--bg);border:1px solid rgba(61,122,78,.55);text-shadow:none}.editor-bar,.editor-foot{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:10px 14px;background:var(--bg-2);color:var(--mute);font-size:13px}.editor-bar{border-bottom:1px solid rgba(61,122,78,.55)}.editor-foot{border-top:1px solid rgba(61,122,78,.55);font-variant-numeric:tabular-nums}.editor-tag{color:var(--mission);border:1px solid rgba(242,196,107,.4);border-radius:3px;padding:0 6px}.editor-path{color:var(--text);overflow-wrap:anywhere}.editor-state.dirty{color:var(--mission)}.editor-spacer{flex:1}.editor-btn{font:inherit;font-size:13px;color:var(--text);background:transparent;border:1px solid rgba(61,122,78,.7);border-radius:4px;padding:6px 12px;cursor:pointer}.editor-btn:hover{border-color:var(--ok)}.editor-btn:focus-visible{outline:2px solid var(--ok);outline-offset:2px}.editor-save{color:var(--ok);border-color:#7be3ad99;background:#7be3ad14}.editor-save[aria-disabled]{opacity:.55}.editor-key{margin-left:8px;color:var(--mute);font-size:11px}.editor-tab{display:none}.editor.busy .editor-save{opacity:.55;cursor:progress}.editor-body{display:grid;grid-template-columns:max-content 1fr;align-items:start;overflow:auto;min-height:0}.editor-gutter,.editor-area,.editor-paint{font:inherit;font-size:15px;line-height:1.5;letter-spacing:0;font-variant-ligatures:none;padding:14px 0}.editor-stack{display:grid;width:max-content;min-width:100%}.editor-paint,.editor-area{grid-area:1 / 1}.editor-paint{margin:0;padding-left:14px;padding-right:14px;white-space:pre;-moz-tab-size:4;tab-size:4;overflow:hidden;color:var(--text);pointer-events:none;visibility:hidden}.editor.colored .editor-paint{visibility:visible}.editor.colored .editor-area{color:transparent;-webkit-text-fill-color:transparent}.editor.colored .editor-area::selection{background:#7be3ad47;color:transparent;-webkit-text-fill-color:transparent}@media(forced-colors:active){.editor.colored .editor-paint{visibility:hidden}.editor.colored .editor-area{color:CanvasText;-webkit-text-fill-color:CanvasText}}.c-comment{color:var(--c-comment)}.c-key{color:var(--cyan)}.c-value{color:var(--text)}.c-string{color:var(--mission)}.c-var{color:var(--cat-operations)}.c-num{color:var(--cat-puzzle)}.c-punct{color:var(--mute)}.c-tag{color:var(--cat-purple)}.c-bad{color:var(--vuln);text-decoration:underline wavy var(--vuln);text-underline-offset:3px}.editor-warn{color:var(--vuln)}.editor-warn:empty{display:none}.editor-gutter{position:sticky;left:0;z-index:1;padding-left:14px;padding-right:10px;white-space:pre;text-align:right;color:var(--dim);background:var(--bg);border-right:1px solid rgba(61,122,78,.35);-webkit-user-select:none;user-select:none;font-variant-numeric:tabular-nums}.editor-gutter .g-cur{color:var(--ok)}.editor-gutter .g-bad{color:var(--vuln)}.editor-area{display:block;width:auto;min-width:100%;min-height:100%;margin:0;padding-left:14px;padding-right:14px;border:0;outline:none;resize:none;overflow:hidden;white-space:pre;-moz-tab-size:4;tab-size:4;color:var(--text);caret-color:var(--green);background:transparent}.editor-count .over,.editor-note.bad{color:var(--vuln)}.editor-note{flex:1 1 12em}body.editing .mobile-bar{display:none}@media(max-width:1199px){.mission{display:none}.stage{grid-template-columns:minmax(0,1fr)}}@media(max-width:800px){body{font-size:14px}.term-col{padding:16px 12px 8px}.line.banner{font-size:10px}.ghost-input{left:12px;right:12px;bottom:8px}.mobile-bar{display:flex}.editor{top:-8px;right:-6px;bottom:-4px;left:-6px}.editor-gutter,.editor-area,.editor-paint{font-size:16px}.editor-tab{display:inline-block}.editor-key{display:none}#toast{bottom:calc(64px + env(safe-area-inset-bottom))}}@media(max-width:380px){.dots{display:none}.topbar{gap:8px}}@media(prefers-reduced-motion:reduce){.cursor,.line.flag,.term-col.glitch{animation:none}#toast.show{animation:none;opacity:1}#intro{transition:none}#flags.pulse,.finale-card{animation:none}}.matrix-rain{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;overflow:hidden;background:var(--bg);opacity:1;transition:opacity .7s ease;touch-action:none}.matrix-rain.out{opacity:0}.matrix-rain canvas{display:block;width:100%;height:100%}.finale-still{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;background:#050806d6;touch-action:none}.finale-card{--finale-tint: var(--cyan);position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,calc(100% - 32px));max-height:calc(100% - 32px);overflow:hidden;padding:22px 26px 16px;background:#050806e0;border:1px solid var(--finale-tint);box-shadow:0 0 24px #5ce1e638,inset 0 0 18px #00ff660f;text-align:center;animation:finale-in 1.1s ease 1.2s both}.finale-still .finale-card{animation:none}.finale-card p{margin:0}.finale-kicker{color:var(--green);font-weight:700;font-size:13px;letter-spacing:.35em;text-shadow:0 0 8px rgba(0,255,102,.7)}.finale-card .finale-meta{margin-top:4px;color:var(--finale-tint);font-size:12px}.finale-quote{margin:18px 0 10px;color:#e9fff0;font-size:18px;line-height:1.5;text-shadow:0 0 6px rgba(184,247,196,.45)}.finale-quote:before{content:"“";color:var(--finale-tint)}.finale-quote:after{content:"”";color:var(--finale-tint)}.finale-who{color:var(--mute);font-size:12px}.finale-who cite{font-style:italic}.finale-card .finale-skip{margin-top:14px;color:var(--dim);font-size:11px;letter-spacing:.08em}html.crt-off .finale-kicker,html.crt-off .finale-quote{text-shadow:none}.finale-demo{animation-delay:.3s}.finale-close{position:absolute;top:6px;right:8px;padding:4px 8px;border:0;background:transparent;color:var(--dim);font:inherit;font-size:14px;cursor:pointer}.finale-close:hover{color:var(--green)}@keyframes finale-in{0%{opacity:0;filter:blur(4px)}to{opacity:1;filter:none}}@media(max-width:720px){.finale-card{padding:18px 16px 12px}.finale-quote{font-size:16px}}
