<?php
// ── materiais.php ─────────────────────────────────────────────────────
$pageActive = 'materiais';
$pageTitle  = 'Estoque de Materiais';
require_once __DIR__ . '/functions.php';
require_once __DIR__ . '/auth.php';
requireLogin();

// Lemos o usuário ANTES do header.php — ele redefine $usuario,
// mas nossas variáveis $_u / $isAdmin / $tecnicoId ficam intactas.
$_u        = usuarioLogado();
$isAdmin   = ($_u['perfil'] === 'ADMIN');
$tecnicoId = (int)$_u['id'];

// Garante tabela estoque_tecnico
try {
    pdo()->exec("CREATE TABLE IF NOT EXISTS `estoque_tecnico` (
        `id`            INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        `material_id`   INT UNSIGNED NOT NULL,
        `tecnico_id`    INT UNSIGNED NOT NULL,
        `quantidade`    INT NOT NULL DEFAULT 0,
        `atualizado_em` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        UNIQUE KEY `uk_mat_tec` (`material_id`,`tecnico_id`),
        KEY `idx_tecnico` (`tecnico_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
} catch (Throwable $e) { /* já existe */ }

$erroDb = '';
$msg    = $_GET['msg']  ?? '';
$erro   = $_GET['erro'] ?? '';

// ── POST ───────────────────────────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (!verifyCsrf($_POST['csrf_token'] ?? '')) die('CSRF inválido');

    $acao  = $_POST['acao']   ?? 'ajuste_admin';
    $matId = (int)($_POST['mat_id'] ?? 0);
    $obs   = trim($_POST['obs'] ?? '');

    // ADMIN — ajuste estoque geral (lógica original preservada)
    if ($acao === 'ajuste_admin' && $isAdmin) {
        $delta = (int)($_POST['delta'] ?? 0);
        $tipo  = $delta >= 0 ? 'ENTRADA_AJUSTE' : 'SAIDA_AJUSTE';
        if ($matId && $delta !== 0) {
            try {
                pdo()->prepare(
                    "UPDATE materiais
                     SET quantidade_estoque = GREATEST(0, quantidade_estoque + ?)
                     WHERE id = ?"
                )->execute([abs($delta) * ($delta >= 0 ? 1 : -1), $matId]);
                pdo()->prepare(
                    "INSERT INTO estoque_movimentos
                        (material_id,tipo_movimento,quantidade,responsavel_id,descricao)
                     VALUES (?,?,?,?,?)"
                )->execute([$matId, $tipo, abs($delta), $tecnicoId, $obs ?: null]);
                $msg = '✓ Estoque atualizado!';
            } catch (Throwable $e) { $erro = $e->getMessage(); }
        }
    }

    // TÉCNICO — incluir material no estoque próprio
    if ($acao === 'inc_tec' && !$isAdmin) {
        $qtd = max(0, (int)($_POST['qtd_inc'] ?? 0));
        if ($matId) {
            try {
                pdo()->prepare(
                    "INSERT INTO estoque_tecnico (material_id,tecnico_id,quantidade)
                     VALUES (?,?,?)
                     ON DUPLICATE KEY UPDATE quantidade = quantidade + VALUES(quantidade)"
                )->execute([$matId, $tecnicoId, $qtd]);
                if ($qtd > 0) {
                    pdo()->prepare(
                        "INSERT INTO estoque_movimentos
                            (material_id,tipo_movimento,quantidade,responsavel_id,descricao)
                         VALUES (?,'ENTRADA_COMPRA',?,?,?)"
                    )->execute([$matId, $qtd, $tecnicoId, $obs ?: 'Inclusão no estoque pessoal']);
                }
                $msg = '✓ Material incluído no seu estoque!';
            } catch (Throwable $e) { $erro = $e->getMessage(); }
        }
    }

    // TÉCNICO — ajustar estoque próprio (+ ou −)
    if ($acao === 'ajuste_tec' && !$isAdmin) {
        $delta = (int)($_POST['delta'] ?? 0);
        $tipo  = $delta >= 0 ? 'ENTRADA_AJUSTE' : 'SAIDA_AJUSTE';
        if ($matId && $delta !== 0) {
            try {
                pdo()->prepare(
                    "UPDATE estoque_tecnico
                     SET quantidade = GREATEST(0, quantidade + ?)
                     WHERE material_id = ? AND tecnico_id = ?"
                )->execute([abs($delta) * ($delta >= 0 ? 1 : -1), $matId, $tecnicoId]);
                pdo()->prepare(
                    "INSERT INTO estoque_movimentos
                        (material_id,tipo_movimento,quantidade,responsavel_id,descricao)
                     VALUES (?,?,?,?,?)"
                )->execute([$matId, $tipo, abs($delta), $tecnicoId, $obs ?: null]);
                $msg = '✓ Seu estoque foi atualizado!';
            } catch (Throwable $e) { $erro = $e->getMessage(); }
        }
    }

    // TÉCNICO — dar baixa
    if ($acao === 'baixa_tec' && !$isAdmin) {
        $qtd = max(1, (int)($_POST['qtd_baixa'] ?? 1));
        if ($matId) {
            try {
                pdo()->prepare(
                    "UPDATE estoque_tecnico
                     SET quantidade = GREATEST(0, quantidade - ?)
                     WHERE material_id = ? AND tecnico_id = ?"
                )->execute([$qtd, $matId, $tecnicoId]);
                pdo()->prepare(
                    "INSERT INTO estoque_movimentos
                        (material_id,tipo_movimento,quantidade,responsavel_id,descricao)
                     VALUES (?,'SAIDA_USO',?,?,?)"
                )->execute([$matId, $qtd, $tecnicoId, $obs ?: 'Baixa manual']);
                $msg = '✓ Baixa registrada!';
            } catch (Throwable $e) { $erro = $e->getMessage(); }
        }
    }
}

// ── Consultas ──────────────────────────────────────────────────────────
$busca     = trim($_GET['busca'] ?? '');
$filtroSit = $_GET['sit'] ?? '';
$materiais = [];

$catalogoMat = [];
if (!$isAdmin) {
    try {
        $catalogoMat = pdo()->query(
            "SELECT id, nome, unidade, quantidade_estoque FROM materiais ORDER BY nome"
        )->fetchAll();
    } catch (Throwable $e) { /* silencia */ }
}

try {
    $p = [];
    if ($isAdmin) {
        $sql = "SELECT m.*, NULL AS qtd_tecnico FROM materiais m WHERE 1=1";
        if ($filtroSit === 'baixo')  $sql .= " AND m.quantidade_estoque <= m.alerta_minimo AND m.quantidade_estoque > 0";
        if ($filtroSit === 'zerado') $sql .= " AND m.quantidade_estoque = 0";
    } else {
        $sql = "SELECT m.*, et.quantidade AS qtd_tecnico
                FROM materiais m
                INNER JOIN estoque_tecnico et ON et.material_id = m.id AND et.tecnico_id = ?
                WHERE 1=1";
        $p[] = $tecnicoId;
        if ($filtroSit === 'baixo')  $sql .= " AND et.quantidade <= m.alerta_minimo AND et.quantidade > 0";
        if ($filtroSit === 'zerado') $sql .= " AND et.quantidade = 0";
    }
    if ($busca) {
        $sql .= " AND (m.nome LIKE ? OR m.codigo_barra LIKE ?)";
        $b = "%$busca%"; $p[] = $b; $p[] = $b;
    }
    $sql .= " ORDER BY m.nome";
    $s = pdo()->prepare($sql);
    $s->execute($p);
    $materiais = $s->fetchAll();
} catch (Throwable $e) { $erroDb = $e->getMessage(); }

// header.php define $usuario — sem conflito, usamos $_u / $isAdmin / $tecnicoId
require_once __DIR__ . '/includes/header.php';
?>

<!-- ── CSS LOCAL ────────────────────────────────────────────────────── -->
<style>
/* mat-row — mesmo padrão do os_detalhe */
.mat-row{display:flex;align-items:center;gap:10px;padding:11px 14px;background:var(--card);border:1px solid var(--border);border-radius:10px;margin-bottom:7px;transition:border-color .15s}
.mat-row:hover{border-color:var(--border2)}
.mat-info{flex:1;min-width:0}
.mat-nome{font-size:13px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mat-sub{font-size:10px;color:var(--muted);font-family:var(--mono);margin-top:2px}
.mat-num{font-family:var(--mono);font-size:22px;font-weight:800;line-height:1;white-space:nowrap}
.mat-un{font-size:9px;color:var(--muted);font-family:var(--mono);text-align:right;margin-top:1px}
.mat-tag{font-size:10px;font-family:var(--mono);padding:3px 9px;border-radius:10px;white-space:nowrap}
.mat-actions{display:flex;flex-direction:column;gap:4px;align-items:flex-end}
/* section-head — mesmo padrão do os_detalhe */
.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.section-title{font-size:11px;font-weight:700;letter-spacing:1px;color:var(--muted);font-family:var(--mono)}
/* btn-danger ausente no header */
.btn-danger{background:rgba(239,68,68,.15);color:var(--red);border:1px solid rgba(239,68,68,.3)}
.btn-danger:hover{background:rgba(239,68,68,.25)}
/* Mobile */
@media(max-width:640px){
  .mat-row{flex-wrap:wrap;gap:8px;padding:10px 12px}
  .mat-info{min-width:calc(100% - 80px)}
  .mat-num-wrap{order:-1;margin-left:auto}
  .mat-actions{flex-direction:row;width:100%;justify-content:flex-end;margin-top:2px}
  .mat-col-geral{display:none}
}
</style>

<!-- ── TOPBAR ──────────────────────────────────────────────────────── -->
<div class="topbar">
  <button class="btn-hamburger" onclick="abrirDrawer()" aria-label="Menu">&#9776;</button>
  <div>
    <div class="page-title">▣ Estoque</div>
    <div class="page-sub">
      <?= count($materiais) ?> ite<?= count($materiais) === 1 ? 'm' : 'ns' ?>
      <?php if (!$isAdmin): ?>
        &nbsp;·&nbsp;<span style="color:var(--cyan);font-family:var(--mono)">Seu estoque</span>
      <?php endif; ?>
    </div>
  </div>
  <div class="topbar-actions">
    <?php if ($isAdmin): ?>
      <button class="btn btn-primary" onclick="document.getElementById('modal-novo-mat').classList.add('open')">
        + Novo Material
      </button>
    <?php else: ?>
      <button class="btn btn-primary" onclick="document.getElementById('modal-inc-tec').classList.add('open')">
        + Incluir
      </button>
    <?php endif; ?>
  </div>
</div>

<div class="content">

<?php if ($msg):   ?><div class="alert alert-success"><?= e($msg) ?></div><?php endif; ?>
<?php if ($erro):  ?><div class="alert alert-danger"><?= e($erro) ?></div><?php endif; ?>
<?php if ($erroDb):?><div class="alert alert-danger">⚠ BD: <?= e($erroDb) ?></div><?php endif; ?>

<!-- ── FILTROS ──────────────────────────────────────────────────────── -->
<form method="get" class="filter-bar">
  <div class="search-wrap">
    <span class="search-icon">⌕</span>
    <input type="text" name="busca" placeholder="Nome ou código de barras..."
           value="<?= e($busca) ?>" oninput="this.form.submit()"/>
  </div>
  <select class="filter-select" name="sit" onchange="this.form.submit()">
    <option value=""       <?= $filtroSit===''       ?'selected':'' ?>>Todos</option>
    <option value="baixo"  <?= $filtroSit==='baixo'  ?'selected':'' ?>>Estoque baixo</option>
    <option value="zerado" <?= $filtroSit==='zerado' ?'selected':'' ?>>Sem estoque</option>
  </select>
  <?php if ($busca || $filtroSit): ?>
    <a href="materiais.php" class="btn btn-ghost btn-sm">✕ Limpar</a>
  <?php endif; ?>
</form>

<!-- ── LISTA ────────────────────────────────────────────────────────── -->
<div class="section-head">
  <span class="section-title">
    <?= $isAdmin ? 'TODOS OS MATERIAIS' : 'MEU ESTOQUE' ?>
    (<?= count($materiais) ?>)
  </span>
  <?php if (!$isAdmin): ?>
    <span style="font-size:10px;color:var(--muted);font-family:var(--mono)">
      GERAL = referência do almoxarifado
    </span>
  <?php endif; ?>
</div>

<?php if (empty($materiais)): ?>
  <div style="text-align:center;padding:48px 16px;color:var(--muted);font-size:13px">
    <?php if ($isAdmin): ?>
      Nenhum material cadastrado.
    <?php else: ?>
      Nenhum material no seu estoque.<br>
      <small>Use <b>+ Incluir</b> para adicionar.</small>
    <?php endif; ?>
  </div>

<?php else: foreach ($materiais as $m):
  $qtdGeral   = (int)$m['quantidade_estoque'];
  $qtdPropria = $m['qtd_tecnico'] !== null ? (int)$m['qtd_tecnico'] : $qtdGeral;
  $qtd        = $isAdmin ? $qtdGeral : $qtdPropria;
  $alert      = (int)$m['alerta_minimo'];

  if ($qtd === 0)         { $sit='SEM ESTOQUE'; $cor='var(--red)';   $bg='rgba(239,68,68,.12)'; }
  elseif ($qtd <= $alert) { $sit='BAIXO';       $cor='var(--amber)'; $bg='rgba(245,158,11,.12)'; }
  else                    { $sit='OK';          $cor='var(--green)'; $bg='rgba(16,185,129,.10)'; }

  $sub = implode(' · ', array_filter([
      $m['tipo']         ?? '',
      $m['categoria']    ?? '',
      $m['codigo_barra'] ? ('# '.e($m['codigo_barra'])) : '',
  ]));
?>
<div class="mat-row">

  <div class="mat-info">
    <div class="mat-nome"><?= e($m['nome']) ?></div>
    <?php if ($sub): ?><div class="mat-sub"><?= $sub ?></div><?php endif; ?>
  </div>

  <?php if (!$isAdmin): ?>
  <div class="mat-col-geral" style="text-align:center;min-width:44px">
    <div style="font-size:13px;font-weight:700;color:var(--muted);font-family:var(--mono)"><?= $qtdGeral ?></div>
    <div style="font-size:9px;color:var(--muted);font-family:var(--mono)">geral</div>
  </div>
  <?php endif; ?>

  <div class="mat-num-wrap" style="text-align:right;min-width:48px">
    <div class="mat-num" style="color:<?= $cor ?>"><?= $qtd ?></div>
    <div class="mat-un"><?= e($m['unidade']) ?></div>
  </div>

  <div style="text-align:center">
    <span class="mat-tag" style="color:<?= $cor ?>;background:<?= $bg ?>"><?= $sit ?></span>
    <div style="font-size:9px;color:var(--muted);font-family:var(--mono);margin-top:3px">mín <?= $alert ?></div>
  </div>

  <div class="mat-actions">
    <?php if ($isAdmin): ?>
      <button class="btn btn-ghost btn-xs"
              onclick="abrirAjuste(<?= $m['id'] ?>,<?= e(json_encode($m['nome'])) ?>,<?= $qtdGeral ?>)">
        ↕ Ajustar
      </button>
    <?php else: ?>
      <button class="btn btn-ghost btn-xs"
              onclick="abrirAjusteTec(<?= $m['id'] ?>,<?= e(json_encode($m['nome'])) ?>,<?= $qtdPropria ?>)">
        ↕ Ajustar
      </button>
      <button class="btn btn-ghost btn-xs" style="color:var(--red)"
              onclick="abrirBaixaTec(<?= $m['id'] ?>,<?= e(json_encode($m['nome'])) ?>,<?= $qtdPropria ?>)">
        ↓ Baixa
      </button>
    <?php endif; ?>
  </div>

</div>
<?php endforeach; endif; ?>

</div><!-- /content -->

<!-- ═══════════════════════════════════════════════════════════════════
     MODAIS — definidos ANTES das funções JS para garantir que os
     getElementById() sempre encontrem os elementos no DOM.
  ════════════════════════════════════════════════════════════════════ -->

<!-- Ajuste estoque geral (ADMIN) -->
<div class="modal-overlay" id="modal-ajuste"
     onclick="if(event.target===this){this.classList.remove('open');document.body.style.overflow='';}">
  <div class="modal" style="max-width:420px">
    <div class="modal-header">
      <div class="modal-title" id="ajuste-titulo">↕ Ajustar Estoque</div>
      <button class="modal-close" onclick="fecharMeuModal('modal-ajuste')">✕</button>
    </div>
    <div style="padding:20px">
      <form method="post">
        <input type="hidden" name="csrf_token" value="<?= csrfToken() ?>"/>
        <input type="hidden" name="acao"   value="ajuste_admin"/>
        <input type="hidden" name="mat_id" id="ajuste-mat-id"/>
        <div class="form-group" style="margin-bottom:12px">
          <label class="form-label">QUANTIDADE ATUAL</label>
          <div id="ajuste-atual"
               style="font-size:28px;font-weight:800;color:var(--cyan);font-family:var(--mono)">—</div>
        </div>
        <div class="form-group" style="margin-bottom:12px">
          <label class="form-label">AJUSTE <small style="color:var(--muted);font-weight:400">(+ entrada / − saída)</small></label>
          <input class="form-input" type="number" name="delta" id="ajuste-delta"
                 placeholder="Ex: 10 ou -3"
                 style="font-family:var(--mono);font-size:20px;text-align:center"/>
        </div>
        <div class="form-group" style="margin-bottom:16px">
          <label class="form-label">OBSERVAÇÃO</label>
          <input class="form-input" type="text" name="obs" placeholder="Motivo do ajuste..."/>
        </div>
        <div style="display:flex;gap:8px">
          <button type="button" class="btn btn-ghost"
                  onclick="fecharMeuModal('modal-ajuste')">Cancelar</button>
          <button type="submit" class="btn btn-primary" style="flex:1">✓ Aplicar</button>
        </div>
      </form>
    </div>
  </div>
</div>

<!-- Novo material (ADMIN) -->
<div class="modal-overlay" id="modal-novo-mat"
     onclick="if(event.target===this){this.classList.remove('open');document.body.style.overflow='';}">
  <div class="modal" style="max-width:520px">
    <div class="modal-header">
      <div class="modal-title">+ Novo Material</div>
      <button class="modal-close" onclick="fecharMeuModal('modal-novo-mat')">✕</button>
    </div>
    <div style="padding:20px">
      <form method="post" action="salvar_novo.php">
        <input type="hidden" name="csrf_token"    value="<?= csrfToken() ?>"/>
        <input type="hidden" name="tipo_entidade" value="material"/>
        <div class="form-grid">
          <div class="form-group full">
            <label class="form-label">NOME DO MATERIAL *</label>
            <input class="form-input" type="text" name="nome" required
                   placeholder="Ex: Cabo Drop Óptico"/>
          </div>
          <div class="form-group">
            <label class="form-label">TIPO</label>
            <select class="form-select" name="tipo">
              <option value="PRODUTO">Produto</option>
              <option value="SERVICO">Serviço</option>
              <option value="ATIVO">Ativo</option>
            </select>
          </div>
          <div class="form-group">
            <label class="form-label">UNIDADE</label>
            <select class="form-select" name="unidade">
              <option value="un">un</option>
              <option value="m">m</option>
              <option value="caixa">caixa</option>
              <option value="rolo">rolo</option>
              <option value="par">par</option>
            </select>
          </div>
          <div class="form-group">
            <label class="form-label">ESTOQUE INICIAL</label>
            <input class="form-input" type="number" name="quantidade_estoque" value="0" min="0"/>
          </div>
          <div class="form-group">
            <label class="form-label">ALERTA MÍNIMO</label>
            <input class="form-input" type="number" name="alerta_minimo" value="5" min="0"/>
          </div>
          <div class="form-group full">
            <label class="form-label">CÓDIGO DE BARRAS</label>
            <input class="form-input" type="text" name="codigo_barra" placeholder="Opcional"/>
          </div>
        </div>
        <div style="display:flex;gap:8px;margin-top:14px">
          <button type="button" class="btn btn-ghost"
                  onclick="fecharMeuModal('modal-novo-mat')">Cancelar</button>
          <button type="submit" class="btn btn-primary" style="flex:1">✓ Cadastrar Material</button>
        </div>
      </form>
    </div>
  </div>
</div>

<!-- ── MODAIS TÉCNICO ────────────────────────────────────────────────── -->
<?php if (!$isAdmin): ?>

<!-- Incluir material no estoque pessoal -->
<div class="modal-overlay" id="modal-inc-tec"
     onclick="if(event.target===this){this.classList.remove('open');document.body.style.overflow='';}">
  <div class="modal" style="max-width:460px">
    <div class="modal-header">
      <div class="modal-title">+ Incluir Material no Meu Estoque</div>
      <button class="modal-close" onclick="fecharMeuModal('modal-inc-tec')">✕</button>
    </div>
    <div style="padding:20px">
      <form method="post">
        <input type="hidden" name="csrf_token" value="<?= csrfToken() ?>"/>
        <input type="hidden" name="acao" value="inc_tec"/>
        <div class="form-group" style="margin-bottom:12px">
          <label class="form-label">MATERIAL *</label>
          <select class="form-select" name="mat_id" id="inc-mat-sel"
                  onchange="atualizarDispInc(this)" required>
            <option value="">Selecione um material...</option>
            <?php foreach ($catalogoMat as $cm): ?>
              <option value="<?= $cm['id'] ?>"
                      data-geral="<?= (int)$cm['quantidade_estoque'] ?>"
                      data-un="<?= e($cm['unidade']) ?>">
                <?= e($cm['nome']) ?>
              </option>
            <?php endforeach; ?>
          </select>
        </div>
        <div class="form-group" style="margin-bottom:12px">
          <label class="form-label">
            QUANTIDADE RECEBIDA
            <span id="inc-disp-lbl"
                  style="color:var(--muted);font-weight:400;font-family:var(--mono);font-size:11px"></span>
          </label>
          <input class="form-input" type="number" name="qtd_inc" id="inc-qtd"
                 value="1" min="0"
                 style="font-family:var(--mono);font-size:20px;text-align:center"/>
        </div>
        <div class="form-group" style="margin-bottom:16px">
          <label class="form-label">OBSERVAÇÃO</label>
          <input class="form-input" type="text" name="obs"
                 placeholder="Ex: Recebido do almoxarifado..."/>
        </div>
        <div style="display:flex;gap:8px">
          <button type="button" class="btn btn-ghost"
                  onclick="fecharMeuModal('modal-inc-tec')">Cancelar</button>
          <button type="submit" class="btn btn-primary" style="flex:1">✓ Incluir</button>
        </div>
      </form>
    </div>
  </div>
</div>

<!-- Ajustar estoque próprio (TÉCNICO) -->
<div class="modal-overlay" id="modal-ajuste-tec"
     onclick="if(event.target===this){this.classList.remove('open');document.body.style.overflow='';}">
  <div class="modal" style="max-width:420px">
    <div class="modal-header">
      <div class="modal-title" id="tec-ajuste-titulo">↕ Ajustar Meu Estoque</div>
      <button class="modal-close" onclick="fecharMeuModal('modal-ajuste-tec')">✕</button>
    </div>
    <div style="padding:20px">
      <form method="post">
        <input type="hidden" name="csrf_token" value="<?= csrfToken() ?>"/>
        <input type="hidden" name="acao"   value="ajuste_tec"/>
        <input type="hidden" name="mat_id" id="tec-mat-id"/>
        <div class="form-group" style="margin-bottom:12px">
          <label class="form-label">SEU ESTOQUE ATUAL</label>
          <div id="tec-qtd-atual"
               style="font-size:28px;font-weight:800;color:var(--cyan);font-family:var(--mono)">—</div>
        </div>
        <div class="form-group" style="margin-bottom:12px">
          <label class="form-label">AJUSTE <small style="color:var(--muted);font-weight:400">(+ entrada / − saída)</small></label>
          <input class="form-input" type="number" name="delta" id="tec-delta"
                 placeholder="Ex: 5 ou -2"
                 style="font-family:var(--mono);font-size:20px;text-align:center"/>
        </div>
        <div class="form-group" style="margin-bottom:16px">
          <label class="form-label">OBSERVAÇÃO</label>
          <input class="form-input" type="text" name="obs" placeholder="Motivo do ajuste..."/>
        </div>
        <div style="display:flex;gap:8px">
          <button type="button" class="btn btn-ghost"
                  onclick="fecharMeuModal('modal-ajuste-tec')">Cancelar</button>
          <button type="submit" class="btn btn-primary" style="flex:1">✓ Aplicar</button>
        </div>
      </form>
    </div>
  </div>
</div>

<!-- Dar baixa (TÉCNICO) -->
<div class="modal-overlay" id="modal-baixa-tec"
     onclick="if(event.target===this){this.classList.remove('open');document.body.style.overflow='';}">
  <div class="modal" style="max-width:400px">
    <div class="modal-header">
      <div class="modal-title" id="tec-baixa-titulo">↓ Dar Baixa</div>
      <button class="modal-close" onclick="fecharMeuModal('modal-baixa-tec')">✕</button>
    </div>
    <div style="padding:20px">
      <form method="post">
        <input type="hidden" name="csrf_token" value="<?= csrfToken() ?>"/>
        <input type="hidden" name="acao"   value="baixa_tec"/>
        <input type="hidden" name="mat_id" id="baixa-mat-id"/>
        <div class="form-group" style="margin-bottom:12px">
          <label class="form-label">SEU ESTOQUE ATUAL</label>
          <div id="baixa-qtd-atual"
               style="font-size:28px;font-weight:800;color:var(--cyan);font-family:var(--mono)">—</div>
        </div>
        <div class="form-group" style="margin-bottom:12px">
          <label class="form-label">QUANTIDADE A BAIXAR</label>
          <input class="form-input" type="number" name="qtd_baixa" id="baixa-qtd"
                 value="1" min="1"
                 style="font-family:var(--mono);font-size:20px;text-align:center"/>
        </div>
        <div class="form-group" style="margin-bottom:16px">
          <label class="form-label">MOTIVO</label>
          <input class="form-input" type="text" name="obs"
                 placeholder="Ex: Material danificado, uso em campo..."/>
        </div>
        <div style="display:flex;gap:8px">
          <button type="button" class="btn btn-ghost"
                  onclick="fecharMeuModal('modal-baixa-tec')">Cancelar</button>
          <button type="submit" class="btn btn-danger" style="flex:1">↓ Confirmar Baixa</button>
        </div>
      </form>
    </div>
  </div>
</div>

<?php endif; ?>

<!-- ── JAVASCRIPT ────────────────────────────────────────────────────
     classList direto — mesmo padrão do original que funcionava
     fecharMeuModal() centraliza o close + restaura scroll
     (não clona), então os valores JS definidos são preservados.
  ──────────────────────────────────────────────────────────────────── -->
<script>
// Fecha modal + restaura scroll (independente do header)
function fecharMeuModal(id) {
  document.getElementById(id).classList.remove('open');
  document.body.style.overflow = '';
}

// ADMIN
function abrirAjuste(id, nome, qtdAtual) {
  document.getElementById('ajuste-titulo').textContent = '↕ Ajustar: ' + nome;
  document.getElementById('ajuste-mat-id').value       = id;
  document.getElementById('ajuste-atual').textContent  = qtdAtual;
  document.getElementById('ajuste-delta').value        = '';
  document.getElementById('modal-ajuste').classList.add('open');
  document.body.style.overflow='hidden';
  setTimeout(() => document.getElementById('ajuste-delta').focus(), 200);
}

// TÉCNICO — ajustar próprio
function abrirAjusteTec(id, nome, qtdAtual) {
  document.getElementById('tec-ajuste-titulo').textContent = '↕ Ajustar: ' + nome;
  document.getElementById('tec-mat-id').value              = id;
  document.getElementById('tec-qtd-atual').textContent     = qtdAtual;
  document.getElementById('tec-delta').value               = '';
  document.getElementById('modal-ajuste-tec').classList.add('open');
  document.body.style.overflow='hidden';
  setTimeout(() => document.getElementById('tec-delta').focus(), 200);
}

// TÉCNICO — baixa
function abrirBaixaTec(id, nome, qtdAtual) {
  document.getElementById('tec-baixa-titulo').textContent = '↓ Baixa: ' + nome;
  document.getElementById('baixa-mat-id').value           = id;
  document.getElementById('baixa-qtd-atual').textContent  = qtdAtual;
  document.getElementById('baixa-qtd').value              = 1;
  document.getElementById('baixa-qtd').max                = qtdAtual > 0 ? qtdAtual : 99999;
  document.getElementById('modal-baixa-tec').classList.add('open');
  document.body.style.overflow='hidden';
  setTimeout(() => document.getElementById('baixa-qtd').focus(), 200);
}

// TÉCNICO — label no modal Incluir
function atualizarDispInc(sel) {
  const opt = sel.options[sel.selectedIndex];
  document.getElementById('inc-disp-lbl').textContent = opt.value
    ? '(almoxarifado: ' + (opt.dataset.geral || '0') + ' ' + (opt.dataset.un || '') + ')'
    : '';
}
</script>

<?php require_once __DIR__ . '/includes/footer.php'; ?>

