:root {
  color-scheme: light;
  --fg:#262626;
  --muted:#6d6d6d;
  --line:#e4e4e4;
  --link:#1769aa;
  --accent:#9b1c31;
  --bg:#fff;
  --surface:#fafafa;
  --surface-strong:#f1f3f5;
  --code-bg:#f6f6f6;
  --header-bg:rgba(255,255,255,.96);
  --header-fg:#262626;
}
html[data-theme="dark"] {
  color-scheme: dark;
  --fg:#e8e8e8;
  --muted:#a9a9a9;
  --line:#34373b;
  --link:#79b8ff;
  --accent:#ff8ea1;
  --bg:#17191c;
  --surface:#202328;
  --surface-strong:#2a2e34;
  --code-bg:#22262b;
  --header-bg:rgba(23,25,28,.96);
  --header-fg:#f0f0f0;
}
* { box-sizing:border-box; }
html { font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,"Noto Sans JP",sans-serif; color:var(--fg); background:var(--bg); }
body { margin:0; line-height:1.65; font-size:16px; color:var(--fg); background:var(--bg); transition:background-color .15s ease,color .15s ease; }
a { color:var(--link); text-decoration:none; }
a:hover { text-decoration:underline; }
a:focus-visible,button:focus-visible,summary:focus-visible { outline:2px solid var(--link); outline-offset:3px; border-radius:4px; }
.site-header { border-bottom:1px solid var(--line); background:var(--header-bg); color:var(--header-fg); backdrop-filter:saturate(140%) blur(8px); }
.nav-wrap { position:relative; max-width:1040px; margin:0 auto; padding:1rem 1.4rem; display:flex; align-items:center; gap:1.5rem; }
.site-title { color:var(--header-fg); font-weight:650; font-size:1.05rem; white-space:nowrap; }
.top-nav { margin-left:auto; display:flex; flex-wrap:wrap; gap:.9rem; }
.top-nav a { color:var(--header-fg); font-size:.92rem; }
.theme-toggle { width:2.5rem; height:2.5rem; flex:0 0 auto; display:grid; place-items:center; padding:.5rem; border:1px solid var(--line); border-radius:50%; color:var(--header-fg); background:transparent; cursor:pointer; }
.theme-toggle:hover { background:var(--surface); }
.theme-toggle:focus-visible { outline-offset:2px; border-radius:50%; }
.theme-icon { width:1rem; height:1rem; display:block; filter:none; }
html[data-theme="dark"] .theme-icon { filter:invert(1); }
.theme-icon-sun { display:none; }
html[data-theme="dark"] .theme-icon-moon { display:none; }
html[data-theme="dark"] .theme-icon-sun { display:block; }
.site-main { max-width:900px; margin:0 auto; padding:2.25rem 1.4rem 4rem; }
.demo-main { max-width:1420px; }
.prose h1 { font-size:2rem; margin:.2rem 0 1.3rem; font-weight:650; }
.prose h2 { font-size:1.45rem; margin-top:2.4rem; border-bottom:1px solid var(--line); padding-bottom:.25rem; }
.prose h3 { font-size:1.12rem; margin-top:1.7rem; }
.prose img { max-width:100%; height:auto; }
.profile-photo { width:120px; border-radius:3px; }
.meta-links { display:flex; flex-wrap:wrap; gap:.45rem .85rem; }
.meta-links a { display:inline-flex; align-items:center; gap:.22em; }
.meta-icon { width:.92em; height:.92em; display:inline-block; vertical-align:-.08em; flex:0 0 auto; }
.pub-icon { width:.8em; height:.8em; display:block; flex:0 0 auto; fill:currentColor; opacity:.84; }
html[data-theme="dark"] .meta-icon { filter:invert(1); }
.period-list { list-style:none; padding:0; margin:.5rem 0 1.5rem; }
.period-list li { margin:.32rem 0; }
.period { display:inline-block; min-width:9.6rem; color:var(--muted); font-variant-numeric:tabular-nums; }
.pub-jump-nav { display:flex; flex-wrap:wrap; gap:.28rem .85rem; margin:1rem 0 1.6rem; padding:.55rem .75rem; border:1px solid var(--line); border-radius:12px; background:var(--surface-strong); }
.pub-jump-nav a { font-size:.86rem; font-weight:500; }
.pub-anchor { display:block; scroll-margin-top:1rem; }
.publications { padding-left:1.65rem; }
.publications li { padding-left:.25rem; margin:0 0 1.15rem; }
.pub-award { color:var(--accent); margin-top:.25rem; }
.pub-links { display:flex; flex-wrap:wrap; align-items:flex-start; gap:.16rem .22rem; margin-top:.38rem; }
.pub-action { display:flex; min-height:1.6rem; align-items:center; gap:.26em; border:1px solid transparent; border-radius:999px; padding:.08rem .4rem; color:var(--link); font-size:.8rem; font-weight:500; line-height:1.45; background:transparent; }
.pub-action:hover { text-decoration:none; border-color:var(--line); background:var(--surface); }
.pub-action:focus-visible { outline-offset:1px; border-radius:999px; }
details.pub-bibtex { margin:0; }
details.pub-bibtex summary { cursor:pointer; list-style:none; }
details.pub-bibtex summary::-webkit-details-marker { display:none; }
details.pub-bibtex[open] { flex-basis:100%; width:100%; }
details.pub-bibtex pre, pre, code { background:var(--code-bg); }
details.pub-bibtex pre { width:100%; overflow-x:auto; border:1px solid var(--line); margin:.35rem 0 0; padding:.8rem; font-size:.8rem; }
.research-figure { margin:1.2rem 0 1.6rem; text-align:center; }
.research-figure img { display:block; width:min(var(--research-image-width),100%); max-width:100%; height:auto; margin:0 auto; }
.member-row { margin:.25rem 0; }
.site-footer { border-top:1px solid var(--line); color:var(--muted); font-size:.82rem; max-width:1040px; margin:0 auto; padding:1.25rem 1.4rem 2rem; }
.fa-icon-link { display:inline-flex; align-items:center; justify-content:center; width:1em; height:1em; margin-left:.18em; vertical-align:-.08em; color:var(--link); }
.fa-icon-link:hover { text-decoration:none; }
.fa-icon { display:block; width:.92em; height:.92em; fill:currentColor; }
.demo-content { width:100%; }
.demo-content .container,.demo-content .container-fluid { width:100%; margin-right:auto; margin-left:auto; }
.demo-content .row { display:flex; flex-wrap:wrap; width:100%; }
.demo-content .text-left { text-align:left; }
.demo-content .text-center { text-align:center; }
.demo-content .px-5 { padding-left:3rem; padding-right:3rem; }
.demo-content .py-3 { padding-top:1rem; padding-bottom:1rem; }
.demo-content .p-3 { padding:1rem; }
.demo-content .mb-3 { margin-bottom:1rem; }
.demo-content .mt-3 { margin-top:1rem; }
.demo-content table { width:100%; border-collapse:collapse; }
.demo-content th,.demo-content td { border:1px solid var(--line); padding:.5rem; vertical-align:middle; }
.demo-content img,.demo-content video { max-width:100%; height:auto; }
.demo-content audio { width:min(260px,100%); }
.demo-authors { color:var(--muted); }
@media (max-width:760px) {
  .nav-wrap { align-items:flex-start; flex-direction:column; gap:.65rem; }
  .top-nav { width:100%; margin-left:0; gap:.55rem .9rem; }
  .theme-toggle { position:absolute; top:.65rem; right:1rem; }
  .period { display:block; min-width:0; }
  .pub-jump-nav { gap:.35rem .75rem; padding:.5rem .65rem; }
  .demo-content .px-5 { padding-left:.5rem; padding-right:.5rem; }
}
@media (max-width:520px) {
  .site-main { padding-left:1.1rem; padding-right:1.1rem; }
  .prose h1 { font-size:1.6rem; }
  .prose h2 { font-size:1.3rem; margin-top:2rem; }
  .prose h3 { font-size:1.05rem; margin-top:1.45rem; }
}
