:root { --ink:#232522; --muted:#5f655f; --accent:#8b6812; --accent-soft:#eee8d9; --line:#deddd6; --paper:#f7f6f1; --surface:rgba(255,255,255,.84); }
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:radial-gradient(circle at 8% 18%,rgba(139,104,18,.055),transparent 24rem),radial-gradient(circle at 94% 70%,rgba(74,104,108,.045),transparent 28rem),var(--paper); }
a { color:var(--accent); }
a:focus-visible { outline:2px solid var(--accent); outline-offset:4px; }
.page-section { scroll-margin-top:82px; }
.site-header { position:sticky; top:0; z-index:20; width:100%; margin:0; padding:15px max(20px,calc((100% - 920px)/2)); display:flex; align-items:center; justify-content:space-between; gap:24px; background:rgba(247,246,241,.88); border-bottom:1px solid rgba(222,221,214,.9); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); }
.site-mark { font-size:18px; font-weight:700; letter-spacing:-.025em; color:var(--ink); }
.site-mark span { color:#fba524; }
.site-header nav { display:flex; flex-wrap:wrap; gap:6px; }
.site-header nav a { padding:8px 11px; border-radius:999px; color:var(--muted); font-size:13px; font-weight:700; transition:color .18s ease,background .18s ease; }
.site-header nav a:hover { color:var(--accent); }
.site-header nav a[aria-current="true"] { color:var(--ink); background:var(--accent-soft); }
.site-main { width:min(880px,calc(100% - 40px)); margin:0 auto 72px; }
.hero { display:grid; grid-template-columns:minmax(0,1fr) 220px; align-items:center; gap:54px; padding:68px 0 58px; border-bottom:1px solid var(--line); }
.eyebrow,.publication-type,.project-index { color:var(--accent); font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; }
.hero h1 { margin:12px 0 20px; font-size:clamp(34px,5vw,50px); line-height:1.08; letter-spacing:-.04em; }
.hero p { max-width:560px; color:var(--muted); line-height:1.75; margin:0 0 14px; font-size:15px; }
.hero .hero-role { margin:-8px 0 22px; color:var(--ink); font-size:15px; font-weight:700; line-height:1.55; }
.hero .hero-role span { color:var(--muted); font-weight:400; }
.hero p a { color:inherit; font-weight:inherit; text-decoration:underline; text-decoration-color:#c9c6bf; text-underline-offset:3px; }
.hero-links,.publication-links { display:flex; flex-wrap:wrap; gap:20px; margin-top:22px; }
.hero-links a,.publication-links a { font-weight:700; font-size:13px; }
.hero-links { align-items:center; }
.hero-links .contact-icon { width:38px; height:38px; display:grid; place-items:center; flex:0 0 38px; border:1px solid var(--line); border-radius:50%; background:var(--surface); color:var(--accent); box-shadow:0 4px 14px rgba(42,45,40,.04); }
.hero-links .contact-icon:hover { background:var(--accent-soft); }
.contact-icon svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.hero-links .contact-icon--brand svg { fill:currentColor; stroke:none; }
.hero-links .contact-icon--github { color:#24292f; }
.hero-links .contact-icon--scholar { color:#4285f4; }
.contact-icon--scholar .scholar-cap { fill:#fff; }
.portrait { width:220px; height:220px; object-fit:cover; border-radius:18px; border:1px solid rgba(255,255,255,.7); box-shadow:0 18px 44px rgba(35,37,34,.11); }
.content-section { padding:48px 0 12px; }
.content-section h2 { display:flex; align-items:center; gap:16px; width:100%; font-size:25px; line-height:1.25; font-weight:700; margin:0 0 25px; text-decoration:none; letter-spacing:-.02em; }
.content-section h2::after { content:""; flex:1; height:1px; background:var(--line); }
.news-list { padding-left:2px; margin:0 0 10px; }
.news-item { padding:9px 0; }
.news-text { line-height:1.6; }
.service-list { padding:2px 20px; border:1px solid var(--line); border-radius:14px; background:var(--surface); box-shadow:0 8px 28px rgba(42,45,40,.045); }
.service-item { display:grid; grid-template-columns:150px minmax(0,1fr); gap:24px; padding:20px 0; }
.service-item + .service-item { border-top:1px solid var(--line); }
.service-label { padding-top:3px; color:#8b6812; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.service-venues { margin:0; padding:0; list-style:none; color:var(--muted); font-size:14px; line-height:1.65; }
.service-venues li { position:relative; padding:0 0 9px 14px; }
.service-venues li:last-child { padding-bottom:0; }
.service-venues li::before { content:""; position:absolute; left:0; top:.72em; width:4px; height:4px; border-radius:50%; background:var(--accent); }
.service-item a { color:var(--ink); text-decoration:underline; text-decoration-color:#d5d2ca; text-underline-offset:3px; }
.publication-list { display:grid; gap:16px; border-top:0; }
.publication-note { margin:-10px 0 20px; color:var(--muted); font-size:13px; }
.publication { display:grid; grid-template-columns:220px minmax(0,1fr); gap:24px; padding:18px; border:1px solid var(--line); border-radius:14px; background:var(--surface); box-shadow:0 8px 28px rgba(42,45,40,.05); transition:transform .18s ease,box-shadow .18s ease; }
.publication:hover { transform:translateY(-2px); box-shadow:0 12px 34px rgba(42,45,40,.08); }
.publication-visual { display:block; align-self:start; aspect-ratio:16 / 10; overflow:hidden; border:1px solid var(--line); border-radius:9px; background:#f7f8f8; }
.publication-visual img { display:block; width:100%; height:100%; object-fit:contain; transition:transform .22s ease; }
.publication-visual:hover img { transform:scale(1.025); }
.publication h4 { margin:8px 0 9px; line-height:1.38; font-size:17px; }
.publication p { margin:0 0 8px; line-height:1.55; color:var(--muted); }
.publication .self-author { color:var(--ink); font-weight:400; }
.publication .publication-summary { color:#41474f; }
.publication-links { margin-top:10px; }
.site-footer { width:min(640px,calc(100% - 40px)); margin:-12px auto 44px; text-align:center; }
.visitor-map { padding:18px; border:1px solid var(--line); border-radius:14px; background:var(--surface); box-shadow:0 8px 28px rgba(42,45,40,.045); }
.visitor-map img { display:block; width:100%; height:auto; margin:0 auto; border-radius:8px; }
.footer-meta { padding:24px 12px 0; color:var(--muted); }
.footer-meta p { margin:0 0 8px; font-size:13px; line-height:1.55; }
.footer-meta p:first-child { color:#505650; font-size:14px; }
.back-to-top { position:fixed; right:22px; bottom:22px; display:grid; place-items:center; width:38px; height:38px; border-radius:50%; background:rgba(38,45,52,.8); color:white; font-size:22px; box-shadow:0 4px 16px rgba(0,0,0,.15); }
.back-to-top:hover { color:white; background:#242b31; }
@media (max-width:680px) { .page-section { scroll-margin-top:126px; } .site-header { align-items:flex-start; flex-direction:column; gap:7px; padding:12px 20px 10px; } .site-header nav { width:100%; gap:2px; justify-content:space-between; } .site-header nav a { padding:7px 8px; font-size:12px; } .hero { grid-template-columns:1fr; gap:28px; padding:38px 0 42px; } .portrait { grid-row:1; width:138px; height:138px; border-radius:14px; } .service-list { padding:2px 16px; } .service-item { grid-template-columns:1fr; gap:6px; } .publication { grid-template-columns:1fr; gap:18px; padding:15px; } .publication-visual { width:100%; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } .publication { transition:none; } }

.publication-group + .publication-group { margin-top:34px; }
.publication-group-title { margin:0 0 16px; color:var(--ink); font-size:20px; line-height:1.35; font-weight:600; }
.paper-kind { display:inline-block; vertical-align:middle; padding:2px 7px; border:1px solid var(--line); border-radius:5px; color:var(--muted); font-size:11px; font-weight:400; letter-spacing:0; white-space:nowrap; }
