@font-face{font-family:WenyuanCorpus;src:url("assets/corpus-serif-heavy-v14.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
/* Four independent scrolls; reveal wrapper never transforms the hover contents. */
:root{--gallery-hover-duration:250ms}
.research-home .entry-layout{grid-template-rows:1fr;grid-template-columns:minmax(240px,1fr) minmax(440px,1.7fr) minmax(240px,1fr);gap:clamp(24px,3vw,56px);padding:0 28px;min-height:700px;max-width:1920px;margin:auto}
.research-home .entry-panel{padding:32px 0;min-width:0}
.corpus-center-heading{display:flex;align-items:center;justify-content:space-between;margin:0 2px 24px;color:var(--experience-blue)}
.corpus-center-heading>span{font:700 23px var(--corpus-serif);letter-spacing:.14em}
.corpus-center-heading>a{font-size:12px;text-decoration:none}
.corpus-scrolls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;height:100%;min-width:0}
.corpus-scrolls--left{align-items:start}.corpus-scrolls--right{align-items:end}
.corpus-item{position:relative;margin:0;min-width:0;--corpus-cover-height:clamp(500px,82svh,920px);height:var(--corpus-cover-height)}
.corpus-scrolls--left .corpus-item:nth-child(2),.corpus-scrolls--right .corpus-item:nth-child(1){--corpus-cover-height:clamp(440px,70svh,820px)}
.corpus-scrolls--left .corpus-cover{border-radius:0 0 8px 8px}.corpus-scrolls--right .corpus-cover{border-radius:8px 8px 0 0}
.corpus-item::after{content:'';position:absolute;left:-2px;right:-2px;height:7px;z-index:3;border-radius:3px;background:linear-gradient(#d4c8b2,#f7f1e5 45%,#b9aa90);box-shadow:0 3px 7px #56452f20;pointer-events:none}
.corpus-scrolls--left .corpus-item::after{bottom:0}.corpus-scrolls--right .corpus-item::after{top:0}
.scrolls-ready .corpus-scrolls--left .corpus-item{clip-path:inset(0 0 100% 0)}
.scrolls-ready .corpus-scrolls--right .corpus-item{clip-path:inset(100% 0 0 0)}
.scrolls-ready .scrolls-open .corpus-item{animation:scroll-unfurl 1600ms cubic-bezier(.22,.61,.36,1) both}
.scrolls-ready .scrolls-open .corpus-item:nth-child(2){animation-delay:180ms}
.scrolls-ready .scrolls-open .corpus-scrolls--right .corpus-item{animation-delay:260ms}
.scrolls-ready .scrolls-open .corpus-scrolls--right .corpus-item:nth-child(2){animation-delay:440ms}
@keyframes scroll-unfurl{to{clip-path:inset(0 0 0 0)}}
@media(prefers-reduced-motion:reduce){.scrolls-ready .corpus-scrolls .corpus-item{clip-path:none;animation:none}}
.corpus-cover{position:relative;display:block;isolation:isolate;width:100%;height:var(--corpus-cover-height);padding:0;overflow:hidden;border:0;border-radius:14px;background:#e9e4d8;color:var(--experience-blue)}
.corpus-cover>img{display:block;width:100%;height:100%;object-fit:cover;object-position:center top;filter:none;opacity:1}
.corpus-cover-overlay{position:absolute;inset:0;background:rgba(255,255,255,.78);transform:scaleY(.5);transform-origin:top;transition:transform var(--gallery-hover-duration) ease-out;pointer-events:none}
.corpus-database-link{position:absolute;inset:0;display:block;cursor:pointer}
.corpus-card-title{position:absolute;inset:0;display:grid;place-items:center;margin:0;padding:0 24px;text-align:center;color:var(--experience-blue);font:700 28px/1.4 var(--corpus-serif);transform:translateY(calc(var(--corpus-cover-height) * -.25));transition:transform var(--gallery-hover-duration) ease-out}
.corpus-short-title,.corpus-full-title{grid-area:1/1;width:100%;transition:opacity var(--gallery-hover-duration) ease-out,visibility 0s var(--gallery-hover-duration)}
.corpus-short-title{opacity:1;visibility:visible}
.corpus-full-title{opacity:0;visibility:hidden;font-size:26px;text-wrap:balance}
[data-corpus="periodicals"] .corpus-full-title{font-size:22px;line-height:1.5}
.corpus-enter{position:absolute;left:50%;bottom:62px;display:flex;align-items:center;justify-content:center;gap:14px;min-height:40px;padding:0 5px;border-bottom:1px solid currentColor;font:600 14px/1.5 var(--font);white-space:nowrap;opacity:0;transform:translate(-50%,6px);transition:opacity var(--gallery-hover-duration) ease-out,transform var(--gallery-hover-duration) ease-out;pointer-events:none}
.corpus-enter svg{width:18px;height:18px}
.corpus-cover:is(:hover,:focus-within) .corpus-cover-overlay{transform:scaleY(1)}
.corpus-cover:is(:hover,:focus-within) .corpus-card-title{transform:translateY(-24px)}
.corpus-cover:is(:hover,:focus-within) .corpus-short-title{opacity:0;visibility:hidden}
.corpus-cover:is(:hover,:focus-within) .corpus-full-title{opacity:1;visibility:visible;transition-delay:0s}
.corpus-cover:is(:hover,:focus-within) .corpus-enter{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.corpus-cover:has(:focus-visible){outline:2px solid var(--experience-blue);outline-offset:4px}
.corpus-database-link:focus-visible{outline:0}

.corpus-cover[data-image-error]::before{content:'封面暂时无法加载';position:absolute;inset:0;display:grid;place-items:center;color:#625b50;font-size:14px}
@media(prefers-reduced-motion:reduce){.corpus-cover-overlay,.corpus-card-title,.corpus-short-title,.corpus-full-title,.corpus-enter{transition:none}.corpus-item{will-change:auto}}
@media(forced-colors:active){.corpus-cover{border:1px solid CanvasText}.corpus-cover-overlay{background:Canvas}.corpus-card-title,.corpus-enter{color:CanvasText}}

/* Narrow hanging-scroll titles retain the original hover transition and full-name swap. */
.corpus-scrolls .corpus-cover>img{object-fit:cover;object-position:center}
.corpus-scrolls .corpus-short-title{writing-mode:vertical-rl;justify-self:center;width:auto;letter-spacing:.3em}
.corpus-scrolls .corpus-card-title{padding:0 14px;font-size:27px}
.corpus-scrolls .corpus-full-title{font-size:22px}
.corpus-scrolls [data-corpus="periodicals"] .corpus-full-title{font-size:17px}
.corpus-scrolls .corpus-enter{font-size:12px;gap:4px;bottom:40px}
.research-home .tool-actions{gap:12px}.research-home .tool-button{min-width:0;flex:1}

/* Five equally sized scroll columns around the search panel. */
.research-home .entry-layout{grid-template-columns:repeat(3,minmax(0,.72fr)) minmax(400px,4.8fr) repeat(2,minmax(0,.72fr));column-gap:18px}
.corpus-scrolls{display:contents}
.corpus-scrolls--left .corpus-item{align-self:start}
.corpus-scrolls--right .corpus-item{align-self:end}
.scrolls-ready .scrolls-open .corpus-scrolls--left .corpus-item:nth-child(3){animation-delay:360ms}
.corpus-scrolls [data-corpus="fiction-catalogue"] .corpus-cover>img{object-position:51% center}

