@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;800&display=swap";:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f8f7f4;--surface:#fffefa;--text:#242622;--muted:#666960;--line:#dedfd8;--soft:#efefe9;--engineering:#416852;--security:#625b86;--curve:cubic-bezier(.22, 1, .36, 1);background:var(--bg);color:var(--text);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:DM Sans,sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#191b1a;--surface:#212422;--text:#f0f0e9;--muted:#b0b3aa;--line:#3c413c;--soft:#2b302b;--engineering:#a4c7ad;--security:#bcb4d9}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#191b1a;--surface:#212422;--text:#f0f0e9;--muted:#b0b3aa;--line:#3c413c;--soft:#2b302b;--engineering:#a4c7ad;--security:#bcb4d9}}*{box-sizing:border-box}body{background:var(--bg);min-width:320px;margin:0}a{color:inherit;text-decoration:none}button{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,main:focus-visible{outline:2px solid var(--engineering);outline-offset:5px}::selection{background:var(--line)}h1,h2,h3,p{margin:0}button{cursor:pointer}.journey-shell{--accent:var(--engineering);grid-template-rows:88px minmax(0,1fr) 64px;height:100svh;display:grid;overflow:hidden}.journey-shell.security{--accent:var(--security)}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;margin:0 5vw;display:flex}.wordmark{letter-spacing:-2px;font-family:Manrope,sans-serif;font-size:25px;font-weight:800}.wordmark span{color:var(--engineering)}.header-actions{align-items:center;gap:28px;display:flex}.quiet-link{color:var(--muted);font-size:13px}.header-route{color:var(--muted);flex:1;align-items:center;gap:28px;font-size:12px;display:flex}.header-route span{border-left:1px solid var(--line);padding-left:28px}.theme-picker{background:var(--soft);border-radius:30px;gap:2px;padding:4px;display:flex}.theme-picker button{width:32px;height:30px;color:var(--muted);background:0 0;border:0;border-radius:50%;font-size:17px}.theme-picker button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 4px #00000010}.journey-viewport{scrollbar-width:none;overscroll-behavior-x:contain;position:relative;overflow:auto hidden}.journey-viewport::-webkit-scrollbar{display:none}.journey-track{width:max-content;height:100%;display:flex;position:relative}.journey-panel{flex:0 0 100vw;width:100vw;min-height:0;position:relative}.panel-scroll{overscroll-behavior-y:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent;height:calc(100% - 72px);overflow-y:auto}.home-content{grid-template-columns:1fr 1fr;align-items:center;gap:6vw;padding:40px 9vw 32px 10vw;display:grid}.eyebrow{letter-spacing:1.5px;color:var(--muted);font-size:10px;font-weight:650}.hero h1{letter-spacing:-4px;margin:24px 0;font-family:Manrope,sans-serif;font-size:clamp(46px,5.7vw,84px);font-weight:650;line-height:1.08}.hero h1 span{color:var(--engineering)}.hero h2{letter-spacing:-.7px;font-size:clamp(18px,1.8vw,27px);font-weight:450;line-height:1.5}.hero>p{color:var(--muted);margin-top:24px;font-size:14px;line-height:1.9}.home-caption{color:var(--muted);align-items:center;gap:12px;margin-top:44px;font-size:11px;display:flex}.caption-line{background:var(--line);width:30px;height:1px}.paths-intro{letter-spacing:1.3px;color:var(--muted);justify-content:space-between;align-items:center;padding-bottom:18px;font-size:9px;display:flex}.paths-intro>span:last-child{font-size:18px}.path-stack{flex-direction:column;gap:20px;display:flex}.path-card{--accent:var(--engineering);background:var(--surface);box-shadow:0 0 0 1px var(--line);transition:transform .3s var(--curve);border-radius:14px;padding:24px 28px;display:block;position:relative;overflow:hidden}.path-card.security{--accent:var(--security)}.card-top{color:var(--accent);justify-content:space-between;align-items:center;display:flex}.card-top .eyebrow{color:var(--accent);font-size:9px}.card-arrow{border:1px solid var(--line);width:27px;height:27px;transition:transform .25s var(--curve);border-radius:50%;place-items:center;font-size:18px;display:grid}.path-card h3{letter-spacing:-.7px;margin-top:16px;font-family:Manrope,sans-serif;font-size:clamp(18px,1.8vw,26px);font-weight:650;line-height:1.45;position:relative}.path-card h3 span{color:var(--muted);font-weight:450;display:block}.path-card>p,.card-tags{display:none}.path-illustration{width:110px;height:70px;stroke:var(--accent);stroke-width:1.3px;opacity:.45;transition:transform .4s var(--curve);position:absolute;top:65px;right:30px}.diagram-line{stroke:var(--line)}.card-bottom{border-top:1px solid var(--line);justify-content:space-between;margin-top:22px;padding-top:14px;font-size:11px;display:flex}.card-bottom>span:last-child{color:var(--accent);transition:transform .25s var(--curve);font-size:18px;line-height:12px}.choice-hint{color:var(--muted);margin-top:18px;font-size:11px}.is-active{box-shadow:0 0 0 1px var(--accent)}.panel-content{max-width:1120px;margin:auto;padding:54px 48px 30px}.section-marker{letter-spacing:1.4px;color:var(--muted);margin-bottom:28px;font-size:10px}.section-marker>span{color:var(--accent);margin-right:10px}.panel-content>h2{letter-spacing:-2px;font-family:Manrope,sans-serif;font-size:clamp(34px,4vw,58px);font-weight:550;line-height:1.15}.overview-copy{color:var(--muted);max-width:650px;margin-top:24px;font-size:18px;line-height:1.8}.focus-tags{flex-wrap:wrap;gap:9px;margin-top:26px;display:flex}.focus-tags>span{background:var(--soft);color:var(--muted);border-radius:6px;padding:8px 12px;font-size:11px}.branch-options{grid-template-columns:1.3fr 1fr;gap:28px;margin-top:52px;display:grid;position:relative}.journey-node{background:var(--surface);box-shadow:0 0 0 1px var(--line);transition:transform .3s var(--curve);border-radius:14px;padding:28px 32px;position:relative}.journey-node h3{letter-spacing:-.8px;margin-top:18px;font-family:Manrope,sans-serif;font-size:25px;font-weight:550}.journey-node p{color:var(--muted);max-width:300px;margin-top:14px;font-size:13px;line-height:1.8}.node-arrow{color:var(--accent);text-align:right;margin-top:24px;font-size:26px;display:block}.project-grid{grid-template-columns:repeat(3,1fr);gap:24px;margin-top:42px;display:grid}.project-node{background:var(--surface);box-shadow:0 0 0 1px var(--line);transition:transform .3s var(--curve);border-radius:14px;flex-direction:column;padding:26px;display:flex;position:relative}.project-number{color:var(--accent);margin-bottom:24px;font-size:11px}.project-node h3{letter-spacing:-.6px;font-family:Manrope,sans-serif;font-size:22px;font-weight:550;line-height:1.4}.project-node p{color:var(--muted);margin-top:18px;font-size:13px;line-height:1.8}.project-link{margin-top:auto;padding-top:26px;font-size:11px}.continue-link{color:var(--muted);border-top:1px solid var(--line);justify-content:space-between;margin-top:30px;padding:15px 0;font-size:12px;display:flex}.preview-note{color:var(--muted);margin-top:24px;font-size:12px}.contact-link{border-bottom:1px solid var(--text);margin-top:42px;padding:12px 0;font-size:17px;display:inline-block}.return-link{color:var(--muted);margin-top:44px;font-size:12px;display:block}.journey-footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;gap:20px;margin:0 5vw;font-size:10px;display:flex}.journey-steps{gap:20px;display:flex}.journey-steps button{color:var(--muted);background:0 0;border:0;align-items:center;gap:7px;padding:10px 0;font-size:10px;display:flex}.step-dot{background:var(--line);border-radius:50%;width:5px;height:5px}.journey-steps button[aria-current]{color:var(--text)}.journey-steps button[aria-current] .step-dot{background:var(--accent);box-shadow:0 0 0 3px var(--soft)}.skip-link{background:var(--surface);z-index:10;padding:12px;position:fixed;top:10px;left:10px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}@media (hover:hover) and (prefers-reduced-motion:no-preference){.path-card:hover,.journey-node:hover,.project-node:hover{transform:translate(5px)}.path-card:hover .card-arrow{transform:rotate(45deg)}.path-card:hover .card-bottom>span:last-child{transform:translate(4px)}}@media (width<=1100px){.home-content{gap:5vw;padding-left:7vw;padding-right:7vw}.path-illustration{display:none}.project-grid{gap:16px}.panel-content{padding:40px}.header-route span{display:none}.hero h1{letter-spacing:-3px}.footer-signature{font-size:9px}.journey-steps{gap:12px}}@media (width<=800px){.journey-shell{grid-template-rows:72px minmax(0,1fr) 64px}.site-header{gap:16px;margin:0 24px}.header-actions{gap:16px}.header-route{font-size:11px}.quiet-link{display:none}.home-content{flex-direction:column;align-items:stretch;gap:32px;padding:32px 28px 24px;display:flex}.desktop-break{display:none}.hero h1{letter-spacing:-2.4px;margin:20px 0 12px;font-size:44px}.hero h2{font-size:21px}.hero>p{margin-top:16px;font-size:13px}.hero .eyebrow{font-size:9px}.home-caption{display:none}.path-stack{gap:16px}.path-card{padding:18px 22px}.path-card h3{margin-top:10px;font-size:21px}.card-bottom{margin-top:16px;padding-top:12px}.paths-intro{padding-bottom:12px}.choice-hint{margin-top:12px}.panel-scroll{height:calc(100% - 46px)}.journey-line{bottom:23px;left:50vw;right:50vw}.panel-content{padding:34px 28px 24px}.panel-content>h2{letter-spacing:-1.5px;font-size:38px}.section-marker{margin-bottom:22px}.overview-copy{font-size:16px;line-height:1.75}.branch-options{grid-template-columns:1fr;gap:18px;margin-top:32px}.journey-node{padding:24px}.journey-node h3{font-size:23px}.node-arrow{margin-top:18px}.project-grid{grid-template-columns:1fr;gap:20px;margin-top:30px}.project-node{padding:24px}.project-number{margin-bottom:16px}.project-node p{font-size:14px}.journey-footer{justify-content:center;margin:0 24px}.footer-signature,.scroll-hint{display:none}.journey-steps{gap:20px}.journey-steps button{font-size:11px}.journey-viewport{scroll-snap-type:x proximity}.journey-panel{scroll-snap-align:start}}@media (width<=380px){.hero h1{font-size:37px}.hero h2{font-size:19px}.site-header{margin:0 20px}.theme-picker button{width:28px}.home-content,.panel-content{padding-left:22px;padding-right:22px}.journey-steps{gap:15px}.path-card h3{font-size:19px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.content-panel{margin-left:80vw}.content-panel .panel-content{background:var(--surface);border:1px solid var(--line);border-radius:20px;margin:40px auto;padding:42px}.journey-panel{z-index:1}.journey-strings{pointer-events:none;z-index:0;position:absolute;top:0;left:0;overflow:visible}.connecting-string{stroke:var(--accent);stroke-width:1.8px;stroke-linecap:round;opacity:.8}.string-tip{fill:var(--accent);opacity:0}@media (width<=800px){.content-panel{margin-left:55vw}.content-panel .panel-content{margin:20px 22px;padding:28px 24px}.panel-scroll{overscroll-behavior-x:auto;touch-action:pan-x pan-y}.connecting-string{stroke-width:1.4px}}@media (hover:hover){.path-card:hover,.journey-node:hover,.project-node:hover{transform:none}}.journey-shell.engineering .content-panel{margin-left:72vw}.journey-shell.security .content-panel{margin-left:102vw}.journey-shell.engineering .content-panel .panel-content{max-width:1080px;margin-top:24px}.journey-shell.security .content-panel .panel-content{max-width:1000px;margin-top:94px}.journey-shell.security .branch-options{grid-template-columns:1fr 1.3fr}.mobile-shell{--accent:var(--engineering);max-width:640px;margin:auto;padding:0 24px}.mobile-shell.security{--accent:var(--security)}.mobile-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:80px;display:flex}.mobile-hero{padding:54px 0 40px}.mobile-hero h1{letter-spacing:-3px;margin:22px 0 20px;font-family:Manrope,sans-serif;font-size:clamp(48px,12vw,68px);font-weight:650;line-height:1.07}.mobile-hero h1 span{color:var(--engineering)}.mobile-hero h2{letter-spacing:-.6px;font-size:21px;font-weight:450;line-height:1.5}.mobile-hero p{color:var(--muted);margin-top:20px;font-size:14px;line-height:1.9}.mobile-paths>.eyebrow{margin-bottom:20px;font-size:9px}.mobile-choice{--accent:var(--engineering);background:var(--surface);border:1px solid var(--line);border-radius:16px;margin-bottom:20px;padding:24px;display:block}.mobile-choice.security{--accent:var(--security)}.mobile-choice-top{color:var(--accent);justify-content:space-between;align-items:center;display:flex}.mobile-choice-top .eyebrow{color:var(--accent);font-size:9px}.mobile-choice-top>span:last-child{font-size:24px}.mobile-choice h3{letter-spacing:-.7px;margin-top:20px;font-family:Manrope,sans-serif;font-size:clamp(20px,5.5vw,26px);font-weight:650;line-height:1.45}.mobile-choice h3 span{color:var(--muted);font-weight:450;display:block}.mobile-choice p{color:var(--muted);margin-top:16px;font-size:14px;line-height:1.8}.mobile-choice-cta{border-top:1px solid var(--line);justify-content:space-between;margin-top:24px;padding-top:16px;font-size:12px;display:flex}.mobile-choice-cta>span{color:var(--accent)}.mobile-back{color:var(--muted);margin-top:28px;font-size:13px;display:inline-block}.mobile-route-hero{padding:38px 0 28px}.mobile-route-hero h1{letter-spacing:-1.9px;margin-top:20px;font-family:Manrope,sans-serif;font-size:42px;font-weight:550;line-height:1.15}.mobile-route-hero p{color:var(--muted);margin-top:22px;font-size:16px;line-height:1.8}.mobile-section-links{border-top:1px solid var(--line);border-bottom:1px solid var(--line);gap:28px;padding:18px 0;font-size:12px;display:flex}.mobile-work{padding-top:44px;scroll-margin-top:24px}.mobile-work h2{letter-spacing:-1px;margin-top:15px;font-family:Manrope,sans-serif;font-size:29px;font-weight:550}.mobile-project-list{border-left:1px solid var(--line);margin-top:30px;padding-left:17px;position:relative}.mobile-project{background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;margin-bottom:20px;padding:24px;display:flex;position:relative}.mobile-project:before{content:"";background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 5px var(--bg);border-radius:50%;position:absolute;top:32px;left:-22px}.mobile-project .project-number{margin-bottom:14px}.mobile-project h3{letter-spacing:-.6px;font-family:Manrope,sans-serif;font-size:22px;font-weight:550;line-height:1.4}.mobile-project p{color:var(--muted);margin-top:16px;font-size:14px;line-height:1.85}.mobile-project .project-link{padding-top:24px}.mobile-contact{border-top:1px solid var(--line);margin-top:28px;padding:42px 0 48px;scroll-margin-top:24px}.mobile-contact h2{letter-spacing:-1px;margin-top:20px;font-family:Manrope,sans-serif;font-size:32px;font-weight:550;line-height:1.25}.mobile-contact .contact-link{margin-top:24px;font-size:15px}.mobile-contact .return-link{margin-top:30px}.mobile-footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;margin-top:30px;padding:24px 0 30px;font-size:10px;display:flex}@media (prefers-reduced-motion:no-preference){.mobile-route{animation:mobile-route-enter .22s var(--curve)}}@keyframes mobile-route-enter{0%{transform:translate(10px)}to{transform:translate(0)}}@media (width<=360px){.mobile-shell{padding:0 20px}.mobile-choice,.mobile-project{padding:21px}}.journey-viewport{overflow:hidden}.journey-track{transform-origin:0 0;will-change:transform;width:100vw;height:100%;display:block}.journey-panel{height:100%;position:absolute;top:0;left:0;margin:0!important}.content-panel .panel-content{max-width:1060px!important;margin:32px auto!important}.journey-strings{overflow:visible}.connecting-string{stroke-width:1.7px}.journey-arrow{opacity:0;stroke:var(--accent);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.journey-shell{grid-template-rows:88px minmax(0,1fr) 40px}.journey-footer{font-size:9px}.profile-evidence{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:26px;display:grid}.experience-summary{background:var(--soft);border-radius:12px;grid-column:1/-1;padding:24px}.profile-evidence h3{letter-spacing:-.5px;margin:12px 0 8px;font-family:Manrope,sans-serif;font-size:20px;font-weight:550}.profile-evidence p{color:var(--muted);margin-top:12px;font-size:13px;line-height:1.8}.experience-organization{color:var(--muted);font-size:13px;display:block}.text-link{text-underline-offset:5px;padding:10px 0;font-size:12px;text-decoration:underline;display:inline-block}.experience-summary .text-link{margin-top:8px}.stage-navigation{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;gap:24px;margin-top:28px;padding-top:20px;font-size:12px;display:flex}.stage-navigation a{padding:8px 0}.stage-navigation a:last-child{color:var(--text)}.bounty-summary{border:1px solid var(--line);border-radius:12px;margin-top:28px;padding:24px}.bounty-summary h3{letter-spacing:-.5px;margin-top:12px;font-family:Manrope,sans-serif;font-size:22px;font-weight:550}.bounty-summary p{color:var(--muted);margin-top:14px;font-size:14px;line-height:1.8}.certificate-card{background:var(--soft);border-radius:14px;margin-top:30px;padding:28px}.certificate-card h3{letter-spacing:-.8px;margin-top:18px;font-family:Manrope,sans-serif;font-size:25px;font-weight:550;line-height:1.4}.distinction{color:var(--accent);margin-top:18px;font-size:16px}.ctf-section{margin-top:32px}.ctf-section h3{letter-spacing:-.6px;font-family:Manrope,sans-serif;font-size:22px;font-weight:550}.ctf-intro,.ctf-practice{color:var(--muted);margin-top:12px;font-size:13px;line-height:1.8}.ctf-timeline{margin:24px 0;padding:0;list-style:none}.ctf-timeline li{border-top:1px solid var(--line);grid-template-columns:80px 1fr;gap:18px;padding:16px 0;font-size:13px;line-height:1.7;display:grid}.ctf-timeline li>span{color:var(--muted)}.contact-options{flex-wrap:wrap;align-items:baseline;gap:28px;margin-top:28px;display:flex}.contact-options .contact-link{margin-top:0}.mobile-shell .profile-evidence{grid-template-columns:1fr;gap:12px}.mobile-shell .profile-evidence h3{font-size:19px}.mobile-shell .experience-summary{padding:22px}.mobile-shell .certificate-card{padding:24px}.mobile-shell .certificate-card h3{font-size:23px}.mobile-shell .distinction{font-size:14px}.mobile-shell .ctf-timeline li{grid-template-columns:55px 1fr;gap:14px}.mobile-shell .contact-options{gap:22px}.mobile-shell #mobile-background{scroll-margin-top:24px}.background-skills{margin-top:28px}.background-skills h3,.education-summary h3{letter-spacing:-.4px;font-family:Manrope,sans-serif;font-size:19px;font-weight:550}.background-skills .focus-tags{margin-top:16px}.education-summary{border-top:1px solid var(--line);margin-top:28px;padding-top:24px}.education-summary h3{margin-top:12px}.education-summary p{color:var(--muted);margin-top:8px;font-size:13px}.content-panel[data-panel="1"] .panel-content{padding:32px 42px}.content-panel[data-panel="1"] .section-marker{margin-bottom:20px}.content-panel[data-panel="1"] .panel-content>h2{font-size:44px}.content-panel[data-panel="1"] .overview-copy{margin-top:18px;font-size:16px}.content-panel[data-panel="1"] .branch-options{gap:24px;margin-top:24px}.content-panel[data-panel="1"] .journey-node{padding:20px 24px}.content-panel[data-panel="1"] .journey-node h3{margin-top:12px;font-size:22px}.content-panel[data-panel="1"] .journey-node p{margin-top:8px;font-size:12px;line-height:1.7}.content-panel[data-panel="1"] .node-arrow{margin-top:10px;font-size:22px}.arrow-icon{stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px;display:block}.card-arrow{place-items:center;width:30px;height:30px;display:grid}.card-arrow .arrow-icon{width:18px;height:18px}.card-bottom{align-items:center}.card-bottom>.arrow-icon{color:var(--accent)}.node-arrow{justify-content:flex-end;align-items:center;display:flex}.node-arrow .arrow-icon{width:24px;height:24px}.path-card-content{grid-template-columns:minmax(0,1fr) 132px;align-items:center;gap:20px;margin-top:14px;display:grid}.path-card-content h3{margin-top:0}.path-card-image{aspect-ratio:16/9;border:1px solid var(--line);background:var(--soft);border-radius:8px;overflow:hidden}.path-card-image img{object-fit:cover;object-position:top;width:100%;height:100%;transition:transform .45s var(--curve);display:block}.shortcut-connection{opacity:0}.shortcut-string{stroke:var(--accent);stroke-width:1.7px;stroke-linecap:round}.shortcut-arrow{stroke:var(--accent);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.shortcut-active .connecting-string,.shortcut-active .journey-arrow{visibility:hidden}.mobile-choice .path-card-image{aspect-ratio:16/9;margin-top:20px}.mobile-choice-top>.arrow-icon{color:var(--accent)}.mobile-choice-cta{align-items:center}.mobile-choice-cta .arrow-icon{width:18px;height:18px;color:var(--accent)}@media (hover:hover) and (prefers-reduced-motion:no-preference){.path-card:hover .path-card-image img,.mobile-choice:hover .path-card-image img{transform:scale(1.08)}.path-card:hover .card-arrow{transform:translate(1px,-1px)}}@media (width<=1100px){.path-card-content{grid-template-columns:minmax(0,1fr) 100px;gap:12px}}@media (prefers-reduced-motion:reduce){.path-card-image img{transition:none}}.path-card .path-card-image{transition:transform .35s var(--curve);transform-origin:50%}@media (hover:hover) and (prefers-reduced-motion:no-preference){.path-card:hover .path-card-image{transform:scale(1.12)}}.journey-control{border:1px solid var(--line);color:var(--text);font:inherit;background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:7px;padding:8px 12px;display:inline-flex}.header-route{gap:12px}.header-route>span{padding-left:16px}.mobile-header{background:var(--bg);z-index:5;gap:8px;position:sticky;top:0}.mobile-controls{gap:6px;font-size:10px;display:flex}.mobile-controls .journey-control{padding:6px 8px}.journey-panel .panel-scroll{overscroll-behavior:contain;height:100%;padding-bottom:32px}.journey-track:not(.camera-travelling) .journey-strings{visibility:hidden}.project-grid.project-grid--two{grid-template-columns:repeat(2,minmax(0,1fr))}.project-grid--two .project-node{padding:32px}.project-grid--two .project-node h3{font-size:26px}.project-grid--two .project-node p{font-size:15px;line-height:1.85}.project-node,.mobile-project,.journey-node,.experience-summary,.research-summary,.certificate-card,.bounty-summary{isolation:isolate;position:relative}.project-node,.mobile-project,.journey-node{overflow:hidden}.project-card-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.project-card-heading .project-number{margin:0}.project-kind{letter-spacing:1px;color:var(--muted);text-align:right;font-size:8px}.project-link{justify-content:space-between;align-items:center;gap:14px;display:flex}.project-link .arrow-icon{width:18px;height:18px;color:var(--accent);transition:transform .24s var(--curve)}.project-preview{aspect-ratio:16/10;background:var(--soft);border:1px solid var(--line);border-radius:8px;margin-bottom:22px;overflow:hidden}.project-preview img{object-fit:cover;object-position:top;width:100%;height:100%;transition:transform .45s var(--curve);display:block}.work-card .project-number{letter-spacing:-1px;font-family:Manrope,sans-serif;font-size:28px;font-weight:500}.work-card:after{content:"";background:var(--accent);transform-origin:top;width:3px;transition:transform .32s var(--curve);pointer-events:none;position:absolute;top:26px;bottom:26px;left:0;transform:scaleY(0)}.tool-card:after{content:"";background:var(--accent);transform-origin:0;height:2px;transition:transform .32s var(--curve);pointer-events:none;position:absolute;bottom:0;left:26px;right:26px;transform:scaleX(0)}.research-card:after{content:"";border-radius:inherit;box-shadow:inset 0 0 0 1px var(--accent);opacity:0;transition:opacity .22s var(--curve);pointer-events:none;position:absolute;inset:0}.journey-node .node-arrow .arrow-icon{transition:transform .26s var(--curve)}.journey-node:after{content:"";border-radius:inherit;background:linear-gradient(115deg, transparent 55%, color-mix(in srgb, var(--accent) 6%, transparent));opacity:0;transition:opacity .25s var(--curve);pointer-events:none;position:absolute;inset:0}.journey-node.secondary-node:after{background:linear-gradient(25deg, color-mix(in srgb, var(--accent) 6%, transparent), transparent 65%)}.research-summary{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:22px}.experience-summary:after,.research-summary:after,.bounty-summary:after{content:"";background:var(--accent);transform-origin:0;height:2px;transition:transform .3s var(--curve);pointer-events:none;position:absolute;top:0;left:22px;right:22px;transform:scaleX(0)}.certificate-card{overflow:hidden}.certificate-card:after{content:"";background:linear-gradient(110deg, transparent 20%, color-mix(in srgb, var(--surface) 55%, transparent) 48%, transparent 75%);transition:transform .65s var(--curve);pointer-events:none;position:absolute;inset:0;transform:translate(-110%)}.ctf-timeline li{position:relative}.ctf-timeline li:after{content:"";background:var(--soft);opacity:0;z-index:-1;transition:opacity .18s var(--curve);position:absolute;inset:0}@media (hover:hover) and (prefers-reduced-motion:no-preference){.project-node:hover .project-preview img,.mobile-project:hover .project-preview img{transform:scale(1.08)}.project-node:hover .project-link .arrow-icon,.mobile-project:hover .project-link .arrow-icon{transform:translate(2px,-2px)}.work-card:hover:after{transform:scaleY(1)}.tool-card:hover:after{transform:scaleX(1)}.research-card:hover:after,.journey-node:hover:after{opacity:1}.journey-node:hover .node-arrow .arrow-icon{transform:translate(5px,-2px)}.journey-node.secondary-node:hover .node-arrow .arrow-icon{transform:translate(5px,2px)}.experience-summary:hover:after,.research-summary:hover:after,.bounty-summary:hover:after{transform:scaleX(1)}.certificate-card:hover:after{transform:translate(110%)}.ctf-timeline li:hover:after{opacity:1}}.project-node:focus-visible:after,.mobile-project:focus-visible:after{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.project-preview img,.project-link .arrow-icon,.certificate-card:after{transition:none}}.ctf-timeline li{isolation:isolate}.project-node:focus-visible:after,.mobile-project:focus-visible:after{transition:none}.project-grid:has(.project-preview):not(.project-grid--two){grid-template-columns:1.2fr 1fr}.project-grid:has(.project-preview):not(.project-grid--two)>.project-node:has(.project-preview){grid-row:span 2}.project-grid:has(.project-preview):not(.project-grid--two)>.project-node:not(:has(.project-preview)){min-height:210px}.profile-link{color:var(--muted);text-decoration:none}.profile-link:hover,.profile-link:focus-visible{color:var(--text);text-underline-offset:4px;text-decoration:underline}.mobile-footer{flex-wrap:wrap;gap:12px}.navigation-icon{stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;flex:0 0 18px;width:18px;height:18px}.journey-control{background:var(--soft);border:1px solid var(--line);min-height:42px;color:var(--text);cursor:pointer;border-radius:100px;justify-content:center;align-items:center;gap:8px;padding:10px 15px;font-weight:500;display:inline-flex}.journey-control:hover{background:var(--surface);border-color:var(--accent)}.stage-navigation{align-items:stretch;gap:12px}.stage-navigation a{border:1px solid var(--line);background:var(--surface);min-height:70px;color:var(--text);border-radius:14px;flex:1;justify-content:space-between;align-items:center;gap:18px;padding:14px 20px;text-decoration:none;display:flex}.stage-navigation a span{gap:4px;font-size:14px;font-weight:500;display:grid}.stage-navigation a small{letter-spacing:1.4px;color:var(--muted);font-size:9px;font-weight:500}.stage-navigation a.stage-next{background:var(--accent);color:var(--bg);border-color:var(--accent);text-align:left}.stage-navigation .stage-next small{color:inherit;opacity:.8}.stage-navigation a:hover{box-shadow:0 4px 14px color-mix(in srgb, var(--text) 8%, transparent)}.stage-navigation a:active,.journey-control:active{transform:scale(.98)}.mobile-shell .mobile-choice-cta{border:1px solid var(--accent);background:var(--accent);color:var(--bg);border-radius:100px;justify-content:space-between;align-items:center;margin-top:22px;padding:14px 18px;font-weight:500;display:flex}.mobile-choice-cta .arrow-icon{color:inherit}.mobile-shell .return-link{border:1px solid var(--line);background:var(--soft);border-radius:100px;justify-content:center;align-items:center;min-height:46px;padding:12px 18px;text-decoration:none;display:inline-flex}.mobile-shell .mobile-header{grid-template-columns:1fr auto;gap:12px;height:auto;min-height:80px;padding:16px 0;display:grid}.mobile-header .wordmark{grid-area:1/1}.mobile-header .theme-picker{grid-area:1/2}.mobile-shell .mobile-controls{grid-area:2/1/auto/-1;gap:10px;display:flex}.mobile-shell .mobile-controls .journey-control{flex:1;min-height:44px;font-size:12px}.mobile-shell #mobile-projects,.mobile-shell #mobile-background,.mobile-shell #mobile-contact{scroll-margin-top:150px}@media (prefers-reduced-motion:no-preference){.journey-control,.stage-navigation a{transition:background .18s,box-shadow .18s,transform .18s}}.content-panel .profile-evidence:has(>.research-summary:nth-child(3)){grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.content-panel .research-summary h3{margin-top:0}@media (width<=1100px){.content-panel .profile-evidence:has(>.research-summary:nth-child(3)){grid-template-columns:minmax(0,1fr)}}.contact-hub{margin-top:32px}.contact-email-card{border:1px solid color-mix(in srgb, var(--accent) 30%, var(--line));background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 9%, var(--surface)), var(--surface));border-radius:22px;padding:28px 30px;position:relative}.contact-email-card:before{content:"";background:var(--accent);width:32px;height:2px;position:absolute;top:50%;left:-32px}.contact-email-row{justify-content:space-between;align-items:center;gap:16px;margin:16px 0 10px;display:flex}.contact-email-action{color:var(--text);letter-spacing:-1px;align-items:center;gap:22px;font-family:Manrope,sans-serif;font-size:clamp(27px,3vw,36px);font-weight:600;text-decoration:none;display:inline-flex}.contact-email-action .arrow-icon{width:28px;height:28px;color:var(--accent)}.contact-copy{border:1px solid var(--line);min-height:44px;color:var(--text);background:var(--surface);font:inherit;cursor:pointer;white-space:nowrap;border-radius:100px;padding:11px 16px;font-size:12px}.contact-address{color:var(--muted);overflow-wrap:anywhere;font-size:15px;text-decoration:none;display:inline-block}.contact-copy-status{min-height:18px;color:var(--accent);margin-top:8px;font-size:11px;display:block}.contact-secondary{grid-template-columns:1fr 1fr;gap:14px;margin-top:16px;display:grid}.contact-channel{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:18px;justify-content:space-between;align-items:center;gap:16px;min-height:100px;padding:22px;text-decoration:none;display:flex}.contact-channel strong{font-size:16px;font-weight:500;display:block}.contact-channel small{color:var(--muted);margin-top:7px;font-size:12px;line-height:1.6;display:block}.contact-channel .arrow-icon{color:var(--accent);flex-shrink:0}.contact-private-note{color:var(--muted);margin:20px 0 0;font-size:12px;line-height:1.6}.contact-intro{color:var(--muted);font-size:16px;line-height:1.8}.contact-copy:hover,.contact-channel:hover{border-color:var(--accent)}.contact-email-action:hover{color:var(--accent)}.contact-copy:active,.contact-channel:active{transform:scale(.98)}.mobile-shell .contact-email-card{padding:24px 20px}.mobile-shell .contact-email-card:before{width:16px;left:-16px}.mobile-shell .contact-secondary{grid-template-columns:1fr}.mobile-shell .contact-channel{min-height:94px}.mobile-shell .contact-email-row{flex-wrap:wrap}@media (prefers-reduced-motion:no-preference){.contact-channel,.contact-copy{transition:border-color .18s,transform .18s}}.mobile-shell .mobile-choice{background:var(--surface);transition:transform .28s var(--curve), border-color .28s ease;-webkit-tap-highlight-color:transparent;border-radius:24px 24px 24px 8px;position:relative;overflow:hidden}.mobile-shell .mobile-choice.security{border-radius:24px 8px 24px 24px}.mobile-shell .mobile-choice:active{border-color:var(--accent);transform:scale(.975)}.mobile-shell .mobile-choice .path-card-image{border-radius:12px;overflow:hidden}.mobile-shell .mobile-choice img{transition:transform .7s var(--curve)}.mobile-shell .mobile-choice:active img{transform:scale(1.05)}.mobile-shell .mobile-choice-cta svg{transition:transform .28s var(--curve)}.mobile-shell .mobile-choice:active .mobile-choice-cta svg{transform:translate(6px)}.mobile-shell .mobile-section-links{border:0;gap:8px;padding:8px 0}.mobile-shell .mobile-section-links a{border:1px solid var(--line);background:var(--surface);transition:background .18s ease, transform .18s var(--curve);border-radius:100px;flex:1;justify-content:center;padding:12px 8px;display:flex}.mobile-shell .mobile-section-links a:active{background:var(--soft);transform:scale(.95)}.mobile-shell .mobile-project-list{border-left:0;gap:18px;padding-left:0}.mobile-shell .mobile-project{border:1px solid var(--line);background:var(--surface);border-radius:20px;padding:24px;position:relative}.mobile-shell .mobile-project:before{display:none}.mobile-shell .mobile-project:active{border-color:var(--accent)}.mobile-shell .mobile-project a{align-items:center;min-height:44px;display:inline-flex}.mobile-shell .mobile-work{position:relative}.mobile-shell .mobile-route{animation:none}.mobile-shell .mobile-connector{height:144px;color:var(--accent);margin:16px 0 -24px}.mobile-shell .mobile-connector svg{width:100%;height:100%;display:block;overflow:visible}.mobile-shell .mobile-connector path{stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.mobile-shell .mobile-connector-track{opacity:.12}.mobile-shell .mobile-connector-string{stroke-dasharray:1;stroke-dashoffset:0}.mobile-shell .mobile-connector-tip{opacity:1}.mobile-shell .mobile-work>.eyebrow:before{content:"";vertical-align:middle;background:var(--accent);transform-origin:0;width:22px;height:2px;margin-right:10px;display:inline-block}@media (prefers-reduced-motion:no-preference){.mobile-shell .mobile-connector:not(.mobile-arrived) .mobile-connector-string{stroke-dashoffset:1px}.mobile-shell .mobile-connector:not(.mobile-arrived) .mobile-connector-tip{opacity:0}.mobile-shell .mobile-connector.mobile-arrived .mobile-connector-string{animation:1.4s cubic-bezier(.45,0,.2,1) .12s both mobile-string-draw}.mobile-shell .mobile-connector.mobile-arrived .mobile-connector-tip{animation:.35s 1.35s both mobile-tip-arrive}.mobile-shell .mobile-work>.eyebrow:before{animation:mobile-line-in .6s var(--curve) both}}@keyframes mobile-string-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes mobile-tip-arrive{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@keyframes mobile-line-in{0%{transform:scaleX(.2)}to{transform:scaleX(1)}}.mobile-motion-outgoing{z-index:4;pointer-events:none;will-change:transform;max-width:none;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}.mobile-camera-guide{z-index:8;pointer-events:none;width:100%;height:100%;position:fixed;inset:0;overflow:hidden}.mobile-camera-guide path{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.mobile-choice.security .mobile-choice-top>.arrow-icon,.mobile-choice.security .mobile-choice-cta>.arrow-icon{rotate:180deg}.mobile-shell .mobile-header{z-index:10}.mobile-shell .mobile-choice,.mobile-shell .mobile-choice.security{border-color:color-mix(in srgb, var(--line) 65%, transparent);background:linear-gradient(155deg, var(--surface), color-mix(in srgb, var(--surface) 92%, var(--accent)));box-shadow:0 12px 36px -24px color-mix(in srgb, var(--text) 35%, transparent);border-radius:28px;padding:28px}.mobile-shell .mobile-choice .path-card-image{border-radius:16px}.mobile-shell .mobile-choice h3{letter-spacing:-.8px;font-weight:650}.mobile-shell .mobile-choice h3 span{color:var(--muted)}.mobile-shell .mobile-choice-top{margin-bottom:24px}.mobile-shell .mobile-choice:active{transform:scale(.98)}.mobile-shell .mobile-section-links a{background:var(--soft);border-color:#0000;border-radius:100px}.mobile-shell .mobile-project{border-color:color-mix(in srgb, var(--line) 70%, transparent);box-shadow:0 10px 30px -24px color-mix(in srgb, var(--text) 30%, transparent);border-radius:24px}.mobile-shell .mobile-route-hero h1{letter-spacing:-1.8px;font-weight:650}.mobile-shell .mobile-hero{padding-top:64px}.mobile-shell .mobile-hero p{max-width:32ch}.mobile-shell .mobile-camera-guide{stroke-width:1.5px}@media (width<=360px){.mobile-shell .mobile-choice{padding:23px}}
