/* Isolated local preview. Genuine character motion comes from videos, not image transforms. */
.gallery-preview-note{padding:8px 24px;text-align:center;font-size:11px;letter-spacing:.14em;color:#83adba;background:#10263388;border-bottom:1px solid #234354}
.character-gallery{max-width:1376px;padding:42px 36px 64px}
.gallery-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:28px}
.gallery-head .eyebrow{font-size:10px;margin-bottom:13px;letter-spacing:.21em}
.gallery-head h1{font-size:38px;letter-spacing:.06em;margin:0}
.gallery-head>p{font-size:13px;line-height:1.9;color:#87a5b9;margin:0 0 3px}
.character-roster{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.character-roster button{position:relative;min-width:0;padding:10px 13px 12px;display:grid;grid-template-columns:66px 1fr;align-items:center;gap:10px;border:1px solid #2d4054;border-radius:10px;background:#0b1829d9;color:#a9c1d0;text-align:left;transition:border-color .2s,background .2s}
.character-roster button:hover{border-color:var(--role-accent);background:#15263b}
.character-roster button[aria-selected=true]{border-color:var(--role-accent);background:#172b40;box-shadow:inset 0 -2px var(--role-accent)}
.character-roster button:focus-visible{outline-color:var(--role-accent);outline-offset:4px}
.roster-image{height:69px;width:66px;overflow:hidden;border-radius:5px;background:#07111f}
.roster-image img{width:100%;height:100%;object-fit:contain}
.character-roster button:first-child .roster-image img{padding:3px 10px}
.roster-label strong{display:block;font-size:24px;font-weight:450;line-height:1.3;color:#d9edf6}
.roster-label small{display:block;font-size:10px;white-space:nowrap;color:#85a3b7;margin-top:5px}
.roster-index{position:absolute;right:10px;top:6px;font-size:8px;letter-spacing:.08em;color:var(--role-accent);opacity:.55}
.character-display{margin-top:31px}
.character-panel{display:grid;grid-template-columns:minmax(0,.84fr) minmax(0,1.16fr);gap:18px 45px;align-items:center}
.character-panel[hidden]{display:none!important}
.profile-copy{padding:18px 0 10px 12px}
.profile-kicker{font-size:10px;letter-spacing:.18em;color:var(--role-accent);margin-bottom:18px}
.profile-name{display:flex;align-items:baseline;gap:23px;font-size:88px;font-weight:400;margin:0 0 20px;line-height:1.1}
.profile-name span{font-size:34px;letter-spacing:.12em;color:var(--role-accent);font-weight:350}
.profile-line{font-size:22px;letter-spacing:.03em;color:#d0e5ef;margin:0 0 19px}
.profile-intro{font-size:14px;line-height:2;color:#89a5ba;max-width:355px;margin:0 0 25px}
.profile-traits{margin:0 0 27px;max-width:390px;border-top:1px solid #2b4355}
.profile-traits>div{padding:12px 0;border-bottom:1px solid #2b4355;display:flex;justify-content:space-between;gap:15px;align-items:center}
.profile-traits dt{font-size:15px;color:#c8dfe9;white-space:nowrap}
.profile-traits dt i{font-style:normal;font-size:9px;letter-spacing:.08em;color:var(--role-accent);margin-right:14px}
.profile-traits dd{font-size:12px;color:#7899af;margin:0;text-align:right}
.profile-actions{display:flex;gap:10px;flex-wrap:wrap}
.profile-actions .button{font-size:14px;gap:10px;padding:11px 17px;background:var(--role-accent);border-color:var(--role-accent);color:#081522}
.profile-actions .button.secondary{background:#142738;color:#d8e9f3;border-color:#40586a}
.profile-access{color:#91b4c5;font-size:11px;line-height:1.8;margin:15px 0 0}
.profile-access span{display:block;color:#a69f92;font-size:10px;margin-top:3px}
.profile-stage{min-width:0;margin:0;align-self:center;position:relative}
.stage-frame{aspect-ratio:1;position:relative;isolation:isolate;background:radial-gradient(ellipse at 50% 55%,rgba(var(--role-rgb),.11),transparent 64%)}
.profile-interact{position:absolute;inset:0;width:100%;height:100%;padding:0;background:transparent;border:0;border-radius:15px;overflow:hidden;isolation:isolate;cursor:pointer}
.profile-interact:focus-visible{outline:2px solid var(--role-accent);outline-offset:-4px}
.profile-poster,.profile-motion{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;animation:none!important;transform:none!important;mask-image:linear-gradient(to bottom,transparent,#000 6%,#000 92%,transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 6%,#000 92%,transparent)}
.profile-poster{opacity:1;transition:opacity .2s}
.is-lan .profile-poster{padding:20px 80px 35px}
.profile-motion{z-index:1;opacity:0;transition:opacity .25s;background:#07111f}
.profile-interact.is-playing .profile-motion{opacity:1}
.profile-interact.is-playing .profile-poster{opacity:0}
.stage-corner{position:absolute;width:32px;height:32px;border-color:rgba(var(--role-rgb),.35);border-style:solid;z-index:3;pointer-events:none}
.top-left{left:1%;top:4%;border-width:1px 0 0 1px}
.bottom-right{right:1%;bottom:4%;border-width:0 1px 1px 0}
.stage-id,.stage-palette{position:absolute;font-size:8px;letter-spacing:.19em;color:#7591a4;z-index:3;pointer-events:none}
.stage-id{left:12px;top:3px}.stage-palette{bottom:0;right:12px;color:var(--role-accent);opacity:.7}
.profile-stage figcaption{display:flex;align-items:center;justify-content:center;position:relative;gap:18px;padding-top:16px;min-height:45px}
.motion-hint{font-size:11px;letter-spacing:.08em;color:#8ca6b9}
.motion-control{border:1px solid #314658;background:#102234aa;color:#90a9ba;padding:5px 10px;font-size:10px;border-radius:5px}
.motion-control[hidden]{display:none}
.profile-theme{grid-column:1/-1;display:grid;grid-template-columns:210px 1fr auto;gap:30px;align-items:center;border:1px solid #30495c;border-radius:12px;background:linear-gradient(110deg,rgba(var(--role-rgb),.08),#10203399);padding:22px 28px;margin-top:7px}
.profile-effect{height:105px;color:var(--role-accent);border-right:1px solid #314658;padding-right:25px}
.profile-effect svg{width:100%;height:100%}
.profile-theme .profile-kicker{margin-bottom:9px;font-size:9px}
.profile-theme h3{font-size:24px;letter-spacing:.05em;margin:0 0 9px}
.profile-theme-copy>p:last-child{font-size:13px;color:#8ba8bd;margin:0;line-height:1.8}
.theme-detail-link{font-size:12px;color:var(--role-accent);padding:12px 0;white-space:nowrap}
.gallery-bottom{display:flex;align-items:center;justify-content:space-between;gap:28px;border-top:1px solid #2b4052;margin-top:36px;padding:27px 0 0}
.gallery-bottom p{margin:0;max-width:630px}.gallery-bottom strong{display:block;font-size:15px;font-weight:400;color:#c5dbe8;margin-bottom:8px}.gallery-bottom p span{display:block;font-size:12px;color:#7f9cb1;line-height:1.9}
.gallery-bottom .button{font-size:13px;gap:25px;flex-shrink:0;padding:12px 16px}.gallery-bottom .button span{font-size:11px;color:#8faabd}
@media(min-width:1600px){.character-gallery{padding-top:45px}.character-panel{gap:20px 65px}.profile-copy{padding-left:24px}.profile-name{font-size:100px}.profile-intro{font-size:15px;max-width:410px}.profile-traits{max-width:420px}}
@media(max-width:1200px){.character-roster button{grid-template-columns:53px 1fr;gap:7px;padding:10px 8px}.roster-image{width:53px;height:60px}.roster-label strong{font-size:22px}.roster-label small{font-size:9px}.character-panel{gap:20px 25px}.profile-copy{padding-left:0}.profile-name{font-size:78px}.profile-line{font-size:20px}.profile-intro{font-size:13px;margin-bottom:20px}.profile-traits dd{font-size:11px}.profile-traits{margin-bottom:22px}.profile-traits>div{padding:11px 0}.profile-theme{grid-template-columns:180px 1fr auto;gap:20px}.gallery-bottom .button{gap:12px}}
@media(max-width:900px){.character-gallery{padding:29px 22px 45px}.gallery-head h1{font-size:31px}.gallery-head>p{font-size:12px}.character-roster{gap:8px}.character-roster button{grid-template-columns:1fr;text-align:center;justify-items:center;gap:4px;padding:7px}.roster-image{width:75px;height:72px}.roster-label strong{font-size:20px}.roster-label small{font-size:9px;margin-top:2px}.character-display{margin-top:26px}.character-panel{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:18px}.profile-name{font-size:65px;gap:15px}.profile-name span{font-size:27px}.profile-line{font-size:18px}.profile-traits>div{display:block}.profile-traits dd{text-align:left;margin-left:29px;margin-top:2px}.profile-intro{font-size:13px}.profile-actions .button{font-size:12px;padding:10px 13px}.profile-theme{grid-template-columns:140px 1fr;gap:18px;padding:20px}.profile-effect{padding-right:18px;height:100px}.theme-detail-link{grid-column:2;padding:0}.profile-theme h3{font-size:23px}.gallery-bottom{align-items:start}.gallery-bottom .button{flex-direction:column;gap:2px}.is-lan .profile-poster{padding:10px 35px 20px}.stage-id,.stage-palette{font-size:7px}.stage-corner{width:20px;height:20px}}
@media(max-width:600px){.gallery-preview-note{font-size:10px;padding:6px 16px}.character-gallery{padding:27px 18px 38px}.gallery-head{display:block;margin-bottom:21px}.gallery-head h1{font-size:29px;letter-spacing:.03em}.gallery-head>p{font-size:12px;line-height:1.7;margin:11px 0 0}.gallery-head>p br{display:none}.gallery-head .eyebrow{font-size:8px;margin-bottom:12px}.character-roster{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.character-roster button{grid-template-columns:46px 1fr;padding:8px 7px;gap:4px;text-align:left;justify-items:start;border-radius:7px}.roster-image{height:56px;width:46px}.roster-label strong{font-size:20px}.roster-label small{font-size:8px;letter-spacing:-.03em;margin-top:2px}.roster-index{top:3px;right:5px;font-size:6px}.character-roster button:first-child .roster-image img{padding:3px 5px}.character-display{margin-top:25px}.character-panel{display:flex;flex-direction:column;gap:24px;align-items:stretch}.profile-stage{order:0;margin:0 -2px}.profile-copy{order:1;padding:0 3px}.profile-theme{order:2;margin-top:0}.stage-frame{width:100%;aspect-ratio:1}.profile-stage figcaption{padding-top:12px;min-height:40px}.motion-hint{font-size:10px}.motion-control{font-size:9px}.profile-kicker{font-size:9px;margin-bottom:15px}.profile-name{font-size:76px;margin-bottom:17px;gap:20px}.profile-name span{font-size:31px}.profile-line{font-size:20px;margin-bottom:14px}.profile-intro{font-size:14px;line-height:1.9;max-width:none;margin-bottom:22px}.profile-traits{max-width:none;margin-bottom:23px}.profile-traits>div{display:flex;padding:13px 0}.profile-traits dt{font-size:14px}.profile-traits dd{font-size:11px;margin:0;text-align:right}.profile-actions .button{font-size:14px;padding:12px 16px}.profile-access{font-size:11px}.profile-access span{font-size:10px}.profile-theme{grid-template-columns:105px 1fr;gap:12px;padding:19px 15px}.profile-effect{height:94px;padding-right:12px}.profile-theme h3{font-size:22px;margin-bottom:8px}.profile-theme .profile-kicker{font-size:8px;letter-spacing:.06em}.profile-theme-copy>p:last-child{font-size:12px}.theme-detail-link{font-size:11px;grid-column:2}.gallery-bottom{display:block;margin-top:27px;padding-top:23px}.gallery-bottom p span{font-size:11px}.gallery-bottom .button{flex-direction:row;gap:24px;margin-top:18px;font-size:13px}.gallery-bottom strong{font-size:14px}.is-lan .profile-poster{padding:12px 42px 24px}}
@media(prefers-reduced-motion:reduce){.profile-poster,.profile-motion{transition:none}}
/* Keep poster and articulated mesh the same fitted size at every breakpoint. */
.profile-interact .profile-poster,.profile-interact.is-lan .profile-poster{padding:6%}
.profile-canvas{background:transparent}
@media(max-width:600px){.profile-stage{align-self:stretch}}
