:root{
  --navy:#042569; --navy-dark:#031b4d;
  --green:#4ab90d; --green-dark:#3a9309;
  --amber:#e8a33d; --amber-dark:#c8801a;
  --red:#d63a3a; --red-dark:#b32c2c;
  --blue:#2f80ed; --blue-dark:#1c5fc2;
  --ink:#0f1b2d; --muted:#5c6b80; --bg:#ffffff; --panel:#f4f7fb; --line:#e6ebf2; --radius:18px;
}

.alert-box{
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  background:#fdeceb; border:1px solid #f3c6c3; border-left:5px solid var(--red);
  border-radius:var(--radius); padding:14px 18px; margin:0 0 16px;
}
.alert-box p{margin:0; flex:1; min-width:220px;}
.alert-box strong{color:var(--red-dark);}

*{box-sizing:border-box;}
[hidden]{display:none !important;}
body{
  margin:0; font-family:'Segoe UI',system-ui,-apple-system,sans-serif;
  background:var(--panel); color:var(--ink);
}
a{color:var(--blue); text-decoration:none;}
a:hover{text-decoration:underline;}
.skip-link{position:fixed;left:10px;top:8px;z-index:1000;padding:10px 14px;background:#fff;color:var(--navy);border:2px solid var(--navy);box-shadow:0 2px 8px rgba(0,0,0,.2);transform:translateY(-160%);transition:transform .15s ease;}
.skip-link:focus{transform:translateY(0);text-decoration:none;}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;}}

.wrap{max-width:1600px; margin:0 auto; padding:0 24px;}

header.app-header{
  position:sticky; top:0; z-index:10; background:var(--navy); color:#fff;
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 24px;
}
header.app-header .brand{color:#fff; font-weight:700; font-size:1.1rem;}
header.app-header nav{display:flex; gap:18px; align-items:center;}
header.app-header nav a{color:#fff; opacity:.85;}
header.app-header nav a.active{opacity:1; font-weight:600; border-bottom:2px solid #fff;}
#navToggle{display:none; background:none; border:none; color:#fff; font-size:1.4rem; cursor:pointer;}

.account-menu{position:relative;}
#accountToggle{background:none; border:none; color:#fff; font-size:1.3rem; cursor:pointer; opacity:.85; line-height:1; padding:4px 6px;}
#accountToggle:hover{opacity:1;}
.account-dropdown{
  position:absolute; top:calc(100% + 10px); right:0; background:#fff; border-radius:12px;
  box-shadow:0 4px 18px rgba(15,27,45,.18); padding:8px; display:flex; flex-direction:column;
  min-width:180px; z-index:50;
}
.account-dropdown a{color:var(--ink); opacity:1; padding:9px 12px; border-radius:8px; font-size:.9rem;}
.account-dropdown a:hover{background:var(--panel); text-decoration:none;}
.account-dropdown a.active{font-weight:600; border-bottom:none; background:var(--panel);}

@media (max-width:720px){
  header.app-header nav{
    display:none; position:absolute; top:100%; left:0; right:0;
    background:var(--navy-dark); flex-direction:column; align-items:flex-start; padding:12px 24px; gap:12px;
  }
  header.app-header nav.open{display:flex;}
  #navToggle{display:block;}
  .account-dropdown{right:auto; left:0;}
  .wrap{padding:0 12px;}
  .form-card, .card{padding:16px;}
}

main{padding:32px 0 60px;}

.page-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; gap:12px; flex-wrap:wrap;}
.page-head h1{margin:0; font-size:1.5rem;}
.breadcrumb{color:var(--muted); font-size:.9rem; margin-bottom:6px;}
.breadcrumb a{color:var(--muted);}

.flash{padding:12px 16px; border-radius:12px; margin-bottom:20px; font-size:.95rem;}
.flash-error{background:rgba(214,58,58,.1); color:var(--red-dark); border:1px solid rgba(214,58,58,.3);}
/* Sucesso vira um toast fixo (visível mesmo se a página já tiver sido rolada) e some sozinho —
   erro continua fixo no fluxo normal da página, porque precisa que o usuário realmente leia e aja. */
.flash-success{
  background:#2f8f1f; color:#fff; border:none; box-shadow:0 6px 20px rgba(0,0,0,.18);
  position:fixed; top:18px; right:18px; z-index:1000; max-width:380px; margin:0;
  animation:flash-toast-in .25s ease-out;
}
.flash-success.flash-saindo{animation:flash-toast-out .4s ease-in forwards;}
@keyframes flash-toast-in{from{opacity:0;transform:translateY(-12px);}to{opacity:1;transform:translateY(0);}}
@keyframes flash-toast-out{from{opacity:1;transform:translateY(0);}to{opacity:0;transform:translateY(-12px);}}
@media (max-width:640px){.flash-success{left:12px;right:12px;top:12px;max-width:none;}}

.card-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:18px;}
.card{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:18px; display:flex; flex-direction:column; gap:8px;
}
.card h3{margin:0; font-size:15px; font-weight:600;}
.card .meta{color:var(--muted); font-size:.85rem;}

.pill{display:inline-block; padding:3px 12px; border-radius:999px; font-size:.72rem; font-weight:600; text-transform:uppercase; letter-spacing:.3px;}
.pill-ativo{background:rgba(74,185,13,.14); color:var(--green-dark);}
.pill-inativo{background:rgba(92,107,128,.14); color:var(--muted);}
.pill-fonte{background:rgba(30,90,168,.12); color:#1e5aa8; cursor:help;}

.btn{
  display:inline-flex; align-items:center; gap:6px; border:none; border-radius:999px;
  padding:10px 20px; font-size:.9rem; font-weight:600; cursor:pointer; text-decoration:none;
}
.btn-primary{background:var(--green); color:#fff;}
.btn-primary:hover{background:var(--green-dark);}
.btn-navy{background:var(--navy); color:#fff;}
.btn-navy:hover{background:var(--navy-dark);}
.btn-outline{background:#fff; color:var(--navy); border:1px solid var(--line);}
.btn-danger{background:var(--red); color:#fff;}
.btn-danger:hover{background:var(--red-dark);}
.btn-sm{padding:6px 14px; font-size:.8rem;}

.search-box{
  width:100%; max-width:320px; padding:10px 12px; border:1px solid var(--line); border-radius:10px;
  font-size:.95rem; font-family:inherit; margin-bottom:16px;
}
.search-box:focus{outline:2px solid var(--green); border-color:transparent;}
table.data-table{width:100%; border-collapse:separate; border-spacing:0; background:#fff; border-radius:var(--radius); overflow:hidden;}
table.data-table th, table.data-table td{padding:12px 16px; text-align:left; border-bottom:1px solid var(--line); font-size:.9rem;}
table.data-table th{background:var(--panel); color:var(--muted); font-weight:600; font-size:.8rem; text-transform:uppercase;}
table.data-table td.actions{white-space:nowrap;}
table.data-table td.actions>*{vertical-align:middle;}
table.data-table td.actions>*+*{margin-left:8px;}
table.data-table tr:last-child td{border-bottom:none;}

.tipo-composicao-toggle{
  border:none; background:transparent; color:var(--navy, #042569); font-weight:600; font-size:.85rem;
  cursor:pointer; padding:2px 0; display:inline-flex; align-items:center; gap:3px;
}
.tipo-composicao-toggle:hover{text-decoration:underline;}
.tipo-composicao-toggle .chevron{font-size:.75em; transition:transform .15s;}
.tipo-composicao-toggle.aberto .chevron{transform:rotate(180deg);}

table.data-table tr[data-nivel="0"] td:first-child{box-shadow:inset 3px 0 0 var(--navy, #042569);}
table.data-table tr[data-nivel="1"] td:first-child{box-shadow:inset 3px 0 0 #2f80ed;}
table.data-table tr[data-nivel="2"] td:first-child{box-shadow:inset 3px 0 0 #4ab90d;}
table.data-table tr[data-nivel="3"] td:first-child{box-shadow:inset 3px 0 0 #d9a721;}
table.data-table tr[data-nivel="4"] td:first-child{box-shadow:inset 3px 0 0 #c0392b;}

.row-toggle{
  display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; margin-right:4px;
  border:none; background:transparent; color:var(--muted); font-size:.7rem; cursor:pointer; vertical-align:middle;
}
.row-toggle:hover{color:var(--navy, #042569);}
.linha-salvando{opacity:.55;}
.linha-salvo-ok{transition:background-color .25s ease;}
.linha-salvo-ok.pisca{background-color:#eaf7e6;}
.erro-inline-form{color:var(--red-dark);font-size:.78rem;margin-top:4px;font-weight:600;}
.form-enviando{cursor:wait;}
.form-enviando button[type="submit"],.form-enviando input[type="submit"]{cursor:wait;}
.form-feedback-live{position:fixed;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.busca-status,.quick-result-status{padding:12px;color:var(--muted);font-size:13px;background:#f8fafc;}
.busca-status.is-loading,.quick-result-status.is-loading{background:#eef6ff;color:#1c5fc2;}
.busca-status.is-loading::before,.quick-result-status.is-loading::before{content:'⏳ ';}
.busca-status.is-error,.quick-result-status.is-error{background:#fff0f0;color:var(--red-dark);}

.form-card{background:#fff; border-radius:var(--radius); padding:26px; max-width:560px;}

.table-scroll{overflow-x:auto;}
.table-scroll table.data-table thead th{position:sticky;top:0;z-index:2;box-shadow:0 1px 0 var(--line);}
.filter-form{align-items:center;}
.filter-form select{min-height:36px;border:1px solid #d3d9dd;background:#fff;padding:7px 8px;font:inherit;color:#4a525a;}
.filter-form .list-search{margin-bottom:0;}
.result-summary{color:var(--muted);font-size:.85rem;margin:0 0 9px;padding:7px 10px;background:#f8fafc;border-left:3px solid var(--blue);}
body.precos-ocultos .col-preco{visibility:hidden;}
.field{margin-bottom:16px;}
.field label{display:block; font-weight:600; font-size:.85rem; margin-bottom:6px;}
.label-required::after{content:' *';color:var(--red);font-weight:700;}
.field input, .field select, .field textarea{
  width:100%; padding:10px 12px; border:1px solid var(--line); border-radius:10px;
  font-size:.95rem; font-family:inherit;
}
.field input:focus, .field select:focus, .field textarea:focus{outline:2px solid var(--green); border-color:transparent;}
.field .hint{color:var(--muted); font-size:.8rem; margin-top:4px;}
.field-invalid input,.field-invalid select,.field-invalid textarea{border-color:var(--red)!important;box-shadow:0 0 0 1px rgba(214,58,58,.16);}
.form-field-error{margin-top:5px;color:var(--red-dark);font-size:.78rem;font-weight:600;}
.form-confirmacao .btn-danger::before{content:'⚠ ';font-size:.9em;}

.empty-state{padding:40px; text-align:center; color:var(--muted); background:#fff; border-radius:var(--radius);}

summary.btn{list-style:none;}
summary.btn::-webkit-details-marker{display:none;}
summary.btn::after{content:'▾'; margin-left:2px; font-size:.75em; transition:transform .15s;}
details[open] > summary.btn::after{transform:rotate(180deg);}
.add-toggles{display:flex; gap:10px; flex-wrap:wrap; align-items:flex-start;}

.add-bloco{background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:10px 12px; margin-bottom:8px;}
.add-bloco-titulo{font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--muted); margin-bottom:8px;}
.add-bloco details[open]{margin-top:10px; padding-top:10px; border-top:1px dashed var(--line);}
.add-bloco:last-child{margin-bottom:0;}
.mais-usados-titulo{font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--muted); margin-bottom:6px;}
.mais-usados-titulo::before{content:'★ '; color:var(--green, #4ab90d);}

.login-wrap{max-width:380px; margin:80px auto 0;}
.login-wrap .form-card{max-width:none;}

/* Interface inspirada no S Orçamentos mostrado no vídeo */
:root{
  --navy:#042569; --navy-dark:#031b4d; --green:#4ab90d; --green-dark:#3a9309;
  --blue:#2f80ed; --blue-dark:#1c5fc2; --ink:#0f1b2d; --muted:#5c6b80;
  --panel:#f4f5f6; --line:#dfe3e6; --radius:2px; --sidebar:220px; --header:52px; --breadcrumb-h:38px;
}
body.app-shell{background:#f4f5f6;color:var(--ink);font-family:'Segoe UI',system-ui,-apple-system,Arial,sans-serif;font-size:14px;}
body.app-shell .wrap{max-width:none;margin:0;padding:16px 18px;}
body.app-shell main{margin-left:var(--sidebar);padding:var(--header) 0 40px;min-height:100vh;}

header.app-header{
  position:fixed;inset:0 0 auto 0;height:var(--header);z-index:100;background:#fff;color:#555;
  padding:0 16px 0 0;border-bottom:1px solid #d8dcdf;box-shadow:0 1px 2px rgba(0,0,0,.06);
}
header.app-header .brand{
  width:var(--sidebar);height:var(--header);padding:0 14px;color:var(--navy);background:#fff;
  display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;
}
.brand-mark{height:34px;width:auto;max-width:120px;object-fit:contain;}
header.app-header .brand span:last-child{color:var(--navy);line-height:1.05;}
header.app-header .brand small{display:block;color:var(--muted);font-size:9px;font-weight:500;letter-spacing:.2px;}
.license-note{margin-right:auto;font-size:12px;color:#575e65;}
.header-user{position:relative;display:flex;align-items:center;gap:9px;}
.header-user-copy{font-size:12px;text-align:right;line-height:1.2;color:#555;}
.header-user-copy small{display:block;color:#828a91;text-transform:capitalize;}
#accountToggle{color:#69717a;border-left:1px solid #e1e4e6;padding:8px 2px 8px 13px;font-size:18px;}
.account-dropdown{top:42px;border-radius:2px;box-shadow:0 4px 12px rgba(0,0,0,.2);}

.app-sidebar{
  position:fixed;left:0;top:var(--header);bottom:0;width:var(--sidebar);z-index:90;
  background:var(--navy);overflow-y:auto;color:#d7dfef;
}
.app-sidebar nav{display:flex;flex-direction:column;padding:7px 0;}
.app-sidebar a{
  min-height:35px;padding:9px 15px;color:#cfd4d8;display:flex;align-items:center;gap:10px;
  border-left:3px solid transparent;font-size:13px;
}
.app-sidebar a:hover{background:#0b347a;color:#fff;text-decoration:none;}
.app-sidebar a.active{background:var(--green);color:#fff;border-left-color:#fff;font-weight:600;}
.nav-icon{width:17px;text-align:center;color:#aab1b7;font-size:14px;}
.app-sidebar a.active .nav-icon{color:#fff;}
.nav-section{padding:12px 15px 5px;color:#bcc5ce;font-size:11px;text-transform:uppercase;letter-spacing:.5px;}
#navToggle{display:none;color:#555;}

body.app-shell main .page-head{
  min-height:44px;margin:0 -18px 16px;padding:9px 17px;background:var(--navy);color:#fff;
  align-items:center;
}
body.app-shell main .page-head:first-child,body.app-shell .wrap>.breadcrumb:first-child,body.app-shell .wrap>.flash:first-child{margin-top:-16px;}
body.app-shell .page-head h1{font-size:22px;font-weight:600;}
body.app-shell .breadcrumb{
  margin:0 0 14px;color:var(--muted);font-size:12px;
  /* fixo logo abaixo do cabeçalho — em página comprida (planilha de orçamento, por ex.),
     o caminho de volta não pode exigir rolar até o topo pra achar. */
  position:sticky;top:var(--header);z-index:5;background:#fff;
  padding:10px 0;border-bottom:1px solid var(--line);
}
body.app-shell .breadcrumb a{color:var(--muted);}
body.app-shell .card,body.app-shell .form-card,body.app-shell .empty-state{
  background:#fff;border:1px solid #e0e3e5;border-radius:2px;box-shadow:0 1px 2px rgba(0,0,0,.04);
}
body.app-shell .form-card{padding:18px;}
body.app-shell .field{margin-bottom:13px;}
body.app-shell .field label{font-size:12px;color:#4a525a;font-weight:600;}
body.app-shell .field input,body.app-shell .field select,body.app-shell .field textarea{
  border:0;border-bottom:1px solid #cfd5d9;border-radius:0;padding:8px 4px;background:#fff;font-size:14px;
}
body.app-shell .field input:focus,body.app-shell .field select:focus,body.app-shell .field textarea:focus{
  outline:none;border-color:var(--blue);box-shadow:0 1px 0 var(--blue);
}
body.app-shell .field .hint{font-size:12px;color:#7c848c;}
body.app-shell .btn{border-radius:999px;padding:9px 16px;font-size:12.5px;text-transform:none;box-shadow:none;}
body.app-shell .btn.btn-sm{padding:5px 12px;font-size:11px;}
body.app-shell .btn-primary{background:var(--green);}
body.app-shell .btn-primary:hover{background:var(--green-dark);text-decoration:none;}
body.app-shell .btn-outline{border:1px solid #d7dfeb;color:var(--navy);background:#fff;}
body.app-shell .btn-danger{background:#df5a4d;}
body.app-shell .pill{border-radius:2px;padding:3px 7px;font-size:10.5px;}
body.app-shell table.data-table{border-radius:2px;border:1px solid #dfe3e5;}
body.app-shell table.data-table th{background:#f8f9fa;color:#555e66;font-size:11.5px;padding:10px 11px;}
body.app-shell table.data-table td{padding:10px 11px;font-size:13px;background:#fff;}
body.app-shell table.data-table tbody tr:hover td{background:#f8fcfd;}
.budget-toolbar{display:flex;gap:5px;flex-wrap:wrap;align-items:center;}
.budget-toolbar .btn{padding:7px 10px;}
.budget-units-section{scroll-margin-top:calc(var(--header) + 12px);}
#adicionar-servico-rapido{scroll-margin-top:calc(var(--header) + 12px);}
.budget-summary{background:#fff;border:1px solid var(--line);padding:9px 12px;margin:0 0 12px;font-size:13px;}
.list-tools{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.list-search{border:1px solid #d3d9dd;background:#fff;padding:7px 10px;width:220px;font-size:13px;}
.list-filter{border:1px solid #d3d9dd;background:#fff;padding:7px 8px;font-size:13px;color:#4a525a;}
.modal-card{max-width:560px;margin:20px auto 0;}
.modal-card-title{margin:-18px -18px 16px;padding:11px 14px;background:var(--navy);color:#fff;font-size:14px;font-weight:400;}
.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;}
.quick-builder{background:#fff;border:1px solid var(--line);padding:14px;margin:0 0 14px;}
.quick-builder-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px;}
.quick-builder-head h2{margin:0;font-size:18px;font-weight:600;color:var(--navy);}
.quick-search-row{display:grid;grid-template-columns:170px 190px 1fr;gap:8px;}
.quick-search-row select,.quick-search-row input{padding:9px 11px;border:1px solid #d7dfeb;border-radius:8px;font:inherit;background:#fff;}
.quick-destination-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(240px,2fr);gap:8px;margin:0 0 8px;}
.quick-destination-row label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:11.5px;font-weight:600;}
.quick-destination-row select{padding:9px 11px;border:1px solid #d7dfeb;border-radius:8px;font:inherit;background:#fff;color:var(--ink);}
.quick-results{margin-top:8px;border:1px solid var(--line);max-height:330px;overflow:auto;display:none;}
.quick-result{display:grid;grid-template-columns:1fr 110px 105px;gap:10px;padding:10px;border-bottom:1px solid var(--line);align-items:center;}
.quick-result:last-child{border-bottom:0;}.quick-result:hover{background:#f7faff;}
.quick-result-title{font-weight:600;color:var(--ink);}.quick-result-meta{font-size:12px;color:var(--muted);margin-top:3px;}
.quick-result-price{text-align:right;font-weight:700;color:var(--navy);}
.source-warning{padding:9px 11px;background:#fff7df;border:1px solid #f0d48a;color:#785d14;margin:0 0 12px;font-size:12.5px;}
.ultima-alteracao-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:#f4f6f8;color:#4a525a;font-size:12.5px;margin:0 0 12px;}
.ultima-alteracao-badge strong{color:var(--ink);font-weight:600;}
.proposal-link{background:#fff!important;color:var(--navy)!important;}
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 14px}.kpi{background:#fff;border:1px solid var(--line);border-left:4px solid var(--green);padding:12px 14px;min-height:76px}.kpi small{display:block;color:var(--muted);font-size:10.5px;letter-spacing:.5px;margin-bottom:6px}.kpi strong{display:block;color:var(--navy);font-size:19px;line-height:1.15}.kpi span{display:block;color:var(--muted);font-size:11.5px;margin-top:4px}.kpi .negative,.negative{color:var(--red)}.kpi-alerta{border-left-color:var(--red)}
.dashboard-priorities{margin:0 0 20px;padding:14px;border:1px solid var(--line);background:#fff}.dashboard-section-head h2{margin:0;color:var(--navy);font-size:15px}.dashboard-section-head p{margin:4px 0 12px;color:var(--muted);font-size:12px}.dashboard-priority-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}.dashboard-priority{display:block;padding:12px;border:1px solid var(--line);border-left:4px solid var(--blue);color:var(--ink);background:#f8fafc}.dashboard-priority:hover{text-decoration:none;border-color:var(--blue);background:#f2f7ff}.dashboard-priority strong{display:block;color:var(--navy);font-size:22px;line-height:1}.dashboard-priority span{display:block;margin-top:6px;font-size:12.5px;font-weight:600}.dashboard-priority small{display:block;margin-top:8px;color:var(--muted);font-size:11.5px}.dashboard-priority.is-warning{border-left-color:#d99b00;background:#fffaf0}.dashboard-priority.is-danger{border-left-color:var(--red);background:#fff5f5}.dashboard-priority.is-info{border-left-color:var(--blue)}.dashboard-all-clear{margin:0;padding:11px 12px;background:#effbea;color:#397b16;font-size:13px}
.total-unidade-destaque{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--navy);color:#fff;border-radius:var(--radius);padding:16px 22px;margin:0 0 20px}
.total-unidade-label{font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;opacity:.85}
.total-unidade-valor{font-size:1.6rem;font-weight:700;margin-right:auto}
.total-unidade-destaque .btn{background:#fff;color:var(--navy);border-color:#fff}
.planilha-resumo{position:sticky;top:calc(var(--header) + var(--breadcrumb-h));z-index:8;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:-4px 0 16px;background:#dfe5ea;border:1px solid #dfe5ea;box-shadow:0 2px 5px rgba(15,27,45,.08)}
.planilha-resumo span{min-width:0;padding:10px 12px;background:#fff}.planilha-resumo small{display:block;color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.35px}.planilha-resumo strong{display:block;margin-top:4px;color:var(--navy);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conferencia-planilha{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:-4px 0 16px;padding:13px 15px;border:1px solid var(--line);border-left:4px solid var(--green);background:#f7fbf4}.conferencia-planilha.tem-pendencia{border-left-color:var(--warning,#d49a00);background:#fff9ed}.conferencia-planilha h2{margin:0;color:var(--navy);font-size:15px}.conferencia-planilha p{margin:4px 0 0;color:var(--muted);font-size:13px}.conferencia-acoes{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.conferencia-planilha.tem-pendencia .conferencia-acoes .btn{border-color:#d49a00;color:#725000;background:#fff}
.obras-resumo{display:grid;grid-template-columns:repeat(3,minmax(0,160px));gap:1px;width:max-content;max-width:100%;margin:-4px 0 14px;background:#dfe5ea;border:1px solid #dfe5ea}.obras-resumo span{padding:10px 14px;background:#fff}.obras-resumo small{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.obras-resumo strong{display:block;margin-top:3px;color:var(--navy);font-size:19px}.obras-filtros{margin-bottom:14px}.obra-orcamentos-link{color:var(--navy);font-weight:700;text-decoration:none}.obra-orcamentos-link:hover{text-decoration:underline}
.composicoes-resumo{display:grid;grid-template-columns:repeat(3,minmax(0,160px));gap:1px;width:max-content;max-width:100%;margin:14px 0;background:#dfe5ea;border:1px solid #dfe5ea}.composicoes-resumo span{padding:10px 14px;background:#fff}.composicoes-resumo small{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.composicoes-resumo strong{display:block;margin-top:3px;color:var(--navy);font-size:19px}.valor-pendente{color:var(--danger,#b42318);font-weight:700}
.importacoes-resumo{display:grid;grid-template-columns:repeat(3,minmax(0,160px));gap:1px;width:max-content;max-width:100%;margin:-4px 0 14px;background:#dfe5ea;border:1px solid #dfe5ea}.importacoes-resumo span{padding:10px 14px;background:#fff}.importacoes-resumo small{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.importacoes-resumo strong{display:block;margin-top:3px;color:var(--navy);font-size:19px}.importacoes-filtros{margin-bottom:14px}.importacao-orientacao{margin:0 0 18px;padding:15px 17px;border:1px solid #bfd5f0;border-left:4px solid var(--blue);background:#f4f9ff}.importacao-orientacao h2{margin:0;color:var(--navy);font-size:16px}.importacao-orientacao ol{margin:8px 0;padding-left:22px}.importacao-orientacao li{margin:4px 0}.importacao-orientacao p{margin:9px 0 0;color:var(--muted);font-size:13px}
.notificacoes-resumo{display:grid;grid-template-columns:repeat(3,minmax(0,160px));gap:1px;width:max-content;max-width:100%;margin:-4px 0 14px;background:#dfe5ea;border:1px solid #dfe5ea}.notificacoes-resumo span{padding:10px 14px;background:#fff}.notificacoes-resumo small{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.notificacoes-resumo strong{display:block;margin-top:3px;color:var(--navy);font-size:19px}.notificacoes-filtros{margin-bottom:14px}.variacao-alta{color:var(--danger,#b42318);font-weight:700}.variacao-baixa{color:#137333;font-weight:700}
.composicao-resumo{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:-4px 0 14px;background:#dfe5ea;border:1px solid #dfe5ea}.composicao-resumo span{min-width:0;padding:10px 12px;background:#fff}.composicao-resumo small{display:block;color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em}.composicao-resumo strong{display:block;margin-top:4px;color:var(--navy);font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composicao-alerta{margin:0 0 12px;padding:12px 14px;border:1px solid #efd09a;border-left:4px solid var(--warning,#d49a00);background:#fff9ed;color:#725000}.composicao-alerta strong{display:block;margin-bottom:3px}.composicao-orientacao{margin:0 0 16px;padding:10px 13px;border-left:4px solid var(--blue);background:#f4f9ff;color:var(--muted);font-size:13px}.composicao-grupo td{padding:8px 10px!important;background:#f1f5fa!important;color:var(--navy);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.composicao-grupo span{margin-left:6px;color:var(--muted);font-weight:600}
.checkbox-filter{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 4px;color:var(--ink);font-size:13px}.checkbox-filter input{width:auto}.form-intro{margin:-6px 0 18px;color:var(--muted)}.form-section-title{margin:22px 0 10px;padding-top:14px;border-top:1px solid var(--line);color:var(--navy);font-size:15px}
.planilha-filtros{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}.planilha-filtros select{min-height:38px;padding:7px 10px;border:1px solid #d3d9dd;background:#fff;font:inherit;color:var(--ink)}
.etapa-nav{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:14px;padding:8px 10px;background:var(--panel);border-radius:8px;}
.etapa-nav-label{color:var(--muted);font-size:.78rem;font-weight:600;text-transform:uppercase;margin-right:2px;}
.etapa-nav-chip{background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:.8rem;color:var(--navy);cursor:pointer;white-space:nowrap;}
.etapa-nav-chip:hover{border-color:var(--green);background:#f6fff1;}
body.app-shell #tabelaOrcamento tr[data-tipo="capitulo"] td:first-child{box-shadow:inset 4px 0 0 var(--navy)}
body.app-shell #tabelaOrcamento tr[data-tipo="item"] td:first-child{box-shadow:inset 4px 0 0 var(--blue)}
body.app-shell #tabelaOrcamento tr[data-tipo="componente"] td:first-child{box-shadow:inset 4px 0 0 var(--green)}
body.app-shell #tabelaOrcamento tr[data-tipo="insumo"] td:first-child{box-shadow:inset 4px 0 0 var(--amber)}
.version-current{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--line);border-left:5px solid var(--green);padding:16px;margin-bottom:18px}.version-current small{display:block;color:var(--muted);font-size:11.5px}.version-current strong{display:block;color:var(--navy);font-size:19px;margin-top:4px}.section-title,.form-section-title{font-size:15px;color:var(--navy);border-bottom:1px solid var(--line);padding-bottom:7px;margin:18px 0 12px}.parameter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 16px}.hint-box{padding:10px 12px;background:#f5f8fc;border:1px solid var(--line);color:var(--muted);font-size:12.5px}

.wizard-steps{display:grid;grid-template-columns:repeat(6,1fr);background:#fff;border:1px solid var(--line);margin-bottom:14px}.wizard-steps a{padding:12px 8px;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:6px;border-right:1px solid var(--line);font-size:12.5px}.wizard-steps a:last-child{border-right:0}.wizard-steps a:hover{text-decoration:none;background:#f7f9fc}.wizard-steps span{width:22px;height:22px;border:1px solid #cbd5e1;border-radius:50%;display:grid;place-items:center}.wizard-steps a.active{background:var(--navy);color:#fff;font-weight:700}.wizard-steps a.active span{border-color:#fff}.wizard-steps a.done{color:var(--green-dark)}.wizard-steps a.done span{background:var(--green);color:#fff;border-color:var(--green)}
.wizard-card{background:#fff;border:1px solid var(--line);padding:22px;min-height:360px}.wizard-heading{margin-bottom:20px}.wizard-heading h2{margin:0 0 5px;color:var(--navy);font-size:18px;font-weight:600}.wizard-heading p{margin:0;color:var(--muted)}.front-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:20px}.front-option{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);padding:14px;border-radius:10px;cursor:pointer}.front-option:has(input:checked){border-color:var(--green);background:#f6fff1;box-shadow:0 0 0 1px var(--green)}.front-option input{margin-top:3px}.front-option strong{display:block;color:var(--navy);font-size:14px}.front-option small{display:block;color:var(--muted);margin-top:4px}.wizard-units{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0}.wizard-units a{border:1px solid var(--line);padding:11px;border-radius:8px;color:var(--navy)}.wizard-units a:hover{text-decoration:none;border-color:var(--green)}.wizard-units span{display:block;color:var(--muted);font-size:11.5px;margin-top:3px}.wizard-actions{display:flex;justify-content:flex-end;gap:8px;align-items:center;margin-top:22px}.choice-row{display:flex;gap:20px;margin-bottom:16px}.choice-row label{padding:12px 16px;border:1px solid var(--line);border-radius:10px}.review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.review-grid div{padding:15px;background:#f5f8fc;border-top:3px solid var(--navy)}.review-grid small{display:block;color:var(--muted);font-size:10.5px}.review-grid strong{display:block;color:var(--navy);font-size:19px;margin-top:5px}.review-structure{margin-top:18px;border:1px solid var(--line);border-radius:8px;overflow:hidden}.review-structure-heading{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:13px 14px;background:#f8fafc;border-bottom:1px solid var(--line)}.review-structure-heading h3{margin:0;color:var(--navy);font-size:14px}.review-structure-heading p,.review-structure-heading span{margin:4px 0 0;color:var(--muted);font-size:12px}.review-structure-heading span{white-space:nowrap}.review-unit-list a{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:11px 14px;color:var(--navy);border-bottom:1px solid var(--line)}.review-unit-list a:last-child{border-bottom:0}.review-unit-list a:hover{background:#f6fff1;text-decoration:none}.review-unit-list strong{display:block}.review-unit-list small{display:block;margin-top:3px;color:var(--muted);font-size:11.5px}.review-unit-list b{white-space:nowrap;font-size:13px}.review-list{margin:18px 0}.review-list p{padding:10px 12px;margin:6px 0;border-radius:6px}.review-list .ok{background:#effbea;color:#397b16}.review-list .warn{background:#fff5dc;color:#845f00}.review-notice{padding:11px 13px;margin:0;background:#fff5dc;color:#845f00;border-left:3px solid #d99b00;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed}

@media (max-width:720px){
  header.app-header{padding:0 10px;}
  header.app-header .brand{width:auto;background:transparent;padding:0;color:#268aa6;}
  .license-note,.header-user-copy{display:none;}
  #navToggle{display:block;order:-1;background:none;border:0;font-size:20px;}
  .app-sidebar{transform:translateX(-100%);transition:transform .2s ease;box-shadow:3px 0 10px rgba(0,0,0,.2);}
  .app-sidebar.open{transform:translateX(0);display:block;}
  body.app-shell main{margin-left:0;}
  body.app-shell .wrap{padding:12px;}
  body.app-shell main .page-head{margin:0 -12px 14px;}
  body.app-shell main .page-head:first-child,body.app-shell .wrap>.breadcrumb:first-child,body.app-shell .wrap>.flash:first-child{margin-top:-12px;}
  .modal-card{margin-top:8px;}
  .form-grid-2,.quick-search-row,.quick-destination-row,.quick-result{grid-template-columns:1fr;}
  .kpi-grid,.parameter-grid{grid-template-columns:1fr;}
  .wizard-steps{grid-template-columns:repeat(3,1fr)}.front-grid,.wizard-units,.review-grid{grid-template-columns:1fr}.wizard-card{padding:15px}
  .quick-result-price{text-align:left;}
  /* Banco de preços: em telas pequenas mantém só Código/Descrição/Aprovado/Ações visíveis --
     Grupo/Unid./Fonte/Base/Atual/Revisão ficam disponíveis na tela de Detalhes do item. */
  .table-banco th:nth-child(3), .table-banco td:nth-child(3),
  .table-banco th:nth-child(4), .table-banco td:nth-child(4),
  .table-banco th:nth-child(5), .table-banco td:nth-child(5),
  .table-banco th:nth-child(6), .table-banco td:nth-child(6),
  .table-banco th:nth-child(7), .table-banco td:nth-child(7),
  .table-banco th:nth-child(9), .table-banco td:nth-child(9) { display:none; }
  .table-banco th, .table-banco td { padding:8px 6px; }
  .table-banco th:nth-child(1), .table-banco td:nth-child(1) { max-width:44px; overflow-wrap:break-word; }
  .table-banco td:nth-child(2) { max-width:120px; overflow-wrap:break-word; }
  .table-banco td.actions .btn { padding:5px 8px; font-size:.72rem; }
}

/* Conforto de uso em telas de obra: foco sempre visível, área de toque maior e
   tabelas que rolam sem espremer colunas importantes. */
:focus-visible{outline:3px solid rgba(47,128,237,.5);outline-offset:2px;}
body.app-shell .table-scroll{max-width:100%;-webkit-overflow-scrolling:touch;}

@media (min-width:721px) and (max-width:1024px){
  body.app-shell{--sidebar:190px;}
  .app-sidebar a{padding-left:11px;padding-right:11px;font-size:12px;}
  .nav-section{padding-left:11px;padding-right:11px;}
  body.app-shell .wrap{padding-left:14px;padding-right:14px;}
  body.app-shell main .page-head{margin-left:-14px;margin-right:-14px;padding-left:13px;padding-right:13px;}
  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .quick-search-row{grid-template-columns:145px 165px minmax(180px,1fr);}
  .parameter-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}

@media (max-width:720px){
  body.app-shell .page-head{gap:8px;}
  body.app-shell .page-head h1{flex:1 0 100%;font-size:19px;line-height:1.2;}
  body.app-shell .page-head .btn{min-height:36px;}
  .budget-toolbar,.list-tools{align-items:stretch;width:100%;}
  .budget-toolbar .btn,.list-tools .btn{min-height:38px;justify-content:center;}
  .filter-form select{flex:1 1 140px;min-height:40px;}
  .list-search{width:100%;max-width:none;min-height:40px;}
  body.app-shell .table-scroll{margin-left:-12px;margin-right:-12px;padding:0 12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
  body.app-shell .table-scroll table.data-table:not(.table-banco){min-width:680px;}
  body.app-shell table.data-table td.actions{white-space:normal;}
  body.app-shell table.data-table td.actions>*{margin-bottom:6px;}
  body.app-shell table.data-table td.actions>*+*{margin-left:6px;}
  body.app-shell table.data-table td.actions .btn{min-height:32px;}
  .total-unidade-destaque{align-items:flex-start;padding:14px;gap:8px;}
  .total-unidade-valor{flex-basis:100%;font-size:1.35rem;}
  .total-unidade-destaque .btn{min-height:36px;}
  .planilha-resumo{position:static;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:0;}
  .planilha-resumo span{padding:9px 10px;}
  .planilha-resumo strong{font-size:13px;}
  .conferencia-planilha{align-items:flex-start;flex-direction:column;margin-top:0;}.conferencia-acoes{justify-content:flex-start;}
  .obras-resumo{grid-template-columns:repeat(3,minmax(0,1fr));width:100%;}.obras-resumo span{padding:9px 10px;}
  .composicoes-resumo{grid-template-columns:repeat(3,minmax(0,1fr));width:100%;}.composicoes-resumo span{padding:9px 10px;}
  .importacoes-resumo{grid-template-columns:repeat(3,minmax(0,1fr));width:100%;}.importacoes-resumo span{padding:9px 10px;}
  .notificacoes-resumo{grid-template-columns:repeat(3,minmax(0,1fr));width:100%;}.notificacoes-resumo span{padding:9px 10px;}
  .composicao-resumo{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:0;}.composicao-resumo span{padding:9px 10px;}.composicao-resumo strong{font-size:13px;}
  .page-head{align-items:flex-start;gap:10px;}.page-head .btn{min-height:40px;}.form-card{padding:16px;}.form-intro{font-size:13px;}.checkbox-filter{min-height:40px;}
  .planilha-filtros{align-items:stretch;}
  .planilha-filtros .search-box{flex-basis:100%;}
  .planilha-filtros select,.planilha-filtros .btn{flex:1 1 145px;min-height:40px;justify-content:center;}
  .wizard-actions{justify-content:flex-start;align-items:stretch;flex-direction:column;}
  .wizard-actions .btn,.wizard-actions form,.wizard-actions form .btn{width:100%;justify-content:center;min-height:42px;}
  .choice-row{flex-direction:column;gap:8px;}
  .choice-row label{min-height:44px;display:flex;align-items:center;}
  .review-structure-heading{flex-direction:column;}
  .review-structure-heading span{white-space:normal;}
  .review-unit-list a{align-items:flex-start;flex-direction:column;gap:5px;}
  .review-unit-list b{font-size:14px;}
  .empty-state{padding:28px 16px;}
  .flash{padding:12px;margin-bottom:14px;}
  .alert-box{padding:12px;gap:9px;border-radius:8px;}
}
