@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{color-scheme:light;--ink:#102538;--muted:#50687a;--cyan:#10b8d1;--line:rgba(50,105,136,.16);--sky:#eaf7ff;--white:#fff;--display:'Space Grotesk',sans-serif;--body:'DM Sans',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:112px}body{margin:0;background:#eaf7ff;color:var(--ink);font-family:var(--body);line-height:1.6;-webkit-font-smoothing:antialiased}button,a{font:inherit}a{color:inherit}button{cursor:pointer}img{max-width:100%;display:block}::selection{background:#8aebf8;color:#102538}:focus-visible{outline:3px solid #008aa7;outline-offset:4px}.skip-link{position:fixed;z-index:1000;left:18px;top:-80px;background:#102538;color:white;padding:10px 18px;border-radius:12px}.skip-link:focus{top:12px}
.intro{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:#fff;opacity:1;transition:opacity .55s ease}.intro[hidden]{display:none}.intro.is-leaving{opacity:0;pointer-events:none}.intro__video{display:block;width:100%;height:100%;object-fit:contain;background:#fff}.intro__skip{position:absolute;right:clamp(20px,4vw,64px);top:clamp(20px,4vw,50px);z-index:1;border:1px solid rgba(16,37,56,.18);background:rgba(255,255,255,.88);color:var(--ink);padding:10px 19px;border-radius:100px;box-shadow:0 10px 30px rgba(15,45,70,.13);backdrop-filter:blur(12px);font-weight:700}.intro__skip:hover{background:white}.intro__skip span{margin-left:8px}.js.intro-checking main,.js.intro-checking .site-header,.js.intro-checking .footer,.js.intro-checking .robot-guide{opacity:0}.site-header,main,.footer,.robot-guide{transition:opacity .45s ease}
.site-header{position:fixed;z-index:50;top:18px;left:0;right:0;padding:0 24px;pointer-events:none}.nav{position:relative;pointer-events:auto;display:flex;align-items:center;justify-content:space-between;gap:26px;max-width:1160px;margin:auto;padding:11px 12px 11px 24px;border:1px solid rgba(255,255,255,.82);border-radius:23px;background:linear-gradient(145deg,rgba(255,255,255,.74),rgba(221,244,255,.51));box-shadow:inset 0 1px 0 rgba(255,255,255,.96),inset 0 -1px 0 rgba(111,182,214,.17),0 14px 40px rgba(22,71,101,.13);backdrop-filter:blur(24px) saturate(1.5);-webkit-backdrop-filter:blur(24px) saturate(1.5)}.nav:before{content:"";position:absolute;inset:2px 12px auto;height:30px;border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.55),transparent);pointer-events:none}.brand{position:relative;display:flex;align-items:center;gap:10px;text-decoration:none;font:700 22px var(--display);letter-spacing:-.08em;white-space:nowrap}.brand__spark{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:#102538;color:#57e0f1;font-size:17px;letter-spacing:0}.brand__dot,.accent{color:var(--cyan)}.nav__links{position:relative;display:flex;align-items:center;gap:6px}.nav__links a{padding:10px 12px;color:#274458;text-decoration:none;font-size:13px;font-weight:700;border-radius:12px;white-space:nowrap}.nav__links a:hover,.nav__links a[aria-current="true"]{background:rgba(255,255,255,.63);color:#006e88}.nav__links .nav__contact{margin-left:4px;background:#102538;color:white;padding:11px 17px;border-radius:14px}.nav__links .nav__contact:hover{background:#173c52;color:white}.nav__contact span{margin-left:12px;color:#57dff2}.nav__toggle{display:none}
.section{position:relative;padding:130px 24px;scroll-margin-top:90px}.section__inner{max-width:1160px;margin:0 auto}.section-heading{margin-bottom:54px;max-width:760px}.section-number,.eyebrow,.contact__eyebrow{font-size:11px;font-weight:800;letter-spacing:.2em;color:#0084a3}.section-heading h2,.resume h2,.contact h2{margin:14px 0 10px;font:600 clamp(42px,5vw,70px)/1.08 var(--display);letter-spacing:-.07em}.section h2 em{font-style:normal;color:#0daec6}.section-heading>p{margin:0;color:var(--muted);font-size:18px}.hero{min-height:100svh;display:flex;align-items:center;padding-top:120px;padding-bottom:60px;overflow:hidden;background:radial-gradient(circle at 79% 47%,#b8edfb 0,#dbf5ff 26%,transparent 51%),linear-gradient(125deg,#f3fbff 3%,#eaf7ff 49%,#d6f0fc 100%)}.hero:after{content:"";position:absolute;inset:auto 0 0;height:1px;background:var(--line)}.hero__grid{width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.9fr);align-items:center;gap:30px}.hero__copy{position:relative;z-index:2;padding:50px 0 75px}.eyebrow{display:inline-flex;align-items:center;gap:10px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#13c8d6;box-shadow:0 0 0 5px rgba(19,200,214,.13)}.hero h1{font:700 clamp(86px,12vw,176px)/.95 var(--display);letter-spacing:-.1em;margin:14px 0 24px}.hero__headline{max-width:620px;margin:0 0 18px;font:500 clamp(26px,3vw,41px)/1.18 var(--display);letter-spacing:-.06em}.hero__text{max-width:520px;color:var(--muted);font-size:17px;margin:0 0 32px}.button-row{display:flex;flex-wrap:wrap;gap:12px}.button{display:inline-flex;align-items:center;justify-content:center;gap:28px;min-height:54px;padding:13px 22px;border-radius:15px;text-decoration:none;font-weight:700;font-size:14px;transition:transform .22s,background .22s,box-shadow .22s}.button:hover{transform:translateY(-3px)}.button--primary{background:#102538;color:#fff;box-shadow:0 13px 28px rgba(16,37,56,.14)}.button--primary:hover{background:#153c53;box-shadow:0 17px 32px rgba(16,37,56,.19)}.button--primary span{color:#56dff1}.button--ghost{border:1px solid #abcbd9;background:rgba(255,255,255,.4)}.button--ghost:hover{background:white}.scroll-cue{display:inline-flex;align-items:center;gap:12px;margin-top:75px;text-decoration:none;font-size:10px;letter-spacing:.18em;font-weight:800;color:#7190a1}.scroll-cue__line{width:34px;height:1px;background:#7190a1}.hero__visual{position:relative;min-height:610px;display:grid;place-items:center}.hero__orb{position:absolute;width:min(92%,530px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.9),rgba(113,214,241,.34) 53%,rgba(103,181,220,.08) 72%);box-shadow:inset 0 0 2px white,0 24px 85px rgba(50,151,198,.15)}.hero__ring{position:absolute;border:1px solid rgba(29,154,190,.16);border-radius:50%;width:112%;aspect-ratio:1}.hero__ring--two{width:135%;opacity:.55}.hero__visual img{position:relative;z-index:1;width:min(78%,420px);max-height:590px;object-fit:contain;filter:drop-shadow(0 24px 24px rgba(17,64,90,.17));animation:hero-float 5s ease-in-out infinite}.hero__badge{position:absolute;z-index:2;padding:12px 16px;border:1px solid rgba(255,255,255,.8);border-radius:14px;background:rgba(255,255,255,.6);backdrop-filter:blur(12px);box-shadow:0 12px 24px rgba(53,128,157,.1);color:#427083;font-size:10px;font-weight:800;letter-spacing:.14em}.hero__badge--top{top:12%;right:-4%}.hero__badge--bottom{bottom:10%;left:-2%}@keyframes hero-float{50%{transform:translateY(-12px)}}
.about{background:#f6fbff}.about__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,8vw,110px);padding-top:28px;border-top:1px solid var(--line)}.about__statement{font:500 clamp(25px,3vw,40px)/1.28 var(--display);letter-spacing:-.055em}.about__statement p{margin:8px 0}.asterisk{color:#09bad3;font-size:38px}.about__copy{padding-top:8px;color:#465f71;font-size:17px}.about__copy p{margin:0 0 22px}.about__copy strong{color:#102538}.text-link{display:inline-flex;gap:16px;border-bottom:1px solid #06aeca;padding-bottom:5px;color:#007f9d;font-weight:800;text-decoration:none}.text-link:hover{color:#005c73}
.skills{background:linear-gradient(160deg,#e6f6ff,#dff2fb)}.skills__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.skill-card{min-height:280px;padding:32px;border:1px solid rgba(255,255,255,.88);border-radius:25px;background:rgba(255,255,255,.56);box-shadow:0 18px 35px rgba(38,116,149,.06);transition:transform .2s,box-shadow .2s}.skill-card:hover{transform:translateY(-5px);box-shadow:0 22px 42px rgba(38,116,149,.12)}.skill-card__icon{display:grid;place-items:center;width:52px;height:52px;border-radius:15px;background:#c4f2fa;color:#087e97;font:700 18px var(--display)}.skill-card h3{font:600 22px var(--display);letter-spacing:-.04em;margin:28px 0 16px}.pill-list,.tag-list{display:flex;flex-wrap:wrap;gap:8px}.pill-list span,.tag-list span{display:inline-block;border:1px solid #bbd9e6;background:#f5fbff;border-radius:100px;padding:7px 12px;font-size:12px;font-weight:700;color:#31566b}
.projects{background:#f6fbff}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.project-card{overflow:hidden;border:1px solid #d7e9f0;border-radius:26px;background:#fff;box-shadow:0 18px 38px rgba(31,84,112,.06);transition:transform .22s,box-shadow .22s}.project-card:hover{transform:translateY(-5px);box-shadow:0 24px 45px rgba(31,84,112,.12)}.project-card__preview{position:relative;overflow:hidden;height:280px;padding:23px}.project-card__preview--farm{background:linear-gradient(145deg,#d8f0dd,#f2f7da)}.project-card__preview--ice{background:linear-gradient(145deg,#c6edfa,#e6f9ff 60%,#cde5ef)}.preview__corner,.preview__note{position:absolute;z-index:2;font-size:10px;letter-spacing:.14em;font-weight:800;color:#2d6576}.preview__corner{top:24px;left:24px}.preview__note{bottom:24px;left:24px}.preview__graphic{position:absolute;inset:35px 0 0;overflow:hidden}.preview__sun{position:absolute;top:26%;right:24%;width:82px;aspect-ratio:1;border-radius:50%;background:#ffe7a7;box-shadow:0 0 0 22px rgba(255,231,167,.19)}.preview__field{position:absolute;left:-10%;width:125%;height:230px;border-radius:50% 50% 0 0}.preview__field--one{top:52%;transform:rotate(-10deg);background:#90c4a0}.preview__field--two{top:67%;transform:rotate(8deg);background:#6ba886}.preview__cubes{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:12px;transform:rotate(-12deg)}.preview__cubes i{width:72px;height:72px;border-radius:17px;background:linear-gradient(145deg,rgba(255,255,255,.87),rgba(70,177,211,.39));box-shadow:inset 5px 5px 15px rgba(255,255,255,.9),inset -8px -8px 18px rgba(59,164,205,.25),12px 18px 25px rgba(56,137,168,.18);transform:rotate(10deg)}.preview__cubes i:nth-child(2){transform:translateY(-24px) rotate(23deg)}.preview__cubes i:nth-child(3){transform:translateY(8px) rotate(-7deg)}.project-card__body{padding:28px}.project-card__top{display:flex;justify-content:space-between;color:#0ca9c1;font-weight:700}.project-card__category{font-size:10px;letter-spacing:.17em}.project-card h3{font:600 26px var(--display);letter-spacing:-.05em;margin:11px 0}.project-card p{color:var(--muted);margin:0 0 22px;min-height:55px}.project-card__links{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px;padding-top:20px;border-top:1px solid #e2eef2;color:#7893a3;font-size:12px;font-weight:700}.project-card__links span{padding:8px 0}
.resume{background:linear-gradient(135deg,#daf2fb,#c7ebf7);padding-top:100px;padding-bottom:100px}.resume__panel{display:flex;justify-content:space-between;align-items:center;gap:35px;padding:50px 56px;border:1px solid rgba(255,255,255,.83);border-radius:30px;background:rgba(255,255,255,.48);box-shadow:0 20px 50px rgba(35,115,147,.09);backdrop-filter:blur(10px)}.resume h2{margin-bottom:8px}.resume p{margin:0;color:var(--muted)}.resume__action{display:flex;flex-direction:column;align-items:flex-start;gap:11px;max-width:270px}.resume__action small{font-size:11px;line-height:1.45;color:#587384}.resume__action code{font-size:11px}.button.is-disabled{opacity:.58;cursor:not-allowed;box-shadow:none}.button.is-disabled:hover{transform:none}
.contact{overflow:hidden;background:#102b3b;color:white;min-height:590px}.contact:before{content:"";position:absolute;width:500px;height:500px;right:-70px;top:-220px;border-radius:50%;background:radial-gradient(circle,rgba(42,197,227,.2),transparent 70%)}.contact__eyebrow{color:#6fe4f4}.contact h2{max-width:760px;margin-top:22px}.contact h2 em{color:#57dceb}.contact p{font-size:18px;color:#adc7d3}.contact__email{display:inline-flex;gap:22px;align-items:center;max-width:100%;font:500 clamp(26px,4vw,52px) var(--display);letter-spacing:-.055em;text-decoration:none;border-bottom:1px solid #48b9c8;padding-bottom:9px;margin-top:26px;overflow-wrap:anywhere}.contact__email:hover{color:#72e7f5}.contact__email span{font-size:.7em;color:#61e3f0}.contact__bottom{display:flex;gap:28px;margin-top:78px}.contact__bottom a{color:#c9e9f0;text-decoration:none;font-weight:700}.contact__bottom a:hover{color:white}.footer{background:#0a202d;color:#afc8d2;padding:30px 24px}.footer .section__inner{display:flex;align-items:center;justify-content:space-between;gap:20px}.footer__brand{text-decoration:none;color:white;font:700 25px var(--display);letter-spacing:-.08em}.footer__brand span{color:#54d9eb}.footer p{font-size:12px}.footer a:last-child{font-size:12px;text-decoration:none}
.robot-guide{position:fixed;z-index:15;right:max(20px,calc((100vw - 1450px)/2));bottom:16px;width:clamp(100px,11vw,155px);pointer-events:none;opacity:0;transform:translateY(25px);transition:opacity .35s,transform .5s}.robot-guide.is-visible{opacity:1;transform:translateY(0)}.robot-guide img{width:100%;filter:drop-shadow(0 12px 12px rgba(18,79,105,.17));animation:guide-bob 4s ease-in-out infinite}.robot-guide__bubble{position:absolute;right:78%;bottom:58%;width:180px;padding:12px 15px;border-radius:15px 15px 3px 15px;border:1px solid #d6ebf2;background:rgba(255,255,255,.94);box-shadow:0 10px 26px rgba(25,88,115,.13);color:#24485b;font-size:12px;font-weight:700;line-height:1.35;backdrop-filter:blur(10px);transition:opacity .2s,transform .2s}.robot-guide__bubble.is-changing{opacity:0;transform:translateY(5px)}@keyframes guide-bob{50%{transform:translateY(-5px)}}.mobile-guide{display:none}
@media(max-width:1150px){.robot-guide{right:10px;width:100px}.robot-guide__bubble{width:145px;font-size:11px}.section__inner{max-width:980px}.hero__badge--top{right:2%}}
@media(max-width:850px){.site-header{top:12px;padding:0 16px}.nav{padding:10px 13px 10px 18px;border-radius:19px}.nav__toggle{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:40px;height:40px;border:0;border-radius:11px;background:#102538}.nav__toggle span{display:block;width:17px;height:2px;background:white;border-radius:2px}.nav__links{display:none;position:absolute;left:0;right:0;top:calc(100% + 8px);padding:10px;flex-direction:column;align-items:stretch;border:1px solid rgba(255,255,255,.85);border-radius:18px;background:rgba(235,249,255,.96);box-shadow:0 18px 35px rgba(32,89,113,.18);backdrop-filter:blur(25px)}.nav__links.is-open{display:flex}.nav__links a{padding:12px 15px;font-size:14px}.nav__links .nav__contact{margin:5px 0 0}.hero{min-height:0;padding-top:145px}.hero__grid{grid-template-columns:1fr}.hero__copy{padding:0}.hero__visual{min-height:460px;max-width:530px;margin:0 auto;width:100%}.hero__visual img{max-height:430px;width:68%}.scroll-cue{margin-top:40px}.section{padding:100px 24px}.robot-guide{display:none}.mobile-guide{display:flex;align-items:center;gap:10px;width:max-content;max-width:100%;margin-top:35px}.mobile-guide img{width:58px;height:80px;object-fit:contain}.mobile-guide p{margin:0;padding:9px 13px;border:1px solid #cee9f2;border-radius:13px 13px 13px 3px;background:#fff;color:#315265;font-size:12px;font-weight:700;box-shadow:0 8px 15px rgba(25,88,115,.07)}.contact .mobile-guide p{color:#315265}.resume__panel{padding:35px}.resume h2{font-size:48px}}
@media(max-width:620px){.section{padding:80px 20px}.hero{padding-top:140px;padding-bottom:60px}.hero h1{font-size:clamp(80px,25vw,120px);margin-bottom:16px}.hero__headline{font-size:29px}.hero__text{font-size:15px}.hero__visual{min-height:380px}.hero__visual img{max-height:360px}.hero__orb{width:83%}.hero__ring{width:102%}.hero__ring--two{width:120%}.hero__badge{font-size:8px;padding:9px}.hero__badge--top{right:0;top:8%}.hero__badge--bottom{left:0;bottom:6%}.button{gap:13px}.section-heading{margin-bottom:36px}.section-heading h2,.contact h2{font-size:clamp(40px,12vw,56px)}.section-heading>p{font-size:15px}.about__grid,.skills__grid,.project-grid{grid-template-columns:1fr}.about__grid{gap:15px}.about__statement{font-size:29px}.about__copy{font-size:15px}.skill-card{min-height:0;padding:26px}.project-card__preview{height:225px}.project-card__body{padding:23px}.project-card p{min-height:0}.resume{padding:65px 20px}.resume__panel{flex-direction:column;align-items:flex-start;padding:30px 26px}.resume h2{font-size:44px}.contact{min-height:0}.contact__email{font-size:clamp(23px,6vw,36px)}.footer .section__inner{flex-wrap:wrap}.footer p{order:3;width:100%;margin:0}.intro__video{object-fit:cover}.intro__skip{top:20px;right:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
.robot-guide__bubble{right:0;bottom:94%}
.hero__speech{position:absolute;z-index:3;top:24%;right:1%;padding:10px 15px;border:1px solid #c9e7f1;border-radius:15px 15px 15px 3px;background:rgba(255,255,255,.92);box-shadow:0 12px 25px rgba(27,92,119,.13);font-size:13px;font-weight:800;color:#1b5268;transform:rotate(5deg)}
@media(max-width:620px){.hero__speech{top:18%;right:2%;font-size:11px;padding:8px 10px}}
body.intro-active{overflow:hidden}
body.intro-active .skip-link{display:none}
@media(max-width:620px){.intro__video{object-fit:contain}}
.mobile-guide img{animation:guide-bob 4s ease-in-out infinite}
.intro__fallback{position:absolute;inset:0;display:grid;place-items:center;background:#fff;opacity:0;transition:opacity .25s}.intro__fallback img{width:min(25vw,220px);max-height:50vh;object-fit:contain;filter:drop-shadow(0 15px 18px rgba(20,61,79,.13))}.intro.is-loading .intro__fallback{opacity:1}.intro.is-loading .intro__video{opacity:0}.intro__video{position:relative;z-index:1}.intro__skip{z-index:2}
@media(max-width:620px){.intro__fallback img{width:150px}}
main{position:relative}
html.js .mobile-guide{display:none}
.guide-traveler{position:absolute;left:0;top:0;z-index:8;width:126px;pointer-events:none;opacity:0;will-change:transform;transition:opacity .18s ease}
.guide-traveler[hidden]{display:none}.guide-traveler.is-visible{opacity:1}
.guide-traveler__robot{position:relative;z-index:1;width:100%;height:auto;filter:drop-shadow(0 14px 14px rgba(10,59,86,.22))}
.guide-traveler__halo{position:absolute;left:-10%;top:10%;width:120%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.7),transparent 70%);opacity:0}
.guide-traveler[data-stop="contact"] .guide-traveler__halo{opacity:1}
.guide-traveler__bubble{position:absolute;z-index:2;left:-2px;top:calc(100% - 3px);width:177px;margin:0;padding:11px 13px;border:1px solid #d2eaf3;border-radius:15px 15px 15px 3px;background:rgba(255,255,255,.96);box-shadow:0 12px 26px rgba(25,88,115,.14);color:#24485b;font-size:12px;font-weight:700;line-height:1.35;opacity:0;transform:translateY(7px);transition:opacity .18s,transform .18s;backdrop-filter:blur(12px)}
.guide-traveler.is-speaking .guide-traveler__bubble{opacity:1;transform:translateY(0)}
@media(min-width:900px){html.js .about>.section__inner,html.js .skills>.section__inner,html.js .projects>.section__inner,html.js .contact>.section__inner{padding-left:210px}}
@media(max-width:899px){html.js .about>.section__inner,html.js .skills>.section__inner,html.js .projects>.section__inner,html.js .contact>.section__inner{padding-top:155px;padding-left:68px}.guide-traveler{width:60px}.guide-traveler__bubble{left:calc(100% + 10px);top:25px;width:min(190px,calc(100vw - 115px));font-size:11px}.guide-traveler__halo{display:none}}
@media(prefers-reduced-motion:reduce){.guide-traveler,.guide-traveler__bubble{transition:none}}
