:root{--fs-micro:.6875rem;--fs-meta:.8125rem;--fs-note:.9375rem;--fs-lead:clamp(1.15rem, 1.02rem + .65vw, 1.35rem);--fs-h3:clamp(1.35rem, 1.15rem + 1.1vw, 1.7rem);--fs-h2:clamp(1.45rem, 1.12rem + 1.6vw, 1.95rem);--fs-cover:clamp(2.75rem, 1.45rem + 6.5vw, 4.75rem);--rhythm-show:clamp(96px, 13vw, 160px);--rhythm-read:clamp(72px, 10vw, 124px)}body{font-size:var(--text-base,1.0625rem);line-height:1.62}body:lang(ja){line-height:1.9}h1,h2,h3,h4{letter-spacing:-.02em;font-weight:600;line-height:1.1}h1:lang(ja),h2:lang(ja),h3:lang(ja),h4:lang(ja),.pagehead h1:lang(ja),.row .row-title:lang(ja){letter-spacing:0}::selection{background:var(--accent-soft);color:var(--text)}body a{color:inherit}body a:hover{text-underline-offset:4px;text-decoration-thickness:1px}body :focus-visible{outline:2px solid var(--text);outline-offset:3px;border-radius:0}body .container{padding-inline:clamp(20px,4vw,48px)}.section{margin-top:var(--rhythm-read);scroll-margin-top:24px}body[data-surface=showcase] .section{margin-top:var(--rhythm-show)}main{counter-reset:sec fig}body[data-surface=showcase] main{counter-reset:sec fig -1}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.micro{font:500 var(--fs-micro) / 1.5 var(--font-mono);text-transform:uppercase;letter-spacing:.08em}.micro:lang(ja){letter-spacing:.02em}.measure{max-width:70ch}.u-sweep{background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;transition:background-size .35s cubic-bezier(.25,.6,.2,1)}.u-sweep:hover,.u-sweep:focus-visible{background-size:100% 1px;text-decoration:none}.card{background:var(--bg-raised);border:1px solid var(--line);border-top:1px solid var(--text);border-radius:var(--radius)}.chip{border:1px solid var(--line);color:var(--text-dim);font:500 var(--fs-micro) / 1.5 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;background:0 0;border-radius:0;align-items:baseline;gap:.5em;padding:4px 10px;display:inline-flex}.chip:lang(ja){letter-spacing:.02em}.chip b{color:var(--text);font-variant-numeric:tabular-nums;font-weight:700}.section-title{border-bottom:1px solid var(--text);font-size:var(--fs-h2);letter-spacing:-.02em;color:var(--text);text-transform:none;align-items:baseline;gap:14px;margin:0 0 1.5rem;padding-bottom:12px;font-weight:600;line-height:1.1;display:flex}.section-title:before{counter-increment:sec;content:counter(sec, decimal-leading-zero);color:var(--accent);font:600 var(--fs-meta) / 1 var(--font-mono);letter-spacing:.08em;flex:none}.shead{border-bottom:1px solid var(--text);align-items:baseline;gap:14px;padding-bottom:12px;display:flex}.shead .section-title{border-bottom:0;flex:auto;margin:0;padding-bottom:0}.shead .count{color:var(--text-dim);white-space:nowrap}.evidence-link{font-family:var(--font-mono);font-size:var(--fs-meta);font-variant-numeric:tabular-nums;color:var(--accent);border-bottom:1px solid var(--accent-soft);padding-bottom:2px;transition:border-color .15s}.evidence-link:hover,.evidence-link:focus-visible{color:var(--accent);border-bottom-color:var(--accent);text-decoration:none}.evidence-link code{font-size:1em}.fig{border-top:1px solid var(--text);margin:28px 0 0;padding-top:18px}.fig.bare{border-top:0;padding-top:0}.figcap{border-top:1px solid var(--line);color:var(--text-faint);margin:16px 0 0;padding-top:10px;display:block}.figcap:before{counter-increment:fig;content:"Fig. " counter(fig, decimal-leading-zero) " — "}.stats{grid-template-columns:repeat(4,1fr);gap:clamp(20px,3vw,40px);display:grid}.stats.compact{--stat-size:clamp(1.5rem, 1.1rem + 1.6vw, 2.125rem);grid-template-columns:repeat(3,1fr);gap:clamp(16px,2.5vw,28px)}.stat{border-top:1px solid var(--text);padding-top:14px}.stat b{font:700 var(--stat-size,clamp(2.1rem, 4.6vw, 3.5rem)) / 1 var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--text);display:block}.stat .micro{color:var(--text-dim);margin-top:10px;display:block}.row{border-bottom:1px solid var(--line);color:inherit;grid-template-columns:64px minmax(0,1fr) 250px;gap:12px 28px;margin-inline:-24px;padding:clamp(24px,3.5vw,40px) 24px;transition:background-color .25s;display:grid}.row:hover,.row:focus-visible{background:var(--bg-raised);text-decoration:none}.row:focus-visible{outline-offset:-2px}.row .no{font:700 var(--fs-meta) / 1.9 var(--font-mono);font-variant-numeric:tabular-nums;color:var(--accent);padding-top:6px}.row .row-title{font-size:var(--fs-h3);letter-spacing:-.02em;color:var(--text);margin:0 0 8px;font-weight:600;line-height:1.15;display:inline-block}.row .row-title .t{background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0% 2px;transition:background-size .35s cubic-bezier(.25,.6,.2,1)}.row:hover .row-title .t,.row:focus-visible .row-title .t{background-size:100% 2px}.row .row-title .arrow{color:var(--text-faint);margin-left:10px;font-weight:400;transition:transform .3s cubic-bezier(.2,.7,.2,1),color .3s;display:inline-block}.row:hover .row-title .arrow,.row:focus-visible .row-title .arrow{color:var(--accent);transform:translate(7px)}.row .sum{color:var(--text-dim);max-width:58ch;margin:0}.row .row-meta{text-align:right;align-content:start;justify-items:end;gap:6px;display:grid}.row .row-meta .chip,.row .row-meta .category-badge{font:500 var(--fs-micro) / 1.9 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);background:0 0;border:0;padding:0}.row .row-meta .chip b{font-weight:700}.row .row-meta .metric-chips{flex-direction:column;align-items:flex-end;gap:0}@media (width<=900px){.row{grid-template-columns:44px minmax(0,1fr)}.row .row-meta{text-align:left;grid-column:2;justify-items:start;margin-top:4px}.row .row-meta .metric-chips{align-items:flex-start}}@media (width<=640px){.stats{grid-template-columns:repeat(2,1fr)}.stats.compact{grid-template-columns:repeat(3,1fr)}.row{margin-inline:-20px;padding-inline:20px}.shead{flex-wrap:wrap;row-gap:6px}}.btn{border:1px solid var(--text);font:600 var(--fs-meta) / 1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text);background:0 0;border-radius:0;padding:12px 24px;transition:background-color .2s,color .2s,border-color .2s;display:inline-block}.btn:hover,.btn:focus-visible{background:var(--text);color:var(--bg-raised);text-decoration:none}.btn.primary{background:var(--text);color:#fff}.btn.primary:hover,.btn.primary:focus-visible{background:var(--accent);border-color:var(--accent)}.pagehead{padding-block:clamp(48px,7vw,88px) 0}.pagehead h1{font-family:var(--font-display,var(--font-sans));font-size:var(--fs-cover);letter-spacing:-.03em;margin:0;font-weight:600;line-height:.98}.pagehead .sub{color:var(--text-dim);font-size:var(--fs-lead);margin:12px 0 0}body .project-card{transition:border-color .25s,background-color .25s}body .project-card:hover{border-color:var(--text);background:var(--bg-raised);transform:none}body .langbars svg{border-radius:0;height:12px}body .langbars .dot{border-radius:0;width:8px;height:8px}body .langbars .legend{gap:.35rem 1.4rem;margin-top:.8rem}body .langbars .legend li{font-family:var(--font-mono);font-size:var(--fs-meta)}body .langbars .pct{font-variant-numeric:tabular-nums}body .spark polyline{stroke:var(--text);stroke-width:1.5px}body .spark polygon{fill:var(--bg-overlay)}body .spark text{font-family:var(--font-mono)}body .heatmap rect{rx:0;ry:0}body .heatmap .swatch{border-radius:0}body .heatmap text{font-family:var(--font-mono)}body .timeline{margin-top:10px}body .timeline:before{display:none}body .timeline .event{grid-template-columns:96px minmax(0,1fr);column-gap:42px;padding:20px 0;display:grid;position:relative}body .timeline .event+.event{margin-top:0}body .timeline .event>:not(time){grid-column:2}body .timeline .event time{font:500 var(--fs-meta) / 1.7 var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-dim);grid-column:1}body .timeline .event:before{content:"";background:var(--line);border:0;border-radius:0;width:1px;height:auto;position:absolute;top:0;bottom:0;left:108px}body .timeline .event:first-child:before{top:27px}body .timeline .event:last-child:before{height:27px;bottom:auto}body .timeline .event:first-child:last-child:before{display:none}body .timeline .event:after{content:"";background:var(--text);width:7px;height:7px;position:absolute;top:24px;left:105px}body .timeline .event-title{letter-spacing:-.01em;font-weight:600}@media (width<=760px){body .timeline .event{grid-template-columns:76px minmax(0,1fr);column-gap:30px}body .timeline .event:before{left:86px}body .timeline .event:after{left:83px}}body .theme-dock summary,body .theme-dock ul{border-radius:0}@media (prefers-reduced-motion:reduce){.u-sweep,.row,.row .row-title .t,.row .row-title .arrow,.btn,.evidence-link,body .project-card{transition:none}.u-sweep:hover,.u-sweep:focus-visible{background-size:100% 1px}.row:hover .row-title .arrow,.row:focus-visible .row-title .arrow{transform:none}}
