:root{--paper:#f3efe6;--paper-2:#e9e2d5;--ink:#191a18;--muted:#69685f;--line:#c9c2b5;--red:#9c3527;--dark:#20231f;--white:#fbfaf6;--serif:"Noto Serif SC","Songti SC",serif;--sans:"Noto Sans SC","PingFang SC",sans-serif;--pad:clamp(1.25rem,4vw,4.5rem)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:6rem}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.75}.skip-link{position:fixed;top:-5rem;left:1rem;z-index:100;background:var(--ink);color:white;padding:.6rem 1rem}.skip-link:focus{top:1rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}.site-header{height:84px;padding:0 var(--pad);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(243,239,230,.93);backdrop-filter:blur(14px);z-index:20}.brand{display:flex;align-items:center;gap:.8rem}.brand-mark{width:40px;height:40px;background:var(--red);color:white;display:grid;place-items:center;font-family:var(--serif);font-weight:600}.brand-copy{display:flex;flex-direction:column;line-height:1.15}.brand-copy strong{font:600 1rem var(--serif);letter-spacing:.15em}.brand-copy small{font-size:.62rem;color:var(--muted);margin-top:.25rem;letter-spacing:.12em}.site-nav{display:flex;gap:clamp(1rem,2.5vw,2.6rem);font-size:.78rem;letter-spacing:.12em}.site-nav a{position:relative}.site-nav a:after{content:"";height:1px;position:absolute;left:0;right:100%;bottom:-.5rem;background:var(--red);transition:.25s}.site-nav a:hover:after,.site-nav a:focus-visible:after{right:0}.menu-toggle{display:none;background:none;border:0;padding:.5rem}.menu-toggle span:not(.sr-only){display:block;width:24px;height:1px;background:var(--ink);margin:6px}
.hero{min-height:calc(100vh - 84px);display:grid;grid-template-columns:65px 1fr minmax(280px,.7fr) 30px;gap:clamp(1.5rem,4vw,5rem);padding:clamp(3rem,8vw,7rem) var(--pad);position:relative;overflow:hidden}.hero-index{font:400 .75rem var(--sans);padding-top:1.3rem;border-top:1px solid var(--ink)}.eyebrow{font-size:.68rem;letter-spacing:.22em;color:var(--red);font-weight:600;margin:0 0 2rem}.hero h1{font:500 clamp(2.7rem,6vw,6.2rem)/1.18 var(--serif);letter-spacing:-.04em;margin:0;max-width:920px}.hero h1 em{font-style:normal;color:var(--red)}.hero-intro{max-width:600px;color:var(--muted);font-family:var(--serif);font-size:clamp(1rem,1.4vw,1.22rem);margin:2.5rem 0}.hero-actions{display:flex;align-items:center;gap:2rem;margin-top:clamp(2.8rem,7vh,5.5rem)}.button{border:0;display:inline-flex;align-items:center;justify-content:space-between;gap:2.5rem;padding:.9rem 1.2rem;cursor:pointer;transition:.2s}.button-dark{background:var(--ink);color:white}.button:hover{transform:translateY(-2px);background:var(--red)}.text-link{font-size:.8rem;border-bottom:1px solid var(--ink);padding:.5rem 0}.hero-visual{position:relative;min-height:420px;align-self:center}.frame{position:absolute;border:0;display:block;object-fit:cover}.frame-back{width:65%;height:72%;right:0;top:0;opacity:.86}.frame-front{width:64%;height:68%;left:0;top:18%;box-sizing:border-box;-webkit-mask-image:radial-gradient(ellipse 96% 96% at center,#000 78%,transparent 100%);mask-image:radial-gradient(ellipse 96% 96% at center,#000 78%,transparent 100%);filter:drop-shadow(0 15px 22px rgba(35,32,27,.16))}.magnifier{position:absolute;z-index:3;left:14%;top:19%;width:clamp(88px,10vw,132px);aspect-ratio:1;border:clamp(3px,.32vw,5px) solid #111;border-radius:50%;box-sizing:border-box;background:rgba(255,255,255,.035);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22),0 7px 18px rgba(28,27,24,.14);backdrop-filter:brightness(1.06) contrast(1.03);-webkit-backdrop-filter:brightness(1.06) contrast(1.03)}.magnifier:before{content:"";position:absolute;z-index:-1;width:clamp(25px,2.8vw,40px);height:clamp(6px,.65vw,10px);right:83%;top:82%;border:1px solid #303030;border-radius:2px;background:linear-gradient(180deg,#ededed 0%,#8b8b8b 42%,#f4f4f4 65%,#555 100%);transform:rotate(-45deg);transform-origin:right center}.magnifier:after{content:"";position:absolute;z-index:-2;width:clamp(105px,12vw,175px);height:clamp(10px,1.15vw,17px);right:101%;top:94%;border-radius:2px;background:linear-gradient(180deg,#333 0%,#111 55%,#292929 100%);transform:rotate(-45deg);transform-origin:right center;box-shadow:2px 4px 9px rgba(28,27,24,.2)}.hero-visual p{position:absolute;right:0;bottom:0;width:80%;margin:0;background:var(--paper);padding:1rem 0 0 2rem;font:400 .78rem/1.8 var(--serif)}.hero-side{writing-mode:vertical-rl;font-size:.6rem;letter-spacing:.18em;color:var(--muted);align-self:center;margin:0}
.section{display:grid;grid-template-columns:minmax(110px,16%) 1fr;border-top:1px solid var(--line);padding:clamp(5rem,10vw,9rem) var(--pad);gap:clamp(2rem,6vw,8rem)}.section-label{display:flex;gap:1.2rem;align-items:flex-start;font-size:.65rem;letter-spacing:.14em;line-height:1.7}.section-label span{font-size:.65rem;border-top:1px solid currentColor;padding-top:.4rem;min-width:35px}.section-label p{margin:0}.section-content{min-width:0}.intro-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(3rem,8vw,9rem)}h2{font:500 clamp(2.3rem,4.2vw,4.7rem)/1.25 var(--serif);letter-spacing:-.04em;margin:0}.prose>p{font-family:var(--serif);font-size:1.08rem;margin:0 0 1.2rem}.facts{margin:3rem 0 0;border-top:1px solid var(--line)}.facts div{display:grid;grid-template-columns:110px 1fr;border-bottom:1px solid var(--line);padding:.85rem 0;font-size:.78rem}.facts dt{color:var(--muted)}.facts dd{margin:0}.facts a{text-decoration:underline;text-underline-offset:3px}.dark-section{background:var(--dark);color:var(--white);border:0}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:3rem;margin-bottom:5rem}.section-heading>p{max-width:330px;color:#9f9f96;font-family:var(--serif);margin:0}.section-heading.compact{margin-bottom:3rem}.section-heading.compact>p{color:var(--muted)}.research-list{border-top:1px solid #55584f}.research-list article{display:grid;grid-template-columns:70px 1fr 1fr 30px;gap:2rem;align-items:center;padding:1.7rem 0;border-bottom:1px solid #55584f;transition:.2s}.research-list article:hover{padding-left:1rem;color:#e1a091}.research-list span{font-size:.65rem;color:#888b82}.research-list h3,.research-list p{margin:0}.research-list h3{font:500 1.2rem var(--serif)}.research-list p{font-size:.8rem;color:#9f9f96}.research-list b{font-weight:400}.publication-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.publication-list li{display:grid;grid-template-columns:100px 1fr 30px;gap:2rem;padding:2rem 0;border-bottom:1px solid var(--line);align-items:start}.publication-list time{font:500 1.4rem var(--serif);color:var(--red)}.publication-list span{font-size:.62rem;color:var(--muted);letter-spacing:.13em}.publication-list h3{font:500 1.2rem var(--serif);margin:.45rem 0}.publication-list p{font-size:.78rem;color:var(--muted);margin:0}.publication-list li>a{font-size:1.2rem}.teaching-section{background:var(--paper-2)}.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.course-card{background:var(--paper-2);padding:1.8rem;min-height:410px;display:flex;flex-direction:column}.course-card.featured{background:var(--red);color:white}.course-card>div{display:flex;justify-content:space-between;font-size:.62rem;letter-spacing:.08em}.course-no{font:400 4rem var(--serif);margin:2.2rem 0 auto;opacity:.35}.course-card h3{font:500 1.45rem var(--serif);margin:0 0 .8rem}.course-card>p:not(.course-no){font-size:.78rem;color:var(--muted)}.course-card.featured>p:not(.course-no){color:#edc4bd}.course-card a{margin-top:1.5rem;border-top:1px solid currentColor;padding-top:1rem;font-size:.72rem;display:flex;justify-content:space-between}.resource-tools{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.5rem}.filter{background:transparent;border:1px solid var(--line);padding:.5rem .9rem;font-size:.72rem;cursor:pointer;color:var(--ink)}.filter.active,.filter:hover{background:var(--ink);color:white;border-color:var(--ink)}.resource-list{border-top:1px solid var(--line)}.resource-list article{display:grid;grid-template-columns:64px 1fr 80px;gap:1.5rem;align-items:center;padding:1.25rem 0;border-bottom:1px solid var(--line)}.resource-list article[hidden]{display:none}.file-type{width:52px;height:52px;display:grid;place-items:center;background:var(--paper-2);font-size:.62rem;color:var(--red);font-weight:600}.resource-list small{font-size:.62rem;color:var(--muted);letter-spacing:.1em}.resource-list h3{font:500 1rem var(--serif);margin:.2rem 0}.resource-list p{font-size:.65rem;color:var(--muted);margin:0}.resource-list a{font-size:.72rem;text-align:right;text-decoration:underline;text-underline-offset:4px}.copyright-note{margin-top:2.5rem;border-left:3px solid var(--red);padding:.2rem 1.2rem;display:grid;grid-template-columns:90px 1fr;font-size:.72rem;color:var(--muted)}.copyright-note strong{color:var(--ink)}.copyright-note p{margin:0}.guestbook-section{background:#dcd5c8}.guestbook-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(3rem,8vw,9rem)}.guestbook-intro{max-width:480px;font-family:var(--serif);color:var(--muted);margin:1.5rem 0 3rem}form label{display:block;font-size:.72rem;font-weight:500}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}input,textarea{display:block;width:100%;background:transparent;border:0;border-bottom:1px solid #aaa294;padding:.75rem 0;margin-bottom:1.2rem;border-radius:0;outline:none}textarea{border:1px solid #aaa294;padding:.8rem;margin:.5rem 0;resize:vertical}input:focus,textarea:focus{border-color:var(--red);box-shadow:0 1px 0 var(--red)}.char-count{display:block;text-align:right;color:var(--muted);font-size:.65rem;margin-bottom:1rem}.char-count b{font-weight:400}.form-status{font-size:.72rem;min-height:1.4rem;color:var(--red)}.messages-panel{border-top:1px solid #aaa294}.messages-heading{display:flex;align-items:center;justify-content:space-between;padding:1rem 0;border-bottom:1px solid #aaa294}.messages-heading h3{font:500 1.1rem var(--serif);margin:0}.messages-heading span{font-size:.68rem;color:var(--muted)}.message{padding:1.4rem 0;border-bottom:1px solid #aaa294}.message header{display:flex;justify-content:space-between;align-items:center}.message h4{font:500 .85rem var(--serif);margin:0}.message h4 span{font:400 .65rem var(--sans);color:var(--muted);margin-left:.5rem}.message time{font-size:.62rem;color:var(--muted)}.message p{font:400 .88rem/1.8 var(--serif);margin:.7rem 0;white-space:pre-wrap;overflow-wrap:anywhere}.message button{border:0;background:none;color:var(--muted);padding:0;font-size:.65rem;cursor:pointer;text-decoration:underline}.empty-state{padding:3rem 0;color:var(--muted);font:400 .9rem var(--serif)}footer{background:var(--ink);color:white;padding:3.5rem var(--pad);display:grid;grid-template-columns:1fr 1fr auto;gap:2rem;align-items:center}.footer-brand .brand-copy small{color:#aaa}.footer-brand .brand-mark{background:var(--red)}footer>p{font:400 .85rem var(--serif);color:#aaa}footer>div{display:flex;gap:1.5rem;font-size:.68rem}footer>small{grid-column:1/-1;color:#777;font-size:.58rem;border-top:1px solid #3f413d;padding-top:1.5rem}
@media(max-width:900px){.menu-toggle{display:block}.site-nav{position:absolute;top:84px;left:0;right:0;background:var(--paper);padding:1rem var(--pad) 1.5rem;display:none;flex-direction:column;border-bottom:1px solid var(--line)}.site-nav.open{display:flex}.hero{grid-template-columns:40px 1fr}.hero-visual{grid-column:2;min-height:350px;width:min(100%,450px);margin-top:1rem}.hero-side{display:none}.section{grid-template-columns:1fr}.section-label{border-bottom:1px solid currentColor;padding-bottom:1rem}.intro-grid,.guestbook-grid{grid-template-columns:1fr}.course-grid{grid-template-columns:1fr}.course-card{min-height:310px}.course-no{margin:1.2rem 0 auto}.section-heading{align-items:flex-start;flex-direction:column}.research-list article{grid-template-columns:50px 1fr 24px}.research-list article p{grid-column:2}.research-list article b{grid-column:3;grid-row:1}.guestbook-grid{gap:4rem}footer{grid-template-columns:1fr auto}footer>p{display:none}}
@media(max-width:560px){.site-header{height:72px}.brand-copy small{display:none}.hero{min-height:auto;grid-template-columns:1fr;padding-top:3.5rem}.hero-index{display:none}.hero h1{font-size:2.7rem}.hero-visual{grid-column:1;min-height:300px}.hero-actions{align-items:flex-start;flex-direction:column;gap:1rem}.section{padding-top:4.5rem;padding-bottom:4.5rem}.intro-grid{gap:2.5rem}.publication-list li{grid-template-columns:55px 1fr;gap:1rem}.publication-list li>a{display:none}.resource-list article{grid-template-columns:50px 1fr}.resource-list article>a{grid-column:2;text-align:left}.copyright-note{grid-template-columns:1fr}.field-row{grid-template-columns:1fr}.messages-panel{margin-top:1rem}footer{grid-template-columns:1fr}footer>div{flex-wrap:wrap}.footer-brand{margin-bottom:1rem}}

/* Contact section: a lightweight replacement for the former local guestbook. */
.contact-section{background:#dcd5c8}
.contact-content{display:flex;flex-direction:column;align-items:flex-start}
.contact-intro{max-width:620px;font:400 1.1rem/1.9 var(--serif);color:var(--muted);margin:1.5rem 0 2.5rem}
.contact-email{font:500 clamp(1.15rem,2.2vw,2rem)/1.3 var(--serif);border-bottom:1px solid currentColor;overflow-wrap:anywhere}
.contact-button{margin-top:2rem}
.contact-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.72fr);gap:clamp(3rem,7vw,8rem);align-items:center}
.contact-copy{display:flex;flex-direction:column;align-items:flex-start}
.contact-art{display:block;width:70%;max-height:430px;justify-self:center;object-fit:cover;-webkit-mask-image:radial-gradient(ellipse 96% 96% at center,#000 72%,transparent 100%);mask-image:radial-gradient(ellipse 96% 96% at center,#000 72%,transparent 100%);filter:drop-shadow(0 18px 28px rgba(35,32,27,.14))}
@media(max-width:900px){.contact-content{grid-template-columns:1fr}.contact-art{width:min(70%,420px);max-height:460px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
.research-list h3 small{display:block;margin-top:.35rem;font:400 .68rem var(--sans);letter-spacing:.06em;color:#9f9f96}
.about-photo{margin:0;align-self:start;justify-self:center;width:60%;max-width:420px;position:relative}.about-photo:before{content:"";position:absolute;inset:-10px 10px 10px -10px;border:1px solid var(--red);z-index:-1}.about-photo img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;filter:saturate(.88) contrast(1.03)}
.lang-switch{display:flex;align-items:center;gap:.3rem;margin-left:.3rem}.lang-switch button{border:0;background:none;color:var(--muted);padding:0;font-size:.68rem;cursor:pointer}.lang-switch button.active{color:var(--red);font-weight:600}.lang-switch span{color:var(--line);font-size:.65rem}
@media(max-width:900px){.lang-switch{margin:1rem 0 0;padding-top:1rem;border-top:1px solid var(--line)}}
.publication-list li>a{align-self:center;justify-self:end;font:600 .68rem var(--sans);letter-spacing:.08em;border-bottom:1px solid currentColor;padding:.35rem 0}
@media(max-width:560px){.publication-list li>a{display:inline-block;grid-column:2;justify-self:start;margin-top:.35rem}}
.latin-name{font:500 .68rem var(--sans);letter-spacing:.04em;white-space:nowrap;color:var(--muted);margin-left:.35rem}.footer-brand .latin-name{color:#aaa}
.research-links{grid-column:2/-1;display:flex;flex-wrap:wrap;gap:.5rem 1.4rem;padding-top:.4rem}.research-links>small{flex-basis:100%;font:.58rem var(--sans);letter-spacing:.12em;color:#777b72}.research-links a{font:400 .7rem/1.5 var(--serif);color:#c8c8bf;border-bottom:1px solid #55584f;padding:.2rem 0}.research-links a:hover{color:#e1a091;border-color:#e1a091}.research-links i{font-style:normal;margin-left:.25rem}.publication-list li[id]{scroll-margin-top:7rem}.publication-list li:target{background:rgba(156,53,39,.08);box-shadow:inset 3px 0 0 var(--red);padding-left:1rem;padding-right:1rem;transition:background .5s}
#about .prose>p{position:relative;padding:0 0 1.15rem 1.8rem;margin-bottom:1.15rem;border-bottom:1px solid var(--line)}#about .prose>p:before{content:"→";position:absolute;left:0;top:.05rem;color:var(--red);font:600 1rem var(--sans)}#about .prose>p:last-of-type{border-bottom:0;margin-bottom:0}
