.character-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:24px}
.character-card{display:flex;min-height:220px;flex-direction:column;padding:20px;border:1px solid var(--line);background:var(--paper);color:inherit;text-decoration:none;transition:transform .15s ease,border-color .15s ease}
.character-card:hover{transform:translateY(-2px);border-color:var(--accent)}
.character-card>span{color:var(--accent);font-size:.76rem;font-weight:800;letter-spacing:.08em}
.character-card h2{margin:10px 0 2px;font-size:1.28rem;line-height:1.35}
.character-card small{color:var(--muted)}
.character-card p{display:-webkit-box;overflow:hidden;margin:16px 0;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-height:1.7}
.character-card>b{margin-top:auto;color:var(--muted);font-size:.82rem}
.character-intro{margin-bottom:18px}
.character-quest{margin:0 0 18px;padding:22px;border:1px solid var(--line);background:var(--paper)}
.character-quest-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.character-quest-head span{color:var(--accent);font-size:.76rem;font-weight:800;letter-spacing:.08em}
.character-quest-head h2{margin:5px 0 0;font-size:1.35rem}
.character-quest-head small{color:var(--muted)}
.character-quest-head>b{white-space:nowrap;padding:5px 8px;background:var(--surface);font-size:.8rem}
.character-quest details{margin:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.character-quest summary{padding:13px 0;cursor:pointer;font-weight:800}
.character-objectives{margin:0 0 16px;padding-left:24px}
.character-objectives li{margin:0 0 12px;padding-left:5px}
.character-objectives p{margin:4px 0;color:var(--muted)}
.character-links{padding:22px;border:1px solid var(--line);background:var(--paper)}
.character-links div{display:flex;flex-wrap:wrap;gap:8px}
.character-links a{padding:8px 10px;border:1px solid var(--line);text-decoration:none}
.character-toc{position:sticky;top:84px;align-self:start}
@media(max-width:980px){.character-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.character-grid{grid-template-columns:1fr}.character-card{min-height:0}.character-quest{padding:17px}.character-quest-head{display:block}.character-quest-head>b{display:inline-block;margin-top:10px}.character-toc{position:static}}
