@font-face{font-family:Portfolio;src:local('Arial');font-display:swap}
:root{color-scheme:dark;--bg:#11112b;--text:#f4f1ff;--muted:#c2bad9;--accent:#c3adff;--coral:#ffc099;--line:#ffffff25;--panel:#211e3c;--mono:'Cascadia Code','Consolas',monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--bg);background-image:radial-gradient(ellipse at 90% 7%,#42327450,transparent 27%),radial-gradient(ellipse at 0% 40%,#252c6344,transparent 30%);color:var(--text);font-family:Portfolio,Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,select,summary{cursor:pointer}a,button,summary,input,select{touch-action:manipulation}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ffcfad;outline-offset:5px}button{color:inherit}button:disabled{opacity:.5;cursor:default}::selection{background:#c9b4ff;color:#201834}[hidden]{display:none!important}.wrap{width:min(1280px,88%);margin-inline:auto}.skip-link{position:absolute;left:15px;top:-100px;z-index:5;background:#ffe1c9;color:#201834;padding:15px}.skip-link:focus{top:15px}.site-header{display:flex;justify-content:space-between;align-items:center;padding-block:29px;border-bottom:1px solid var(--line);gap:25px}.brand{font-size:27px;font-weight:700;letter-spacing:-2px}.brand span{color:var(--coral)}nav{display:flex;align-items:center;gap:27px;font-size:13px;color:#d0c6e8}nav a:hover,.text-link:hover,.contact-links a:hover{color:var(--coral)}.nav-contact{border:1px solid #ba9cdb55;padding:11px 16px;border-radius:24px}.hero{padding-block:85px 75px;display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:24px}.eyebrow{text-transform:uppercase;font:11px/1.6 var(--mono);letter-spacing:1.7px;color:#bdb0dd;margin:0}.status-dot{display:inline-block;vertical-align:middle;width:7px;height:7px;background:var(--coral);border-radius:50%;margin-right:7px;box-shadow:0 0 15px #ffac7833}h1{font-size:clamp(48px,6.2vw,86px);font-weight:600;line-height:1.035;letter-spacing:-4.8px;margin:24px 0}h1>span{color:var(--accent);background:linear-gradient(110deg,#b9a3ff 3%,#e8b7eb 57%,#ffb58e 96%);background-clip:text;-webkit-text-fill-color:transparent}.intro{font-size:16px;line-height:1.8;max-width:480px;color:var(--muted)}.actions{display:flex;gap:23px;align-items:center;flex-wrap:wrap;margin-top:28px}.button{display:inline-flex;align-items:center;justify-content:center;gap:15px;padding:14px 22px;border:1px solid transparent;border-radius:28px;font-size:13px;line-height:1.3;transition:transform .18s,background .18s;min-height:44px}.button:hover{transform:translateY(-2px)}.primary{background:var(--coral);color:#2c1936;box-shadow:0 7px 30px #f3a17d15}.text-link{font-size:13px;display:inline-block;border-bottom:1px solid #9c8fc3;padding-block:10px}.availability{display:inline-block;font:11px/1.7 var(--mono);color:#cebedf;margin-top:29px}.availability .status-dot{width:5px;height:5px;background:#c4b2ff;box-shadow:none}.hero-visual{position:relative;min-width:0;background:radial-gradient(ellipse at 60% 45%,#a184ec22,transparent 65%)}.hero-visual:before{content:'';position:absolute;inset:35px;border-radius:50%;z-index:-1;background:radial-gradient(ellipse at 65% 30%,#dc91b633,transparent 65%),radial-gradient(ellipse at 30% 75%,#5677e355,transparent 60%);filter:blur(20px)}.hero-visual svg{display:block;width:100%;height:auto}.visual-caption{font:10px var(--mono);letter-spacing:2px;text-align:center;color:#c4afd9;margin:12px 0 0}.proof{display:grid;grid-template-columns:1.15fr 1fr 1fr;border-block:1px solid var(--line);padding-block:27px;gap:24px}.proof strong{display:block;font-size:14px;font-weight:400;margin-top:8px}.proof small{display:block;font-size:11px;color:#a99abc;margin-top:6px}.proof .eyebrow{font-size:9px;letter-spacing:1px}.section{padding-block:78px}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:34px}h2{font-size:clamp(32px,3.4vw,46px);line-height:1.12;font-weight:400;letter-spacing:-1.5px;margin:15px 0 0}.section-aside{font:11px/1.8 var(--mono);color:#b4a6cf;max-width:250px;margin:0}.projects{display:grid;grid-template-columns:1fr 1fr;gap:25px}.project{border:1px solid #ffffff20;border-radius:12px;background:var(--panel);overflow:hidden;min-width:0;align-self:start;transition:border-color .2s}.project:hover{border-color:#c2a9ff88}.project-art{height:195px;background:linear-gradient(130deg,#7052ae,#343472);padding:24px;position:relative;overflow:hidden}.project:nth-child(2n) .project-art{background:linear-gradient(130deg,#a56380,#643579 60%,#32326e)}.project:nth-child(3n) .project-art{background:linear-gradient(125deg,#355982,#5a5090 65%,#785695)}.project-art svg{width:100%;height:100%;display:block}.art-label{position:absolute;top:16px;left:20px;font:9px var(--mono);letter-spacing:1px;color:#eee5ff}.project-copy{padding:27px 30px}.project-category{font:10px/1.6 var(--mono);text-transform:uppercase;letter-spacing:1.1px;color:#c9b6fa}.project h3{font-weight:400;font-size:clamp(24px,2.5vw,31px);letter-spacing:-.8px;line-height:1.17;margin:12px 0}.project p{font-size:14px;color:#c0b5d0;line-height:1.8}.tags{display:flex;flex-wrap:wrap;gap:8px;margin-block:18px 20px}.tags span{font:10px var(--mono);color:#d5c5ef;border:1px solid #b39acc33;border-radius:3px;padding:5px 7px}.project details{border-top:1px solid #ffffff1b}.project summary{font-size:12px;color:#ffd1ae;min-height:44px;padding-block:16px}.project details[open] summary{margin-bottom:10px}.project details h4{font-size:12px;font-weight:500;color:#e5d7f9;margin-bottom:6px}.project details p{font-size:13px;margin-top:6px}.project details .context{color:#a89aba;font:10px/1.7 var(--mono)}.experience{background:#ffffff04;border-block:1px solid #ffffff12}.experience-grid{display:grid;grid-template-columns:1fr 1.12fr;gap:90px}.body-copy{color:var(--muted);font-size:15px;line-height:1.9;max-width:490px}.role{display:flex;flex-direction:column;gap:8px;border-left:2px solid var(--coral);padding-left:19px;margin-top:30px;font-size:13px}.role strong{font-size:18px;font-weight:400}.role span{color:#b0a2c4;font:11px/1.5 var(--mono)}.experience-list article{display:flex;gap:22px;padding:0 0 23px;margin:0 0 23px;border-bottom:1px solid #ffffff17}.experience-list article>span{font:11px var(--mono);color:var(--coral);padding-top:5px}.experience-list h3{font-size:20px;font-weight:400;margin:0 0 9px;letter-spacing:-.4px}.experience-list p{font-size:14px;line-height:1.8;color:#c2b5d3;margin:0}.small{font-size:11px!important;line-height:1.8!important}.muted{color:#a99aba!important}.lab-shell{background:#dfd4f4;color:#2a1949;border-radius:14px;overflow:hidden;color-scheme:light}.tab-list{display:flex;border-bottom:1px solid #5d3c752b;padding-inline:20px;gap:10px;background:#d7c9ee}.tab-list button{background:transparent;border:0;border-bottom:3px solid transparent;color:#614b7b;padding:20px 18px;font:12px var(--mono);min-height:54px}.tab-list button[aria-selected=true]{color:#291542;border-bottom-color:#62448d}.tab-list button:hover{background:#e8ddf5}.lab-panel{display:grid;grid-template-columns:.85fr 1.15fr;gap:40px;padding:42px}.lab-intro .eyebrow{color:#674985;font-size:10px}.lab-intro h3{font-size:34px;font-weight:400;letter-spacing:-1.3px;line-height:1.12;margin:15px 0}.lab-intro p{font-size:13px;line-height:1.8;color:#655076}.lab-intro label{display:block;font-size:11px;font-weight:600;line-height:1.7;margin-top:23px;margin-bottom:8px}.lab-intro select{width:100%;border:1px solid #9e86b5;border-radius:5px;padding:12px;color:#2b1640;background:#f4edff;font-size:13px;min-height:44px}.dark{background:#322047;color:#f3eaff}.outline{border-color:#947ca9;color:#3b2258;background:transparent}.lab-intro .actions{gap:12px;margin-top:18px}.terminal{background:#211b39;color:#eee5ff;border:1px solid #827097;border-radius:10px;padding:23px;box-shadow:0 15px 35px #30203c22;min-width:0}.terminal-heading{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #655173;padding-bottom:16px;font:9px/1.6 var(--mono);color:#cdbce5}.flow{display:flex;justify-content:space-between;align-items:center;gap:7px;margin:29px 0;font:10px var(--mono)}.flow span{padding:13px 11px;border:1px solid #9c83c0;background:#37274d;border-radius:4px}.flow b{font-weight:400}.flow .failed{border-color:#ffbc93;color:#ffcfad;background:#58344d}.quality-stats{display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid #ffffff20;padding-bottom:21px}.quality-stats strong{display:block;font-size:27px;font-weight:400;color:#e1c8ff}.quality-stats span{display:block;font:9px var(--mono);margin-top:7px;color:#c3b1d6}.event-log{font:11px/1.9 var(--mono);margin-top:20px;min-height:80px;overflow-wrap:anywhere}.event-log p{margin:3px 0;color:#d4c6eb}.event-log .fault-line{color:#ffd2b2}.sql-output{min-width:0}.sql-output pre{background:#211b39;color:#f1e7ff;border-radius:8px;padding:20px;font:11px/1.9 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.sql-output>p{color:#634c79}.result-table{overflow-x:auto}table{border-collapse:collapse;width:100%;font:11px/1.8 var(--mono)}th,td{border-bottom:1px solid #68468133;padding:9px 8px;text-align:left;overflow-wrap:anywhere}th{font-size:10px;font-weight:600;color:#513369}td{color:#342249}caption{text-align:left;padding-bottom:8px;color:#634c79;font-size:10px}.lab-intro input[type=range]{width:100%;accent-color:#68479b;min-height:35px;margin:0}output{font-family:var(--mono)}.market-output{min-width:0;align-self:center}.chart-legend{display:flex;gap:16px;flex-wrap:wrap;font:10px var(--mono);color:#573a71}.chart-legend span{display:inline-flex;align-items:center;gap:6px}.chart-legend i{height:3px;width:14px;display:inline-block}.legend-baseline{background:#6c5b9c}.legend-disturbed{background:#9b3a63}#market-chart{display:block;width:100%;min-height:245px;margin-top:18px}#market-summary{color:#553d71}.about{display:grid;grid-template-columns:1fr 1fr;gap:90px}.about h2{margin-bottom:22px}.timeline{list-style:none;padding:0;margin:0}.timeline li{padding:0 0 28px 23px;border-left:1px solid #8b70a866;position:relative}.timeline li:before{content:'';position:absolute;width:7px;height:7px;border-radius:50%;background:#c9afff;left:-4px;top:5px}.timeline li:last-child{padding-bottom:0}.timeline h3{font-size:20px;font-weight:400;letter-spacing:-.4px;margin:10px 0}.timeline p{color:#bfb2d0;font-size:13px;line-height:1.7;margin:0}.timeline .eyebrow{font-size:9px}.skills{border-top:1px solid var(--line)}.skill-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:35px}.skill-grid article{border-top:1px solid #bba1d84d;padding-top:22px}.skill-grid h3{font-size:22px;letter-spacing:-.5px;font-weight:400}.skill-grid p{font-size:13px;line-height:2;color:#c2b5d3}.skill-grid .eyebrow{font-size:9px}.contact{background:radial-gradient(ellipse at 85% 50%,#7f56874d,transparent 65%),#211c38;border-block:1px solid var(--line);padding-block:70px}.contact h2{font-size:clamp(42px,6vw,76px);letter-spacing:-3px;margin-top:22px}.contact h2>span{color:var(--coral)}.contact p:not(.eyebrow){font-size:15px;color:#c4b6d4;line-height:1.9}.email{display:inline-block;font-size:clamp(18px,2.6vw,32px);color:#ffd0b0;border-bottom:1px solid #b58ba9;padding-block:15px;overflow-wrap:anywhere;max-width:100%;letter-spacing:-.5px}.contact-links{display:flex;gap:30px;font-size:12px;color:#d5c5e5;margin-top:28px;flex-wrap:wrap}.site-footer{display:flex;justify-content:space-between;gap:20px;padding-block:27px;font:9px/1.8 var(--mono);color:#ac9bc4}
@media(min-width:1500px){.hero{padding-block:105px 95px}.hero-visual{max-width:530px;justify-self:end}}
@media(max-width:1000px){.wrap{width:90%}nav{gap:17px}.hero{gap:8px}h1{font-size:clamp(48px,7vw,70px);letter-spacing:-3.6px}.experience-grid,.about{gap:45px}.lab-panel{padding:30px;gap:25px}.flow span{padding:12px 7px}.terminal{padding:18px}.section-aside{max-width:210px}.project-copy{padding:24px}}
@media(max-width:760px){html{scroll-padding-top:15px}.site-header{align-items:start;padding-block:21px;gap:20px}.site-header nav{justify-content:flex-end;flex-wrap:wrap;gap:15px 19px;font-size:12px;max-width:310px}.nav-contact{padding:0;border:0}.hero{grid-template-columns:1fr;padding-block:49px 40px;gap:20px}.hero h1{font-size:clamp(47px,9.5vw,68px);letter-spacing:-3px}.hero-copy{max-width:570px}.hero-visual{width:min(430px,100%);margin-inline:auto}.hero-visual svg{max-height:290px}.visual-caption{margin-top:0}.intro{font-size:15px}.proof{grid-template-columns:1fr;gap:18px;padding-block:24px}.proof>div{display:grid;grid-template-columns:120px 1fr;gap:0 10px;align-items:center}.proof strong{margin:0;font-size:13px}.proof small{grid-column:2;font-size:10px}.proof .eyebrow{font-size:8px;letter-spacing:.7px}.section{padding-block:52px}.section-heading{align-items:start;margin-bottom:25px}.section-aside{display:none}.projects{grid-template-columns:1fr}.project-art{height:185px}.project-copy{padding:25px}.project h3{font-size:28px}.experience-grid,.about{grid-template-columns:1fr;gap:35px}.experience-list h3{font-size:19px}.tab-list{padding-inline:5px;gap:0}.tab-list button{flex:1;min-width:0;padding:15px 7px;font-size:10px}.lab-panel{grid-template-columns:1fr;padding:25px;gap:26px}.lab-intro h3{font-size:32px}.lab-intro select{font-size:16px}.terminal{padding:20px}.flow{gap:10px}.flow span{padding:12px 10px}.quality-stats{justify-content:space-around}.event-log{font-size:11px}.skill-grid{grid-template-columns:1fr;gap:25px}.skill-grid h3{margin-block:13px}.skill-grid p{margin-bottom:0}.contact{padding-block:55px}.contact h2{letter-spacing:-2px}.desktop-break{display:none}.site-footer{flex-direction:column;gap:6px}.eyebrow{font-size:10px}.timeline .eyebrow{font-size:9px}#market-chart{min-height:230px}.sql-output pre{font-size:11px}.chart-legend{gap:11px}}
@media(max-width:380px){.site-header nav{gap:12px 16px;max-width:240px}.hero h1{font-size:43px;letter-spacing:-2.7px}.lab-panel{padding:20px}.flow span{padding:11px 7px}.proof>div{grid-template-columns:100px 1fr}.proof strong{font-size:12px}.terminal{padding:15px}.quality-stats{gap:9px}.quality-stats span{font-size:8px}.email{font-size:17px}}
@media(max-width:380px){.flow{gap:5px;font-size:9px}.flow span{padding:10px 5px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
