/* Aurora 4.30 — one material system; the V4.27 console is deliberately untouched. */
body{--finish-metal:#d9bd80;--finish-ink:#f2e7d2;--finish-surface:#0b111b}
body :is(.panorama-head p,.landscape-card p,.league-help,.account-note){font-family:Manrope,system-ui,sans-serif;line-height:1.65}
body .header-utilities .account-open,body .utility-menu .account-open{color:var(--identity-muted,#b2b8c0);border-color:#c5b68f45;background:#0b1119;gap:7px;font:500 11px/1.2 Manrope,system-ui,sans-serif;letter-spacing:.02em;text-transform:none;box-shadow:inset 0 1px #ffffff08}
body .account-open .account-icon{display:block;flex:none;width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
body .account-open:focus-visible{outline:2px solid #f2d8a0;outline-offset:3px}
body :is(#account-panel,#panorama-preview,.relic-detail){background:#0b111b;border:1px solid #c5aa735c;border-radius:12px;box-shadow:0 18px 65px #0008}
body :is(#account-panel,#panorama-preview) input{font-family:Manrope,system-ui,sans-serif}
body #account-panel :is(label,.account-note){font-size:12px;line-height:1.6}
body #panorama-view .landscape-card{border-color:#b49b663d;background:#0c131f;box-shadow:inset 0 1px #ffffff08}
body #panorama-view .landscape-card h4{font-family:Aurora,Georgia,serif;font-size:19px;line-height:1.3;margin:0 0 10px}
body #panorama-view .landscape-card p{font-size:12px;line-height:1.6;min-height:3.2em}
body #panorama-view .landscape-card button{font-family:Manrope,system-ui,sans-serif;font-size:12px;min-height:44px}
.panorama-preview-button{position:relative;isolation:isolate;aspect-ratio:16/9;overflow:hidden;background:#101d2b!important}
.panorama-preview-button img{display:block;transition:opacity .3s ease}
.panorama-preview-button[data-image-state=loading] img{opacity:.3}
.panorama-preview-button[data-image-state=ready] img{opacity:1}
.panorama-image-status{display:flex;position:absolute;inset:0;align-items:center;justify-content:center;text-align:center;padding:30px;background:#142131;color:#d6c7a5;font:500 13px/1.7 Manrope,system-ui,sans-serif}
.panorama-image-status[hidden],.panorama-retry[hidden],.panorama-preview-button img[hidden],#panorama-preview-image[hidden]{display:none!important}
#panorama-preview>.panorama-image-status{position:relative;min-height:160px;border:1px solid #c9af7240;border-radius:8px;margin:10px 0}
.panorama-retry{display:block;margin:16px auto;padding:10px 20px;min-height:44px;border:1px solid #c6a96b;background:#14202d;color:#eddbb9;border-radius:6px;cursor:pointer}
body .panorama-preview-button>span:not(.panorama-image-status){z-index:1;background:#09111ce8;border-color:#c1aa6f77}
/* Weather lives behind the instruments, travels with the scenery and uses compositor transforms. */
.weather-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;contain:paint;--weather-colour:#ffe1a2;opacity:.65;transition:opacity 5s ease}
#world-scene[data-weather-phase=quiet] .weather-layer{opacity:.24}
#world-scene[data-weather-phase=gust] .weather-layer{opacity:.9}
.weather-particle{position:absolute;left:var(--wx);top:var(--wy);width:var(--wsize);height:var(--wsize);border-radius:50%;background:var(--weather-colour);opacity:0;animation:weather-drift var(--wt) var(--wd) linear infinite}
.weather-light{position:absolute;inset:0;opacity:.16;transform-origin:50% 0;background:linear-gradient(112deg,transparent 4%,#fce8b216 12%,transparent 19%,transparent 80%,#fff1cb14 86%,transparent 93%);animation:weather-light-travel 18s ease-in-out infinite alternate}
.weather-floor{position:absolute;inset:78% 0 0;background:linear-gradient(105deg,transparent 4%,#f2d08f22 16%,transparent 25%,transparent 72%,#efce8820 82%,transparent 94%);opacity:.2;animation:weather-floor-travel 16s ease-in-out infinite alternate}
[data-weather=rain]{--weather-colour:#c6e5f6}
[data-weather=rain] .weather-particle{width:1px;height:18px;border-radius:0;animation-name:weather-rain;animation-duration:1.45s;background:linear-gradient(transparent,#cde8f077)}
[data-weather=rain] .weather-light{background:linear-gradient(112deg,transparent 6%,#b3d8ff20 18%,transparent 30%,transparent 76%,#c7dfff25 87%,transparent 96%)}
[data-weather=snow]{--weather-colour:#dcecf3}
[data-weather=snow] .weather-particle{animation-name:weather-snow}
[data-weather=wind]{--weather-colour:#cfe9f1}
[data-weather=wind] .weather-particle{animation-name:weather-wind;width:2px;height:2px}
[data-weather=embers]{--weather-colour:#f8a75c}
[data-weather=embers] .weather-particle{top:85%;height:3px;animation-name:weather-ember;box-shadow:0 0 3px #ef833850}
[data-weather=embers] .weather-light{background:radial-gradient(ellipse 14% 36% at 6% 80%,#ff69201f,transparent),radial-gradient(ellipse 14% 36% at 94% 82%,#ff692022,transparent)}
[data-weather=current]{--weather-colour:#a6e1eb}
[data-weather=current] .weather-particle{border:1px solid #b9eaff70;background:transparent;width:4px;height:4px;animation-name:weather-ember}
[data-weather=current] .weather-light{background:linear-gradient(100deg,transparent 4%,#aad9e920 10%,transparent 17%,transparent 79%,#99ddee24 88%,transparent 95%)}
[data-weather=starlight]{--weather-colour:#e0d5fa}
[data-weather=starlight] .weather-particle{animation-name:weather-star;top:calc(var(--wy) * .6)}
[data-weather=starlight] .weather-light{background:radial-gradient(ellipse 15% 40% at 5% 32%,#8bcce426,transparent),radial-gradient(ellipse 15% 40% at 95% 28%,#c3a9ef26,transparent)}
#world-scene[data-weather-paused=true] .weather-layer *{animation-play-state:paused!important}
body[data-motion=calm] .weather-layer{display:none}
/* Remove layered ambience duplication. Existing imagery remains at its native colour. */
.scene-plane:has(.weather-layer) .world-motes{display:none}
.scene-plane:has(.weather-layer) .world-light,.scene-plane:has(.weather-layer) .world-reflection{opacity:.15;animation:none}
@keyframes weather-drift{0%{opacity:0;transform:translate(0,20px)}20%,65%{opacity:.45}100%{opacity:0;transform:translate(var(--wdrift),-70px)}}
@keyframes weather-rain{0%{opacity:0;transform:translate(15px,-80px) rotate(14deg)}18%,75%{opacity:.4}100%{opacity:0;transform:translate(-25px,240px) rotate(14deg)}}
@keyframes weather-snow{0%{opacity:0;transform:translate(0,-25px)}15%,70%{opacity:.5}100%{opacity:0;transform:translate(var(--wdrift),150px)}}
@keyframes weather-wind{0%{opacity:0;transform:translate(-30px,0)}30%,65%{opacity:.4}100%{opacity:0;transform:translate(90px,-30px)}}
@keyframes weather-ember{0%{opacity:0;transform:translate(0,30px) scale(.6)}20%{opacity:.65}100%{opacity:0;transform:translate(var(--wdrift),-210px) scale(.3)}}
@keyframes weather-star{0%,100%{opacity:.12;transform:scale(.65)}45%{opacity:.6;transform:scale(1)}}
@keyframes weather-light-travel{from{opacity:.2;transform:translateX(-1.5%)}to{opacity:.5;transform:translateX(1.5%)}}
@keyframes weather-floor-travel{from{opacity:.2;transform:translateX(-3%)}to{opacity:.42;transform:translateX(3%)}}
/* Physical finish hierarchy: silver single rule, violet double rule, gold stepped frame. */
.relic-card,.relic-detail{--rarity-metal:#afc7d0;--rarity-deep:#1c2b38}
.relic-card[data-rarity=legendary],.relic-detail[data-rarity=legendary]{--rarity-metal:#c1a4ec;--rarity-deep:#30243d}
.relic-card[data-rarity=imperial],.relic-detail[data-rarity=imperial]{--rarity-metal:#e4c486;--rarity-deep:#3d2d18}
body .relic-card{border:1px solid var(--rarity-metal);box-shadow:inset 0 1px #ffffff12;border-radius:10px}
body .relic-card[data-rarity=legendary]{border-width:3px;border-style:double}
body .relic-card[data-rarity=imperial]{border-width:3px;box-shadow:inset 0 0 0 2px #080d14,inset 0 0 0 3px var(--rarity-metal)}
.relic-card .relic-art{background:radial-gradient(ellipse at 50% 72%,var(--rarity-deep),#080d14 68%)}
.relic-card .relic-inspect::after{content:'';position:absolute;inset:10px;pointer-events:none;border:1px solid var(--rarity-metal);opacity:.2}
.relic-card[data-rarity=legendary] .relic-inspect::after{inset:10px;border:3px double var(--rarity-metal);opacity:.3}
.relic-card[data-rarity=imperial] .relic-inspect::after{inset:10px;border:1px solid var(--rarity-metal);box-shadow:inset 0 0 0 4px #0b111b,inset 0 0 0 5px #e4c48666;opacity:.7}
.relic-card .relic-copy{background:linear-gradient(180deg,var(--rarity-deep),#0d141f 100px)}
.relic-rarity{display:inline-flex;align-items:center;gap:7px;color:var(--rarity-metal)}
.rarity-mark{display:inline-flex;align-items:center;gap:4px}
.rarity-mark i{display:block;width:5px;height:5px;transform:rotate(45deg);border:1px solid currentColor}
.rarity-imperial .rarity-mark i{background:currentColor}
.rarity-legendary .rarity-mark i:first-child{background:currentColor}
body .relic-card[data-owned=true] .relic-inspect-label{border-color:var(--rarity-metal)}
body .relic-detail{border-color:var(--rarity-metal)}
.relic-detail .relic-art{background:radial-gradient(ellipse at 50% 70%,var(--rarity-deep),#080d14 70%)}
.relic-showcase-slot[data-rarity=imperial] .relic-art::after{content:'';position:absolute;inset:auto 25% 3%;height:1px;background:linear-gradient(90deg,transparent,#efcf92,transparent);opacity:.6}
@media(hover:hover){.relic-card .relic-inspect:hover .relic-image{transform:translateY(-3px);transition:transform .3s ease}.relic-card .relic-inspect:hover::after{opacity:.9;transition:opacity .3s ease}}
/* Anticipation only follows the two already visible matching stops. */
body[data-room] .anticipation-beacon{--anticipation-colour:#e4c88d;border:1px solid #e4c88d66;background:none;border-radius:45% / 10%;box-shadow:none;animation:anticipation-intro .25s ease-out both;overflow:hidden}
body[data-room] .reel-area[data-anticipation=ascension] .anticipation-beacon{--anticipation-colour:#a4dffa;border-color:#a4dffa99;box-shadow:none}
.anticipation-sweep{position:absolute;left:0;right:0;top:0;height:24%;background:linear-gradient(transparent,#fff0cc0d 50%,transparent);border-bottom:1px solid var(--anticipation-colour);opacity:0;animation:anticipation-scan 1.3s ease-in-out 2}
.anticipation-pin{position:absolute;left:20%;right:20%;height:2px;background:linear-gradient(90deg,transparent,var(--anticipation-colour),transparent)}
.anticipation-pin.top{top:9%}.anticipation-pin.bottom{bottom:9%}
.anticipation-caption{position:absolute;bottom:11%;left:7%;right:7%;font:600 8px/1.4 Manrope,system-ui,sans-serif;color:var(--anticipation-colour);letter-spacing:.06em;text-align:center;text-shadow:0 1px 4px #000}
@keyframes anticipation-intro{from{opacity:0;scale:.98}to{opacity:1;scale:1}}
@keyframes anticipation-scan{0%{opacity:0;transform:translateY(-100%)}35%{opacity:.5}100%{opacity:0;transform:translateY(420%)}}
@media(max-width:700px){.weather-layer{opacity:.55}.weather-particle:nth-child(n+15){display:none}.weather-light{animation-duration:22s}.weather-floor{animation-duration:21s}.relic-card .relic-inspect::after{inset:7px}.rarity-mark{gap:3px}.rarity-mark i{width:4px;height:4px}}
@media(max-width:650px){.anticipation-caption{font-size:7px;letter-spacing:0}}
