[data-theme=dark]{--icon-filter:invert(1)}:root{--fs-11:.6875rem;--fs-12:.75rem;--fs-14:.875rem;--fs-16:1rem;--fs-18:1.125rem;--fs-21:1.3125rem;--fs-24:1.5rem;--fs-32:2rem;--fs-42:2.625rem;--fs-56:3.5rem;--fs-72:4.5rem;--fs-96:6rem;--lh-tight:1.05;--lh-snug:1.25;--lh-normal:1.5;--lh-prose:1.65;--lh-loose:1.85;--tr-tight:-.02em;--tr-snug:-.01em;--tr-normal:0;--tr-wide:.04em;--tr-wider:.12em;--w-light:300;--w-regular:400;--w-medium:500;--w-semibold:600;--w-bold:700;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-6:24px;--s-8:32px;--s-12:48px;--s-16:64px;--s-24:96px;--s-32:128px;--measure-prose:65ch;--measure-narrow:48ch;--measure-wide:78ch;--ease-out:cubic-bezier(.2, .6, .2, 1);--ease-inout:cubic-bezier(.4, 0, .2, 1);--dur-fast:.15s;--dur-base:.24s;--dur-slow:.6s;--z-base:0;--z-sticky:10;--z-overlay:100;--z-toast:1000;--font-display:"Space Grotesk", "Helvetica Neue", sans-serif;--font-body:"Space Grotesk", "Helvetica Neue", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--font-display-jp:"IBM Plex Sans JP", sans-serif;--font-body-jp:"IBM Plex Sans JP", sans-serif}:root[lang=ja],[lang=ja]{--font-display:var(--font-display-jp);--font-body:var(--font-body-jp)}:root{--paper:#fff;--paper-2:#f0f0f0;--ink-1:#000;--ink-2:#262626;--ink-3:#757575;--rule:#000;--seal:#00d26a;--seal-soft:#00d26a14;--radius:0px;--radius-lg:0px;--shadow-sharp:6px 6px 0 var(--ink-1);--shadow-soft:none}[data-theme=dark]{--paper:#0a0a0a;--paper-2:#131313;--ink-1:#fff;--ink-2:#d6d6d6;--ink-3:#909090;--rule:#fff;--seal:#00ff85;--seal-soft:#00ff8520;--shadow-sharp:6px 6px 0 var(--ink-1)}*,:before,:after{box-sizing:border-box}body{background:var(--paper);color:var(--ink-1);font-family:var(--font-body), sans-serif;font-size:var(--fs-16);line-height:var(--lh-prose);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-feature-settings:"kern", "liga", "calt";transition:background var(--dur-base) var(--ease-inout), color var(--dur-base) var(--ease-inout)}[data-theme=dark] body{color:var(--ink-2)}h1,h2,h3,h4,h5,h6{font-family:var(--font-display), sans-serif;font-weight:var(--w-medium);color:var(--ink-1);text-wrap:balance;margin:0}h1,[class~=h1]{font-size:clamp(var(--fs-42), 6vw, var(--fs-72));line-height:var(--lh-tight);letter-spacing:var(--tr-tight);font-weight:var(--w-bold)}h2,[class~=h2]{font-size:clamp(var(--fs-32), 4vw, var(--fs-42));line-height:var(--lh-snug);letter-spacing:var(--tr-snug);font-weight:var(--w-semibold)}h3,[class~=h3]{font-size:var(--fs-24);line-height:var(--lh-snug);font-weight:var(--w-semibold)}h4,.h4{font-size:var(--fs-21);line-height:var(--lh-snug);font-weight:var(--w-medium)}p{max-width:var(--measure-prose);text-wrap:pretty;margin:0 0 1em}.lede{font-size:var(--fs-21);line-height:var(--lh-prose);color:var(--ink-2);font-weight:var(--w-regular)}small,.small{font-size:var(--fs-14);color:var(--ink-2)}.caption{font-family:var(--font-mono), monospace;font-size:var(--fs-12);letter-spacing:var(--tr-wide);text-transform:uppercase;color:var(--ink-3)}a{color:var(--ink-1);text-underline-offset:.2em;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--ink-3);text-decoration-color:var(--ink-3);transition:color var(--dur-fast) var(--ease-inout), text-decoration-color var(--dur-fast) var(--ease-inout), text-decoration-thickness var(--dur-fast) var(--ease-inout)}a:hover{color:var(--seal);-webkit-text-decoration-color:var(--seal);text-decoration-color:var(--seal);text-decoration-thickness:2px}a:focus-visible{outline:2px solid var(--seal);outline-offset:2px;border-radius:0}code,pre,kbd,samp{font-family:var(--font-mono), monospace;font-size:.92em}code{background:var(--paper-2);border-radius:0;padding:.1em .35em}pre{background:var(--paper-2);padding:var(--s-4);border:1px solid var(--rule);border-radius:0;overflow-x:auto}pre code{background:0 0;padding:0}hr{border:none;border-top:1px solid var(--rule);margin:var(--s-8) 0}::selection{background:var(--seal);color:var(--ink-1)}[lang=ja]{line-height:var(--lh-loose);font-feature-settings:"palt", "kern"}[lang=ja] h1,[lang=ja] h2{letter-spacing:.02em;line-height:var(--lh-snug)}[lang=ja] h1,[lang=ja] h2,[lang=ja] h3,[lang=ja] .lede{font-size:.94em}html{transition:none}[lang] body{transition:opacity .18s var(--ease-out)}html.lang-swapping body{opacity:0}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.btn{font-family:var(--font-mono), monospace;font-size:var(--fs-12);font-weight:var(--w-medium);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-1);border:1px solid var(--ink-1);cursor:pointer;transition:box-shadow var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);background:0 0;border-radius:0;align-items:center;gap:8px;padding:10px 14px;text-decoration:none;display:inline-flex;transform:translate(0);box-shadow:0 0 #0000}.btn:hover{box-shadow:var(--shadow-sharp);color:var(--ink-1);text-decoration:none;transform:translate(-1px,-1px)}.btn:active{transform:translate(1px,1px);box-shadow:0 0 #0000}.btn:focus-visible{outline:2px solid var(--seal);outline-offset:2px}.btn .btn-icon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}[class~=btn--primary]:hover{background:var(--ink-1);color:var(--paper);text-decoration:none}[class~=btn--seal]{background:var(--seal);border-color:var(--seal);color:var(--ink-1)}[class~=btn--seal]:hover{background:var(--seal);color:var(--ink-1);text-decoration:none}.btn--sm{font-size:var(--fs-11);gap:6px;padding:6px 10px}[class~=btn--link]{text-transform:none;letter-spacing:.04em;font-family:var(--font-mono), monospace;color:var(--ink-3);box-shadow:none;background:0 0;border:none;padding:0;text-decoration:none}[class~=btn--link]:hover{color:var(--ink-1);box-shadow:none;background:0 0;transform:none}[class~=btn--link]:after{content:" ↗";color:var(--ink-3);transition:color var(--dur-fast) var(--ease-out);display:inline}[class~=btn--link]:hover:after{color:var(--seal)}[class~=btn--link][class~=btn--no-arrow]:after{content:none}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink-1);font-family:var(--font-body), sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.container{z-index:2;max-width:1100px;margin:0 auto;padding:0 32px;position:relative;overflow:visible}section[data-anchor]{scroll-margin-top:32px}section[data-anchor]:not(.hero-section){padding:48px 0}.now-list--indexed .now-index{font-family:var(--font-mono), monospace;letter-spacing:.04em;color:var(--ink-3);font-size:12px}.now-list--indexed .now-text{color:var(--ink-1)}.topnav{z-index:10;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:24px;padding:20px max(32px,50vw - 518px);display:flex;position:fixed;top:0;left:0;right:0}.topnav-nav,.topnav-anchors{flex-wrap:wrap;align-items:center;gap:22px;display:flex}.topnav-link{font-size:var(--fs-14);color:var(--ink-2)}.topnav-dials{align-items:center;gap:10px;display:inline-flex}.hero-section{z-index:1;padding:96px 0 64px;position:relative}.hero-avatar-spacer{flex-shrink:0;width:96px;height:96px}@property --avatar-size{syntax:"<length>";inherits:true;initial-value:96px}@property --avatar-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}@property --name-size{syntax:"<length>";inherits:true;initial-value:22px}@property --name-track{syntax:"<length>";inherits:true;initial-value:0}@property --byline-size{syntax:"<length>";inherits:true;initial-value:11px}@property --gap{syntax:"<length>";inherits:true;initial-value:12px}@property --pad-y{syntax:"<length>";inherits:true;initial-value:20px}@property --bar-alpha{syntax:"<number>";inherits:true;initial-value:0}.morph-group{pointer-events:none;z-index:11;padding-block:var(--pad-y);align-items:center;gap:var(--gap);background:0 0;flex-direction:row;display:flex;position:fixed;top:0;left:max(32px,50vw - 518px)}.morph-group>*{pointer-events:auto}:root{--avatar-size:clamp(26px, 6vw, 28px);--avatar-radius:50%;--name-size:clamp(19px, 5vw, 22px);--name-track:-.22px;--byline-size:11px;--gap:clamp(10px, 3vw, 12px);--pad-y:clamp(14px, 4vw, 20px);--bar-alpha:1}.topnav:before{content:"";z-index:-1;height:calc(var(--pad-y) + var(--avatar-size) + 24px);background:color-mix(in srgb, var(--paper) calc(var(--bar-alpha,1) * 90%), transparent);-webkit-backdrop-filter:saturate(180%) blur(calc(var(--bar-alpha,1) * 14px));backdrop-filter:saturate(180%) blur(calc(var(--bar-alpha,1) * 14px));box-shadow:0 12px 32px -16px color-mix(in srgb, var(--ink-1) calc(var(--bar-alpha,1) * 14%), transparent);pointer-events:none;position:fixed;top:0;left:0;right:0}.morph-avatar{width:var(--avatar-size);height:var(--avatar-size);border-radius:var(--avatar-radius);object-fit:cover;filter:grayscale()contrast(1.05);border:1px solid var(--ink-1);flex-shrink:0}.morph-text{flex-direction:column;align-items:flex-start;gap:4px;min-width:0;display:flex}.morph-byline{font-family:var(--font-mono), monospace;font-size:var(--byline-size);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap;line-height:1.4}.morph-name{font-family:var(--font-display), sans-serif;font-size:var(--name-size);letter-spacing:var(--name-track);color:var(--ink-1);white-space:nowrap;font-weight:700;line-height:1.05;text-decoration:none}.morph-name>span{color:var(--seal)}@media (min-width:641px){@supports (animation-timeline:scroll()){html.is-home{--avatar-size:clamp(64px, 14vw, 96px);--avatar-radius:0px;--name-size:clamp(26px, 7vw, 56px);--name-track:-1.12px;--byline-size:11px;--gap:clamp(18px, 5vw, 48px);--pad-y:clamp(48px, 10vw, 96px);--bar-alpha:0;animation-name:morph-to-nav,bar-fade-in;animation-duration:1ms,1ms;animation-timing-function:linear,linear;animation-fill-mode:both,both;animation-timeline:scroll(root),scroll(root);animation-range:0 360px,0 120px}}}@keyframes morph-to-nav{to{--avatar-size:clamp(26px, 6vw, 28px);--avatar-radius:50%;--name-size:clamp(19px, 5vw, 22px);--name-track:-.22px;--byline-size:11px;--gap:clamp(10px, 3vw, 12px);--pad-y:clamp(14px, 4vw, 20px)}}@keyframes bar-fade-in{to{--bar-alpha:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){:root{animation:none}}.link,.link-row [data-link-title]{color:inherit;text-underline-offset:4px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:1px;transition:text-decoration-color .2s,color .2s}.link{text-decoration-thickness:1px}.link:hover,.link-row:hover [data-link-title]{-webkit-text-decoration-color:var(--seal);text-decoration-color:var(--seal)}.link-row{color:inherit;text-decoration:none;display:block}.feed-thumb{filter:grayscale()contrast(.96);transition:filter .35s}.link-row:hover .feed-thumb{filter:grayscale(0%)contrast()}.link-row:focus-visible .feed-thumb{filter:grayscale(0%)contrast()}.bibtex-dialog{border:1px solid var(--ink-1);background:var(--paper);color:var(--ink-1);opacity:0;will-change:opacity, transform;width:min(720px,100vw - 32px);max-height:calc(100vh - 64px);transition:opacity .2s ease-out, transform .2s ease-out, overlay .2s ease-out allow-discrete, display .2s ease-out allow-discrete;padding:0;transform:translateY(8px);box-shadow:0 18px 48px #00000029}.bibtex-dialog[open]{opacity:1;transform:translateY(0)}@starting-style{.bibtex-dialog[open]{opacity:0;transform:translateY(8px)}}.bibtex-dialog::backdrop{background:color-mix(in srgb, var(--ink-1) 60%, transparent);opacity:0;transition:opacity .2s ease-out, overlay .2s ease-out allow-discrete, display .2s ease-out allow-discrete}.bibtex-dialog[open]::backdrop{opacity:1}@starting-style{.bibtex-dialog[open]::backdrop{opacity:0}}.bibtex-dialog__panel{flex-direction:column;display:flex}.link-row [data-link-arrow]{color:var(--ink-3);transition:transform .2s,color .2s;display:inline-block}.link-row:hover [data-link-arrow]{color:var(--seal);transform:translate(2px,-2px)}.now-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px 24px;margin:8px 0 0;padding:0;list-style:none;display:grid}.now-list>li{border-left:1px solid var(--ink-1);font-family:var(--font-body), sans-serif;color:var(--ink-1);padding:0 0 0 16px;font-size:15px;line-height:1.55}.now-list.now-list--indexed>li{border-left:0;grid-template-columns:32px 1fr;align-items:baseline;column-gap:12px;padding:0;display:grid}.now-list>li[class~=now-list__row-start]{border-left:0;padding-left:0}hr,header,section{border-color:var(--ink-1)}.list-row{grid-template-columns:96px 1fr auto;align-items:baseline;gap:24px;padding:24px 0;display:grid}.kicker{font-family:var(--font-mono), monospace;text-transform:uppercase;color:var(--ink-3)}.row-title{font-family:var(--font-display), sans-serif;color:var(--ink-1);font-size:22px;font-weight:600}.project-title-link{align-items:center;line-height:1.3;display:inline-flex}.project-role-link{color:inherit;text-decoration:none;display:inline-flex}.project-secondary-link:hover{--project-link-icon-filter:invert(1)}[data-theme=dark] .project-secondary-link:hover{--project-link-icon-filter:none}.row-meta{font-family:var(--font-mono), monospace;color:var(--ink-3);font-size:12px}.link-dotted{border-bottom:1px dotted var(--ink-3);text-decoration:none}@media (max-width:900px){.topnav-anchors{display:none}}@media (max-width:640px){.container{padding:0 20px}.morph-group{left:20px}.topnav{gap:12px;padding:14px 20px}section[data-anchor]:not(.hero-section){padding:32px 0}.list-row{grid-template-columns:1fr;gap:6px;padding:18px 0}.now-list{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px 16px}.hero-avatar-spacer{display:none}.hero-section{padding:16px 0 32px}.topnav-theme-dial{display:none}.morph-text{max-width:calc(100vw - 128px)}.morph-byline{white-space:normal}}.btn{font-family:var(--font-mono), monospace;font-size:12px;font-weight:inherit;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--ink-1);background:var(--paper);color:var(--ink-1);cursor:pointer;-webkit-appearance:none;appearance:none;box-sizing:border-box;border-radius:0;align-items:center;gap:6px;margin:0;padding:6px 12px;line-height:1.2;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.btn:hover{background:var(--ink-1);color:var(--paper)}.btn--sm{padding:4px 10px;font-size:11px}[class~=btn--primary],[class~=btn--primary]:hover{background:var(--ink-1);color:var(--paper)}.btn-icon{align-items:center;display:inline-flex}
