/* ============================================================================
   PLI Smart Router — Admin Pages
   Paleta: verde #3ec26e | azul-escuro #003b5a | navy #1c3d59
   ============================================================================ */

:root {
  --verde:   #3ec26e;
  --verde-d: #2fa854;
  --azul:    #003b5a;
  --navy:    #1c3d59;
  --accent:  #116593;
  --danger:  #c0392b;
  --danger-h:#a93226;
  --warn:    #f39c12;
  --gray-50: #f8fafc;
  --gray-100:#f1f5f9;
  --gray-200:#e2e8f0;
  --gray-300:#cbd5e1;
  --gray-400:#94a3b8;
  --gray-500:#64748b;
  --gray-700:#334155;
  --gray-800:#1e293b;
  --gray-900:#0f172a;
  --shadow-sm:0 1px 3px rgba(0,0,0,.08);
  --shadow-md:0 4px 12px rgba(0,0,0,.12);
  --shadow-lg:0 8px 24px rgba(0,0,0,.16);
  --font:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --font-d:'Poppins',sans-serif;
  --radius:.625rem;
}

*{margin:0;padding:0;box-sizing:border-box}
html{font-size:14px;scroll-behavior:smooth}
body{font-family:var(--font);background:var(--gray-50);color:var(--gray-800);line-height:1.6}
a{color:var(--accent);text-decoration:none;transition:color .2s}
a:hover{color:var(--verde)}

/* ============================================================================
   LOGIN PAGE
   ============================================================================ */

/* Pagina de acesso: estrutura padrao do ecossistema PLI (a mesma do /acesso do
   PLI Reporta) — topbar com titulo e links do app, card com a marca, rodape
   com o credito fixo na base. */
.access-page{
  min-height:100vh;
  display:flex;
  flex-direction:column;
  background:linear-gradient(340deg,#003b5a 0%,#1c3d59 38%,rgba(28,61,89,.08) 72%,#fff 100%);
}
header.topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;box-sizing:border-box;height:70px;min-height:70px;padding:.5rem 1.5rem;background:linear-gradient(135deg,var(--azul) 0%,var(--navy) 100%);color:#fff;border-bottom:4px solid var(--verde);position:sticky;top:0;z-index:10}
header.topbar h1{margin:0;font-size:17px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#fff}
header.topbar nav{display:flex;flex-wrap:wrap;gap:1rem;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em}
header.topbar nav a{color:rgba(255,255,255,.88);text-decoration:none}
header.topbar nav a:hover,header.topbar nav a[aria-current="page"]{color:#fff;text-decoration:underline;text-underline-offset:4px}

.access-main{width:100%;max-width:440px;margin-left:auto;margin-right:auto;padding:1.5rem 1rem 2rem;flex:1 0 auto}
footer.footer{flex-shrink:0;margin-top:auto;padding:1rem 1.5rem;text-align:center;font-size:12px;line-height:1.5;color:var(--gray-500);border-top:1px solid var(--gray-200);background:#fff}
.access-login-wrapper{display:flex;flex-direction:column;gap:1.5rem}
.access-login-card{width:100%;background:#fff;border-radius:10px;border-top:4px solid var(--accent);box-shadow:0 4px 16px rgba(0,0,0,.1),0 12px 40px rgba(0,0,0,.08);padding:1.5rem 1.5rem 1rem;margin-bottom:0}
/* Marca do login igual a do cabecalho do app: icone verde e nome em branco.
   O card e claro, entao a marca ganha a mesma faixa escura da sidebar. */
.access-branding{text-align:center;margin:-1.75rem -1.75rem 1.5rem;padding:1.25rem 1rem;border-radius:6px 6px 0 0;background:linear-gradient(135deg,var(--sigma-primary,#003b5a) 0%,var(--sigma-secondary,#1c3d59) 100%)}
/* Mesma marca da sidebar: icone verde + nome branco; slogan · PLI-SP abaixo. */
.access-branding{font-size:1.5rem}
.access-brand-head{display:flex;align-items:center;justify-content:center;gap:.45rem;margin:0;font-size:1em;color:#fff}
.access-app-icon{flex-shrink:0;display:inline-flex;width:1.08em;height:1.08em;color:var(--sigma-verde,#3ec26e);line-height:0}
.access-app-icon svg{width:100%;height:100%;display:block;fill:currentColor}
.access-app-name{font-family:'Poppins','Inter',system-ui,sans-serif;font-size:1em;font-weight:700;letter-spacing:-.3px;line-height:1.1;white-space:nowrap}
.access-app-subtitle{margin:.28rem 0 0;color:rgba(255,255,255,.72);font-size:.49em;font-weight:500;line-height:1.2}
.access-context{margin:0 0 1rem;text-align:center;font-size:.9375rem;color:var(--gray-500)}
.access-field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1rem}
.access-field-label{font-size:.875rem;font-weight:600;color:var(--navy)}
.access-input-wrap{position:relative;display:flex;align-items:center}
.access-input-icon{position:absolute;left:11px;color:var(--gray-500);pointer-events:none;z-index:1;display:flex}
.access-input-wrap input{width:100%;min-height:44px;padding:.5rem 2.25rem;border:1px solid var(--gray-200);border-radius:6px;font:1rem var(--font);color:var(--gray-900);background:#fff;outline:none;transition:border-color .18s,box-shadow .18s}
.access-input-wrap input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(17,101,147,.12)}
.access-input-wrap input::placeholder{color:var(--gray-400);font-size:.875rem}
.access-toggle-pw{position:absolute;right:8px;width:auto;min-height:0;padding:4px;background:none;border:0;box-shadow:none;color:var(--gray-500);cursor:pointer;display:flex}
.access-toggle-pw:hover{color:var(--navy)}
.access-feedback{display:block;padding:.5rem .75rem;border-radius:6px;font-size:.8125rem;margin-bottom:.75rem;line-height:1.4;background:#fef2f2;color:#991b1b;border:1px solid #fecaca}
.access-btn-submit{width:100%;min-height:46px;padding:.75rem;background:linear-gradient(135deg,var(--navy),var(--accent));color:#fff;border:0;border-radius:6px;font:.9375rem var(--font);font-weight:700;cursor:pointer;box-shadow:0 2px 8px rgba(28,61,89,.2);transition:transform .12s,box-shadow .18s}
.access-btn-submit:hover{background:linear-gradient(135deg,var(--azul),var(--navy));transform:translateY(-1px);box-shadow:0 4px 14px rgba(28,61,89,.3)}
.access-forgot{text-align:center;margin-top:1rem}.access-forgot a{font-size:.8125rem;color:var(--accent)}.access-forgot a:hover{color:var(--navy);text-decoration:underline}
.access-divider{display:flex;align-items:center;gap:1rem;margin:1.25rem 0}.access-divider span:first-child,.access-divider span:last-child{flex:1;height:1px;background:var(--gray-200)}.access-divider-text{font-size:.8125rem;color:var(--gray-500);text-transform:uppercase;letter-spacing:1px;font-weight:600}
.access-btn-register{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;padding:.625rem;background:transparent;border:2px solid var(--verde);border-radius:6px;color:var(--verde-d);font-size:.875rem;font-weight:700;text-decoration:none;transition:background .18s,color .18s}.access-btn-register:hover{background:var(--verde);color:#fff}
.access-back{text-align:center;margin-top:1rem;font-size:.8125rem}.access-back a{color:var(--gray-500)}.access-back a:hover{color:var(--accent)}

.login-bg{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:2rem;
}

.login-card{
  background:#fff;
  border-radius:1.25rem;
  padding:2.75rem 2.5rem 2rem;
  width:100%;
  max-width:420px;
  box-shadow:var(--shadow-lg);
}

.login-brand{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:.2rem;
  margin-bottom:1.5rem;
}

.login-logo{
  font-family:var(--font-d);
  font-size:3rem;
  font-weight:700;
  color:var(--verde);
  letter-spacing:-1px;
  line-height:1;
}

.login-logo-sub{
  font-family:var(--font-d);
  font-size:.875rem;
  font-weight:600;
  color:var(--gray-500);
  letter-spacing:2px;
  text-transform:uppercase;
}

.login-divider{
  height:1px;
  background:var(--gray-200);
  margin:.5rem 0 1.5rem;
}

.login-title{
  font-size:1.25rem;
  font-weight:700;
  color:var(--gray-900);
  text-align:center;
  margin-bottom:.35rem;
}

.login-desc{
  font-size:.8125rem;
  color:var(--gray-500);
  text-align:center;
  margin-bottom:1.75rem;
}

.login-error{
  display:flex;
  align-items:center;
  gap:.5rem;
  background:#fff5f5;
  border:1px solid #fecaca;
  border-radius:.5rem;
  padding:.75rem 1rem;
  color:#b91c1c;
  font-size:.8125rem;
  margin-bottom:1.25rem;
}

.login-form{
  display:flex;
  flex-direction:column;
  gap:1.25rem;
}

.lf-group{
  display:flex;
  flex-direction:column;
  gap:.4rem;
}

.lf-group label{
  font-size:.8125rem;
  font-weight:600;
  color:var(--gray-700);
}

.lf-group input{
  width:100%;
  padding:.75rem 1rem;
  border:1.5px solid var(--gray-300);
  border-radius:.5rem;
  font-size:.875rem;
  font-family:var(--font);
  color:var(--gray-900);
  transition:border-color .2s,box-shadow .2s;
  outline:none;
}

.lf-group input:focus{
  border-color:var(--verde);
  box-shadow:0 0 0 3px rgba(62,194,110,.12);
}

.lf-password-wrapper{
  position:relative;
}

.lf-password-wrapper input{
  padding-right:2.75rem;
}

.lf-eye{
  position:absolute;
  right:.75rem;
  top:50%;
  transform:translateY(-50%);
  background:none;
  border:none;
  cursor:pointer;
  color:var(--gray-400);
  display:flex;
  align-items:center;
  padding:0;
  transition:color .2s;
}
.lf-eye:hover{color:var(--gray-700)}

.login-btn{
  margin-top:.25rem;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;
  padding:.875rem 1.5rem;
  background:linear-gradient(135deg,var(--verde) 0%,var(--verde-d) 100%);
  color:#fff;
  border:none;
  border-radius:.625rem;
  font-size:.9375rem;
  font-weight:700;
  font-family:var(--font);
  cursor:pointer;
  transition:transform .2s,box-shadow .2s;
  box-shadow:0 4px 12px rgba(62,194,110,.35);
}
.login-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(62,194,110,.4)}
.login-btn:active{transform:translateY(0)}

.login-back{
  text-align:center;
  margin-top:1.5rem;
  font-size:.8125rem;
  color:var(--gray-400);
}
.login-back a{color:var(--gray-500)}
.login-back a:hover{color:var(--accent)}

/* ============================================================================
   ADMIN PAGE LAYOUT
   ============================================================================ */

.admin-page{
  min-height:100vh;
  display:flex;
  flex-direction:row;
  background:var(--gray-100);
}

/* --- Sidebar --- */
.adm-sidebar{
  width:240px;
  min-height:100vh;
  background:var(--azul);
  display:flex;
  flex-direction:column;
  flex-shrink:0;
  border-right:1px solid rgba(255,255,255,.07);
  position:sticky;
  top:0;
  height:100vh;
}

/* Marca da sidebar de gestao: identidade fixa do ecossistema (icone verde +
   nome branco; slogan · PLI-SP a 49%), na mesma altura do cabecalho da
   sidebar da pagina inicial (70px). */
.adm-brand{
  box-sizing:border-box;
  height:70px;
  min-height:70px;
  padding:.5rem 1.1rem;
  border-bottom:3px solid var(--verde);
  background:linear-gradient(135deg,var(--azul) 0%,var(--navy) 100%);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-decoration:none;
  color:#fff;
  font-size:1.5rem;
  transition:opacity .15s ease;
}
.adm-brand:hover{opacity:.92}
.adm-brand-head{display:inline-flex;align-items:center;gap:.45rem;font-size:1em;white-space:nowrap}
.adm-brand-icon{flex-shrink:0;display:inline-flex;width:1.08em;height:1.08em;color:var(--verde);line-height:0}
.adm-brand-icon svg{width:100%;height:100%;display:block;fill:currentColor}
.adm-brand-name{font-family:var(--font-d);font-size:1em;font-weight:700;letter-spacing:-.3px;line-height:1.1;color:#fff}
.adm-brand-sub{margin-top:.28rem;color:rgba(255,255,255,.72);font-size:.49em;font-weight:500;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}

.adm-nav{
  flex:1;
  padding:1.25rem .75rem;
  display:flex;
  flex-direction:column;
  gap:.25rem;
}

.adm-nav-item{
  display:flex;
  align-items:center;
  gap:.625rem;
  padding:.625rem .875rem;
  border-radius:.5rem;
  color:rgba(255,255,255,.65);
  font-size:.8125rem;
  font-weight:500;
  transition:background .2s,color .2s;
  cursor:pointer;
  border:none;
  background:transparent;
  width:100%;
  text-align:left;
  font-family:inherit;
  text-decoration:none;
}
.adm-nav-item:hover{background:rgba(255,255,255,.08);color:#fff}
.adm-nav-item.active{background:rgba(62,194,110,.15);color:var(--verde);font-weight:600}

.adm-nav-group{margin-bottom:.15rem}
.adm-nav-toggle{justify-content:flex-start}
.adm-nav-toggle .adm-nav-label{flex:1}
.adm-nav-chevron{
  flex-shrink:0;
  opacity:.55;
  transition:transform .2s ease;
}
.adm-nav-group.open .adm-nav-chevron{transform:rotate(180deg)}
.adm-nav-sub{
  display:none;
  flex-direction:column;
  gap:.125rem;
  padding:.25rem 0 .375rem .625rem;
  margin-left:.875rem;
  border-left:1px solid rgba(255,255,255,.12);
}
.adm-nav-group.open .adm-nav-sub{display:flex}
.adm-nav-subitem{
  display:block;
  width:100%;
  padding:.45rem .75rem;
  border:none;
  border-radius:.4rem;
  background:transparent;
  color:rgba(255,255,255,.55);
  font-size:.75rem;
  font-weight:500;
  text-align:left;
  cursor:pointer;
  font-family:inherit;
  transition:background .2s,color .2s;
  line-height:1.35;
}
.adm-nav-subitem:hover{background:rgba(255,255,255,.06);color:#fff}
.adm-nav-subitem.active{
  background:rgba(62,194,110,.12);
  color:var(--verde);
  font-weight:600;
}

.adm-nav-subgroup{margin-top:.15rem}
.adm-nav-subgroup-toggle{
  display:flex;align-items:center;justify-content:space-between;width:100%;
  padding:.4rem .65rem;border:none;border-radius:.35rem;background:transparent;
  color:rgba(255,255,255,.45);font-size:.7rem;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;cursor:pointer;font-family:inherit;
}
.adm-nav-subgroup-toggle:hover{color:rgba(255,255,255,.75)}
.adm-nav-chevron-sm{transition:transform .2s ease;opacity:.5;flex-shrink:0}
.adm-nav-subgroup.open .adm-nav-chevron-sm{transform:rotate(180deg)}
.adm-nav-sub-nested{
  display:none;flex-direction:column;gap:.1rem;
  padding:.2rem 0 .35rem .5rem;margin-left:.35rem;
  border-left:1px solid rgba(255,255,255,.08);
}
.adm-nav-subgroup.open .adm-nav-sub-nested{display:flex}

.col-espacial{min-width:7.5rem}
.lay-esp-main{display:block;font-weight:500;color:var(--gray-800)}
.lay-esp-sub{display:block;font-size:.72rem;color:var(--gray-500);margin-top:.1rem}

.adm-sidebar-footer{
  padding:1.25rem .75rem 1.5rem;
  border-top:1px solid rgba(255,255,255,.07);
  display:flex;
  flex-direction:column;
  gap:.5rem;
}

.adm-link-back,.adm-link-logout{
  display:flex;
  align-items:center;
  gap:.5rem;
  padding:.5rem .875rem;
  border-radius:.5rem;
  font-size:.8rem;
  font-weight:500;
  transition:background .2s,color .2s;
}
.adm-link-back{color:rgba(255,255,255,.55)}
.adm-link-back:hover{color:#fff;background:rgba(255,255,255,.07)}
.adm-link-logout{color:rgba(255,100,100,.75)}
.adm-link-logout:hover{color:#ff8080;background:rgba(255,100,100,.08)}

/* --- Main --- */
.adm-main{
  flex:1;
  display:flex;
  flex-direction:column;
  overflow-y:auto;
  overflow-x:hidden;
  min-width:0;
}

.adm-header{
  background:#fff;
  /* Altura padrao do ecossistema (cabecalho principal do Smart Router). */
  box-sizing:border-box;
  height:70px;
  min-height:70px;
  display:flex;
  align-items:center;
  padding:.5rem 2rem;
  overflow:hidden;
  border-bottom:1px solid var(--gray-200);
  box-shadow:var(--shadow-sm);
  position:sticky;
  top:0;
  z-index:10;
}

.adm-session-bar{
  min-height:40px;
  padding:.35rem 2rem;
  background:var(--gray-100);
  color:var(--azul);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  position:sticky;
  top:70px;
  z-index:9;
  box-shadow:var(--shadow-sm);
  font-size:.78rem;
}
.adm-session-user{display:flex;align-items:center;gap:.5rem;min-width:0;white-space:nowrap;overflow:hidden}
.adm-session-user strong{color:var(--azul);overflow:hidden;text-overflow:ellipsis}
.adm-session-status{width:7px;height:7px;border-radius:50%;background:var(--verde);box-shadow:0 0 0 3px rgba(62,194,110,.18);flex:0 0 auto}
.adm-session-username{color:var(--verde-d);font-weight:600;overflow:hidden;text-overflow:ellipsis}
.adm-session-separator{color:var(--gray-400)}
.adm-session-role{padding:.08rem .45rem;border:1px solid rgba(62,194,110,.45);border-radius:999px;color:var(--verde-d);background:#ecfdf5;font-size:.68rem;font-weight:700;letter-spacing:.04em}
.adm-session-logout{display:inline-flex;align-items:center;gap:.35rem;color:var(--azul);padding:.25rem .6rem;border-radius:.35rem;border:1px solid var(--gray-300);flex:0 0 auto;font-weight:600}
.adm-session-logout:hover{color:var(--verde-d);background:#fff;border-color:rgba(62,194,110,.45)}

.adm-page-title{
  font-size:1.375rem;
  font-weight:700;
  color:var(--gray-900);
}

.adm-page-subtitle{
  font-size:.8125rem;
  color:var(--gray-500);
  margin-top:.25rem;
}

/* --- Sections --- */
.adm-section{
  padding:1.75rem 2rem;
  min-width:0;
}
.adm-section.hidden{display:none}

.adm-section-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:1.5rem;
}
.adm-section-header h2{
  font-size:1.0625rem;
  font-weight:700;
  color:var(--gray-900);
}

/* ============================================================================
   BOTOES
   ============================================================================ */

.adm-btn{
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  padding:.5rem .9rem;
  border-radius:.5rem;
  font-size:.8125rem;
  font-weight:600;
  font-family:var(--font);
  cursor:pointer;
  border:none;
  transition:all .2s;
}

.adm-btn-primary{
  background:linear-gradient(135deg,var(--verde) 0%,var(--verde-d) 100%);
  color:#fff;
  box-shadow:0 2px 8px rgba(62,194,110,.3);
}
.adm-btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(62,194,110,.35)}
.adm-btn-primary:active{transform:translateY(0)}
.adm-btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}

.adm-btn-ghost{
  background:transparent;
  color:var(--gray-600,#475569);
  border:1.5px solid var(--gray-300);
}
.adm-btn-ghost:hover{border-color:var(--gray-400);background:var(--gray-100)}

.adm-btn-danger{
  background:transparent;
  color:var(--danger);
  border:1.5px solid #fecaca;
}
.adm-btn-danger:hover{background:#fff5f5;border-color:#f87171}

/* ============================================================================
   CAMADAS — GRID DE CARDS
   ============================================================================ */

.adm-layers-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:1.25rem;
}

.adm-layer-card{
  background:#fff;
  border-radius:var(--radius);
  border:1px solid var(--gray-200);
  padding:1.25rem;
  box-shadow:var(--shadow-sm);
  transition:box-shadow .2s,transform .2s;
  display:flex;
  flex-direction:column;
  gap:.75rem;
}
.adm-layer-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}

.alc-top{
  display:flex;
  align-items:flex-start;
  gap:.75rem;
}

.alc-swatch{
  width:14px;
  height:14px;
  border-radius:50%;
  flex-shrink:0;
  margin-top:.25rem;
  box-shadow:0 0 0 2px rgba(0,0,0,.1);
}

.alc-info{flex:1;min-width:0}

.alc-name{
  font-weight:600;
  font-size:.9375rem;
  color:var(--gray-900);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.alc-desc{
  font-size:.75rem;
  color:var(--gray-500);
  margin-top:.15rem;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Toggle switch */
.alc-toggle-wrap{
  display:flex;
  align-items:center;
  cursor:pointer;
  flex-shrink:0;
}
.alc-toggle-input{display:none}
.alc-toggle-slider{
  width:36px;
  height:20px;
  border-radius:10px;
  background:var(--gray-300);
  position:relative;
  transition:background .2s;
}
.alc-toggle-slider::after{
  content:'';
  position:absolute;
  width:14px;
  height:14px;
  border-radius:50%;
  background:#fff;
  top:3px;
  left:3px;
  transition:transform .2s;
  box-shadow:0 1px 3px rgba(0,0,0,.15);
}
.alc-toggle-input:checked + .alc-toggle-slider{background:var(--verde)}
.alc-toggle-input:checked + .alc-toggle-slider::after{transform:translateX(16px)}

/* Badges */
.alc-badges{
  display:flex;
  flex-wrap:wrap;
  gap:.35rem;
}

.badge{
  display:inline-block;
  padding:.2rem .45rem;
  border-radius:.35rem;
  font-size:.6875rem;
  font-weight:600;
  letter-spacing:.3px;
  text-transform:uppercase;
}

.badge-type{background:#eff6ff;color:#1d4ed8}
.badge-src{background:#f0fdf4;color:#166534}
.badge-inactive{background:#fef2f2;color:#991b1b}
.badge-sev.sev-1{background:#f0fdf4;color:#166534}
.badge-sev.sev-2{background:#fefce8;color:#854d0e}
.badge-sev.sev-3{background:#fff7ed;color:#9a3412}
.badge-sev.sev-4{background:#fff1f2;color:#9f1239}
.badge-sev.sev-5{background:#1a0a0a;color:#ff4444}

/* Badges de validacao */
.badge-val{font-weight:600}
.val-ok     {background:#f0fdf4;color:#166534}
.val-fixed  {background:#eff6ff;color:#1e40af}
.val-warning{background:#fefce8;color:#854d0e}
.val-error  {background:#fef2f2;color:#991b1b}
.val-pending{background:#f3f4f6;color:#6b7280}

/* Alerta de erro de validacao no card */
.alc-validation-error{
  display:flex;
  align-items:flex-start;
  gap:.4rem;
  margin:.5rem 0 0;
  padding:.5rem .625rem;
  border-radius:.375rem;
  background:#fef2f2;
  color:#991b1b;
  font-size:.75rem;
  line-height:1.4;
}
.alc-validation-error svg{flex-shrink:0;margin-top:.1rem}

/* Detalhes de validacao expansivel */
.alc-validation-details{
  margin:.5rem 0 0;
  font-size:.75rem;
  color:var(--gray-600);
}
.alc-validation-details summary{
  cursor:pointer;
  color:var(--verde-d);
  font-weight:500;
}
.alc-validation-details ul{
  margin:.375rem 0 0 1rem;
  padding:0;
  list-style:disc;
}
.alc-validation-details li{margin:.25rem 0;line-height:1.35}
.alc-validation-details li.val-issue-fixed  {color:#1e40af}
.alc-validation-details li.val-issue-warning{color:#854d0e}
.alc-validation-details li.val-issue-fatal  {color:#991b1b;font-weight:600}
.alc-validation-details small{display:block;margin-top:.375rem;color:var(--gray-500)}

.alc-group-tag{
  display:flex;
  align-items:center;
  gap:.35rem;
  font-size:.75rem;
  color:var(--gray-500);
}

.alc-actions{
  display:flex;
  gap:.5rem;
  margin-top:.25rem;
}

.alc-date{
  font-size:.6875rem;
  color:var(--gray-400);
  margin-top:auto;
}

/* Empty state */
.adm-empty{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:1rem;
  padding:4rem 2rem;
  color:var(--gray-400);
  background:#fff;
  border-radius:var(--radius);
  border:1px dashed var(--gray-300);
}
.adm-empty p{font-size:.9375rem;color:var(--gray-500)}

/* ============================================================================
   FORMULARIO DE ADICAO
   ============================================================================ */

.adm-tabs{
  display:flex;
  gap:.5rem;
  margin-bottom:1.5rem;
  border-bottom:2px solid var(--gray-200);
  padding-bottom:0;
}

.adm-tab{
  display:flex;
  align-items:center;
  gap:.4rem;
  padding:.625rem 1rem;
  background:none;
  border:none;
  border-bottom:2px solid transparent;
  margin-bottom:-2px;
  font-size:.8125rem;
  font-weight:600;
  font-family:var(--font);
  color:var(--gray-500);
  cursor:pointer;
  transition:color .2s,border-color .2s;
  border-radius:.375rem .375rem 0 0;
}
.adm-tab:hover{color:var(--gray-800)}
.adm-tab.active{color:var(--verde);border-bottom-color:var(--verde)}

.adm-form{
  background:#fff;
  border-radius:var(--radius);
  border:1px solid var(--gray-200);
  padding:1.75rem;
  box-shadow:var(--shadow-sm);
  min-width:0;
}

.adm-form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1.25rem;
  margin-bottom:1.5rem;
}

.adm-fg{
  display:flex;
  flex-direction:column;
  gap:.4rem;
}
.adm-fg.adm-fg-full{grid-column:1/-1}
.adm-fg.adm-fg-color{grid-column:span 1}

.adm-fg label{
  font-size:.8rem;
  font-weight:600;
  color:var(--gray-700);
  display:flex;
  align-items:center;
  gap:.35rem;
}
.adm-fg label .field-hint{
  font-weight:400;
  color:var(--gray-400);
  font-size:.75rem;
}

.adm-fg input[type="text"],
.adm-fg input[type="url"],
.adm-fg select{
  width:100%;
  padding:.625rem .875rem;
  border:1.5px solid var(--gray-300);
  border-radius:.5rem;
  font-size:.875rem;
  font-family:var(--font);
  color:var(--gray-900);
  background:#fff;
  transition:border-color .2s,box-shadow .2s;
  outline:none;
}
.adm-fg input:focus,
.adm-fg select:focus{
  border-color:var(--verde);
  box-shadow:0 0 0 3px rgba(62,194,110,.1);
}

.adm-fg select{cursor:pointer}

.req{color:var(--danger);font-size:.875em}

/* Color picker */
.color-input-wrap{
  display:flex;
  align-items:center;
  gap:.625rem;
}
.color-input-wrap input[type="color"]{
  width:2.75rem;
  height:2.25rem;
  border:1.5px solid var(--gray-300);
  border-radius:.5rem;
  cursor:pointer;
  padding:.2rem;
  background:#fff;
}
#color-hex{
  font-size:.8rem;
  font-weight:600;
  color:var(--gray-600);
  font-family:monospace;
}

/* Severity slider */
.sev-slider-wrap{
  display:flex;
  align-items:center;
  gap:.75rem;
}
.sev-slider-wrap input[type="range"]{
  flex:1;
  accent-color:var(--verde);
  height:4px;
  cursor:pointer;
}
.sev-label{
  min-width:1.5rem;
  text-align:center;
  font-weight:700;
  font-size:1rem;
  color:var(--verde);
}

/* Upload area */
.tab-content{transition:none}
.tab-content.hidden{display:none}

.adm-upload-area{
  border:2px dashed var(--gray-300);
  border-radius:var(--radius);
  background:var(--gray-50);
  transition:border-color .2s,background .2s;
  margin-bottom:1.25rem;
  cursor:pointer;
}
.adm-upload-area:hover,.adm-upload-area.drag-over{
  border-color:var(--verde);
  background:#f0fdf4;
}
.upload-input{display:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.upload-prompt{cursor:pointer;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:.625rem;
  padding:2.5rem 2rem;
  color:var(--gray-400);
  -webkit-user-select:none;
  user-select:none;
}
.upload-prompt p{font-size:.9375rem;font-weight:500;color:var(--gray-700)}
.upload-prompt span{font-size:.75rem;color:var(--gray-400)}

.upload-preview-info{
  display:flex;
  align-items:center;
  gap:.75rem;
  padding:.75rem 1.25rem;
  background:#f0fdf4;
  border-top:1px solid #bbf7d0;
  border-radius:0 0 calc(var(--radius) - 2px) calc(var(--radius) - 2px);
  font-size:.8125rem;
}
.fi-name{font-weight:600;color:var(--gray-800)}
.fi-size{color:var(--gray-500)}

/* Preview map (inline, below upload) */
.preview-map-container{
  margin-bottom:1.5rem;
}
.preview-map-label{
  font-size:.75rem;
  font-weight:600;
  color:var(--gray-500);
  text-transform:uppercase;
  letter-spacing:.4px;
  margin-bottom:.5rem;
}
.preview-map{
  height:280px;
  border-radius:var(--radius);
  border:1px solid var(--gray-200);
  overflow:hidden;
  box-shadow:var(--shadow-sm);
}

/* Attribute table (inline, below preview map) */
.attr-table-container{
  margin-bottom:1.5rem;
  width:100%;
  max-width:100%;
  min-width:0;
}
.attr-table-scroll{
  max-height:320px;
  width:100%;
  max-width:100%;
  overflow:auto;
  border:1px solid var(--gray-200);
  border-radius:var(--radius);
  box-shadow:var(--shadow-sm);
  background:#fff;
}
.attr-table{
  border-collapse:collapse;
  width:100%;
  table-layout:auto;
  font-size:13px;
}
.attr-table th,
.attr-table td{
  border:1px solid var(--gray-300);
  padding:.28em .5em;
  text-align:left;
  white-space:nowrap;
  max-width:320px;
  overflow:hidden;
  text-overflow:ellipsis;
}
.attr-table thead th{
  position:sticky;
  top:0;
  z-index:1;
  background:var(--gray-100);
  font-weight:700;
  color:var(--gray-800);
}
.attr-table tbody tr:nth-child(even){
  background:var(--gray-50, #f9fafb);
}

/* URL note */
.url-note{
  display:flex;
  align-items:flex-start;
  gap:.5rem;
  background:#eff6ff;
  border:1px solid #bfdbfe;
  border-radius:.5rem;
  padding:.75rem 1rem;
  font-size:.8125rem;
  color:#1e40af;
  margin-top:.5rem;
}
.url-note svg{flex-shrink:0;margin-top:.1rem}

/* Form actions */
.adm-form-actions{
  display:flex;
  justify-content:flex-end;
  gap:.75rem;
  margin-top:1.75rem;
  padding-top:1.25rem;
  border-top:1px solid var(--gray-200);
}
.adm-form-actions .adm-btn{padding:.625rem 1.25rem;font-size:.875rem}

/* Form feedback */
.form-feedback{
  margin-top:1rem;
  padding:.75rem 1rem;
  border-radius:.5rem;
  font-size:.8125rem;
  font-weight:500;
}
.form-feedback.hidden{display:none}
.form-feedback-error{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c}
.form-feedback-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}

/* ============================================================================
   MODAL DE PREVIA
   ============================================================================ */

.modal-overlay{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.55);
  z-index:1000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:1.5rem;
  -webkit-backdrop-filter:blur(2px);
  backdrop-filter:blur(2px);
}
.modal-overlay.hidden{display:none}

.modal-box{
  background:#fff;
  border-radius:1rem;
  width:100%;
  max-width:680px;
  box-shadow:var(--shadow-lg);
  overflow:hidden;
  display:flex;
  flex-direction:column;
}

.modal-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:1rem 1.5rem;
  border-bottom:1px solid var(--gray-200);
  background:var(--gray-50);
}
.modal-header h3{
  font-size:1rem;
  font-weight:700;
  color:var(--gray-900);
}

.modal-close{
  background:none;
  border:none;
  font-size:1.125rem;
  cursor:pointer;
  color:var(--gray-400);
  padding:.25rem .5rem;
  border-radius:.375rem;
  transition:background .2s,color .2s;
  font-family:var(--font);
}
.modal-close:hover{background:var(--gray-200);color:var(--gray-700)}

.modal-map{
  height:380px;
  width:100%;
}

.modal-info{
  padding:.75rem 1.5rem;
  font-size:.8125rem;
  color:var(--gray-600);
  border-top:1px solid var(--gray-200);
  display:flex;
  align-items:center;
  gap:.5rem;
}

/* ============================================================================
   TOAST
   ============================================================================ */

.adm-toast{
  position:fixed;
  bottom:1.5rem;
  right:1.5rem;
  padding:.75rem 1.25rem;
  border-radius:.625rem;
  font-size:.875rem;
  font-weight:500;
  box-shadow:var(--shadow-md);
  z-index:2000;
  max-width:320px;
  transition:opacity .3s;
}
.adm-toast.hidden{display:none}
.adm-toast-success{background:#166534;color:#fff}
.adm-toast-error{background:var(--danger);color:#fff}
.adm-toast-info{background:var(--azul);color:#fff}

/* ============================================================================
   RESPONSIVIDADE
   ============================================================================ */

@media(max-width:768px){
  .adm-sidebar{
    width:200px;
    font-size:.8rem;
  }
  .adm-form-grid{
    grid-template-columns:1fr;
  }
  .adm-fg.adm-fg-full{grid-column:1}
  .adm-layers-grid{
    grid-template-columns:1fr;
  }
  .adm-main{
    overflow-x:hidden;
  }
  .adm-session-bar{top:88px;padding:.35rem 1rem}
  .adm-session-separator,.adm-session-user>span:not(.adm-session-status):not(.adm-session-role){display:none}
  .rt-modes-grid{grid-template-columns:1fr}
  .rt-notes-grid{grid-template-columns:1fr}
}

/* ============================================================================
   Secao: Gerenciamento de Camadas — tabela, batch bar, painel, acoes
   ============================================================================ */

/* Cabecalho da secao */
.lay-sec-hdr{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:1.25rem;
}
.lay-sec-hdr.hidden{display:none}
.lay-sec-title{display:flex;align-items:baseline;gap:.75rem}
.lay-sec-title h2{font-size:1.0625rem;font-weight:700;color:var(--gray-900);margin:0}
.lay-count{
  font-size:.78rem;
  font-weight:600;
  color:var(--gray-500);
  background:var(--gray-100);
  padding:.15rem .55rem;
  border-radius:1rem;
}

/* Painel de adicao colapsavel */
.lay-add-panel{
  background:#fff;
  border:1.5px solid var(--gray-200);
  border-radius:var(--radius);
  margin-bottom:1.5rem;
  overflow:hidden;
}
.lay-add-panel.hidden{display:none}
.lay-add-panel-hdr{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:.75rem 1.25rem;
  background:var(--gray-50);
  border-bottom:1px solid var(--gray-200);
  font-size:.875rem;
  font-weight:600;
  color:var(--gray-800);
}
.lay-add-panel-hdr span{display:flex;align-items:center;gap:.5rem}
.lay-panel-close{
  background:none;
  border:none;
  cursor:pointer;
  color:var(--gray-400);
  display:flex;
  align-items:center;
  padding:.25rem;
  border-radius:.3rem;
  transition:color .15s,background .15s;
}
.lay-panel-close:hover{color:var(--gray-700);background:var(--gray-200)}
.lay-add-panel-body{padding:1.25rem 1.25rem 1.5rem}

/* Barra de acoes em lote */
.lay-batch-bar{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:.875rem;
  margin-bottom:.75rem;
  min-height:2.25rem;
}
.lay-batch-info{
  font-size:.8125rem;
  color:var(--gray-500);
  margin-right:auto;
}
.lay-batch-actions{display:flex;gap:.5rem}
.lay-batch-btn{
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  padding:.4rem .75rem;
  border-radius:.4rem;
  border:1.5px solid var(--gray-200);
  background:#fff;
  font-size:.8rem;
  font-weight:600;
  color:var(--gray-600);
  cursor:pointer;
  transition:background .15s,color .15s,border-color .15s;
}
.lay-batch-btn:hover:not(:disabled){
  background:var(--gray-100);
  color:var(--gray-800);
  border-color:var(--gray-300);
}
.lay-batch-btn:disabled{opacity:.4;cursor:not-allowed}
.lay-batch-danger{color:var(--danger)}
.lay-batch-danger:hover:not(:disabled){
  background:#fff5f5;
  border-color:#fca5a5;
  color:var(--danger);
}

/* Ferramentas avançadas — Calcular em lote */
.batch-hdr-hint{margin:.35rem 0 0}
.adm-select{
  padding:.55rem .75rem;
  border:1px solid var(--gray-300);
  border-radius:.5rem;
  font-size:.875rem;
  background:#fff;
  color:var(--gray-800);
  width:100%;
  cursor:pointer;
}
.adm-select:focus{
  outline:none;
  border-color:var(--azul);
  box-shadow:0 0 0 3px rgba(17,101,147,.12);
}

/* Cards de modo de cálculo */
.batch-mode-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:.75rem;
}
.batch-mode-card{
  display:flex;
  align-items:center;
  gap:.65rem;
  padding:.85rem 1rem;
  background:#fff;
  border:1.5px solid var(--gray-200);
  border-radius:.6rem;
  cursor:pointer;
  transition:border-color .15s, box-shadow .15s, background .15s;
}
.batch-mode-card:hover{border-color:var(--azul)}
.batch-mode-card input{margin:0;accent-color:var(--verde)}
.batch-mode-card:has(input:checked){
  border-color:var(--verde);
  background:rgba(62,194,110,.06);
  box-shadow:0 0 0 2px rgba(62,194,110,.15);
}
.batch-mode-badge{
  font-size:.65rem;font-weight:800;letter-spacing:.04em;
  padding:.2rem .45rem;border-radius:.35rem;flex-shrink:0;
}
.batch-badge-both{background:#e9d5ff;color:#6b21a8}
.batch-mode-text{display:flex;flex-direction:column;line-height:1.25}
.batch-mode-text strong{font-size:.85rem;color:var(--gray-800)}
.batch-mode-text small{font-size:.72rem;color:var(--gray-500)}

/* Camadas */
.batch-chk{
  display:flex;
  align-items:center;
  gap:.5rem;
  font-size:.85rem;
  color:var(--gray-800);
  cursor:pointer;
  padding:.35rem .5rem;
  border-radius:.4rem;
}
.batch-chk:hover{background:rgba(0,59,90,.04)}
.batch-chk input{accent-color:var(--verde)}
.batch-chk-all{
  margin-bottom:.5rem;
  padding-bottom:.6rem;
  border-bottom:1px solid var(--gray-200);
  font-weight:600;
}
.batch-layers-list{
  max-height:260px;
  overflow:auto;
  display:flex;
  flex-direction:column;
  gap:.1rem;
  padding:.5rem;
  border:1px solid var(--gray-200);
  border-radius:.5rem;
  background:#fff;
}
.batch-layers-group{margin-bottom:.35rem}
.batch-layers-group-name{
  font-size:.7rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.4px;
  color:var(--azul);
  margin:.5rem .5rem .25rem;
}
.batch-layers-loading{
  font-size:.8125rem;
  color:var(--gray-500);
  padding:.5rem;
}

/* Ações */
.batch-actions{
  display:flex;
  align-items:center;
  gap:1rem;
  margin-top:1.25rem;
  padding-top:1rem;
  border-top:1px solid var(--gray-200);
}
.batch-status{
  font-size:.85rem;
  color:var(--gray-600);
  font-weight:500;
}

/* Acompanhamento do processamento */
.batch-progress-section.hidden,
.batch-map-section.hidden{display:none}
.batch-total-row{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:.4rem;
}
.batch-total-label{font-size:.8rem;font-weight:600;color:var(--gray-700)}
.batch-total-pct{font-size:.9rem;font-weight:700;color:var(--verde)}
.batch-total-meta{
  font-size:.75rem;color:var(--gray-500);margin-top:.4rem;
}
.batch-bar{
  height:10px;
  background:var(--gray-200);
  border-radius:6px;
  overflow:hidden;
}
.batch-bar-total{height:14px}
.batch-bar-fill{
  height:100%;
  width:0%;
  background:linear-gradient(90deg,#2fa854,#3ec26e);
  border-radius:6px;
  transition:width .3s ease;
}
.batch-bar-fill-sub{
  background:linear-gradient(90deg,#1e6ba8,#3b9bd6);
}
.batch-subtasks{
  display:flex;flex-direction:column;gap:.6rem;margin-top:1rem;
}
.batch-subtask{
  background:#fff;
  border:1px solid var(--gray-200);
  border-radius:.5rem;
  padding:.6rem .75rem;
  box-shadow:var(--shadow-sm);
  transition:opacity .3s ease;
}
.batch-subtask-done{opacity:.5}
.batch-subtask-head{
  display:flex;align-items:center;justify-content:space-between;
  gap:.75rem;margin-bottom:.4rem;
}
.batch-subtask-title{
  font-size:.78rem;font-weight:600;color:var(--gray-800);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.batch-subtask-pct{font-size:.75rem;font-weight:700;color:var(--azul);flex-shrink:0}
.batch-subtask-step{font-size:.72rem;color:var(--gray-500);margin-top:.35rem}

/* Mapa das rotas */
.batch-map{
  height:420px;
  border-radius:var(--radius);
  border:1px solid var(--gray-200);
  overflow:hidden;
  box-shadow:var(--shadow-sm);
}
.batch-map-wrap{
  display:grid;
  grid-template-columns:1fr 220px;
  gap:.75rem;
  align-items:stretch;
}
.batch-map-wrap .batch-map{height:440px}
.batch-map-legend{
  border:1px solid var(--gray-200);
  border-radius:var(--radius);
  background:#fff;
  box-shadow:var(--shadow-sm);
  padding:.6rem .7rem;
  max-height:440px;
  overflow:auto;
}
.batch-legend-title{
  font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.4px;
  color:var(--azul);margin-bottom:.5rem;
}
.batch-legend-item{
  display:flex;align-items:center;gap:.5rem;padding:.2rem 0;
  font-size:.78rem;color:var(--gray-700);
}
.batch-legend-swatch{
  width:14px;height:4px;border-radius:2px;flex-shrink:0;
}
.batch-legend-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:900px){
  .batch-map-wrap{grid-template-columns:1fr}
  .batch-map-legend{max-height:180px}
}

/* Botão de download do resultado */
.adm-btn-download{
  background:#0d9488;color:#fff;border-color:#0d9488;
}
.adm-btn-download:hover:not(:disabled){background:#0f766e;border-color:#0f766e}
.adm-btn-download:disabled{opacity:.5;cursor:not-allowed}
.batch-download-bar{
  display:flex;
  justify-content:flex-end;
  margin-top:1rem;
  padding-top:1rem;
  border-top:1px solid var(--gray-200);
}

.batch-sectioned-opt{
  margin-top:.85rem;
  padding:.6rem .7rem;
  border:1px dashed var(--gray-300);
  border-radius:.5rem;
  font-size:.82rem;
  line-height:1.4;
}

/* Arquivos-modelo de entrada */
.batch-templates{
  margin-top:.9rem;
  padding:.85rem 1rem;
  border:1px solid var(--gray-200);
  border-radius:.5rem;
  background:var(--gray-50, #f9fafb);
}
.batch-templates-head{
  font-size:.82rem;
  color:var(--gray-700);
  margin-bottom:.6rem;
}
.batch-templates-btns{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  margin-bottom:.75rem;
}
.batch-format-rules{
  margin:0;
  padding-left:1.1rem;
  font-size:.78rem;
  color:var(--gray-600);
  line-height:1.5;
}
.batch-format-rules code{font-size:.72rem}

/* Popup de atributos no mapa */
.batch-popup{max-height:280px;overflow:auto}
.batch-popup-table{border-collapse:collapse;width:100%;font-size:12px}
.batch-popup-table th,
.batch-popup-table td{
  border:1px solid var(--gray-200);
  padding:.25rem .45rem;
  text-align:left;
  vertical-align:top;
}
.batch-popup-table th{
  background:var(--gray-100);
  color:var(--gray-700);
  font-weight:600;
  white-space:nowrap;
}

/* Wrapper para scroll horizontal em telas pequenas */
.lay-table-wrap{
  overflow-x:auto;
  border:1px solid var(--azul);
  border-radius:var(--radius);
}

/* Tabela principal */
.lay-table{
  width:max-content;
  min-width:100%;
  border-collapse:collapse;
  font-size:.855rem;
  table-layout:auto;
}
.lay-table thead th{
  background:var(--azul);
  color:#fff;
  font-weight:700;
  font-size:.76rem;
  text-transform:uppercase;
  letter-spacing:.3px;
  padding:.45rem .75rem;
  text-align:left;
  white-space:nowrap;
  border:0.5px solid var(--azul);
  vertical-align:middle;
}
.lay-th-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.4rem;
}
.lay-sort-btn{
  flex-shrink:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  margin:0;
  border:none;
  background:transparent;
  color:#fff;
  cursor:pointer;
  opacity:.55;
  line-height:1;
}
.lay-sort-btn:hover{opacity:.85}
.lay-sort-btn.is-active{opacity:1}
.lay-sort-btn.is-asc .lay-sort-icon path:first-child{opacity:1}
.lay-sort-btn.is-asc .lay-sort-icon path:last-child{opacity:.25}
.lay-sort-btn.is-desc .lay-sort-icon path:first-child{opacity:.25}
.lay-sort-btn.is-desc .lay-sort-icon path:last-child{opacity:1}
.lay-sort-btn:not(.is-asc):not(.is-desc) .lay-sort-icon path{opacity:.7}
.lay-table tbody tr{border-bottom:none}
/* Linha de estado vazio dentro da tabela */
.lay-empty-row td{padding:2.5rem 1rem;text-align:center;border-bottom:none}
.lay-empty-row:hover{background:transparent!important}
.lay-empty-inline{display:flex;align-items:center;justify-content:center;gap:.75rem;color:var(--gray-400)}
.lay-empty-inline svg{flex-shrink:0;opacity:.5}
.lay-table tbody tr:hover{background:var(--gray-50)}
.lay-table tbody td{padding:.38rem .75rem;vertical-align:middle;color:var(--gray-700);border:0.5px solid var(--azul);line-height:1.25;white-space:nowrap}

/* Colunas — largura minima calculada via JS (initLayTableColumns) */
.col-chk{width:2.5rem;min-width:2.5rem!important;text-align:center}
.col-chk input[type=checkbox]{cursor:pointer;width:.9rem;height:.9rem;accent-color:var(--accent)}
.col-date{color:var(--gray-500);font-size:.8rem}
.col-actions{text-align:right}
.col-type .lay-type-name{font-size:.82rem;color:var(--gray-600)}
.lay-fonte-link{color:var(--azul);font-weight:500;text-decoration:none;border-bottom:1px dotted currentColor}
.lay-fonte-link:hover{color:var(--azul-escuro)}
.lay-fonte-name{color:var(--gray-600);font-size:.8rem}
.lay-grupo-name{font-size:.8rem;color:var(--gray-700);font-weight:500}
.lay-act-source{color:var(--azul)}
.lay-row-builtin .lay-name-text{font-weight:500}

/* Celula de nome */
.lay-name-cell{
  display:flex;
  align-items:center;
  gap:.5rem;
}
.lay-cdot{
  flex-shrink:0;
  width:.65rem;
  height:.65rem;
  border-radius:50%;
  margin-top:0;
  display:inline-block;
}
.lay-name-cell > div{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.lay-name-text{font-weight:600;color:var(--gray-800);font-size:.82rem;line-height:1.2}
.lay-desc{font-size:.72rem;color:var(--gray-500);line-height:1.15}

/* Badge de validacao inline */
.lay-val-badge{
  display:inline-block;
  font-size:.65rem;
  font-weight:700;
  letter-spacing:.2px;
  text-transform:uppercase;
  padding:.05rem .35rem;
  border-radius:.25rem;
  line-height:1.3;
}
.lay-val-badge.val-ok{background:#f0fdf4;color:#166534}
.lay-val-badge.val-fixed{background:#eff6ff;color:#1e40af}
.lay-val-badge.val-warning{background:#fffbeb;color:#92400e}
.lay-val-badge.val-error{background:#fff1f2;color:#9f1239}
.lay-val-badge.val-pending{background:var(--gray-100);color:var(--gray-500)}
.lay-val-badge.val-api{background:#eff6ff;color:#1e40af}
.lay-val-badge.val-wfs{background:#f0f9ff;color:#0369a1}
.lay-val-badge.val-local{background:#f8fafc;color:#475569}

/* Toggle de status na tabela */
.status-cell-inner{display:flex;align-items:center;gap:.35rem}
.lay-toggle-wrap{
  position:relative;
  display:inline-flex;
  align-items:center;
  cursor:pointer;
}
.lay-toggle-inp{
  position:absolute;
  opacity:0;
  width:0;
  height:0;
}
.lay-toggle-pill{
  position:relative;
  display:inline-block;
  width:1.875rem;
  height:1.0625rem;
  background:var(--gray-300);
  border-radius:1rem;
  transition:background .2s;
  flex-shrink:0;
}
.lay-toggle-pill::after{
  content:'';
  position:absolute;
  top:50%;
  left:.1875rem;
  width:.8125rem;
  height:.8125rem;
  background:#fff;
  border-radius:50%;
  transition:transform .2s;
  box-shadow:0 1px 3px rgba(0,0,0,.2);
  transform:translateY(-50%);
}
.lay-toggle-inp:checked + .lay-toggle-pill{background:var(--verde)}
.lay-toggle-inp:checked + .lay-toggle-pill::after{transform:translate(.9375rem,-50%)}
.lay-status-lbl{font-size:.75rem;font-weight:600}
.lbl-active{color:#166534}
.lbl-inactive{color:var(--gray-400)}

/* Botoes de acao por linha */
.lay-row-acts{
  display:flex;
  justify-content:flex-end;
  gap:.25rem;
}
.lay-act{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.625rem;
  height:1.625rem;
  border-radius:.375rem;
  border:1px solid var(--gray-200);
  background:#fff;
  color:var(--gray-500);
  cursor:pointer;
  transition:background .15s,color .15s,border-color .15s;
}
.lay-act:hover{background:var(--gray-100);color:var(--gray-800);border-color:var(--gray-300)}
.lay-act-danger:hover{background:#fff5f5;color:var(--danger);border-color:#fca5a5}

/* Modal de editar nome */
.modal-box-sm{max-width:480px;width:92%}
.modal-box-md{max-width:640px;width:94%}

.source-modal-body{padding:1rem 1.5rem 0}
.source-modal-lead{margin:0 0 1rem;color:var(--gray-600);font-size:.9rem}
.source-form-grid{margin-bottom:.5rem}
.src-readonly{background:var(--gray-50)!important;color:var(--gray-600)!important}
.source-modal-actions{
    display:flex;justify-content:flex-end;gap:.5rem;
    padding:1rem 1.5rem 1.25rem;border-top:1px solid var(--gray-200)
}
.lay-icon-btn{
    display:inline-flex;align-items:center;justify-content:center;
    width:2.5rem;height:2.5rem;border-radius:8px;border:1px solid var(--gray-300);
    background:#fff;color:var(--gray-700);cursor:pointer;transition:background .15s,border-color .15s
}
.lay-icon-btn:hover{background:var(--gray-50);border-color:var(--azul);color:var(--azul)}
.lay-icon-btn-primary{background:var(--azul);border-color:var(--azul);color:#fff}
.lay-icon-btn-primary:hover{background:var(--azul-escuro);border-color:var(--azul-escuro);color:#fff}
.src-test-result{
    margin:1rem 0 0;padding:.65rem .85rem;border-radius:8px;font-size:.85rem
}
.src-test-pending{background:var(--gray-100);color:var(--gray-600)}
.src-test-ok{background:#f0fdf4;color:#166534}
.src-test-err{background:#fff1f2;color:#9f1239}
.edit-name-input{
  width:100%;
  padding:.6rem .875rem;
  border:1.5px solid var(--gray-300);
  border-radius:.5rem;
  font-size:.9rem;
  font-family:var(--font);
  color:var(--gray-800);
  outline:none;
  transition:border-color .15s;
  box-sizing:border-box;
}
.edit-name-input:focus{border-color:var(--accent)}
.edit-name-actions{
  display:flex;
  justify-content:flex-end;
  gap:.625rem;
  margin-top:1rem;
}

/* ============================================================================
   Secao: Calculo de Rotas
   ============================================================================ */

/* Intro */
.rt-intro{
  padding:1.125rem 1.375rem;
  background:linear-gradient(135deg,#eff6ff 0%,#f0fdf4 100%);
  border-left:4px solid var(--accent);
  border-radius:var(--radius);
  color:var(--gray-700);
  line-height:1.65;
  margin-bottom:2rem;
  font-size:.9rem;
}
.rt-intro strong{color:var(--azul)}

/* Título de bloco interno */
.rt-block-title{
  font-size:.9375rem;
  font-weight:700;
  color:var(--gray-800);
  margin:0 0 1rem;
  padding-bottom:.5rem;
  border-bottom:2px solid var(--gray-200);
}
.rt-block-title-spaced{margin-top:2rem}

/* ── Modos lado a lado ─────────────────────────── */
.rt-modes-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1.25rem;
  margin-bottom:2rem;
}

.rt-mode-card{
  border:1.5px solid var(--gray-200);
  border-radius:var(--radius);
  overflow:hidden;
}

.rt-mode-header{
  display:flex;
  align-items:center;
  gap:.875rem;
  padding:.875rem 1.125rem;
  border-bottom:1.5px solid var(--gray-200);
}

.rt-mode-badge{
  flex-shrink:0;
  padding:.25rem .6rem;
  border-radius:.375rem;
  font-size:.7rem;
  font-weight:800;
  letter-spacing:.5px;
}

.rt-conv .rt-mode-header{background:#eff6ff}
.rt-badge-conv{background:#bfdbfe;color:#1e40af}

.rt-smart .rt-mode-header{background:#f0fdf4}
.rt-badge-smart{background:#bbf7d0;color:#166534}

.rt-mode-name{
  font-weight:700;
  font-size:.9rem;
  color:var(--gray-800);
}
.rt-mode-sub{
  font-size:.75rem;
  color:var(--gray-500);
  margin-top:.1rem;
}

/* ── Passos numerados ──────────────────────────── */
.rt-steps{
  margin:0;
  padding:1rem 1.125rem 1.125rem;
  list-style:none;
  counter-reset:step-c;
  display:flex;
  flex-direction:column;
  gap:.75rem;
}
.rt-steps li{
  display:flex;
  gap:.7rem;
  font-size:.85rem;
  line-height:1.55;
  color:var(--gray-700);
  counter-increment:step-c;
}
.rt-steps li::before{
  content:counter(step-c);
  flex-shrink:0;
  width:1.375rem;
  height:1.375rem;
  border-radius:50%;
  font-size:.68rem;
  font-weight:800;
  display:flex;
  align-items:center;
  justify-content:center;
  margin-top:.15rem;
}
.rt-steps-conv li::before{background:#bfdbfe;color:#1e40af}
.rt-steps-smart li::before{background:#bbf7d0;color:#166534}

.rt-steps code{
  font-family:'Courier New',monospace;
  font-size:.8rem;
  background:rgba(0,0,0,.05);
  padding:.1rem .35rem;
  border-radius:.25rem;
}

/* ── Equações ──────────────────────────────────── */
.rt-eq-card{
  background:var(--gray-50);
  border:1px solid var(--gray-200);
  border-left:4px solid var(--accent);
  border-radius:var(--radius);
  padding:1.125rem 1.25rem;
  margin-bottom:1rem;
}
.rt-eq-label{
  font-size:.72rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.5px;
  color:var(--accent);
  margin-bottom:.625rem;
}
.rt-eq-formula{
  font-family:'Courier New','Consolas',monospace;
  font-size:.84rem;
  line-height:1.85;
  background:#fff;
  border:1px solid var(--gray-200);
  border-radius:.375rem;
  padding:.75rem 1rem;
  margin:.5rem 0;
  white-space:pre;
  overflow-x:auto;
  color:var(--gray-800);
}
.rt-eq-desc{
  font-size:.82rem;
  color:var(--gray-600);
  line-height:1.6;
  margin-top:.5rem;
}
.rt-eq-desc code{
  font-family:'Courier New',monospace;
  font-size:.79rem;
  background:rgba(0,0,0,.05);
  padding:.1rem .3rem;
  border-radius:.2rem;
  color:var(--accent);
}

/* ── Tabela de severidade ──────────────────────── */
.rt-table-wrap{overflow-x:auto}

.rt-sev-table{
  width:100%;
  border-collapse:collapse;
  font-size:.845rem;
  border:1px solid var(--gray-200);
  border-radius:var(--radius);
  overflow:hidden;
}
.rt-sev-table thead th{
  background:var(--gray-100);
  color:var(--gray-600);
  font-weight:700;
  padding:.6rem 1rem;
  text-align:left;
  font-size:.76rem;
  text-transform:uppercase;
  letter-spacing:.3px;
  white-space:nowrap;
}
.rt-sev-table tbody td{
  padding:.6rem 1rem;
  border-top:1px solid var(--gray-200);
  color:var(--gray-700);
  vertical-align:middle;
}
.rt-sev-table tbody tr:hover{background:var(--gray-50)}

.sev-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.5rem;
  height:1.5rem;
  border-radius:.375rem;
  font-size:.72rem;
  font-weight:800;
}
.sev-chip.s1{background:#f0fdf4;color:#166534}
.sev-chip.s2{background:#fefce8;color:#854d0e}
.sev-chip.s3{background:#fff7ed;color:#9a3412}
.sev-chip.s4{background:#fff1f2;color:#9f1239}
.sev-chip.s5{background:#1a0a0a;color:#ff4444}

.rt-av{
  display:inline-block;
  font-family:'Courier New',monospace;
  font-size:.78rem;
  padding:.15rem .45rem;
  border-radius:.25rem;
  font-weight:700;
}
.rt-av-info{background:#f3f4f6;color:#6b7280}
.rt-av-soft{background:#fefce8;color:#854d0e}
.rt-av-hard{background:#fff1f2;color:#9f1239}

.rt-rec{
  font-size:.78rem;
  color:#92400e;
  font-style:italic;
}
.rt-desvio{
  display:inline-flex;
  align-items:center;
  gap:.3rem;
  font-size:.78rem;
  font-weight:700;
  color:#166534;
  background:#dcfce7;
  padding:.15rem .5rem;
  border-radius:.35rem;
}
.rt-muted{color:var(--gray-400);font-style:italic}

.rt-table-note{
  margin-top:.875rem;
  font-size:.8rem;
  color:var(--gray-500);
  line-height:1.55;
}
.rt-table-note code{
  font-family:'Courier New',monospace;
  font-size:.78rem;
  background:rgba(0,0,0,.05);
  padding:.1rem .3rem;
  border-radius:.2rem;
}

/* ── Notas técnicas ────────────────────────────── */
.rt-notes-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1rem;
  margin-bottom:1rem;
}
.rt-note{
  border-radius:var(--radius);
  padding:1rem 1.125rem;
  font-size:.82rem;
  line-height:1.6;
  color:var(--gray-700);
}
.rt-note-title{
  font-weight:700;
  font-size:.82rem;
  margin-bottom:.375rem;
}
.rt-note code{
  font-family:'Courier New',monospace;
  font-size:.79rem;
  background:rgba(0,0,0,.06);
  padding:.1rem .3rem;
  border-radius:.2rem;
}
.rt-note-info{background:#eff6ff;border-left:3px solid #3b82f6}
.rt-note-info .rt-note-title{color:#1e40af}
.rt-note-tip{background:#f0fdf4;border-left:3px solid var(--verde)}
.rt-note-tip .rt-note-title{color:#166534}
.rt-note-warn{background:#fffbeb;border-left:3px solid var(--warn)}
.rt-note-warn .rt-note-title{color:#92400e}

/* ── Upload preview info badges ────────────────── */
.fi-loading{font-size:.78rem;color:var(--gray-500);font-style:italic}
.fi-feat{font-size:.78rem;color:var(--verde);font-weight:600}
.fi-err{font-size:.78rem;color:var(--danger);font-weight:500}

/* ── Modal: confirmar importação ───────────────── */
.modal-confirm-body{
  padding:1.5rem 1.75rem 1rem;
  text-align:center;
}
.modal-confirm-icon{
  width:64px;height:64px;
  border-radius:50%;
  background:#eff6ff;
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 1.125rem;
  color:var(--azul);
}
.modal-confirm-lead{
  font-size:.95rem;
  color:var(--gray-800);
  margin-bottom:.6rem;
  line-height:1.55;
}
.modal-confirm-note{
  font-size:.83rem;
  color:var(--gray-500);
  line-height:1.6;
  margin:0;
}
.modal-confirm-actions{
  display:flex;
  justify-content:flex-end;
  gap:.625rem;
  padding:.875rem 1.75rem 1.5rem;
  border-top:1px solid var(--gray-200);
}

/* ── Modal: progresso SSE ─────────────────────── */
.modal-progress-body{
  padding:1.5rem 1.75rem;
}
.import-spinner-wrap{
  display:flex;
  align-items:center;
  gap:.75rem;
  margin-bottom:1.25rem;
}
.import-spinner{
  width:22px;height:22px;
  border:2.5px solid var(--gray-200);
  border-top-color:var(--azul);
  border-radius:50%;
  animation:spin .75s linear infinite;
  flex-shrink:0;
}
@keyframes spin{to{transform:rotate(360deg)}}
.import-spinner-label{
  font-size:.85rem;
  color:var(--gray-600);
  font-style:italic;
}
.import-log{
  list-style:none;
  margin:0;padding:0;
  display:flex;flex-direction:column;gap:.45rem;
  max-height:220px;
  overflow-y:auto;
}
.import-log-item{
  display:flex;
  align-items:flex-start;
  gap:.45rem;
  font-size:.84rem;
  color:var(--gray-700);
  line-height:1.45;
}
.import-log-item svg{
  flex-shrink:0;
  margin-top:.1rem;
  color:var(--verde);
}
.import-log-error{color:var(--danger)}
.import-log-error svg{color:var(--danger)}

/* ── Modal: resultado ─────────────────────────── */
.modal-result-body{
  padding:1.5rem 1.75rem 1rem;
  text-align:center;
}
.result-ok-icon{
  width:72px;height:72px;
  border-radius:50%;
  background:#f0fdf4;
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 1.125rem;
  color:var(--verde);
}
.result-err-icon{
  width:72px;height:72px;
  border-radius:50%;
  background:#fff1f2;
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 1.125rem;
  color:var(--danger);
}
.result-lead{
  font-size:.95rem;
  font-weight:600;
  color:var(--gray-800);
  margin-bottom:.5rem;
  line-height:1.5;
}
.result-detail{
  font-size:.84rem;
  color:var(--gray-600);
  margin:.25rem 0;
  line-height:1.5;
}
.result-err-msg{
  color:var(--danger);
  font-weight:500;
  background:#fff1f2;
  border-radius:var(--radius);
  padding:.5rem .875rem;
  margin-top:.625rem;
}
.result-warning{
  margin-top:.875rem;
  font-size:.82rem;
  color:#92400e;
  background:#fffbeb;
  border:1px solid #fde68a;
  border-radius:var(--radius);
  padding:.5rem .875rem;
  text-align:left;
}
.modal-result-title-ok{color:var(--verde)}
.modal-result-title-err{color:var(--danger)}
.modal-result-actions{
  display:flex;
  justify-content:flex-end;
  gap:.625rem;
  padding:.875rem 1.75rem 1.5rem;
  border-top:1px solid var(--gray-200);
}

/* Duas tabelas admin (geral / visual) */
.lay-table-section.hidden{display:none}
#lay-view-tables.hidden{display:none}
.lay-badge-origem{
  display:inline-block;
  font-size:.72rem;
  font-weight:600;
  padding:.2rem .55rem;
  border-radius:999px;
  background:var(--gray-100);
  color:var(--gray-700);
  white-space:nowrap;
}
.lay-row-visual.lay-row-highlight{background:#f0fdf4}
.adm-form-section{margin-bottom:1rem;min-width:0}
.adm-form-section.hidden{display:none}
.lay-form-active{
  display:flex;
  align-items:center;
  gap:.65rem;
  margin-top:1.75rem;
  cursor:pointer;
}
.lay-form-active .lay-toggle-pill{margin:0}

.lay-view-import,
#sec-importacoes{
  background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius);
  padding:1.25rem 1.5rem 1.5rem;margin-bottom:1.25rem;box-shadow:var(--shadow-sm);
}
.lay-view-import.hidden,
#sec-importacoes.hidden{display:none}
#sec-tabelas.hidden{display:none}
.import-panel.hidden{display:none}
.adm-subsection{margin-top:.5rem;min-width:0}
.import-section-hint{
  font-size:.78rem;color:var(--gray-500);margin:-.25rem 0 .85rem;line-height:1.45;
}
.import-section-hint code{font-size:.72rem}
.lay-import-hdr{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--gray-200);
}
.lay-import-hdr h2{font-size:1.05rem;font-weight:600;color:var(--gray-800)}
.import-section{
  border:1px solid var(--gray-200);
  border-radius:var(--radius);
  padding:1.125rem 1.25rem 1.25rem;
  margin-bottom:1rem;
  box-shadow:var(--shadow-sm);
  min-width:0;
}
.import-section-cadastro{
  background:linear-gradient(135deg,rgba(0,59,90,.045) 0%,rgba(17,101,147,.07) 100%);
  border-color:rgba(0,59,90,.14);
}
.import-section-metodo{
  background:linear-gradient(135deg,rgba(62,194,110,.07) 0%,rgba(47,168,84,.04) 100%);
  border-color:rgba(62,194,110,.2);
}
.import-section-visual{
  background:linear-gradient(135deg,rgba(28,61,89,.06) 0%,rgba(0,59,90,.035) 100%);
  border-color:rgba(28,61,89,.14);
}
.import-section legend{
  font-weight:600;
  font-size:.8125rem;
  color:var(--azul);
  padding:0 .4rem;
}

/* Inputs padronizados — painéis de importação */
.import-panel{
  --import-input-h:2.5rem;
  --import-input-border:var(--gray-300);
  --import-input-bg:#fff;
  --import-input-radius:.5rem;
  min-width:0;
}
/* Campos sempre brancos — nunca igual ao fundo tintado da seção */
.import-panel .import-section :is(
  input[type="text"],
  input[type="url"],
  input[type="password"],
  input[type="number"],
  input[type="search"],
  select,
  textarea
){
  background-color:#fff;
}
.import-panel .import-section .adm-upload-area,
.import-panel .import-section .import-upload-area{
  background-color:#fff;
}
.import-panel .import-section .adm-upload-area:hover,
.import-panel .import-section .adm-upload-area.drag-over,
.import-panel .import-section .import-upload-area:hover,
.import-panel .import-section .import-upload-area.drag-over{
  background-color:#fff;
}
.import-panel .adm-fg input[type="text"],
.import-panel .adm-fg input[type="url"],
.import-panel .adm-fg input[type="password"],
.import-panel .adm-fg input[type="number"],
.import-panel .adm-fg select,
.import-panel .adm-input,
.import-panel .import-color-hex-input{
  width:100%;
  min-height:var(--import-input-h);
  height:var(--import-input-h);
  padding:0 .875rem;
  border:1.5px solid var(--import-input-border);
  border-radius:var(--import-input-radius);
  font-size:.875rem;
  font-family:var(--font);
  color:var(--gray-900);
  background-color:#fff;
  transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease;
  outline:none;
  line-height:1.25;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
}
.import-panel .adm-fg input:not([readonly]):not(:disabled):hover,
.import-panel .adm-fg select:not(:disabled):hover,
.import-panel .import-color-hex-input:hover{
  border-color:var(--accent);
  background-color:#fff;
}
.import-panel .adm-fg input:focus,
.import-panel .adm-fg select:focus,
.import-panel .import-color-hex-input:focus{
  border-color:var(--verde);
  box-shadow:0 0 0 3px rgba(62,194,110,.12);
  background-color:#fff;
}
.import-panel .adm-fg input[readonly],
.import-panel .adm-input-readonly{
  background-color:#fff;
  color:var(--gray-600);
  border-color:var(--gray-300);
  border-style:dashed;
  box-shadow:none;
}
.import-panel .adm-fg input[readonly]:hover,
.import-panel .adm-input-readonly:hover{
  border-color:var(--gray-300);
  background-color:#fff;
}
.import-panel .adm-fg select{cursor:pointer}
.adm-input-readonly{background:var(--gray-100);color:var(--gray-600);cursor:default}

/* Customização visual — layout compartilhado */
.import-visual-layout{
  display:grid;
  grid-template-columns:minmax(9rem,11rem) 1fr;
  gap:1.25rem 1.5rem;
  align-items:start;
}
.import-visual-preview-wrap{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:.45rem;
}
.import-visual-preview{
  width:100%;
  border:1.5px solid var(--gray-200);
  border-radius:var(--radius);
  overflow:hidden;
  background:#fff;
  box-shadow:inset 0 1px 2px rgba(0,0,0,.04);
}
.import-preview-svg{width:100%;height:auto;display:block}
.import-preview-bg{fill:var(--gray-50)}
.import-preview-fill{
  fill:var(--preview-color,#ff6b6b);
  fill-opacity:var(--preview-fill-op,.25);
  transition:fill .15s ease,fill-opacity .15s ease;
}
.import-preview-stroke{
  fill:none;
  stroke:var(--preview-color,#ff6b6b);
  stroke-width:2.5;
  stroke-linejoin:round;
  stroke-opacity:var(--preview-stroke-op,.7);
  transition:stroke .15s ease,stroke-opacity .15s ease;
}
.import-preview-point{
  fill:var(--preview-color,#ff6b6b);
  fill-opacity:var(--preview-stroke-op,.85);
  stroke:#fff;
  stroke-width:1.5;
}
.import-preview-caption{
  font-size:.68rem;
  font-weight:600;
  color:var(--gray-500);
  text-transform:uppercase;
  letter-spacing:.04em;
}
.import-visual-controls{display:flex;flex-direction:column;gap:1rem}
.import-visual-row{display:flex;flex-direction:column;gap:.45rem}
.import-visual-row > label,
.import-visual-label{
  font-size:.8rem;
  font-weight:600;
  color:var(--gray-700);
}
.import-color-field{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.5rem;
}
.import-color-input{
  width:var(--import-input-h);
  min-width:var(--import-input-h);
  height:var(--import-input-h);
  padding:.2rem;
  border:1.5px solid var(--import-input-border);
  border-radius:var(--import-input-radius);
  background-color:#fff;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  cursor:pointer;
  flex-shrink:0;
  transition:border-color .18s ease,box-shadow .18s ease;
}
.import-color-input:hover{border-color:var(--accent)}
.import-color-input:focus{
  border-color:var(--verde);
  box-shadow:0 0 0 3px rgba(62,194,110,.12);
  outline:none;
}
.import-color-hex-input{
  width:6.5rem;
  min-width:6.5rem;
  flex:0 0 auto;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:.8125rem;
  text-transform:lowercase;
}
.import-color-swatches{
  display:flex;
  flex-wrap:wrap;
  gap:.35rem;
  align-items:center;
}
.import-swatch{
  width:1.65rem;
  height:1.65rem;
  border-radius:999px;
  border:2px solid #fff;
  background:var(--swatch);
  box-shadow:0 0 0 1.5px var(--gray-300);
  cursor:pointer;
  padding:0;
  transition:transform .12s ease,box-shadow .12s ease;
}
.import-swatch:hover{
  transform:scale(1.08);
  box-shadow:0 0 0 2px var(--verde);
}
.import-range-field{
  display:flex;
  align-items:center;
  gap:.75rem;
}
.import-range-input{
  flex:1;
  height:6px;
  margin:0;
  accent-color:var(--verde);
  cursor:pointer;
  background:linear-gradient(to right,var(--verde) 0%,var(--verde) var(--range-pct,70%),var(--gray-200) var(--range-pct,70%),var(--gray-200) 100%);
  border-radius:999px;
}
.import-range-output{
  min-width:2.75rem;
  text-align:right;
  font-size:.8125rem;
  font-weight:700;
  color:var(--verde-d);
  font-variant-numeric:tabular-nums;
}
.import-sev-group{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:.4rem;
}
.import-sev-btn{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:.1rem;
  min-height:2.75rem;
  padding:.35rem .25rem;
  border:1.5px solid var(--gray-200);
  border-radius:.5rem;
  background-color:#fff;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  cursor:pointer;
  transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease;
}
.import-sev-btn:hover{border-color:var(--accent);background-color:#fff}
.import-sev-btn.is-active{
  border-color:var(--verde);
  background:rgba(62,194,110,.1);
  box-shadow:0 0 0 2px rgba(62,194,110,.15);
}
.import-sev-num{font-size:.875rem;font-weight:700;color:var(--gray-800);line-height:1}
.import-sev-lbl{font-size:.62rem;font-weight:600;color:var(--gray-500);line-height:1.1}
.import-sev-btn[data-sev="1"].is-active .import-sev-num{color:#166534}
.import-sev-btn[data-sev="2"].is-active .import-sev-num{color:#854d0e}
.import-sev-btn[data-sev="3"].is-active .import-sev-num{color:#9a3412}
.import-sev-btn[data-sev="4"].is-active .import-sev-num{color:#9f1239}
.import-sev-btn[data-sev="5"].is-active .import-sev-num{color:#c0392b}
.import-style-presets{display:flex;flex-wrap:wrap;gap:.4rem}
.import-preset-btn{
  padding:.4rem .75rem;
  border:1.5px solid var(--gray-200);
  border-radius:999px;
  background-color:#fff;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  font-size:.75rem;
  font-weight:600;
  color:var(--gray-700);
  cursor:pointer;
  transition:border-color .15s ease,background-color .15s ease,color .15s ease;
}
.import-preset-btn:hover{
  border-color:var(--verde);
  background-color:#fff;
  color:var(--verde-d);
}
.import-visual-row-active{margin-top:.15rem}
.import-active-toggle{
  display:flex;
  align-items:center;
  gap:.75rem;
  min-height:var(--import-input-h);
  padding:0 .875rem;
  margin:0;
  border:1.5px solid var(--import-input-border);
  border-radius:var(--import-input-radius);
  background-color:#fff;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  cursor:pointer;
  -webkit-user-select:none;
  user-select:none;
  transition:border-color .18s ease,box-shadow .18s ease;
}
.import-active-toggle:hover{border-color:var(--accent)}
.import-active-input{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
.import-active-switch{
  position:relative;
  flex-shrink:0;
  width:2.75rem;
  height:1.5rem;
  background:var(--gray-300);
  border-radius:999px;
  transition:background .2s ease;
}
.import-active-switch::after{
  content:'';
  position:absolute;
  top:2px;
  left:2px;
  width:1.125rem;
  height:1.125rem;
  background:#fff;
  border-radius:50%;
  box-shadow:0 1px 3px rgba(0,0,0,.22);
  transition:transform .2s ease;
}
.import-active-input:checked + .import-active-switch{background:var(--verde)}
.import-active-input:checked + .import-active-switch::after{transform:translateX(1.25rem)}
.import-active-input:focus-visible + .import-active-switch{
  outline:2px solid var(--verde);
  outline-offset:2px;
}
.import-active-label{
  font-size:.875rem;
  font-weight:500;
  color:var(--gray-800);
  line-height:1.3;
}
.import-active-input:not(:checked) ~ .import-active-label{color:var(--gray-500)}

@media(max-width:860px){
  .import-visual-layout{grid-template-columns:1fr}
  .import-visual-preview-wrap{max-width:10rem}
  .import-sev-group{grid-template-columns:repeat(5,minmax(0,1fr))}
}
@media(max-width:560px){
  .import-sev-lbl{display:none}
  .import-sev-btn{min-height:2.35rem}
}
.col-map-status{min-width:11rem;max-width:16rem}
.lay-map-status{display:flex;flex-wrap:wrap;gap:.2rem}
.lay-status-chip{
  display:inline-block;font-size:.65rem;font-weight:600;padding:.15rem .4rem;
  border-radius:999px;background:var(--gray-100);color:var(--gray-600);white-space:nowrap;
}
.lay-status-chip.chip-vis{background:#ecfdf5;color:#047857}
.lay-status-chip.chip-act{background:#eff6ff;color:#1d4ed8}
.lay-status-chip.chip-inact{background:#fef2f2;color:#b91c1c}
.col-url-trunc{max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem}

/* Sidebar unificada dos sistemas irmãos: menu Reporta + moldura Smart Router */
.adm-sidebar {
  --sidebar-green: #4ade80;
  width: 240px;
  background: linear-gradient(180deg, var(--azul) 0%, var(--navy) 100%);
  border-right: 3px solid var(--sidebar-green);
  box-shadow: 2px 0 12px rgba(0, 59, 90, 0.15);
}
.adm-nav {
  padding: 1.25rem 0.75rem;
  gap: 0.25rem;
}
.adm-nav-item {
  gap: 0.75rem;
  padding: 11px 1rem;
  border-radius: 8px;
  color: #fff;
  font-size: 14px;
  font-weight: 500;
  transition: background 0.15s ease, color 0.15s ease;
}
.adm-nav-item:hover { background: rgba(255,255,255,.08); color: #fff; }
.adm-nav-item.active {
  background: rgba(62,194,110,.18);
  color: #fff;
  font-weight: 600;
  box-shadow: inset 3px 0 0 var(--sidebar-green);
}
.adm-nav-item > svg:first-child { color: var(--sidebar-green); }
.adm-nav-subitem {
  color: rgba(255,255,255,.78);
  font-size: 0.8rem;
}
.adm-nav-subitem:hover { background: rgba(255,255,255,.08); color: #fff; }
.adm-nav-subitem.active {
  background: rgba(62,194,110,.14);
  color: #fff;
  box-shadow: inset 3px 0 0 var(--sidebar-green);
}

/* A marca da gestao escala com a largura da sidebar (container query no pai;
   cqw nao resolve contra o proprio container), para o slogan nunca cortar. */
.adm-sidebar{container-type:inline-size}
.adm-brand{font-size:clamp(1.05rem,8cqw,1.5rem)}

/* ============================================================================
   PAGINA DE ACESSO — skin padrao do ecossistema PLI (identico nas 3 apps).
   Hierarquia tipografica em Inter, com tokens e classes reutilizaveis:
     titulo principal 24/700 · titulo de secao 20/600 · subsecao 16/600
     rotulos e botoes 14/500 · texto comum 14/400 · texto auxiliar 12/400
   Regra: nenhum filho e maior nem mais pesado que o elemento acima dele;
   botoes e alertas se destacam por cor, fundo e borda, nao por tipografia.
   Medidas em px para nao depender do font-size raiz de cada app.
   ============================================================================ */
body.access-page {
  --t-font: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --t-title-size: 24px;      --t-title-weight: 700;
  --t-section-size: 20px;    --t-section-weight: 600;
  --t-subsection-size: 16px; --t-subsection-weight: 600;
  --t-label-size: 14px;      --t-label-weight: 500;
  --t-body-size: 14px;       --t-body-weight: 400;
  --t-aux-size: 12px;        --t-aux-weight: 400;
  --t-ink: #0f172a; --t-ink-2: #1c3d59; --t-muted: #64748b; --t-faint: #94a3b8;
  --t-accent: #116593; --t-green: #3ec26e; --t-green-dark: #2fa854; --t-line: #d7dee6;
  font-family: var(--t-font);
  color: var(--t-ink);
}
body.access-page input,
body.access-page button,
body.access-page a { font-family: var(--t-font); }

/* Classes reutilizaveis (os elementos abaixo sao mapeados a elas). */
body.access-page .t-title,
body.access-page .access-app-name { font-family: var(--t-font); font-size: var(--t-title-size); font-weight: var(--t-title-weight); line-height: 1.2; letter-spacing: -0.3px; }
body.access-page .t-section,
body.access-page header.topbar h1 { font-size: var(--t-section-size); font-weight: var(--t-section-weight); line-height: 1.2; }
body.access-page .t-subsection { font-size: var(--t-subsection-size); font-weight: var(--t-subsection-weight); line-height: 1.3; }
body.access-page .t-label,
body.access-page header.topbar nav a,
body.access-page .access-field-label,
body.access-page .access-btn-submit,
body.access-page .access-btn-register { font-size: var(--t-label-size); font-weight: var(--t-label-weight); line-height: 1.3; }
body.access-page .t-body,
body.access-page .access-context,
body.access-page .access-input-wrap input,
body.access-page .access-feedback { font-size: var(--t-body-size); font-weight: var(--t-body-weight); line-height: 1.5; }
body.access-page .t-aux,
body.access-page .access-app-subtitle,
body.access-page .access-forgot a,
body.access-page .access-back a,
body.access-page .access-divider-text,
body.access-page footer.footer { font-size: var(--t-aux-size); font-weight: var(--t-aux-weight); line-height: 1.4; }

/* Topbar: secao da pagina (20/600) > links de navegacao (14/500). */
body.access-page header.topbar { box-sizing: border-box; height: 70px; min-height: 70px; padding: 8px 24px; gap: 16px; }
body.access-page header.topbar h1 { margin: 0; color: #fff; text-transform: uppercase; letter-spacing: 0.02em; }
body.access-page header.topbar nav { gap: 16px; text-transform: uppercase; letter-spacing: 0.02em; }
body.access-page header.topbar nav a { color: rgba(255, 255, 255, 0.88); }
body.access-page header.topbar nav a:hover,
body.access-page header.topbar nav a[aria-current="page"] { color: #fff; text-decoration: underline; text-underline-offset: 4px; }

/* Card: a marca (24/700) e o titulo principal; tudo abaixo e menor ou mais leve. */
body.access-page .access-main { width: 100%; max-width: 440px; margin: 0 auto; padding: 24px 16px 32px; }
body.access-page .access-login-card { padding: 24px 24px 16px; border-radius: 10px; border-top: 4px solid var(--t-accent); }
body.access-page .access-branding { margin: -24px -24px 24px; padding: 20px 16px; border-radius: 6px 6px 0 0; }
body.access-page .access-brand-head { gap: 8px; }
body.access-page .access-app-icon { width: 26px; height: 26px; }
body.access-page .access-app-name { color: #fff; }
body.access-page .access-app-subtitle { margin-top: 4px; color: rgba(255, 255, 255, 0.72); }
body.access-page .access-context { margin: 0 0 16px; color: var(--t-muted); }
body.access-page .access-field { margin-bottom: 16px; gap: 4px; }
body.access-page .access-field-label { color: var(--t-ink-2); }
body.access-page .access-input-wrap input { min-height: 44px; padding: 8px 36px; color: var(--t-ink); border: 1px solid var(--t-line); border-radius: 6px; }
body.access-page .access-input-wrap input::placeholder { color: var(--t-faint); font-weight: var(--t-body-weight); }
body.access-page .access-feedback { border-radius: 6px; }
body.access-page .access-btn-submit { min-height: 44px; padding: 12px; border: none; border-radius: 6px; color: #fff; background: linear-gradient(135deg, #1c3d59, var(--t-accent)); }
body.access-page .access-forgot { margin-top: 16px; }
body.access-page .access-forgot a { color: var(--t-accent); }
body.access-page .access-divider { margin: 20px 0; }
body.access-page .access-divider-text { color: var(--t-muted); text-transform: uppercase; letter-spacing: 0.06em; }
body.access-page .access-btn-register { min-height: 44px; padding: 10px; border: 2px solid var(--t-green); border-radius: 6px; color: var(--t-green-dark); background: transparent; }
body.access-page .access-btn-register:hover { background: var(--t-green); color: #fff; }
body.access-page .access-back { margin-top: 16px; }
body.access-page .access-back a { color: var(--t-muted); }
body.access-page footer.footer { padding: 16px 24px; color: var(--t-muted); background: #fff; border-top: 1px solid var(--t-line); }

/* Gestao: rodape da sidebar so com o credito; cabecalho com icone + titulo + subtitulo em 70px. */
.adm-sidebar-footer .sidebar-credit{margin:0;text-align:center;font-size:10px;line-height:1.5;color:rgba(255,255,255,.55)}
.adm-page-heading{min-width:0;flex:1}
.adm-page-title{display:flex;align-items:center;gap:.5rem;white-space:nowrap}
.adm-page-icon{display:inline-flex;flex-shrink:0;width:1.1em;height:1.1em;color:var(--accent)}
.adm-page-icon svg{width:100%;height:100%}
.adm-page-subtitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Cabecalho da gestao: icone + (titulo / subtitulo) em linha; barra de sessao grudada. */
.adm-page-heading{display:flex;align-items:center;gap:.6rem;min-width:0;flex:1}
.adm-page-heading-text{min-width:0;flex:1}
.adm-page-icon{width:1.35rem;height:1.35rem}
.adm-session-bar{margin:0}

/* A pagina restrita ocupa exatamente a janela: quem rola e o .adm-main, e o
   cabecalho + barra de sessao (sticky) ficam presos ao topo dele. Com
   min-height a pagina crescia, a janela rolava e o sticky nao segurava. */
.admin-page{height:100vh;overflow:hidden}

/* ============================================================================
   BARRA DE SESSAO — padrao unico do ecossistema (identico nas 3 apps).
   Altura, fonte e cores da barra do HazardTrack; "Sair" no estilo do painel
   de gestao do Reporta (texto sublinhado, sem borda). Medidas em px.
   ============================================================================ */
body .adm-session-bar.adm-session-bar {
  box-sizing: border-box;
  height: 40px;
  min-height: 40px;
  margin: 0;
  padding: 0 19px;
  background: #f1f5f9;
  color: #003b5a;
  border-bottom: 1px solid #e2e8f0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  font-size: 13.6px;
  line-height: 1.2;
  box-shadow: none;
}
body .adm-session-bar .adm-session-user { display: flex; align-items: center; gap: 8px; min-width: 0; white-space: nowrap; overflow: hidden; font-size: 13.6px; }
body .adm-session-bar .adm-session-user strong { font-size: 13.6px; font-weight: 700; color: #003b5a; overflow: hidden; text-overflow: ellipsis; }
body .adm-session-bar .adm-session-status { width: 8px; height: 8px; border-radius: 50%; background: #3ec26e; box-shadow: 0 0 0 2px rgba(62, 194, 110, 0.18); flex: 0 0 auto; }
body .adm-session-bar .adm-session-username { color: #475569; font-weight: 500; font-size: 13.6px; }
body .adm-session-bar .adm-session-role { padding: 1px 8px; border: 1px solid rgba(62, 194, 110, 0.45); border-radius: 999px; color: #2fa854; background: #e5f6ec; font-size: 11px; font-weight: 700; letter-spacing: 0.03em; flex: 0 0 auto; }
body .adm-session-bar .adm-session-form { margin: 0; }
body .adm-session-bar .adm-session-logout.adm-session-logout {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  width: auto;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: none;
  box-shadow: none;
  color: #1c3d59;
  font: inherit;
  font-size: 13.6px;
  font-weight: 600;
  line-height: 1.1;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}
body .adm-session-bar .adm-session-logout.adm-session-logout svg { width: 14px; height: 14px; }
body .adm-session-bar .adm-session-logout.adm-session-logout:hover { color: #2fa854; background: none; border: none; }

/* ============================================================================
   MARCA NAS SIDEBARS — layout em grade: icone a esquerda ocupando a altura das
   duas linhas; nome e complemento em coluna, alinhados a esquerda e comecando
   no mesmo ponto (referencia: logo do SICARD). O cabecalho da marca vira
   display: contents para que icone, nome e complemento entrem na mesma grade.
   ============================================================================ */

.adm-brand{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:.45em;row-gap:.1em;align-items:center;align-content:center;justify-content:start;text-align:left}
.adm-brand-head{display:contents}
.adm-brand-icon{grid-column:1;grid-row:1 / span 2;width:1.8em;height:1.8em;align-self:center}
.adm-brand-name{grid-column:2;grid-row:1;align-self:end}
.adm-brand-sub{grid-column:2;grid-row:2;align-self:start;margin:0;text-align:left}

.adm-brand{column-gap:.35em}
.adm-brand-icon{width:1.6em;height:1.6em}

.adm-brand-icon{width:auto;height:100%;aspect-ratio:1 / 1;align-self:stretch}

.adm-brand-icon{width:1.79em;height:1.79em;aspect-ratio:auto;align-self:center}

/* Login: topbar so com a navegacao (sem titulo), alinhada a direita e um pouco menor. */
body.access-page header.topbar { justify-content: flex-end; }
body.access-page header.topbar nav a { font-size: 13px; font-weight: 500; }

/* Barra de sessao: fonte de 12px, sempre abaixo do titulo (>=18px) e do complemento (13px) do cabecalho. */
body .adm-session-bar.adm-session-bar { font-size: 12px; }
body .adm-session-bar .adm-session-user,
body .adm-session-bar .adm-session-user strong,
body .adm-session-bar .adm-session-username,
body .adm-session-bar .adm-session-logout.adm-session-logout { font-size: 12px; }
body .adm-session-bar .adm-session-role { font-size: 10px; }

/* ============================================================================
   TIPOGRAFIA DAS SIDEBARS RESTRITAS — padrao unico das 3 apps (Inter, px):
   item 14/500 #fff · sub-item 12/500 rgba(255,255,255,.78) · grupo 10/700
   maiusculo rgba(255,255,255,.45) · credito 10/400 rgba(255,255,255,.55).
   ============================================================================ */
.adm-sidebar { font-family: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif; }
.adm-sidebar .adm-nav-item { font-family: inherit; font-size: 14px; font-weight: 500; color: #fff; line-height: 1.3; }
.adm-sidebar .adm-nav-item.active { color: #fff; font-weight: 600; }
.adm-sidebar .adm-nav-subitem { font-family: inherit; font-size: 12px; font-weight: 500; color: rgba(255, 255, 255, 0.78); line-height: 1.35; }
.adm-sidebar .adm-nav-subitem.active { color: #fff; font-weight: 600; }
.adm-sidebar .adm-nav-subgroup-toggle { font-family: inherit; font-size: 10px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: rgba(255, 255, 255, 0.45); }
.adm-sidebar .sidebar-credit { font-family: inherit; font-size: 10px; font-weight: 400; line-height: 1.5; color: rgba(255, 255, 255, 0.55); }

/* Complemento do cabecalho da gestao em 13px (mesmo das outras apps), acima dos 12px da barra de sessao. */
.adm-page-subtitle{font-size:13px}

/* Sidebar da gestao um pouco mais larga: rotulos do menu e complemento da marca sem corte nem quebra. */
.adm-sidebar{width:280px;min-width:280px}

/* Topbar do login: mesma fonte dos menus do cabecalho da home do PLI Reporta
   (fonte do sistema, 13px, 600, maiusculas, espacamento 0.04em). */
body.access-page header.topbar nav a { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }

/* ============================================================================
   MEMORIAL E DOCUMENTACAO DE CALCULOS (sec-rotas)
   Mesmos blocos da pagina "Calcular Rotas em Lote": .lay-view-import,
   .import-section + legend numerada, .batch-templates, .batch-format-rules.
   So o que nao existe la (formulas) ganha classe propria .mem-*.
   ============================================================================ */
.mem-mode-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.mem-mode{margin-top:0}
.mem-mode-head{display:flex;align-items:center;gap:.65rem}
.mem-steps{list-style:decimal;padding-left:1.35rem}
.mem-steps li{margin-bottom:.3rem}
.mem-steps li::marker{font-weight:700;color:var(--azul)}
.mem-eq{margin-top:0;margin-bottom:.75rem}
.mem-eq:last-child{margin-bottom:0}
.mem-formula{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.6rem .85rem;margin-bottom:.6rem;background:#fff;border:1px solid var(--gray-200);border-radius:.5rem;font-family:"Cambria","Times New Roman",serif;font-size:1rem;color:var(--gray-800);overflow-x:auto}
.mem-formula-row{gap:1.5rem}
.mem-group{display:inline-flex;align-items:center;gap:.4rem}
.mem-sym{white-space:nowrap}
.mem-op{color:var(--gray-500)}
.mem-frac{display:inline-flex;flex-direction:column;align-items:center;line-height:1.25}
.mem-num{padding:0 .35rem .1rem;border-bottom:1px solid var(--gray-700);white-space:nowrap}
.mem-den{padding:.1rem .35rem 0;white-space:nowrap}
.mem-table{margin-top:0}
.mem-table .rt-table-wrap{margin:0}
.mem-notes-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.mem-notes-grid .batch-templates{margin-top:0}
