html,body{min-width:320px;margin:0}body{width:100%}:root{--background:#fff;--ink:#17191d;--muted:#676b72;--line:#e1e3e7;--accent:#2457e6}*{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:115px}body{background:var(--background);color:var(--ink);font-family:Sora,Noto Sans Thai,sans-serif;font-size:14px;line-height:1.8}a{color:inherit;text-decoration:none}h1,h2,h3,p,figure{margin:0}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:6px}a{text-underline-offset:5px}.container{width:min(1320px,100%);margin:auto;padding-inline:64px}.header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:105px;display:flex}.wordmark{letter-spacing:-2px;font-size:36px;font-weight:700;line-height:1}.wordmark span{color:var(--accent)}nav{align-items:center;gap:36px;font-size:12px;display:flex}nav a:hover{color:var(--accent)}.nav-contact{border:1px solid var(--line);border-radius:3px;padding:8px 17px}.nav-contact span{margin-left:14px}.hero{grid-template-columns:1.45fr 1fr;align-items:center;gap:50px;padding-top:65px;display:grid}.hero h1{letter-spacing:-.04em;font-size:clamp(48px,6.4vw,88px);font-weight:600;line-height:1.08}.hero h1>span{color:var(--accent)}.hero-description{margin-top:32px}.role{color:var(--accent);margin-bottom:13px;font-size:19px;font-weight:500}.hero-description>p+p{color:var(--muted);font-size:13px;line-height:1.9}.hero-actions{align-items:center;gap:28px;margin-top:28px;font-size:12px;display:flex}.hero-actions span{margin-left:18px}.primary{background:var(--accent);color:#fff;border-radius:3px;align-items:center;padding:12px 21px;transition:background .2s;display:inline-flex}.primary:hover{background:#1743bc}.portrait img{border-radius:4px;width:100%;height:auto;display:block}.portrait figcaption{color:var(--muted);justify-content:space-between;gap:15px;margin-top:13px;font-size:9px;display:flex}.hero-foot{border-top:1px solid var(--line);color:var(--muted);grid-column:1/-1;justify-content:space-between;gap:25px;margin-top:15px;padding-top:23px;padding-bottom:30px;font-size:10px;display:flex}.hero-foot a{color:var(--ink)}.section{border-top:1px solid var(--line);padding-top:65px;padding-bottom:75px;scroll-margin-top:0}h2{letter-spacing:-.025em;font-size:23px;font-weight:500;line-height:1.4}.about{grid-template-columns:1fr 2.3fr;gap:50px;display:grid}.section-body h3{letter-spacing:-.02em;font-family:Noto Sans Thai,sans-serif;font-size:32px;font-weight:500;line-height:1.5}.about-text{color:var(--muted);grid-template-columns:1fr 1fr;gap:30px;margin-top:28px;font-size:13px;line-height:2;display:grid}.section-top{justify-content:space-between;align-items:center;gap:25px;margin-bottom:35px;display:flex}.section-top>p{color:var(--muted);font-size:11px}.project-row{border-bottom:1px solid var(--line);position:relative}.project-row:first-child{border-top:1px solid var(--line)}.project-row summary{cursor:pointer;grid-template-columns:28% 1fr 25px;align-items:center;gap:20px;min-height:110px;padding:26px 0;list-style:none;display:grid;position:relative}.project-row summary::-webkit-details-marker{display:none}.project-category{color:var(--muted);font-size:11px}.project-title{flex-direction:column;gap:5px;display:flex}.project-title strong{letter-spacing:-.025em;font-size:22px;font-weight:500}.project-title>span{color:var(--muted);font-size:10px}.project-toggle{font-size:24px;font-weight:400;transition:transform .25s}.project-row summary:hover .project-title strong{color:var(--accent)}.hover-image{z-index:3;pointer-events:none;opacity:0;border-radius:4px;width:260px;height:160px;transition:opacity .25s,transform .3s;position:absolute;top:50%;left:58%;overflow:hidden;transform:translateY(-40%)rotate(-4deg)scale(.96);box-shadow:0 15px 30px #17191d25}.hover-image img{object-fit:cover;object-position:top;width:100%;height:100%}.project-row summary:hover .hover-image,.project-row summary:focus-visible .hover-image{opacity:1;transform:translateY(-50%)rotate(-3deg)scale(1)}.project-detail{grid-template-columns:1fr 1fr;gap:28px;margin-left:28%;padding:5px 0 32px;display:grid}.project-image{object-fit:cover;object-position:top;border-radius:4px;width:100%;height:200px}.project-description p{color:var(--muted);font-size:12px;line-height:1.95}.project-links{flex-wrap:wrap;gap:22px;margin-top:20px;font-size:10px;display:flex}.project-links a{border-bottom:1px solid var(--line);padding-bottom:4px}.project-links a:hover{color:var(--accent)}.experience,.skill-section{grid-template-columns:1fr 2.3fr;gap:50px;display:grid}.career{border-bottom:1px solid var(--line);grid-template-columns:1fr 2.3fr;gap:30px;padding:27px 0;display:grid}.career:first-child{padding-top:0}.career:last-child{border-bottom:0;padding-bottom:0}.date{font-size:10px}.career>div>span{color:var(--muted);font-size:10px}.career h3{letter-spacing:-.015em;font-size:16px;font-weight:500;line-height:1.5}.job{color:var(--accent);margin-top:5px;margin-bottom:13px;font-size:11px}.career .job+p{color:var(--muted);font-size:12px;line-height:1.95}.skill-row{border-bottom:1px solid var(--line);grid-template-columns:1fr 2.3fr;gap:30px;padding:20px 0;display:grid}.skill-row:first-child{padding-top:0}.skill-row:last-child{border-bottom:0;padding-bottom:0}.skill-row h3{font-size:12px;font-weight:500}.skill-row p{color:var(--muted);font-size:12px;line-height:2}.contact{border-top:1px solid var(--line);padding-top:65px;padding-bottom:45px}.contact-top{justify-content:space-between;align-items:center;gap:30px;display:flex}.contact h2{letter-spacing:-.04em;font-size:clamp(36px,5.4vw,70px);font-weight:500;line-height:1.15}.contact h2 span{color:var(--accent)}.email-action{width:90px;height:90px;color:var(--accent);place-items:center;transition:transform .3s;display:grid}.email-action:hover{transform:translate(5px,-5px)}.email-action svg{width:64px;height:64px}.contact-bottom{flex-wrap:wrap;justify-content:space-between;gap:25px;margin-top:50px;font-size:11px;display:flex}.contact-bottom>span{color:var(--muted)}.contact-bottom a:hover{text-decoration:underline}footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding-block:30px;display:flex}footer .wordmark{font-size:27px}footer>span,footer>a:last-child{color:var(--muted);font-size:9px}@media (width<=1000px){.container{padding-inline:35px}.hero{gap:30px}.hero h1{font-size:6.6vw}.hero-description{margin-top:25px}.hero-foot{font-size:8px}.about,.experience,.skill-section{grid-template-columns:1fr 2.3fr;gap:30px}.about-text{grid-template-columns:1fr;gap:15px}.career{grid-template-columns:1fr;gap:12px}.career>div:first-child{gap:15px;display:flex}.project-detail{grid-template-columns:1fr;margin-left:28%}.project-image{height:240px}.skill-row{grid-template-columns:1fr;gap:9px}h2{font-size:21px}.contact-bottom{font-size:10px}}@media (width<=640px){.container{padding-inline:24px}.header{height:80px}.wordmark{font-size:31px}nav{gap:17px;font-size:10px}.nav-contact{border:0;padding:0}.nav-contact span{display:none}.hero{grid-template-columns:1fr;gap:30px;padding-top:40px}.hero h1{font-size:13vw;line-height:1.08}.hero-description{margin-top:24px}.role{font-size:18px}.hero-description>p+p{font-size:12px}.hero-actions{margin-top:23px}.portrait{width:78%;margin-left:auto}.hero-foot{flex-wrap:wrap;gap:8px 20px;margin-top:0;padding-top:20px;padding-bottom:25px}.hero-foot>span:nth-child(2){display:none}.hero-foot a{margin-left:auto}.section{padding-top:40px;padding-bottom:45px}.about,.experience,.skill-section{grid-template-columns:1fr;gap:28px}h2{font-size:23px}.section-body h3{font-size:27px}.about-text{gap:16px;margin-top:22px;font-size:12px}.section-top{margin-bottom:24px;display:block}.section-top>p{margin-top:12px;font-size:10px}.project-row summary{grid-template-columns:1fr 20px;gap:5px 12px;min-height:115px;padding:22px 0}.project-category{grid-column:1;font-size:9px}.project-title{grid-column:1;gap:4px}.project-title strong{font-size:20px}.project-title>span{font-size:9px;line-height:1.8}.project-toggle{grid-area:1/2/3;align-self:center;font-size:22px}.hover-image{display:none}.project-detail{gap:20px;margin-left:0;padding-bottom:25px}.project-image{height:210px}.career{padding:25px 0}.career h3{font-size:16px}.career .job+p{font-size:12px}.skill-row{grid-template-columns:1fr;gap:7px;padding:18px 0}.contact{padding-top:40px;padding-bottom:30px}.contact h2{font-size:37px}.email-action{width:40px;height:50px}.email-action svg{width:38px;height:38px}.contact-bottom{grid-template-columns:1fr 1fr;gap:14px;margin-top:30px;font-size:10px;display:grid}.contact-bottom>a:first-child{overflow-wrap:anywhere;grid-column:1/-1;font-size:13px}.contact-bottom>span{grid-column:1/-1;font-size:10px}footer{flex-wrap:wrap;padding-block:24px}footer>span,footer>a:last-child{font-size:8px}}@media (hover:none){.hover-image{display:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.identity{flex-direction:column;font-size:12px;line-height:1.7;display:flex}.identity strong{font-weight:500}.identity>span{color:var(--muted)}.header{border-bottom:0;height:100px}.showcase{padding-top:25px}.showcase-stage{isolation:isolate;background:#17191d;border-radius:12px;height:clamp(390px,48vw,660px);position:relative}.showcase-slide{opacity:0;visibility:hidden;border-radius:12px;transition:opacity .65s,visibility .65s;position:absolute;inset:0;overflow:hidden}.showcase-slide.active{opacity:1;visibility:visible;z-index:1}.showcase-slide>img{object-fit:cover;object-position:top;width:100%;height:100%;transition:transform 1.3s cubic-bezier(.16,1,.3,1);transform:scale(1.035)}.showcase-slide.active>img{transform:scale(1)}.slide-shade{background:linear-gradient(#10141925,#10141965 50%,#101419b0);position:absolute;inset:0}.slide-caption{color:#fff;text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:35px;display:flex;position:absolute;inset:0}.slide-caption>p{margin-bottom:10px;font-size:12px}.slide-caption>h1{letter-spacing:-.04em;font-size:clamp(55px,8vw,108px);font-weight:500;line-height:1.1}.slide-caption>a{color:#fff;background:#17191d;border:1px solid #ffffff70;border-radius:50%;place-items:center;width:62px;height:62px;margin-top:28px;font-size:27px;transition:background .25s,transform .25s;display:grid}.slide-caption>a:hover{background:var(--accent);transform:translateY(-3px)}.slide-controls{z-index:4;flex-direction:column;gap:3px;display:flex;position:absolute;top:50%;right:18px;transform:translateY(-50%)}.slide-controls button{cursor:pointer;background:0 0;border:0;width:35px;height:27px;padding:10px 7px}.slide-controls span{transform-origin:0;background:#ffffff65;width:24px;height:2px;transition:transform .25s,background .25s;display:block;transform:scaleX(.54)}.slide-controls button.active span{background:#fff;transform:scaleX(1)}.slide-count{z-index:4;color:#fff;font-variant-numeric:tabular-nums;font-size:10px;position:absolute;bottom:22px;left:28px}.showcase-intro{justify-content:space-between;align-items:end;gap:35px;padding:40px 0 65px;display:flex}.showcase-intro>h2{letter-spacing:-.02em;font-size:22px;font-weight:400;line-height:1.5}.showcase-intro>p{color:var(--muted);font-size:11px;line-height:1.9}.about{padding-top:85px;padding-bottom:85px}.about-identity>img{border-radius:8px;width:140px;height:140px;display:block}.about-identity>p{margin-top:20px;font-size:11px}.about-identity>p>span{color:var(--muted);font-size:10px}.section-body>h2{letter-spacing:-.025em;font-family:Noto Sans Thai,sans-serif;font-size:37px;font-weight:500;line-height:1.55}.about-contact{border-bottom:1px solid var(--line);margin-top:28px;padding-bottom:5px;font-size:11px;display:inline-block}.will-reveal{opacity:.25;transition:opacity .8s,transform .8s cubic-bezier(.16,1,.3,1);transform:translateY(25px)}.will-reveal.in-view{opacity:1;transform:none}.project-row summary{min-height:125px}.project-title strong{font-size:25px}.section-top h2,.experience>h2,.skill-section>h2{font-size:29px}.hover-image{border-radius:9px;width:290px;height:180px}.contact h2{font-size:clamp(36px,5.6vw,74px)}@media (width<=1000px){.section-body>h2{font-size:29px}.showcase-intro>h2{font-size:19px}.showcase-intro>p{font-size:10px}}@media (width<=640px){.header{height:85px}.identity{font-size:9px;line-height:1.7}.identity>span{font-size:9px}.header nav{gap:13px;font-size:9px}.header nav>a:nth-child(3){display:none}.showcase{padding-top:12px}.showcase-stage{border-radius:9px;height:410px}.showcase-slide{border-radius:9px}.slide-caption{padding:25px}.slide-caption>h1{font-size:54px}.slide-caption>p{max-width:220px;font-size:9px}.slide-caption>a{width:52px;height:52px;margin-top:23px;font-size:23px}.slide-controls{right:8px}.slide-count{font-size:9px;bottom:18px;left:20px}.showcase-intro{padding:26px 0 40px;display:block}.showcase-intro>h2{font-size:19px;line-height:1.5}.showcase-intro>p{margin-top:17px;font-size:10px}.about{gap:30px;padding-block:40px}.about-identity{align-items:center;gap:18px;display:flex}.about-identity>img{border-radius:6px;width:76px;height:76px}.about-identity>p{margin-top:0;font-size:11px}.section-body>h2{font-size:25px;line-height:1.6}.about-contact{font-size:10px}.section-top h2,.experience>h2,.skill-section>h2{font-size:25px}.project-title strong{font-size:21px}.project-row summary{min-height:115px}}.language-switch{align-items:center;gap:9px;margin-left:25px;font-size:11px;display:flex}.language-switch>a{color:var(--muted);padding:8px 2px}.language-switch>a[aria-current=page]{color:var(--ink);border-bottom:1px solid var(--ink);font-weight:600}.language-switch>span{color:var(--line)}.header nav{margin-left:auto}.showcase-slide,.showcase-slide>img{transition:none}.showcase-intro>h2:lang(th){font-family:Noto Sans Thai,sans-serif}.section-body>h2:lang(en){font-family:Sora,sans-serif;font-size:35px;line-height:1.4}.scroll-progress{background:var(--accent);transform-origin:0;z-index:50;pointer-events:none;height:2px;position:fixed;inset:0 0 auto;transform:scaleX(0)}@media (width<=640px){.language-switch{gap:6px;margin-left:16px;font-size:10px}.header nav{gap:12px}.header nav>a:first-child{display:none}.identity strong{max-width:135px;line-height:1.5}.section-body>h2:lang(en){font-size:25px}.showcase-intro>h2:lang(th){font-size:18px}}.navbar-logo{letter-spacing:-1.7px;flex-shrink:0;font-size:32px;font-weight:700;line-height:1}.navbar-logo span{color:var(--accent)}@media (width<=640px){.navbar-logo{font-size:29px}}.header{z-index:30;backdrop-filter:blur(12px);background:#ffffffed;border-bottom:1px solid #0000;position:sticky;top:0}.header.is-scrolled{border-bottom-color:var(--line)}.intro-hero{grid-template-columns:1.2fr 1fr;align-content:center;gap:35px 70px;min-height:calc(100svh - 100px);padding-top:60px;padding-bottom:25px;display:grid;position:relative}.intro-brand{align-self:center}.intro-brand h1{letter-spacing:-.065em;transform-origin:0 0;z-index:40;width:max-content;font-family:Sora,sans-serif;font-size:clamp(130px,20vw,280px);font-weight:700;line-height:.95;position:relative}.intro-brand h1>span{color:var(--accent)}.intro-content{align-self:center;max-width:440px}.intro-name{color:var(--muted);margin-bottom:20px;font-size:12px}.intro-content h2{letter-spacing:-.025em;text-wrap:balance;font-size:30px;font-weight:500;line-height:1.6}.intro-content>p:not(.intro-name){color:var(--muted);margin-top:20px;font-size:12px;line-height:1.9}.intro-work{border-bottom:1px solid var(--ink);align-items:center;gap:30px;margin-top:27px;padding-bottom:7px;font-size:12px;display:inline-flex}.intro-bottom{color:var(--muted);grid-column:1/-1;justify-content:space-between;gap:20px;margin-top:80px;font-size:10px;display:flex}.intro-bottom a{color:var(--ink)}.intro-bottom a span{margin-left:18px}.intro-hero:lang(en) .intro-content h2{font-size:28px;line-height:1.45}.navbar-logo{transition:none}@media (width<=1000px){.intro-hero{gap:35px}.intro-content h2{font-size:25px}.intro-hero:lang(en) .intro-content h2{font-size:24px}}@media (width<=640px){.intro-hero{grid-template-columns:1fr;gap:32px;min-height:calc(100svh - 85px);padding-top:40px;padding-bottom:25px}.intro-brand h1{font-size:39vw}.intro-content{max-width:100%}.intro-name{margin-bottom:13px;font-size:11px}.intro-content h2,.intro-hero:lang(en) .intro-content h2{max-width:330px;font-size:24px}.intro-content>p:not(.intro-name){margin-top:14px;font-size:11px}.intro-work{margin-top:20px;font-size:11px}.intro-bottom{align-items:end;gap:20px;margin-top:20px;font-size:8px}.intro-bottom>span{max-width:150px}}.about-identity{align-self:start}.character-stage{perspective:700px;place-items:center;width:230px;height:230px;margin:0 0 23px;display:grid;position:relative}.character-orbit{width:100%;height:100%;color:var(--accent);opacity:.3;pointer-events:none;position:absolute;inset:0}.character-button{cursor:pointer;width:180px;height:180px;transform-style:preserve-3d;background:#c1e5f1;border:0;border-radius:24px;padding:0;overflow:hidden;box-shadow:0 12px 30px #17191d0c}.character-button img{object-fit:cover;width:100%;height:100%;display:block}.character-greeting{background:var(--ink);color:#fff;opacity:0;pointer-events:none;border-radius:20px;padding:7px 15px;font-size:12px;position:absolute;top:12px;right:-6px;transform:translateY(8px)}.character-greeting.is-visible{opacity:1;transform:none}.character-hint{color:var(--muted);margin-top:10px;font-size:9px;display:block}.about-line{display:block}.about-focus{flex-wrap:wrap;gap:8px;margin-top:23px;display:flex}.about-focus>span{border:1px solid var(--line);border-radius:20px;padding:5px 12px;font-size:10px;transition:border-color .25s,color .25s}.about-focus>span:hover{border-color:var(--accent);color:var(--accent)}@media (width<=1000px){.character-stage{width:185px;height:185px}.character-button{width:145px;height:145px}}@media (width<=640px){.about-identity{display:block}.character-stage{width:200px;height:200px;margin:0 auto 20px}.character-button{width:156px;height:156px}.about-identity>p,.character-hint{text-align:center}.about-focus{gap:7px}.about-focus>span{font-size:9px}}.quote-credit{color:var(--muted);margin-top:17px;font-size:11px}.quote-credit span{font-size:10px}.about-quote{letter-spacing:-.025em}@media (width<=640px){.quote-credit{font-size:10px}.quote-credit span{margin-top:3px;display:block}}.intro-content .intro-speech{text-wrap:pretty;font-size:29px;font-weight:500;line-height:1.6}.intro-content .intro-speech-credit{color:var(--ink);margin-top:20px;font-size:11px;line-height:1.8}.intro-speech-credit>span{color:var(--muted);font-size:10px}.intro-content>p:last-of-type{max-width:42ch;margin-top:25px}.intro-hero:lang(en) .intro-speech{font-size:29px;line-height:1.5}@media (width<=640px){.intro-content .intro-speech,.intro-hero:lang(en) .intro-speech{max-width:100%;font-size:24px}}.hover-image{border-radius:5px;transition:opacity .22s;transform:translateY(-50%);box-shadow:0 10px 24px #17191d14}.project-row summary:hover .hover-image,.project-row summary:focus-visible .hover-image{transform:translateY(-50%)}.project-row[open] summary .hover-image{opacity:0}.project-row summary{transition:color .2s}.project-toggle{transition:transform .3s cubic-bezier(.22,1,.36,1)}.project-row[open] .project-toggle{transform:rotate(45deg)}.project-detail{overflow:hidden}.project-title{transition:transform .35s cubic-bezier(.22,1,.36,1)}.project-title strong{color:var(--muted);transition:color .25s,font-weight .25s}.project-row summary:hover .project-title,.project-row summary:focus-visible .project-title{transform:translate(-12px)}.project-row summary:hover .project-title strong,.project-row summary:focus-visible .project-title strong{color:var(--ink);font-weight:600}@media (hover:none){.project-row summary:hover .project-title{transform:none}}@media (prefers-reduced-motion:reduce){.project-row summary:hover .project-title,.project-row summary:focus-visible .project-title{transform:none}}.contact-panel{color:#f5f5f5;background:#111;padding:110px 0 100px;scroll-margin-top:95px}.contact-grid{grid-template-columns:1.25fr 1fr;gap:130px;display:grid}.contact-message h2{letter-spacing:-.025em;text-wrap:balance;max-width:560px;font-size:42px;font-weight:500;line-height:1.65}.contact-message:lang(en) h2{line-height:1.4}.phone-pill{background:#202020;border-radius:40px;align-items:center;gap:13px;margin-top:45px;padding:8px 18px 8px 8px;font-size:13px;display:inline-flex}.phone-pill img{object-fit:cover;border-radius:50%}.phone-pill>span:last-child{margin-left:15px}.contact-form h3{font-size:14px;font-weight:500}.contact-form>p{color:#c2c2c2;margin:18px 0 25px;font-size:12px;line-height:1.8}.contact-form label{color:#c2c2c2;margin:15px 0 7px;font-size:11px;display:block}.contact-form input,.contact-form textarea{color:#fff;width:100%;font:inherit;caret-color:#fff;background:#202020;border:1px solid #ffffff12;border-radius:7px;padding:14px 16px;font-size:12px;transition:border-color .2s;display:block}.contact-form textarea{resize:vertical;min-height:120px}.contact-form input:focus,.contact-form textarea:focus{outline-offset:2px;border-color:#8a9ffa;outline:2px solid #8a9ffa}.contact-form button{color:#111;font:inherit;cursor:pointer;background:#ececec;border:0;border-radius:30px;margin-top:17px;padding:14px 22px;font-size:12px;font-weight:500;transition:background .2s,transform .2s}.contact-form button span{margin-left:25px}.contact-form button:hover{background:#cbd6ff;transform:translateY(-2px)}.contact-form .form-note{color:#aaa;margin:13px 0 0;font-size:10px}.immersive-footer{isolation:isolate;color:#f4f4f4;background:#111;border:0;width:100%;max-width:none;padding:0;display:block;position:relative;overflow:hidden}.footer-color{z-index:-1;filter:blur(35px);opacity:.85;background:radial-gradient(at 20% 70%,#ff1c84 0%,#0000 40%),radial-gradient(at 70% 90%,#4732f2 0%,#0000 50%),radial-gradient(at 90% 60%,#ec7125 0%,#0000 38%),radial-gradient(at 40% 100%,#4138ff 0%,#0000 60%);position:absolute;inset:18% -20% -50%;transform:scale(1.1)}.footer-content{padding-top:45px;padding-bottom:28px}.footer-top{z-index:1;grid-template-columns:1.6fr 1fr 1fr;gap:40px;font-size:12px;display:grid;position:relative}.footer-top>div>p{color:#aaa;margin-top:7px;font-size:10px}.footer-links,.footer-top nav{flex-direction:column;align-items:flex-start;gap:12px;margin:0;font-size:12px;display:flex}.footer-top nav{align-items:flex-end}.footer-top a:hover{text-decoration:underline}.footer-title{letter-spacing:-.065em;color:#f3f3f3;width:max-content;margin:50px 0 45px;font-family:Sora,sans-serif;font-size:clamp(150px,29vw,410px);font-weight:700;line-height:1.1;display:block}.footer-bottom{color:#f0f0f0;z-index:1;justify-content:space-between;gap:25px;font-size:9px;display:flex;position:relative}@media (width<=1000px){.contact-grid{gap:60px}.contact-message h2{font-size:34px}}@media (width<=640px){.contact-panel{padding:60px 0}.contact-grid{grid-template-columns:1fr;gap:45px}.contact-message h2{font-size:29px;line-height:1.65}.phone-pill{margin-top:25px;font-size:12px}.footer-content{padding-top:30px;padding-bottom:24px}.footer-top{grid-template-columns:1fr 1fr;gap:25px;font-size:10px}.footer-top>div:first-child{grid-column:1/-1}.footer-top nav,.footer-links{gap:10px;font-size:11px}.footer-top nav>a:nth-child(3),.footer-top nav>a:first-child{display:block}.footer-title{margin:40px 0 30px;font-size:38vw}.footer-bottom{font-size:8px}.footer-color{filter:blur(22px)}}.contact-panel,.immersive-footer{background:var(--background);color:var(--ink)}.contact-panel{border-top:1px solid var(--line)}.phone-pill{background:#f3f4f6}.contact-form>p,.contact-form label,.contact-form .form-note{color:var(--muted)}.contact-form input,.contact-form textarea{border-color:var(--line);color:var(--ink);caret-color:var(--accent);background:#f5f6f8}.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--muted)}.contact-form button{background:var(--accent);color:#fff}.contact-form button:hover{background:#1944bd}.footer-top>div>p,.footer-bottom{color:var(--muted)}.footer-title{color:var(--ink)}.footer-title span{color:var(--accent)}.footer-color{opacity:.16}.immersive-footer :focus-visible,.contact-panel :focus-visible{outline-color:var(--accent)}.footer-color{filter:none;opacity:1;background:radial-gradient(at 5% 100%,#f9d6eb 0%,#0000 62%),radial-gradient(at 95% 100%,#e3dffa 0%,#0000 68%);inset:0;transform:none}.header{backdrop-filter:none;background:#fff}.immersive-footer{isolation:isolate}.intro-speech{position:relative}.intro-speech .quote-reserve{visibility:hidden;display:block}.intro-speech .typed-quote{display:block;position:absolute;inset:0}.intro-speech.is-typing .typed-quote:after{content:"";background:var(--accent);vertical-align:baseline;width:2px;height:.85em;margin-left:3px;animation:.65s step-end infinite typing-caret;display:inline-block}@keyframes typing-caret{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.intro-speech.is-typing .typed-quote:after{display:none}}.form-honeypot{overflow:hidden;width:1px!important;height:1px!important;position:absolute!important;left:-10000px!important}.contact-form button:disabled{opacity:.6;cursor:wait;transform:none}.contact-form .form-status{min-height:0;margin:15px 0 7px;font-size:12px}.form-status:empty{display:none}.form-status[data-state=error]{color:#a32f28}.form-status[data-state=success]{color:#23633c}.form-email-fallback{font-size:11px;text-decoration:underline}.project-overview[data-astro-cid-yhgbnuw5]{align-items:center;gap:12px;display:flex}.project-overview[data-astro-cid-yhgbnuw5]:before{content:"";background:var(--line);border-radius:50%;flex:none;width:6px;height:6px;transition:background .25s}.project-title[data-astro-cid-yhgbnuw5]{gap:14px;min-width:0}.project-title[data-astro-cid-yhgbnuw5] strong[data-astro-cid-yhgbnuw5]{color:var(--ink);font-size:clamp(24px,2.6vw,36px);font-weight:500;line-height:1.3}.project-title[data-astro-cid-yhgbnuw5]>.project-stack[data-astro-cid-yhgbnuw5]{letter-spacing:0;flex-wrap:wrap;gap:7px;font-size:10px;line-height:1.8;display:flex}.project-tech[data-astro-cid-yhgbnuw5]{border:1px solid var(--line);background:var(--background);border-radius:3px;padding:3px 9px;transition:border-color .25s,color .25s}.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]{isolation:isolate;grid-template-columns:28% minmax(0,1fr) 34px;padding-block:32px}.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:before{content:"";opacity:0;z-index:-1;background:#2457e608;transition:opacity .3s;position:absolute;inset:0}.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:hover:before,.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:focus-visible:before,.project-row[data-astro-cid-yhgbnuw5][open] summary[data-astro-cid-yhgbnuw5]:before{opacity:1}.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:hover .project-overview[data-astro-cid-yhgbnuw5]:before,.project-row[data-astro-cid-yhgbnuw5][open] .project-overview[data-astro-cid-yhgbnuw5]:before{background:var(--accent)}.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:hover .project-tech[data-astro-cid-yhgbnuw5],.project-row[data-astro-cid-yhgbnuw5][open] .project-tech[data-astro-cid-yhgbnuw5]{color:var(--accent);border-color:#2457e633}.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:1px;transition:transform .4s;position:absolute;bottom:0;left:0;transform:scaleX(0)}.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:hover:after,.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:focus-visible:after,.project-row[data-astro-cid-yhgbnuw5][open] summary[data-astro-cid-yhgbnuw5]:after{transform:scaleX(1)}.project-toggle[data-astro-cid-yhgbnuw5]{border:1px solid var(--line);border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-size:22px;line-height:1;transition:transform .3s,background .25s,color .25s,border-color .25s;display:flex}.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:hover .project-toggle[data-astro-cid-yhgbnuw5],.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:focus-visible .project-toggle[data-astro-cid-yhgbnuw5],.project-row[data-astro-cid-yhgbnuw5][open] .project-toggle[data-astro-cid-yhgbnuw5]{background:var(--accent);color:var(--background);border-color:var(--accent)}.project-row[data-astro-cid-yhgbnuw5][open] .project-title[data-astro-cid-yhgbnuw5] strong[data-astro-cid-yhgbnuw5]{color:var(--accent)}@media (width<=640px){.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]{grid-template-columns:minmax(0,1fr) 34px;gap:12px 18px;padding-block:25px}.project-overview[data-astro-cid-yhgbnuw5],.project-title[data-astro-cid-yhgbnuw5]{grid-column:1}.project-title[data-astro-cid-yhgbnuw5]>.project-stack[data-astro-cid-yhgbnuw5]{gap:5px;font-size:9px}.project-tech[data-astro-cid-yhgbnuw5]{padding:2px 7px}.project-toggle[data-astro-cid-yhgbnuw5]{grid-area:1/2/3}}@media (prefers-reduced-motion:reduce){.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:before,.project-row[data-astro-cid-yhgbnuw5] summary[data-astro-cid-yhgbnuw5]:after,.project-toggle[data-astro-cid-yhgbnuw5],.project-tech[data-astro-cid-yhgbnuw5],.project-overview[data-astro-cid-yhgbnuw5]:before{transition:none}}.career-list[data-astro-cid-3ytmj4sv]{min-width:0}.career[data-astro-cid-3ytmj4sv]{column-gap:24px;padding:32px 0 32px 24px;position:relative}.career[data-astro-cid-3ytmj4sv]:first-child{padding-top:0}.career[data-astro-cid-3ytmj4sv]:before{content:"";background:var(--line);width:1px;position:absolute;top:0;bottom:0;left:3px}.career[data-astro-cid-3ytmj4sv]:after{content:"";background:var(--background);border:1px solid var(--muted);border-radius:50%;width:7px;height:7px;position:absolute;top:38px;left:0}.career[data-astro-cid-3ytmj4sv]:first-child:after{background:var(--accent);border-color:var(--accent);top:6px}.career[data-astro-cid-3ytmj4sv]:last-child:before{bottom:8px}.career-meta[data-astro-cid-3ytmj4sv]{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.date[data-astro-cid-3ytmj4sv]{font-variant-numeric:tabular-nums;font-size:11px;line-height:1.8}.career[data-astro-cid-3ytmj4sv] .career-meta[data-astro-cid-3ytmj4sv]>.employment[data-astro-cid-3ytmj4sv]{border:1px solid var(--line);border-radius:3px;align-items:center;gap:6px;padding:3px 9px;font-size:10px;line-height:1.7;display:inline-flex}.career[data-astro-cid-3ytmj4sv] .career-meta[data-astro-cid-3ytmj4sv]>.is-current[data-astro-cid-3ytmj4sv]{color:var(--accent);background:#2457e608;border-color:#2457e633}.is-current[data-astro-cid-3ytmj4sv]:before{content:"";background:currentColor;border-radius:50%;width:5px;height:5px}.career[data-astro-cid-3ytmj4sv] h3[data-astro-cid-3ytmj4sv]{text-wrap:balance;font-size:clamp(18px,1.6vw,22px);font-weight:500;line-height:1.5}.job[data-astro-cid-3ytmj4sv]{margin-top:8px;margin-bottom:16px;font-size:12px}.career[data-astro-cid-3ytmj4sv] .job[data-astro-cid-3ytmj4sv]+p[data-astro-cid-3ytmj4sv]{max-width:65ch;line-height:2}.career[data-astro-cid-3ytmj4sv] h3[data-astro-cid-3ytmj4sv]{transition:color .25s}.career[data-astro-cid-3ytmj4sv]:hover h3[data-astro-cid-3ytmj4sv]{color:var(--accent)}@media (width<=1000px){.career[data-astro-cid-3ytmj4sv] .career-meta[data-astro-cid-3ytmj4sv]{flex-flow:wrap;align-items:center;gap:8px 12px}}@media (width<=640px){.career[data-astro-cid-3ytmj4sv]{padding-left:20px;gap:16px;padding-block:26px}.career[data-astro-cid-3ytmj4sv]:first-child{padding-top:0}.career[data-astro-cid-3ytmj4sv]:after{top:32px}.career[data-astro-cid-3ytmj4sv] h3[data-astro-cid-3ytmj4sv]{font-size:19px}}@media (prefers-reduced-motion:reduce){.career[data-astro-cid-3ytmj4sv] h3[data-astro-cid-3ytmj4sv]{transition:none}}.skill-list[data-astro-cid-jx7wkfml]{min-width:0}.skill-row[data-astro-cid-jx7wkfml]{align-items:start;gap:24px;padding-block:26px}.skill-row[data-astro-cid-jx7wkfml]:first-child{padding-top:0}.skill-row[data-astro-cid-jx7wkfml] h3[data-astro-cid-jx7wkfml]{align-items:baseline;gap:10px;padding-top:5px;font-size:13px;font-weight:500;line-height:1.8;display:flex}.skill-row[data-astro-cid-jx7wkfml] h3[data-astro-cid-jx7wkfml]:before{content:"";background:var(--accent);border-radius:50%;flex:none;align-self:flex-start;width:6px;height:6px;margin-top:9px}.skill-tags[data-astro-cid-jx7wkfml]{flex-wrap:wrap;gap:10px;min-width:0;margin:0;padding:0;list-style:none;display:flex}.skill-tags[data-astro-cid-jx7wkfml] li[data-astro-cid-jx7wkfml]{perspective:600px;color:var(--ink);overflow-wrap:anywhere;font-size:11px;font-weight:500;line-height:1.8}.skill-flip[data-astro-cid-jx7wkfml]{transform-style:preserve-3d;transition:transform .55s cubic-bezier(.22,1,.36,1);display:grid}.skill-face[data-astro-cid-jx7wkfml]{-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#f7f9fc;border:1px solid #dce2ed;border-radius:4px;grid-area:1/1;align-items:center;gap:9px;padding:7px 13px;display:flex}.skill-logo[data-astro-cid-jx7wkfml]{width:17px;height:17px;mask:var(--skill-logo) center / contain no-repeat;background:currentColor;flex:none;display:block}.skill-back[data-astro-cid-jx7wkfml]{color:#fff;background:var(--accent);border-color:var(--accent);justify-content:center;transform:rotateX(180deg);box-shadow:0 4px 10px #2457e621}@media (hover:hover) and (pointer:fine){.skill-tags[data-astro-cid-jx7wkfml] li[data-astro-cid-jx7wkfml]:hover .skill-flip[data-astro-cid-jx7wkfml]{transform:rotateX(180deg)}}@media (width<=640px){.skill-row[data-astro-cid-jx7wkfml]{grid-template-columns:1fr;gap:13px;padding-block:22px}.skill-row[data-astro-cid-jx7wkfml] h3[data-astro-cid-jx7wkfml]{padding-top:0}.skill-tags[data-astro-cid-jx7wkfml]{gap:7px}.skill-tags[data-astro-cid-jx7wkfml] li[data-astro-cid-jx7wkfml]{font-size:10px}.skill-face[data-astro-cid-jx7wkfml]{gap:7px;padding:6px 10px}}@media (prefers-reduced-motion:reduce){.skill-flip[data-astro-cid-jx7wkfml]{transition:none}.skill-tags[data-astro-cid-jx7wkfml] li[data-astro-cid-jx7wkfml]:hover .skill-flip[data-astro-cid-jx7wkfml]{transform:none}.skill-tags[data-astro-cid-jx7wkfml] li[data-astro-cid-jx7wkfml]:hover .skill-front[data-astro-cid-jx7wkfml]{color:var(--accent);background:#f0f4ff;border-color:#2457e633}}.tech-marquee[data-astro-cid-x7mnoujx]{border-block:1px solid var(--line);color:var(--muted);padding-block:42px;position:relative}.tech-marquee-viewport[data-astro-cid-x7mnoujx]{overflow:hidden;mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.tech-marquee-track[data-astro-cid-x7mnoujx]{width:max-content;animation:65s linear infinite tech-drift-right;display:flex}.tech-marquee-group[data-astro-cid-x7mnoujx]{flex:none;align-items:center;gap:64px;margin:0;padding:0 64px 0 0;list-style:none;display:flex}.tech-marquee-item[data-astro-cid-x7mnoujx]{white-space:nowrap;letter-spacing:-.03em;align-items:center;gap:16px;font-size:clamp(23px,2.5vw,36px);font-weight:600;display:flex}.tech-marquee-logo[data-astro-cid-x7mnoujx]{width:42px;height:42px;mask:var(--logo) center / contain no-repeat;background:currentColor;flex:none;display:block}.tech-marquee[data-astro-cid-x7mnoujx]+.contact-panel{border-top:0}@keyframes tech-drift-right{0%{transform:translate(-50%)}to{transform:translate(0)}}@media (width<=640px){.tech-marquee[data-astro-cid-x7mnoujx]{padding-block:34px}.tech-marquee-group[data-astro-cid-x7mnoujx]{gap:36px;padding-right:36px}.tech-marquee-logo[data-astro-cid-x7mnoujx]{width:32px;height:32px}.tech-marquee-item[data-astro-cid-x7mnoujx]{gap:12px}}@media (prefers-reduced-motion:reduce){.tech-marquee-track[data-astro-cid-x7mnoujx]{width:auto;animation:none;transform:none}.tech-marquee-viewport[data-astro-cid-x7mnoujx]{overflow:visible;mask-image:none}.tech-marquee-group[data-astro-cid-x7mnoujx]{flex-wrap:wrap;justify-content:center;gap:24px 36px;padding:0 24px}.tech-marquee-group[data-astro-cid-x7mnoujx][aria-hidden]{display:none}}
