:root{color-scheme:light;--bg:#f7f7f2;--bg-soft:#fbfbf8;--window-bar:#ecece4;--line:#d7d7cf;--line-strong:#bcbcb4;--text:#111111;--muted:#5b5b53;--link:#1c43b7;--ok:#1c7a43;--bad:#a22121;--surface:#ffffff;--panel:#fafaf4;--frame-fill:#efefe7;--selection:#dbe4ff;--inline-code-top:#f1f1ea;--inline-code-bottom:#ecece4;--inline-code-text:#2d2d28;--code-comment:#6d7882;--code-keyword:#7a3aa6;--code-type:#005a86;--code-string:#1f6f43;--code-number:#9a4f00;--code-function:#0d4fb8;--code-label:#5e4a22;--max:96ch;--theme-sidebar-width:18rem;--theme-switch-width:10.25rem}html[data-theme=dark]{--bg:#111315;--bg-soft:#171a1d;--window-bar:#1d2226;--line:#343b42;--line-strong:#4c555d;--text:#ece9df;--muted:#a8a39a;--link:#89b8ff;--ok:#7bd88f;--bad:#ff857d;--surface:#15191c;--panel:#1c2125;--frame-fill:#242a2f;--selection:#2b4866;--inline-code-top:#242a2f;--inline-code-bottom:#1d2226;--inline-code-text:#f3efe6;--code-comment:#8d97a1;--code-keyword:#caa8ff;--code-type:#8ecaff;--code-string:#9edb9a;--code-number:#f2c18a;--code-function:#8fd5ff;--code-label:#dfbf81;color-scheme:dark}*,*::before,*::after{box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:ibm plex mono,ui-monospace,monospace;line-height:1.72;text-rendering:optimizeLegibility}img{display:block;max-width:100%;height:auto}a,a:visited{color:var(--link);text-decoration:underline;text-decoration-thickness:.06em;text-underline-offset:.14em;transition:color 120ms ease,background 120ms ease}a:hover{background:var(--text);color:var(--bg)}p,ul,ol,pre,blockquote,table,figure{margin-top:0}::selection{background:var(--selection);color:var(--text)}.skip-link{position:absolute;left:1rem;top:-3rem;padding:.3rem .55rem;border:1px solid var(--line-strong);background:var(--bg-soft);color:var(--text)}.skip-link:focus{top:1rem}.page-frame{padding:1.25rem 1rem 2rem}.theme-sidebar{position:fixed;bottom:1rem;right:1rem;width:min(var(--theme-sidebar-width),calc(100vw - 2rem));z-index:40}.sidebar-stack{display:grid;gap:.8rem;justify-items:end}.theme-window-content{margin:.35rem;padding:.8rem .9rem;border:.75px solid var(--line);background:var(--panel)}.theme-toggle{display:inline-flex;align-items:center;justify-content:space-between;gap:.55rem;width:100%;padding:0;border:0;background:0 0;color:var(--text);font:inherit;cursor:pointer}.theme-toggle:hover{background:0 0;color:var(--text)}.theme-toggle-track{position:relative;width:2.7rem;height:1.35rem;border:1px solid var(--line-strong);background:var(--frame-fill)}.theme-toggle-thumb{position:absolute;top:.15rem;left:.15rem;width:.9rem;height:.9rem;border:1px solid var(--line);background:var(--surface);transition:transform 140ms ease}html[data-theme=dark] .theme-toggle-thumb{transform:translateX(1.15rem)}.theme-toggle-text{min-width:3.6rem;text-align:left;font-size:.9rem}.guestbook-window-content{margin:.35rem;padding:.5rem .6rem .6rem;border:.75px solid var(--line);background:var(--panel)}.guestbook-window,.guestbook-dialog-window{font-size:.88rem}.guestbook-window .window-title,.guestbook-dialog-window .window-title{font-size:.82rem}.guestbook-window .window-button,.guestbook-dialog-window .window-button{font-size:.72rem}.guestbook-window .window-button-icon,.guestbook-dialog-window .window-button-icon{font-size:.82rem}.guestbook-feed{display:flex;flex-direction:column;gap:.3rem;min-height:12rem;max-height:min(42vh,18rem);overflow-y:auto;padding-right:.15rem}.guestbook-line{line-height:1.45;word-break:break-word}.guestbook-author{font-weight:600}.guestbook-author-link,.guestbook-author-link:visited{color:inherit;text-decoration:none}.guestbook-author-link:hover{color:inherit;background:0 0;text-decoration:underline}.guestbook-sep{color:var(--muted)}.guestbook-text{color:var(--text)}.guestbook-form{display:grid;gap:.45rem;margin-top:.45rem}.guestbook-row{display:grid;grid-template-columns:minmax(0,1fr)auto;gap:.45rem;align-items:stretch}.guestbook-input{width:100%;padding:.38rem .5rem;border:.75px solid var(--line);background:var(--surface);color:var(--text);font:inherit}.guestbook-input::placeholder{color:var(--muted);opacity:1}.guestbook-input:focus{outline:0;border-color:var(--line-strong)}.guestbook-comment{min-height:4.4rem;resize:vertical;line-height:1.45}.guestbook-actions{display:flex;justify-content:flex-end}.guestbook-actions .window-button{min-width:4.25rem;height:auto}.guestbook-dialog{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:1rem}.guestbook-dialog[hidden]{display:none}.guestbook-dialog-backdrop{position:absolute;inset:0;border:0;background:rgba(6,8,10,.45);cursor:default}.guestbook-dialog-content{margin:.35rem;padding:.8rem .9rem;border:.75px solid var(--line);background:var(--panel)}.guestbook-dialog-content p{margin:0;font-size:.88rem}.guestbook-dialog-actions{display:flex;justify-content:flex-end;margin-top:.85rem}.site-header,.site-main,.sidebar,.site-footer{width:min(100%,var(--max));margin:0 auto}.header-panel{padding-bottom:1rem;border-bottom:1px solid var(--line-strong)}.header-summary,.meta-line,.page-card-meta,.term-label,.crackme-status,.plain-list time{color:var(--muted);font-size:.95rem}.header-summary{margin:0 0 .35rem}.brand{display:inline-block;margin:.15rem 0 .35rem;color:var(--text);font-size:1.15rem;font-weight:600;text-decoration:none}.nav-toggle{display:none;padding:0;border:0;background:0 0;color:var(--link);font:inherit;cursor:pointer}.nav-list{display:flex;flex-wrap:wrap;gap:0;margin:0;padding:0;list-style:none}.nav-list li+li::before{content:" / ";color:var(--muted)}.nav-link{color:var(--link)}.nav-link.is-active{color:var(--text);text-decoration:none}.nav-toggle:hover{background:var(--text);color:var(--bg)}.site-main{padding-top:1rem}.document,.panel,.document-nav,.site-footer{margin-top:1.5rem}.document,.panel{padding-top:1rem;border-top:1px solid var(--line)}.document:first-child{margin-top:0;padding-top:0;border-top:0}h1,h2,h3,h4{margin:0 0 .65rem;font-size:1rem;font-weight:600}h1{font-size:1.1rem}.lede{margin:0;color:var(--muted)}.archive-stack{display:grid;gap:.1rem}.page-card{padding-top:.1rem;border-top:1px dotted var(--line)}.page-card:first-child{padding-top:0;border-top:0}.page-card-header{display:grid;grid-template-columns:20ch minmax(0,1fr);gap:1rem;align-items:baseline}.page-card-date{margin:0;color:var(--muted);white-space:nowrap}.page-card-link,.page-card-link:visited{color:var(--link)}.page-card-meta{margin:.35rem 0 0 12ch}.meta-line{display:flex;flex-wrap:wrap;gap:0;margin-bottom:.65rem}.meta-line>*+*::before{content:" / ";color:var(--muted)}.document-figure,.image{position:relative;width:fit-content;max-width:100%;margin:1rem auto;border:.75px solid var(--line);background:var(--surface)}.document-figure::before,.image::before{content:"";position:absolute;top:0;left:0;right:0;height:1.35rem;border-bottom:.75px solid var(--line);background:linear-gradient(var(--bg-soft),var(--window-bar))}.document-figure{padding-top:1.35rem}.document-figure img,.responsive,.image__img,.document-body img{display:block;margin:0 auto}.document-figure img,.responsive,.image__img{border:0}.image-window,.code-window,.crackme-window,.theme-window,.guestbook-window,.guestbook-dialog-window{position:relative;width:fit-content;max-width:100%;margin:1rem auto;border:.75px solid var(--line);background:var(--surface)}.table-window{position:relative;width:100%;max-width:100%;margin:1rem 0;border:.75px solid var(--line);background:var(--surface)}.window-titlebar{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:1.35rem;padding:0 .3rem 0 .55rem;border-bottom:.75px solid var(--line);background:linear-gradient(var(--bg-soft),var(--window-bar))}.window-title{overflow:hidden;color:var(--muted);font-size:.9rem;text-overflow:ellipsis;white-space:nowrap}.window-actions{display:flex;align-items:center;gap:.25rem}.window-button{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;height:1.2rem;padding:0 .45rem;border:1px solid var(--line-strong);background:var(--surface);color:var(--text);font-family:inherit;font-size:.78rem;font-weight:400;line-height:1;cursor:pointer;white-space:nowrap}.window-button:hover{background:var(--text);color:var(--bg)}.window-button-copy{min-width:4.9rem}.window-button-icon{min-width:1.35rem;padding:0;font-size:.95rem}.window-content{padding:.8rem}.image-window .window-content{margin:.35rem;padding:.45rem;border:.75px solid var(--line);background:var(--panel)}.image-window{background:var(--frame-fill)}.code-window{background:var(--frame-fill)}.crackme-window,.theme-window,.guestbook-window,.guestbook-dialog-window{background:var(--frame-fill)}.theme-window{width:var(--theme-switch-width);max-width:100%;margin:0}.guestbook-window{width:100%;margin:0}.guestbook-dialog-window{width:min(28rem,calc(100vw - 2rem));max-width:100%;margin:0;z-index:1}.image-window.is-collapsed .window-content,.code-window.is-collapsed .code-window-content,.crackme-window.is-collapsed .window-content,.table-window.is-collapsed .table-window-content{display:none}.document-body{overflow-wrap:anywhere}.document-body h2,.document-body h3,.document-body h4{margin-top:1.8rem}.heading-anchor{color:var(--muted);text-decoration:none}.heading-anchor:hover{color:var(--link);background:0 0}.document-body p,.document-body ul,.document-body ol,.document-body blockquote,.document-body pre,.document-body table,.document-body figure,.document-body hr{margin-bottom:1rem}.document-body ul,.document-body ol,.plain-list{padding-left:1.5rem}.plain-list li+li{margin-top:.25rem}.document-body blockquote{margin-left:0;padding-left:1rem;border-left:3px solid var(--line-strong);color:var(--muted)}.document-body pre,pre{overflow-x:auto}.document-body .highlight,.document-body pre{border:.75px solid var(--line);background:var(--surface)}.document-body .highlight pre{border:0!important}.code-window{margin:1rem auto}.code-window-content{position:relative;margin:.35rem;padding:0;border:.75px solid var(--line);overflow:hidden;background:var(--panel)}.code-window-content.has-inline-linenos::before{content:"";position:absolute;top:0;bottom:0;left:var(--code-gutter-width,calc(3.5ch + 1.1rem + .75px));width:.75px;background:var(--line);pointer-events:none;z-index:2}.code-window-content.has-inline-linenos::after{content:"";position:absolute;left:0;bottom:0;width:var(--code-gutter-width,calc(3.5ch + 1.1rem + .75px));height:16px;background:var(--frame-fill);pointer-events:none;z-index:3}.table-window-content{overflow-x:auto}.code-window .highlight,.code-window pre{width:auto;max-width:none;margin:0;border:0;background:0 0}.code-window .highlight{overflow:visible}.code-window .highlight pre{margin:0!important;padding:.75rem .9rem!important;border:0!important;background:0 0!important;box-shadow:none!important;overflow-x:auto;overflow-y:hidden}.code-window>.code-window-content>pre{padding:.75rem .9rem}.code-window .highlight.has-inline-linenos pre{padding:.75rem 0!important;background:linear-gradient( 90deg,var(--frame-fill) 0,var(--frame-fill) var(--code-gutter-width,calc(3.5ch + 1.1rem + .75px)),var(--panel) var(--code-gutter-width,calc(3.5ch + 1.1rem + .75px)),var(--panel) 100% )!important}.code-window .highlight.has-inline-linenos code{display:block;min-width:max-content}.code-window .highlight.has-inline-linenos code>span[style*="display:flex"],.code-window .highlight.has-inline-linenos code>.line{display:flex!important;align-items:baseline;min-width:max-content}.code-window .highlight.has-inline-linenos code>span[style*="display:flex"]>span:first-child,.code-window .highlight.has-inline-linenos code>.line>span:first-child{position:sticky;left:0;z-index:1;flex:none;min-width:3.5ch;margin-right:0!important;padding:0 .55rem;background:var(--frame-fill);color:var(--muted)!important;font-variant-numeric:tabular-nums;text-align:right;user-select:none}.code-window .highlight.has-inline-linenos code>span[style*="display:flex"]>span:last-child,.code-window .highlight.has-inline-linenos code>.line>span:last-child{display:block;flex:auto;min-width:max-content;padding:0 .9rem}.code-window .tok-comment{color:var(--code-comment);font-style:italic}.code-window .tok-keyword,.code-window .tok-directive{color:var(--code-keyword);font-weight:600}.code-window .tok-type,.code-window .tok-builtin,.code-window .tok-register{color:var(--code-type)}.code-window .tok-string{color:var(--code-string)}.code-window .tok-number,.code-window .tok-variable,.code-window .tok-constant{color:var(--code-number)}.code-window .tok-function,.code-window .tok-decorator{color:var(--code-function)}.code-window .tok-label{color:var(--code-label)}:is(.document-body .highlight,.code-window) .chroma .err{color:var(--bad)}:is(.document-body .highlight,.code-window) .chroma .c,:is(.document-body .highlight,.code-window) .chroma .ch,:is(.document-body .highlight,.code-window) .chroma .cm,:is(.document-body .highlight,.code-window) .chroma .c1,:is(.document-body .highlight,.code-window) .chroma .cs{color:var(--code-comment);font-style:italic}:is(.document-body .highlight,.code-window) .chroma .k,:is(.document-body .highlight,.code-window) .chroma .kc,:is(.document-body .highlight,.code-window) .chroma .kd,:is(.document-body .highlight,.code-window) .chroma .kn,:is(.document-body .highlight,.code-window) .chroma .kp,:is(.document-body .highlight,.code-window) .chroma .kr,:is(.document-body .highlight,.code-window) .chroma .ow,:is(.document-body .highlight,.code-window) .chroma .o,:is(.document-body .highlight,.code-window) .chroma .cp,:is(.document-body .highlight,.code-window) .chroma .cpf{color:var(--code-keyword);font-weight:600}:is(.document-body .highlight,.code-window) .chroma .kt,:is(.document-body .highlight,.code-window) .chroma .nb,:is(.document-body .highlight,.code-window) .chroma .bp,:is(.document-body .highlight,.code-window) .chroma .nc,:is(.document-body .highlight,.code-window) .chroma .nn,:is(.document-body .highlight,.code-window) .chroma .na,:is(.document-body .highlight,.code-window) .chroma .ni,:is(.document-body .highlight,.code-window) .chroma .nt,:is(.document-body .highlight,.code-window) .chroma .py{color:var(--code-type)}:is(.document-body .highlight,.code-window) .chroma .s,:is(.document-body .highlight,.code-window) .chroma .sa,:is(.document-body .highlight,.code-window) .chroma .sb,:is(.document-body .highlight,.code-window) .chroma .sc,:is(.document-body .highlight,.code-window) .chroma .dl,:is(.document-body .highlight,.code-window) .chroma .sd,:is(.document-body .highlight,.code-window) .chroma .s2,:is(.document-body .highlight,.code-window) .chroma .se,:is(.document-body .highlight,.code-window) .chroma .sh,:is(.document-body .highlight,.code-window) .chroma .si,:is(.document-body .highlight,.code-window) .chroma .sx,:is(.document-body .highlight,.code-window) .chroma .sr,:is(.document-body .highlight,.code-window) .chroma .s1,:is(.document-body .highlight,.code-window) .chroma .ss{color:var(--code-string)}:is(.document-body .highlight,.code-window) .chroma .m,:is(.document-body .highlight,.code-window) .chroma .mb,:is(.document-body .highlight,.code-window) .chroma .mf,:is(.document-body .highlight,.code-window) .chroma .mh,:is(.document-body .highlight,.code-window) .chroma .mi,:is(.document-body .highlight,.code-window) .chroma .il,:is(.document-body .highlight,.code-window) .chroma .mo,:is(.document-body .highlight,.code-window) .chroma .no,:is(.document-body .highlight,.code-window) .chroma .nv,:is(.document-body .highlight,.code-window) .chroma .vc,:is(.document-body .highlight,.code-window) .chroma .vg,:is(.document-body .highlight,.code-window) .chroma .vi,:is(.document-body .highlight,.code-window) .chroma .vm{color:var(--code-number)}:is(.document-body .highlight,.code-window) .chroma .nf,:is(.document-body .highlight,.code-window) .chroma .fm{color:var(--code-function)}:is(.document-body .highlight,.code-window) .chroma .nl{color:var(--code-label)}.document-body code,code,pre,kbd{font-family:ibm plex mono,ui-monospace,monospace;font-size:.95em}.document-body :not(pre)>code,:not(pre)>code{padding:.05rem .32rem;border:.75px solid var(--line);background:linear-gradient(var(--inline-code-top),var(--inline-code-bottom));color:var(--inline-code-text);box-decoration-break:clone;-webkit-box-decoration-break:clone}.document-body table,table{width:100%;border-collapse:collapse}.table-window table{width:max-content;min-width:100%;margin:0}.document-body th,.document-body td,th,td{padding:.45rem .6rem;border:1px solid var(--line);text-align:left;vertical-align:top}.document-body hr{border:0;border-top:1px solid var(--line)}.document-nav{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;padding-top:1rem;border-top:1px dotted var(--line)}.pager{display:flex;flex-wrap:wrap;gap:0 .6rem;margin-top:1rem}.pager-link.is-current{color:var(--text);text-decoration:none}.sidebar{padding-top:1rem}.panel h2{margin-bottom:.5rem}.tool-block{margin:0}.tool-block summary{cursor:pointer;color:var(--link)}.tool-block summary:hover{background:var(--text);color:var(--bg)}.tool-block[open] summary{margin-bottom:.75rem}.crackme-block{padding:0;border:0;background:0 0}.crackme-label{margin:0 0 .75rem}.crackme-window{width:100%}.crackme-window-content{margin:.35rem;padding:.8rem 1rem;border:.75px solid var(--line);background:var(--panel)}.crackme-form{display:flex;flex-wrap:wrap;gap:.6rem}.crackme-anim{margin-top:.75rem;padding:.2rem 0;color:var(--muted);text-align:center}.crackme-anim[data-success=true]{color:var(--ok)}.crackme-anim[data-success=false]{color:var(--bad)}.crackme-anim p.anim{margin:0;font-size:clamp(1.4rem,5vw,2.8rem);letter-spacing:.18em}.crackme-anim span.anim{opacity:.18;transition:opacity .4s ease}.crackme-anim span.fade{opacity:1;transition:opacity .4s ease}input.pswd,button.subm,.btn{min-height:2.3rem;padding:0 .7rem;border:1px solid var(--line-strong);background:var(--surface);color:var(--text);font:inherit}input.pswd{flex:1 1 14rem;min-width:0}button.subm,.btn{cursor:pointer}.crackme-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.crackme-status[data-success=true]{color:var(--ok)}.crackme-status[data-success=false]{color:var(--bad)}.external-link::after{content:" [ext]";color:var(--muted)}.center{width:fit-content;max-width:100%}.styled-table{border-collapse:collapse}.image{display:grid;gap:0;padding-top:1.35rem}.image__overlay{padding:.5rem .65rem;border-top:1px solid var(--line);background:var(--bg-soft)}.image__title{font-weight:600}.image__description{color:var(--muted)}.challenges .row{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}.wrapper{margin:1rem 0 1.25rem}.flex-header{display:grid;grid-template-columns:minmax(16rem,24rem)minmax(0,1fr);gap:1rem;align-items:start}.card{padding:.9rem 1rem;border:1px solid var(--line);background:var(--bg-soft)}.column{min-width:0}.card-title{margin:0 0 .5rem;font-weight:600}.card-data{display:grid;gap:.25rem}.card-sub{display:flex;gap:.5rem;align-items:baseline;color:var(--muted)}.card-sub p{margin:0}.flex-header-buttons{margin:1rem 0 0}.crackme-list-card,.crackme-list-card:visited{display:block;color:inherit;text-decoration:none}.crackme-list-card .card-title,.crackme-list-card .card-sub p{color:inherit}.crackme-download-card,.crackme-meta-card{min-height:100%}.crackme-download-copy{margin:0;color:var(--muted)}.crackme-download-link{display:inline-block;text-decoration:none}.crackme-meta-card{background:var(--surface)}.crackme-description{margin:0 0 1rem}.crackme-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:.45rem .85rem;margin:0}.crackme-facts dt{color:var(--muted)}.crackme-facts dd{margin:0}.site-footer{padding-top:1rem;border-top:1px solid var(--line-strong)}.footer-panel p{margin:0;color:var(--muted)}body a:hover,body a:visited:hover,body a:focus-visible,body a:visited:focus-visible,body a[class]:hover,body a[class]:visited:hover,body a[class]:focus-visible,body a[class]:visited:focus-visible{background:var(--text);color:var(--bg)}@media(min-width:1180px){.theme-sidebar{top:1.25rem;bottom:auto;right:auto;left:min( calc(50% + (var(--max)/2) + 1rem),calc(100vw - min(var(--theme-sidebar-width),calc(100vw - 2rem)) - 1rem) )}}@media(max-width:720px){.page-frame{padding-left:.85rem;padding-right:.85rem}.theme-sidebar{right:.85rem;bottom:.85rem}.nav-toggle{display:inline;margin:0 0 .35rem}.site-nav{display:none}body[data-nav-open=true] .site-nav{display:block}.nav-list{display:block;padding-left:1rem}.nav-list li+li::before{content:""}.page-card-header{grid-template-columns:1fr;gap:.25rem}.page-card-summary,.page-card-meta{margin-left:0}.flex-header{grid-template-columns:1fr}.crackme-form{flex-direction:column}}