/* Use one short-landscape layout at every phone width. Portrait rules must not
   contribute implicit rows or oversized desktop previews after rotation. */
@media(orientation:landscape) and (max-height:500px){
 .shell.stage>.screen{min-width:0;min-height:0}
 .menu-toggle,.stage-back{top:max(5px,env(safe-area-inset-top));width:28px;height:28px;font-size:16px}
 .menu-toggle{right:max(8px,env(safe-area-inset-right))}.stage-back{left:max(8px,env(safe-area-inset-left))}
 .shell.stage>.home.screen{padding:30px max(32px,env(safe-area-inset-right)) 8px max(32px,env(safe-area-inset-left));grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);gap:5px 14px}
 .home .quest-menu-layout{grid-template-columns:minmax(80px,.7fr) minmax(0,1fr);gap:10px}
 .home .portrait-button:has(.knight-nameplate){margin-top:32px;height:clamp(46px,19cqh,75px);min-height:46px}
 .home .knight-nameplate{min-width:90px;max-width:150px;min-height:24px;padding:5px 15px;bottom:calc(100% + 7px)}
 .home .knight-nameplate strong{font-size:10px}
 .home .rank-crest,.home .rank-crest:not([data-tier="0"]){width:36px;height:36px;min-width:36px;min-height:36px}
 .home .quest-choices .btn{font-size:15px;min-height:30px;line-height:1.2;padding:5px 3px 5px 22px}
 .home .quest-choices .embark{font-size:19px}.home .dossier-gold{font-size:12px;min-height:18px}
 .home .quest-caption p{font-size:8px}.home .home-oath{font-size:6px;letter-spacing:.5px}
 /* Cabinet portrait and stock have separate, bounded columns at all widths. */
 .shell.stage-wardrobe>.menu-screen{padding:32px max(18px,env(safe-area-inset-right)) 12px max(18px,env(safe-area-inset-left));gap:6px}
 .stage-wardrobe .armory-heading h1{font-size:25px;line-height:1.1;letter-spacing:3px;margin:0}
 .stage-wardrobe .armory-heading p{display:none}.stage-wardrobe .armory-heading .stock-purse b{font-size:20px}
 .stage-wardrobe .armory-heading .stock-purse small{display:none}
 .stage-wardrobe .wardrobe-layout{grid-template-columns:minmax(160px,.8fr) minmax(0,1.4fr);grid-template-rows:minmax(0,1fr);gap:14px;min-height:0}
 .stage-wardrobe .preview-card{height:100%;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto auto 34px;gap:4px;padding:6px 8px;align-items:center;overflow:hidden}
 .stage-wardrobe .preview-card .scene{grid-column:1;grid-row:1;width:auto;height:100%;min-height:0;max-width:100%;aspect-ratio:95/115;margin:0 auto;justify-self:center}
 .stage-wardrobe .preview-card .scene canvas{width:100%;height:100%;object-fit:contain;min-height:0}
 .stage-wardrobe .preview-card .preview-tag{display:none}
 .stage-wardrobe .preview-card h2{grid-column:1;grid-row:2;font-size:15px;line-height:1.1;margin:0}
 .stage-wardrobe .preview-card p{grid-column:1;grid-row:3;font-size:10px;line-height:1.2;margin:0}
 .stage-wardrobe .preview-card>.btn{grid-column:1;grid-row:4;min-height:32px;height:32px;padding:5px;margin:0}
 .stage-wardrobe .category-tabs{margin:0 0 5px;min-height:31px}
 .stage-wardrobe .category-tabs button{font-size:10px;min-height:30px;padding:4px 2px}
 .stage-wardrobe .item-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
 .stage-wardrobe .item-card{min-height:101px;padding:6px 3px}.stage-wardrobe .item-card canvas{width:46px;height:46px}
 /* Category coordinates only belong to an open vault, not its three doors. */
 .shell.stage-wardrobe>.dragon-armory:not(.vault-open){grid-template-columns:minmax(0,1fr);grid-template-rows:30px 32px minmax(0,1fr) 18px}
 .dragon-armory:not(.vault-open)>.armory-heading{grid-column:1;grid-row:1}
 .dragon-armory:not(.vault-open)>.dragon-category-tabs{grid-column:1;grid-row:2}
 .dragon-armory:not(.vault-open)>.vault-doors{grid-column:1;grid-row:3}
 .dragon-armory:not(.vault-open)>.vault-footnote{grid-column:1;grid-row:4}
 .shell.stage-wardrobe>.dragon-armory.vault-open{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);grid-template-rows:32px 28px minmax(0,1fr) 18px;gap:5px 14px}
 .vault-selection{min-height:0}.vault-selection .vault-large-art{max-height:100%}
 .shell.stage-shop>.tavern-room{grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);grid-template-rows:minmax(0,1fr);padding:34px max(18px,env(safe-area-inset-right)) 10px max(18px,env(safe-area-inset-left));gap:14px}
 .stage-shop .tavern-host{min-width:0}.stage-shop .tavern-stock{min-height:0}
 .stage-shop .tavern-stock .shop-card{grid-template-columns:34px minmax(0,1fr) 66px;gap:6px;padding:10px 0}
 .stage-shop .tavern-stock .shop-card h2{font-size:13px}.stage-shop .tavern-stock .shop-card p{font-size:10px}
 .stage-shop .tavern-stock .shop-tabs{gap:3px}.stage-shop .tavern-stock .shop-tabs button{font-size:5px;min-width:0}
 /* Keep combat's three columns explicit even below the former 600px cutoff. */
 .stage-combat .combat.screen{max-width:1050px;grid-template-columns:minmax(0,.9fr) minmax(0,1fr) minmax(0,1.4fr);grid-template-rows:28px 50px minmax(0,1fr) 12px;column-gap:10px;padding:6px max(10px,env(safe-area-inset-right)) 7px max(10px,env(safe-area-inset-left));--board-height:calc(100dvh - var(--ad-space) - 59px);--active-row-height:clamp(30px,11cqh,44px);--key-height:clamp(29px,12cqh,43px)}
 .stage-combat .combat .combat-foot{display:contents}
 .stage-combat .combat .command-line{grid-column:2/4;grid-row:1;min-width:0;padding-right:24px}
 .stage-combat .combat .combat-head{grid-column:1;grid-row:2}
 .stage-combat .combat .battle-wrap,.stage-combat .combat:not(.room-0) .battle-wrap{grid-column:1;grid-row:3;min-height:0;height:100%}
 .stage-combat .combat .rune-board-controls,.stage-combat .combat.boss-combat .rune-board-controls{grid-column:2;grid-row:2/4;width:100%;height:100%;margin:0}
 .stage-combat .combat .combat-controls{grid-column:3;grid-row:3/5;align-self:end;min-width:0}
 .stage-combat .combat .turn-clock{grid-column:3;grid-row:2;align-self:center;justify-self:center;width:100%;max-width:100%;margin:0;height:38px}
 .stage-combat .combat .combat-head h1{font-size:16px;line-height:20px;letter-spacing:.5px}
 .stage-combat .combat .enemy-vitals{font-size:6px}.stage-combat .combat .enemy-vitals .threat{font-size:4px}
 .stage-combat .combat .keyboard .key{font-size:16px}.stage-combat .combat .keyboard .key.strike-key{font-size:9px;min-width:35px}
 .stage-combat .combat .keyboard .key.wide{min-width:27px}
 .stage-combat .combat .knight-status{max-width:100%;height:25px;padding:3px 4px}
 .stage-combat .combat .command-line>.ward-rack{left:56%}
 .stage-combat .combat .command-line>.combat-purse b{font-size:10px}
 .stage-combat .combat .health-caption{font-size:6px}
 .stage-combat .combat .combat-hint{display:none}
}
@media(orientation:landscape) and (max-height:500px){
 .stage-combat .combat .turn-clock{width:calc(100% - 44px);margin-right:44px}
 .stage-combat .combat .turn-clock [data-turn-label]{font-size:8px;padding-inline:20px;letter-spacing:.3px}
 .stage-combat .combat .turn-clock b{font-size:24px}
 .stage-combat .combat .keyboard .key.strike-key{flex:1.8 1 0;font-size:9px;min-width:39px}
}
@media(orientation:landscape) and (max-height:500px){
 .dragon-armory.vault-open .armory-heading h1{font-size:20px;letter-spacing:1px}
 .dragon-armory.vault-open .vault-purse{grid-template-columns:17px auto;gap:3px}
 .dragon-armory.vault-open .vault-purse b{font-size:21px}.dragon-armory.vault-open .vault-purse .tooth-icon{width:17px;height:22px}
 .quest-prelude.modal-backdrop{padding:30px max(20px,env(safe-area-inset-right)) 8px max(20px,env(safe-area-inset-left))}
 .quest-prelude .oath-screen{width:min(820px,100%);height:100%;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);grid-template-rows:16px minmax(100px,1fr) 38px 24px 20px;gap:4px 20px;padding:0 3px;overflow-y:auto;align-content:stretch}
 .oath-back{top:2px;left:max(10px,env(safe-area-inset-left));min-height:26px;padding:0 6px;font-size:23px}
 .oath-back span{font-size:6px}
 .quest-prelude .oath-heading{grid-column:1;grid-row:1/3;align-self:center}
 .quest-prelude .oath-heading .eyebrow{font-size:6px;line-height:1.3;letter-spacing:1px;margin:0}
 .quest-prelude .oath-heading h2{font-size:23px;line-height:1.15;min-height:2.3em;margin:6px 0}
 .quest-prelude .oath-heading>p:last-child{height:auto;min-height:0;font-size:11px;line-height:1.4;margin:0}
 .quest-prelude .oath-blade,.quest-prelude .oath-route{display:none}
 .quest-prelude .oath-prompt{grid-column:2;grid-row:1;font-size:10px;line-height:16px;margin:0}
 .quest-prelude .oath-choices{grid-column:2;grid-row:2;display:grid;grid-template-rows:1fr 1fr;gap:5px;min-height:0}
 .quest-prelude .oath-choice{height:100%;min-height:0;max-height:none;padding:5px 7px;grid-template-columns:20px minmax(0,1fr) 33px 8px;gap:5px}
 .quest-prelude .oath-choice strong{font-size:8px;letter-spacing:1px}.quest-prelude .oath-choice em{font-size:10px;line-height:1.2}
 .quest-prelude .oath-choice .oath-mark{font-size:21px}.quest-prelude .oath-choice .oath-mark>.provision-icon{width:21px;height:26px}
 .quest-prelude .oath-vital b{font-size:20px}.quest-prelude .oath-vital small{font-size:4px}
 .quest-prelude .oath-entry-details{grid-column:1;grid-row:3;height:38px;min-height:0;margin:0}
 .quest-prelude .oath-key-cost{font-size:9px;gap:2px;line-height:1.3;flex-wrap:wrap}.quest-prelude .oath-key-cost small{font-size:9px}
 .quest-prelude .oath-ready{font-size:10px;line-height:1.2}.quest-prelude .oath-ready small{font-size:9px}
 .quest-prelude .oath-reset{font-size:9px;line-height:1.2;margin:0}
 .quest-prelude .oath-elixir{grid-column:1;grid-row:4;margin:0;min-height:0;height:24px;font-size:9px;gap:4px}
 .quest-prelude .oath-elixir input{width:14px;height:14px}.quest-prelude .oath-elixir em{font-size:8px}
 .quest-prelude .oath-enter{grid-column:2;grid-row:3;display:flex;margin:0;height:38px;min-height:38px;max-height:38px;font-size:9px;letter-spacing:.5px;padding:4px 6px}
 .quest-prelude .oath-sealed-copy{grid-column:2;grid-row:4;font-size:9px;line-height:12px;height:24px;min-height:24px;margin:0}
 .quest-prelude .oath-tutorial-link{grid-column:2;grid-row:5;min-height:20px;height:20px;margin:0;padding:2px;font-size:9px}
 .quest-prelude .oath-footnote{grid-column:1;grid-row:5;min-height:0;height:20px;margin:0;font-size:8px;line-height:10px}
}
@media(orientation:landscape) and (max-height:500px){
 .lucky-cap-backdrop{padding:12px max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left))}
 .lucky-cap-dialog{width:min(680px,100%);height:100%;max-height:100%;display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-template-rows:minmax(0,.85fr) minmax(0,1.15fr);gap:4px 16px;padding:12px 16px;overflow:hidden}
 .lucky-cap-dialog .cap-machine{grid-column:1;grid-row:1/3;width:min(100%,calc((100dvh - var(--ad-space) - 106px)*1.032));margin:auto;justify-self:center;align-self:center}
 .lucky-cap-dialog .cap-heading{grid-column:2;grid-row:1;align-self:center;min-height:0}
 .lucky-cap-dialog .cap-heading h2{font-size:25px;letter-spacing:1px}.lucky-cap-dialog .cap-heading .eyebrow{font-size:5px;letter-spacing:1px;margin:0 20px 5px}
 .lucky-cap-dialog .cap-heading>p:last-child{font-size:10px;margin:6px 0}
 .lucky-cap-dialog .cap-controls{grid-column:2;grid-row:2;align-self:center;min-height:0}
 .lucky-cap-dialog .cap-status{font-size:10px;margin:3px 0 7px}.lucky-cap-dialog .cap-footnote{font-size:8px;line-height:1.3;margin:6px 0 0}
 .lucky-cap-dialog .cap-controls .btn{min-height:38px;padding:7px;font-size:9px;letter-spacing:.6px}
 .lucky-cap-dialog .cap-jackpot{height:25px;gap:4px}.lucky-cap-dialog .cap-jackpot canvas{width:19px;height:22px}
 .lucky-cap-dialog .cap-jackpot span{font-size:5px;letter-spacing:.3px}.lucky-cap-dialog .cap-jackpot small{font-size:4px;letter-spacing:0;margin-top:2px}
 .lucky-cap-dialog .cap-slot-labels{min-height:27px}.lucky-cap-dialog .cap-slot-label{padding:3px 0;gap:2px}
 .lucky-cap-dialog .cap-slot-label b{font-size:10px}.lucky-cap-dialog .cap-slot-label small{font-size:4px}
 .lucky-cap-dialog .cap-intro-panel{inset:3px 3px 28px}.lucky-cap-dialog .cap-intro-seal svg{width:24px;height:27px}
 .lucky-cap-dialog .cap-intro-panel h3{font-size:6px;margin:6px 0}.lucky-cap-dialog .cap-intro-panel p{font-size:9px;line-height:1.4}
 .lucky-cap-dialog .cap-intro-panel b{font-size:7px}.lucky-cap-dialog .cap-intro-panel>small{font-size:4px;margin-top:5px}
 .lucky-cap-dialog .cap-magic-key{margin-top:6px;gap:6px}
 .shell.stage>.quest-tutorial{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) 25px 34px;padding:33px max(20px,env(safe-area-inset-right)) 10px max(20px,env(safe-area-inset-left));gap:5px 20px}
 .quest-tutorial header{grid-column:1;grid-row:1}.quest-tutorial .tutorial-film{grid-column:2;grid-row:1/5;height:100%;min-height:0;max-height:100%;margin:0}
 .quest-tutorial .tutorial-copy{grid-column:1;grid-row:2;min-height:0;overflow-y:auto}
 .quest-tutorial .tutorial-slide-time{grid-column:1;grid-row:3}.quest-tutorial footer{grid-column:1;grid-row:4}
 .quest-tutorial h1{font-size:19px;line-height:1.15;margin:5px 0}.quest-tutorial .tutorial-copy p{font-size:11px;line-height:1.3}
 .quest-tutorial .tutorial-copy .tutorial-note{font-size:10px}.quest-tutorial footer .btn{min-height:34px}
}
