@font-face{font-family:Bricolage Grotesque;src:url(/fonts/bricolage-grotesque.woff2)format("woff2");font-style:normal;font-weight:200 800;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(/fonts/ibm-plex-sans.woff2)format("woff2");font-style:normal;font-weight:400 600;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}:root{--bg:#0c0a12;--ink:#f3eefa;--muted:#b8afc7;--dim:#847b96;--purple:#c2a7ed;--pink:#edaccc;--line:#c8afe42b;--display:"Bricolage Grotesque", system-ui, sans-serif;--body:"IBM Plex Sans", system-ui, sans-serif;--mono:"IBM Plex Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:76px}body{color:var(--ink);background:var(--bg);font-family:var(--body);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.6}body:before{content:"";z-index:-2;pointer-events:none;background:radial-gradient(at 0 8%,#76569913,#0000 40%),radial-gradient(at 100% 70%,#a45d8314,#0000 43%);position:fixed;inset:0}button,input{font:inherit}button{color:inherit;cursor:pointer;background:0 0;border:0}a{color:inherit;text-decoration:none}a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}img{max-width:100%;height:auto;display:block}h1,h2,h3,h4,p{margin:0}h1,h2,h3{font-family:var(--display);font-weight:800;line-height:1.08}h2{letter-spacing:-.03em;font-size:48px}h3{letter-spacing:-.02em;font-size:23px}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,canvas:focus-visible{outline:2px solid var(--pink);outline-offset:5px}::selection{color:#171021;background:#c2a7ed}.gradient-text{background:linear-gradient(110deg, var(--purple), var(--pink));color:#0000;-webkit-background-clip:text;background-clip:text}.muted{color:var(--muted)}.skip-link{z-index:120;background:var(--purple);color:var(--bg);padding:12px 18px;position:fixed;top:-90px;left:20px}.skip-link:focus{top:16px}.star-field{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.star-field i{background:#cbb8e8;border-radius:50%;display:block;position:absolute;box-shadow:0 0 4px #c2a7ed45}@keyframes twinkle{to{opacity:.045}}.scroll-progress{z-index:100;transform-origin:0;background:linear-gradient(90deg,#f2b3d6,#bca2ec);height:2px;position:fixed;inset:0 0 auto}.site-header{z-index:50;background:linear-gradient(#0c0a12bb,#0c0a1255,#0000);justify-content:space-between;align-items:center;height:78px;padding:0 4vw;display:flex;position:fixed;top:0;left:0;right:0}.brand{font-family:var(--display);letter-spacing:-.03em;font-size:22px;font-weight:800}.site-header nav{gap:34px;display:flex}.site-header nav a{letter-spacing:.12em;color:#e0d9e7;padding:6px 0;font-size:13px;font-weight:600;position:relative}.site-header nav a:after{content:"";background:var(--pink);height:1px;transition:transform .2s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.site-header nav a:hover:after,.site-header nav a.active:after{transform:scaleX(1)}.social-rail{z-index:40;color:#958ba7;flex-direction:column;align-items:center;gap:22px;display:flex;position:fixed;top:50%;left:25px;transform:translateY(-50%)}.social-rail a{transition:color .2s;display:flex}.social-rail a:hover{color:var(--pink)}.social-rail>span{background:#c8afe422;width:1px;height:60px;margin-top:8px}.floating-resume{z-index:40;font-family:var(--mono);letter-spacing:.14em;color:#8f859f;align-items:center;gap:12px;font-size:11px;display:flex;position:fixed;bottom:28px;left:4vw}.floating-resume:hover{color:var(--pink)}.floating-chat{z-index:45;color:#21142f;background:linear-gradient(125deg,#c5a6ee,#f0b3d2);border-radius:50%;place-items:center;width:56px;height:56px;transition:transform .25s;display:grid;position:fixed;bottom:26px;right:4vw;box-shadow:0 0 40px #dba5eb2a}.floating-chat:hover{transform:translateY(-4px);box-shadow:0 0 45px #dba5eb55}.section-rail{z-index:35;flex-direction:column;justify-content:space-between;align-items:flex-end;display:flex;position:fixed;top:17%;bottom:17%;right:26px}.section-rail:before{content:"";background:linear-gradient(#c2a7ed15,#c2a7ed50,#c2a7ed15);width:1px;position:absolute;top:7px;bottom:7px;right:5px}.section-rail a{font-family:var(--mono);letter-spacing:.15em;align-items:center;gap:13px;min-height:18px;font-size:11px;display:flex;position:relative}.section-rail a span{opacity:0;color:#bab0ce;transition:opacity .2s}.section-rail a.active span,.section-rail a:hover span{opacity:1}.section-rail i{background:#0c0a12;border:1px solid #988cae;border-radius:50%;width:10px;height:10px;transition:background .2s,box-shadow .2s;display:block}.section-rail a.active i{background:#c6a9f1;border-color:#c6a9f1;box-shadow:0 0 10px #c6a9f1,0 0 25px #c6a9f199}.hero{isolation:isolate;height:100svh;min-height:660px;position:relative;overflow:hidden}.hero-name{z-index:3;max-width:27%;position:absolute;top:35%;left:8.3%}.hero-name>p{color:var(--purple);margin-bottom:18px;font-size:32px;font-weight:500;line-height:1.3}.hero-name h1{letter-spacing:-.03em;font-size:clamp(56px,6.4vw,92px);font-weight:800;line-height:.95}.hero-build{z-index:3;width:23.6%;position:absolute;top:40%;right:8.3%}.hero-build>p{font-family:var(--display);color:#c6bdcf;margin-bottom:18px;font-size:40px;font-weight:700;line-height:1.1}.phrase-wrap{min-height:110px}.phrase-wrap>span{font-family:var(--display);letter-spacing:-.025em;font-size:clamp(30px,3.45vw,46px);font-weight:800;line-height:1.06;display:block}.character-stage{perspective:1100px;z-index:2;justify-content:center;align-items:center;width:min(48vw,650px);height:74%;display:flex;position:absolute;top:14%;left:50%;transform:translate(-50%)}.character-portrait{width:100%;max-height:100%;transform-style:preserve-3d;will-change:transform;padding:0;display:block}.character-portrait>div{width:100%}.character-portrait img{object-fit:contain;filter:drop-shadow(0 20px 35px #09051080);width:100%;max-height:calc(100svh - 150px)}.character-hello{white-space:nowrap;color:#dfc6f4;background:#2c203a;border:1px solid #c2a7ed55;border-radius:20px;padding:9px 15px;font-size:13px;position:absolute;bottom:1%;left:50%;transform:translate(-50%)}.hero-scroll{color:#93889f;font-family:var(--mono);letter-spacing:.17em;z-index:3;flex-direction:column;align-items:center;gap:14px;font-size:11px;display:flex;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.hero-scroll span{background:#c2a7ed55;width:1px;height:16px}.hero-scroll:hover{color:var(--pink)}.content-section{width:100%;max-width:1440px;margin:0 auto;padding:100px max(4vw,30px);scroll-margin-top:0}.section-kicker{font-family:var(--mono);letter-spacing:.18em;color:#b6a1d0;font-size:11px;line-height:1.7}.stack-section{text-align:center;padding-top:115px;padding-bottom:55px}.stack-section>h2{letter-spacing:-.03em;font-size:52px;line-height:.95}.stack-section>.section-kicker{letter-spacing:.18em;margin-top:17px;font-size:10px}.tech-network{max-width:880px;margin:25px auto 0;position:relative}.tech-network canvas{cursor:grab;touch-action:pan-y;width:100%;height:590px;display:block}.network-status{height:30px;font-family:var(--mono);letter-spacing:.13em;color:#867992;justify-content:center;align-items:center;gap:12px;font-size:10px;display:flex}.network-status>span{color:#e2c8f7;letter-spacing:.04em}.network-status button{color:#b29bc8;font-size:20px;line-height:1}.technology-list{color:#8b809b;margin-top:20px;font-size:12px}.technology-list summary{cursor:pointer;border-bottom:1px dotted #8b809b66;padding:3px 0;display:inline-block}.technology-list>div{flex-wrap:wrap;justify-content:center;gap:8px;max-width:760px;margin:22px auto;display:flex}.technology-list button{border:1px solid var(--line);color:var(--muted);border-radius:5px;padding:6px 10px;font-size:12px}.technology-list button:hover,.technology-list button[aria-pressed=true]{color:var(--ink);background:#c2a7ed22;border-color:#c2a7ed80}.work-section{padding-top:105px;padding-bottom:55px}.work-kicker{letter-spacing:.2em;justify-content:center;align-items:center;gap:15px;margin-bottom:30px;font-size:10px;display:flex}.work-kicker>span{background:#b9a1d788;width:26px;height:1px}.work-layout{grid-template-columns:1fr 1.35fr 1fr;align-items:center;gap:26px;display:grid}.work-column{flex-direction:column;gap:22px;min-width:0;display:flex}.flip-card{perspective:1100px;height:330px;scroll-margin-top:110px;position:relative}.flip-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.2,.65,.25,1);position:relative}.flip-card.flipped .flip-inner{transform:rotateY(180deg)}.card-face{backface-visibility:hidden;background:linear-gradient(125deg,#30233fdd,#2b2033da);border:1px solid #c6a8e34a;border-radius:15px;padding:26px;position:absolute;inset:0;overflow:hidden;box-shadow:inset 0 0 0 2px #ffffff03,0 10px 25px #06050b22}.card-front{flex-direction:column;display:flex}.card-front:hover{background:linear-gradient(125deg,#39294bdd,#302038da);border-color:#d5b8f58a}.card-category{color:#dba8c9;font-family:var(--mono);letter-spacing:.1em;margin-bottom:14px;font-size:10px;line-height:1.5}.card-face h3{letter-spacing:-.02em;font-size:23px;line-height:1.12}.card-subtitle{font-family:var(--mono);color:#bea8d3;margin-top:10px;font-size:10px;line-height:1.5}.card-description{color:#c8bfd2;margin-top:15px;font-size:14px;line-height:1.55}.flip-hint{font-family:var(--mono);letter-spacing:.13em;color:#92839f;margin-top:auto;padding-top:13px;font-size:8px}.card-flip-target{border-radius:15px;width:100%;height:100%;position:absolute;inset:0}.card-flip-target:focus-visible{outline-offset:0;outline:2px solid var(--pink)}.card-back{background:linear-gradient(130deg,#3a2851ef,#38253fef);flex-direction:column;display:flex;transform:rotateY(180deg)}.card-back h3{padding-right:18px;font-size:22px}.unflip-button{color:#cbb4e0;position:absolute;top:17px;right:15px}.card-back ul{color:#d9cde2;margin:16px 0;padding-left:16px;font-size:13px;line-height:1.6}.card-back li+li{margin-top:7px}.card-back li::marker{color:var(--pink)}.card-technologies{flex-wrap:wrap;gap:6px;display:flex}.card-technologies button{color:#d8c5e9;background:#c2a7ed0b;border:1px solid #c2a7ed38;border-radius:5px;padding:4px 7px;font-size:10px;line-height:1.5}.card-technologies button:hover{background:#c2a7ed25}.case-study-button{color:#ead5ff;width:100%;font-family:var(--mono);letter-spacing:.11em;border-top:1px solid #c2a7ed25;justify-content:center;align-items:center;gap:8px;margin-top:auto;padding:12px 8px 0;font-size:9px;display:flex}.workspace-scene{text-align:center;align-self:center;min-width:0}.workspace-scene img{object-fit:contain;filter:drop-shadow(0 25px 25px #07050b55);width:100%;max-height:615px}.workspace-scene h2{letter-spacing:-.02em;margin-top:20px;font-size:22px}.github-note{color:#998ba9;justify-content:center;align-items:center;gap:10px;margin-top:40px;font-size:12px;display:flex}.github-note:hover{color:var(--pink)}.numbers-section{text-align:center;padding-top:95px;padding-bottom:95px}.numbers-grid{grid-template-columns:repeat(4,1fr);gap:25px;margin-top:36px;display:grid}.numbers-grid>div{flex-direction:column;gap:15px;display:flex}.numbers-grid strong{font-family:var(--display);color:#0000;background:linear-gradient(110deg,#c6acec,#edb3cf);-webkit-background-clip:text;background-clip:text;font-size:58px;font-weight:800;line-height:1}.numbers-grid span{font-family:var(--mono);color:#9c8cad;letter-spacing:.05em;font-size:10px}.ask-section{text-align:center;max-width:970px;min-height:600px;padding-top:90px;padding-bottom:100px}.ask-section>h2{margin-top:20px;font-size:48px}.ask-description{color:#9c8fae;margin-top:17px;font-size:15px}.conversation{overscroll-behavior:contain;text-align:left;scrollbar-width:thin;scrollbar-color:#61446b transparent;min-height:70px;max-height:330px;margin-top:42px;overflow:auto}.message-pair{margin-bottom:24px}.question-message{color:#e7d5f5;background:#30213e;border:1px solid #c2a7ed25;border-radius:13px 13px 3px;width:fit-content;max-width:85%;margin:0 0 20px auto;padding:10px 15px;font-size:14px}.answer-message{color:#c0b5ce;gap:14px;font-size:15px;line-height:1.75;display:flex}.answer-initial{color:#dbc5ef;width:31px;height:31px;font-family:var(--display);border:1px solid #c2a7ed44;border-radius:50%;flex-shrink:0;place-items:center;font-size:11px;font-weight:800;display:grid}.answer-message button{color:var(--pink);border-bottom:1px solid #edaac955;margin-top:13px;padding:0;font-size:12px}.ask-form{text-align:left;background:#1d1428aa;border:1px solid #a980c153;border-radius:14px;align-items:center;gap:12px;padding:12px 12px 12px 20px;display:flex;box-shadow:0 15px 40px #08040e50}.ask-form input{color:var(--ink);background:0 0;border:0;outline:0;width:100%;min-width:0;font-size:16px}.ask-form input::placeholder{color:#867593}.ask-form:focus-within{border-color:#c2a7edaa}.ask-form input:focus-visible{outline:none}.ask-form button{color:#20102d;background:linear-gradient(130deg, var(--purple), var(--pink));border-radius:10px;flex-shrink:0;place-items:center;width:43px;height:43px;display:grid}.ask-form button:disabled{opacity:.4;cursor:default}.question-starters{flex-wrap:wrap;justify-content:center;gap:9px;margin-top:21px;display:flex}.question-starters button{color:#b4a0c4;border:1px solid #c2a7ed29;border-radius:18px;align-items:center;gap:7px;padding:9px 12px;font-size:11px;display:flex}.question-starters button:hover{background:#c2a7ed11;border-color:#c2a7ed55}.about-section{padding-top:80px;padding-bottom:70px}.about-layout{grid-template-columns:.95fr 1.15fr;align-items:center;gap:65px;display:grid}.about-copy>.section-kicker{margin-bottom:23px}.about-copy h2{letter-spacing:-.015em;margin-bottom:23px;font-size:40px;line-height:1.09}.about-copy>p:not(.section-kicker){color:#c0b7cb;margin-top:17px;font-size:16px;line-height:1.8}.about-tags{flex-wrap:wrap;gap:8px;margin-top:23px;display:flex}.about-tags span,.tags span{color:#c6add9;background:#c2a7ed08;border:1px solid #c2a7ed29;border-radius:6px;padding:5px 10px;font-size:11px;line-height:1.5;display:inline-block}.principles{color:#b5a9c5;margin:27px 0 0;padding:0;font-size:14px;line-height:1.75;list-style:none}.principles li{margin-top:10px;padding-left:18px;position:relative}.principles li:before{content:"";background:#b899d5;border-radius:50%;width:4px;height:4px;position:absolute;top:11px;left:0}.principles strong{color:#eee0f7;font-weight:600}.about-copy>p.code-note{font-family:var(--mono);color:#9078a3;letter-spacing:.04em;margin-top:25px;font-size:11px}.identity-demo{background:radial-gradient(at 50% 20%,#43305840,#0000 75%),#17101f70;border:1px solid #a783c336;border-radius:16px;padding:30px 24px;overflow:hidden}.demo-topline{font-family:var(--mono);letter-spacing:.11em;color:#a98fc0;justify-content:space-between;gap:12px;font-size:8px;display:flex}.demo-topline>span:last-child{color:#7f6b94}.identity-flow{color:#b597d1;justify-content:center;align-items:center;gap:18px;margin:42px 0 26px;display:flex}.flow-node{background:#35254588;border:1px solid #c2a7ed44;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:12px;width:125px;min-height:106px;padding:15px 9px;display:flex}.flow-node span{font-family:var(--mono);font-size:9px;line-height:1.5}.flow-node svg{filter:drop-shadow(0 0 10px #c2a7ed55)}.flow-node.alert-node{color:#f0aeca;background:#6b294955;border-color:#e6a3c0}.lifecycle-controls{justify-content:center;gap:10px;margin-bottom:26px;display:flex}.lifecycle-controls button{font-family:var(--mono);color:#a18ab4;border-bottom:1px solid #0000;padding:6px 10px;font-size:11px}.lifecycle-controls button[aria-pressed=true]{color:#e1c6f6;border-color:#c2a7ed}.identity-demo>h3{margin-bottom:13px;font-size:22px;line-height:1.2}.identity-demo>p{color:#aa97bb;font-size:14px;line-height:1.75}.demo-status{color:#b6a3c6;border-top:1px solid #c2a7ed22;align-items:center;gap:10px;margin-top:25px;padding-top:18px;font-size:11px;display:flex}.demo-status svg{color:#ba9ed6;flex-shrink:0}.demo-status.is-alert,.demo-status.is-alert svg{color:#efa9c9}.incident-toggle{font-family:var(--mono);color:#d2acd9;border-bottom:1px dotted #c2a7ed66;margin:18px 0 0;padding:0;font-size:10px}.identity-demo small{color:#766582;margin-top:13px;font-size:10px;display:block}.background-grid{border-top:1px solid #c2a7ed1b;grid-template-columns:1fr 1fr;gap:65px;margin-top:65px;padding-top:45px;display:grid}.background-grid .section-kicker{align-items:center;gap:10px;margin-bottom:26px;font-size:10px;display:flex}.education article{border-left:1px solid #a384bf45;margin-left:6px;padding:0 0 27px 22px;position:relative}.education article:before{content:"";background:#bb9bd5;border-radius:50%;width:7px;height:7px;position:absolute;top:6px;left:-4px;box-shadow:0 0 9px #bb9bd544}.education article:last-child{padding-bottom:0}.small-label{font-family:var(--mono);letter-spacing:.05em;color:#9780ad;font-size:10px}.education h3{margin:9px 0;font-size:23px}.education article>p{font-size:14px;line-height:1.8}.education .tags{margin-top:13px}.tags{flex-wrap:wrap;gap:7px;display:flex}.certificates>div:not(.learning-tags){align-items:flex-start;gap:12px;margin:21px 0;display:flex}.certificates>div>svg{color:#c2a7ed;flex-shrink:0;margin-top:4px}.certificates p{color:#ded0e9;font-size:14px;line-height:1.6}.certificates small{color:#9580a9;margin-top:4px;font-size:12px;display:block}.certificates>.small-label{color:#9780ad;margin-top:29px;font-size:9px}.learning-tags{flex-wrap:wrap;gap:9px;margin-top:14px;display:flex}.learning-tags span{color:#bea8d0;border:1px dashed #c2a7ed3b;border-radius:5px;padding:8px 11px;font-size:11px}.experience-section{padding-top:50px;padding-bottom:70px}.experience-section>h2{margin-top:20px;margin-bottom:36px;font-size:35px}.experience-list{border-top:1px solid #c2a7ed26}.experience-list details{border-bottom:1px solid #c2a7ed26}.experience-list summary{cursor:pointer;align-items:center;gap:22px;padding:25px 0;list-style:none;display:flex}.experience-list summary::-webkit-details-marker{display:none}.experience-list h3{font-size:22px}.experience-list summary p{color:#a591b8;margin-top:8px;font-size:13px}.experience-list summary>span:not(.expand-sign){font-family:var(--mono);color:#9a82ad;letter-spacing:.04em;margin-left:auto;font-size:10px}.expand-sign{color:#b695cf;font-size:24px;transition:transform .2s}.experience-list details[open] .expand-sign{transform:rotate(45deg)}.experience-body{color:#b5a7c5;max-width:850px;padding-bottom:26px}.experience-body ul{padding-left:19px;font-size:15px;line-height:1.8}.experience-body li+li{margin-top:8px}.resume-download{color:#cdb3e1;border:1px solid #c2a7ed30;border-radius:6px;align-items:center;gap:10px;width:fit-content;margin-top:30px;padding:10px 14px;font-size:12px;display:flex}.resume-download:hover{background:#c2a7ed0d}.contact-section{padding-top:70px;padding-bottom:110px}.contact-section>h2{letter-spacing:-.025em;margin-top:25px;font-size:clamp(40px,5vw,64px);line-height:1.09}.say-hello{color:#d9b9eb;border-bottom:1px solid #c2a7ed55;align-items:center;gap:14px;width:fit-content;margin-top:32px;padding-bottom:9px;font-size:17px;font-weight:500;display:flex}.say-hello:hover{color:#f0c2dc}.contact-details{border-top:1px solid #c2a7ed22;justify-content:space-between;align-items:center;gap:20px;margin-top:52px;padding-top:25px;display:flex}.email-copy{text-align:left;grid-template-columns:1fr 20px;gap:8px 15px;padding:0;display:grid}.email-copy>span{font-family:var(--mono);letter-spacing:.12em;color:#977ba9;grid-column:1/-1;font-size:9px}.email-copy strong{color:#d2bbdf;font-size:20px;font-weight:500}.email-copy svg{color:#977dab;align-self:center}.email-copy:hover strong{color:var(--pink)}.contact-socials{color:#b69fca;gap:25px;display:flex}.contact-socials a:hover{color:var(--pink)}.copy-feedback{color:#c2a7ed;min-height:26px;margin-top:14px;font-size:11px}.contact-section footer{color:#877396;justify-content:space-between;align-items:center;gap:25px;margin-top:38px;font-size:10px;display:flex}.contact-section footer a{color:#ad8ec3}.project-dialog{color:#f0e7f7;background:#191021;border:1px solid #c2a7ed59;border-radius:16px;width:min(860px,94vw);max-height:90dvh;padding:0;overflow:hidden}.project-dialog::backdrop{-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:#08040edd}.dialog-close{z-index:3;color:#d3b6ea;background:#24172f;border:1px solid #c2a7ed39;border-radius:50%;place-items:center;width:36px;height:36px;display:grid;position:absolute;top:17px;right:17px}.dialog-content{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#705277 transparent;max-height:90dvh;padding:45px;overflow-y:auto}.dialog-content>.section-kicker{padding-right:30px;font-size:9px}.dialog-content h2{letter-spacing:-.025em;margin-top:24px;font-size:42px}.dialog-headline{color:#af96c2;margin-top:14px;font-size:18px}.dialog-image{border-radius:9px;width:100%;height:auto;margin:28px 0 24px}.dialog-content h3{margin-top:31px;font-size:23px}.dialog-content ul{color:#bda8cf;padding-left:20px;font-size:16px;line-height:1.85}.dialog-content li+li{margin-top:12px}.dialog-content h3+p{color:#bda8cf;margin-top:17px;font-size:16px;line-height:1.8}.dialog-links{flex-wrap:wrap;gap:13px;margin-top:28px;display:flex}.dialog-links a{color:#d9bcec;background:#c2a7ed09;border:1px solid #c2a7ed45;border-radius:6px;align-items:center;gap:10px;padding:12px 16px;font-size:13px;display:flex}.dialog-links a:hover{background:#c2a7ed19}@media (min-width:1500px){.hero-name{left:calc(50% - 600px)}.hero-build{width:280px;right:calc(50% - 600px)}.hero-name h1{font-size:94px}.site-header{padding-inline:calc(50vw - 660px)}.floating-resume{left:calc(50vw - 660px)}.floating-chat{right:calc(50vw - 660px)}}@media (max-width:1100px){.social-rail,.section-rail{display:none}.hero-name{max-width:28%;left:5%}.hero-name>p{font-size:27px}.hero-name h1{font-size:clamp(56px,6.5vw,82px)}.hero-build{width:24%;right:5%}.hero-build>p{font-size:32px}.phrase-wrap>span{font-size:35px}.character-stage{width:47vw}.work-layout{grid-template-columns:1fr 1.1fr 1fr;gap:18px}.card-face{padding:22px}.card-face h3{font-size:21px}.card-description{font-size:13px}.flip-card{height:345px}.card-subtitle{font-size:9px}.card-back ul{font-size:12px}.card-technologies button{font-size:9px}.workspace-scene h2{font-size:20px}.about-layout{gap:35px}.about-copy h2{font-size:35px}.background-grid{gap:35px}.flow-node{width:108px}.identity-flow{gap:12px}.identity-demo{padding:25px 20px}}@media (max-width:980px){.hero-name{max-width:45%;top:17%;left:4%}.hero-name>p{font-size:22px}.hero-name h1{font-size:63px}.hero-build{width:60%;inset:auto auto 12% 4%}.hero-build>p{margin-bottom:12px;font-size:28px}.phrase-wrap{min-height:42px}.phrase-wrap>span{font-size:34px}.character-stage{width:55vw;height:57%;top:22%}.hero-scroll{bottom:0}.work-layout{grid-template-columns:1fr 1fr;gap:25px}.workspace-scene{grid-area:1/1/auto/-1;max-width:400px;margin:0 auto 25px}.workspace-scene img{max-height:480px}.workspace-scene h2{margin-top:20px;font-size:22px}.card-description{font-size:15px}.card-face h3{font-size:24px}.card-subtitle{font-size:11px}.card-face{padding:25px}.flip-card{height:350px}.card-back ul{font-size:14px}.card-technologies button{font-size:11px}.case-study-button{font-size:10px}.about-layout{grid-template-columns:1fr}.identity-demo{width:100%;max-width:560px;margin:0 auto;padding:30px}.about-copy{max-width:700px;margin-top:18px}.about-copy h2{font-size:39px}.background-grid{margin-top:50px}.content-section{padding-inline:4vw}.section-kicker{font-size:10px}.stack-section>.section-kicker{font-size:9px}.work-kicker{letter-spacing:.12em;font-size:9px}.numbers-grid{gap:15px}.numbers-grid strong{font-size:50px}.numbers-grid span{font-size:9px}.contact-section>h2{font-size:51px}}@media (max-width:600px){html{scroll-padding-top:76px}.site-header{height:73px;padding-inline:20px}.brand{font-size:20px}.site-header nav{gap:19px}.site-header nav a{letter-spacing:.11em;font-size:10px}.hero{min-height:780px}.hero-name{max-width:80%;top:13%;left:22px}.hero-name>p{margin-bottom:13px;font-size:21px}.hero-name h1{font-size:51px;line-height:.95}.character-stage{width:87vw;height:46%;top:28%}.character-portrait img{max-height:400px}.hero-build{width:82%;bottom:10.5%;left:22px}.hero-build>p{margin-bottom:10px;font-size:26px}.phrase-wrap{min-height:40px}.phrase-wrap>span{font-size:32px;line-height:1.05}.character-hello{font-size:11px;bottom:-1%}.floating-resume{font-size:10px;bottom:26px;left:22px}.floating-chat{width:52px;height:52px;bottom:22px;right:22px}.hero-scroll{font-size:10px;bottom:13px}.hero-scroll span{height:13px}.content-section{padding:80px 22px}.stack-section{padding-top:90px;padding-bottom:45px}.stack-section>h2{font-size:42px}.stack-section>.section-kicker{letter-spacing:.13em;max-width:340px;margin:15px auto 0;font-size:9px;line-height:1.9}.tech-network{margin-top:18px}.tech-network canvas{height:420px}.network-status{letter-spacing:.08em;font-size:8px}.technology-list{margin-top:15px;font-size:11px}.technology-list button{font-size:11px}.work-section{padding-top:65px}.work-kicker{letter-spacing:.11em;text-align:center;align-items:flex-start;gap:9px;font-size:8px;line-height:1.9}.work-kicker>span{flex-shrink:0;width:19px;margin-top:7px}.work-layout{grid-template-columns:1fr;gap:21px}.workspace-scene{grid-column:auto;max-width:320px;margin-bottom:14px}.workspace-scene img{max-height:410px}.workspace-scene h2{margin-top:20px;font-size:23px}.work-column{gap:21px}.flip-card{height:350px}.card-face{padding:26px}.card-face h3{font-size:26px}.card-category{font-size:10px}.card-subtitle{font-size:11px}.card-description{font-size:16px;line-height:1.55}.flip-hint{font-size:9px}.card-back h3{font-size:25px}.card-back ul{margin:20px 0;font-size:15px;line-height:1.65}.card-technologies button{padding:5px 8px;font-size:11px}.case-study-button{padding-top:15px;font-size:10px}.github-note{gap:7px;margin-top:28px;font-size:11px}.numbers-section{padding-top:40px;padding-bottom:65px}.numbers-grid{grid-template-columns:1fr 1fr;gap:40px 18px;margin-top:30px}.numbers-grid strong{font-size:49px}.numbers-grid span{max-width:150px;margin:auto;font-size:9px;line-height:1.8}.ask-section{min-height:560px;padding-top:65px;padding-bottom:70px}.ask-section>h2{margin-top:17px;font-size:37px}.ask-description{margin-top:17px;font-size:14px;line-height:1.7}.conversation{min-height:70px;max-height:380px;margin-top:30px}.ask-form{border-radius:11px;padding:9px 9px 9px 14px}.ask-form input{font-size:15px}.ask-form button{border-radius:8px;width:38px;height:38px}.question-starters{gap:8px;margin-top:18px}.question-starters button{padding:8px 10px;font-size:10px}.answer-message{gap:10px;font-size:14px}.question-message{font-size:13px}.about-section{padding-top:50px;padding-bottom:55px}.about-layout{gap:35px}.about-copy{margin-top:0}.about-copy h2{font-size:34px;line-height:1.13}.about-copy>.section-kicker{margin-bottom:17px}.about-copy>p:not(.section-kicker){font-size:16px}.about-tags span{font-size:10px}.principles{font-size:14px}.about-copy>p.code-note{font-size:10px}.identity-demo{border-radius:14px;padding:24px 20px}.identity-flow{gap:14px;margin:32px 0 22px}.flow-node{width:116px}.demo-topline{font-size:7px}.identity-demo>h3{font-size:22px}.identity-demo>p{font-size:14px}.demo-status{font-size:10px}.identity-demo small{font-size:9px}.background-grid{grid-template-columns:1fr;gap:40px;margin-top:45px;padding-top:35px}.background-grid .section-kicker{font-size:9px}.education article>p{font-size:14px}.education h3{font-size:23px}.certificates p{font-size:14px}.certificates small{font-size:11px}.certificates>div{margin-top:0}.learning-tags span{font-size:11px}.experience-section{padding-top:35px;padding-bottom:60px}.experience-section>h2{margin-top:18px;margin-bottom:28px;font-size:33px}.experience-list summary{flex-wrap:wrap;gap:10px 18px;padding:22px 0}.experience-list summary>div{width:calc(100% - 40px)}.experience-list h3{font-size:22px}.experience-list summary>span:not(.expand-sign){order:3;margin-left:0;font-size:9px}.expand-sign{margin-left:auto}.experience-body ul{font-size:15px;line-height:1.8}.experience-body .small-label{font-size:9px}.resume-download{padding:11px 12px;font-size:11px}.contact-section{padding-top:45px;padding-bottom:100px}.contact-section>h2{margin-top:21px;font-size:38px;line-height:1.1}.say-hello{margin-top:28px;font-size:16px}.contact-details{flex-wrap:wrap;gap:28px;margin-top:42px}.email-copy{column-gap:8px}.email-copy strong{overflow-wrap:anywhere;font-size:16px}.email-copy>span{font-size:9px}.contact-socials{gap:25px}.contact-section footer{flex-direction:column;align-items:flex-start;gap:16px;margin-top:25px;font-size:9px}.copy-feedback{font-size:10px}.project-dialog{width:calc(100vw - 24px);max-height:93dvh}.dialog-content{max-height:93dvh;padding:34px 23px}.dialog-content>.section-kicker{max-width:95%;font-size:8px}.dialog-content h2{margin-top:20px;font-size:31px}.dialog-headline{font-size:16px}.dialog-image{margin-top:23px}.dialog-close{width:31px;height:31px;top:12px;right:12px}.dialog-content h3{font-size:23px}.dialog-content ul,.dialog-content h3+p{font-size:15px}.dialog-links{gap:10px}.dialog-links a{justify-content:center;width:100%;font-size:12px}}@media (max-width:360px){.site-header{padding-inline:18px}.site-header nav{gap:13px}.site-header nav a{font-size:9px}.hero-name,.hero-build{left:20px}.hero-name h1{font-size:46px}.character-stage{width:90vw}.phrase-wrap>span{font-size:29px}.content-section{padding-inline:20px}.card-face{padding:23px}.flip-card{height:375px}.card-face h3{font-size:24px}.card-description{font-size:15px}.work-kicker{font-size:7px}.identity-flow{gap:10px}.flow-node{width:102px}.flow-node span{font-size:8px}.demo-topline{font-size:6px}.email-copy strong{font-size:14px}.contact-section>h2,.ask-section>h2{font-size:34px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.character-portrait{will-change:auto}.scroll-progress{display:none}}.interactive-scene{width:100%;min-width:0;position:relative}.scene-toolbar{font:9px var(--mono);letter-spacing:.1em;color:#b4a3c9;justify-content:center;align-items:center;gap:12px;min-height:34px;display:flex}.scene-toolbar button{color:#d9c6ed;cursor:pointer;background:#c9a0ed0a;border:1px solid #b88cdb35;border-radius:50%;place-items:center;width:30px;height:30px;display:grid}.scene-toolbar button:hover{background:#c9a0ed22}.threat-scene{border-bottom:1px solid #c9a0ed22;margin:14px -14px 24px}.threat-caption{color:#d4b4ee;font:11px var(--mono);letter-spacing:.12em;text-align:center;padding:10px 0 18px}.threat-caption span{letter-spacing:0;color:#a396b6;margin-top:8px;font-size:10px;display:block}.character-art-stage{perspective:1100px;cursor:grab;touch-action:pan-y;outline-offset:4px;place-items:center;height:560px;display:grid;position:relative}.is-dragging .character-art-stage{cursor:grabbing}.character-art-stage:focus-visible{outline:2px solid var(--purple);border-radius:24px}.character-art-motion{width:100%;height:100%;transform-style:preserve-3d;-webkit-user-select:none;user-select:none}.character-art-motion>div{height:100%}.character-art-motion img{object-fit:contain;pointer-events:none;width:100%;height:100%;max-height:none}.threat-terminal{text-align:left;background:#100d1acc;border:1px solid #bea0e733;border-radius:12px;gap:10px;margin:10px 10px 20px;padding:16px;display:grid}.threat-terminal>span{font:9px var(--mono);color:#ad98c1;letter-spacing:.12em}.threat-terminal strong{font:14px var(--display);color:#cdb2ed}.threat-terminal code{font:10px var(--mono);color:#ac9abd}.terminal-alert{border-color:#e7a96966}.terminal-alert strong{color:#eeb679}.terminal-contained strong{color:#9adbbd}@media (max-width:980px){.work-character-scene .character-art-stage{height:510px}}@media (max-width:600px){.work-character-scene .character-art-stage{height:480px}.threat-scene .character-art-stage{height:320px}}@media (max-width:360px){.work-character-scene .character-art-stage{height:410px}.threat-scene .character-art-stage{height:280px}}.character-art-motion{min-height:0;position:absolute;inset:0}.threat-scene .character-art-stage{height:600px}.chart-character-composition{width:100%;height:100%;transform-style:preserve-3d;position:relative}.floating-chart-board{background:linear-gradient(145deg,#92adc8,#829eb7 55%,#819eae);border:1px solid #c4d4e97a;border-radius:32px;width:94%;height:53%;position:absolute;top:3%;left:3%;transform:translateZ(-20px);box-shadow:inset 0 2px 4px #edf3ff80,inset 0 -3px 8px #516a8a40,0 18px 35px #04030c35}.chart-browser-window{background:linear-gradient(145deg,#edf0ff,#dedfee);border-radius:22px;width:71%;height:55%;padding:11% 6% 7%;position:absolute;top:13%;left:7%;box-shadow:0 7px 9px #3545655c,inset 0 2px 3px #fff}.chart-window-dots{gap:9px;display:flex;position:absolute;top:11%;left:5%}.chart-window-dots i{background:radial-gradient(circle at 30% 25%,#e5b9ee,#c06fbc);border-radius:50%;width:15px;height:15px;box-shadow:0 3px 4px #3c477f40}.chart-window-dots i:nth-child(2){background:radial-gradient(circle at 30% 25%,#fff0a4,#dfbe51)}.chart-window-dots i:nth-child(3){background:radial-gradient(circle at 30% 25%,#d3ffff,#6ec1d0)}.chart-long-bar,.chart-short-bars i{background:linear-gradient(#72b2ff,#65a0f2);border-radius:30px;height:24px;display:block;box-shadow:0 4px 7px #6889c555,inset 0 2px 2px #a3c7ff80}.chart-short-bars{gap:7%;margin-top:16px;display:flex}.chart-short-bars i{width:47%}.chart-trend{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.chart-line{stroke:#7babf9;stroke-width:8px;stroke-linecap:round;stroke-linejoin:round}.chart-line-shadow{stroke:#4a659780;stroke-width:12px;stroke-linecap:round;stroke-linejoin:round;filter:blur(2px);transform:translateY(6px)}.chart-node-shadow{fill:#4c507966;filter:blur(3px)}.chart-node{fill:#e4a3dd;stroke:#f1beee;stroke-width:2px}.chart-node-hole{fill:#b273b7}.chart-phase-alert .chart-node{fill:#efbc89;stroke:#ffe0b9}.chart-phase-contained .chart-node{fill:#a2d5c5;stroke:#c4e9dc}.chart-character-composition .small-tablet-character{object-fit:contain;filter:drop-shadow(0 14px 12px #05030c30);width:56%;height:65%;position:absolute;bottom:1%;left:50%;transform:translate(-50%)translateZ(35px)}@media (max-width:600px){.threat-scene .character-art-stage{height:470px}.floating-chart-board{border-radius:24px}.chart-browser-window{border-radius:16px}.chart-long-bar,.chart-short-bars i{height:18px}.chart-short-bars{margin-top:11px}.chart-window-dots i{width:11px;height:11px}.chart-window-dots{gap:6px}}@media (max-width:360px){.threat-scene .character-art-stage{height:410px}}.contact-hero{grid-template-columns:1.25fr 1fr;align-items:center;gap:55px;display:grid}.contact-copy h2{letter-spacing:-.025em;margin-top:25px;font-size:clamp(40px,4.5vw,60px);line-height:1.09}.contact-character{min-width:0}.contact-character .character-art-stage{height:510px}.contact-cards{grid-template-columns:1.12fr 1fr 1fr;gap:16px;margin-top:42px;display:grid}.contact-card{text-align:left;cursor:pointer;background:linear-gradient(#181222,#181222) padding-box padding-box,linear-gradient(135deg,#b9a6ff6b,#ff9ec44d) border-box;border:1px solid #0000;border-radius:12px;grid-template-columns:minmax(0,1fr) 20px;gap:8px 14px;min-width:0;padding:20px 22px;transition:transform .25s,box-shadow .25s;display:grid}.contact-card:hover{background:linear-gradient(#21172d,#21172d) padding-box padding-box,linear-gradient(135deg,#b9a6ffb0,#ff9ec494) border-box;transform:translateY(-4px);box-shadow:0 10px 28px #ae75d718}.contact-card-label{font:10px var(--mono);letter-spacing:.12em;color:#ae91c1;grid-column:1}.contact-card-value{color:#eadff1;overflow-wrap:anywhere;grid-column:1;font-size:14px;line-height:1.5}.contact-card>svg{color:#c6a6dd;grid-area:1/2/3;align-self:center}.work-character-scene .character-art-stage{height:600px}.work-character-scene .character-art-motion img{transform:scale(1.04)}@media (max-width:980px){.contact-hero{grid-template-columns:1.1fr 1fr;gap:26px}.contact-copy h2{font-size:40px}.contact-character .character-art-stage{height:450px}.work-character-scene .character-art-stage{height:545px}}@media (max-width:850px){.contact-cards{grid-template-columns:1fr 1fr}.contact-card:first-child{grid-column:1/-1}}@media (max-width:600px){.contact-hero{grid-template-columns:1fr;gap:25px}.contact-copy h2{font-size:39px}.contact-character{justify-self:center;width:100%;max-width:380px}.contact-character .character-art-stage{height:435px}.contact-cards{grid-template-columns:1fr;gap:12px;margin-top:25px}.contact-card:first-child{grid-column:auto}.workspace-scene{max-width:min(350px,100%)}.work-character-scene .character-art-stage{height:510px}}@media (max-width:360px){.contact-copy h2{font-size:34px}.contact-character .character-art-stage{height:385px}.work-character-scene .character-art-stage{height:445px}.contact-card{padding:18px}}.character-idle{animation:6s ease-in-out infinite character-float}.hero-idle{--float-distance:-12px;animation-duration:5.5s}.scene-idle{--float-distance:-9px}@keyframes character-float{50%{transform:translateY(var(--float-distance))}}@media (prefers-reduced-motion:reduce){.character-idle{animation:none}}.attention-layers{width:100%;height:100%;position:relative}.attention-base{object-fit:contain;width:100%;height:100%;display:block}.attention-head,.attention-head img{object-fit:contain;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.contact-card{will-change:transform, box-shadow;transition:all .3s cubic-bezier(.34,1.56,.64,1);transform:translateZ(0)}.contact-card:hover{box-shadow:0 12px 24px #06050b44,inset 0 0 0 1px #c2a7ed33}.say-hello{will-change:transform;transition:all .3s cubic-bezier(.34,1.56,.64,1);transform:translateZ(0)}.github-note,.resume-download{will-change:transform, color;transition:all .3s cubic-bezier(.34,1.56,.64,1);transform:translateZ(0)}.github-note:hover,.resume-download:hover{color:var(--purple)}.section-rail a{transition:all .3s ease-out}.section-rail a:after{content:"";opacity:0;will-change:opacity;border-radius:4px;transition:opacity .3s ease-out;position:absolute;inset:0}.scroll-progress{background:linear-gradient(90deg, var(--purple), var(--pink));will-change:transform}button{will-change:transform;transition:all .2s ease-out;transform:translateZ(0)}button:active{transform:scale(.98)}a[href]:not([className]){transition:color .2s ease-out}::selection{background:var(--purple);color:var(--bg)}button:focus-visible,a:focus-visible,[href]:focus-visible{outline:2px solid var(--purple);outline-offset:2px}[class*=motion]{will-change:auto}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.intro-overlay{z-index:1000;background-color:var(--bg);background-image:radial-gradient(at 22% 16%,#76569926,#0000 46%),radial-gradient(at 84% 82%,#a45d8320,#0000 46%);place-items:center;animation:.55s 3s forwards intro-out;display:grid;position:fixed;inset:0}.intro-overlay--exit{pointer-events:none}.intro-stage{flex-direction:column;align-items:center;width:min(540px,82vw);display:flex}.intro-net{width:100%;height:auto;overflow:visible}.intro-edge{stroke:#c7afe961;stroke-width:1px;stroke-dasharray:1;stroke-dashoffset:0;animation:.7s ease-out both intro-line}.intro-edge--spoke{stroke:#c7afe94d}.intro-node{fill:#f3eefa;opacity:1;transform-box:fill-box;transform-origin:50%;filter:drop-shadow(0 0 3px #c2a7edc0);animation:.6s ease-out both intro-node}.intro-node--core{filter:drop-shadow(0 0 7px #d7c2f5)}.intro-halo{fill:#c2a7ed2e;opacity:.3;transform-box:fill-box;transform-origin:50%;animation:1s ease-out .1s both intro-halo}.intro-status{text-align:center;width:100%;height:16px;margin-top:32px;position:relative}.intro-status__line{font-family:var(--mono);letter-spacing:.32em;text-transform:lowercase;color:var(--dim);opacity:0;margin:0;font-size:12px;animation:.95s both intro-text-cycle;position:absolute;left:0;right:0}.intro-status__line--final{color:var(--muted);opacity:.85;animation:.5s ease-out 2.55s both intro-text-in}.intro-progress{background:#c7afe824;border-radius:2px;width:min(320px,62vw);height:2px;margin-top:22px;position:relative;overflow:hidden}.intro-progress__fill{transform-origin:0;background:linear-gradient(90deg, var(--pink), var(--purple));border-radius:2px;animation:2.9s cubic-bezier(.4,.1,.2,1) both intro-fill;position:absolute;inset:0;transform:scaleX(1)}@keyframes intro-node{0%{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}@keyframes intro-line{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes intro-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes intro-halo{0%{opacity:0;transform:scale(.5)}to{opacity:.3;transform:scale(1)}}@keyframes intro-text-cycle{0%{opacity:0;transform:translateY(5px)}15%{opacity:.8;transform:translateY(0)}70%{opacity:.8}to{opacity:0;transform:translateY(-4px)}}@keyframes intro-text-in{0%{opacity:0;transform:translateY(5px)}to{opacity:.85;transform:translateY(0)}}@keyframes intro-out{to{opacity:0;visibility:hidden}}
