:root{--desktop: #6f8fb5;--desktop-dark: #486a94;--platinum: #d8d8d8;--platinum-2: #ececec;--platinum-3: #c4c4c4;--white: #ffffff;--shadow: #6f6f6f;--dark: #222222;--ink: #111111;--muted: #4d4d4d;--accent: #1b4fb6;--accent-2: #4a86df;--signal: #197a38;--danger: #a00000;--line: #9f9f9f;--mono: Monaco, "Courier New", monospace;--sans: Charcoal, "Chicago", Geneva, Tahoma, Arial, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;font-family:var(--sans);color:var(--ink);overflow-x:hidden;background:radial-gradient(circle at 20px 20px,rgba(255,255,255,.16) 1px,transparent 1px) 0 0 / 18px 18px,linear-gradient(135deg,var(--desktop),var(--desktop-dark))}body:before{content:"  Portfolio   File   Edit   View   Special   Help";position:fixed;left:0;top:0;z-index:30;width:100%;min-height:24px;padding:3px 12px 4px;border-bottom:1px solid #777;background:linear-gradient(#fbfbfb,#d6d6d6);box-shadow:0 1px #ffffff8c,0 2px 8px #00000038;color:#000;font:13px var(--sans);white-space:nowrap}a{color:inherit}button,input,textarea,select{font:inherit}.wrap{min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:58px 18px 36px}.card{position:relative;width:100%;max-width:1120px;padding:70px 24px 24px;color:var(--ink);background:linear-gradient(#e9e9e9,#d2d2d2);border:1px solid #1c1c1c;border-radius:7px 7px 4px 4px;box-shadow:inset 1px 1px #fffffff2,inset -1px -1px #00000038,0 18px 36px #00000052;opacity:1;animation:mac-window-open .36s cubic-bezier(.2,.85,.2,1) both}.card:before{content:attr(data-window-title);position:absolute;left:8px;right:8px;top:8px;min-height:31px;padding:7px 86px 7px 58px;border:1px solid #6e6e6e;border-radius:4px 4px 2px 2px;background:linear-gradient(90deg,transparent 0 44px,rgba(255,255,255,.72) 44px 45px,transparent 45px calc(100% - 44px),rgba(255,255,255,.72) calc(100% - 44px) calc(100% - 43px),transparent calc(100% - 43px)),repeating-linear-gradient(0deg,#f7f7f7 0,#f7f7f7 2px,#b9b9b9 2px,#b9b9b9 3px,#dedede 3px,#dedede 5px);color:#111;font-weight:700;line-height:1.15;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card:after{content:"";position:absolute;left:20px;top:16px;width:15px;height:15px;border:1px solid #333;border-radius:2px;background:linear-gradient(135deg,transparent 44%,#222 45% 54%,transparent 55%),linear-gradient(45deg,transparent 44%,#222 45% 54%,transparent 55%),linear-gradient(#fff,#c9c9c9);box-shadow:calc(100vw - 220px) 0 0 -1px #dcdcdc,0 0 0 1px #ffffffb8 inset}@keyframes mac-window-open{0%{transform:translateY(18px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.hero{display:grid;grid-template-columns:128px minmax(0,1fr);align-items:start;gap:24px;margin-bottom:22px}.avatar-wrapper{position:relative;width:116px;height:116px;padding:7px;background:linear-gradient(#fff,#cfcfcf);border:1px solid #7d7d7d;border-radius:4px;box-shadow:inset 1px 1px #fff,inset -1px -1px #777,0 2px #00000026}.avatar-wrapper:after{content:"Olaf";position:absolute;left:0;right:0;bottom:-23px;text-align:center;font:12px var(--sans)}.avatar{width:100%;height:100%;overflow:hidden;border:1px solid #333;border-radius:2px;background:#fff}.avatar img{width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(.92) contrast(1.02)}.info{min-width:0}.info h1,.page-content h1,.ctf-hero h1{margin:0;color:#111;font-family:var(--sans);font-size:clamp(32px,6.4vw,54px);line-height:1.02;letter-spacing:0}.intro{max-width:760px;margin:14px 0 0;color:var(--muted);font-size:16px;line-height:1.48}.eyebrow,.card-kicker{margin:0 0 8px;color:var(--accent);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0}.terminal{margin-bottom:24px;padding:18px;color:#d9ffd9;background:linear-gradient(rgba(255,255,255,.05),transparent 28px),#101314;border:1px solid #333;border-radius:4px;box-shadow:inset 1px 1px #ffffff2e,inset -1px -1px #000c,0 1px #fff;font-family:var(--mono)}.terminal-lines{min-height:132px}.line{display:block;overflow-wrap:anywhere;font-size:13px;line-height:1.65}.prompt{margin-right:8px;color:#9dceff;font-weight:700}.value{color:#fff}.terminal-form{display:flex;align-items:center;gap:8px;margin-top:8px}.terminal-form input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#d9ffd9;font-family:var(--mono)}.terminal-form input::placeholder{color:#7fa77f}.cursor{display:inline-block;width:8px;height:15px;background:#d9ffd9;animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:0}}.terminal-submit,.btn,.tool-btn,.path-tab{display:inline-flex;align-items:center;justify-content:center;min-height:33px;padding:7px 15px;border:1px solid #6d6d6d;border-radius:14px;background:linear-gradient(#fff,#eee 45%,#c4c4c4 46%,#efefef);color:#111;text-decoration:none;font-size:13px;font-weight:700;line-height:1.1;cursor:pointer;box-shadow:inset 1px 1px #fffffff2,inset -1px -1px #0000002e,0 1px 2px #0003;transition:transform .12s ease,filter .12s ease}.terminal-submit:hover,.btn:hover,.tool-btn:hover,.path-tab:hover{filter:brightness(1.04)}.path-tab.active{color:#fff;border-color:#143b88;background:linear-gradient(#5f9aff,#1d5bc7)}.terminal-submit:active,.btn:active,.tool-btn:active,.path-tab:active{transform:translateY(1px);box-shadow:inset 1px 1px 2px #00000047}.section{padding:22px 0;border-top:1px solid #888;box-shadow:inset 0 1px #fff}.section-heading{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.8fr);gap:18px;align-items:start;margin-bottom:16px}.section-heading h2{margin:0;color:#111;font-family:var(--sans);font-size:clamp(22px,4vw,32px);line-height:1.1;letter-spacing:0}.nav-btns{display:flex;flex-wrap:wrap;gap:9px;margin-top:20px}.projects-grid,.lab-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:14px;margin-top:16px}.lab-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.project-card,.lab-panel,.path-panel{position:relative;padding:18px;background:linear-gradient(#f8f8f8,#d7d7d7);border:1px solid #8a8a8a;border-radius:5px;box-shadow:inset 1px 1px #fff,inset -1px -1px #0003,0 1px 2px #00000029}.project-card{min-height:164px;display:flex;flex-direction:column;justify-content:flex-start;gap:8px;text-decoration:none;color:#111}.project-card:before{content:"";width:34px;height:29px;margin-bottom:2px;border:1px solid #8b7b32;border-radius:2px;background:linear-gradient(#fff4a4,#f1ca4e) 0 8px / 34px 21px no-repeat,linear-gradient(#fff8ba,#fff8ba) 4px 0 / 16px 10px no-repeat;box-shadow:1px 2px 1px #00000038}.project-card:hover{outline:3px solid rgba(27,79,182,.2);background:linear-gradient(#fff,#dedede)}.project-card h3,.lab-panel h3,.path-panel h3{margin:0 0 8px;color:var(--accent);font-size:17px;line-height:1.25}.project-card p,.path-panel p,.lab-panel p,.lab-panel label,.test-cases{margin:0;color:var(--muted);font-size:13px;line-height:1.45}.path-switcher{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.path-panel{background:linear-gradient(#fff,#ececec)}.tag-list{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 0;padding:0;list-style:none}.tag-list li{padding:5px 9px;border-radius:10px;color:#fff;background:linear-gradient(#5f9aff,#1d5bc7);font-size:12px}.lab-panel{display:flex;flex-direction:column;gap:12px}.lab-panel input,.lab-panel textarea,.lab-panel select,.ctf-sidebar input,.ctf-sidebar textarea,.flag-form input{width:100%;margin-top:6px;padding:9px 10px;border:1px solid #7b7b7b;border-radius:3px;background:#fff;color:#111;outline:none;box-shadow:inset 1px 1px 2px #00000038,0 1px #fff}.lab-panel textarea,.ctf-sidebar textarea{resize:vertical}.lab-panel input:focus,.lab-panel textarea:focus,.lab-panel select:focus,.ctf-sidebar input:focus,.ctf-sidebar textarea:focus,.flag-form input:focus{outline:3px solid rgba(27,79,182,.22)}.meter{width:100%;height:18px;padding:2px;overflow:hidden;border:1px solid #777;border-radius:9px;background:#fff;box-shadow:inset 1px 1px 2px #00000038}.meter span{display:block;width:0;height:100%;border-radius:7px;background:linear-gradient(90deg,#2f66d4,#79a7ff);transition:width .22s ease}.result{min-height:20px;color:#111}.checklist,.owasp-list{display:grid;gap:8px}.checklist{margin:0;padding:0;list-style:none}.checklist li{padding:8px 9px;border:1px solid #ababab;border-radius:3px;background:#fff;color:#111;font-size:12px}.checklist li.pass{border-left:8px solid var(--signal)}.checklist li.fail{border-left:8px solid var(--danger)}.owasp-list label{display:flex;align-items:center;gap:8px}.owasp-list input{width:auto;margin:0;accent-color:var(--accent)}.form-grid{display:grid;grid-template-columns:1fr 170px;gap:12px}.form-grid label:nth-child(n+3){grid-column:1 / -1}.report-output{min-height:210px;max-height:360px;overflow:auto;margin:0;padding:12px;border:1px solid #333;border-radius:4px;background:#111;color:#d9ffd9;box-shadow:inset 1px 1px 3px #000000d9;font:12px/1.55 var(--mono);white-space:pre-wrap}.test-cases{padding-left:18px;color:#111}.test-cases li{margin-bottom:10px}.page-content{display:grid;gap:18px}.page-content h2{margin:0;color:#111;font-family:var(--sans)}.page-content h3{margin:6px 0 0;color:var(--accent)}.page-content p,.page-content li{color:#202020;line-height:1.55}.back-link{display:inline-flex;width:fit-content;margin-bottom:20px;color:#fff;background:linear-gradient(#5f9aff,#1d5bc7);padding:5px 10px;border-radius:12px;text-decoration:none;box-shadow:inset 1px 1px #ffffff73}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}footer{margin-top:24px;padding:10px 12px;border:1px solid #8a8a8a;border-radius:5px;background:linear-gradient(#f8f8f8,#d7d7d7);box-shadow:inset 1px 1px #fff;color:#111;text-align:left;font-size:12px}footer span{color:var(--accent);font-weight:700}@media(max-width:820px){.hero,.section-heading{grid-template-columns:1fr}.hero{justify-items:center;text-align:center}.nav-btns,.path-switcher{justify-content:center}.lab-grid.two,.form-grid{grid-template-columns:1fr}}@media(max-width:600px){body:before{content:"  Portfolio   Help";padding-left:8px}.wrap{padding:44px 10px 24px}.card{padding:62px 14px 18px;box-shadow:0 10px 22px #00000047}.card:before{min-height:28px;padding-right:48px;padding-left:48px}.avatar-wrapper{width:104px;height:104px}.btn,.tool-btn,.path-tab,.terminal-submit{width:100%}.projects-grid,.lab-grid{grid-template-columns:1fr}.terminal-form{flex-wrap:wrap}.terminal-form input{flex-basis:calc(100% - 36px)}}
