﻿@font-face{font-family:"Geist";src:url("/fonts/Geist-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"Geist";src:url("/fonts/Geist-Medium.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:"Geist";src:url("/fonts/Geist-SemiBold.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:"Geist";src:url("/fonts/Geist-Bold.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:"Geist Mono";src:url("/fonts/GeistMono-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"Geist Mono";src:url("/fonts/GeistMono-Medium.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:"Geist Mono";src:url("/fonts/GeistMono-SemiBold.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}:root{--bg-primary: #06060f;--bg-secondary: #0c0c18;--bg-card: #101020;--bg-elevated: #161628;--bg-primary-alpha: rgba(6, 6, 15, 0.88);--bg-secondary-alpha: rgba(12, 12, 24, 0.85);--bg-card-alpha: rgba(16, 16, 32, 0.82);--text-primary: #e2e4e9;--text-secondary: #8a8d9a;--text-muted: #5a5d6e;--accent: #4a9eff;--accent-dim: rgba(74, 158, 255, 0.12);--accent-glow: rgba(74, 158, 255, 0.06);--border: #1a1a2e;--border-hover: #2a2a42;--grain-opacity: 0.035;--grid-opacity: 0.12;--badge-green: #4ade80;--badge-green-bg: rgba(74, 222, 128, 0.08);--badge-green-border: rgba(74, 222, 128, 0.2);--badge-amber: #fbbf24;--badge-amber-bg: rgba(251, 191, 36, 0.06);--badge-amber-border: rgba(251, 191, 36, 0.2);--badge-blue: #60a5fa;--badge-blue-bg: rgba(96, 165, 250, 0.06);--badge-blue-border: rgba(96, 165, 250, 0.2);color-scheme:dark}[data-theme=light]{--bg-primary: #f8f7f4;--bg-secondary: #efeeeb;--bg-card: #ffffff;--bg-elevated: #ffffff;--bg-primary-alpha: rgba(248, 247, 244, 0.88);--bg-secondary-alpha: rgba(239, 238, 235, 0.85);--bg-card-alpha: rgba(255, 255, 255, 0.82);--text-primary: #1a1a2e;--text-secondary: #4a4d5e;--text-muted: #7a7d8e;--accent: #2563eb;--accent-dim: rgba(37, 99, 235, 0.08);--accent-glow: rgba(37, 99, 235, 0.04);--border: #e0ddd8;--border-hover: #c8c5be;--grain-opacity: 0.018;--grid-opacity: 0.06;--badge-green: #16a34a;--badge-green-bg: rgba(22, 163, 74, 0.06);--badge-green-border: rgba(22, 163, 74, 0.2);--badge-amber: #d97706;--badge-amber-bg: rgba(217, 119, 6, 0.06);--badge-amber-border: rgba(217, 119, 6, 0.2);--badge-blue: #2563eb;--badge-blue-bg: rgba(37, 99, 235, 0.06);--badge-blue-border: rgba(37, 99, 235, 0.2);color-scheme:light}*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{background:var(--bg-primary);transition:background .4s cubic-bezier(.4, 0, .2, 1)}body{background:rgba(0,0,0,0);color:var(--text-primary);font-family:"Geist","Noto Sans JP",-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.7;min-height:100vh;display:flex;flex-direction:column;transition:color .4s cubic-bezier(.4, 0, .2, 1);position:relative;z-index:1}a{color:var(--text-primary);text-decoration:none;transition:color .2s cubic-bezier(.4, 0, .2, 1)}a:hover{color:var(--accent)}*:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}.skip-link{position:absolute;top:-100%;left:1rem;z-index:200;padding:.75rem 1.25rem;background:var(--accent);color:#fff;font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.8rem;font-weight:600;border-radius:6px;transition:top .2s cubic-bezier(.16, 1, .3, 1)}.skip-link:focus{top:1rem;color:#fff}img{max-width:100%;height:auto}::selection{background:var(--accent-dim);color:var(--text-primary)}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}.hero__title-line{animation:none !important;opacity:1 !important;transform:none !important}[data-animate]{opacity:1 !important;transform:none !important}}.network-bg{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}.grain{position:fixed;top:-50%;left:-50%;width:200%;height:200%;pointer-events:none;z-index:9999;opacity:var(--grain-opacity);filter:url(#grain-filter);background:rgba(0,0,0,0)}.container{max-width:960px;margin:0 auto;padding:0 1.5rem}.container--wide{max-width:1100px}main{flex:1}[data-animate]{opacity:0;transform:translateY(24px);transition:opacity .7s cubic-bezier(.16, 1, .3, 1),transform .7s cubic-bezier(.16, 1, .3, 1)}[data-animate].is-visible{opacity:1;transform:translateY(0)}.site-header{border-bottom:1px solid var(--border);padding:1.15rem 0;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);background:var(--bg-primary-alpha);position:sticky;top:0;z-index:100}.site-header .container{display:flex;align-items:center;justify-content:space-between}.site-logo{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.82rem;letter-spacing:.03em;color:var(--text-primary);font-weight:500;transition:opacity .2s cubic-bezier(.4, 0, .2, 1)}.site-logo span{color:var(--accent)}.site-logo:hover{color:var(--text-primary);opacity:.65}.site-nav{display:flex;align-items:center;gap:.2rem}.site-nav__tools{display:inline-flex;align-items:center;gap:.5rem;margin-left:.35rem;padding-left:.75rem;border-left:1px solid var(--border);flex:0 0 auto}.site-nav a{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.75rem;letter-spacing:.02em;text-transform:lowercase;color:var(--text-muted);position:relative;padding:.4rem .6rem;border-radius:6px;transition:color .2s cubic-bezier(.4, 0, .2, 1),background .2s cubic-bezier(.4, 0, .2, 1)}.site-nav a:hover{color:var(--text-primary);background:var(--accent-glow)}.site-nav a.active{color:var(--text-primary)}.site-nav a.active::after{content:"";position:absolute;bottom:.1rem;left:.6rem;right:.6rem;height:1px;background:var(--accent)}.site-nav a.external::after{content:" ↗";font-size:.55rem;opacity:.3;position:static;background:none;height:auto}.theme-toggle{display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--border);border-radius:6px;padding:.35rem;cursor:pointer;color:var(--text-muted);flex:0 0 auto;transition:color .2s cubic-bezier(.4, 0, .2, 1),border-color .2s cubic-bezier(.4, 0, .2, 1)}.theme-toggle:hover{color:var(--text-primary);border-color:var(--border-hover)}.theme-toggle svg{width:15px;height:15px;display:block}.theme-toggle .icon-sun{display:none}.theme-toggle .icon-moon{display:block}[data-theme=light] .theme-toggle .icon-sun{display:block}[data-theme=light] .theme-toggle .icon-moon{display:none}.lang-switch{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:100px;overflow:hidden;flex:0 0 auto}.lang-switch__item{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.6rem;font-weight:500;letter-spacing:.06em;padding:.3rem .55rem;color:var(--text-muted);text-decoration:none;transition:color .2s cubic-bezier(.4, 0, .2, 1),background .2s cubic-bezier(.4, 0, .2, 1);line-height:1;cursor:pointer;user-select:none}.lang-switch__item:hover:not(.lang-switch__item--active){color:var(--text-primary);background:var(--accent-glow)}.lang-switch__item--active{color:var(--accent);background:var(--accent-dim);cursor:default}.ui-mode-switch{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:100px;overflow:hidden;flex:0 0 auto}.ui-mode-switch__item{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.58rem;font-weight:500;letter-spacing:.04em;padding:.3rem .48rem;color:var(--text-muted);background:rgba(0,0,0,0);border:none;cursor:pointer;transition:color .2s cubic-bezier(.4, 0, .2, 1),background .2s cubic-bezier(.4, 0, .2, 1);line-height:1}.ui-mode-switch__item:hover:not(.ui-mode-switch__item--active){color:var(--text-primary);background:var(--accent-glow)}.ui-mode-switch__item--active{color:var(--accent);background:var(--accent-dim);cursor:default}.hero{padding:10rem 0 7rem;position:relative;overflow:hidden}.hero__grid{position:absolute;inset:0;opacity:var(--grid-opacity);background-image:radial-gradient(circle, var(--text-muted) .5px, rgba(0,0,0,0) .5px);background-size:24px 24px;animation:gridDrift 45s linear infinite;pointer-events:none;z-index:0}@keyframes gridDrift{0%{transform:translate(0, 0)}50%{transform:translate(12px, 8px)}100%{transform:translate(0, 0)}}.hero__eyebrow{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.68rem;letter-spacing:.25em;text-transform:uppercase;color:var(--accent);margin-bottom:2rem;position:relative;z-index:1;display:flex;align-items:center;gap:.75rem}.hero__eyebrow::before{content:"";width:20px;height:1px;background:var(--accent);opacity:.6}.hero__title{font-family:"Geist","Noto Sans JP",-apple-system,BlinkMacSystemFont,sans-serif;font-size:clamp(1.85rem,5.2vw + .85rem,4rem);font-weight:500;line-height:1.14;margin-bottom:2rem;position:relative;z-index:1;letter-spacing:-.025em;display:flex;flex-direction:column;align-items:flex-start;gap:.08em;max-width:100%}.hero__title-line{display:block;width:100%;max-width:100%;white-space:normal;overflow-wrap:break-word;word-break:normal;line-height:1.12}.hero__title-line--1{animation:heroTitleLineIn .75s cubic-bezier(.16, 1, .3, 1) .05s both}.hero__title-line--2{animation:heroTitleLineIn .75s cubic-bezier(.16, 1, .3, 1) .22s both}@keyframes heroTitleLineIn{from{opacity:0;transform:translateY(.4em)}to{opacity:1;transform:translateY(0)}}.hero__description{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.92rem;color:var(--text-secondary);max-width:520px;line-height:1.65;position:relative;z-index:1}.hero__secondary{margin-top:3rem;font-size:.78rem;color:var(--text-muted);font-style:italic;position:relative;z-index:1;display:flex;align-items:center;gap:.65rem}.hero__secondary::before{content:"";width:14px;height:1px;background:var(--border-hover);flex-shrink:0}.section{padding:5.5rem 0;border-top:1px solid var(--border)}.section--alt{background:var(--bg-secondary-alpha)}.section__header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:2.5rem}.section__title{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-muted)}.section__link{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.7rem;color:var(--text-muted);transition:color .2s cubic-bezier(.4, 0, .2, 1)}.section__link:hover{color:var(--accent)}.focus-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:14px;overflow:hidden}.focus-card{background:var(--bg-primary-alpha);padding:2rem;transition:background .3s cubic-bezier(.4, 0, .2, 1)}.focus-card:hover{background:var(--bg-secondary-alpha)}.focus-card__icon{font-size:1.4rem;margin-bottom:1rem;line-height:1;opacity:.85}.focus-card__title{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.88rem;font-weight:500;margin-bottom:.5rem;letter-spacing:-.01em}.focus-card__desc{font-size:.82rem;color:var(--text-secondary);line-height:1.55}.projects-grid{display:flex;flex-direction:column;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:14px;overflow:hidden}.project-card{padding:2rem;transition:background .3s cubic-bezier(.4, 0, .2, 1),box-shadow .3s cubic-bezier(.4, 0, .2, 1);display:flex;flex-direction:column;background:var(--bg-primary-alpha);position:relative}.project-card:hover{background:var(--bg-secondary-alpha);box-shadow:inset 0 0 0 1px var(--accent-glow)}.project-card.project-card--hero{padding:2.5rem;background:var(--bg-secondary-alpha)}.project-card.project-card--hero .project-card__name{font-size:1.4rem;font-weight:500}.project-card.project-card--hero .project-card__summary{font-size:.92rem;max-width:540px}.project-card.project-card--hero:hover{background:var(--bg-card-alpha)}.project-card__meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.project-card__category{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.project-card__name{font-size:1.05rem;font-weight:600;margin-bottom:.4rem;letter-spacing:-.01em}.project-card__summary{font-size:.84rem;color:var(--text-secondary);line-height:1.55;flex:1}.project-card__tech{margin-top:1.25rem;display:flex;flex-wrap:wrap;gap:.3rem}.project-card__links{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--border);display:flex;gap:1.25rem}.project-card__links a{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.68rem;color:var(--text-muted)}.project-card__links a:hover{color:var(--accent)}.badge{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.56rem;letter-spacing:.06em;text-transform:uppercase;padding:.2rem .55rem;border:1px solid;border-radius:100px;display:inline-block}.badge--active{color:var(--badge-green);border-color:var(--badge-green-border);background:var(--badge-green-bg)}.badge--research{color:var(--badge-amber);border-color:var(--badge-amber-border);background:var(--badge-amber-bg)}.badge--wip{color:var(--badge-blue);border-color:var(--badge-blue-border);background:var(--badge-blue-bg)}.tag{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.62rem;color:var(--text-muted);padding:.15rem .5rem;border:1px solid var(--border);border-radius:100px;transition:border-color .2s cubic-bezier(.4, 0, .2, 1),color .2s cubic-bezier(.4, 0, .2, 1)}.tag:hover{border-color:var(--border-hover);color:var(--text-secondary)}.tags-grid{display:flex;flex-wrap:wrap;gap:.6rem}.tag--lg{padding:.4rem .8rem;font-size:.7rem}.tag__count{opacity:.4}.blog-list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:14px;overflow:hidden}.blog-item{display:flex;align-items:baseline;justify-content:space-between;padding:1.5rem 2rem;transition:background .2s cubic-bezier(.4, 0, .2, 1);gap:2rem;border-bottom:1px solid var(--border)}.blog-item:last-child{border-bottom:none}.blog-item:hover{background:var(--bg-secondary-alpha)}.blog-item__title{font-size:.98rem;font-weight:500;letter-spacing:-.01em}.blog-item__title a{color:var(--text-primary)}.blog-item__title a:hover{color:var(--accent)}.blog-item__desc{font-size:.82rem;color:var(--text-muted);margin-top:.3rem;line-height:1.5}.blog-item__date{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.65rem;color:var(--text-muted);white-space:nowrap}.blog-item__tags{display:flex;gap:.3rem;margin-top:.4rem}.philosophy{padding:7rem 0;text-align:center;position:relative;background:var(--bg-secondary-alpha);border-top:1px solid var(--border);overflow:hidden}.philosophy::before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:500px;height:500px;background:radial-gradient(circle, var(--accent-glow) 0%, rgba(0,0,0,0) 70%);pointer-events:none}.philosophy__mark{font-family:Georgia,serif;font-size:4.5rem;color:var(--accent);opacity:.15;line-height:1;margin-bottom:1rem;position:relative;z-index:1}.philosophy__quote{font-family:"Geist","Noto Sans JP",-apple-system,BlinkMacSystemFont,sans-serif;font-size:clamp(1.2rem,2.5vw,1.55rem);font-weight:400;font-style:italic;color:var(--text-secondary);max-width:600px;margin:0 auto;line-height:1.7;position:relative;z-index:1}.stack-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:14px;overflow:hidden}.stack-group{background:var(--bg-primary-alpha);padding:1.75rem;transition:background .3s cubic-bezier(.4, 0, .2, 1)}.stack-group:hover{background:var(--bg-secondary-alpha)}.stack-group__title{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.62rem;letter-spacing:.15em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem}.stack-group__items{display:flex;flex-wrap:wrap;gap:.35rem}.stack-chip{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.7rem;color:var(--text-secondary);padding:.25rem .6rem;background:var(--accent-glow);border:1px solid var(--border);border-radius:100px;transition:border-color .2s cubic-bezier(.4, 0, .2, 1),color .2s cubic-bezier(.4, 0, .2, 1)}.stack-chip:hover{border-color:var(--border-hover);color:var(--text-primary)}.stack-chip--interest{border-color:var(--badge-amber-border);color:var(--badge-amber);background:var(--badge-amber-bg)}.stack-chip--interest:hover{border-color:var(--badge-amber)}.stack-interested{display:flex;flex-wrap:wrap;gap:.5rem}.about-content{max-width:680px}.about-content h2{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-top:3.5rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.about-content p{color:var(--text-secondary);margin-bottom:1rem;line-height:1.8}.about-content ul{list-style:none;padding:0}.about-content ul li{color:var(--text-secondary);padding:.4rem 0;font-size:.95rem}.about-content ul li::before{content:"—";color:var(--accent);opacity:.35;margin-right:.75rem}p.about-intro{font-size:1.15rem;color:var(--text-primary);line-height:1.8;margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid var(--border)}.detail-header{padding:5rem 0 2.5rem;border-bottom:1px solid var(--border)}.detail-header__meta{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.68rem;color:var(--text-muted);letter-spacing:.05em;margin-bottom:1rem}.detail-header__title{font-family:"Geist","Noto Sans JP",-apple-system,BlinkMacSystemFont,sans-serif;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:500;line-height:1.25;letter-spacing:-.02em}.detail-body{max-width:680px;padding:3rem 0 5rem}.detail-body h2{font-size:1.4rem;font-weight:500;margin-top:3rem;margin-bottom:1rem;letter-spacing:-.02em}.detail-body h3{font-size:1.05rem;font-weight:600;margin-top:2rem;margin-bottom:.75rem}.detail-body p{color:var(--text-secondary);margin-bottom:1.25rem;line-height:1.85}.detail-body ul,.detail-body ol{color:var(--text-secondary);padding-left:1.5rem;margin-bottom:1.25rem}.detail-body ul li,.detail-body ol li{margin-bottom:.4rem;line-height:1.75}.detail-body code{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.875em;background:var(--bg-card-alpha);padding:.2rem .45rem;border-radius:6px;border:1px solid var(--border)}.detail-body pre{background:var(--bg-secondary-alpha);border:1px solid var(--border);padding:1.5rem;overflow-x:auto;margin-bottom:1.5rem;border-radius:10px}.detail-body pre code{background:none;padding:0;border:none}.detail-body blockquote{border-left:2px solid var(--accent);padding-left:1.25rem;margin:2rem 0;font-style:italic;color:var(--text-muted)}.detail-body .detail-tech{margin-top:.5rem;display:flex;flex-wrap:wrap;gap:.3rem}.detail-body .detail-links{display:flex;gap:1.25rem;margin-top:.5rem}.detail-body .detail-links a{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.7rem;color:var(--text-muted)}.detail-body .detail-links a:hover{color:var(--accent)}.site-footer{border-top:1px solid var(--border);padding:4rem 0 3rem;margin-top:auto;background:var(--bg-secondary-alpha)}.footer-inner{display:flex;flex-direction:column;gap:2.5rem}.footer-top{display:flex;justify-content:space-between;align-items:flex-start;gap:3rem}.footer-brand{max-width:320px}.footer-brand__logo{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.82rem;color:var(--text-primary);font-weight:500;letter-spacing:.03em;margin-bottom:.75rem}.footer-brand__logo span{color:var(--accent)}.footer-brand__desc{font-size:.82rem;color:var(--text-muted);line-height:1.6}.footer-nav{display:flex;gap:3rem}.footer-nav__group{display:flex;flex-direction:column;gap:.45rem}.footer-nav__label{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.58rem;letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.2rem}.footer-nav__group a{font-size:.82rem;color:var(--text-muted);transition:color .2s cubic-bezier(.4, 0, .2, 1)}.footer-nav__group a:hover{color:var(--text-primary)}.footer-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:2rem;border-top:1px solid var(--border)}.footer-meta{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.62rem;color:var(--text-muted);opacity:.6}.page-title{padding:5rem 0 2.5rem;border-bottom:1px solid var(--border)}.page-title h1{font-size:clamp(2rem,5vw,3rem);font-weight:500;letter-spacing:-.02em}.page-title p{color:var(--text-secondary);margin-top:.75rem;font-size:.92rem}.not-found{text-align:center;padding:10rem 0}.not-found h1{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:5rem;font-weight:300;color:var(--border-hover);margin-bottom:1.5rem}.not-found p{color:var(--text-muted);margin-bottom:2.5rem}.not-found a{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.82rem;color:var(--accent);border-bottom:1px solid var(--accent-dim);padding-bottom:.2rem}.not-found a:hover{border-color:var(--accent)}.menu-toggle{display:none;background:none;border:1px solid var(--border);border-radius:6px;padding:.45rem;cursor:pointer;color:var(--text-primary);transition:border-color .2s cubic-bezier(.4, 0, .2, 1)}.menu-toggle:hover{border-color:var(--border-hover)}.menu-toggle svg{display:block;width:18px;height:18px}@media (max-width: 1024px){.focus-grid{grid-template-columns:repeat(2, 1fr)}.footer-top{flex-direction:column;gap:2rem}}@media (max-width: 768px){.menu-toggle{display:block}.site-header .container{flex-wrap:wrap}.site-nav{display:none;width:100%;flex-direction:column;gap:.1rem;padding-top:1rem;margin-top:1rem;border-top:1px solid var(--border)}.site-nav.is-open{display:flex}.site-nav a{padding:.55rem .6rem;width:100%}.site-nav__tools{width:100%;margin-left:0;padding-left:0;margin-top:.25rem;padding-top:.5rem;border-left:none;border-top:1px solid var(--border);justify-content:flex-end;align-items:center}.hero{padding:6rem 0 4rem}.section{padding:3.5rem 0}.focus-grid{grid-template-columns:1fr;border-radius:10px}.projects-grid{border-radius:10px}.blog-list{border-radius:10px}.stack-grid{border-radius:10px}.blog-item{flex-direction:column;gap:.35rem;padding:1.25rem 1.5rem}.footer-bottom{flex-direction:column;gap:1rem;text-align:center}.footer-nav{gap:2rem}.project-card.project-card--hero{padding:2rem}.project-card.project-card--hero .project-card__name{font-size:1.2rem}}@media (max-width: 480px){.hero__title{font-size:clamp(1.55rem,6.5vw + .65rem,2.35rem);gap:.12em}.footer-nav{flex-direction:column;gap:1.5rem}.philosophy{padding:5rem 0}}html[data-ui-mode=folio] .network-bg{opacity:0;visibility:hidden;pointer-events:none}html[data-ui-mode=folio] .grain{opacity:.028;filter:none;background:radial-gradient(ellipse at 40% 0%, rgba(139,90,43,.06) 0%, rgba(0,0,0,0) 50%)}html[data-ui-mode=folio][data-theme=light]{--folio-desk: #d4cfc5;--folio-paper: #f4f1eb;--folio-paper-edge: #c9c2b6;--bg-primary: #e8e4de;--bg-secondary: #ddd8cf;--bg-card: #f2efe9;--bg-elevated: #faf8f4;--bg-primary-alpha: rgba(232, 228, 222, 0.96);--bg-secondary-alpha: rgba(221, 216, 207, 0.94);--bg-card-alpha: rgba(242, 239, 233, 0.97);--text-primary: #0f0e0c;--text-secondary: #3d3832;--text-muted: #6b645c;--accent: #8b3d3d;--accent-dim: rgba(139, 61, 61, 0.1);--accent-glow: rgba(139, 61, 61, 0.05);--border: #d4c9bc;--border-hover: #b5a896;--grain-opacity: 0.035;--grid-opacity: 0.05;--badge-green: #2d6a4f;--badge-green-bg: rgba(45, 106, 79, 0.08);--badge-green-border: rgba(45, 106, 79, 0.25);--badge-amber: #b45309;--badge-amber-bg: rgba(180, 83, 9, 0.08);--badge-amber-border: rgba(180, 83, 9, 0.22);--badge-blue: #1d4ed8;--badge-blue-bg: rgba(29, 78, 216, 0.06);--badge-blue-border: rgba(29, 78, 216, 0.2);color-scheme:light}html[data-ui-mode=folio][data-theme=dark]{--folio-desk: #0a0a08;--folio-paper: #161512;--folio-paper-edge: #2a2620;--bg-primary: #10100e;--bg-secondary: #181714;--bg-card: #1e1c18;--bg-elevated: #28241f;--bg-primary-alpha: rgba(16, 16, 14, 0.96);--bg-secondary-alpha: rgba(24, 23, 20, 0.94);--bg-card-alpha: rgba(30, 28, 24, 0.93);--text-primary: #f0ebe3;--text-secondary: #ada59a;--text-muted: #7f776d;--accent: #c4a574;--accent-dim: rgba(196, 165, 116, 0.12);--accent-glow: rgba(196, 165, 116, 0.06);--border: #3a352e;--border-hover: #4f4840;--grain-opacity: 0.04;--grid-opacity: 0.07;--badge-green: #6ee7a8;--badge-green-bg: rgba(110, 231, 168, 0.06);--badge-green-border: rgba(110, 231, 168, 0.2);--badge-amber: #fbbf24;--badge-amber-bg: rgba(251, 191, 36, 0.06);--badge-amber-border: rgba(251, 191, 36, 0.2);--badge-blue: #93c5fd;--badge-blue-bg: rgba(147, 197, 253, 0.06);--badge-blue-border: rgba(147, 197, 253, 0.2);color-scheme:dark}html[data-ui-mode=folio] body{font-family:"Newsreader","Noto Serif JP",Georgia,"Times New Roman",serif;letter-spacing:.012em;position:relative;background:rgba(0,0,0,0)}html[data-ui-mode=folio] .skip-link{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace}html[data-ui-mode=folio]{background:var(--folio-desk, var(--bg-secondary))}html[data-ui-mode=folio] main{position:relative;z-index:1;max-width:72rem;margin-left:auto;margin-right:auto;background:var(--folio-paper, var(--bg-card));border-left:1px solid var(--folio-paper-edge, var(--border));border-right:1px solid var(--folio-paper-edge, var(--border));box-shadow:0 0 0 1px rgba(0,0,0,.04),0 32px 80px rgba(0,0,0,.1)}html[data-ui-mode=folio][data-theme=dark] main{box-shadow:0 0 0 1px rgba(255,255,255,.06),0 28px 70px rgba(0,0,0,.55)}html[data-ui-mode=folio] main>.hero:first-child,html[data-ui-mode=folio] main>.container:first-child{border-top:5px double var(--text-primary)}.folio-nameplate{display:none}html[data-ui-mode=folio] .folio-nameplate{display:block;width:100%;height:5px;border-bottom:1px solid var(--text-primary);background:linear-gradient(180deg, var(--accent-dim) 0%, rgba(0,0,0,0) 85%)}html[data-ui-mode=folio] .site-header{border-bottom:3px double var(--text-primary);background:var(--folio-paper, var(--bg-card));backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:0 12px 40px rgba(0,0,0,.07)}html[data-ui-mode=folio][data-theme=dark] .site-header{box-shadow:0 10px 36px rgba(0,0,0,.5)}html[data-ui-mode=folio] .site-header .container--wide{max-width:72rem}html[data-ui-mode=folio] .site-logo{font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-style:italic;font-size:clamp(.82rem,2vw,.95rem);letter-spacing:.06em;font-weight:700;text-transform:uppercase;font-variant:small-caps}html[data-ui-mode=folio] .site-nav>a{font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-size:.62rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;font-variant-numeric:tabular-nums}html[data-ui-mode=folio] .ui-mode-switch,html[data-ui-mode=folio] .lang-switch{border-radius:0;border-width:2px;border-color:var(--text-primary);background:var(--folio-paper, var(--bg-card))}html[data-ui-mode=folio] .theme-toggle{border-radius:0;border-width:2px;border-color:var(--text-primary);background:var(--folio-paper, var(--bg-card))}html[data-ui-mode=folio] .menu-toggle{border-radius:0;border-width:2px;border-color:var(--text-primary);background:var(--folio-paper, var(--bg-card))}html[data-ui-mode=folio] .site-nav.is-open{border-top:2px solid var(--text-primary)}html[data-ui-mode=folio] .site-nav__tools{border-left:2px solid var(--border)}html[data-ui-mode=folio] .hero{min-height:min(88vh,880px);display:flex;align-items:center;padding:3rem 0 4.5rem}html[data-ui-mode=folio] .hero__grid{display:none}html[data-ui-mode=folio] .hero .container{display:grid;grid-template-columns:minmax(9.5rem, 12rem) minmax(0, 1fr);grid-template-rows:auto auto;gap:1.5rem 2.75rem;align-items:start;max-width:72rem;margin:0 auto;padding:2.25rem 1.75rem 2.5rem;border-top:4px solid var(--text-primary);border-bottom:1px solid var(--border);box-shadow:inset 0 1px 0 0 var(--border-hover)}html[data-ui-mode=folio] .hero__eyebrow{font-family:"Newsreader","Noto Serif JP",Georgia,serif;grid-column:1;grid-row:1;margin:0;padding-top:.4rem;font-size:.62rem;letter-spacing:.4em;line-height:1.6;max-width:10rem}html[data-ui-mode=folio] .hero__eyebrow::before{display:none}html[data-ui-mode=folio] .hero__title{font-family:"Newsreader","Noto Serif JP",Georgia,serif;grid-column:2;grid-row:1;margin:0 0 .25rem;font-size:clamp(1.9rem,4.5vw,3.2rem);font-weight:500;letter-spacing:-.03em;line-height:1.12}html[data-ui-mode=folio] .hero__title-line--1,html[data-ui-mode=folio] .hero__title-line--2{animation:none !important}html[data-ui-mode=folio] .hero__description{font-family:"Newsreader","Noto Serif JP",Georgia,serif;grid-column:2;grid-row:2;margin:0;font-size:1.06rem;font-style:italic;font-weight:400;max-width:40rem;line-height:1.75}html[data-ui-mode=folio] .hero__secondary{font-family:"Newsreader","Noto Serif JP",Georgia,serif;grid-column:1;grid-row:2;align-self:end;margin:0;padding:0;border:none;font-style:italic;font-size:.78rem;line-height:1.6;max-width:11rem;color:var(--text-muted)}html[data-ui-mode=folio] .hero__secondary::before{display:none}@media (max-width: 768px){html[data-ui-mode=folio] .hero{min-height:0;padding:5rem 0 3rem}html[data-ui-mode=folio] .hero .container{grid-template-columns:1fr;gap:1.25rem}html[data-ui-mode=folio] .hero__eyebrow{grid-column:1;grid-row:1;max-width:none}html[data-ui-mode=folio] .hero__title{grid-column:1;grid-row:2}html[data-ui-mode=folio] .hero__description{grid-column:1;grid-row:3}html[data-ui-mode=folio] .hero__secondary{grid-column:1;grid-row:4;max-width:none;padding-top:1rem;border-top:1px solid var(--border)}}html[data-ui-mode=folio] .section{padding:3.5rem 0}html[data-ui-mode=folio] .section--alt{background:var(--bg-secondary-alpha);border-top:2px solid var(--text-primary);border-bottom:1px solid var(--border);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.04)}html[data-ui-mode=folio][data-theme=dark] .section--alt{box-shadow:inset 0 1px 0 0 rgba(255,255,255,.04)}html[data-ui-mode=folio] .section>.container{display:grid;grid-template-columns:minmax(10rem, 13rem) minmax(0, 1fr);column-gap:2.25rem;row-gap:0;align-items:start;max-width:72rem}html[data-ui-mode=folio] .section__header{grid-column:1;grid-row:1;align-self:start;position:sticky;top:5.5rem;display:flex;flex-direction:column;align-items:flex-start;gap:1rem;margin:0;padding:0;border:none}html[data-ui-mode=folio] .section__title{font-family:"Newsreader","Noto Serif JP",Georgia,serif;letter-spacing:.22em;font-size:.58rem;margin:0;writing-mode:vertical-rl;transform:rotate(180deg);text-transform:uppercase;white-space:nowrap;padding:.25rem 0;border-right:3px solid var(--accent);padding-right:.75rem}html[data-ui-mode=folio] .section__link{font-family:"Newsreader","Noto Serif JP",Georgia,serif;letter-spacing:.1em;font-size:.62rem;text-transform:uppercase;border-bottom:none;writing-mode:horizontal-tb;transform:none}html[data-ui-mode=folio] .section__link:hover{color:var(--accent)}html[data-ui-mode=folio] .section>.container>.focus-grid,html[data-ui-mode=folio] .section>.container>.projects-grid,html[data-ui-mode=folio] .section>.container>.blog-list{grid-column:2;grid-row:1}@media (max-width: 900px){html[data-ui-mode=folio] .section>.container{grid-template-columns:1fr}html[data-ui-mode=folio] .section__header{position:static;flex-direction:row;flex-wrap:wrap;align-items:baseline;justify-content:space-between;width:100%;margin-bottom:1.25rem;padding-bottom:.65rem;border-bottom:2px solid var(--text-primary)}html[data-ui-mode=folio] .section__title{writing-mode:horizontal-tb;transform:none;border-right:none;padding-right:0;border-bottom:2px solid var(--accent);padding-bottom:.35rem}html[data-ui-mode=folio] .section>.container>.focus-grid,html[data-ui-mode=folio] .section>.container>.projects-grid,html[data-ui-mode=folio] .section>.container>.blog-list{grid-column:1}}html[data-ui-mode=folio] .container>.section>.stack-grid{width:100%}html[data-ui-mode=folio] .section:has(>.stack-interested){display:grid;grid-template-columns:minmax(10rem, 13rem) minmax(0, 1fr);column-gap:2rem;align-items:start;max-width:72rem;margin-left:auto;margin-right:auto;padding-left:1.5rem;padding-right:1.5rem}html[data-ui-mode=folio] .section:has(>.stack-interested) .section__header{grid-column:1;position:sticky;top:5.5rem;margin:0;padding:0;border:none}html[data-ui-mode=folio] .section:has(>.stack-interested) .section__title{writing-mode:vertical-rl;transform:rotate(180deg);border-right:3px solid var(--accent);padding-right:.75rem}html[data-ui-mode=folio] .section:has(>.stack-interested) .stack-interested{grid-column:2}html[lang=ja][data-ui-mode=folio] .section:has(>.stack-interested){grid-template-columns:1fr}html[lang=ja][data-ui-mode=folio] .section:has(>.stack-interested) .section__header{position:static;grid-column:1}html[lang=ja][data-ui-mode=folio] .section:has(>.stack-interested) .section__title{writing-mode:horizontal-tb;transform:none;border-right:none;border-bottom:2px solid var(--accent);padding-right:0;padding-bottom:.35rem}html[lang=ja][data-ui-mode=folio] .section:has(>.stack-interested) .stack-interested{grid-column:1}@media (max-width: 900px){html[data-ui-mode=folio] .section:has(>.stack-interested){grid-template-columns:1fr}html[data-ui-mode=folio] .section:has(>.stack-interested) .section__header{position:static}html[data-ui-mode=folio] .section:has(>.stack-interested) .section__title{writing-mode:horizontal-tb;transform:none;border-right:none;border-bottom:2px solid var(--accent);padding-right:0;padding-bottom:.35rem}html[data-ui-mode=folio] .section:has(>.stack-interested) .stack-interested{grid-column:1}}html[data-ui-mode=folio] .focus-grid{counter-reset:folio-focus;display:grid;grid-template-columns:1fr;gap:0;background:rgba(0,0,0,0);border:2px solid var(--text-primary);border-radius:0}@media (min-width: 768px){html[data-ui-mode=folio] .focus-grid{grid-template-columns:1fr 1fr}}html[data-ui-mode=folio] .focus-card{counter-increment:folio-focus;display:grid;grid-template-columns:2.6rem 1fr;grid-template-rows:auto auto 1fr;column-gap:1.1rem;row-gap:.35rem;align-items:start;padding:1.5rem 1rem 1.6rem;margin:0;border-radius:0;border-bottom:1px solid var(--border);background:rgba(0,0,0,0) !important;box-shadow:none !important}@media (min-width: 768px){html[data-ui-mode=folio] .focus-card{border-right:1px solid var(--border)}html[data-ui-mode=folio] .focus-card:nth-child(2n){border-right:none}html[data-ui-mode=folio] .focus-card:nth-child(n+3){border-bottom:none}}html[data-ui-mode=folio] .focus-card:last-child{border-bottom:none}html[data-ui-mode=folio] .focus-card:hover{background:var(--accent-glow) !important}html[data-ui-mode=folio] .focus-card::before{content:counter(folio-focus, decimal-leading-zero);grid-column:1;grid-row:1/-1;align-self:start;font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.72rem;font-weight:500;color:var(--accent);letter-spacing:.04em;padding-top:.15rem}html[data-ui-mode=folio] .focus-card__icon{grid-column:2;grid-row:1;margin-bottom:0;opacity:.75}html[data-ui-mode=folio] .focus-card__title{font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-weight:600;letter-spacing:.04em;grid-column:2;grid-row:2}html[data-ui-mode=folio] .focus-card__desc{grid-column:2;grid-row:3}html[data-ui-mode=folio] .project-card__category,html[data-ui-mode=folio] .blog-item__date,html[data-ui-mode=folio] .detail-header__meta{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;letter-spacing:.08em}html[data-ui-mode=folio] .project-card__name{font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-weight:700;font-size:1.05rem;line-height:1.35;letter-spacing:-.02em}html[data-ui-mode=folio] .blog-item__title{flex:1;min-width:0;font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-weight:700;font-size:1.05rem;line-height:1.35;letter-spacing:-.02em}html[data-ui-mode=folio] .blog-item__title a{text-decoration:none;border-bottom:1px solid rgba(0,0,0,0);transition:border-color .15s cubic-bezier(.4, 0, .2, 1)}html[data-ui-mode=folio] .blog-item__title a:hover{border-bottom-color:var(--accent)}html[data-ui-mode=folio] .philosophy{padding:4.5rem 8vw;margin:3rem 0 0;border:none;border-top:3px double var(--text-primary);border-bottom:1px solid var(--border);background:var(--bg-secondary-alpha);text-align:left}html[data-ui-mode=folio] .philosophy::before{display:none}html[data-ui-mode=folio] .philosophy .container{max-width:48rem;margin:0 auto;display:grid;grid-template-columns:4rem 1fr;gap:0 1.5rem;align-items:start;border:2px solid var(--text-primary);padding:2rem 1.75rem;background:var(--folio-paper, var(--bg-card))}@media (max-width: 768px){html[data-ui-mode=folio] .philosophy .container{grid-template-columns:1fr}html[data-ui-mode=folio] .philosophy__mark{grid-column:1;font-size:3rem}html[data-ui-mode=folio] .philosophy__quote{grid-column:1}}html[data-ui-mode=folio] .philosophy__mark{font-family:"Newsreader",Georgia,serif;grid-column:1;margin:0;opacity:.35;font-size:4rem;line-height:1}html[data-ui-mode=folio] .philosophy__quote{font-family:"Newsreader","Noto Serif JP",Georgia,serif;grid-column:2;margin:0;padding:0;border:none;font-size:clamp(1.15rem,2.2vw,1.45rem);line-height:1.65}html[data-ui-mode=folio] .stack-group__title{font-family:"Newsreader","Noto Serif JP",Georgia,serif;letter-spacing:.18em}html[data-ui-mode=folio] .about-content{max-width:52rem;margin:0 auto;padding:2rem 1.5rem 3rem 2.5rem;border-left:1px dashed var(--border)}html[data-ui-mode=folio] .about-content h2{font-family:"Newsreader","Noto Serif JP",Georgia,serif;letter-spacing:.2em}html[data-ui-mode=folio] p.about-intro{font-family:"Newsreader","Noto Serif JP",Georgia,serif}html[data-ui-mode=folio] .detail-header{padding:2.75rem 1.5rem 2.25rem;border-bottom:2px solid var(--border);border-left:none;max-width:none;margin:0 -1.5rem;background:linear-gradient(180deg, var(--bg-secondary-alpha) 0%, rgba(0,0,0,0) 72%)}html[data-ui-mode=folio] .detail-header__meta{font-size:.58rem;letter-spacing:.18em;text-transform:uppercase;margin-bottom:1.5rem}html[data-ui-mode=folio] .detail-header__title,html[data-ui-mode=folio] .page-title h1{font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-weight:600;max-width:none}html[data-ui-mode=folio] .detail-header__title{font-size:clamp(1.85rem,4.2vw,2.9rem);line-height:1.12;letter-spacing:-.025em}html[data-ui-mode=folio] .page-title{padding:2.75rem 1.5rem 2.25rem;border-bottom:2px solid var(--border);border-left:none;max-width:none;margin:0 -1.5rem;background:linear-gradient(180deg, var(--bg-secondary-alpha) 0%, rgba(0,0,0,0) 72%)}html[data-ui-mode=folio] .page-title h1{font-size:clamp(1.75rem,4vw,2.75rem);letter-spacing:-.02em;line-height:1.15}html[data-ui-mode=folio] .page-title p{max-width:40rem;margin-top:1rem;font-style:italic;font-size:.98rem;color:var(--text-secondary)}html[data-ui-mode=folio] .detail-body{max-width:52rem;margin:0 auto;padding:2.5rem 1.5rem 4rem 2.5rem;border-left:1px dashed var(--border)}html[data-ui-mode=folio] .detail-body h2,html[data-ui-mode=folio] .detail-body h3{font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-weight:600}@media (min-width: 900px){html[data-ui-mode=folio] .detail-body,html[data-ui-mode=folio] .about-content{column-count:2;column-gap:2.25rem;column-rule:1px solid var(--border);column-fill:balance}html[data-ui-mode=folio] .detail-body h2,html[data-ui-mode=folio] .detail-body h3,html[data-ui-mode=folio] .detail-body h4,html[data-ui-mode=folio] .detail-body pre,html[data-ui-mode=folio] .detail-body blockquote,html[data-ui-mode=folio] .detail-body hr,html[data-ui-mode=folio] .detail-body table,html[data-ui-mode=folio] .detail-body .highlight,html[data-ui-mode=folio] .detail-body img,html[data-ui-mode=folio] .detail-body figure,html[data-ui-mode=folio] .detail-body ul,html[data-ui-mode=folio] .detail-body ol,html[data-ui-mode=folio] .detail-tech,html[data-ui-mode=folio] .detail-links{column-span:all}html[data-ui-mode=folio] .about-content h2,html[data-ui-mode=folio] .about-content h3,html[data-ui-mode=folio] .about-content pre,html[data-ui-mode=folio] .about-content blockquote,html[data-ui-mode=folio] .about-content hr,html[data-ui-mode=folio] .about-content ul,html[data-ui-mode=folio] .about-content ol,html[data-ui-mode=folio] .about-content img,html[data-ui-mode=folio] .about-content figure{column-span:all}}html[lang=en-GB][data-ui-mode=folio] .detail-body p,html[lang=en-GB][data-ui-mode=folio] .about-content p{hyphens:auto;text-align:justify}html[lang=ja][data-ui-mode=folio] .detail-body p,html[lang=ja][data-ui-mode=folio] .about-content p{text-align:start;line-height:1.85}html[lang=en-GB][data-ui-mode=folio] .detail-body>p:first-of-type::first-letter,html[lang=en-GB][data-ui-mode=folio] .about-content>p:first-of-type::first-letter{font-family:"Newsreader",Georgia,serif;font-weight:600;color:var(--text-primary);-webkit-initial-letter:3;initial-letter:3;margin-right:.12em}html[data-ui-mode=folio] .detail-body code,html[data-ui-mode=folio] .detail-body pre,html[data-ui-mode=folio] .detail-body pre code{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-style:normal}html[data-ui-mode=folio] .detail-links a{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace}html[data-ui-mode=folio] .site-footer{margin-top:0;padding:3rem 0 2.5rem;border-top:4px double var(--text-primary);background:var(--folio-desk, var(--bg-secondary))}html[data-ui-mode=folio] .site-footer .container--wide{max-width:72rem}html[data-ui-mode=folio] .footer-inner{gap:2rem}html[data-ui-mode=folio] .footer-brand__desc{font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-size:.82rem;line-height:1.65;color:var(--text-secondary);margin-top:.65rem;max-width:28rem}html[data-ui-mode=folio] .footer-top{display:grid;grid-template-columns:minmax(0, 1.1fr) minmax(0, 1fr);gap:2.5rem 2rem;align-items:start}html[data-ui-mode=folio] .footer-brand__logo{font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-style:italic;font-size:1rem}html[data-ui-mode=folio] .footer-nav{gap:2rem}html[data-ui-mode=folio] .footer-nav__label{font-family:"Newsreader","Noto Serif JP",Georgia,serif;letter-spacing:.22em;font-size:.55rem}html[data-ui-mode=folio] .footer-nav__group a{font-family:"Newsreader","Noto Serif JP",Georgia,serif;display:inline-block;margin-right:.5rem}html[data-ui-mode=folio] .footer-nav__group a:not(:last-child)::after{content:" · ";margin-left:.35rem;color:var(--text-muted);pointer-events:none}html[data-ui-mode=folio] .footer-bottom{border-top:1px solid var(--border);padding-top:1.35rem;justify-content:center;text-align:center}html[data-ui-mode=folio] .footer-meta{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace;font-size:.58rem;letter-spacing:.04em}html[data-ui-mode=folio] .projects-grid,html[data-ui-mode=folio] .blog-list{display:flex;flex-direction:column;gap:0;background:rgba(0,0,0,0);border:2px solid var(--text-primary);border-radius:0;box-shadow:none !important}@media (min-width: 960px){html[data-ui-mode=folio] .projects-grid,html[data-ui-mode=folio] .blog-list{display:block;column-count:2;column-gap:0;column-rule:2px solid var(--text-primary);border:2px solid var(--text-primary)}html[data-ui-mode=folio] .project-card,html[data-ui-mode=folio] .blog-item{break-inside:avoid;page-break-inside:avoid;padding-left:1.1rem;padding-right:1.1rem}}html[data-ui-mode=folio] .project-card{border-radius:0;box-shadow:none !important;border-bottom:1px solid var(--border);background:rgba(0,0,0,0) !important}html[data-ui-mode=folio] .project-card:last-child{border-bottom:none}html[data-ui-mode=folio] .project-card:hover{box-shadow:none !important;background:var(--accent-glow) !important}html[data-ui-mode=folio] .project-card.project-card--hero{padding-top:2.25rem;padding-bottom:2.25rem;border-bottom-width:1px;border-bottom-style:dashed}html[data-ui-mode=folio] .project-card__meta{flex-wrap:wrap}html[data-ui-mode=folio] .blog-item{flex-direction:row;align-items:flex-start;gap:1.5rem;padding:1.35rem 0;border-radius:0;border-bottom:1px solid var(--border)}html[data-ui-mode=folio] .blog-item:last-child{border-bottom:none}html[data-ui-mode=folio] .blog-item:hover{background:var(--accent-glow)}html[data-ui-mode=folio] .blog-item__date{flex:0 0 5.5rem;padding-top:.2rem;text-align:right;font-size:.6rem;line-height:1.4;opacity:.85}html[data-ui-mode=folio] .stack-grid{display:grid;grid-template-columns:1fr;gap:0;background:rgba(0,0,0,0);border:2px solid var(--text-primary);border-radius:0;box-shadow:none !important}@media (min-width: 768px){html[data-ui-mode=folio] .stack-grid{grid-template-columns:1fr 1fr;column-gap:0}html[data-ui-mode=folio] .stack-group:nth-child(odd){border-right:1px solid var(--border)}}html[data-ui-mode=folio] .stack-group{border-bottom:1px solid var(--border);border-radius:0;padding:1.35rem 1rem;background:rgba(0,0,0,0) !important}html[data-ui-mode=folio] .stack-group:last-child{border-bottom:none}html[data-ui-mode=folio] .stack-group:hover{background:var(--accent-glow) !important}html[data-ui-mode=folio] .stack-interested{padding:1.5rem 0 0;border-top:1px solid var(--border);margin-top:.5rem}html[data-ui-mode=folio] .tag,html[data-ui-mode=folio] .badge{font-family:"Geist Mono","JetBrains Mono","Fira Code",monospace}html[data-ui-mode=folio] .not-found{margin:2.5rem 0 4rem;padding:4rem 1.5rem;border:3px double var(--text-primary);background:var(--bg-secondary-alpha);text-align:center}html[data-ui-mode=folio] .not-found h1,html[data-ui-mode=folio] .not-found a{font-family:"Newsreader","Noto Serif JP",Georgia,serif}html[data-ui-mode=folio] .not-found h1{font-weight:600;font-size:clamp(4rem,16vw,7rem);letter-spacing:-.06em;line-height:1;color:var(--text-primary)}html[data-ui-mode=folio] .not-found p{font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-size:.95rem;max-width:28rem;margin-left:auto;margin-right:auto}html[data-ui-mode=folio] .tags-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(11rem, 1fr));gap:0;border:2px solid var(--text-primary)}html[data-ui-mode=folio] .tags-grid .tag.tag--lg{display:flex;align-items:center;justify-content:center;margin:0;border-radius:0;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:.75rem .65rem;font-family:"Newsreader","Noto Serif JP",Georgia,serif;font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}@keyframes folioCaretPulse{0%, 45%{opacity:1}50%, 100%{opacity:0}}html[data-ui-mode=folio] .folio-type-caret{display:inline-block;width:.4ch;min-height:.95em;margin-left:2px;border-right:2px solid var(--accent);vertical-align:-.07em;animation:folioCaretPulse .95s step-end infinite}html[data-ui-mode=folio] .folio-list-reveal{opacity:0;transform:translateY(16px);transition:opacity .55s cubic-bezier(.16, 1, .3, 1),transform .55s cubic-bezier(.16, 1, .3, 1)}html[data-ui-mode=folio] .folio-list-reveal--visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion: reduce){html[data-ui-mode=folio] .folio-type-caret{animation:none !important;opacity:.6 !important}html[data-ui-mode=folio] .folio-list-reveal{opacity:1 !important;transform:none !important;transition:none !important}}@media (max-width: 768px){html[data-ui-mode=folio] .blog-item__date{text-align:left;flex:none}html[data-ui-mode=folio] .footer-top{grid-template-columns:1fr}html[data-ui-mode=folio] .hero .container{padding-left:1.25rem}}