/* Friends: Last Light V6 — multiplayer, Horde, fortification and motion UI. */
:root {
  --v6-cyan: #55d3dd;
  --v6-cyan-dim: #225e68;
  --v6-green: #76d994;
  --v6-gold: #e3b95b;
  --v6-red: #ef695c;
  --v6-ink: #071014;
  --v6-panel: rgba(10, 19, 24, .94);
}

/* Human fireteams replace divergent AI squad entities in network Horde. */
body.v6-network-horde #squad-hud,
body.v6-network-horde #command-wheel,
body.v6-network-horde [data-mobile-cluster="squad"],
body.v6-network-horde [data-mobile-cluster-toggle="squad"],
body.v6-network-horde [data-touch="assist"],
body.v6-network-horde [data-touch="combo"],
body.v6-network-horde [data-touch="command"],
body.v6-network-horde [data-touch="squad"] {
  display: none !important;
}

.network-menu-item { position: relative; overflow: hidden; grid-template-columns: 34px minmax(0,1fr) minmax(42px,auto); }
.network-menu-item::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .13;
  background: repeating-linear-gradient(90deg, transparent 0 8px, var(--v6-cyan) 9px, transparent 10px);
  transform: translateX(-100%); animation: v6-network-scan 5.2s linear infinite;
}
.network-menu-live {
  color: var(--v6-cyan) !important; border: 1px solid rgba(85,211,221,.48); border-radius: 2px;
  min-width: 42px; padding: .18rem .38rem; font: 900 .58rem/1 ui-monospace, monospace; letter-spacing: .12em; text-align: center;
  box-shadow: 0 0 14px rgba(85,211,221,.15);
}
@keyframes v6-network-scan { 0%, 65% { transform: translateX(-110%); } 100% { transform: translateX(110%); } }

.multiplayer-panel {
  width: min(1500px, calc(100vw - 42px)); max-height: min(920px, calc(100dvh - 36px)); overflow: hidden;
  border-color: rgba(85,211,221,.25); box-shadow: 0 24px 100px rgba(0,0,0,.72), inset 0 1px rgba(255,255,255,.035);
}
.multiplayer-panel > header { position: relative; z-index: 3; }
.multiplayer-layout {
  display: grid; grid-template-columns: minmax(290px,.82fr) minmax(390px,1.12fr) minmax(360px,1fr);
  grid-template-areas: "network mode lobby" "brief brief lobby"; gap: 12px; min-height: 0;
  overflow: auto; padding: 2px 3px 6px; scrollbar-color: var(--v6-cyan-dim) transparent;
}
.network-console, .mode-console, .lobby-console, .network-briefing {
  position: relative; min-width: 0; padding: 16px; border: 1px solid rgba(126,157,161,.16);
  background: linear-gradient(145deg, rgba(18,31,36,.93), rgba(7,14,18,.97)); overflow: hidden;
}
.network-console { grid-area: network; }
.mode-console { grid-area: mode; }
.lobby-console { grid-area: lobby; }
.network-briefing { grid-area: brief; min-height: 148px; padding-right: min(45%, 480px); }
.network-console::after, .mode-console::after, .lobby-console::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(90deg, rgba(85,211,221,.045) 1px, transparent 1px), linear-gradient(rgba(85,211,221,.035) 1px, transparent 1px);
  background-size: 22px 22px; mask-image: linear-gradient(to bottom, black, transparent 82%);
}
.network-briefing::after {
  content: ""; position: absolute; right: -45px; bottom: -112px; width: 520px; height: 520px;
  background: url("assets/sprites/v6-fortifications-keyposes.png") 0 0 / 520px 520px no-repeat;
  opacity: .16; filter: saturate(.9) drop-shadow(0 0 20px rgba(85,211,221,.18)); pointer-events: none;
}
.multiplayer-layout .v4-section-heading { position: relative; z-index: 1; margin-bottom: 14px; }
.multiplayer-layout .v4-section-heading > b {
  padding: .35rem .48rem; border: 1px solid rgba(239,105,92,.42); color: #ff9489; background: rgba(239,105,92,.08);
  font-size: .62rem; letter-spacing: .1em;
}
.multiplayer-layout .v4-section-heading > b[data-state="connected"],
.multiplayer-layout .v4-section-heading > b[data-state="lobby"],
.multiplayer-layout .v4-section-heading > b[data-state="playing"] {
  color: #8cf4ad; border-color: rgba(118,217,148,.48); background: rgba(118,217,148,.08); box-shadow: 0 0 12px rgba(118,217,148,.09);
}

.network-field, .network-rule-row label { display: grid; gap: 6px; position: relative; z-index: 1; margin-top: 10px; }
.network-field > span, .network-rule-row label > span {
  color: #84999d; font: 800 .62rem/1.2 ui-monospace, monospace; letter-spacing: .14em;
}
.network-field input, .network-rule-row select, .network-code-field input {
  width: 100%; min-height: 42px; border: 1px solid rgba(120,157,163,.25); border-radius: 2px;
  background: rgba(2,9,12,.74); color: #e8f2ed; padding: .68rem .76rem; outline: 0;
  font: 800 .76rem/1 ui-monospace, monospace; letter-spacing: .04em;
}
.network-rule-row label, .network-rule-row select { min-width: 0; }
.network-field input:focus, .network-rule-row select:focus, .network-code-field input:focus {
  border-color: var(--v6-cyan); box-shadow: 0 0 0 2px rgba(85,211,221,.11), inset 0 0 18px rgba(85,211,221,.04);
}
.network-actions, .network-room-actions, .network-lobby-controls { display: flex; gap: 8px; position: relative; z-index: 1; margin-top: 12px; }
.network-actions button, .network-room-actions button, .network-lobby-controls button, .solo-horde-launch {
  min-height: 40px; border: 1px solid rgba(123,153,157,.28); background: #17262c; color: #d7e4df;
  padding: .62rem .78rem; font: 900 .67rem/1 ui-monospace, monospace; letter-spacing: .08em; cursor: pointer;
}
.network-actions button:hover, .network-room-actions button:hover, .network-lobby-controls button:hover, .solo-horde-launch:hover {
  border-color: var(--v6-cyan); color: white; background: #1c3138;
}
.network-actions button:disabled, .network-room-actions button:disabled, .network-lobby-controls button:disabled { opacity: .36; cursor: not-allowed; }
.network-actions .danger, .network-lobby-controls .danger { border-color: rgba(239,105,92,.38); color: #ff9a90; }
.network-room-actions .primary, .network-lobby-controls .primary { border-color: rgba(118,217,148,.48); color: #95efae; background: #143124; }
.network-code-field { flex: 1 1 100px; min-width: 80px; }
.network-code-field input { height: 40px; min-height: 40px; text-transform: uppercase; text-align: center; letter-spacing: .2em; }

.network-diagnostics { display: grid; grid-template-columns: repeat(3,1fr); gap: 6px; position: relative; z-index: 1; margin-top: 12px; }
.network-diagnostics span {
  display: grid; gap: 4px; padding: 8px; border-top: 1px solid rgba(85,211,221,.2); background: rgba(0,0,0,.17);
  color: #71888c; font: 700 .52rem/1 ui-monospace, monospace; letter-spacing: .08em;
}
.network-diagnostics b { color: #c9dcda; font-size: .66rem; }

.network-mode-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 9px; position: relative; z-index: 1; }
.network-mode-card {
  display: grid; align-content: start; gap: 6px; min-height: 130px; padding: 14px; text-align: left; color: #aabdbb;
  border: 1px solid rgba(126,157,161,.2); background: linear-gradient(145deg, rgba(29,45,50,.78), rgba(10,18,22,.88)); cursor: pointer;
}
.network-mode-card span { color: #71888e; font: 800 .56rem/1 ui-monospace, monospace; letter-spacing: .15em; }
.network-mode-card strong { color: #e7eee8; font: 900 .92rem/1.15 ui-monospace, monospace; letter-spacing: .06em; }
.network-mode-card small { font-size: .68rem; line-height: 1.42; }
.network-mode-card.active { border-color: var(--v6-cyan); background: linear-gradient(145deg, rgba(30,75,80,.68), rgba(8,23,28,.94)); box-shadow: inset 3px 0 var(--v6-cyan), 0 0 20px rgba(85,211,221,.08); }
.network-mode-card.active span, .network-mode-card.active strong { color: #8eeaf0; }
.network-rule-row { display: grid; grid-template-columns: minmax(145px,1.3fr) minmax(130px,1.15fr) minmax(90px,.8fr); gap: 9px; position: relative; z-index: 1; }

.network-lobby-empty { display: grid; place-content: center; gap: 7px; min-height: 168px; text-align: center; border: 1px dashed rgba(126,157,161,.2); color: #71868a; }
.network-lobby-empty strong { font: 900 .76rem/1 ui-monospace, monospace; letter-spacing: .12em; }
.network-lobby-empty small { max-width: 260px; line-height: 1.45; }
.network-player-list { display: grid; gap: 7px; min-height: 168px; }
.network-player-row {
  display: grid; grid-template-columns: 34px 1fr auto; align-items: center; gap: 10px; padding: 8px 10px;
  border-left: 3px solid var(--player-color, var(--v6-cyan)); background: rgba(21,35,40,.82);
}
.network-player-avatar { width: 32px; height: 32px; border: 1px solid rgba(255,255,255,.16); background: var(--player-color,#4e7378); image-rendering: pixelated; }
.network-player-copy { display: grid; gap: 2px; min-width: 0; }
.network-player-copy strong { overflow: hidden; text-overflow: ellipsis; color: #edf2ed; font: 900 .7rem/1 ui-monospace, monospace; }
.network-player-copy small { color: #7f9698; font: 700 .55rem/1 ui-monospace, monospace; }
.network-player-ready { color: #f19c8d; font: 900 .56rem/1 ui-monospace, monospace; letter-spacing: .08em; }
.network-player-ready.ready { color: #82e8a1; }
.solo-horde-launch { width: 100%; margin-top: 10px; border-color: rgba(227,185,91,.42); color: #f2cf7f; background: linear-gradient(90deg, rgba(94,61,26,.43), rgba(32,27,20,.7)); }

.network-briefing h3 { margin: 7px 0 8px; color: #e7eee9; font: 900 .9rem/1.2 ui-monospace, monospace; letter-spacing: .06em; }
.network-briefing ul { display: grid; gap: 5px; position: relative; z-index: 1; margin: 0; padding-left: 1.1rem; color: #96aaa8; font-size: .7rem; line-height: 1.35; }
.network-event-log { position: absolute; z-index: 2; right: 14px; top: 14px; width: min(42%, 440px); max-height: 120px; overflow: hidden; padding: 9px; border-left: 2px solid var(--v6-cyan); background: rgba(3,10,13,.76); }
.network-event-log p { margin: 0 0 4px; color: #9cb6b6; font: 700 .58rem/1.35 ui-monospace, monospace; }
.network-event-log p:first-child { color: #dceae7; }

.network-hud, .horde-hud { position: fixed; z-index: 13; pointer-events: none; }
.network-hud {
  top: max(118px, env(safe-area-inset-top)); left: auto;
  right: max(509px, calc(env(safe-area-inset-right) + 494px));
  display: grid; grid-template-columns: 10px auto auto; align-items: center; gap: 8px; min-width: 215px; padding: 8px 10px;
}
.network-hud.hidden, .horde-hud.hidden { display: none !important; }
.network-signal { width: 8px; height: 8px; border-radius: 50%; background: #7b8987; box-shadow: 0 0 0 3px rgba(123,137,135,.12); }
.network-hud[data-state="connected"] .network-signal { background: var(--v6-green); box-shadow: 0 0 10px var(--v6-green); }
.network-hud[data-state="degraded"] .network-signal { background: var(--v6-gold); box-shadow: 0 0 10px var(--v6-gold); }
.network-hud > div:nth-child(2) { display: grid; gap: 2px; }
.network-hud strong, .network-hud small { font-family: ui-monospace, monospace; letter-spacing: .06em; }
.network-hud strong { color: #dcebe7; font-size: .64rem; }
.network-hud small { color: #779093; font-size: .5rem; }
.network-peer-pips { display: flex; gap: 3px; margin-left: auto; }
.network-peer-pips i { width: 7px; height: 14px; background: #26383c; border-bottom: 2px solid #55757a; }
.network-peer-pips i.online { background: #477b62; border-color: #7de0a0; }
.network-peer-pips i.downed { background: #7a3f39; border-color: #ee776c; animation: v6-ticket-pulse .8s steps(2) infinite; }

.horde-hud {
  top: max(106px, env(safe-area-inset-top));
  right: max(203px, calc(env(safe-area-inset-right) + 188px));
  width: min(296px, 32vw); padding: 10px 12px;
  border-color: rgba(239,105,92,.28); background: linear-gradient(120deg, rgba(42,17,20,.9), rgba(9,17,21,.94));
}
.horde-hud > div:first-child, .horde-team-line, .horde-tickets { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.horde-hud span { color: #a98f8d; font: 800 .54rem/1 ui-monospace, monospace; letter-spacing: .1em; }
.horde-hud strong { color: #ff8377; font: 900 .82rem/1 ui-monospace, monospace; }
.horde-team-line { margin: 8px 0; padding: 6px 0; border-block: 1px solid rgba(239,105,92,.13); }
.horde-team-line b { color: #f4cb69; font: 900 .72rem/1 ui-monospace, monospace; }
.horde-tickets > div { display: flex; gap: 3px; }
.horde-tickets i { width: 8px; height: 8px; transform: rotate(45deg); background: var(--v6-red); box-shadow: 0 0 7px rgba(239,105,92,.55); }
.horde-tickets i.spent { opacity: .17; box-shadow: none; }
.horde-tickets b { color: #d7bc72; font: 800 .55rem/1 ui-monospace, monospace; }
.horde-hud #horde-shop-btn { pointer-events: auto; width: 100%; min-height: 28px; margin-top: 8px; border: 1px solid rgba(227,185,91,.3); background: rgba(92,61,27,.28); color: #ebc76f; font: 900 .55rem/1 ui-monospace, monospace; letter-spacing: .09em; cursor: pointer; }
@keyframes v6-ticket-pulse { 50% { opacity: .35; } }

.horde-console { position: fixed; z-index: 88; inset: 0; display: grid; place-items: center; padding: max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left)); background: rgba(2,7,10,.78); backdrop-filter: blur(10px); }
.horde-console.hidden { display: none; }
.horde-console-panel { width: min(1180px,96vw); max-height: min(820px,94dvh); overflow: auto; border: 1px solid rgba(227,185,91,.35); background: linear-gradient(145deg,rgba(30,22,18,.98),rgba(7,15,19,.99) 44%); box-shadow: 0 28px 110px rgba(0,0,0,.8); }
.horde-console-panel > header { display: flex; justify-content: space-between; gap: 20px; padding: 20px 22px 15px; border-bottom: 1px solid rgba(227,185,91,.18); }
.horde-console-panel h2 { margin: 4px 0; color: #f0e8d5; font: 900 clamp(1.1rem,2.5vw,1.7rem)/1 ui-monospace,monospace; letter-spacing: .06em; }
.horde-console-panel header p { margin: 5px 0 0; color: #9e9c91; font-size: .72rem; }
#horde-console-close { align-self: start; width: 42px; height: 42px; border: 1px solid rgba(255,255,255,.16); background: #172126; color: #cad6d1; font-size: 1.5rem; cursor:pointer; }
.horde-console-summary { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; background: rgba(227,185,91,.15); border-bottom: 1px solid rgba(227,185,91,.16); }
.horde-console-summary span { display:grid; gap:5px; padding: 12px 16px; background: rgba(8,15,18,.96); color:#7f8e8d; font:800 .56rem/1 ui-monospace,monospace; letter-spacing:.1em; }
.horde-console-summary b { color:#efca70; font-size:.82rem; }
.horde-console-body { display:grid; grid-template-columns: minmax(0,1.7fr) minmax(280px,.75fr); gap: 18px; padding: 18px 22px; }
.horde-console-body h3 { margin:0 0 10px; color:#aab8b4; font:900 .68rem/1 ui-monospace,monospace; letter-spacing:.13em; }
.horde-shop-grid { display:grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap:8px; }
.horde-shop-card { display:grid; gap:6px; min-height:112px; padding:12px; text-align:left; border:1px solid rgba(126,157,161,.18); background:linear-gradient(145deg,rgba(28,40,42,.82),rgba(10,18,21,.9)); color:#a6b3af; cursor:pointer; }
.horde-shop-card:hover:not(:disabled) { border-color:#dfb65a; background:linear-gradient(145deg,rgba(58,47,28,.82),rgba(13,23,25,.94)); }
.horde-shop-card:disabled { opacity:.38; cursor:not-allowed; }
.horde-shop-card span { color:#d6ad54; font:900 .54rem/1 ui-monospace,monospace; letter-spacing:.1em; }
.horde-shop-card strong { color:#e5ece6; font:900 .72rem/1.15 ui-monospace,monospace; }
.horde-shop-card small { line-height:1.35; }
.horde-scoreboard { display:grid; gap:6px; }
.horde-score-row { display:grid; grid-template-columns:26px 1fr auto; gap:8px; align-items:center; padding:9px; border-left:3px solid var(--player-color,#63c8d2); background:rgba(16,27,31,.8); color:#d9e4df; font:800 .62rem/1 ui-monospace,monospace; }
.horde-score-row small { color:#7f9292; }
.horde-extraction-card { margin-top:10px; padding:12px; border:1px solid rgba(118,217,148,.35); background:rgba(25,65,43,.24); color:#9de2af; font-size:.68rem; line-height:1.45; }
.horde-console-panel > footer { display:flex; justify-content:flex-end; gap:8px; padding:13px 22px 18px; }
.horde-console-panel > footer button { min-height:44px; padding:.7rem 1rem; border:1px solid rgba(126,157,161,.28); background:#18272c; color:#d8e2de; font:900 .66rem/1 ui-monospace,monospace; letter-spacing:.09em; cursor:pointer; }
.horde-console-panel > footer .primary { border-color:rgba(239,105,92,.5); background:#482421; color:#ff9b90; }

.v6-intermission-banner, .v6-breach-banner {
  position: fixed; z-index: 20; left: 50%; top: 22%; translate: -50% -50%; pointer-events: none;
  min-width: min(560px, 88vw); padding: 18px 24px; text-align: center;
  border: 1px solid rgba(227,185,91,.45); background: linear-gradient(90deg, transparent, rgba(12,19,22,.95) 14%, rgba(12,19,22,.95) 86%, transparent);
  color: #f3d380; font: 900 clamp(.9rem,2vw,1.35rem)/1 ui-monospace, monospace; letter-spacing: .12em;
  animation: v6-banner-in 2.4s ease both;
}
.v6-breach-banner { border-color: rgba(239,105,92,.58); color: #ff8479; }
@keyframes v6-banner-in { 0% { opacity: 0; transform: translateY(-12px) scale(.94); } 12%,75% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateY(8px); } }

body.v6-hitstop #game { filter: contrast(1.16) brightness(1.08); }
body.v6-network-reconnecting::after {
  content: "RECONNECTING TO FIRETEAM…"; position: fixed; z-index: 100; left: 50%; bottom: max(30px, env(safe-area-inset-bottom)); translate: -50% 0;
  padding: .75rem 1.1rem; border: 1px solid rgba(227,185,91,.45); background: rgba(9,15,18,.94); color: #f0c86b;
  font: 900 .68rem/1 ui-monospace, monospace; letter-spacing: .12em;
}

@media (max-width: 1180px) {
  .multiplayer-layout { grid-template-columns: 1fr 1fr; grid-template-areas: "network mode" "lobby lobby" "brief brief"; }
  .lobby-console { display: grid; grid-template-columns: 1fr 1fr; column-gap: 14px; }
  .lobby-console .v4-section-heading, .lobby-console .network-room-actions, .lobby-console .network-lobby-controls, .lobby-console .solo-horde-launch { grid-column: 1 / -1; }
}

/* Between the desktop and single-column menu breakpoints the protocol card is
   only half a panel wide. Stack its rule controls before their authored track
   minimums can force the final select beneath the console's clipping mask. */
@media (min-width: 761px) and (max-width: 900px) {
  .network-rule-row { grid-template-columns: 1fr; }

  /* The compact desktop HUD also has a narrower minimap rail and a field-op
     card below it. This leaves a deliberate gutter between all three cards. */
  body:not(.mobile-v5) .horde-hud {
    right: max(235px, calc(env(safe-area-inset-right) + 220px));
    width: min(250px, 31vw);
  }
  body:not(.mobile-v5) #hud:has(> .horde-hud:not(.hidden)) > .objective { max-width: 270px; }
}

@media (pointer: coarse), (max-width: 760px) {
  .multiplayer-panel { width: 100vw; max-height: 100dvh; min-height: 100dvh; border: 0; border-radius: 0; }
  .multiplayer-panel > header { position: sticky; top: 0; background: rgba(7,14,18,.96); padding-right: max(54px, env(safe-area-inset-right)); }
  .multiplayer-layout { display: grid; grid-template-columns: 1fr; grid-template-areas: "network" "mode" "lobby" "brief"; gap: 8px; padding-bottom: max(24px, env(safe-area-inset-bottom)); }
  .network-console, .mode-console, .lobby-console, .network-briefing { padding: 13px; }
  .lobby-console { display: block; }
  .network-mode-card { min-height: 116px; }
  .network-actions button, .network-room-actions button, .network-lobby-controls button, .solo-horde-launch { min-height: 48px; }
  .network-field input, .network-rule-row select, .network-code-field input { min-height: 48px; font-size: 16px; }
  .network-room-actions { flex-wrap: wrap; }
  .network-room-actions .primary { flex: 1 1 100%; }
  .network-code-field { flex: 1 1 45%; }
  .network-briefing { padding-right: 13px; min-height: 230px; }
  .network-briefing::after { opacity: .08; }
  .network-event-log { position: relative; inset: auto; width: 100%; max-height: 92px; margin-top: 12px; }
  .network-hud { top: max(82px, env(safe-area-inset-top)); left: max(8px, env(safe-area-inset-left)); right: auto; transform: scale(.86); transform-origin: left top; }
  .horde-hud { top: max(82px, env(safe-area-inset-top)); right: max(8px, env(safe-area-inset-right)); width: min(250px, 48vw); transform: scale(.84); transform-origin: right top; }
  .horde-console-body { grid-template-columns:1fr; }
  .horde-shop-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media (max-width: 520px) {
  .network-mode-grid, .network-rule-row { grid-template-columns: 1fr; }
  .network-mode-card { min-height: 96px; }
  .network-diagnostics { grid-template-columns: 1fr; }
  .network-diagnostics span { display: flex; justify-content: space-between; }
  .network-lobby-controls { flex-wrap: wrap; }
  .network-lobby-controls button { flex: 1 1 42%; }
  .network-hud { display: none !important; }
  .horde-hud { top: max(72px, env(safe-area-inset-top)); width: min(94vw, 330px); }
  .horde-console { padding:0; }
  .horde-console-panel { width:100vw; max-height:100dvh; min-height:100dvh; border:0; }
  .horde-console-summary { grid-template-columns:repeat(2,1fr); }
  .horde-console-body { padding:14px; }
  .horde-shop-grid { grid-template-columns:1fr; }
  .horde-shop-card { min-height:92px; }
}

/* Touch layouts expose their semantic layout on the body. Keep the minimap and
   Horde panel on the same horizontal band, then place network diagnostics in a
   separate centered band below them. This works in both tablet orientations. */
body.mobile-v5[data-mobile-layout^="tablet-"] .horde-hud {
  top: calc(var(--mobile-safe-top) + 134px);
  right: calc(var(--mobile-safe-right) + 150px);
  width: min(250px, calc(100vw - var(--mobile-safe-left) - var(--mobile-safe-right) - 330px));
  transform: scale(.84);
  transform-origin: right top;
}
body.mobile-v5[data-mobile-layout^="tablet-"] .network-hud {
  top: calc(var(--mobile-safe-top) + 282px);
  left: 50%;
  right: auto;
  transform: translateX(-50%) scale(.86);
  transform-origin: center top;
}
@media (max-width: 700px) {
  body.mobile-v5[data-mobile-layout="tablet-portrait"] #hud:has(> .horde-hud:not(.hidden)) > .objective {
    width: 210px;
    max-width: 210px;
  }
  body.mobile-v5[data-mobile-layout="tablet-portrait"] .network-hud { left: calc(50% - 25px); }
}

/* A phone has no spare diagnostics rail. Preserve the combat and HUD-cluster
   touch targets, while keeping the essential Horde controls in a compact card. */
body.mobile-v5[data-mobile-layout^="phone-"] .network-hud { display: none !important; }
body.mobile-v5[data-mobile-layout="phone-portrait"] .horde-hud {
  top: calc(var(--mobile-safe-top) + 112px);
  right: var(--mobile-safe-right);
  width: min(190px, calc(100vw - var(--mobile-safe-left) - var(--mobile-safe-right) - 150px));
  padding: 7px 8px;
  transform: none;
}
body.mobile-v5[data-mobile-layout="phone-portrait"] .horde-team-line { display: none; }
body.mobile-v5[data-mobile-layout="phone-portrait"] .horde-tickets > span { display: none; }
body.mobile-v5[data-mobile-layout="phone-portrait"] .horde-hud #horde-shop-btn { min-height: 32px; margin-top: 6px; }

/* Mid-width mouse/keyboard windows use the same visual breakpoints as a
   tablet but do not receive the mobile-v5 body class. Park network status in
   the clear band beneath Horde so it cannot cover the mission card. */
@media (min-width: 521px) and (max-width: 1180px) {
  body:not(.mobile-v5) .network-hud {
    top: 260px;
    left: 50%;
    right: auto;
    transform: translateX(-50%);
    transform-origin: center top;
  }
}

@media (prefers-reduced-motion: reduce) {
  .network-menu-item::before, .network-peer-pips i.downed, .horde-tickets i, .v6-intermission-banner, .v6-breach-banner { animation: none !important; }
}
