/* Painel único de infraestrutura (Barricada, Gerador, Hospital) — PC 1280, mockup tela_principal/pc_1280.css (.mk-infra).
 * Fica abaixo do Local atual, na coluna esquerda; só existe com html.tp-1280. */
#infra-painel { display: none; }
html.tp-1280 #infra-painel {
  position: absolute; z-index: 22; box-sizing: border-box;
  left: var(--tp-gap); width: var(--tp-esq);
  top: calc(var(--tp-meio-top) + var(--tp-local-h) + var(--tp-gap)); bottom: var(--tp-meio-bottom);
  display: flex; flex-direction: column; overflow: hidden; color: var(--ln-texto);
  background:
    linear-gradient(170deg, rgba(52,46,36,.97), rgba(18,15,12,.97)),
    repeating-linear-gradient(135deg, rgba(139,69,24,.09) 0 6px, transparent 6px 12px);
  border: 2px solid var(--ln-metal); border-radius: 10px;
  box-shadow: 0 12px 30px var(--ln-sombra), inset 0 0 0 1px rgba(201,162,39,.2);
}
html.tp-1280 #infra-painel::before {
  content: ""; display: block; height: 6px; flex: 0 0 auto; opacity: .9;
  background: repeating-linear-gradient(135deg, var(--ln-fita-a) 0 8px, var(--ln-fita-b) 8px 16px);
}
.tp-infra__cab { display: flex; align-items: center; justify-content: space-between; padding: 5px 8px 4px; border-bottom: 1px solid rgba(110,101,82,.45); }
.tp-infra__cab h2 { margin: 0; font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--ln-perigo); line-height: 1.1; }
.tp-infra__cab h2 small { display: block; color: var(--ln-muted); font-size: 8.5px; letter-spacing: .08em; }
.tp-infra__rec { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; color: var(--ln-muted);
  background: rgba(10,8,6,.6); border: 1px solid rgba(201,162,39,.45); border-radius: 999px; padding: 2px 7px 2px 3px; white-space: nowrap; }
.tp-infra__rec b { color: var(--ln-texto); }
.tp-infra__rec i { font-style: normal; width: 15px; height: 15px; border-radius: 3px; display: grid; place-items: center; font-size: 9px;
  background: #4a3a1c; border: 1px solid #c9a227; color: #f0e6cc; }
.tp-infra__lista { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.tp-infra__item {
  flex: 1 1 0; min-height: 0; display: grid; grid-template-columns: 34px 1fr; column-gap: 7px; row-gap: 2px;
  align-content: center; padding: 4px 8px; border-bottom: 1px dashed rgba(110,101,82,.4); position: relative;
}
.tp-infra__item:last-child { border-bottom: 0; }
.tp-infra__item > * { min-width: 0; }
.tp-infra__ico { grid-row: 1 / span 3; width: 34px; height: 34px; border-radius: 8px; display: grid; place-items: center; align-self: start;
  background: radial-gradient(circle at 40% 35%, #3a3226, #15120e); border: 1px solid var(--ln-metal);
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.6), 0 2px 4px rgba(0,0,0,.5); }
.tp-infra__ico img, .tp-infra__ico svg { width: 28px; height: 28px; }
.tp-infra__topo { grid-column: 2; display: flex; align-items: center; justify-content: space-between; gap: 4px; flex-wrap: wrap; row-gap: 2px; }
.tp-infra__nome { font-size: 10px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.tp-infra__estado { font-size: 8px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; padding: 1px 4px; border-radius: 3px; white-space: nowrap; }
.tp-infra__estado--ok { background: #1f3a1a; color: #b6e3a8; border: 1px solid #2ea043; }
.tp-infra__estado--liga { background: #3a300c; color: #ffd75a; border: 1px solid #c9a227; box-shadow: 0 0 6px rgba(201,162,39,.45); }
.tp-infra__estado--off { background: #24201a; color: #a89878; border: 1px solid #6e6552; }
.tp-infra__nivel { grid-column: 2; display: flex; align-items: center; gap: 3px; }
.tp-infra__topo .tp-infra__nivel { grid-column: auto; }
.tp-infra__nivel em { font-style: normal; font-size: 9px; color: var(--ln-muted); margin-left: 3px; }
.tp-pip { width: 15px; height: 9px; border-radius: 2px; background: #1a1610; border: 1px solid #4a4234; }
.tp-pip--cheio { background: repeating-linear-gradient(135deg, var(--ln-fita-a) 0 3px, #2a1e10 3px 6px); border-color: #c9a227; }
.tp-pip--comb { width: 11px; height: 13px; border-radius: 2px 2px 3px 3px; }
.tp-pip--comb.tp-pip--cheio { background: linear-gradient(180deg, #d0782a, #8b4518); border-color: #e0a050; }
.tp-infra__efeito { grid-column: 2; font-size: 9px; color: var(--ln-muted); line-height: 1.3; }
.tp-infra__efeito b { color: #e8dcc0; }
.tp-infra__raio { color: #ffd75a; }
/* stat de Barricadas vindo do topo, agora como texto do item */
html.tp-1280 #infra-painel .tp-infra__stat .ln-stat { display: inline; padding: 0; border: 0; border-radius: 0; background: none; font-size: 9px; color: var(--ln-muted); }
html.tp-1280 #infra-painel .tp-infra__stat .ln-stat__ico { display: none; }
html.tp-1280 #infra-painel .tp-infra__stat .ln-stat strong { color: #e8dcc0; }
.tp-infra__acoes { grid-column: 1 / -1; display: flex; gap: 4px; margin-top: 2px; align-items: center; }
.tp-infra__btn, html.layout-novo .tp-infra .btn-energia-interruptor.tp-infra__btn {
  flex: 1 1 0; appearance: none; cursor: pointer; font-size: 8.5px; font-weight: 700; letter-spacing: .03em; line-height: 1.2;
  padding: 3px 4px; border-radius: 4px; color: var(--ln-texto); background: #24301c; border: 1px solid #4d6a3a;
  white-space: nowrap; text-align: center; min-height: 22px;
}
.tp-infra__btn:disabled, html.layout-novo .tp-infra .btn-energia-interruptor:disabled { opacity: .5; cursor: not-allowed; }
.tp-infra__btn--sec, html.layout-novo .tp-infra .btn-energia-interruptor.tp-infra__btn--sec { background: #1a1610; border-color: #6e6552; }
.tp-infra__btn--liga { background: #3a300c; border-color: #c9a227; }
/* stat de Energia (com o interruptor real) vindo do topo */
html.tp-1280 #infra-painel .tp-infra__acoes--vazio { display: none; }
html.tp-1280 #infra-painel .tp-infra__acoes--energia [data-stat="energia"] { display: flex !important; border-radius: 0; align-items: center; gap: 4px; width: 100%;
  padding: 0; border: 0; background: none; font-size: 9px; color: var(--ln-muted); }
html.tp-1280 #infra-painel .tp-infra__acoes--energia .ln-stat__ico { display: none; }
html.tp-1280 #infra-painel .tp-infra__acoes--energia .ln-stat__label { display: none; }
.tp-infra__acoes--energia #energia { flex: 0 0 auto; font-size: 9px; color: #e8dcc0; }
.tp-infra__acoes--energia .energia-interruptor-wrap { flex: 1 1 auto; margin-left: 0; display: flex; }
.tp-infra__recusa { grid-column: 1 / -1; font-size: 8.5px; line-height: 1.25; color: #e0907a; }
.tp-infra__msg { grid-column: 1 / -1; font-size: 8.5px; line-height: 1.25; padding: 2px 5px; border-radius: 4px; }
.tp-infra__msg.is-ok { background: #1f3a22; color: #bde8c0; }
.tp-infra__msg.is-erro { background: #3a1f1a; color: #f0b8a8; }
.tp-infra__item--nao-construido .tp-infra__ico { filter: grayscale(.7) brightness(.85); border-style: dashed; }
.tp-infra__prev {
  flex: 0 0 auto; padding: 5px 8px 6px; font-size: 9px; line-height: 1.4; color: var(--ln-muted);
  border-top: 2px solid transparent; background: rgba(8,6,4,.55);
  border-image: repeating-linear-gradient(90deg, var(--ln-fita-a) 0 8px, var(--ln-fita-b) 8px 16px) 1;
}
.tp-infra__prev h3 { margin: 0 0 2px; font-size: 8.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--ln-perigo); }
.tp-infra__prev b { color: var(--ln-texto); }
/* Janela de tratamento do Hospital: ao lado do painel, dentro da faixa esquerda do mapa (região 1 livre). */
html.tp-1280 .hospital-pop { left: calc(var(--tp-esq) + var(--tp-gap) * 3); top: calc(var(--tp-meio-top) + var(--tp-local-h)); width: 320px; max-height: 420px; }
/* O selo do Hospital no mapa fica no rótulo da região 1, menor no 1280 para não tapar rótulos vizinhos. */
html.tp-1280 .hospital-selo-mapa { font-size: 9px; padding: 0 5px; margin-left: 4px; }
