:root{color-scheme:dark;--bg: #141715;--bg-soft: #1a1f1d;--panel: #202622;--panel-strong: #eef1e8;--ink: #f0f2ea;--ink-muted: #aab2aa;--line: #343c37;--line-strong: #4b554d;--accent: #86b89a;--accent-strong: #d79b5a;--accent-ink: #121614;--stage-line: rgba(238, 241, 232, .2);--shadow: rgba(8, 11, 9, .32);--sticky-anchor-offset: 7.5rem;font-family:Outfit,Geist,Satoshi,Avenir,Montserrat,system-ui,sans-serif;font-size:16px;line-height:1.5;background:var(--bg);color:var(--ink);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}:root[data-theme=light]{color-scheme:light;--bg: #f4f6f1;--bg-soft: #e9eee8;--panel: #ffffff;--panel-strong: #171b18;--ink: #171b18;--ink-muted: #5f6962;--line: #d4dbd2;--line-strong: #aeb9ad;--accent: #477b62;--accent-strong: #b86535;--accent-ink: #f8faf5;--stage-line: rgba(23, 27, 24, .18);--shadow: rgba(41, 47, 42, .14)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--sticky-anchor-offset)}body{min-width:320px;min-height:100dvh;margin:0;overflow-x:hidden;background:linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(180deg,rgba(255,255,255,.025) 1px,transparent 1px),var(--bg);background-size:48px 48px,48px 48px,auto}:root[data-theme=light] body{background:linear-gradient(90deg,rgba(21,28,24,.045) 1px,transparent 1px),linear-gradient(180deg,rgba(21,28,24,.035) 1px,transparent 1px),var(--bg)}button,a{color:inherit}a{text-decoration:none}button{font:inherit}::selection{background:var(--accent);color:var(--accent-ink)}#app{position:relative;isolation:isolate}.site-header{position:sticky;top:0;z-index:4;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:1rem;width:min(1180px,calc(100% - 2rem));margin:0 auto;padding:1rem 0;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}main,.site-footer{position:relative;z-index:1}main section[id]{scroll-margin-top:var(--sticky-anchor-offset)}.brand{display:inline-flex;align-items:center;gap:.75rem;min-width:0}.brand-mark{display:grid;width:2.45rem;height:2.45rem;place-items:center;border:1px solid var(--line-strong);background:var(--panel-strong);color:var(--bg)}:root[data-theme=light] .brand-mark{color:var(--panel)}.brand-mark svg{display:block;width:100%;height:100%}.brand-icon-frame,.brand-icon-line,.brand-icon-accent,.brand-icon-wave{fill:none;vector-effect:non-scaling-stroke}.brand-icon-frame{stroke:currentColor;stroke-width:1.6}.brand-icon-line{stroke:currentColor;stroke-linecap:square;stroke-linejoin:round;stroke-width:4.2}.brand-icon-accent{stroke:var(--accent-strong);stroke-linecap:square;stroke-width:2.2}.brand-icon-wave{stroke:var(--accent);stroke-linecap:square;stroke-linejoin:round;stroke-width:1.9}.brand-icon-pixel{fill:var(--accent-strong)}.brand-copy{display:grid;min-width:0}.brand-copy span{font-weight:760}.brand-copy small{overflow:hidden;color:var(--ink-muted);font-size:.74rem;text-overflow:ellipsis;white-space:nowrap}.site-nav{display:flex;align-items:center;gap:.35rem;padding:.35rem;border:1px solid var(--line);background:color-mix(in srgb,var(--bg-soft) 78%,transparent)}.site-nav a,.language-toggle button,.theme-toggle,.button{min-height:2.35rem;border:1px solid transparent;transition:transform .22s cubic-bezier(.16,1,.3,1),border-color .22s cubic-bezier(.16,1,.3,1),background .22s cubic-bezier(.16,1,.3,1),color .22s cubic-bezier(.16,1,.3,1)}.site-nav a{display:inline-grid;place-items:center;padding:0 .85rem;color:var(--ink-muted);font-size:.86rem}.site-nav a:hover,.site-nav a[aria-current=true]{background:var(--panel);color:var(--ink)}.header-controls{display:flex;align-items:center;gap:.45rem}.language-toggle{display:grid;grid-template-columns:repeat(2,minmax(2.35rem,1fr));gap:.25rem;padding:.25rem;border:1px solid var(--line);background:color-mix(in srgb,var(--bg-soft) 78%,transparent)}.language-toggle button{display:grid;place-items:center;min-width:2.35rem;padding:0 .55rem;background:transparent;color:var(--ink-muted);cursor:pointer;font-family:Geist Mono,SFMono-Regular,Consolas,monospace;font-size:.72rem}.language-toggle button:hover,.language-toggle button[aria-pressed=true]{background:var(--panel);color:var(--ink)}.theme-toggle{display:inline-grid;min-width:4.4rem;place-items:center;border-color:var(--line);background:var(--panel);color:var(--ink);cursor:pointer}.site-nav a:active,.language-toggle button:active,.theme-toggle:active,.button:active{transform:translateY(1px) scale(.99)}.section-shell{width:min(1180px,calc(100% - 2rem));margin:0 auto}.hero{display:grid;grid-template-columns:minmax(0,.92fr) minmax(22rem,1.08fr);align-items:center;gap:4rem;min-height:calc(100dvh - 5rem);padding:6rem 0 4rem}.hero>*,.split-section>*,.tech-section>*,.contact>*{min-width:0}.hero-copy{max-width:42rem}.eyebrow,.status-label,.project-type{margin:0;color:var(--accent-strong);font-family:Geist Mono,SFMono-Regular,Consolas,monospace;font-size:.74rem;font-weight:760;text-transform:uppercase}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:0}h1{max-width:11ch;margin-bottom:1.35rem;font-size:4.85rem;line-height:.95}:root[data-language=jp] h1{max-width:13ch;font-size:4.15rem;line-height:1.04}h2{margin-bottom:0;font-size:2.65rem;line-height:1.02}h3{margin-bottom:.55rem;font-size:1.25rem;line-height:1.18}.hero-lede{max-width:37rem;color:var(--ink-muted);font-size:1.08rem;line-height:1.8}.identity-strip{display:flex;flex-wrap:wrap;gap:.55rem;max-width:39rem;margin-top:1.4rem}.identity-strip span{display:inline-flex;align-items:center;min-height:2rem;padding:0 .7rem;border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 64%,transparent);color:var(--ink-muted);font-family:Geist Mono,SFMono-Regular,Consolas,monospace;font-size:.72rem}.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem}.button{display:inline-grid;min-width:9.5rem;place-items:center;padding:0 1.1rem;font-weight:760}.button.primary{border-color:var(--panel-strong);background:var(--panel-strong);color:var(--bg)}:root[data-theme=light] .button.primary{color:var(--panel)}.button.secondary{border-color:var(--line-strong);background:color-mix(in srgb,var(--panel) 70%,transparent);color:var(--ink)}.button:hover{transform:translateY(-2px)}.hero-panel{position:relative;overflow:hidden;min-height:30rem;border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in srgb,var(--panel) 82%,transparent),color-mix(in srgb,var(--bg-soft) 72%,transparent)),var(--panel);box-shadow:0 28px 80px -54px var(--shadow)}.hero-panel:before,.sprite-stage:after{position:absolute;pointer-events:none;content:""}.hero-panel:before{top:0;right:0;bottom:0;left:0;border:1px solid rgba(255,255,255,.08)}.panel-topline,.panel-bottomline{display:flex;justify-content:space-between;gap:1rem;padding:1rem;color:var(--ink-muted);font-family:Geist Mono,SFMono-Regular,Consolas,monospace;font-size:.72rem;text-transform:uppercase}.panel-topline span,.panel-bottomline span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sprite-stage{position:relative;overflow:hidden;height:23rem;margin:0 1rem;border:1px solid var(--line);background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 16%,transparent) 1px,transparent 1px),linear-gradient(180deg,color-mix(in srgb,var(--accent-strong) 12%,transparent) 1px,transparent 1px),radial-gradient(circle at 36% 20%,color-mix(in srgb,var(--accent) 20%,transparent),transparent 32%),color-mix(in srgb,var(--bg) 86%,var(--panel));background-size:32px 32px,32px 32px,auto,auto}.sprite-stage:after{inset:auto 0 0;height:5.5rem;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--bg) 58%,transparent))}#heroSpriteCanvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.route-node{position:absolute;width:.62rem;height:.62rem;border:1px solid var(--accent);background:var(--panel)}.node-a{left:16%;top:68%}.node-b{left:55%;top:22%}.node-c{right:12%;top:51%}.status-band{display:grid;grid-template-columns:1fr 1.25fr .74fr;gap:0;border-block:1px solid var(--line)}.status-band>div{padding:1.4rem 1.5rem;border-right:1px solid var(--line)}.status-band>div:first-child{padding-left:0}.status-band>div:last-child{border-right:0}.status-band strong{display:block;margin-top:.45rem;font-size:1rem;line-height:1.55}.split-section,.projects,.tech-section,.contact{padding:7rem 0}.split-section{display:grid;grid-template-columns:.68fr 1fr;gap:5rem}.section-heading{max-width:31rem}.section-lede{margin-top:1rem;color:var(--ink-muted);line-height:1.75}.section-heading .eyebrow,.tech-section .eyebrow,.contact .eyebrow{margin-bottom:.8rem}.timeline{display:grid;gap:0;border-top:1px solid var(--line)}.timeline-item{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:2rem;padding:1.6rem 0;border-bottom:1px solid var(--line)}.timeline-item>p{color:var(--accent-strong);font-family:Geist Mono,SFMono-Regular,Consolas,monospace;font-size:.78rem;font-weight:760;text-transform:uppercase}.timeline-item div p,.project-card p{color:var(--ink-muted);line-height:1.75}.project-grid{display:grid;grid-template-columns:1.1fr .9fr;grid-auto-rows:minmax(17rem,auto);gap:1rem;margin-top:2.5rem}.project-card{position:relative;display:grid;align-content:space-between;min-height:17rem;padding:1.65rem 1.35rem 1.35rem;border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 82%,transparent);box-shadow:0 22px 64px -56px var(--shadow)}.project-card:first-child{grid-row:span 2;min-height:35rem}.project-card:before{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border-top:2px solid color-mix(in srgb,var(--accent) 64%,transparent);content:""}.project-card h3{margin-top:.65rem;font-size:2rem}.project-card-top{display:flex;align-items:start;justify-content:space-between;gap:1rem}.project-status{flex:0 0 auto;color:var(--accent);font-family:Geist Mono,SFMono-Regular,Consolas,monospace;font-size:.68rem;font-weight:760;text-transform:uppercase}.card-tags{display:flex;flex-wrap:wrap;gap:.55rem;margin:1.25rem 0}.card-tags span{display:inline-flex;align-items:center;min-height:1.8rem;padding:0 .58rem;border:1px solid var(--line);color:var(--ink-muted);font-family:Geist Mono,SFMono-Regular,Consolas,monospace;font-size:.68rem}.project-card-footer{display:flex;align-items:end;justify-content:space-between;gap:1rem}.project-card-footer>span{display:block;color:var(--ink-muted);font-family:Geist Mono,SFMono-Regular,Consolas,monospace;font-size:.76rem}.project-card-footer a{display:inline-grid;min-width:4.4rem;min-height:2rem;place-items:center;border:1px solid var(--line-strong);color:var(--ink);font-size:.82rem;font-weight:760}.project-card-footer a:hover{background:var(--panel-strong);color:var(--bg)}.tech-section{display:grid;grid-template-columns:.65fr 1fr;gap:4rem;border-block:1px solid var(--line)}.stack-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.stack-card{display:grid;align-content:start;gap:1rem;min-height:15rem;padding:1.2rem;border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 72%,transparent)}.stack-card p{color:var(--ink-muted);line-height:1.7}.tech-grid{display:flex;flex-wrap:wrap;gap:.7rem;align-content:start}.tech-grid span{display:inline-flex;align-items:center;min-height:2.2rem;padding:0 .85rem;border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 72%,transparent);color:var(--ink-muted);font-family:Geist Mono,SFMono-Regular,Consolas,monospace;font-size:.78rem}.contact{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:2rem}.contact h2{max-width:13ch}.site-footer{display:flex;justify-content:space-between;gap:1rem;padding:0 0 13rem;color:var(--ink-muted);font-family:Geist Mono,SFMono-Regular,Consolas,monospace;font-size:.74rem;text-transform:uppercase}.companion-canvas{position:fixed;right:0;bottom:0;left:0;z-index:0;width:100%;height:10.5rem;pointer-events:none}.reveal{transform:translate3d(0,20px,0);opacity:0;transition:transform .68s cubic-bezier(.16,1,.3,1),opacity .68s cubic-bezier(.16,1,.3,1)}.project-card.reveal{transition-delay:calc(var(--index, 0) * 90ms)}.reveal.is-visible{transform:translateZ(0);opacity:1}.sprites-unavailable .hero-panel:after{position:absolute;inset:50% 1.5rem auto;color:var(--ink-muted);content:"Sprite assets unavailable";text-align:center}@media(max-width:940px){.site-header{grid-template-columns:1fr auto}.site-nav{grid-column:1 / -1;justify-content:space-between;overflow-x:auto}.site-nav a{flex:1;min-width:4.6rem}.hero,.split-section,.tech-section{grid-template-columns:1fr;gap:2.5rem}.stack-grid{grid-template-columns:1fr}.hero{min-height:auto;padding-top:3.5rem}h1{max-width:12ch;font-size:3.6rem}:root[data-language=jp] h1{max-width:11ch;font-size:3.05rem}h2{font-size:2.2rem}.status-band{grid-template-columns:1fr}.status-band>div,.status-band>div:first-child{padding:1.2rem 0;border-right:0;border-bottom:1px solid var(--line)}.status-band>div:last-child{border-bottom:0}.project-grid{grid-template-columns:1fr}.project-card:first-child{grid-row:auto;min-height:20rem}.contact{grid-template-columns:1fr;align-items:start}.site-footer{padding-bottom:7.5rem}.companion-canvas{position:fixed!important;right:auto!important;bottom:max(.7rem,env(safe-area-inset-bottom))!important;left:50%!important;z-index:2147483000!important;display:block!important;width:min(100vw - 1rem,34rem);height:7rem;border:0;background:transparent;box-shadow:none;transform:translate3d(-50%,0,0);opacity:1!important}}@media(max-width:620px){.section-shell,.site-header{width:min(100% - 1rem,1180px)}.brand-copy small{display:none}.site-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));width:100%;overflow:hidden}.site-nav a{min-width:0;padding:0 .25rem;font-size:.7rem}.theme-toggle{min-width:3.8rem}.hero{padding-top:2.4rem}h1{font-size:2.75rem}:root[data-language=jp] h1{max-width:100%;font-size:2.12rem;line-height:1.12}h2{font-size:1.9rem}.hero-panel{min-height:25rem}.sprite-stage{height:18.5rem}.panel-topline,.panel-bottomline{font-size:.65rem}.split-section,.projects,.tech-section,.contact{padding:4.8rem 0}.timeline-item{grid-template-columns:1fr;gap:.65rem}.project-card-footer{display:grid;align-items:start}.site-footer{display:grid;padding-bottom:8.25rem}.companion-canvas{height:6.35rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:1ms!important}.reveal{transform:none;opacity:1}}
