@font-face{font-family:major mono display;src:url(/fonts/major-mono-display-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:jetbrains mono;src:url(/fonts/jetbrains-mono-800.woff2)format("woff2");font-weight:800;font-display:swap}@font-face{font-family:space grotesk;src:url(/fonts/space-grotesk-700.woff2)format("woff2");font-weight:700;font-display:swap}html[data-page=ctf]{--bg:#15161a;--panel:#1d1f24;--panel-2:#18191d;--track:#2b2e35;--line:#33363e;--ink:#e3e5ea;--head:#ffffff;--dim:#a3a8b4;--p:#b3a4f7;--pp:#8b6cff;--pp-soft:#4f4a70;--acid:#7ee787;--on-acid:#0d1117;--warn:#f0b35a;--nav:rgba(21, 22, 26, 0.94);--glow:rgba(139, 108, 255, 0.08)}html[data-page=ctf]{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E"),radial-gradient(1200px 600px at 80% 0,var(--glow),transparent 60%)no-repeat,var(--bg)!important}html[data-page=ctf] body{background:0 0!important}.ctfx{color:var(--ink);font:15px/1.6 ibm plex mono,ui-monospace,monospace}.ctfx *,.ctfx *::before,.ctfx *::after{box-sizing:border-box}.ctfx a{color:var(--p)}.ctfx .circuit{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:.5rem;padding:.7rem 2rem;border:1px solid var(--line);border-radius:6px;background:var(--panel-2);color:var(--dim);font-size:.78rem}.ctfx .circuit .node{border:1px solid var(--line);padding:.15rem .55rem;border-radius:3px;color:var(--ink)}.ctfx .circuit .node.me{color:var(--acid);border-color:var(--acid)}.ctfx .circuit .hop{color:var(--p)}.ctfx .circuit .addr{margin-left:auto;color:var(--p)}.ctfx .circuit .lock{color:var(--acid)}.ctfx .wrap{padding:3rem 0 2rem}.ctfx .eyebrow{color:var(--acid);font-size:.78rem;letter-spacing:.3em;text-transform:uppercase}.ctfx h1{margin:.6rem 0 1.2rem;font:clamp(3.2rem,9vw,7.5rem)/.95 major mono display,ui-monospace,monospace!important;letter-spacing:-.02em!important;color:var(--head);text-shadow:0 0 40px color-mix(in srgb,var(--pp) 40%,transparent)}.ctfx h1 .slash{color:var(--pp)}.ctfx .lede{max-width:62ch;color:var(--dim);font-size:1rem;line-height:1.7}.ctfx .lede b{color:var(--ink);font-weight:400}.ctfx .grid{display:grid;grid-template-columns:1.25fr 1fr;gap:1.5rem;margin-top:3.5rem}.ctfx .panel{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:6px;background:var(--panel)}.ctfx .panel h2{display:flex;justify-content:space-between;gap:1rem;margin:0!important;padding:.9rem 1.2rem;border-bottom:1px solid var(--line);font:.75rem/1.6 ibm plex mono,ui-monospace,monospace!important;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}.ctfx .panel h2 i{font-style:normal;color:var(--acid);text-align:right}.ctfx .drop{padding:1.6rem 1.4rem 1.5rem}.ctfx .drop .name{font:700 1.9rem/1.1 space grotesk,system-ui,sans-serif;color:var(--head)}.ctfx .drop .meta{margin:.4rem 0 1.4rem;color:var(--dim);font-size:.88rem}.ctfx .cd{display:flex;gap:.8rem}.ctfx .cd[hidden],.ctfx .live[hidden]{display:none}.ctfx .cd div{flex:1;padding:.8rem .5rem;text-align:center;border:1px solid var(--line);border-radius:4px;background:var(--panel-2)}.ctfx .cd b{display:block;font:800 2.8rem/1 jetbrains mono,ui-monospace,monospace;color:var(--head)}.ctfx .cd span{font-size:.68rem;letter-spacing:.2em;color:var(--dim)}.ctfx .live{display:flex;flex-direction:column;gap:.3rem;padding:.9rem 1rem;border:1px solid var(--acid);border-radius:4px;background:color-mix(in srgb,var(--acid) 6%,transparent)}.ctfx .live b{font:800 2rem/1 jetbrains mono,ui-monospace,monospace;color:var(--acid)}.ctfx .live span{font-size:.8rem;color:var(--dim)}.ctfx .tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.3rem}.ctfx .tags span{padding:.15rem .55rem;border:1px dashed color-mix(in srgb,var(--acid) 55%,transparent);border-radius:2px;font-size:.75rem;color:var(--acid)}.ctfx .event-link{display:inline-block;margin-top:1rem;font-size:.78rem}.ctfx .status{position:absolute;top:3.4rem;right:1.2rem;padding:.15rem .5rem;background:var(--acid);color:var(--on-acid);font-size:.7rem;font-weight:700;letter-spacing:.2em}.ctfx .pgp{margin:0;padding:1.2rem 1.4rem;white-space:pre-wrap;font-size:.84rem;line-height:1.65;color:var(--dim)}.ctfx .pgp .h{color:var(--p)}.ctfx .pgp .t{color:var(--ink)}.ctfx .index{margin-top:1.5rem}.ctfx .row{display:grid;grid-template-columns:7rem 1fr auto;gap:1.2rem;align-items:baseline;padding:1.05rem 1.4rem;border-top:1px solid var(--line)}.ctfx .row:first-of-type{border-top:0}.ctfx .row .id{color:var(--p)}.ctfx .row .t{color:var(--head)}.ctfx .row .t small{display:block;font-size:.8rem;color:var(--dim)}.ctfx .row .r{text-align:right;color:var(--acid)}.ctfx .row .r a{display:block;margin-top:.2rem;font-size:.75rem}.ctfx .row .r .rank{display:block;font-weight:400}.ctfx .row .r .sub{display:block;margin-top:.15rem;font-size:.8rem;color:var(--dim)}.ctfx .r--done,.ctfx .r--closed{color:var(--warn)!important}.ctfx .r--upcoming{color:var(--p)!important}.ctfx .sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ctfx .sx{overflow:visible}.ctfx .sx__view[hidden]{display:none}.ctfx .sx__body,.ctfx .sx__body *,.ctfx .about,.ctfx .about *{font-family:ibm plex sans,system-ui,sans-serif}.ctfx .sx__body{padding:1.8rem 1.6rem 1.4rem}.ctfx .sx h3{margin:0!important;font-size:1rem!important;font-weight:600!important;letter-spacing:0!important;text-transform:none!important;color:var(--head)!important}.ctfx .dd{position:relative;display:flex;align-items:center;gap:.9rem;padding:.75rem 1.2rem;border-bottom:1px solid var(--line);background:var(--panel-2);z-index:5}.ctfx .dd__p{font-size:.8rem;color:var(--acid);white-space:nowrap}.ctfx .dd__b{display:inline-flex;align-items:center;gap:1.2rem;min-width:0;padding:.45rem .8rem .45rem .9rem;border:1px solid var(--pp);border-radius:4px;background:color-mix(in srgb,var(--pp) 14%,var(--panel));font:inherit;font-size:.88rem;color:var(--head);cursor:pointer}.ctfx .dd__b:hover{background:color-mix(in srgb,var(--pp) 24%,var(--panel))}.ctfx .dd__b:focus-visible,.ctfx .dd__l:focus-visible{outline:2px solid var(--acid);outline-offset:2px}.ctfx .dd__b span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ctfx .dd__b i{font-style:normal;color:var(--p);transition:transform .15s}.ctfx .dd__b[aria-expanded=true] i{transform:rotate(180deg)}.ctfx .dd__meta{margin-left:auto;font-size:.78rem;color:var(--dim);white-space:nowrap}.ctfx .dd__l{position:absolute;left:8.4rem;top:calc(100% - .35rem);min-width:30rem;margin:0!important;padding:.35rem!important;list-style:none;border:1px solid var(--pp);border-radius:4px;background:var(--panel);box-shadow:0 18px 40px rgba(0,0,0,.55)}.ctfx .dd__l[hidden]{display:none}.ctfx .opt{display:flex;justify-content:space-between;align-items:center;gap:2rem;margin:0!important;padding:.6rem .8rem!important;border-radius:3px;font-size:.86rem;color:var(--ink);cursor:pointer}.ctfx .opt::before{display:none!important}.ctfx .opt small{display:block;font-size:.74rem;color:var(--dim)}.ctfx .opt__r{text-align:right}.ctfx .opt__r small{color:var(--acid)!important}.ctfx .opt:hover,.ctfx .opt.is-active{background:color-mix(in srgb,var(--pp) 16%,var(--panel))}.ctfx .opt.is-active{outline:1px solid color-mix(in srgb,var(--acid) 55%,transparent)}.ctfx .opt[aria-selected=true] .opt__n::before{content:"> ";color:var(--acid)}.ctfx .opt--locked{cursor:not-allowed;color:var(--dim);border-top:1px dashed var(--line);border-radius:0;margin-top:.25rem!important}.ctfx .opt--locked .opt__r{font-size:.76rem;color:var(--p)}.ctfx .opt--locked:hover{background:0 0}.ctfx .hero{display:grid;grid-template-columns:auto 1fr;gap:.4rem 1.6rem;align-items:center}.ctfx .hero__num{font-size:3.4rem;font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--acid)}.ctfx .hero__txt{margin:0;max-width:46ch;font-size:1.05rem;line-height:1.5;color:var(--ink)}.ctfx .hero__txt b{color:var(--head)}.ctfx .hero__txt span{display:block;font-size:.95rem;color:var(--dim)}.ctfx .meter{grid-column:1/-1;margin-top:1.3rem}.ctfx .meter__track{position:relative;height:10px;border-radius:5px;background:var(--track)}.ctfx .meter__fill{position:absolute;left:0;top:0;bottom:0;border-radius:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--pp) 35%,transparent),var(--pp))}.ctfx .meter__now,.ctfx .meter__prev{position:absolute;top:50%;border-radius:50%;transform:translate(-50%,-50%)}.ctfx .meter__now{width:18px;height:18px;background:var(--acid);box-shadow:0 0 0 3px var(--panel)}.ctfx .meter__prev{width:12px;height:12px;background:var(--panel);border:2px solid var(--dim)}.ctfx .meter__scale{position:relative;display:flex;justify-content:space-between;margin-top:.5rem;font-size:.82rem;color:var(--dim)}.ctfx .meter__lbl{position:absolute;top:0;transform:translateX(-100%);padding-right:.6rem;font-weight:600;color:var(--acid);white-space:nowrap}.ctfx .meter__legend{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;margin-top:.8rem;font-size:.85rem;color:var(--dim)}.ctfx .meter__legend span{display:inline-flex;align-items:center;gap:.45rem}.ctfx .lg-prev{width:10px;height:10px;border-radius:50%;border:2px solid var(--dim)}.ctfx .lg-now{width:12px;height:12px;border-radius:50%;background:var(--acid)}.ctfx .tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;margin:1.8rem 0}.ctfx .tile{display:flex;flex-direction:column;gap:.1rem;padding:1rem 1.1rem;border:1px solid var(--line);border-radius:6px;background:var(--panel-2)}.ctfx .tile__k{font-size:.88rem;color:var(--dim)}.ctfx .tile b{font-size:2rem;font-weight:700;line-height:1.15;color:var(--head);font-variant-numeric:tabular-nums}.ctfx .tile__u{font-size:.88rem;color:var(--dim)}.ctfx .tile__d{margin-top:.4rem;font-size:.88rem;font-weight:600;color:var(--acid)}.ctfx .tile__d--down{color:var(--warn)}.ctfx .tile__d--base{font-weight:400;color:var(--dim)}.ctfx .skills__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem 1rem;margin-bottom:.4rem}.ctfx .skills__head span{font-size:.88rem;color:var(--dim)}.ctfx .bar{display:grid;grid-template-columns:15rem 1fr 3.4rem;gap:.9rem;align-items:center;padding:.32rem 0;font-size:.94rem}.ctfx .bar__n{color:var(--ink)}.ctfx .bar__t{position:relative;height:12px;border-radius:3px;background:var(--track)}.ctfx .bar:not(.bar--axis) .bar__t::after{content:"";position:absolute;left:var(--strong);top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:var(--acid);opacity:.8}.ctfx .bar__t i{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:var(--pp)}.ctfx .bar--low .bar__t i{background:var(--pp-soft)}.ctfx .bar--low .bar__n,.ctfx .bar--low .bar__v{color:var(--dim)}.ctfx .bar__v{text-align:right;font-weight:600;color:var(--head);font-variant-numeric:tabular-nums}.ctfx .bar--axis{padding:0}.ctfx .bar--axis .bar__t{height:1.1rem;background:0 0}.ctfx .bar--axis .bar__t b{position:absolute;left:var(--strong);top:0;padding-left:.35rem;font-size:.78rem;font-weight:400;color:var(--acid);white-space:nowrap}.ctfx .about{margin:0;padding:1rem 1.6rem 1.2rem;border-top:1px solid var(--line);font-size:.9rem;color:var(--dim)}.ctfx .about b{font-weight:600;color:var(--ink)}.ctfx .about a{text-decoration:underline;text-underline-offset:3px}.ctfx .foot{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:3rem;padding-top:1.3rem;border-top:1px solid var(--line);font-size:.82rem;color:var(--dim)}.ctfx .who{display:inline-flex;align-items:center;gap:.6rem}.ctfx .ctfx__mark{width:28px;height:auto;color:var(--pp)}@media(max-width:760px){.ctfx .circuit{padding:.6rem 1rem}.ctfx .circuit .addr{margin-left:0;overflow-wrap:anywhere}.ctfx .wrap{padding:2.5rem 0 1.5rem}.ctfx h1{font-size:2.35rem!important}.ctfx .grid{grid-template-columns:1fr}.ctfx .cd{gap:.4rem}.ctfx .cd b{font-size:1.7rem}.ctfx .status{top:3.2rem}.ctfx .row{grid-template-columns:1fr;gap:.25rem}.ctfx .row .r{text-align:left}.ctfx .row .r a{display:inline-block;margin-left:.6rem}.ctfx .dd{flex-wrap:wrap;gap:.5rem .8rem;padding:.75rem 1rem}.ctfx .dd__b{width:100%;justify-content:space-between;font-size:.84rem;gap:.6rem}.ctfx .dd__meta{margin-left:0;order:3}.ctfx .dd__l{left:1rem;right:1rem;min-width:0;top:calc(100% - 1.6rem)}.ctfx .opt{flex-direction:column;align-items:flex-start;gap:.2rem}.ctfx .opt__r{text-align:left}.ctfx .opt__r small{display:inline;margin-left:.5rem}.ctfx .sx__body{padding:1.4rem 1rem 1.1rem}.ctfx .hero{grid-template-columns:1fr}.ctfx .hero__num{font-size:2.8rem}.ctfx .meter__lbl{display:none}.ctfx .tiles{grid-template-columns:1fr}.ctfx .tile{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:.2rem .7rem}.ctfx .tile__k,.ctfx .tile__d{width:100%}.ctfx .tile b{font-size:1.6rem}.ctfx .bar{grid-template-columns:1fr 3.4rem;grid-template-areas:"n v" "t t";gap:.3rem .6rem}.ctfx .bar__n{grid-area:n}.ctfx .bar__v{grid-area:v}.ctfx .bar__t{grid-area:t}.ctfx .bar--axis{grid-template-areas:"t t"}.ctfx .bar--axis>span:not(.bar__t){display:none}.ctfx .about{padding:1rem}.ctfx .foot{flex-direction:column;align-items:flex-start;gap:.7rem}}html[data-page=ctf] .site-nav__bar,html[data-page=ctf] .site-nav__social::before{background:var(--nav);border:1px solid var(--line);box-shadow:0 14px 40px -20px rgba(0,0,0,.9)}html[data-page=ctf] .site-nav__bar{background:radial-gradient(140px 70px at var(--mx,85%) 50%,color-mix(in srgb,var(--pp) 35%,transparent),transparent 70%)no-repeat,var(--nav)}html[data-page=ctf] .site-nav__link,html[data-page=ctf] .site-nav__icon,html[data-page=ctf] .site-nav__social-link{font-family:ibm plex mono,ui-monospace,monospace;font-size:.78rem;font-weight:400;letter-spacing:.02em;color:color-mix(in srgb,var(--head) calc(var(--lit,0) * 100%),var(--dim))}html[data-page=ctf] .site-nav__link:hover,html[data-page=ctf] .site-nav__icon:hover{background:0 0}html[data-page=ctf] .nav-home__icon{color:var(--pp)!important}html[data-page=ctf] .site-nav__tools{border-inline-start-color:var(--line)}html[data-page=ctf] .site-nav__row::after{content:"move to see";padding:0 .8rem 0 .2rem;white-space:nowrap;font:500 .64rem ibm plex mono,ui-monospace,monospace;letter-spacing:.1em;color:var(--dim)}html[data-page=ctf] .site-nav__link--ctf.is-current{background:0 0;color:var(--acid);border:1px solid color-mix(in srgb,var(--acid) 45%,transparent)}html[data-page=ctf] .site-nav__link--ctf.is-current::before{width:.45rem;height:.8rem;border-radius:1px;background:var(--acid);animation:ctf-cursor 1.05s steps(1)infinite}html[data-page=ctf] .site-nav__link--ctf::after{background:var(--line)}@keyframes ctf-cursor{50%{opacity:0}}html[data-page=ctf] #appearance-switcher,html[data-page=ctf] #appearance-switcher-mobile{display:none!important}html[data-page=ctf] .site-nav #mobile-menu-dialog{background:radial-gradient(300px 110px at 35% var(--my,80%),color-mix(in srgb,var(--pp) 45%,transparent),transparent 70%)no-repeat,var(--bg)!important;border-color:var(--line)!important;box-shadow:0 24px 60px -20px rgba(0,0,0,.8)!important}html[data-page=ctf] #mobile-menu-dialog a span{font-family:ibm plex mono,ui-monospace,monospace;font-weight:400;font-size:1.15rem;color:color-mix(in srgb,var(--head) calc(var(--lit,0) * 100%),var(--dim))!important;transition:color .12s}html[data-page=ctf] #mobile-menu-dialog a[href$="/ctf/"] span{color:color-mix(in srgb,var(--acid) calc(max(var(--lit,0),.55) * 100%),var(--dim))!important}html[data-page=ctf] #mobile-menu-dialog a[href$="/ctf/"]::before{width:.5rem;height:1rem;border-radius:1px;background:var(--acid);animation:ctf-cursor 1.05s steps(1)infinite}html[data-page=ctf] #mobile-menu-dialog label{background:var(--panel-2)!important;border-color:var(--line)!important;color:var(--dim)}#mobile-menu-dialog .ctf-hint{display:none;margin:.2rem .5rem 1rem;font:500 .7rem ibm plex mono,ui-monospace,monospace;letter-spacing:.12em;color:var(--dim)}@media(max-width:767px){html[data-page=ctf] .site-nav__row::after{display:none}html[data-page=ctf] .site-nav__bar{background:radial-gradient(90px 60px at var(--mx,85%) 50%,color-mix(in srgb,var(--pp) 40%,transparent),transparent 70%)no-repeat,var(--nav)}html[data-page=ctf] .site-nav .mobile-header-row>*,html[data-page=ctf] .nav-home,html[data-page=ctf] .site-nav__social-link{color:color-mix(in srgb,var(--head) calc(var(--lit,0) * 100%),var(--dim))!important}html[data-page=ctf] #mobile-menu-dialog .ctf-hint{display:block}}@media(prefers-reduced-motion:reduce){html[data-page=ctf] *,html[data-page=ctf] *::before{animation:none!important}}