:root{--bg:#f4f6f8;--ink:#122033;--muted:#5b6b7c;--line:#d5dde6;--accent:#1e3a5f;--accent-soft:#2f5a8a;--online:#22a06b;--heat-0:#ebedf0;--heat-1:#9be9a8;--heat-2:#40c463;--heat-3:#30a14e;--heat-4:#216e39;--pixel:#1e3a5f38;--font-sans:"Sora", "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--max:42rem;--ease-theme:cubic-bezier(.4, 0, .2, 1);color-scheme:light}html[data-theme=dark]{--bg:#0b1220;--ink:#e8eef6;--muted:#93a4b8;--line:#243247;--accent:#8eb6e8;--accent-soft:#9ec0ea;--online:#3dd68c;--heat-0:#161f2e;--heat-1:#1b4332;--heat-2:#2d6a4f;--heat-3:#40916c;--heat-4:#52b788;--pixel:#9ec0ea47;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}html.theme-ready,html.theme-ready body,html.theme-ready .page,html.theme-ready .theme-toggle,html.theme-ready .photo-wrap,html.theme-ready .project-list a,html.theme-ready .project-list .project-static,html.theme-ready .heat-cell,html.theme-ready .online-dot{transition:background-color .42s var(--ease-theme), color .42s var(--ease-theme), border-color .42s var(--ease-theme), box-shadow .42s var(--ease-theme), fill .42s var(--ease-theme), stroke .42s var(--ease-theme)}body{isolation:isolate;min-height:100dvh;font-family:var(--font-sans);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;position:relative;overflow-x:hidden}.pixel-field{z-index:-1;pointer-events:none;opacity:.55;width:100%;height:100%;position:fixed;inset:0}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}::selection{background:color-mix(in srgb, var(--accent) 28%, transparent)}.theme-toggle{width:2rem;height:2rem;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--ink);outline:none}.theme-toggle svg{width:1.05rem;height:1.05rem}.theme-toggle .icon-moon,html[data-theme=dark] .theme-toggle .icon-sun{display:none}html[data-theme=dark] .theme-toggle .icon-moon{display:block}.page{width:min(100% - 1.5rem, var(--max));text-align:center;margin:0 auto;padding:1.15rem 0 1.25rem}.topbar{justify-content:space-between;align-items:center;gap:1rem;width:100%;min-height:2rem;margin:0 0 1.35rem;display:flex}.identity{flex-direction:column;align-items:center;gap:.85rem;display:flex}.photo-wrap{width:8rem;height:8rem;box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 8%, transparent);border-radius:999px;animation:.9s cubic-bezier(.22,1,.36,1) both photo-in;position:relative;overflow:hidden}.photo-wrap img{object-fit:cover;object-position:center 12%;transform-origin:50% 18%;width:100%;height:100%;transform:scale(1.28)}.location{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);text-align:left;align-items:center;gap:.45rem;margin:0;font-size:.72rem;display:inline-flex}.online-dot{background:var(--online);width:.45rem;height:.45rem;box-shadow:0 0 0 0 color-mix(in srgb, var(--online) 45%, transparent);border-radius:999px;flex-shrink:0;animation:2.2s infinite pulse}.name{letter-spacing:-.04em;margin:0;font-size:clamp(1.75rem,5vw,2.35rem);font-weight:600;line-height:1.05;animation:.75s .12s both rise}.title{color:var(--accent-soft);margin:0;font-size:.98rem;font-weight:500;animation:.75s .18s both rise}.bio{max-width:100%;color:var(--muted);margin:0;font-size:.92rem;line-height:1.55;animation:.8s .24s both rise}.bio+.bio{margin-top:.1rem}.socials{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:center;gap:.35rem .55rem;margin:1.15rem 0 .35rem;padding:.85rem 0;list-style:none;animation:.8s .32s both rise;display:flex}.socials a{width:1.75rem;height:1.75rem;color:var(--ink);justify-content:center;align-items:center;transition:color .16s;display:inline-flex}.socials a:hover,.socials a:focus-visible{color:var(--accent-soft);outline:none}.socials a:hover svg,.socials a:focus-visible svg{transform:scale(1.08)}.socials svg{width:1.05rem;height:1.05rem;transition:transform .16s;display:block}.social-label{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.section{text-align:left;margin-top:2.15rem;animation:.85s both rise}.section:first-of-type{animation-delay:.4s}.section:nth-of-type(2){animation-delay:.5s}.section-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 .65rem;font-size:.7rem}.project-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.project-list li{border-bottom:1px solid var(--line)}.project-list a,.project-list .project-static{justify-content:space-between;align-items:baseline;gap:.75rem 1rem;padding:.7rem .1rem;transition:background .16s,padding-left .16s,color .16s;display:flex}.project-main{text-align:left;flex-direction:column;align-items:flex-start;gap:.15rem;min-width:0;display:flex}.project-name-row{flex-wrap:wrap;align-items:baseline;gap:.35rem .5rem;display:flex}.project-list a .project-name{text-underline-offset:.18em;text-decoration:underline #0000;transition:text-decoration-color .16s,color .16s}.project-list a:hover,.project-list a:focus-visible{background:color-mix(in srgb, var(--accent) 8%, transparent);outline:none;padding-left:.35rem}.project-list a:hover .project-name,.project-list a:focus-visible .project-name{color:var(--accent-soft);text-decoration-color:color-mix(in srgb, var(--accent-soft) 55%, transparent)}.project-name{letter-spacing:-.02em;font-size:.95rem;font-weight:560}.project-industry{font-family:var(--font-mono);color:var(--muted);font-size:.72rem;line-height:1.35}.project-industry:before{content:"·";color:color-mix(in srgb, var(--muted) 70%, transparent);margin-right:.5rem}.project-role{font-family:var(--font-mono);color:var(--muted);font-size:.72rem;line-height:1.35}.project-years{font-family:var(--font-mono);color:var(--muted);text-align:right;white-space:nowrap;flex-shrink:0;font-size:.72rem;line-height:1.35}.heatmap-wrap{width:100%;overflow:visible}.heatmap{gap:.45rem;width:100%;display:grid}.heatmap-months{height:auto;min-height:1rem;font-family:var(--font-mono);color:var(--muted);justify-content:space-between;align-items:baseline;gap:.35rem;font-size:.68rem;line-height:1;display:flex}.heatmap-months span{white-space:nowrap;letter-spacing:.02em;flex:none;position:static;overflow:visible;transform:none}.heatmap-grid{grid-template-columns:repeat(var(--weeks), minmax(0, 1fr));grid-template-rows:repeat(7,auto);grid-auto-flow:column;gap:3px;width:100%;display:grid}.heat-cell{aspect-ratio:1;background-color:var(--heat-0);border-radius:2px;width:100%;min-width:0;animation:.45s both cell-in}.heat-cell[data-level="1"]{background-color:var(--heat-1)}.heat-cell[data-level="2"]{background-color:var(--heat-2)}.heat-cell[data-level="3"]{background-color:var(--heat-3)}.heat-cell[data-level="4"]{background-color:var(--heat-4)}.heatmap-meta{font-family:var(--font-mono);color:var(--muted);text-align:left;margin:.45rem 0 0;font-size:.68rem}@media (width<=560px){.heatmap-months{gap:.2rem;min-height:.9rem;font-size:.58rem}.heatmap-grid{gap:2px}}.footer{border-top:1px solid var(--line);font-family:var(--font-mono);color:var(--muted);text-align:center;margin-top:1.35rem;padding-top:.75rem;padding-bottom:0;font-size:.68rem}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes photo-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes cell-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--online) 40%, transparent)}50%{box-shadow:0 0 0 .35rem color-mix(in srgb, var(--online) 0%, transparent)}}::view-transition-old(root),::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.pixel-field{display:none}}@media (width<=560px){.project-list a,.project-list .project-static{flex-direction:column;align-items:flex-start;gap:.2rem;padding:.55rem .1rem}.project-years{text-align:left}}@media (width<=480px){.page{padding-top:1rem}.photo-wrap{width:7.25rem;height:7.25rem}}
