/* All additions are scoped to the new CAST & CREW component. */
.cast-section, .cast-subsection { scroll-margin-top: 3rem; }
.cast-section #cast-h { margin-bottom: .9rem; }
.cast-subsection { margin: 2.7rem 0 2rem; padding-top: 2rem; border-top: 1px solid var(--hair); }
.cast-subsection #cast-h { color: var(--plum); font-size: 1.45rem; letter-spacing: .025em; margin-bottom: .9rem; }
.cast-widget .cast-intro { margin: 0 0 1.8rem; color: var(--plum); font-size: 1.27rem; font-style: italic; }
.cast-widget .rune-menu { list-style: none; padding: 0; margin: 0; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .5rem; }
.cast-widget .rune-menu:not([hidden]) { display: grid; }
.cast-widget .rune-button { appearance: none; -webkit-appearance: none; display: flex; flex-direction: column; align-items: center; width: 100%; margin: 0; padding: .3rem 0 .6rem; border: 0; background: transparent; cursor: pointer; color: var(--plum); font: inherit; line-height: 1.3; }
.cast-widget .rune-disc { display: grid; place-items: center; width: 68px; height: 68px; border: 1px solid var(--gold-rule); border-radius: 50%; position: relative; color: var(--gold); background: radial-gradient(circle, rgba(255,250,229,.48), rgba(238,219,185,.05) 74%); box-shadow: inset 0 0 0 4px var(--paper), inset 0 0 0 5px rgba(169,117,42,.2); transition: box-shadow .25s ease, background .25s ease, color .25s ease, transform .25s ease; }
.cast-widget .rune-disc svg { width: 42px; height: 42px; }
.cast-widget svg path { fill: none; stroke: currentColor; stroke-width: 2.8; stroke-linecap: round; stroke-linejoin: round; }
.cast-widget .rune-character { min-height: 2.6em; display: flex; align-items: center; justify-content: center; text-align: center; font-family: var(--display); font-size: .83rem; letter-spacing: .04em; margin-top: .85rem; }
.cast-widget .rune-credit { font-size: .9rem; margin-top: .28rem; color: var(--gold); max-width: 100%; }
.cast-widget .rune-button[aria-expanded="true"] .rune-disc,
.cast-widget .rune-button:focus-visible .rune-disc { color: var(--plum); background: radial-gradient(circle, #fff6d7 8%, #f3d99b 65%, #e6c483); box-shadow: inset 0 0 0 4px var(--paper), inset 0 0 0 5px rgba(169,117,42,.5), 0 0 20px rgba(181,128,43,.4); transform: translateY(-2px); }
@media (hover:hover) { .cast-widget .rune-button:hover .rune-disc { color: var(--plum); background: radial-gradient(circle, #fff6d7 8%, #f3d99b 65%, #e6c483); box-shadow: inset 0 0 0 4px var(--paper), inset 0 0 0 5px rgba(169,117,42,.5), 0 0 20px rgba(181,128,43,.4); transform: translateY(-2px); } }
.cast-widget .cast-bio { margin-top: 1rem; }
.cast-widget .cast-bio > summary { cursor: pointer; color: var(--plum); padding: .6rem 0; border-bottom: 1px solid var(--hair); }
.cast-widget.is-enhanced .cast-bio:not([open]) { display: none; }
.cast-widget.is-enhanced .cast-bio > summary { display: none; }
.cast-widget .bio-card { position: relative; isolation: isolate; overflow: hidden; border: 1px solid var(--hair); border-radius: 2px; background: #f3e3c9; margin-top: 1.2rem; padding: 1.7rem 2rem 1.9rem; box-shadow: 0 6px 18px rgba(81,52,25,.04); }
.cast-widget .bio-watermark { position: absolute; pointer-events: none; width: 230px; height: 300px; right: -28px; top: 40px; color: var(--gold); opacity: .065; z-index: -1; }
.cast-widget .bio-watermark path { stroke-width: 2; }
.cast-widget .bio-role { font-family: var(--display); text-transform: uppercase; font-size: .72rem; letter-spacing: .13em; margin: 0 2.5rem .45rem 0; color: var(--gold); }
.cast-widget .bio-copy > h3, .cast-widget .bio-copy > h4 { font-family: var(--display); font-weight: 500; font-size: 1.45rem; line-height: 1.25; letter-spacing: .01em; color: var(--plum); text-transform: none; margin: 0 2rem 1rem 0; }
.cast-widget .bio-copy > p:not(.bio-role) { font-size: 1.13rem; line-height: 1.57; margin-bottom: .9rem; }
.cast-widget .bio-copy > p:last-child { margin-bottom: 0; }
.cast-widget .bio-close { position: absolute; top: .55rem; right: .5rem; width: 44px; height: 44px; border: 0; background: transparent; color: var(--gold); cursor: pointer; font: 1.8rem/1 Georgia, serif; }
.cast-widget .bio-close:hover { color: var(--plum); }
.cast-widget.is-enhanced .cast-bio[open] .bio-card { animation: bio-arrive .2s ease; }
@keyframes bio-arrive { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@media (max-width: 550px) {
 .cast-widget .rune-menu { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.15rem .65rem; }
 .cast-widget .rune-disc { width: 66px; height: 66px; }
 .cast-widget .rune-credit { font-size: .94rem; }
 .cast-widget .bio-card { padding: 1.3rem 1.2rem 1.5rem; }
 .cast-widget .bio-copy > p:not(.bio-role) { font-size: 1.1rem; }
 .cast-widget .bio-watermark { width: 195px; right: -30px; }
}
@media (prefers-reduced-motion: reduce) { .cast-widget .rune-disc { transition: none; transform: none !important; } .cast-widget.is-enhanced .cast-bio[open] .bio-card { animation: none; } }
@media print { .cast-widget .rune-menu, .cast-widget .cast-hint, .cast-widget .bio-close { display: none !important; } .cast-widget.is-enhanced .cast-bio:not([open]) { display: block; } .cast-widget .cast-bio::details-content { content-visibility: visible; } .cast-widget .bio-card { break-inside: avoid; } }
