/* Compact layouts below 1101px; medium desktop overrides follow at the end. */
.mobile-combat-toggle{display:none}
@media(max-width:1100px){
  body{height:var(--compact-height,100dvh)}
  body>.game,body>.game:has(#character-preview){grid-template-columns:minmax(0,1fr) 190px}
  .resource-sidebar .resource-orb{--holder-size:112px;height:135px}
  .resource-sidebar>.character{padding:5px;border-width:8px}
  .character-name h2{font-size:19px;overflow-wrap:anywhere}
  .topbar{padding:0 8px}.brand{font-size:14px}.brand small{display:none}
  .connection{gap:4px}.connection>span:not(.status-lamp){display:none}
  .connection button,.quick-actions button{min-height:36px}
  .quick-actions{gap:5px;scrollbar-width:thin;overscroll-behavior-x:contain}
  #command-form input,.login-entry input,.game-modal input:not([type=checkbox]),.game-modal select{font-size:16px}
  #command-form{min-height:40px}#command-form button{min-height:36px}
  .game-modal{max-width:calc(100vw - 16px)!important;max-height:calc(var(--compact-height,100dvh) - 16px)!important;border-width:12px}
  .game-modal>header{padding:10px 12px;gap:10px}.game-modal h2{font-size:25px;overflow-wrap:anywhere}
  .game-modal #panel-content{padding:14px;overscroll-behavior:contain}
  .game-modal>footer{min-height:48px;padding:8px 12px;flex-wrap:wrap;gap:8px}
  .game-modal button{min-height:36px}.game-modal>header button{min-width:44px;min-height:44px}
  .game-modal>header>div{min-width:0}
  body>.learned-action-bar{width:340px;height:min(280px,36dvh);right:8px;bottom:104px}
  .combat-auto-switch{min-height:38px}.combat-card-controls .combat-target-pick{min-height:44px;min-width:44px}
  .world:has(.illustrated-scene) #room-caption{max-height:64px;overflow:auto;overscroll-behavior:contain}
  .world:has(.illustrated-scene) .room-heading>.room-conditions{margin-top:6px}
  .skilltree-branch{margin-left:5px;padding-left:6px}.skilltree{padding:6px}
  .skilltree-nodes{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}
  .loot-row{gap:8px;flex-wrap:wrap}.loot-row>div{min-width:0;overflow-wrap:anywhere}
}
@media(max-width:760px){
  body{grid-template-rows:52px minmax(0,1fr) auto;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
  .topbar{height:52px;border-width:5px;padding:0 6px}.brand{gap:0}.brand>span:last-child{display:none}
  .connection{flex-wrap:nowrap;gap:3px}.connection button{min-height:36px;padding:2px 5px;font-size:11px}
  .scene-toggle-bar{top:8px;left:48px;transform:none;margin:0;padding:0}.scene-toggle-bar button{min-height:36px;font-size:11px;padding:2px 5px}
  body>.game,body>.game:has(#character-preview){grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1.15fr) 64px minmax(170px,1fr);gap:3px;padding:3px;overflow:hidden;overscroll-behavior:contain}
  body>.game .world,body>.game .world:has(.illustrated-scene){grid-column:1;grid-row:1;border-width:6px;min-width:0}
  body>.game .resource-sidebar{grid-column:1;grid-row:2;flex-direction:row;gap:3px;overflow:hidden}
  .resource-sidebar>.character{flex:0 1 30%;padding:2px 5px;border-width:5px;justify-content:center}
  .resource-sidebar .character-name{margin:0}.character-name h2{font-size:14px;margin:0}.character-name .portrait,#character-preview{display:none}
  #player-level{display:block;font-size:9px;line-height:1.2;max-height:24px;overflow:hidden}
  .resource-sidebar>.orb-dock{flex:1;flex-direction:row;justify-content:space-around;gap:2px;padding:0 3px;border-width:4px;overflow:hidden}
  .resource-sidebar .resource-orb{--holder-size:46px;height:54px;flex:0 0 58px}
  .resource-sidebar .resource-orb .orb-glass{width:62.6%;height:calc(var(--holder-size)*.626);overflow:visible;z-index:3}
  .resource-sidebar .resource-orb .orb-value{font-size:9px;left:-14px;right:-14px;white-space:nowrap;z-index:2}
  .resource-sidebar .resource-orb .orb-label{font-size:0;line-height:12px;bottom:0}
  .resource-sidebar .resource-orb .orb-label small{display:inline!important;font-size:9px;margin:0}
  body>.game .journal{grid-column:1;grid-row:3;border-width:6px}
  .journal-heading{height:28px}.journal-heading h2{font-size:18px}.journal-heading>span{font-size:10px}
  #log{font-size:12px;padding:4px 6px;overflow-wrap:anywhere}
  .quick-actions{padding:3px 0;flex-wrap:nowrap}.quick-actions button{min-height:40px;font-size:12px;padding:2px 8px}
  #command-form{min-height:44px}#command-form button{min-height:40px}
  body>footer{height:16px;font-size:8px;padding:0 6px;overflow:hidden}
  .world:has(.illustrated-scene) .room-heading{top:4px;left:7px;max-width:calc(100% - 108px)}
  .room-heading h1{font-size:19px;line-height:1.15;margin:3px 0}
  .world:has(.illustrated-scene) #room-caption{font-size:11px;line-height:1.3;max-height:42px;padding:2px 4px;margin:3px 0}
  .room-condition{font-size:8px;padding:2px 3px}.world:has(.illustrated-scene) .room-heading>.room-conditions{margin-top:3px;max-height:26px;overflow:auto}
  .world:has(.illustrated-scene) .camera-bar{top:4px;right:4px;left:auto}.camera-bar button{min-width:30px;min-height:34px}
  .room-combatants{gap:12px;padding:3px 6px;max-height:112px}
  .room-combatants .npc-card,.room-combatants>.player-scene-card{flex-basis:82px;width:82px}
  .room-combatants .npc-portrait,.room-combatants .npc-portrait-slot{height:43px}
  .room-combatants .npc-card-name{font-size:11px;padding:2px 3px}.room-combatants .npc-card-role{font-size:8px;padding:1px 3px}
  .room-combatants .combat-status,.room-combatants .npc-condition{font-size:8px;padding:1px 3px}
  .illustrated-scene>.illustrated-exits{height:112px;min-height:112px;grid-template-rows:repeat(3,34px);gap:2px 4px;padding:3px 6px;width:100%;margin:0}
  .compass-slot>.illustrated-exit{font-size:11px;border-width:4px;padding:2px 4px}
  body:has(>.learned-action-bar:not([hidden])){grid-template-rows:52px minmax(0,1fr) 158px auto}
  body>.learned-action-bar,body>.learned-action-bar.window-manipulating{position:relative!important;grid-row:3;margin:0 3px!important;inset:auto!important;transform:none!important;width:auto!important;height:100%!important;min-width:0;max-width:none!important;max-height:none!important;padding:4px 6px;z-index:5;overflow:hidden}
  body:has(>.learned-action-bar:not([hidden]))>footer{grid-row:4}
  body>.learned-action-bar>header{min-height:36px;touch-action:auto;cursor:default}
  .learned-action-bar header button{min-height:36px;font-size:11px}.mobile-combat-toggle{display:block;min-width:40px}
  .learned-action-bar .combat-panel-buttons{gap:4px}.learned-action-bar button[aria-label="Reset combat panel position"]{display:none}
  .learned-action-bar>.window-resize-handle,.combat-panel-content>small{display:none}
  body>.learned-action-bar .learned-action-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
  .learned-action-bar header>strong{font-size:14px}.learned-action{min-width:0}
  body:has(>.learned-action-bar.mobile-collapsed:not([hidden])){grid-template-rows:52px minmax(0,1fr) 52px auto}
  .learned-action-bar.mobile-collapsed .combat-panel-content{display:none}
  body.combat-picking:has(>.learned-action-bar:not([hidden])){grid-template-rows:52px minmax(0,1fr) 52px auto}
  body.combat-picking .learned-action-bar .combat-panel-content{display:none}
  .combat-pick-hint{max-width:calc(100vw - 16px);font-size:12px;white-space:normal}
  body>.game.console-only:has(#character-preview){grid-template-columns:1fr;grid-template-rows:minmax(0,1fr)}
  body:has(.game.console-only){grid-template-rows:52px minmax(0,1fr) auto}
  body:has(.game.console-only)>footer{grid-row:3}
  .game-modal{top:8px!important;left:8px!important;bottom:auto!important;right:auto!important;margin:0!important;width:calc(100vw - 16px)!important;height:auto!important;max-height:calc(var(--compact-height,100dvh) - 16px)!important;transform:none!important}
  .game-modal>.window-resize-handle{display:none}.game-modal>.window-drag-handle{touch-action:auto;cursor:default}
  .game-modal h2{font-size:22px}.game-modal>header .eyebrow{font-size:9px}
  .game-modal #panel-content{padding:10px}.game-modal>footer span{overflow-wrap:anywhere}
  .equipment-empty-slots{grid-template-columns:repeat(2,minmax(0,1fr))}.equipment-empty-slot{padding:9px;font-size:12px;grid-template-columns:24px minmax(0,1fr)}
  .skilltree-branch>summary{font-size:16px}.skilltree-branch{margin-left:2px;padding-left:4px}
  .skilltree-nodes{grid-template-columns:minmax(0,1fr)}
  .login-note{max-width:calc(100% - 20px);max-height:calc(100% - 60px);overflow:auto;left:10px!important;bottom:8px!important;border-width:10px;padding:8px}
  .login-note h2{font-size:20px}.login-note p{font-size:12px}
  /* Let the room itself scroll on short phones; commands always keep their space. */
  body>.game .world:has(.illustrated-scene){display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain}
  .world:has(.illustrated-scene) .room-heading{position:relative;top:auto;left:auto;margin:4px 7px;flex-shrink:0}
  #scene.illustrated-scene{position:relative;inset:auto;flex:1 0 200px;min-height:200px;width:100%;height:auto}
  .room-combatants{max-height:88px}.room-combatants .npc-portrait,.room-combatants .npc-portrait-slot{height:30px}
}
@media(min-width:761px) and (max-width:1100px){
  body:has(>.learned-action-bar:not([hidden])){grid-template-rows:60px minmax(0,1fr) 174px 20px}
  body>.learned-action-bar,body>.learned-action-bar.window-manipulating{position:relative!important;grid-row:3;inset:auto!important;transform:none!important;width:auto!important;height:100%!important;max-height:none!important;margin:0 6px!important;padding:4px 8px}
  body:has(>.learned-action-bar:not([hidden]))>footer{grid-row:4}
  body>.learned-action-bar .learned-action-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .mobile-combat-toggle{display:block;min-width:40px;min-height:36px}
  .learned-action-bar>header{min-height:36px;touch-action:auto;cursor:default}
  .learned-action-bar>.window-resize-handle,.combat-panel-content>small,.learned-action-bar button[aria-label="Reset combat panel position"]{display:none}
  .learned-action-bar.mobile-collapsed .combat-panel-content{display:none}
  body:has(>.learned-action-bar.mobile-collapsed:not([hidden])),body.combat-picking:has(>.learned-action-bar:not([hidden])){grid-template-rows:60px minmax(0,1fr) 52px 20px}
  body.combat-picking .learned-action-bar .combat-panel-content{display:none}
  body:has(.game.console-only){grid-template-rows:60px minmax(0,1fr) 20px}body:has(.game.console-only)>footer{grid-row:3}
}
@media(max-width:440px){
  body>.learned-action-bar .learned-action-list{grid-template-columns:minmax(0,1fr)}
  .connection .status-lamp{display:none}.connection button{font-size:10px;padding:2px 3px}
  .scene-toggle-bar{left:40px}.scene-toggle-bar button{font-size:10px;padding:2px 3px}
  .journal-heading>span{display:none}.equipment-card-meta{flex-wrap:wrap;gap:2px}
  .equipment-saving-colors{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:1100px) and (max-height:540px){
  body{grid-template-rows:46px minmax(0,1fr) auto}.topbar{height:46px}.scene-toggle-bar{top:5px}
  body>.game,body>.game:has(#character-preview){grid-template-columns:minmax(0,1fr) minmax(260px,1fr);grid-template-rows:minmax(0,1fr);overflow:hidden}
  body>.game .resource-sidebar{display:none}body>.game:has(.resource-sidebar) .journal{grid-column:2;grid-row:1}
  body:has(>.learned-action-bar:not([hidden])){grid-template-rows:46px minmax(0,1fr) 126px auto}
  body:has(>.learned-action-bar.mobile-collapsed:not([hidden])),body.combat-picking:has(>.learned-action-bar:not([hidden])){grid-template-rows:46px minmax(0,1fr) 52px auto}
  body>.learned-action-bar{position:relative!important;grid-row:3;inset:auto!important;transform:none!important;margin:0 3px!important;width:auto!important;height:100%!important;max-height:none!important;padding:3px 6px}
  body:has(>.learned-action-bar:not([hidden]))>footer{grid-row:4}
  .mobile-combat-toggle{display:block}.learned-action-bar>.window-resize-handle,.combat-panel-content>small{display:none}
  .learned-action-bar.mobile-collapsed .combat-panel-content{display:none}
  .room-combatants{max-height:90px}.room-combatants .npc-portrait,.room-combatants .npc-portrait-slot{height:32px}
  .illustrated-scene>.illustrated-exits{height:100px;min-height:100px;grid-template-rows:repeat(3,30px);gap:2px;padding:3px}
  body>.game .world:has(.illustrated-scene){display:flex;flex-direction:column;overflow-y:auto}
  .world:has(.illustrated-scene) .room-heading{position:relative;top:auto;left:auto;margin:4px 7px;flex-shrink:0}
  #scene.illustrated-scene{position:relative;inset:auto;flex:1 0 190px;min-height:190px;width:100%;height:auto}
  body>.game.console-only:has(.resource-sidebar) .journal{grid-column:1/-1}
  body:has(.game.console-only){grid-template-rows:46px minmax(0,1fr) auto}body:has(.game.console-only)>footer{grid-row:3}
}
@media(max-width:1100px){
  body.mobile-keyboard{grid-template-rows:46px minmax(0,1fr) auto!important}
  body.mobile-keyboard>.game,body.mobile-keyboard>.game:has(#character-preview){grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow:hidden}
  body.mobile-keyboard>.game .world,body.mobile-keyboard>.game .resource-sidebar,body.mobile-keyboard>.learned-action-bar{display:none}
  body.mobile-keyboard>.game .journal{grid-column:1;grid-row:1}
  body.mobile-keyboard>footer{grid-row:3}
  body.mobile-keyboard .game-modal{top:8px!important;bottom:auto!important;margin-top:0!important}
}
