:root{--acc: #d7ff3a;--bg: #0a0a0b;--surface: #111113;--surface-2: #0d0d0f;--fg: #ededea;--text: #c9c9cc;--muted: #a9a9ae;--dim: #8a8a90;--line: #232326;--line-2: #2a2a2e;--line-3: #3a3a3f;--sans: "Geist", system-ui, sans-serif;--mono: "Geist Mono", ui-monospace, monospace;--serif: "Instrument Serif", serif;--ease: cubic-bezier(.16, .84, .24, 1);--gap: clamp(4.5rem, 8vw, 7rem);--head-gap: 1.25rem}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;font-size:16px}@media (min-width: 1024px){html{font-size:clamp(13px,calc(100vw / 118),18px)}}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased}a{color:var(--fg);text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:left}h1,h2,h3,p,ul,dl{margin:0}ul{list-style:none;padding:0}::selection{background:var(--acc);color:var(--bg)}:focus-visible{outline:2px solid var(--acc);outline-offset:.25rem}em{font-family:var(--serif);font-style:italic;font-weight:400;color:var(--acc)}.acc{color:var(--acc)}.app{--mx: 60%;--my: 12%;position:relative;min-height:100vh;overflow:hidden}.spot{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(35rem circle at var(--mx) var(--my),color-mix(in srgb,var(--acc) 9%,transparent),transparent 70%)}.content{position:relative;z-index:1}.wrap{max-width:97.5rem;margin:0 auto;padding:0 clamp(1rem,2.6vw,2.5rem)}.section{padding:var(--gap) 0 0}.hero+.section{padding-top:0}.section-title{margin:0;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit}.section-head{display:flex;justify-content:space-between;gap:1rem;padding-top:var(--head-gap);border-top:1px solid var(--line);font-family:var(--mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.exp-place{display:flex;flex-wrap:wrap;align-items:center}.exp-place .link{min-height:44px;gap:.5rem;color:var(--fg)}.exp-place .link:hover{gap:.75rem;color:var(--acc)}.mono-label{font-family:var(--mono);font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.chips{display:flex;flex-wrap:wrap;gap:.5rem}.chip{padding:.375rem .75rem;border:1px solid var(--line-2);border-radius:999px;font-family:var(--mono);font-size:.75rem;color:var(--text)}.link{display:inline-flex;align-items:center;gap:.625rem;min-height:2.75rem;transition:gap .3s,color .3s}.link:hover{gap:1rem;color:var(--acc)}.fade{opacity:0;animation:fadeIn 1s ease .55s forwards}.reveal{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em}.reveal>span{display:inline-block;transform:translateY(105%);animation:riseUp 1.15s var(--ease) forwards}.caret{display:inline-block;width:.5rem;height:.875rem;background:var(--acc);vertical-align:-2px;animation:blink 1.1s steps(1) infinite}@keyframes fadeIn{to{opacity:1}}@keyframes riseUp{to{transform:translateY(0)}}@keyframes blink{50%{opacity:0}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(.625rem)}}@keyframes marquee{to{transform:translate(-50%)}}.header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 2rem;padding:1.5rem 0}.brand{display:flex;align-items:center;gap:.75rem;min-height:2.75rem;font-size:.9375rem;font-weight:500;letter-spacing:-.01em}.brand-mark{width:2.25rem;height:2.25rem;display:flex;align-items:center;justify-content:center;border:1px solid var(--line-3);border-radius:50%;font-family:var(--serif);font-style:italic;font-size:1.0625rem;letter-spacing:-.03em;color:#fff}.nav{display:flex;flex-wrap:wrap;gap:0 1.75rem;font-size:.875rem}.nav a{padding:.75rem 0;color:var(--dim);transition:color .25s}.nav a:hover{color:var(--fg)}.hero{position:relative;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:center;gap:clamp(2.5rem,6vw,5.5rem);min-height:calc(100vh - 6rem);min-height:calc(100svh - 6rem);padding:1.5rem 0 7.5rem}.hero-text{display:flex;flex-direction:column;align-items:flex-start;min-width:0}.hero-title{font-weight:300;font-size:clamp(3.25rem,7.8vw,7.5rem);line-height:.92;letter-spacing:-.055em}.hero-title em{letter-spacing:-.02em}.hero-role{display:flex;align-items:center;gap:1rem;margin-top:clamp(1.25rem,3vh,2rem);font-family:var(--mono);font-size:clamp(.75rem,1.05vw,.875rem);font-weight:500;letter-spacing:.26em;text-transform:uppercase;color:var(--acc);animation-delay:.35s}.hero-lead{max-width:50ch;margin-top:clamp(1.75rem,5vh,2.75rem);font-size:clamp(1.0625rem,1.45vw,1.25rem);line-height:1.6;color:var(--muted)}.hero-cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:clamp(1.75rem,5vh,2.5rem);animation-delay:.75s}.btn{display:inline-flex;align-items:center;gap:.625rem;min-height:3rem;padding:0 1.375rem;border:1px solid var(--line-3);border-radius:999px;font-size:.9375rem;font-weight:500;transition:background .3s,color .3s,border-color .3s,gap .3s}.btn:hover{gap:.875rem;border-color:var(--acc);color:var(--acc)}.btn-primary{background:var(--acc);border-color:var(--acc);color:var(--bg)}.btn-primary:hover{background:transparent;color:var(--acc)}.scroll-btn{position:absolute;left:50%;bottom:1.75rem;margin-left:-1.75rem;width:3.5rem;height:3.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--acc);color:var(--bg);animation:bounce 1.8s ease-in-out infinite;transition:box-shadow .3s}.scroll-btn:hover{color:var(--bg);box-shadow:0 0 0 .5rem color-mix(in srgb,var(--acc) 25%,transparent)}.to-top{position:fixed;right:clamp(1rem,2.6vw,2.5rem);bottom:1.75rem;z-index:50;width:3.5rem;height:3.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--acc);color:var(--bg);opacity:0;visibility:hidden;transform:translateY(1rem);transition:opacity .35s,transform .35s var(--ease),visibility 0s linear .35s,box-shadow .3s}.to-top.is-visible{opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s}.to-top:hover{color:var(--bg);box-shadow:0 0 0 .5rem color-mix(in srgb,var(--acc) 25%,transparent)}@media (max-width: 960px){.hero{grid-template-columns:minmax(0,1fr);min-height:0;gap:3.5rem;padding:1.5rem 0 7.5rem}}.code-window{justify-self:end;width:100%;max-width:48.75rem;min-width:0;overflow:hidden;background:var(--surface);border:1px solid var(--line-2);border-radius:.75rem;font-family:var(--mono);font-size:clamp(.7188rem,3.1vw,.8125rem);line-height:1.85;box-shadow:0 1.875rem 5rem -1.875rem #000000d9,0 0 5.625rem -2.8125rem color-mix(in srgb,var(--acc) 40%,transparent);transition:border-color .4s}.code-window:hover{border-color:var(--line-3)}.code-titlebar{display:flex;align-items:center;gap:.4375rem;padding:.6875rem .875rem;background:var(--surface-2);border-bottom:1px solid var(--line)}.code-titlebar:after{content:"";flex:0 0 2.75rem}.code-dot{width:.625rem;height:.625rem;border-radius:50%;background:var(--line-3);transition:background .3s}.code-window:hover .code-dot:nth-child(1){background:#ff5f57}.code-window:hover .code-dot:nth-child(2){background:#febc2e}.code-window:hover .code-dot:nth-child(3){background:#28c840}.code-title{flex:1;text-align:center;font-size:.7188rem;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.code-tabs{display:flex;background:var(--surface-2);border-bottom:1px solid var(--line);font-size:.75rem}.code-tab{display:flex;align-items:center;gap:.5rem;min-height:2.75rem;padding:0 1rem;border-top:2px solid transparent;border-right:1px solid var(--line);color:var(--dim);font-size:.75rem;transition:color .2s,background .2s}.code-tab:hover{color:var(--fg)}.code-tab.is-active{background:var(--surface);color:var(--fg);border-top-color:var(--acc);margin-bottom:-1px}.code-crumbs{display:flex;flex-wrap:wrap;gap:0 .5rem;padding:.4375rem 1rem;border-bottom:1px solid var(--line);font-size:.7188rem;color:var(--dim)}.code-crumbs span:last-child{color:var(--muted)}.code-body{padding:.75rem 0;overflow:hidden}.code-pane{color:var(--text);animation:paneIn .35s var(--ease)}.code-line{display:flex;min-height:1.85em;border-left:2px solid transparent;transition:background .15s}.code-line.is-active{background:#ffffff09;border-left-color:var(--acc)}.ln{flex:0 0 2.625rem;padding-right:1rem;text-align:right;color:#4a4a50;-webkit-user-select:none;user-select:none}.code-line.is-active .ln{color:var(--muted)}.src{flex:1;min-width:0;padding-right:1rem;white-space:pre-wrap;overflow-wrap:anywhere}.tok-kw{color:#7cc8ff}.tok-type{color:#9ae6b4}.tok-str{color:var(--acc)}.tok-num{color:#ffb36b}.code-output{padding:.625rem 1rem .875rem;background:var(--surface-2);border-top:1px solid var(--line);font-size:.7813rem;line-height:1.7}.code-output-label{color:#6c6c72}.code-status{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 1rem;padding:.375rem .875rem;border-top:1px solid var(--line);background:var(--surface-2);font-size:.6875rem;color:var(--dim)}.code-status>div{display:flex;flex-wrap:wrap;align-items:center;gap:2px .875rem}.code-branch{display:inline-flex;align-items:center;gap:.375rem;color:var(--acc)}@keyframes paneIn{0%{opacity:0;transform:translateY(.25rem)}}.exp-list{margin-top:var(--head-gap);border-top:1px solid var(--line)}.exp-item{border-bottom:1px solid var(--line)}.exp-row{width:100%;min-height:2.75rem;display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;padding:1.75rem .5rem;transition:background .35s}.exp-row:hover{background:var(--surface)}.exp-no{flex:0 0 2.5rem;font-family:var(--mono);font-size:.75rem;color:var(--dim)}.exp-role{flex:1 1 20rem;font-size:clamp(1.375rem,2.4vw,2rem);letter-spacing:-.025em}.exp-company{flex:1 1 11.25rem;font-size:1rem;color:var(--muted)}.exp-years{flex:0 0 9.375rem;font-family:var(--mono);font-size:.75rem;letter-spacing:.04em;color:var(--dim)}.exp-plus{flex:0 0 2rem;height:2rem;display:flex;align-items:center;justify-content:center;border:1px solid var(--line-3);border-radius:50%;transition:transform .5s var(--ease)}.exp-plus.is-open{transform:rotate(45deg)}.exp-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .6s var(--ease)}.exp-panel.is-open{grid-template-rows:1fr}.exp-panel-inner{min-height:0;overflow:hidden}.exp-detail{display:flex;flex-wrap:wrap;gap:1.5rem 4rem;padding:0 .5rem 2.25rem 4.5rem;opacity:0;transition:opacity .45s ease}.exp-panel.is-open .exp-detail{opacity:1}.exp-detail p,.exp-description{flex:1 1 26.25rem;max-width:40rem;font-size:1.0625rem;line-height:1.65;color:var(--muted)}.exp-description{padding-left:1.25rem;list-style:disc}.exp-description li+li{margin-top:.5rem}.exp-side{flex:1 1 15rem;display:flex;flex-direction:column;gap:.875rem}.proj-layout{display:flex;flex-wrap:wrap;align-items:flex-start;gap:3.5rem;margin-top:var(--head-gap)}.proj-list{flex:999 1 35rem;min-width:0;border-top:1px solid var(--line)}.proj-row{width:100%;display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1.5rem;padding:1.625rem 0;border-bottom:1px solid var(--line);opacity:.32;transition:opacity .35s,padding-left .45s var(--ease)}.proj-row.is-active{opacity:1}.proj-row:hover{padding-left:.875rem}.proj-no{flex:0 0 2rem;font-family:var(--mono);font-size:.75rem;color:var(--dim)}.proj-name{flex:1 1 13.75rem;font-size:clamp(2.375rem,5.2vw,4.75rem);font-weight:300;line-height:1;letter-spacing:-.05em}.proj-detail{flex:1 1 23.75rem;min-width:0}.proj-detail h3{margin-bottom:.625rem;font-size:1.875rem;font-weight:400;letter-spacing:-.03em}.proj-detail p{margin-bottom:1.25rem;font-size:1rem;line-height:1.6;color:var(--muted)}.proj-links{display:flex;flex-wrap:wrap;gap:.5rem 1.75rem;margin-top:1.75rem;font-size:.9375rem}.post{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.5rem 3rem;margin-top:var(--head-gap);padding:2.25rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);transition:background .35s,padding .45s var(--ease)}.post:hover{padding-left:1rem;padding-right:1rem;background:var(--surface)}.post:hover .post-cta{gap:1rem;color:var(--acc)}.post-text{flex:1 1 26.25rem;min-width:0}.post h3{font-size:clamp(1.75rem,3.6vw,3.375rem);font-weight:300;line-height:1.05;letter-spacing:-.04em}.post p{max-width:35rem;margin-top:1.25rem;font-size:1.0625rem;line-height:1.6;color:var(--muted)}.post-cta{flex:0 0 auto;font-size:.9375rem}.section-tech{padding-bottom:0}.marquees{display:flex;flex-direction:column;gap:.5rem;margin-top:1.25rem}.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}.marquee-track{display:flex;width:max-content;animation:marquee 50s linear infinite}.marquee-track.is-reverse{animation-direction:reverse;animation-duration:58s}.marquee:hover .marquee-track{animation-play-state:paused}.tech-word{display:flex;align-items:center;gap:3rem;padding-right:3rem;font-size:clamp(3.25rem,7.4vw,7rem);font-weight:500;line-height:1.12;letter-spacing:-.045em;white-space:nowrap;transition:color .25s,-webkit-text-stroke-color .25s}.tech-word svg{stroke:var(--acc)}.tech-word.is-outline{color:transparent;-webkit-text-stroke:1px #6c6c72}.tech-word:hover{color:var(--acc);-webkit-text-stroke-color:var(--acc)}.cert-list{margin-top:var(--head-gap);border-top:1px solid var(--line)}.cert-list li{border-bottom:1px solid var(--line)}.cert-row{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1.5rem;padding:1.375rem .5rem;font-size:clamp(1.0625rem,1.7vw,1.5rem);line-height:1.4;letter-spacing:-.02em;transition:background .35s,padding-left .45s var(--ease)}.cert-row:hover{padding-left:1.25rem;background:var(--surface)}.cert-view{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);transition:color .3s,gap .3s}.cert-row.is-clickable:hover .cert-view{gap:.75rem;color:var(--acc)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:clamp(1rem,4vw,3rem);background:#050506e0;-webkit-backdrop-filter:blur(.375rem);backdrop-filter:blur(.375rem);cursor:zoom-out;animation:fadeIn .25s ease forwards;opacity:0}.lightbox-img{max-width:100%;max-height:100%;object-fit:contain;border-radius:.375rem;background:#fff;box-shadow:0 1.875rem 5.625rem -1.25rem #000000e6;cursor:default}.lightbox-close{position:absolute;top:1rem;right:1rem;width:3rem;height:3rem;display:flex;align-items:center;justify-content:center;border:1px solid var(--line-3);border-radius:50%;background:var(--surface);color:var(--fg);font-size:1rem;text-align:center;transition:border-color .3s,color .3s}.lightbox-close:hover{border-color:var(--acc);color:var(--acc)}.section-contact{padding:clamp(6rem,11vw,10rem) 0 0}.contact-title{margin-top:3rem;font-size:clamp(2.875rem,7.6vw,7.5rem);font-weight:300;line-height:.94;letter-spacing:-.055em}.contact-title em{letter-spacing:-.02em}.mail{--mail-size: clamp(1.625rem, 4.6vw, 4.25rem);width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 1.5rem;margin-top:2rem;padding-bottom:1.25rem;border-bottom:1px solid var(--line-3)}.mail-link{display:inline-flex;align-items:center;min-height:44px;min-width:0;font-size:var(--mail-size);letter-spacing:-.035em;overflow-wrap:anywhere;transition:color .35s}.mail-link:hover{color:var(--acc)}.mail-pill{display:inline-flex;align-items:center;gap:.625rem;min-height:2.75rem;padding:0 1.125rem;border:1px solid var(--line-3);border-radius:999px;font-family:var(--mono);font-size:.75rem;letter-spacing:.06em;color:var(--text);transform:translateY(calc(var(--mail-size) * .08));transition:border-color .3s,color .3s}.mail-pill:hover{border-color:var(--acc);color:var(--acc)}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem 1.5rem;align-items:center;padding:0 0 calc(3.5rem - 22px);font-family:var(--mono);font-size:.75rem;letter-spacing:.04em;color:var(--dim)}.footer a{color:var(--dim);transition:color .3s}.footer a:hover{color:var(--acc)}.footer-links{display:flex;flex-wrap:wrap;gap:0 1.75rem;margin-left:auto;margin-right:max(0px,calc(4.5rem - max(0px,(100vw - 97.5rem) / 2)))}.footer-links a{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;font-size:.875rem;color:var(--muted)}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.reveal>span{transform:none;animation:none}.fade{opacity:1;animation:none}.scroll-btn,.marquee-track,.caret{animation:none}}@media (max-width: 720px){.exp-row{gap:6px 16px;padding:22px 4px}.exp-years{flex:1 1 auto}.exp-plus{margin-left:auto}.exp-detail{padding:0 4px 28px;gap:20px}.proj-name{flex-basis:100%}.cert-row{padding:18px 4px}}.exp-item:last-child{border-bottom:0}.proj-row:last-child{border-bottom:0}.post{border-bottom:0}.cert-list li:last-child{border-bottom:0}.tech-rule,.contact-rule{margin-top:var(--head-gap);border-top:1px solid var(--line)}@media (max-width: 720px){.footer-links{gap:0 .875rem;margin-right:4rem}}
