:root{--blue-500:oklch(62.4% .176 254);--blue-600:oklch(52.2% .176 257);--blue-50:oklch(96.5% .02 250);--grey-900:oklch(23.4% .03 254);--grey-800:oklch(34.2% .03 253);--grey-700:oklch(45.2% .028 253);--grey-600:oklch(55.5% .022 253);--grey-500:oklch(65.2% .02 252);--grey-400:oklch(75.2% .016 251);--grey-300:oklch(84% .012 248);--grey-200:oklch(91.3% .008 247);--grey-100:oklch(95.7% .005 247);--grey-50:oklch(97.8% .003 247);--white:oklch(100% 0 0);--green-500:oklch(49.3% .143 154);--green-50:oklch(95.5% .035 154);--fg-tertiary:oklch(15.5% .06 261/.58);--line-subtle:oklch(0% 0 0/.08);--bg-overlay:oklch(0% 0 0/.56);--press-overlay:oklch(0% 0 0/.26);--navy-a04:oklch(15.5% .06 261/.04);--navy-a06:oklch(15.5% .06 261/.06);--navy-a10:oklch(15.5% .06 261/.1);--navy-a16:oklch(15.5% .06 261/.16);--fill-brand:var(--blue-600);--fill-primary:var(--grey-900);--fill-secondary:var(--grey-100);--fill-weak:var(--grey-50);--fill-success:var(--green-500);--text-primary:var(--grey-900);--text-secondary:var(--grey-700);--text-tertiary:var(--fg-tertiary);--text-alt:var(--white);--text-link:var(--blue-600);--border-primary:var(--blue-500);--border-secondary:var(--grey-200);--border-strong:var(--grey-400);--border-subtle:var(--line-subtle);--shadow-1:0 1px 2px var(--navy-a04), 0 1px 1px var(--navy-a04);--shadow-2:0 4px 12px var(--navy-a06), 0 1px 2px var(--navy-a04);--shadow-3:0 12px 32px var(--navy-a10), 0 2px 6px var(--navy-a06);--shadow-toast:0 8px 24px var(--navy-a16);--radius-xs:4px;--radius-s:8px;--radius-m:12px;--radius-l:14px;--radius-xl:16px;--radius-2xl:20px;--radius-3xl:24px;--radius-4xl:32px;--radius-full:999px;--ease:cubic-bezier(.22, .61, .36, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--dur-fast:.12s;--dur-base:.2s;--dur-slow:.32s;--font:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro", "Apple SD Gothic Neo", "Noto Sans KR", Roboto, "Helvetica Neue", Arial, sans-serif;--nav-h:56px;--content:1200px;--gutter:clamp(24px, 5vw, 64px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--white);color:var(--text-primary);font-family:var(--font);letter-spacing:-.005em;word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:15px;line-height:1.5}img{max-width:100%;display:block}a{color:inherit}button{font:inherit;color:inherit}h1,h2,h3,h4,p{margin:0}ul,ol,dl,dd{margin:0;padding:0}ul,ol{list-style:none}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--border-primary);outline-offset:2px;border-radius:var(--radius-s)}section:focus,main:focus{outline:none}::selection{background:var(--blue-50);color:var(--text-primary)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:1000;border-radius:var(--radius-m);background:var(--fill-primary);color:var(--text-alt);transition:transform var(--dur-base) var(--ease);padding:10px 16px;font-size:15px;font-weight:600;text-decoration:none;position:fixed;top:12px;left:12px;transform:translateY(-160%)}.skip-link:focus{transform:none}.container{width:100%;max-width:var(--content);padding-inline:var(--gutter);margin-inline:auto;position:relative}.btn{border-radius:var(--radius-l);letter-spacing:-.005em;white-space:nowrap;cursor:pointer;isolation:isolate;border:0;justify-content:center;align-items:center;gap:6px;height:48px;padding:0 20px;font-size:17px;font-weight:700;line-height:1.25;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn:after{content:"";z-index:-1;background:var(--press-overlay);opacity:0;transition:opacity var(--dur-fast) var(--ease);position:absolute;inset:0}.btn:active:after{opacity:1}.btn-xlarge{border-radius:var(--radius-xl);height:56px;padding:0 28px}.btn-medium{border-radius:var(--radius-m);height:40px;padding:0 16px;font-size:15px;font-weight:600}.btn-primary{background:var(--fill-brand);color:var(--text-alt)}.btn-secondary{background:var(--fill-secondary);color:var(--text-primary)}@media (hover:hover){.btn:hover:after{opacity:.35}.btn:active:after{opacity:1}}.tags{flex-wrap:wrap;gap:6px;display:flex}.tags li{border-radius:var(--radius-s);background:var(--fill-secondary);color:var(--text-secondary);padding:3px 8px;font-size:13px;line-height:1.5}.badge,.status{white-space:nowrap;border-radius:6px;align-items:center;height:22px;padding:0 7px;font-size:12px;font-weight:600;line-height:1;display:inline-flex}.badge{background:var(--blue-50);color:var(--text-link)}.status{background:var(--fill-secondary);color:var(--text-secondary)}.status-success{background:var(--green-50);color:var(--green-500)}#cursor-canvas{z-index:900;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.cursor-ring{z-index:901;pointer-events:none;opacity:0;width:34px;height:34px;transition:opacity var(--dur-base) var(--ease);position:fixed;top:0;left:0}.cursor-ring:before{content:"";border:1.5px solid var(--grey-400);transition:scale var(--dur-base) var(--ease), border-color var(--dur-base), background-color var(--dur-base);border-radius:50%;position:absolute;inset:0}.has-cursor-fx .cursor-ring.is-visible{opacity:1}.cursor-ring.is-hover:before{border-width:.85px;border-color:var(--border-primary);background:color-mix(in oklch, var(--blue-500) 8%, transparent);scale:1.765}.cursor-ring.is-down:before{border-width:2.12px;scale:.706}.nav{z-index:100;padding-top:env(safe-area-inset-top,0px);transition:background-color var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease);border-bottom:1px solid #0000;position:fixed;top:0;left:0;right:0}.nav.is-scrolled,.nav.menu-open{background:var(--white);border-bottom-color:var(--border-secondary)}.nav-inner{height:var(--nav-h);max-width:var(--content);padding-inline:var(--gutter);align-items:center;gap:24px;margin-inline:auto;display:flex}.logo{letter-spacing:-.01em;white-space:nowrap;font-size:18px;font-weight:700;text-decoration:none}.nav-menu{align-self:stretch;margin-left:auto}.nav-menu ul{gap:4px;height:100%;display:flex}.nav-menu a{height:100%;color:var(--text-tertiary);transition:color var(--dur-base) var(--ease);align-items:center;padding:0 12px;font-size:15px;font-weight:600;text-decoration:none;display:flex;position:relative}.nav-menu a[aria-current=true]{color:var(--text-primary)}.nav-menu a[aria-current=true]:after{content:"";background:var(--fill-brand);border-radius:2px;height:2.5px;position:absolute;bottom:-1px;left:12px;right:12px}.nav-actions{align-items:center;gap:8px;display:flex}.motion-toggle{min-height:44px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:0 4px;font-size:13px;font-weight:600;display:inline-flex}.motion-toggle-dot{border-radius:var(--radius-full);background:var(--grey-300);width:44px;height:26px;transition:background-color var(--dur-base) var(--ease);position:relative}.motion-toggle-dot:after{content:"";background:var(--white);width:20px;height:20px;box-shadow:var(--shadow-1);transition:transform var(--dur-base) var(--ease);border-radius:50%;position:absolute;top:3px;left:3px}.motion-toggle[aria-pressed=true] .motion-toggle-dot{background:var(--fill-brand)}.motion-toggle[aria-pressed=true] .motion-toggle-dot:after{transform:translate(18px)}@media (hover:hover){.nav-menu a:hover{color:var(--text-primary)}}.menu-button{border-radius:var(--radius-m);cursor:pointer;background:0 0;border:0;order:1;width:44px;height:44px;display:none;position:relative}.menu-button span{background:var(--text-primary);width:20px;height:1.5px;transition:transform var(--dur-base) var(--ease), opacity var(--dur-fast);border-radius:2px;position:absolute;left:12px}.menu-button span:first-child{top:16px}.menu-button span:nth-child(2){top:21.5px}.menu-button span:nth-child(3){top:27px}.menu-open .menu-button span:first-child{transform:translateY(5.5px)rotate(45deg)}.menu-open .menu-button span:nth-child(2){opacity:0}.menu-open .menu-button span:nth-child(3){transform:translateY(-5.5px)rotate(-45deg)}.hero{min-height:100svh;padding:calc(var(--nav-h) + 40px) var(--gutter) 120px;isolation:isolate;align-items:center;display:flex;position:relative;overflow:hidden}.hero-layers{z-index:-1;pointer-events:none;position:absolute;inset:0}.layer{will-change:transform;position:absolute;inset:-15% 0}.shape{animation:9s ease-in-out infinite float;position:absolute}.shape-ring{border:1px solid var(--border-secondary);border-radius:50%;width:136px;height:136px;top:22%;right:14%}.shape-square{border:1px solid var(--border-secondary);border-radius:var(--radius-3xl);width:72px;height:72px;animation-duration:12s;animation-delay:-5s;top:68%;right:8%}.shape-dot{background:var(--grey-300);border-radius:50%;width:10px;height:10px;animation-delay:-1.5s;top:34%;right:42%}.code-chip{border-radius:var(--radius-xl);border:1px solid var(--border-secondary);background:var(--white);box-shadow:var(--shadow-2);color:var(--text-secondary);padding:10px 16px;font-size:15px;font-weight:600;line-height:1.25;animation:10s ease-in-out infinite float;position:absolute}.chip-a{top:36%;right:8%}.chip-b{animation-delay:-4s;top:56%;right:24%}.chip-c{animation-delay:-7s;top:78%;right:32%}@keyframes float{0%,to{transform:translate(0,0)}50%{transform:translateY(-12px)}}.hero-content{width:100%;max-width:calc(var(--content) - 2 * var(--gutter));will-change:transform, opacity;margin-inline:auto}.hero-availability{border-radius:var(--radius-full);background:var(--green-50);height:34px;color:var(--green-500);align-items:center;gap:6px;margin-bottom:24px;padding:0 14px 0 12px;font-size:13px;font-weight:600;display:inline-flex}.hero-availability:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.hero-title{flex-direction:column;font-weight:700;display:flex}.hero-hello{color:var(--text-secondary);letter-spacing:-.015em;font-size:22px;line-height:1.3}.hero-name{letter-spacing:-.02em;margin-top:8px;font-size:clamp(40px,6vw,56px);line-height:1.3}.hero-role{color:var(--text-primary);letter-spacing:-.015em;margin-top:16px;font-size:20px;font-weight:700;line-height:1.35}.hero-tagline{max-width:40ch;color:var(--text-secondary);text-wrap:pretty;margin-top:8px;font-size:17px;line-height:1.5}.hero-keywords{flex-wrap:wrap;gap:6px;max-width:640px;margin-top:24px;display:flex}.hero-keywords li{border-radius:var(--radius-s);background:var(--fill-secondary);color:var(--text-secondary);padding:6px 10px;font-size:15px;font-weight:600;line-height:1.25}.hero-cta{flex-wrap:wrap;gap:8px;margin-top:32px;display:flex}.scroll-cue{color:var(--text-tertiary);flex-direction:column;align-items:center;gap:8px;padding:8px;text-decoration:none;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.scroll-cue-line{background:var(--border-secondary);width:1px;height:40px;position:relative;overflow:hidden}.scroll-cue-line:after{content:"";background:var(--grey-500);width:100%;height:50%;animation:scroll-cue 1.8s var(--ease) infinite;position:absolute;top:-50%;left:0}.scroll-cue-text{font-size:12px;font-weight:500}@keyframes scroll-cue{to{top:110%}}.section{padding-block:clamp(80px,11vw,128px);position:relative}.section-head{margin-bottom:32px}.eyebrow{color:var(--text-tertiary);margin-bottom:8px;font-size:15px;font-weight:600}.section-title{letter-spacing:-.02em;text-wrap:balance;font-size:clamp(28px,4vw,40px);font-weight:700;line-height:1.25}.section-desc{max-width:52ch;color:var(--text-secondary);text-wrap:pretty;margin-top:12px;font-size:17px}.is-ready:not(.motion-off) .reveal{opacity:0;transition:opacity var(--dur-slow) var(--ease), transform var(--dur-slow) var(--ease);transition-delay:min(calc(var(--i,0) * 60ms), .3s);transform:translateY(16px)}.is-ready:not(.motion-off) .reveal.in-view{opacity:1;transform:none}.filters{flex-wrap:wrap;gap:10px 8px;margin-bottom:24px;display:flex}.filter{border:1px solid var(--border-secondary);border-radius:var(--radius-full);background:var(--white);height:34px;color:var(--text-secondary);cursor:pointer;transition:background-color var(--dur-base) var(--ease), color var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease);padding:0 14px;font-size:15px;font-weight:600;line-height:1;position:relative}.filter:after{content:"";position:absolute;inset:-5px 0}.filter[aria-pressed=true]{border-color:var(--fill-primary);background:var(--fill-primary);color:var(--text-alt)}@media (hover:hover){.filter:not([aria-pressed=true]):hover{background:var(--fill-weak);color:var(--text-primary)}}.projects{grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;display:grid}.project{grid-column:span 2}.project.is-featured{grid-column:span 3}.project-card{border:1px solid var(--border-secondary);border-radius:var(--radius-3xl);background:var(--white);cursor:pointer;height:100%;transition:background-color var(--dur-base) var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.cover{aspect-ratio:16/10;background:var(--fill-secondary);border-bottom:1px solid var(--border-secondary);position:relative;overflow:hidden}.is-featured .cover{aspect-ratio:16/9}.cover img{object-fit:cover;object-position:var(--pos,50% 50%);width:100%;height:100%;position:absolute;inset:0}@media (hover:hover){.project-card:hover{background:var(--fill-weak)}.project-card:hover .project-more .chevron{transform:translate(2px)rotate(-45deg)}}.project-info{flex-direction:column;flex:1;gap:8px;padding:20px 24px 24px;display:flex}.project-meta{color:var(--text-tertiary);flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.project-meta>span:last-child:not(.badge):not(.status){margin-left:2px}.project-title{letter-spacing:-.01em;font-size:18px;font-weight:600;line-height:1.45}.is-featured .project-title{letter-spacing:-.015em;font-size:20px;font-weight:700;line-height:1.35}.project-open{font:inherit;letter-spacing:inherit;text-align:inherit;cursor:pointer;background:0 0;border:0;padding:0}.project-open:after{content:"";z-index:2;position:absolute;inset:0}.project-open:focus-visible{outline:none}.project-card:has(.project-open:focus-visible){outline:2px solid var(--border-primary);outline-offset:2px}.project-summary{color:var(--text-secondary);font-size:15px;line-height:1.5}.project-info .tags{margin-top:4px}.project-more{color:var(--text-link);align-items:center;gap:4px;margin-top:auto;padding-top:12px;font-size:15px;font-weight:600;line-height:1.25;display:inline-flex}.chevron{width:7px;height:7px;transition:transform var(--dur-base) var(--ease);border-bottom:1.5px solid;border-right:1.5px solid;display:inline-block;transform:rotate(-45deg)}.modal{border-radius:var(--radius-2xl);background:var(--white);width:min(760px,100% - 32px);max-width:none;max-height:min(900px,100svh - 48px);color:var(--text-primary);box-shadow:var(--shadow-3);border:0;padding:0;overflow:hidden}.modal::backdrop{background:var(--bg-overlay)}.modal[open]{animation:modal-in var(--dur-slow) var(--ease-out)}.modal[open]::backdrop{animation:fade-in var(--dur-base) var(--ease)}@keyframes modal-in{0%{opacity:0;transform:translateY(12px)}}@keyframes fade-in{0%{opacity:0}}.modal-open{overflow:hidden}.modal-body{max-height:inherit;overscroll-behavior:contain;overflow-y:auto}.modal-close{z-index:3;background:var(--white);width:40px;height:40px;box-shadow:var(--shadow-2);color:var(--text-primary);cursor:pointer;transition:background-color var(--dur-base) var(--ease);border:0;border-radius:50%;place-items:center;margin:12px 12px -52px auto;display:grid;position:sticky;top:12px}.modal-close svg{width:20px;height:20px}@media (hover:hover){.modal-close:hover{background:var(--fill-secondary)}}.modal-close:focus-visible{outline-color:var(--fill-primary);box-shadow:0 0 0 6px var(--white)}.detail-media{background:var(--fill-secondary);flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex}.detail-media img{border-radius:var(--radius-m);outline:1px solid var(--border-subtle);outline-offset:-1px;width:auto;max-height:340px}.detail-head,.detail-facts,.detail-note,.detail>.tags,.detail-section,.detail-links{margin-inline:24px}.detail-head{margin-top:24px}.detail-head:first-child{padding-right:48px}.detail-title{letter-spacing:-.02em;text-wrap:balance;margin-top:10px;font-size:28px;font-weight:700;line-height:1.3}.detail-summary{color:var(--text-secondary);margin-top:4px;font-size:15px}.detail-facts{border-top:1px solid var(--border-secondary);margin-top:20px}.detail-facts>div{border-bottom:1px solid var(--border-secondary);grid-template-columns:88px minmax(0,1fr);gap:12px;padding-block:12px;display:grid}.detail-facts dt{color:var(--text-tertiary);font-size:15px}.detail-facts dd{font-size:15px;font-weight:600}.detail-note{border-radius:var(--radius-m);background:var(--fill-secondary);color:var(--text-secondary);margin-top:12px;padding:12px 16px;font-size:13px}.detail>.tags{margin-top:16px}.detail-section{margin-top:32px}.detail-section h3{letter-spacing:-.015em;margin-bottom:12px;font-size:20px;font-weight:700;line-height:1.35}.detail-section>p{color:var(--text-secondary);font-size:17px}.check-list li{color:var(--text-secondary);padding-left:24px;font-size:15px;position:relative}.check-list li+li{margin-top:8px}.check-list li:before{content:"";border-left:1.5px solid var(--grey-500);border-bottom:1.5px solid var(--grey-500);width:10px;height:5px;position:absolute;top:.55em;left:3px;transform:rotate(-45deg)}.subprojects{gap:12px;display:grid}.subprojects li{border:1px solid var(--border-secondary);border-radius:var(--radius-xl);overflow:hidden}.subprojects img{object-fit:cover;background:var(--fill-secondary);border-bottom:1px solid var(--border-secondary);width:100%;max-height:280px}.subproject-body{padding:16px 20px 20px}.subproject-body h4{font-size:17px;font-weight:600;line-height:1.45}.subproject-body p{color:var(--text-secondary);margin-top:4px;font-size:15px}.subproject-links{flex-wrap:wrap;gap:4px 16px;display:flex}.subproject-links a{min-height:32px;color:var(--text-link);align-items:center;gap:2px;font-weight:600;text-decoration:none;display:inline-flex}@media (hover:hover){.subproject-links a:hover{text-underline-offset:3px;text-decoration:underline}}.detail-links{flex-wrap:wrap;gap:8px;margin-top:32px;margin-bottom:24px;display:flex}.detail>:last-child:not(.detail-links){margin-bottom:24px}.section-about{background:var(--fill-secondary)}.about-intro{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:clamp(32px,6vw,64px);display:grid}.about-photo{aspect-ratio:1;border-radius:var(--radius-4xl);background:var(--grey-200);position:relative;overflow:hidden}.about-photo img{object-fit:cover;will-change:transform;width:100%;height:116%;position:absolute;top:-8%;left:0}.about-photo:after{content:"";border-radius:inherit;box-shadow:inset 0 0 0 1px var(--border-subtle);pointer-events:none;position:absolute;inset:0}.bio{color:var(--text-secondary);text-wrap:pretty;font-size:17px}.bio+.bio{margin-top:12px}.bio:first-child{color:var(--text-primary);letter-spacing:-.02em;margin-bottom:20px;font-size:24px;font-weight:700;line-height:1.3}.card{border:1px solid var(--border-subtle);border-radius:var(--radius-3xl);background:var(--white)}.stats{border:1px solid var(--border-subtle);border-radius:var(--radius-3xl);background:var(--white);grid-template-columns:repeat(3,minmax(0,1fr));margin-top:28px;display:grid}.stat{flex-direction:column-reverse;padding:20px 24px;display:flex}.stat+.stat{border-left:1px solid var(--border-secondary)}.stat dd{letter-spacing:-.02em;font-size:28px;font-weight:700;line-height:1.3}.stat dt{color:var(--text-tertiary);margin-top:2px;font-size:13px}.about-block{margin-top:clamp(48px,7vw,80px)}.block-title{letter-spacing:-.02em;margin-bottom:16px;font-size:24px;font-weight:700;line-height:1.3}.values{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.value{border:1px solid var(--border-subtle);border-radius:var(--radius-3xl);background:var(--white);padding:24px}.value-num{color:var(--text-tertiary);margin-bottom:12px;font-size:13px;font-weight:600;display:block}.value h4{letter-spacing:-.01em;font-size:18px;font-weight:600;line-height:1.45}.value p{color:var(--text-secondary);margin-top:4px;font-size:15px}.about-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:16px;display:grid}.panel{border:1px solid var(--border-subtle);border-radius:var(--radius-3xl);background:var(--white);padding:24px}.skills{gap:20px;display:grid}.skill-group h4{color:var(--text-tertiary);margin-bottom:8px;font-size:13px;font-weight:600}.tags-large li{color:var(--text-primary);padding:6px 10px;font-size:15px}.timeline{padding-left:20px;position:relative}.timeline:before{content:"";background:var(--border-secondary);width:1px;position:absolute;top:8px;bottom:8px;left:3px}.timeline-item{position:relative}.timeline-item+.timeline-item{margin-top:20px}.timeline-item:before{content:"";background:var(--grey-300);border-radius:50%;width:7px;height:7px;position:absolute;top:7px;left:-20px}#about-timeline .timeline-item:first-child:before{background:var(--fill-primary)}.timeline-meta{color:var(--text-tertiary);flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:13px;display:flex}.timeline-type{background:var(--fill-secondary);height:22px;color:var(--text-secondary);border-radius:6px;align-items:center;padding:0 7px;font-size:12px;font-weight:600;display:inline-flex}.timeline-item h4{letter-spacing:-.01em;margin-top:4px;font-size:17px;font-weight:600;line-height:1.45}.timeline-item p:last-child{color:var(--text-secondary);margin-top:2px;font-size:15px}.timeline-more{border-top:1px solid var(--border-secondary);margin:20px -24px -24px}.timeline-more summary{min-height:52px;color:var(--text-secondary);cursor:pointer;border-radius:0 0 var(--radius-3xl) var(--radius-3xl);justify-content:space-between;align-items:center;padding:0 24px;font-size:15px;font-weight:600;list-style:none;display:flex}.timeline-more summary::-webkit-details-marker{display:none}.timeline-more summary:after{content:"";border-right:1.5px solid var(--grey-500);border-bottom:1.5px solid var(--grey-500);width:7px;height:7px;transition:transform var(--dur-base) var(--ease);margin-top:-4px;transform:rotate(45deg)}.timeline-more[open] summary:after{margin-top:4px;transform:rotate(-135deg)}.timeline-more>.timeline{margin:4px 24px 24px}.certs{padding-block:4px}.certs li{color:var(--text-primary);padding-block:14px;font-size:15px}.certs li+li{border-top:1px solid var(--border-secondary)}.contact-card{border:1px solid var(--border-secondary);border-radius:var(--radius-4xl);background:var(--white);padding:clamp(24px,4vw,40px)}.contact-label{color:var(--text-tertiary);font-size:15px;font-weight:600}.contact-email-row{flex-wrap:wrap;align-items:center;gap:12px 16px;margin-top:4px;display:flex}.contact-email{letter-spacing:-.02em;overflow-wrap:anywhere;transition:color var(--dur-base) var(--ease);font-size:clamp(28px,4.6vw,40px);font-weight:700;line-height:1.25;text-decoration:none}.contact-links{border-top:1px solid var(--border-secondary);margin-top:24px}.contact-link{border-bottom:1px solid var(--border-secondary);min-height:60px;color:var(--text-primary);justify-content:space-between;align-items:center;gap:14px;padding-block:14px;font-size:17px;font-weight:600;text-decoration:none;display:flex}.contact-links li:last-child .contact-link{border-bottom:0;padding-bottom:0}.contact-link .arrow{color:var(--grey-500);transition:transform var(--dur-base) var(--ease)}@media (hover:hover){.contact-email:hover{text-underline-offset:6px;text-decoration:underline;text-decoration-thickness:2px}.contact-link:hover .arrow{transform:translate(2px,-2px)}}.footer{width:calc(100% - 2 * var(--gutter));max-width:calc(var(--content) - 2 * var(--gutter));padding-block:28px calc(28px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border-secondary);color:var(--text-tertiary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-inline:auto;font-size:13px;display:flex}.footer a{align-items:center;min-height:44px;text-decoration:none;display:inline-flex}@media (hover:hover){.footer a:hover{color:var(--text-primary)}}.toast{left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:950;border-radius:var(--radius-l);background:var(--fill-primary);max-width:calc(100% - 32px);box-shadow:var(--shadow-toast);color:var(--text-alt);opacity:0;pointer-events:none;transition:opacity var(--dur-base) var(--ease), transform var(--dur-slow) var(--ease-out);padding:14px 20px;font-size:15px;font-weight:600;position:fixed;transform:translate(-50%,12px)}.toast.is-visible{opacity:1;transform:translate(-50%)}.motion-off *,.motion-off :before,.motion-off :after{transition-duration:.001ms!important;transition-delay:0s!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.motion-off .motion-toggle,.motion-off .motion-toggle *{transition-duration:var(--dur-base)!important}@media (width<=1024px){.projects{grid-template-columns:repeat(2,minmax(0,1fr))}.project,.project.is-featured{grid-column:span 1}.values{grid-template-columns:1fr}.value{grid-template-columns:36px 1fr;column-gap:8px;display:grid}.value-num{grid-row:span 2;margin:4px 0 0}.value p{margin-top:2px}}@media (width<=860px){.nav-inner{gap:8px}.menu-button{display:block}.nav-menu{height:auto;padding:4px var(--gutter) 12px;background:var(--white);border-bottom:1px solid var(--border-secondary);box-shadow:var(--shadow-2);visibility:hidden;opacity:0;transition:opacity var(--dur-base) var(--ease), transform var(--dur-base) var(--ease), visibility 0s var(--dur-base);margin:0;position:absolute;top:100%;left:0;right:0;transform:translateY(-8px)}.menu-open .nav-menu{visibility:visible;opacity:1;transition:opacity var(--dur-base) var(--ease), transform var(--dur-base) var(--ease), visibility 0s;transform:none}.nav-menu ul{flex-direction:column;gap:0}.nav-menu a{border-bottom:1px solid var(--border-secondary);height:auto;min-height:52px;padding:14px 0;font-size:17px;font-weight:500}.nav-menu li:last-child a{border-bottom:0}.nav-menu a[aria-current=true]{font-weight:700}.nav-menu a[aria-current=true]:after{border-radius:50%;width:6px;height:6px;inset:50% 4px auto auto;transform:translateY(-50%)}.nav-actions{margin-left:auto}.about-intro,.about-grid{grid-template-columns:1fr}.about-photo{width:100%;max-width:420px}}@media (width<=767px){.hero{align-items:flex-end;padding-bottom:130px}.shape-ring{width:96px;height:96px;top:24%;right:-24px}.chip-a{top:24%;right:auto;left:var(--gutter)}.chip-b,.chip-c,.shape-square,.shape-dot{display:none}.hero-cta .btn{flex:auto}.projects{grid-template-columns:1fr}.section-desc{font-size:15px}.stat{padding:16px}.stat dd{font-size:22px}.detail-head,.detail-facts,.detail-note,.detail>.tags,.detail-section,.detail-links{margin-inline:20px}.detail-title{font-size:24px}}@media (width<=480px){.detail-facts>div{grid-template-columns:1fr;gap:2px}.motion-toggle-label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.detail-links .btn{flex:100%}}.section{scroll-margin-top:calc(var(--nav-h) - 1px)}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}
