.characters-page{max-width:1080px;margin:0 auto;color:var(--ink)}
.characters-page p{line-height:1.7}
.characters-page .eyebrow{margin-bottom:12px}
.characters-intro{max-width:720px;margin-bottom:38px}
.characters-intro h1{font-size:clamp(30px,3.4vw,46px)}
.characters-intro>p:not(.eyebrow){max-width:65ch}
.characters-page .character-fiction{font-size:13px;color:var(--muted)}
.characters-group+.characters-group{margin-top:38px}
.characters-group>p{max-width:70ch;margin-bottom:22px}
.characters-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:18px}
.character-card{display:flex;flex-direction:column;min-width:0;padding:20px;border:1px solid var(--border);border-radius:16px;background:var(--canvas);color:var(--ink)}
.character-card:hover{background:var(--raised)}
.character-card-portrait{height:195px;display:flex;align-items:center;justify-content:center;margin-bottom:16px}
.characters-page .character-portrait{position:relative;display:block;overflow:hidden;isolation:isolate;flex-shrink:0;background:#fffdf4;width:142px;max-width:100%;border-radius:16px}
.characters-page .character-portrait>img{position:absolute!important;display:block!important;max-width:none!important;width:var(--portrait-sheet-width)!important;height:auto!important;left:var(--portrait-sheet-left);top:var(--portrait-sheet-top);margin:0!important;pointer-events:none;user-select:none}
.character-place{font-size:12px;color:var(--muted);line-height:1.6;margin-bottom:8px}
.character-card h3{font-size:20px;margin-bottom:8px}
.characters-page .character-role{font-weight:600;color:var(--ink);font-size:14px}
.character-card .character-role{margin-bottom:12px}
.character-card .character-greeting{font-size:14px;margin-bottom:16px}
.character-meet{margin-top:auto;font-size:13px;font-weight:600;display:flex;justify-content:space-between;gap:12px}
.character-back{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-size:14px;margin-bottom:22px}
.character-profile-intro{display:grid;grid-template-columns:minmax(160px,.55fr) minmax(0,1.45fr);gap:36px;align-items:center;margin-bottom:38px}
.characters-page .character-portrait--hero{width:min(100%,250px);margin:auto;border-radius:24px}
.character-profile-intro h1{font-size:clamp(32px,3.7vw,48px);margin-bottom:14px}
.character-profile-intro .character-role{font-size:17px}
.character-profile-intro .character-greeting{font-size:19px}
.character-biography-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(230px,1fr);gap:32px}
.character-biography p{max-width:70ch}
.character-keepsakes{align-self:start;padding:24px;background:var(--raised);border:1px solid var(--border);border-radius:16px}
.character-keepsakes h2{font-size:19px}
.character-keepsakes h3{margin:24px 0 10px;font-size:17px}
.character-keepsakes ul{padding-left:20px;color:var(--secondary)}
.character-keepsakes li+li{margin-top:8px}
.character-visits,.character-stories,.character-friends{margin-top:38px}
.character-visits>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:18px}
.character-visits>div>section{padding:20px;border:1px solid var(--border);border-radius:12px}
.character-visits h3{margin-bottom:10px}
.character-visits p:last-child,.character-keepsakes p:last-child{margin-bottom:0}
.character-story{border:1px solid var(--border);border-radius:12px;background:var(--canvas);margin:12px 0;overflow:hidden}
.character-story summary{padding:20px;cursor:pointer;list-style:none}
.character-story summary::-webkit-details-marker{display:none}
.character-story summary:focus-visible{outline:3px solid var(--focus);outline-offset:-4px}
.character-story summary strong,.character-story summary span{display:block}
.character-story summary strong{font-size:18px}
.character-story summary>span:not(.character-story-read){font-size:14px;color:var(--secondary);margin-top:8px}
.character-story-read{font-size:13px;font-weight:600;margin-top:12px}
.character-story-read:after{content:' +';margin-left:6px}
.character-story[open] .character-story-read:after{content:' −'}
.character-story-content{padding:6px 24px 22px;max-width:78ch}
.character-story-content h3{font-size:19px;margin:24px 0 12px}
.character-story-cast{font-size:13px}
.character-story-content a{text-decoration:underline;text-underline-offset:3px}
.character-profile-footer{margin-top:32px;padding-top:22px;border-top:1px solid var(--border)}
@media(max-width:900px){.character-profile-intro{gap:24px}.character-biography-layout{grid-template-columns:minmax(0,1fr)}}
@media(max-width:600px){.characters-intro h1{font-size:32px}.characters-grid{grid-template-columns:minmax(0,1fr)}.character-card{display:grid;grid-template-columns:92px minmax(0,1fr);column-gap:16px;padding:16px}.character-card-portrait{grid-row:1/6;height:auto;align-self:start;margin:0}.character-card .character-portrait{width:92px;border-radius:10px}.character-card h3{font-size:18px}.character-card .character-role{font-size:13px;margin-bottom:8px}.character-card .character-greeting{font-size:13px;margin-bottom:12px}.character-place{font-size:11px}.character-meet{font-size:12px}.character-profile-intro{grid-template-columns:minmax(0,1fr);gap:24px}.characters-page .character-portrait--hero{width:180px}.character-profile-intro h1{font-size:34px}.character-keepsakes{padding:20px}.character-story summary{padding:18px}.character-story-content{padding:4px 18px 18px}}
