:root{--bg:#f3f7fc;--card:#fff;--border:#d9e4f1;--text:#10243f;--muted:#64748b;--blue:#1d5fd1;--blue-soft:#eaf2ff;--green:#08783c;--green-soft:#e8f8ee;--amber:#9a5b00;--amber-soft:#fff7e6;--red:#9f1239;--red-soft:#fff1f2}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button{cursor:pointer}.auth-hidden,.hidden{display:none!important}
.app-header{position:sticky;top:0;z-index:900;display:flex;align-items:center;gap:18px;padding:12px 22px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--border);backdrop-filter:blur(10px)}.brandline{display:flex;flex-direction:column;min-width:max-content}.brandline b{font-size:21px}.brandline span{font-size:11px;color:var(--muted)}.desktop-nav{display:flex;gap:4px}.nav-btn{border:0;background:transparent;color:#50627b;padding:8px 10px;border-radius:9px;font-weight:800}.nav-btn.active{background:var(--blue-soft);color:#0b4db8}.headstatus{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.header-stats{font-size:11px;color:var(--muted);max-width:330px}.provider{font-size:11px;font-weight:800;padding:6px 8px;border-radius:999px;background:#edf2f7;color:#425466}.provider.ok{background:#e8f5e9;color:#137333}.provider.warn{background:#fff3cd;color:#7a5a00}.provider.error{background:#fee2e2;color:#991b1b}.ghost-btn,.secondary-btn{border:1px solid #cbd8e8;background:#fff;color:#31516f;border-radius:10px;padding:9px 12px;font-weight:800}.primary-btn{border:0;background:#2563eb;color:#fff;border-radius:11px;padding:12px 16px;font-weight:800}.primary-btn:disabled,.secondary-btn:disabled,.ghost-btn:disabled{opacity:.55;cursor:wait}
main{max-width:1180px;margin:auto;padding:22px 22px 90px}.hero,.panel,.status,.card,.admin-card,.history-item,.metric{background:var(--card);border:1px solid var(--border);border-radius:17px}.hero{padding:20px}.hero h1,.section-head h1{font-size:30px;margin:8px 0 5px}.hero p,.section-head p{margin:0;color:var(--muted)}.pill{display:inline-block;background:var(--blue-soft);color:#0b4db8;border-radius:999px;padding:6px 9px;font-size:10px;font-weight:900;letter-spacing:.04em}.search-form{display:grid;grid-template-columns:200px 1fr auto auto;gap:9px;margin-top:16px}.search-form input,.search-form select,.stack-form input,.stack-form select,.user-row input,.user-row select{width:100%;border:1px solid #bdc9d8;background:#fff;border-radius:11px;padding:12px 13px;color:var(--text)}.location-btn{border:1px solid #bfd1ed;background:#f3f7ff;color:#174fa4;border-radius:11px;padding:0 13px;font-weight:800;white-space:nowrap}.geo-summary{margin-top:11px;font-size:12px;color:#536780}.panel{margin-top:16px;overflow:hidden}.maphead{padding:13px 16px;display:flex;justify-content:space-between;gap:12px}.maphead h3,.maphead p{margin:0}.maphead p{font-size:13px;color:var(--muted);margin-top:3px}.maphead a,.links a{color:#1457d9;text-decoration:none;font-weight:800}#map{height:410px}.status{margin-top:16px;padding:17px}.status-head{display:flex;justify-content:space-between;gap:14px}.status-head h2{margin:0 0 5px}.status-head p{margin:0}.mode-badge{background:var(--blue-soft);color:#0b4db8;border-radius:999px;padding:7px 9px;font-size:10px;font-weight:900;white-space:nowrap}.direct-ok{margin-top:9px;background:#ecfdf3;color:#08783c;border:1px solid #bbf7d0;border-radius:9px;padding:8px 10px;font-size:12px;font-weight:800}.google-error{margin-top:10px;padding:10px;border-radius:10px;background:var(--red-soft);border:1px solid #fecdd3;color:#881337}
.priority-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.priority-grid.single{grid-template-columns:1fr}.priority-card{background:#fff;border:2px solid var(--border);border-radius:17px;padding:16px}.priority-card.nearest{border-color:#93c5fd}.priority-card.available,.priority-card.combined{border-color:#86efac}.priority-card.combined{background:linear-gradient(180deg,#fff,#f6fff8)}.priority-label{font-size:10px;font-weight:900;letter-spacing:.05em;color:#475569}.combined .priority-label{color:var(--green)}.priority-main{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:8px}.priority-cto{font-size:23px;font-weight:900}.combined .priority-cto{font-size:26px}.priority-arm{font-size:11px;color:var(--muted);margin-top:2px}.priority-distance{text-align:right;font-size:23px;font-weight:900;color:#0b4db8}.priority-distance small{display:block;font-size:10px;color:var(--muted);margin-top:1px}.priority-meta,.quality-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.oktag,.fulltag,.approxtag,.geo-badge{display:inline-block;border-radius:999px;padding:5px 7px;font-size:10px;font-weight:900}.oktag{background:#dcfce7;color:#166534}.fulltag{background:#fee2e2;color:#991b1b}.approxtag{background:#fff7ed;color:#9a3412}.geo-high{background:#e8f8ee;color:#08783c}.geo-medium{background:#fff7e6;color:#8a5700}.geo-low{background:#fff1f2;color:#9f1239}.priority-delta{margin-top:9px;font-size:11px;font-weight:800;color:#475569}.priority-delta.good{color:var(--green)}.combined-note{padding-top:8px;border-top:1px solid #dcfce7}.result-title{margin:18px 2px 0}.result-title h3{margin:0}.result-title p{margin:4px 0 0;font-size:12px;color:var(--muted)}
.filter-chips{display:flex;gap:7px;overflow-x:auto;padding:10px 1px 1px;scrollbar-width:none}.filter-chip{flex:0 0 auto;border:1px solid #cbd8e8;background:#fff;color:#465a72;border-radius:999px;padding:7px 10px;font-size:11px;font-weight:800}.filter-chip.active{background:#175fc7;border-color:#175fc7;color:#fff}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:11px;margin-top:11px}.card{padding:14px}.card h3{margin:0;font-size:17px}.top,.cto-title{display:flex;align-items:center}.top{justify-content:space-between;gap:10px}.cto-title{gap:6px}.rank{background:var(--blue-soft);color:#0b4db8;border-radius:7px;padding:4px 6px;font-size:10px;font-weight:900}.vagas{border-radius:9px;padding:5px 8px;font-size:11px;font-weight:900}.vagas.has{background:#e7f7ed;color:#08783c}.vagas.none{background:#fee2e2;color:#991b1b}.available-card{border-color:#d5eadc}.full-card{border-color:#efd6d6}.address{font-size:13px;line-height:1.45;margin:8px 0}.route{background:#eef5ff;border-radius:10px;padding:9px;margin-top:9px;display:flex;gap:4px;flex-wrap:wrap;font-size:11px}.road{font-weight:900;color:#0b4db8}.ctoref{font-weight:800;color:#5b6472}.technical-details{margin-top:9px;border-top:1px solid #e6edf5;padding-top:8px}.technical-details summary{cursor:pointer;font-size:11px;font-weight:900;color:#536780}.grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:9px}.label{font-size:10px;color:var(--muted)}.value{font-size:12px;font-weight:800}.approx-warning{margin-top:8px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;border-radius:9px;padding:8px;font-size:10px;font-weight:700}.links{display:flex;gap:10px;flex-wrap:wrap;margin-top:9px;font-size:11px}.routebtn{border:0;background:none;color:#1457d9;padding:0;font-weight:800}.empty-state,.error-box,.setup-note{background:#fff;border:1px dashed #cbd8e8;border-radius:13px;padding:18px;color:var(--muted)}.error-box{border-color:#fecdd3;color:#9f1239}.setup-note{background:#fffaf0;border-style:solid;border-color:#fed7aa}.setup-note p{margin:6px 0}.setup-note code,.warning-box code{background:#f1f5f9;padding:2px 5px;border-radius:5px}
.app-view{padding-top:4px}.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:15px;margin:4px 0 15px}.history-list{display:grid;gap:8px}.history-item{padding:13px 15px;display:flex;justify-content:space-between;gap:15px;align-items:center}.history-item small{display:block;color:var(--muted);margin-top:4px}.history-result{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.history-result span{background:#f1f5f9;border-radius:999px;padding:5px 8px;font-size:11px;font-weight:800}.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}.metric{padding:14px}.metric span{font-size:10px;color:var(--muted);font-weight:900;text-transform:uppercase}.metric b{display:block;font-size:22px;margin-top:4px}.metric small{display:block;color:var(--muted);margin-top:3px;line-height:1.3}.warning-box{background:#fff7ed;border:1px solid #fed7aa;color:#8a4a00;border-radius:12px;padding:12px 14px;margin-bottom:12px;font-size:12px}.admin-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:12px}.admin-card{padding:16px}.admin-card-head h2{margin:0;font-size:18px}.admin-card-head p{margin:4px 0 0;color:var(--muted);font-size:12px}.stack-form{display:grid;gap:9px;margin-top:13px}.stack-form label{font-size:11px;font-weight:900;color:#536780}.stack-form label input,.stack-form label select{margin-top:5px}.form-result{margin-top:10px;font-size:12px;color:var(--green)}.error-text{color:var(--red)}.users-card{margin-top:12px}.users-list{display:grid;gap:8px;margin-top:12px}.user-row{display:grid;grid-template-columns:minmax(190px,1.5fr) 140px 90px minmax(170px,1fr) auto;gap:8px;align-items:end;border-top:1px solid #e7edf4;padding-top:10px}.user-row:first-child{border-top:0;padding-top:0}.user-ident b,.user-ident small{display:block}.user-ident small{font-size:10px;color:var(--muted);margin-top:3px}.user-row label{font-size:10px;color:var(--muted);font-weight:800}.check-label{align-self:center}.check-label input{width:auto}.mobile-nav{display:none}
.login-screen{min-height:100vh;display:grid;place-items:center;padding:22px;background:#f3f7ff}.login-box{width:min(430px,100%);background:#fff;border:1px solid #d8e2f3;border-radius:18px;padding:28px;box-shadow:0 20px 55px rgba(15,41,82,.12)}.login-brand{font-size:26px;font-weight:900}.login-version{font-size:11px;color:#2563eb;font-weight:800;margin:2px 0 22px}.login-box h1{margin:0 0 5px}.login-box p{margin:0 0 20px;color:#526780}.login-form{display:grid;gap:8px}.login-form label{font-weight:800;font-size:12px}.login-form input{width:100%;border:1px solid #bdcce1;border-radius:10px;padding:12px}.login-error{background:var(--red-soft);border:1px solid #fecdd3;color:var(--red);padding:8px 10px;border-radius:9px;font-size:12px}.login-box small{display:block;margin-top:14px;color:#718198}
@media(max-width:900px){.header-stats,.brandline span{display:none}.metrics-grid{grid-template-columns:1fr 1fr}.admin-grid{grid-template-columns:1fr}.user-row{grid-template-columns:1fr 1fr}.user-ident{grid-column:1/-1}}
@media(max-width:720px){body{padding-bottom:68px}.app-header{padding:9px 12px}.desktop-nav,.header-stats,#mapBadge,#routeBadge{display:none}.brandline b{font-size:18px}.headstatus{gap:5px}.user-badge{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ghost-btn{padding:7px 9px}main{padding:12px 10px 80px}.hero{padding:15px}.hero h1,.section-head h1{font-size:23px}.search-form{grid-template-columns:1fr 1fr}.search-form select,.search-form input{grid-column:1/-1}.location-btn,.search-form .primary-btn{height:44px}.geo-summary{font-size:10px}.priority-grid{grid-template-columns:1fr}.priority-card{padding:14px}.priority-cto,.combined .priority-cto{font-size:20px}.priority-distance{font-size:20px}.cards{grid-template-columns:1fr;gap:8px}.card{padding:12px}.grid{grid-template-columns:1fr 1fr}.technical-details:not([open]){padding-bottom:0}.maphead{flex-direction:column}.maphead p{font-size:11px}#map{height:330px}.section-head{align-items:flex-start}.metrics-grid{grid-template-columns:1fr 1fr}.metric{padding:12px}.metric b{font-size:18px}.history-item{align-items:flex-start;flex-direction:column}.history-result{justify-content:flex-start}.user-row{grid-template-columns:1fr}.user-ident{grid-column:auto}.mobile-nav{position:fixed;display:flex;left:0;right:0;bottom:0;z-index:1000;background:rgba(255,255,255,.97);border-top:1px solid var(--border);padding:6px max(8px,env(safe-area-inset-left)) calc(6px + env(safe-area-inset-bottom));justify-content:space-around;backdrop-filter:blur(10px)}.mobile-nav button{border:0;background:transparent;color:#687990;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;font-weight:800;padding:4px 16px;border-radius:9px}.mobile-nav button span{font-size:17px}.mobile-nav button.active{color:#1457d9;background:#eef5ff}.login-box{padding:22px 18px}}

.geo-score{display:inline-block;border-radius:999px;padding:5px 7px;font-size:10px;font-weight:900;background:#eef2ff;color:#3730a3}
.priority-card.reliable{border-color:#fbbf24;background:linear-gradient(180deg,#fff,#fffbeb)}
.reliable .priority-label{color:#92400e}.reliable-grid{margin-top:8px}
.precision-warning{margin-top:12px;border:1px solid #fbbf24;background:#fffbeb;color:#78350f;border-radius:14px;padding:12px 14px}
.precision-warning-title{font-size:11px;font-weight:950;letter-spacing:.035em}.precision-warning p{margin:5px 0;font-size:12px;line-height:1.4}.precision-warning small{display:block;margin-top:5px;color:#92400e}
@media(max-width:720px){.precision-warning{padding:11px}.precision-warning p{font-size:11px}.geo-score{font-size:9px}}


/* =========================================================
   V18.1.5 — REVISÃO DE TIPOGRAFIA, ESPAÇAMENTO E ALINHAMENTO
   Somente visual. Não altera regras, rotas, GEO ou ranking.
   ========================================================= */

:root{
  --font-ui:"Segoe UI Variable","Segoe UI",Inter,Roboto,Arial,sans-serif;
  --radius-lg:16px;
  --radius-md:11px;
  --field-h:46px;
}

html{
  font-size:16px;
}

body{
  font-family:var(--font-ui);
  font-size:14px;
  line-height:1.42;
  letter-spacing:0;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

button,input,select{
  font-family:var(--font-ui);
  line-height:1.2;
}

h1,h2,h3,
.brandline b,
.priority-cto,
.priority-distance,
.metric b{
  letter-spacing:-.018em;
}

p{
  line-height:1.45;
}

/* Cabeçalho */
.app-header{
  min-height:60px;
  padding:10px 22px;
  gap:20px;
}

.brandline{
  justify-content:center;
}

.brandline b{
  font-size:20px;
  line-height:1.05;
  font-weight:800;
}

.brandline span{
  margin-top:3px;
  font-size:10.5px;
  line-height:1.2;
}

.desktop-nav{
  align-items:center;
}

.nav-btn{
  min-height:38px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:8px 12px;
  font-size:13px;
  line-height:1;
  font-weight:750;
}

.headstatus{
  min-height:38px;
}

.provider{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:27px;
  padding:5px 9px;
  font-size:10.5px;
  line-height:1;
}

.header-stats{
  line-height:1.25;
}

/* Área principal */
main{
  max-width:1200px;
  padding:20px 22px 92px;
}

.hero,
.panel,
.status,
.card,
.admin-card,
.history-item,
.metric{
  border-radius:var(--radius-lg);
}

.hero{
  padding:18px 20px;
}

.hero-copy{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
}

.hero h1,
.section-head h1{
  margin:7px 0 4px;
  font-size:28px;
  line-height:1.12;
  font-weight:780;
}

.hero p,
.section-head p{
  font-size:13px;
  line-height:1.4;
}

.pill{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:5px 9px;
  font-size:10px;
  line-height:1;
  font-weight:800;
  letter-spacing:.035em;
}

/* Busca: todos os controles com mesma altura e baseline */
.search-form{
  grid-template-columns:minmax(180px,210px) minmax(260px,1fr) auto auto;
  gap:9px;
  align-items:stretch;
  margin-top:14px;
}

.search-form input,
.search-form select,
.stack-form input,
.stack-form select,
.user-row input,
.user-row select{
  min-height:var(--field-h);
  padding:0 13px;
  border-radius:var(--radius-md);
  font-size:13px;
  line-height:1.2;
}

.location-btn,
.primary-btn,
.ghost-btn,
.secondary-btn{
  min-height:var(--field-h);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1.1;
}

.location-btn{
  padding:0 14px;
  font-size:12.5px;
  font-weight:750;
}

.primary-btn{
  padding:0 17px;
  font-size:13px;
  font-weight:750;
}

.ghost-btn,
.secondary-btn{
  padding:0 13px;
  font-size:12px;
  font-weight:700;
}

/* Mapa */
.panel{
  margin-top:14px;
}

#map{
  height:405px;
}

/* Bloco de resultado */
.status{
  margin-top:14px;
  padding:16px 18px;
}

.status-head{
  align-items:flex-start;
}

.status-head h2{
  margin:0 0 3px;
  font-size:20px;
  line-height:1.15;
  font-weight:780;
}

.status-head p,
.status > p{
  font-size:12.5px;
  line-height:1.4;
}

/* Cartão principal */
.priority-grid{
  gap:11px;
  margin-top:11px;
}

.priority-card{
  padding:15px 17px;
  border-radius:16px;
}

.priority-label{
  font-size:9.5px;
  line-height:1.15;
  font-weight:850;
  letter-spacing:.045em;
}

.priority-main{
  align-items:center;
  min-height:42px;
  margin-top:6px;
}

.priority-cto{
  font-size:22px;
  line-height:1.05;
  font-weight:820;
}

.combined .priority-cto{
  font-size:24px;
}

.priority-arm{
  margin-top:3px;
  font-size:10.5px;
  line-height:1.2;
}

.priority-distance{
  min-width:86px;
  font-size:21px;
  line-height:1;
  font-weight:820;
}

.priority-distance small{
  margin-top:4px;
  font-size:9.5px;
  line-height:1.15;
  font-weight:650;
}

.priority-meta,
.quality-row{
  align-items:center;
  gap:5px;
  margin-top:8px;
}

.oktag,.fulltag,.approxtag,.geo-badge,.geo-score{
  display:inline-flex;
  align-items:center;
  min-height:22px;
  padding:4px 7px;
  font-size:9.5px;
  line-height:1;
  font-weight:800;
}

.priority-delta{
  font-size:10.5px;
  line-height:1.3;
}

/* Título e filtros do ranking */
.result-title{
  margin:17px 2px 0;
}

.result-title h3{
  font-size:18px;
  line-height:1.15;
  font-weight:780;
}

.result-title p{
  font-size:11.5px;
  line-height:1.35;
}

.filter-chips{
  align-items:center;
  gap:6px;
  padding-top:9px;
}

.filter-chip{
  min-height:31px;
  padding:6px 11px;
  font-size:10.5px;
  line-height:1;
  font-weight:750;
}

/* Cards do ranking */
.cards{
  grid-template-columns:repeat(auto-fit,minmax(290px,1fr));
  align-items:stretch;
  gap:10px;
  margin-top:10px;
}

.card{
  display:flex;
  flex-direction:column;
  min-width:0;
  height:100%;
  padding:13px 14px;
}

.top{
  min-height:27px;
  align-items:center;
}

.cto-title{
  min-width:0;
  align-items:center;
}

.card h3{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:16px;
  line-height:1.1;
  font-weight:800;
  letter-spacing:-.012em;
}

.rank{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:25px;
  min-height:23px;
  padding:3px 6px;
  font-size:9.5px;
  line-height:1;
}

.vagas{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:4px 8px;
  font-size:10px;
  line-height:1;
}

.quality-row{
  min-height:24px;
  margin-top:6px;
}

.address{
  min-height:59px;
  margin:7px 0 5px;
  font-size:12.5px;
  line-height:1.42;
}

.address b{
  font-weight:700;
}

.route{
  min-height:40px;
  align-items:center;
  margin-top:6px;
  padding:8px 9px;
  border-radius:9px;
  font-size:10.5px;
  line-height:1.3;
}

.road{
  font-weight:800;
}

.technical-details{
  margin-top:8px;
  padding-top:7px;
}

.technical-details summary{
  min-height:25px;
  display:flex;
  align-items:center;
  font-size:10.5px;
  line-height:1.1;
  font-weight:750;
}

.grid{
  gap:7px 10px;
  padding-top:8px;
}

.label{
  font-size:9.5px;
  line-height:1.15;
}

.value{
  margin-top:2px;
  font-size:11.5px;
  line-height:1.2;
  font-weight:700;
}

.links{
  margin-top:auto;
  padding-top:9px;
  gap:8px 11px;
  align-items:center;
  font-size:10.5px;
  line-height:1.25;
}

.links a,
.routebtn{
  font-weight:700;
}

/* Histórico */
.section-head{
  align-items:center;
  margin:4px 0 14px;
}

.history-item{
  min-height:66px;
  padding:12px 14px;
}

.history-item b{
  font-size:13px;
}

.history-item small{
  font-size:10.5px;
  line-height:1.3;
}

.history-result{
  gap:7px;
}

.history-result span{
  padding:5px 8px;
  font-size:10.5px;
}

/* Admin */
.metrics-grid{
  align-items:stretch;
}

.metric{
  min-height:95px;
  padding:13px 14px;
}

.metric span{
  font-size:9.5px;
  line-height:1;
  letter-spacing:.025em;
}

.metric b{
  margin-top:5px;
  font-size:21px;
  line-height:1.08;
  font-weight:800;
}

.metric small{
  font-size:10.5px;
  line-height:1.35;
}

.admin-grid{
  align-items:stretch;
}

.admin-card{
  padding:15px 16px;
}

.admin-card-head{
  min-height:46px;
}

.admin-card-head h2{
  font-size:17px;
  line-height:1.15;
  font-weight:780;
}

.admin-card-head p{
  margin-top:3px;
  font-size:11.5px;
  line-height:1.35;
}

.stack-form{
  gap:8px;
  margin-top:12px;
}

.stack-form label{
  display:flex;
  flex-direction:column;
  gap:5px;
  font-size:10.5px;
  line-height:1.15;
  font-weight:750;
}

.stack-form label input,
.stack-form label select{
  margin-top:0;
}

.user-row{
  grid-template-columns:minmax(210px,1.55fr) 130px 86px minmax(180px,1fr) auto;
  gap:9px;
  align-items:end;
}

.user-ident{
  align-self:center;
}

.user-ident b{
  font-size:12.5px;
  line-height:1.2;
}

.user-ident small{
  font-size:9.5px;
  line-height:1.25;
}

.user-row label{
  display:flex;
  flex-direction:column;
  gap:5px;
  font-size:9.5px;
  line-height:1.1;
}

.check-label{
  flex-direction:row!important;
  align-items:center;
  justify-content:center;
  min-height:var(--field-h);
}

/* Login */
.login-box{
  font-family:var(--font-ui);
}

.login-brand{
  font-size:25px;
  line-height:1.05;
  font-weight:820;
}

.login-box h1{
  font-size:25px;
  line-height:1.1;
  font-weight:780;
}

.login-form label{
  font-size:11.5px;
  font-weight:700;
}

.login-form input{
  min-height:var(--field-h);
  padding:0 12px;
  font-size:13px;
}

/* Mobile: alinhamento e hierarquia sem apertar o conteúdo */
@media(max-width:900px){
  .user-row{
    grid-template-columns:1fr 1fr;
    align-items:end;
  }
}

@media(max-width:720px){
  body{
    font-size:13px;
  }

  .app-header{
    min-height:54px;
    padding:8px 10px;
  }

  .brandline b{
    font-size:17px;
  }

  main{
    padding:11px 9px 82px;
  }

  .hero{
    padding:14px;
  }

  .hero h1,
  .section-head h1{
    font-size:22px;
  }

  .hero p,
  .section-head p{
    font-size:12px;
  }

  .search-form{
    grid-template-columns:1fr 1fr;
    gap:8px;
    margin-top:12px;
  }

  .search-form input,
  .search-form select{
    grid-column:1/-1;
    min-height:44px;
  }

  .location-btn,
  .search-form .primary-btn{
    min-height:44px;
    padding:0 10px;
    font-size:11.5px;
  }

  .priority-card{
    padding:13px 14px;
  }

  .priority-main{
    min-height:39px;
  }

  .priority-cto,
  .combined .priority-cto{
    font-size:19px;
  }

  .priority-distance{
    font-size:19px;
  }

  .cards{
    grid-template-columns:1fr;
    gap:8px;
  }

  .card{
    padding:12px;
  }

  .address{
    min-height:0;
  }

  .route{
    min-height:0;
  }

  .links{
    margin-top:8px;
    padding-top:0;
  }

  .metric{
    min-height:88px;
  }

  .admin-card-head{
    min-height:0;
  }

  .user-row{
    grid-template-columns:1fr;
  }

  .check-label{
    justify-content:flex-start;
  }

  .mobile-nav button{
    min-width:82px;
    font-size:9.5px;
  }
}


/* =========================================================
   V18.2 — mapa operacional, saúde, custos e ficha da CTO
   ========================================================= */
.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-bottom:1px solid var(--line);background:#fff;min-height:42px}
.map-source{font-size:10.5px;font-weight:750;color:#475569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.map-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:flex-end}.map-actions>span{font-size:9.5px;color:#64748b;font-weight:700;margin-right:2px}
.map-chip{border:1px solid #cbd5e1;background:#fff;color:#334155;border-radius:999px;min-height:28px;padding:5px 9px;font:700 10px var(--font-ui);cursor:pointer}.map-chip.active{background:#e8f0ff;border-color:#93b4f5;color:#0b55c7}.map-chip:hover{border-color:#93b4f5}
.compact-btn{min-height:34px!important;padding:0 10px!important}.compact-select{min-height:36px;border:1px solid #cbd5e1;border-radius:9px;padding:0 9px;background:#fff;font:700 11px var(--font-ui)}
.ops-grid{margin-top:14px}.ops-panel{margin-top:10px}.ops-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.ops-kpis>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:9px;min-width:0}.ops-kpis b{display:block;font-size:17px;line-height:1.05;color:#0f172a}.ops-kpis span{display:block;margin-top:3px;font-size:9.5px;color:#64748b;line-height:1.2}
.health-line{font-size:11px;line-height:1.4;margin-top:9px;color:#334155}.admin-details{margin-top:9px;border-top:1px solid #e2e8f0;padding-top:8px}.admin-details summary{font-size:11px;font-weight:750;cursor:pointer}.alert-list{display:grid;gap:5px;margin-top:7px}.alert-row{display:flex;gap:8px;align-items:flex-start;border-radius:8px;padding:7px 8px;font-size:10.5px;line-height:1.3}.alert-row b{min-width:88px}.alert-row.warn{background:#fff7ed;color:#9a3412}.alert-row.danger{background:#fef2f2;color:#991b1b}.ok-note{margin-top:7px;padding:8px;border-radius:8px;background:#f0fdf4;color:#166534;font-size:10.5px}.muted{color:#64748b!important}
.usage-block{margin-top:10px;display:grid;grid-template-columns:1fr auto;gap:3px 8px;font-size:10.5px}.usage-block>b{color:#334155}.usage-block>span{font-variant-numeric:tabular-nums;color:#475569}.usage-bar{grid-column:1/-1;height:6px;border-radius:999px;background:#e2e8f0;overflow:hidden}.usage-bar i{display:block;height:100%;background:#2563eb;border-radius:999px}.usage-block small{grid-column:1/-1;color:#64748b}
.commercial-card{margin-top:14px}.commercial-kpis{grid-template-columns:repeat(3,minmax(0,1fr));max-width:650px}.commercial-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:14px}.commercial-grid h3{font-size:12px;margin:0 0 7px}.metric-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}.metric-list li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 8px;border:1px solid #e2e8f0;border-radius:8px;font-size:10.5px}.metric-list li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.metric-list li small{color:#64748b}.metric-list li b{white-space:nowrap;color:#0f3f8f}
.cto-click{cursor:pointer;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px}.cto-click:hover{text-decoration-color:#0b55c7;color:#0b55c7}.ficha-btn{font-weight:800!important}
.cto-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:stretch;justify-content:flex-end}.cto-modal.auth-hidden{display:none}.cto-modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.46);backdrop-filter:blur(2px)}.cto-modal-panel{position:relative;width:min(760px,94vw);height:100%;overflow:auto;background:#fff;box-shadow:-18px 0 50px rgba(15,23,42,.22);padding:18px}.cto-modal-head{position:sticky;top:-18px;z-index:2;margin:-18px -18px 14px;padding:16px 18px 12px;background:rgba(255,255,255,.97);border-bottom:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between}.cto-modal-head h2{margin:6px 0 0;font-size:22px}.modal-close{width:38px;height:38px;border:1px solid #cbd5e1;border-radius:50%;background:#fff;font-size:24px;line-height:1;cursor:pointer}.cto-sheet-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(240px,.8fr);gap:16px}.sheet-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.detail-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0}.detail-list>div{border:1px solid #e2e8f0;border-radius:9px;padding:8px;background:#f8fafc}.detail-list .wide{grid-column:1/-1}.detail-list dt{font-size:9px;color:#64748b;text-transform:uppercase;font-weight:750}.detail-list dd{margin:3px 0 0;font-size:11.5px;font-weight:700;overflow-wrap:anywhere}.sheet-section{margin-top:15px}.sheet-section h3{font-size:12px;margin:0 0 7px}.sheet-section h3 small{color:#64748b;font-weight:600}.mini-list{display:grid;gap:5px}.mini-list>div,.mini-list>button{display:block;width:100%;text-align:left;border:1px solid #e2e8f0;background:#fff;border-radius:8px;padding:7px 8px;font:inherit}.mini-list b{display:block;font-size:10.5px;overflow-wrap:anywhere}.mini-list span{display:block;margin-top:2px;font-size:9.5px;color:#64748b}.clickable-list button{cursor:pointer}.clickable-list button:hover{border-color:#93b4f5;background:#f8fbff}
@media(max-width:720px){.map-toolbar{align-items:flex-start;flex-direction:column}.map-actions{justify-content:flex-start}.ops-kpis{grid-template-columns:1fr 1fr}.commercial-grid{grid-template-columns:1fr}.cto-modal-panel{width:100vw}.cto-sheet-grid{grid-template-columns:1fr}.detail-list{grid-template-columns:1fr}.detail-list .wide{grid-column:auto}.commercial-kpis{grid-template-columns:1fr 1fr 1fr}.admin-card-head{gap:8px;align-items:flex-start}}

.feedback-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:12px}.feedback-form-card,.feedback-list-card{min-width:0}.feedback-help{display:block;color:var(--muted);font-size:11px;line-height:1.4}.feedback-file-names{padding:9px 10px;border:1px dashed #c9d6e7;border-radius:10px;color:#536780;font-size:11px;min-height:18px}.feedback-list{display:grid;gap:9px;margin-top:12px}.feedback-item{border:1px solid #dce6f3;border-radius:13px;padding:13px 14px;background:#fbfdff}.feedback-item-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.feedback-item h3{margin:5px 0 0;font-size:15px;color:var(--text)}.feedback-item p{margin:10px 0 7px;white-space:pre-wrap;line-height:1.45;color:#334155;font-size:12px}.feedback-item small{color:var(--muted);font-size:10px}.feedback-type{display:inline-block;color:#1457d9;background:#eef5ff;border-radius:999px;padding:4px 7px;font-size:9px;font-weight:900}.feedback-status{display:inline-block;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:900;white-space:nowrap}.status-recebido{background:#eef5ff;color:#1457d9}.status-analise{background:#fff7ed;color:#9a4d00}.status-resolvido{background:#ecfdf3;color:#08783c}.feedback-status-control{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:10px;font-weight:800}.feedback-status-control select{border:1px solid #bdc9d8;border-radius:8px;background:#fff;padding:5px 7px;color:var(--text);font-size:10px}.feedback-attachments{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.feedback-attachment{display:inline-flex;align-items:center;max-width:100%;padding:6px 8px;border-radius:8px;background:#f1f5f9;color:#1457d9;text-decoration:none;font-size:10px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:900px){.feedback-layout{grid-template-columns:1fr}}
@media(max-width:720px){.feedback-item-head{flex-direction:column}.feedback-status-control{align-self:flex-start}.feedback-form-card,.feedback-list-card{padding:13px}.feedback-item{padding:12px}}
.route-provider{display:block;margin-top:2px;font-size:8.8px!important;font-weight:650;color:#64748b}


/* V18.2.4 — CTO cadastrada + alternativas de instalação */
.priority-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.priority-card.registered{border-color:#60a5fa;background:linear-gradient(180deg,#fff,#f5f9ff)}
.priority-card.alternative,.priority-card.alternative-available{border-color:#86efac;background:linear-gradient(180deg,#fff,#f7fff9)}
.priority-card.registered .priority-label{color:#1d4ed8}
.priority-card.alternative .priority-label,.priority-card.alternative-available .priority-label{color:#15803d}
.role-badge{display:inline-flex;align-items:center;min-height:22px;padding:4px 7px;border-radius:999px;font-size:9.5px;line-height:1;font-weight:850}
.registered-role{background:#dbeafe;color:#1d4ed8}
.alternative-role{background:#dcfce7;color:#166534}
.same-arm-role{background:#f1f5f9;color:#475569}
.registered-note{color:#1d4ed8}
.alternative-note{color:#166534}
.selection-policy{margin-top:10px;padding:10px 12px;border:1px solid #dbe4ef;border-radius:12px;background:#f8fafc;color:#475569;font-size:11px;line-height:1.45}
.card.registered-card{border-width:2px;border-color:#93c5fd}
.card.alternative-card:not(.registered-card){border-color:#bbf7d0}
@media(max-width:980px){.priority-grid.three{grid-template-columns:1fr 1fr}.priority-grid.three .priority-card:last-child{grid-column:1/-1}}
@media(max-width:720px){.priority-grid.three{grid-template-columns:1fr}.priority-grid.three .priority-card:last-child{grid-column:auto}.selection-policy{font-size:10.5px}}

/* V18.2.4 — múltiplas CTOs cadastradas por endereço */
.registered-section{margin-top:12px}.registered-section-head{margin:14px 2px 7px}.registered-section-head h3{margin:0;font-size:15px}.registered-section-head p{margin:4px 0 0;color:var(--muted);font-size:11px}.registered-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.registered-grid.single{grid-template-columns:minmax(0,1fr)}.priority-card.registered-nearest{border-color:#2563eb;box-shadow:0 0 0 2px rgba(37,99,235,.08)}.nearest-registered-note{color:#1d4ed8}.alternatives-head{margin-top:18px}.alternatives-head h3{color:#166534}@media(max-width:720px){.registered-grid{grid-template-columns:1fr}.registered-section-head{margin-top:12px}}

/* V18.2.5 — referência cadastral não é usada como coordenada física */
.muted{opacity:.7;font-size:.9em}

/* Consulta por coordenada: a alternativa com vaga só aparece se a GEO mais próxima estiver lotada. */
.coordinate-route-tabs{margin-top:12px;padding:12px 13px;border:1px solid #cbdcf4;border-radius:13px;background:#f8fbff}.coordinate-route-tabs-title{font-size:10px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;color:#31516f}.coordinate-route-tab-list{display:flex;gap:8px;margin-top:8px;overflow-x:auto}.coordinate-route-tab{flex:1 0 min(230px,80%);display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid #cbd8e8;border-radius:10px;background:#fff;color:#475569;text-align:left;font-size:11px;font-weight:850}.coordinate-route-tab span{line-height:1.25}.coordinate-route-tab small{flex:0 0 auto;color:#64748b;font-size:10px;font-weight:800;white-space:nowrap}.coordinate-route-tab.active{border-color:#2563eb;background:#eaf2ff;color:#0b4db8;box-shadow:0 0 0 2px rgba(37,99,235,.08)}.coordinate-route-tab:hover{border-color:#6696e8}@media(max-width:720px){.coordinate-route-tab-list{flex-direction:column;overflow:visible}.coordinate-route-tab{flex-basis:auto;width:100%}}

/* No vendedor, a borda comunica somente disponibilidade. */
body[data-role="vendedor"] .card.available-card{border-color:#d5eadc!important}
body[data-role="vendedor"] .card.full-card{border-color:#efd6d6!important}

