/* Match the scene to the space left by mobile browser chrome and safe areas. */
.iso-app .iso-world{height:100vh;height:100dvh;overflow:hidden}
html:has(>.iso-app){overscroll-behavior:none}
html:fullscreen .iso-app{width:100%;height:100dvh}

/* A short, wide screen is a handheld play area, even above desktop widths. */
@media(orientation:landscape) and (max-height:540px){
 .iso-app{--iso-edge:16px;--iso-bottom:8px;--compact-ink:#eee2c4;--compact-soft:#c5c5ad;--compact-surface:#10241edb;--compact-line:#ba9b604d}
 html[data-theme=light] .iso-app{--compact-ink:#203a2e;--compact-soft:#49614f;--compact-surface:#f4efdedb;--compact-line:#7360354d}
 .iso-app .iso-frame{background:linear-gradient(180deg,#06150f75,transparent 64px,transparent calc(100% - 50px),#06150f65)}
 .iso-app .iso-header{top:calc(4px + env(safe-area-inset-top));left:calc(16px + env(safe-area-inset-left));right:calc(16px + env(safe-area-inset-right));height:44px;gap:12px}
 .iso-app .iso-brand{min-height:44px;padding:0}
 .iso-app .iso-brand>span,.iso-app .iso-location{display:none}
 .iso-app .iso-brand svg{width:24px;height:28px}
 .iso-app .iso-header-player{width:190px;max-width:38vw;gap:0;align-items:start}
 .iso-app .iso-header-actions{min-height:44px;gap:10px;font-size:12px}
 .iso-app .iso-header-player .iso-text-button,.iso-app .iso-header-player .iso-exit{min-height:44px;font-size:12px;padding-block:5px}
 .iso-app .iso-header-player .iso-exit{padding-left:10px;gap:6px}
 .iso-app .iso-header-player .iso-save{font-size:10px;max-width:64px;gap:4px}
 .iso-app .iso-header-spirits{display:flex;justify-content:flex-end}
 .iso-app .iso-header-spirits>.iso-spirits-host{width:auto}
 .iso-app .iso-spirits-meter{height:44px;min-height:44px;gap:3px}
 .iso-app .iso-spirits-art{flex-basis:32px;width:32px}
 .iso-app .iso-spirits-reading{gap:6px}
 .iso-app .iso-spirits-total{font-size:23px}
 .iso-app .iso-spirits-caption{font-size:11px}
 .iso-app .iso-spirits-history{max-height:calc(100dvh - 108px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}
 .iso-app .iso-objective,.iso-app:has(.iso-header-spirits>.iso-spirits-host:not([hidden])) .iso-objective{top:calc(4px + env(safe-area-inset-top));left:calc(58px + env(safe-area-inset-left));width:min(330px,calc(100vw - 300px - env(safe-area-inset-left) - env(safe-area-inset-right)));max-width:none}
 .iso-app .iso-objective .iso-eyebrow,.iso-app .iso-objective p,.iso-app .iso-objective:before{display:none}
 .iso-app .iso-objective button{min-height:44px;padding:6px 10px;gap:8px;background:var(--compact-surface);color:var(--compact-ink);border:1px solid var(--compact-line);border-radius:3px 11px 3px 11px;text-shadow:none}
 .iso-app .iso-objective strong{font-size:14px;line-height:1.25}
 .iso-app .iso-objective button>.iso-quest-diamond{font-size:17px;flex-basis:10px;color:inherit}
 .iso-app .iso-objective button>.iso-quest-arrow{display:none}
 .iso-app .iso-journal-menu{left:calc(16px + env(safe-area-inset-left));bottom:calc(4px + env(safe-area-inset-bottom))}
 .iso-app .iso-journal-menu>summary{min-height:44px;gap:8px;padding:6px 8px;font-size:10px;color:var(--compact-ink);background:var(--compact-surface);border-radius:3px 10px 3px 10px;text-shadow:none}
 .iso-app .iso-journal-menu>summary kbd{display:none}
 .iso-app .iso-journal{bottom:52px;max-height:calc(100dvh - 80px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:12px 16px 8px}
 .iso-app:not(.is-panel-open)>.iso-audio-toggle{left:calc(116px + env(safe-area-inset-left));bottom:calc(4px + env(safe-area-inset-bottom));min-height:44px;padding:6px 8px;font-size:10px!important;color:var(--compact-ink);background:var(--compact-surface);border-radius:3px 10px 3px 10px;text-shadow:none}
 .iso-app .iso-fullscreen-toggle{left:calc(202px + env(safe-area-inset-left));bottom:calc(4px + env(safe-area-inset-bottom));min-height:44px;padding:6px 9px;font-size:10px;color:var(--compact-ink);background:var(--compact-surface);border-radius:3px 10px 3px 10px;text-shadow:none}
 .iso-app .iso-touch-controls{left:calc(20px + env(safe-area-inset-left));bottom:calc(60px + env(safe-area-inset-bottom));width:96px;height:96px}
 .iso-app .iso-touch-caption{display:none}
 .iso-app .iso-combat-attack{right:calc(25px + env(safe-area-inset-right));bottom:calc(70px + env(safe-area-inset-bottom));width:66px;height:66px}
 .iso-app .iso-combat-readout{bottom:calc(60px + env(safe-area-inset-bottom));padding:7px 11px}
 .iso-app .iso-controls{display:none}
 .iso-app .iso-identity-launcher{right:calc(16px + env(safe-area-inset-right));bottom:calc(4px + env(safe-area-inset-bottom));width:auto;min-width:76px;min-height:44px;display:flex;align-items:center;gap:4px;padding:0 6px}
 .iso-app .iso-identity-launcher-art{width:32px;height:32px}
 .iso-app .iso-identity-launcher-label{font-size:9px}
 .iso-app .iso-identity-launcher-dot{right:-3px;top:-3px}
 .iso-app .iso-identity-launcher-toast{bottom:48px;right:0;margin:0}
 .iso-app .iso-connection{top:calc(55px + env(safe-area-inset-top));left:calc(16px + env(safe-area-inset-left));right:auto;width:min(450px,calc(100vw - 240px - env(safe-area-inset-left) - env(safe-area-inset-right)));max-width:none;display:flex;align-items:center;gap:12px;padding:5px 12px;color:var(--compact-ink);background:var(--compact-surface)}
 .iso-app .iso-connection p{flex:1;min-width:0;font-size:10px;line-height:1.4;margin:0}
 .iso-app .iso-connection button{flex:none;min-height:44px;margin:0;color:inherit}
 .iso-app .iso-panel:not(.iso-cinematic):not(.iso-grove-encounter){bottom:calc(54px + env(safe-area-inset-bottom));max-height:calc(100dvh - 78px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}
 .iso-app .iso-reyn-note{left:50%;right:auto;bottom:calc(57px + env(safe-area-inset-bottom));max-width:calc(100vw - 280px);padding:5px 15px}
 .iso-app .iso-reyn-note p{font-size:12px;line-height:1.35}
 .iso-app .iso-toast{bottom:calc(58px + env(safe-area-inset-bottom));max-width:calc(100vw - 270px);padding:9px 12px;font-size:11px}
 .iso-app.is-preview{--iso-bottom:25px}
 .iso-app.is-preview :is(.iso-journal-menu,.iso-identity-launcher,.iso-fullscreen-toggle),.iso-app.is-preview:not(.is-panel-open)>.iso-audio-toggle{bottom:calc(25px + env(safe-area-inset-bottom))}
}
