/* Source-verified Asgard type/control adapter; scene composition is unchanged. */
:root{--bg:var(--ag-ui-background);--ink:var(--ag-ui-text);--muted:var(--ag-ui-secondary);--accent:var(--ag-ui-accent);font-family:var(--ag-font-sans)}
body{font:var(--ag-type-body1);font-synthesis:none}p{line-height:var(--ag-body1-line)}
.hall h1,[data-locale=en] .hall-heading h1{font:var(--ag-type-h1);letter-spacing:0;max-width:none}
.eyebrow,.portal-genre,.portal-status,.portal h2 small,.scene-caption,.motion-caption,.small-copy,.world-label,.brand small,.guardian-name #selected-hero-class{font:var(--ag-type-caption);letter-spacing:0}
.brand{font-family:var(--ag-font-display);font-size:18px;line-height:28px;font-weight:600;letter-spacing:.03em}
.portal h2{font:var(--ag-type-h1);letter-spacing:-.02em;margin:8px 0 12px}.portal h2 small{margin-top:4px}
.portal-description{font:var(--ag-type-body2);margin:12px 0 16px;min-height:40px}
.guardian-title{font:var(--ag-type-h2)}
.button,.language-control select,.text-button,.pose-controls button,.tier-picker button,.angle-buttons button,.angle-display-tier button,.motion-mode-switch button,.hall-dock>a,.hall-dock>button{font-family:var(--ag-font-sans);font-size:15px;font-weight:500;line-height:24px;min-height:48px;border-radius:var(--ag-control-radius);padding:8px 16px;transition:background-color var(--ag-duration) var(--ag-ease),border-color var(--ag-duration) var(--ag-ease)}
.text-button,.pose-controls button,.hall-dock>a,.hall-dock>button{font-size:13px;line-height:20px}
.language-control select{font-size:15px;border:1px solid var(--line);background:#0a0f1e;padding:8px;min-width:76px}
.icon-button{height:48px;width:48px;border-radius:var(--ag-control-radius)}
.landmark{font:var(--ag-type-body2);border-radius:var(--ag-control-radius);min-height:48px}.landmark svg{width:20px;height:20px;stroke-width:2}
.hall-dock{border-radius:var(--ag-card-radius)}.hall-dock svg{width:20px;height:20px;stroke-width:2}
.portal{border-radius:var(--ag-card-radius)}.portal-art{border-radius:var(--ag-card-radius) var(--ag-card-radius) 0 0}
.guardian-name>button,.hero-roster button{border-radius:var(--ag-control-radius)}
button:active,.button:active{transform:none}button:disabled{opacity:var(--ag-disabled-opacity);pointer-events:none}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,.angle-canvas:focus-visible{outline:var(--ag-focus-width) solid var(--accent);outline-offset:2px;box-shadow:0 0 0 var(--ag-focus-halo) #22d3ee66}
button[aria-pressed=true],.tier-picker button[aria-pressed=true]{color:var(--ink);background:color-mix(in srgb,var(--accent) 20%,#0a0f1e);border-color:var(--accent)}
dialog{border-radius:var(--ag-dialog-radius);padding:24px;border-color:var(--ag-ui-border-strong);background:var(--ag-ui-surface);max-width:calc(100vw - 32px);max-height:calc(100svh - 32px)}dialog::backdrop{background:#0008}
dialog h2{font:var(--ag-type-h2);letter-spacing:0}dialog h3{font:var(--ag-type-h3);letter-spacing:0}dialog p{font:var(--ag-type-body1)}dialog .eyebrow,dialog .small-copy,dialog .angle-hint,dialog .angle-limit,dialog .angle-status{font:var(--ag-type-caption)!important}
.close{border-radius:var(--ag-control-radius);font:400 24px/32px var(--ag-font-sans)}
.hero-detail h3{font:var(--ag-type-h2)}.hero-roster button span{font:var(--ag-type-body2)}.hero-roster button small{font:var(--ag-type-caption)}
#settings-dialog label{font:var(--ag-type-body1);gap:12px}#settings-dialog input{accent-color:var(--accent)}
.angle-heading{font:var(--ag-type-body2)}.angle-heading strong,.angle-heading span{font:var(--ag-type-body2)}
[lang^=zh] h1,[lang^=zh] h2,[lang^=zh] h3,[lang^=zh] .eyebrow,[lang^=zh] .brand small{letter-spacing:0}
@media(max-width:1000px){.portal-copy{padding:16px}.portal h2{font:var(--ag-type-h2)}.portal-deck{top:25%}.hall h1,[data-locale=en] .hall-heading h1{font:var(--ag-type-h2)}}
@media(max-width:700px){
 .hall-header{height:64px;padding:0 16px}.header-tools{gap:8px}.language-control select{font-size:16px}.brand{font-size:15px}.brand span{gap:8px}.brand small{display:none}
 .hall{height:auto;min-height:850px}.hall-heading{padding:20px 16px;align-items:start}.hall h1,[data-locale=en] .hall-heading h1{font:var(--ag-type-h3);max-width:20ch}.hall-heading .text-button{font:var(--ag-type-body2);padding:8px;max-width:86px}.hall-heading .eyebrow{font:var(--ag-type-caption);margin-bottom:4px}
 .guardian-stage{inset:108px 21% auto;height:294px}.guardian-stage canvas{height:194px}.guardian-name{top:180px;max-width:235px}.guardian-name>button{min-height:60px;padding:4px 28px 4px 10px}.guardian-title{font:var(--ag-type-h4)}.guardian-name #selected-hero-class{font:var(--ag-type-caption)}.guardian-name .pose-controls button{min-height:48px;font-size:12px;line-height:16px;padding:8px}.ground-ring{bottom:116px}
 .landmarks{top:150px;left:12px;right:12px}.landmark{padding:8px;font-size:12px}.landmark span{max-width:64px}
 .portal-deck{top:430px;bottom:auto;left:16px;right:16px;gap:12px}.portal{min-width:0;width:auto}.portal-art{height:52px}.portal-copy{padding:12px}.portal h2{font:var(--ag-type-h4);margin:4px 0 8px}.portal h2 small{font:var(--ag-type-caption);margin-top:0;letter-spacing:0}
 .portal-genre,[data-locale=en] .portal-genre{font:var(--ag-type-caption);min-height:32px}.portal-status,[data-locale=en] .portal-status{font:var(--ag-type-caption);min-height:48px}.portal .button{font-size:13px;line-height:20px;padding:8px;min-height:56px}.portal-description{display:none}
 .hall-bottom{padding:16px;gap:12px}.hall-dock{width:100%;gap:4px}.hall-dock>a,.hall-dock>button{padding:8px 4px;font-size:12px;line-height:16px;min-height:60px}.scene-caption{font:var(--ag-type-caption);max-width:34ch;text-align:center}
 dialog{padding:24px 16px}.hero-roster{gap:8px}.hero-roster button{padding:8px 4px}.hero-roster button span{font:var(--ag-type-caption)}
}
/* Short landscape may scroll: do not preserve a one-screen layout by shrinking text. */
@media(max-height:530px) and (min-width:540px) and (max-width:700px){
 .hall-header{height:64px}.hall{height:510px;min-height:510px}.hall-heading{padding:12px 16px}.hall h1,[data-locale=en] .hall-heading h1{font:var(--ag-type-h4);max-width:none}.hall-heading .text-button{max-width:none}.hall-heading .eyebrow{display:none}
 .portal-deck{top:80px;left:16px;right:16px;display:flex}.portal{width:31%;max-width:206px}.portal-art{height:36px}.portal h2{font:var(--ag-type-h4)}.portal-genre{display:none}.portal-status,[data-locale=en] .portal-status{min-height:48px}.portal .button{min-height:56px}
 .guardian-stage{inset:60px 33% auto;height:285px}.guardian-stage canvas{height:180px}.guardian-name{top:172px;max-width:220px}.guardian-name #selected-hero-class{display:block}.guardian-name .pose-controls{flex-wrap:wrap}.guardian-name .pose-controls button{flex:1;min-height:48px}.ground-ring{bottom:100px}
 .hall-bottom{padding:12px 16px}.hall-dock>a,.hall-dock>button{flex-direction:row;font-size:12px;min-height:48px;padding:8px}.scene-caption{max-width:none}.landmarks{display:none}
}
@media(min-width:701px){.hall{height:max(740px,calc(100svh - 66px));min-height:740px}}
/* State selectors match the specificity of the pre-existing component rules. */
.hero-roster button[aria-pressed=true],.tier-picker button[aria-pressed=true],.motion-mode-switch button[aria-pressed=true],.angle-display-tier button[aria-pressed=true]{color:var(--ag-ui-text);background:color-mix(in srgb,var(--ag-ui-accent) 20%,#0a0f1e);border-color:var(--ag-ui-accent);transform:none}
.button.primary:hover{filter:brightness(.9)}.button.secondary:hover,.pose-controls button:hover,.hall-dock>*:hover{filter:none;background:color-mix(in srgb,var(--ag-ui-accent) 15%,#0a0f1e);border-color:var(--ag-ui-accent)}
/* The label—not only the native check mark—is the pointer target. */
#settings-dialog .check{display:flex;align-items:center;min-height:40px;padding:8px 0}#settings-dialog input[type=range]{min-height:40px;cursor:pointer}
@media(pointer:coarse),(max-width:767px){#settings-dialog .check,#settings-dialog input[type=range]{min-height:48px}}
/* Artwork bleed follows the adapted dialog padding, not the legacy 34px. */
.explore-dialog{--hall-dialog-inset:24px}
.explore-dialog .dialog-art{width:calc(100% + var(--hall-dialog-inset) * 2);margin-left:calc(-1 * var(--hall-dialog-inset));margin-right:calc(-1 * var(--hall-dialog-inset));margin-top:-24px}
@media(max-width:700px){.explore-dialog{--hall-dialog-inset:16px}}

/* Independent CTAs need separation, not extra padding inside a joined pair. */
.portal-copy > .button + .button{margin-block-start:var(--ag-space-3)}
.dialog-actions{gap:var(--ag-space-3)}
.dialog-actions>.button{min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:center}
#settings-dialog form>.button{margin-block-start:var(--ag-space-3)}
#settings-dialog label:not(.check){display:grid;gap:var(--ag-space-2);margin-block:var(--ag-space-3)}
