@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#faf9f6;--ink:#242329;--muted:#6d6975;--purple:#7254be;--line:#e3dfe8;--panel:#f1edf8;--header:rgba(250,249,246,.94)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:95px}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:16px;line-height:1.7}body.dark{--bg:#17151d;--ink:#f5f2fa;--muted:#bbb4c8;--purple:#b39bea;--line:#383140;--panel:#272031;--header:rgba(23,21,29,.94)}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--purple);outline-offset:5px}header{height:88px;display:flex;align-items:center;justify-content:space-between;padding:0 6%;border-bottom:1px solid var(--line);background:var(--header);position:sticky;top:0;z-index:10;backdrop-filter:blur(12px)}.brand{font-family:Manrope,sans-serif;font-size:39px;font-weight:800;letter-spacing:-4px}.brand span{color:var(--purple)}nav{display:flex;gap:28px;font-size:14px}nav a:hover,nav a.active{color:var(--purple)}.actions{display:flex;align-items:center;gap:20px}.actions button{border:0;background:none;color:var(--ink);font-size:24px}.resume{font-size:13px;border:1px solid var(--line);padding:8px 17px;border-radius:30px}#menu{display:none}main>section{max-width:1320px;margin:auto;padding:100px 6%;border-bottom:1px solid var(--line)}main>section.hero{min-height:750px;position:relative;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;padding-top:70px;padding-bottom:110px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:700;color:var(--muted);margin:0 0 24px}.dot{display:inline-block;width:7px;height:7px;background:var(--purple);border-radius:50%;margin-right:8px}h1,h2,h3{font-family:Manrope,sans-serif;line-height:1.13}h1{font-size:clamp(55px,6.3vw,84px);letter-spacing:-5px;margin:20px 0 26px;font-weight:600}em{font-style:normal;color:var(--purple)}.intro{max-width:440px;color:var(--muted);font-size:17px;line-height:1.8}.cta{display:flex;align-items:center;gap:28px;margin:32px 0}.button{background:var(--purple);color:white;padding:14px 23px;border-radius:6px;border:0;display:inline-flex;gap:35px;align-items:center;font-size:14px}.button:hover{filter:brightness(1.12);transform:translateY(-2px)}.text-link{font-size:14px;border-bottom:1px solid var(--line);padding-bottom:6px}.social{display:flex;gap:25px;margin-top:34px;font-size:12px;color:var(--muted)}.social a:hover{color:var(--purple)}.orbit{width:430px;height:430px;max-width:100%;position:relative;margin:auto;background:radial-gradient(ellipse,#ded2f1 0,transparent 65%);border-radius:50%}.orbital{position:absolute;border:1px solid #bda8dc;inset:25px;border-radius:50%;transform:rotate(-25deg) scaleY(.7)}.two{transform:rotate(35deg) scaleY(.7)}.three{transform:rotate(95deg) scaleY(.7)}.core{position:absolute;inset:113px;background:linear-gradient(145deg,#b298d9,#71529a);border-radius:50%;box-shadow:inset -12px -14px 35px #4f367755,0 25px 50px #6d44952b;display:flex;justify-content:center;align-items:center;font-size:85px;letter-spacing:-7px;font-family:Manrope;font-weight:700;color:#fff}.core span{color:#e6d9f9}.core small{position:absolute;bottom:40px;font-size:8px;letter-spacing:2px}.orbit-tag{position:absolute;padding:8px 15px;border:1px solid var(--line);background:var(--bg);border-radius:6px;font-size:12px;box-shadow:0 7px 25px #73539512}.tag1{top:54px;left:42px}.tag2{top:139px;right:0}.tag3{bottom:42px;left:68px}.spark{position:absolute;right:62px;bottom:52px;font-size:45px;color:var(--purple)}.hero-bottom{position:absolute;bottom:28px;left:6%;right:6%;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.8px;color:var(--muted)}h2{font-size:clamp(32px,4vw,49px);font-weight:500;letter-spacing:-2px;margin:0}.section-top{margin-bottom:48px}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px}.large{font-size:23px;color:var(--ink);line-height:1.5}.about-grid p:not(.large),.project p:not(.eyebrow),.timeline p,.timeline li,.education p,.contact-grid>div>p:not(.eyebrow){color:var(--muted);font-size:14px}.principles article{display:flex;gap:25px;padding:23px 0;border-bottom:1px solid var(--line)}.principles article>span{font-size:12px;color:var(--purple)}h3{font-size:21px;letter-spacing:-.5px;margin:0 0 10px}h4{font-size:14px;color:var(--purple);font-weight:500;margin:12px 0}.principles p{margin:0}.timeline article{display:grid;grid-template-columns:1fr 2fr;border-top:1px solid var(--line);padding:35px 0;gap:50px}.date{font-size:11px;letter-spacing:1px;color:var(--ink)}.date span{display:block;font-size:12px;letter-spacing:0;color:var(--muted);margin-top:8px}.badge{display:inline-block;font-size:9px;color:var(--purple);background:var(--panel);padding:4px 10px;letter-spacing:1px;margin-bottom:16px;border-radius:20px}ul{padding-left:18px}.education{display:grid;grid-template-columns:1fr 1fr;gap:60px;background:var(--panel);padding:35px;margin-top:25px;border-radius:8px}.education h3{font-size:16px}.education .eyebrow{font-size:10px}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:30px}.filters button{border:1px solid var(--line);background:none;color:var(--muted);padding:9px 18px;border-radius:30px;font-size:12px}.filters .active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.skill-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.skill{border:1px solid var(--line);border-radius:7px;padding:22px 18px;font-size:13px;display:flex;align-items:center;gap:13px}.skill b{font-family:monospace;font-size:14px;color:var(--purple);width:28px}.project-title{display:flex;align-items:end;justify-content:space-between}.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.project-art{height:230px;border-radius:9px;margin-bottom:25px;display:flex;align-items:center;justify-content:center;overflow:hidden}.logs{background:#e5ddf2}.database{background:#dce8e7}.foods{background:#eee6d7}.mini-window{background:#252330;color:#ddd5ef;width:84%;border-radius:8px;padding:15px;box-shadow:0 20px 40px #25233033;transform:rotate(-3deg)}.database .mini-window{transform:rotate(3deg);background:#223b39}.window-top{font-size:7px;letter-spacing:3px;padding-bottom:10px;border-bottom:1px solid #ffffff20}.window-top span{float:right;font-size:7px;letter-spacing:1px}.graph{display:flex;align-items:end;height:82px;gap:8px;padding:15px 0}.graph i{background:#aa8cda;width:15px;height:45%}.graph i:nth-child(3n){height:90%}.graph i:nth-child(2n){height:65%}code{font-size:8px;line-height:1.8}code span{color:#b8dca7}.db-circle{border:5px solid #8eb9ad;border-radius:50%;height:95px;width:95px;margin:10px auto;font-size:24px;text-align:center;padding-top:15px}.db-circle small{display:block;font-size:5px;letter-spacing:1px}.food-mark{color:#65754b;font-family:Georgia,serif;line-height:.9;font-size:45px;text-align:center}.food-mark em{color:#65754b;font-style:italic}.food-mark small{display:block;font-family:sans-serif;font-size:9px;letter-spacing:1px;margin-top:20px}.project .eyebrow{font-size:9px;margin-bottom:12px}.project h3{font-size:22px}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:20px}.chips span{font-size:9px;border:1px solid var(--line);border-radius:20px;padding:4px 9px;color:var(--muted)}.repo-list{margin-top:50px}.repo-list .eyebrow{margin-bottom:15px}.repo-list a{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:15px 0;font-size:15px}.repo-list a span{font-size:12px;color:var(--muted)}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px}.email{font-size:18px;color:var(--purple);display:inline-block;margin-top:20px}.location{margin-top:30px}form{padding-top:10px}label{font-size:9px;letter-spacing:1.5px;display:block;margin-bottom:8px}input,textarea{width:100%;background:none;border:0;border-bottom:1px solid var(--line);padding:10px 0 15px;margin-bottom:25px;color:var(--ink);font-size:14px;border-radius:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:var(--muted)}.form-note,#form-status{font-size:11px;color:var(--muted)}footer{display:flex;align-items:center;justify-content:space-between;max-width:1320px;margin:auto;padding:28px 6%;font-size:11px;color:var(--muted)}footer .brand{color:var(--ink)}@media(min-width:1400px){header{padding-left:calc((100vw - 1160px)/2);padding-right:calc((100vw - 1160px)/2)}}@media(max-width:900px){nav{gap:16px}.orbit{width:330px;height:330px}.core{inset:85px;font-size:65px}.core small{bottom:30px}.about-grid{gap:35px}.skill-grid{grid-template-columns:repeat(3,1fr)}.projects{gap:16px}.project-art{height:190px}.contact-grid{gap:30px}h1{letter-spacing:-3px}}@media(max-width:650px){header{height:74px}#menu{display:block}nav{display:none;position:absolute;left:0;right:0;top:74px;background:var(--bg);padding:24px 6%;border-bottom:1px solid var(--line);flex-direction:column}nav.open{display:flex}.actions{gap:12px}.resume{font-size:11px}main>section{padding:65px 7%}main>section.hero{grid-template-columns:1fr;padding-top:45px;padding-bottom:80px;gap:20px}.hero h1{font-size:60px}.hero .eyebrow{font-size:9px}.orbit{width:290px;height:290px;margin-top:0}.core{inset:78px;font-size:60px}.core small{font-size:6px;bottom:24px}.tag1{top:30px;left:15px}.tag2{top:115px}.tag3{bottom:15px;left:35px}.hero-bottom span:last-child{display:none}.hero-bottom{font-size:7px}.cta{gap:20px}.about-grid,.contact-grid,.education{grid-template-columns:1fr;gap:30px}.timeline article{grid-template-columns:1fr;gap:18px}.skill-grid{grid-template-columns:repeat(2,1fr)}.skill{padding:18px 12px}.projects{grid-template-columns:1fr;gap:40px}.project-art{height:260px}.project-title{display:block}.project-title>.text-link{display:inline-block;margin-top:25px}.education{padding:25px}.repo-list a{font-size:12px}.email{font-size:16px}footer{flex-wrap:wrap;gap:15px}footer p{font-size:10px}h2{letter-spacing:-1px}.section-top{margin-bottom:32px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
/* Professional portrait-led portfolio */
:root{--bg:#fbfbfd;--ink:#202331;--muted:#626878;--purple:#6952af;--line:#e4e5ec;--panel:#f2f0f8;--header:rgba(251,251,253,.94)}
body.dark{--bg:#121621;--ink:#eef1f9;--muted:#afb8cc;--purple:#b5a0f0;--line:#2c3445;--panel:#1d2433;--header:rgba(18,22,33,.95)}
header .brand{font-size:19px;letter-spacing:-.6px;font-weight:800}header .brand span{color:var(--ink);font-weight:500}header .brand b{color:var(--purple);font-size:26px}.resume{display:flex;align-items:center;gap:7px;border-color:var(--purple);color:var(--purple)}main>section.hero{grid-template-columns:1.15fr 1fr;gap:50px;min-height:710px;padding-top:70px;padding-bottom:115px}.hero h1{font-size:clamp(52px,5.5vw,74px);line-height:1.13;letter-spacing:-3.8px;margin-top:22px;margin-bottom:21px;font-weight:700}.hero-role{font-size:20px;line-height:1.5;font-weight:500;margin:0 0 15px}.intro{font-size:16px;max-width:450px}.hero .eyebrow{font-size:10px;letter-spacing:1.8px}.portrait-wrap{position:relative;padding:14px 20px 55px;max-width:410px;width:100%;margin:auto}.portrait-border{padding:8px;background:var(--panel);border:1px solid var(--line);border-radius:26px}.portrait{display:block;width:100%;height:380px;object-fit:cover;object-position:center 20%;border-radius:20px}.portrait-caption{position:absolute;bottom:49px;left:-14px;right:10px;background:var(--bg);border:1px solid var(--line);border-radius:10px;box-shadow:0 15px 40px #1c163817;display:flex;align-items:center;gap:14px;padding:19px}.caption-icon{display:flex;padding:12px;background:var(--panel);color:var(--purple);border-radius:9px}.portrait-caption strong{font-size:13px;font-weight:600;display:block}.portrait-caption small{font-size:11px;color:var(--muted)}.portrait-note{position:absolute;left:18px;right:18px;bottom:8px;text-align:center;color:var(--muted);font-size:8px;letter-spacing:1.4px}.icon{width:19px;height:19px;display:inline-block;vertical-align:middle;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.button{gap:12px;font-weight:500;border-radius:7px}.button .icon{width:17px;height:17px}.text-link{display:inline-flex;gap:8px;align-items:center}.social a{display:inline-flex;align-items:center;gap:7px}.social .icon{width:15px;height:15px}.social a>span:last-child .icon{width:12px}.feature-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;background:var(--panel);color:var(--purple);border-radius:9px;flex-shrink:0}.feature-icon .icon{width:23px;height:23px}.principles article{gap:20px}.timeline{position:relative}.timeline article{padding:36px 0;grid-template-columns:1fr 2.3fr}.timeline h3{font-size:25px;font-weight:600}.timeline h4{font-size:16px}.date .date-icon{display:flex;margin:0 0 14px;color:var(--purple)}.timeline li{margin-bottom:9px}.timeline p{line-height:1.9}.badge{border:1px solid var(--line)}.education{border:1px solid var(--line)}.education .eyebrow{display:flex;gap:10px;align-items:center}.eyebrow .icon{width:16px;height:16px}.project .eyebrow{display:flex;align-items:center;gap:8px}.project h3{font-weight:600}.project-art{border:1px solid var(--line)}.skill{background:var(--bg);transition:background .2s,border-color .2s}.skill:hover{border-color:var(--purple);background:var(--panel)}.skill-icon{display:inline-flex;align-items:center;justify-content:center;width:37px;height:37px;background:var(--panel);border-radius:8px;color:var(--purple);flex-shrink:0}.skill-icon .icon{width:23px;height:23px}.contact-label{display:flex;align-items:center;gap:8px;font-size:10px;letter-spacing:1.5px;color:var(--muted);margin-top:28px}.email{margin-top:6px}.location{display:flex;align-items:center;gap:8px}.actions button{display:flex;align-items:center;justify-content:center}.actions button .icon{width:22px;height:22px}footer .brand{font-size:31px}.cta .text-link{white-space:nowrap}.projects .project{padding-bottom:20px}.hero-bottom{border-top:1px solid var(--line);padding-top:20px}h2{font-weight:600;font-size:clamp(34px,3.5vw,46px)}
@media(max-width:900px){main>section.hero{gap:25px}.portrait{height:340px}.portrait-caption{left:0;padding:14px}.portrait-caption strong{font-size:11px}.portrait-caption small{font-size:9px}.hero h1{font-size:58px}.hero-role{font-size:17px}.cta{flex-wrap:wrap;gap:18px}header .brand{font-size:17px}nav{gap:14px;font-size:12px}.skill{gap:10px}.skill-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:650px){main>section.hero{grid-template-columns:1fr;gap:35px;padding-top:45px;padding-bottom:85px}.hero h1{font-size:55px;letter-spacing:-2.5px}.hero-role{font-size:17px}.hero .eyebrow{font-size:8px;letter-spacing:1.3px}.portrait-wrap{max-width:340px}.portrait{height:320px}.portrait-caption strong{font-size:12px}.portrait-caption small{font-size:10px}.portrait-caption{left:3px;right:3px}.hero-bottom{font-size:7px}.timeline article{grid-template-columns:1fr;gap:20px}.date .date-icon{display:inline-block;margin:0 8px 0 0}.date span:not(.date-icon){margin-left:0}.skill-grid{grid-template-columns:repeat(2,1fr)}.skill{font-size:12px;padding:16px 10px}.skill-icon{width:31px;height:31px}.skill-icon .icon{width:20px}.project-art{height:240px}nav{font-size:15px}.resume{padding:6px 10px}.resume .icon{width:14px}.actions{gap:8px}.contact-label{margin-top:22px}}

/* Photo-free introduction */
main>section.hero{grid-template-columns:1fr;min-height:650px;gap:0}.hero-copy{max-width:760px}.hero h1{font-size:clamp(54px,6vw,80px)}.hero .intro{max-width:600px}.hero-role{font-size:22px}@media(max-width:650px){main>section.hero{min-height:620px;gap:0}.hero h1{font-size:55px}.hero-role{font-size:18px}}

.footer-linkedin{display:inline-flex;align-items:center;gap:9px;color:var(--purple);font-size:13px;font-weight:600}.footer-linkedin .icon{width:23px;height:23px}

/* Site-wide star field */
body{isolation:isolate}#star-background{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}main,footer{position:relative}body.dark{--bg:#090e18;--header:rgba(9,14,24,.86)}header{background:var(--header)}

/* Cloud and code hero illustration */
main>section.hero{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:45px}.hero-copy{max-width:660px}.hero h1{font-size:clamp(54px,5.4vw,74px)}.hero-role{font-size:20px}.tech-scene{position:relative;width:100%;height:440px;max-width:470px;margin:auto}.scene-glow{position:absolute;inset:30px;background:radial-gradient(ellipse,rgba(139,103,214,.2),transparent 70%);border-radius:50%}.tech-ring{position:absolute;border:1px solid rgba(139,103,214,.28);border-radius:50%;inset:40px 20px 40px;transform:rotate(-25deg) scaleY(.82)}.ring-inner{inset:85px 60px;transform:rotate(25deg) scaleY(.85)}.ring-outer:after,.ring-inner:after{content:'';position:absolute;top:50%;left:-4px;width:8px;height:8px;background:var(--purple);border-radius:50%;box-shadow:0 0 15px var(--purple)}.ring-outer{animation:orbit-tech 35s linear infinite}.ring-inner{animation:orbit-tech 28s linear infinite reverse}.cloud-core{position:absolute;top:135px;left:50%;transform:translateX(-50%);width:180px;height:165px;display:flex;flex-direction:column;justify-content:center;align-items:center;border-radius:24px;border:1px solid rgba(139,103,214,.4);background:var(--panel);box-shadow:0 20px 65px rgba(106,69,164,.15)}.cloud-core .icon{width:57px;height:57px;stroke-width:1.2;color:var(--purple);margin-bottom:12px}.cloud-core strong{font-size:13px;font-weight:600}.cloud-core small{font-size:8px;letter-spacing:2px;color:var(--muted);margin-top:8px}.tech-node{position:absolute;display:flex;align-items:center;gap:12px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:14px 17px;box-shadow:0 10px 35px rgba(30,20,55,.08);animation:float-tech 6s ease-in-out infinite}.tech-node>.icon,.tech-node>span>.icon{width:27px;height:27px;color:var(--purple)}.tech-node strong{font-size:13px;display:block;line-height:1.5}.tech-node small{display:block;font-size:9px;color:var(--muted);line-height:1.6}.node-aws{top:40px;left:5px}.node-react{right:0;top:98px;animation-delay:-2s}.node-docker{bottom:54px;right:0;animation-delay:-4s}.node-pipeline{bottom:100px;left:-10px;animation-delay:-1s}.scene-caption{position:absolute;bottom:0;left:0;right:0;text-align:center;font-size:8px;letter-spacing:1.6px;color:var(--muted)}body.dark .cloud-core{background:linear-gradient(135deg,#30233f,#151c2a)}body.dark .tech-node{background:#111725}.tech-scene *{pointer-events:none}@keyframes float-tech{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes orbit-tech{from{transform:rotate(0deg) scaleY(.85)}to{transform:rotate(360deg) scaleY(.85)}}@media(max-width:900px){main>section.hero{gap:25px}.tech-node{padding:12px 10px;gap:8px}.tech-node small{font-size:8px}.cloud-core{width:155px;height:150px}.node-pipeline{left:0}.hero h1{font-size:56px}}@media(max-width:650px){main>section.hero{grid-template-columns:1fr;gap:30px;padding-bottom:55px}.tech-scene{height:390px;max-width:360px}.cloud-core{top:120px}.node-aws{top:25px;left:0}.node-react{top:90px}.node-docker{bottom:50px}.node-pipeline{bottom:95px}.scene-caption{font-size:7px}.hero h1{font-size:55px}}@media(prefers-reduced-motion:reduce){.tech-node,.tech-ring{animation:none}}
