:root{--bg:#0a0a0a;--bg-elev:#111;--text:#ededed;--muted:#a1a1a1;--faint:#6b6b6b;--line:#1f1f1f;--accent:#ededed;--active:#22c55e;--radius:18px;--page:44rem}*,:before,:after{box-sizing:border-box}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;scroll-behavior:smooth}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--font-inter), var(--font-noto-sans-jp), ui-sans-serif, system-ui, sans-serif;font-feature-settings:"ss01" on, "cv11" on;letter-spacing:.01em;-webkit-font-smoothing:antialiased;margin:0;line-height:1.7}a{color:inherit;text-decoration:none}a:hover{color:#fff}.page{width:min(var(--page), calc(100% - 3rem));margin:0 auto}.site-header{z-index:50;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:saturate(1.2)blur(10px);backdrop-filter:saturate(1.2)blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0}.nav{justify-content:space-between;align-items:center;gap:1rem;height:3.5rem;display:flex}.nav-brand{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:-.02em;color:var(--text);font-size:.88rem;font-weight:500}.nav ul{gap:1.25rem;margin:0;padding:0;list-style:none;display:flex}.nav a{color:var(--faint);font-size:.88rem;font-weight:500;transition:color .15s}.nav a.is-current,.nav a:hover{color:var(--text)}main{padding:2.75rem 0 0}.hero{border-bottom:1px solid var(--line);padding-bottom:3.5rem}.avatar{object-fit:cover;border:1px solid var(--line);border-radius:28px;width:88px;height:88px;box-shadow:0 18px 40px #00000059}.handle{color:var(--faint);font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.04em;margin:1.4rem 0 .35rem;font-size:.88rem;font-weight:500}h1{letter-spacing:-.03em;margin:0;font-size:clamp(1.7rem,3vw,2.15rem);font-weight:550;line-height:1.25}.sep{color:var(--faint);font-weight:500}.lead{letter-spacing:-.02em;margin:1.15rem 0 .7rem;font-size:1.12rem;font-weight:500}.meta,.place{color:var(--muted);max-width:36rem;margin:0}.meta a{text-underline-offset:.22em;-webkit-text-decoration:underline #ffffff38;text-decoration:underline #ffffff38}.place{margin-top:.85rem;font-size:.92rem}.block{border-bottom:1px solid var(--line);padding:3.4rem 0}.label{color:var(--faint);letter-spacing:.08em;margin:0 0 .55rem;font-size:.78rem;font-weight:500}h2{letter-spacing:-.03em;margin:0 0 1.8rem;font-size:clamp(1.35rem,2.4vw,1.7rem);font-weight:550;line-height:1.3}h3{letter-spacing:-.02em;margin:0 0 .35rem;font-size:1.02rem;font-weight:600}.stack,.projects,.contact{margin:0;padding:0;list-style:none}.stack li{border-top:1px solid var(--line);grid-template-columns:1fr;gap:.85rem;padding:1.15rem 0;display:grid}.stack li:last-child{padding-bottom:0}.stack p,.projects p{color:var(--muted);margin:0}.projects{gap:.85rem;display:grid}.projects a{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);padding:1.15rem 1.2rem 1.05rem;transition:border-color .18s,transform .18s;display:block}.projects a:hover{border-color:#ffffff2e;transform:translateY(-1px)}.tag{color:var(--faint);letter-spacing:.04em;margin-top:.75rem;font-size:.78rem;font-weight:500;display:inline-block}.work-hero{padding-bottom:2rem}.work-hero h1{margin-top:1rem;font-size:clamp(1.5rem,2.8vw,1.9rem);font-weight:500}.work-hero .lead{color:var(--muted);max-width:34rem;margin:.75rem 0 0;font-size:.92rem;font-weight:400;line-height:1.7}.timeline{border-left:1px solid var(--line);margin:.5rem 0 0 .4rem;padding:.5rem 0 3.5rem;list-style:none}.block .timeline{padding-bottom:0}.timeline>li{padding:0 0 2.25rem 1.75rem;position:relative}.timeline>li:last-child{padding-bottom:0}.timeline-dot{background:var(--faint);width:10px;height:10px;box-shadow:0 0 0 4px var(--bg);border-radius:50%;position:absolute;top:7px;left:0;transform:translate(-50%)}.timeline-dot.is-active{background:var(--active)}.timeline-dot.is-active:after{content:"";background:var(--active);opacity:.6;border-radius:50%;animation:1.4s cubic-bezier(0,0,.2,1) infinite ping;position:absolute;inset:0}@keyframes ping{75%,to{opacity:0;transform:scale(2.15)}}.timeline-when{flex-wrap:wrap;align-items:center;gap:.25rem .75rem;display:flex}.timeline-when p{color:var(--faint);font-family:var(--font-mono), ui-monospace, monospace;margin:0;font-size:.75rem}.timeline-active{color:var(--active);letter-spacing:.04em;font-size:.72rem;font-weight:500}.timeline-title{flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;margin-top:.35rem;display:flex}.timeline-title h3{letter-spacing:-.02em;margin:0;font-size:1rem;font-weight:500}.timeline-title a{align-items:center;gap:.2rem;display:inline-flex}.ext-arrow{color:var(--faint);font-size:.85em;transition:color .15s,transform .15s}.timeline-title a:hover .ext-arrow{color:var(--text);transform:translate(1px,-1px)}.timeline-role{color:var(--muted);font-size:.88rem}.timeline-stack{color:var(--faint);font-family:var(--font-mono), ui-monospace, monospace;margin:.25rem 0 0;font-size:.75rem}.timeline-points{margin:.75rem 0 0;padding:0;list-style:none}.timeline-points li{color:var(--muted);gap:.625rem;margin:0 0 .35rem;font-size:.88rem;line-height:1.65;display:flex}.timeline-points li:last-child{margin-bottom:0}.timeline-points li>span:first-child{color:var(--faint);-webkit-user-select:none;user-select:none}.more{margin:1.6rem 0 0}.more a{color:var(--muted);text-underline-offset:.22em;font-size:.88rem;-webkit-text-decoration:underline #ffffff38;text-decoration:underline #ffffff38}.more a:hover{color:var(--text)}.contact li{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:1rem;padding:.95rem 0;display:flex}.contact a{text-underline-offset:.22em;-webkit-text-decoration:underline #ffffff38;text-decoration:underline #ffffff38}.foot{border-top:1px solid var(--line);color:var(--faint);margin-top:2.6rem;padding-top:1.4rem;padding-bottom:3rem;font-size:.85rem}.foot p{margin:0}@media (min-width:640px){.timeline{margin-left:.5rem}.timeline>li{padding-left:2.25rem}}@media (max-width:640px){.page{width:min(var(--page), calc(100% - 1.75rem))}main{padding-top:1.75rem}.contact li{flex-direction:column;gap:.2rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.projects a{transition:none}.timeline-dot.is-active:after{animation:none;display:none}.ext-arrow{transition:none}}
