/* =========================
   CSB Tech • Gestão de Entidades
========================= */

.ent-admin-app{
  padding-bottom:calc(92px + env(safe-area-inset-bottom));
}

.ent-shell{display:grid; gap:14px}
.ent-narrow{max-width:880px}

.ent-auth-wrap{
  min-height:calc(100vh - 92px);
  display:flex;
  align-items:center;
  justify-content:center;
}
.ent-auth-card{width:min(640px,100%)}
.ent-auth-actions{display:flex; gap:10px; flex-wrap:wrap}
.ent-auth-actions .btn,#authForm .btn{min-height:44px}

.ent-help-box,
.ent-query-info,
.ent-panel-note{
  border:1px solid rgba(15,75,140,.14);
  background:rgba(15,75,140,.055);
  color:#264762;
  border-radius:16px;
  padding:12px 14px;
  font-size:13px;
  line-height:1.45;
}
.ent-help-box{margin-top:14px}

.ent-access-card{display:flex; align-items:flex-start; gap:16px; margin-top:22px}
.ent-access-icon{
  width:58px; height:58px; min-width:58px;
  border-radius:20px; display:grid; place-items:center;
  background:rgba(239,68,68,.10); color:#dc2626; font-size:26px;
}
.ent-denied-actions{display:flex; gap:10px; flex-wrap:wrap; margin-top:14px}

.ent-hero-card,.ent-toolbar-card,.ent-results-card{
  border:1px solid rgba(15,75,140,.14);
  background:linear-gradient(180deg, rgba(15,75,140,.035), rgba(15,75,140,.01)),#fff;
}
.ent-hero-main{display:flex; align-items:flex-start; gap:14px}
.ent-hero-icon{
  width:58px; height:58px; min-width:58px;
  border-radius:20px; display:grid; place-items:center;
  background:rgba(15,75,140,.10); color:var(--csb-blue-soft,#0f4b8c); font-size:26px;
}
.ent-hero-title{color:var(--text); font-size:1.18rem; line-height:1.22; font-weight:1000; margin-bottom:6px}
.ent-hero-text{color:var(--muted); line-height:1.55; max-width:1050px}
.ent-hero-pills,.ent-toolbar-actions,.ent-results-head,.ent-pager,.ent-tabs,.ent-detail-tabs{
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
}
.ent-hero-pills{margin-top:14px}
.ent-pill,.ent-badge,.ent-tab-badge{
  display:inline-flex; align-items:center; gap:6px; padding:7px 10px;
  border-radius:999px; font-size:12px; font-weight:900; white-space:nowrap;
  border:1px solid rgba(15,75,140,.14); background:rgba(15,75,140,.07); color:var(--csb-blue-soft,#0f4b8c);
}
.ent-badge.ok{color:#087c43; background:rgba(6,168,79,.10); border-color:rgba(6,168,79,.18)}
.ent-badge.warn{color:#b45309; background:rgba(245,158,11,.12); border-color:rgba(245,158,11,.22)}
.ent-badge.danger{color:#b91c1c; background:rgba(220,38,38,.10); border-color:rgba(220,38,38,.18)}
.ent-badge.muted{color:var(--muted); background:rgba(100,116,139,.08); border-color:rgba(100,116,139,.16)}
.ent-tab-badge{padding:2px 7px; min-width:22px; justify-content:center; background:#fff}

.ent-tabs{margin-bottom:14px}
.ent-tab,.ent-detail-tab{
  border:1px solid rgba(15,75,140,.15);
  background:#fff; color:var(--text); border-radius:14px; min-height:42px; padding:10px 13px;
  display:inline-flex; align-items:center; gap:8px; font-weight:900; cursor:pointer;
  box-shadow:0 8px 18px rgba(15,23,42,.035);
}
.ent-tab:hover,.ent-detail-tab:hover{border-color:rgba(15,75,140,.30); background:#f8fbff}
.ent-tab.is-active,.ent-detail-tab.is-active{
  color:#fff; border-color:transparent;
  background:linear-gradient(135deg,var(--csb-blue,#093262),var(--csb-blue-soft,#0f4b8c));
  box-shadow:0 12px 26px rgba(9,50,98,.20);
}
.ent-tab.is-active .ent-tab-badge{color:var(--csb-blue,#093262)}

.ent-filter-grid{
  display:grid;
  grid-template-columns:minmax(240px,1.6fr) .42fr .68fr .62fr .68fr .62fr .55fr;
  gap:12px;
  align-items:end;
}
.ent-search-field input{min-height:44px}
.ent-toolbar-actions{margin-top:12px}
.ent-toolbar-actions .btn{min-height:42px}
.ent-query-info{margin-top:12px}

.ent-filter-toggle{
  display:none;
  width:100%;
  border:1px solid rgba(15,75,140,.15);
  background:#fff;
  border-radius:16px;
  padding:11px 12px;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  cursor:pointer;
  text-align:left;
}
.ent-filter-toggle span{display:flex; align-items:center; gap:8px; color:var(--text)}
.ent-filter-toggle small{color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:48vw}
.ent-filter-toggle-icon{transition:transform .18s ease; color:var(--muted)}
.ent-filter-toggle[aria-expanded="true"] .ent-filter-toggle-icon{transform:rotate(180deg)}

.ent-summary-grid{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px}
.ent-stat-card{padding:14px; box-shadow:0 10px 24px rgba(15,23,42,.05)}
.ent-stat-label{color:var(--muted); font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.04em}
.ent-stat-value{font-size:28px; font-weight:1000; color:var(--csb-blue,#093262); margin-top:4px}

.ent-results-head{justify-content:space-between; margin-bottom:12px}
.ent-pager{justify-content:flex-end}
.ent-pager .btn{min-height:40px}
.ent-loading{display:flex; align-items:center; gap:10px; color:var(--muted); padding:14px}
.ent-spinner{width:22px; height:22px; border:3px solid rgba(15,75,140,.18); border-top-color:var(--csb-blue-soft,#0f4b8c); border-radius:50%; animation:entSpin .8s linear infinite}
@keyframes entSpin{to{transform:rotate(360deg)}}
.ent-empty{text-align:center; color:var(--muted); padding:28px 10px; display:grid; place-items:center; gap:8px}
.ent-empty i{font-size:28px; color:var(--csb-blue-soft,#0f4b8c)}

.ent-table-wrap{width:100%; overflow:auto; border:1px solid rgba(15,75,140,.10); border-radius:16px; background:#fff}
.ent-table{width:100%; border-collapse:separate; border-spacing:0; min-width:980px}
.ent-table th,.ent-table td{padding:13px 12px; border-bottom:1px solid rgba(15,75,140,.10); vertical-align:top; text-align:left}
.ent-table th{font-size:11px; color:var(--muted); text-transform:uppercase; letter-spacing:.055em; background:#f8fbff; font-weight:1000}
.ent-table tbody tr:hover{background:rgba(15,75,140,.025)}
.ent-table tbody tr:last-child td{border-bottom:0}
.ent-main-name{font-weight:1000; line-height:1.2; color:var(--text)}
.ent-main-sub{color:var(--muted); font-size:12px; margin-top:4px; line-height:1.35; max-width:360px}
.ent-row-actions{display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end}
.ent-row-actions .btn{min-height:36px; padding:8px 10px}
.ent-status-stack{display:flex; gap:6px; flex-wrap:wrap}
.ent-missing-list{font-size:12px; color:#b45309; line-height:1.35; margin-top:5px; max-width:260px}

.ent-mobile-cards{display:none; gap:10px}
.ent-card-mobile{
  border:1px solid rgba(15,75,140,.14); background:#fff; border-radius:18px; padding:14px;
  box-shadow:0 10px 24px rgba(15,23,42,.055);
}
.ent-card-top{display:flex; justify-content:space-between; align-items:flex-start; gap:12px}
.ent-card-actions{display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; margin-top:12px}
.ent-card-grid{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:12px}
.ent-card-field .label{color:var(--muted); font-size:11px; font-weight:900; text-transform:uppercase; letter-spacing:.04em}
.ent-card-field .value{font-weight:800; margin-top:3px; word-break:break-word}

.ent-modal-card{width:min(980px,calc(100vw - 24px)); max-height:calc(100vh - 24px); display:flex; flex-direction:column}
.ent-modal-body{overflow:auto; padding:16px}
.ent-modal-actions{flex-shrink:0}
.ent-modal-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px}
.ent-modal-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.ent-modal-section{border:1px solid rgba(15,75,140,.12); border-radius:18px; background:#fff; padding:14px; margin-top:12px}
.ent-section-title{font-weight:1000; display:flex; align-items:center; gap:8px; margin-bottom:10px}
.ent-kv{display:grid; gap:3px}
.ent-kv .k{font-size:11px; color:var(--muted); font-weight:900; text-transform:uppercase; letter-spacing:.04em}
.ent-kv .v{font-weight:800; min-height:20px; word-break:break-word}
.ent-json-box{font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:12px; white-space:pre-wrap; background:#0f172a; color:#e2e8f0; padding:12px; border-radius:14px; max-height:300px; overflow:auto}
.ent-resp-table{width:100%; border-collapse:collapse; font-size:13px}
.ent-resp-table th,.ent-resp-table td{border-bottom:1px solid rgba(15,75,140,.10); padding:9px; text-align:left; vertical-align:top}
.ent-resp-table th{font-size:11px; color:var(--muted); text-transform:uppercase; letter-spacing:.05em}
.ent-check-grid{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; max-height:250px; overflow:auto; border:1px solid var(--border); border-radius:14px; padding:10px; background:#fff}
.ent-check-item{display:flex; align-items:flex-start; gap:8px; padding:8px; border-radius:12px; border:1px solid rgba(15,75,140,.10); background:#fbfdff; cursor:pointer}
.ent-check-item:hover{background:#f4f9ff}
.ent-check-item input{margin-top:3px}
.ent-check-code{font-weight:1000; color:var(--csb-blue,#093262)}
.ent-check-label{font-size:11px; color:var(--muted); margin-top:2px}

.anu-sheet-btn.is-active{background:rgba(15,75,140,.10); color:var(--csb-blue,#093262); font-weight:1000}

@media (max-width:1100px){
  .ent-filter-grid{grid-template-columns:1fr 1fr 1fr}
  .ent-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:760px){
  .ent-admin-app{padding-bottom:calc(24px + env(safe-area-inset-bottom))}
  .ent-hero-main{gap:12px}
  .ent-hero-icon{width:48px; height:48px; min-width:48px; border-radius:16px; font-size:22px}
  .ent-filter-toggle{display:flex}
  .ent-filter-panel{display:none; margin-top:12px}
  .ent-filter-panel.is-open{display:block}
  .ent-filter-grid{grid-template-columns:1fr}
  .ent-toolbar-actions .btn{width:100%; justify-content:center}
  .ent-summary-grid{grid-template-columns:1fr 1fr; gap:10px}
  .ent-stat-value{font-size:23px}
  .ent-results-head{align-items:flex-start}
  .ent-pager{width:100%}
  .ent-pager .btn{flex:1}
  .ent-table-wrap{display:none}
  .ent-mobile-cards{display:grid}
  .ent-card-grid{grid-template-columns:1fr}
  .ent-row-actions{justify-content:flex-start}
  .ent-modal-card{width:calc(100vw - 14px); max-height:calc(100vh - 14px); border-radius:18px}
  .ent-modal-grid,.ent-modal-grid.two{grid-template-columns:1fr}
  .ent-check-grid{grid-template-columns:1fr}
  .ent-access-card{flex-direction:column}
}

/* Modais do admin de entidades: corpo rolavel e rodape sempre alcancavel. */
.ent-modal-card{
  max-height:calc(100dvh - 24px) !important;
  min-height:0 !important;
  margin:0 !important;
  display:flex !important;
  flex-direction:column !important;
  overflow:hidden !important;
  border-radius:12px !important;
}

.ent-modal-body{
  flex:1 1 auto !important;
  min-height:0 !important;
  max-height:none !important;
  overflow:auto !important;
  -webkit-overflow-scrolling:touch !important;
  overscroll-behavior:contain;
}

.ent-modal-actions{
  flex:0 0 auto !important;
}

.ent-pill,
.ent-badge,
.ent-tab-badge,
.ent-modal-section,
.ent-check-item{
  border-radius:8px !important;
}

@media (max-width:760px){
  .ent-modal-card{
    width:calc(100vw - 16px) !important;
    max-height:calc(100dvh - 16px) !important;
  }
}

/* Passada final: modal de entidades rola pelo overlay, sem rodape fixo ocultando campos. */
#modal.modal[hidden]{
  display:none !important;
}

#modal.modal{
  align-items:flex-start !important;
  justify-content:center !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
  padding:max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom)) !important;
  -webkit-overflow-scrolling:touch;
}

#modal .modal-backdrop{
  position:fixed !important;
  inset:0 !important;
}

.ent-modal-card{
  max-height:none !important;
  margin:0 auto !important;
  overflow:visible !important;
}

.ent-modal-body{
  max-height:none !important;
  overflow:visible !important;
}

.ent-modal-actions{
  position:relative !important;
  bottom:auto !important;
}

@media (max-width:760px){
  #modal.modal{
    padding:max(8px, env(safe-area-inset-top)) 8px max(8px, env(safe-area-inset-bottom)) !important;
  }

  .ent-modal-card{
    width:calc(100vw - 16px) !important;
    max-width:calc(100vw - 16px) !important;
    max-height:none !important;
  }
}
